{"version":3,"sources":["webpack:///app/javascript/home/mastodon/live/app/javascript/flavours/glitch/components/icon_with_badge.tsx","webpack:///app/javascript/home/mastodon/live/app/javascript/flavours/glitch/features/getting_started/components/announcements.jsx","webpack:///app/javascript/home/mastodon/live/app/javascript/flavours/glitch/features/getting_started/containers/announcements_container.js","webpack:///app/javascript/home/mastodon/live/app/javascript/flavours/glitch/features/home_timeline/components/column_settings.tsx","webpack:///app/javascript/home/mastodon/live/app/javascript/flavours/glitch/features/home_timeline/components/critical_update_banner.tsx","webpack:///app/javascript/home/mastodon/live/app/javascript/flavours/glitch/features/home_timeline/index.jsx"],"names":["IconWithBadge","_ref","id","icon","count","issueBadge","className","_jsx","Icon","num","messages","defineMessages","close","defaultMessage","previous","next","ContentWithRouter","ImmutablePureComponent","constructor","arguments","_defineProperty","c","this","node","mention","e","props","history","button","ctrlKey","metaKey","preventDefault","push","concat","get","hashtag","replace","status","getIn","currentTarget","autoPlayGif","emojis","querySelectorAll","i","length","emoji","src","getAttribute","_ref2","componentDidMount","_updateLinks","componentDidUpdate","links","link","classList","contains","add","announcement","find","item","href","addEventListener","onMentionClick","bind","setAttribute","textContent","previousSibling","onHashtagClick","text","onStatusClick","render","ref","setRef","dangerouslySetInnerHTML","__html","onMouseEnter","handleMouseEnter","onMouseLeave","handleMouseLeave","ImmutablePropTypes","map","isRequired","WithRouterPropTypes","Content","withRouter","Emoji","PureComponent","emojiMap","hovered","unicodeMapping","filename","shortCode","title","_jsx2","draggable","alt","assetHost","Reaction","reaction","announcementId","addReaction","removeReaction","setState","classNames","active","onClick","handleClick","style","state","AnimatedNumber","value","PropTypes","string","func","object","ReactionsBar","data","native","willEnter","scale","reduceMotion","willLeave","spring","stiffness","damping","reactions","visibleReactions","filter","x","styles","key","toArray","TransitionMotion","items","isEmpty","_ref3","transform","position","size","EmojiPickerDropdown","onPickEmoji","handleEmojiPick","AddIcon","list","Announcement","unread","selected","startsAt","Date","endsAt","now","hasTimeRange","skipYear","getFullYear","skipEndDate","getDate","getMonth","skipTime","FormattedMessage","FormattedDate","year","undefined","month","day","hour","minute","intl","bool","Announcements","index","announcements","getDerivedStateFromProps","_markAnnouncementAsRead","dismissAnnouncement","mascot","elephantUIPlane","ReactSwipeableViews","animateHeight","animateTransitions","onChangeIndex","handleChangeIndex","idx","disabled","disableSwiping","reverse","IconButton","formatMessage","iconComponent","ChevronLeftIcon","handlePrevClick","ChevronRightIcon","handleNextClick","injectIntl","customEmojiMap","createSelector","reduce","set","ImmutableMap","connect","dispatch","name","filter_regex","settings","ColumnSettings","useAppSelector","useIntl","useAppDispatch","onChange","useCallback","checked","changeSetting","SettingToggle","prefix","settingPath","label","SettingText","CriticalUpdateBanner","show_announcements","hide_announcements","HomeTimeline","columnId","removeColumn","addColumn","dir","moveColumn","column","scrollTop","maxId","expandHomeTimeline","stopPropagation","toggleShowAnnouncements","setTimeout","fetchAnnouncements","_checkIfReloadNeeded","isPartial","prevProps","componentWillUnmount","_stopPolling","wasPartial","polling","setInterval","clearInterval","hasUnread","multiColumn","hasAnnouncements","unreadAnnouncements","showAnnouncements","pinned","signedIn","context","identity","banners","announcementsButton","handleToggleAnnouncementsClick","CampaignIcon","criticalUpdatesPending","_jsxs","Column","bindToDocument","children","ColumnHeader","HomeIcon","onPin","handlePin","onMove","handleMove","handleHeaderClick","extraButton","appendContent","AnnouncementsContainer","StatusListContainer","prepend","alwaysPrepend","trackScroll","scrollKey","onLoadMore","handleLoadMore","timelineId","emptyMessage","regex","NotSignedInIndicator","Helmet","content"],"mappings":"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","file":"js/flavours/glitch/async/home_timeline-0e6c9b5a73f31ee9b0e2.chunk.js","sourcesContent":["import type { IconProp } from './icon';\nimport { Icon } from './icon';\n\nconst formatNumber = (num: number): number | string => (num > 40 ? '40+' : num);\n\ninterface Props {\n id: string;\n icon: IconProp;\n count: number;\n issueBadge: boolean;\n className: string;\n}\nexport const IconWithBadge: React.FC = ({\n id,\n icon,\n count,\n issueBadge,\n className,\n}) => (\n \n \n {count > 0 && (\n {formatNumber(count)}\n )}\n {issueBadge && }\n \n);\n","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { defineMessages, injectIntl, FormattedMessage, FormattedDate } from 'react-intl';\n\nimport classNames from 'classnames';\nimport { withRouter } from 'react-router-dom';\n\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\n\nimport TransitionMotion from 'react-motion/lib/TransitionMotion';\nimport spring from 'react-motion/lib/spring';\nimport ReactSwipeableViews from 'react-swipeable-views';\n\nimport elephantUIPlane from '@/images/elephant_ui_plane.svg';\nimport AddIcon from '@/material-icons/400-24px/add.svg?react';\nimport ChevronLeftIcon from '@/material-icons/400-24px/chevron_left.svg?react';\nimport ChevronRightIcon from '@/material-icons/400-24px/chevron_right.svg?react';\nimport { AnimatedNumber } from 'flavours/glitch/components/animated_number';\nimport { Icon } from 'flavours/glitch/components/icon';\nimport { IconButton } from 'flavours/glitch/components/icon_button';\nimport EmojiPickerDropdown from 'flavours/glitch/features/compose/containers/emoji_picker_dropdown_container';\nimport { unicodeMapping } from 'flavours/glitch/features/emoji/emoji_unicode_mapping_light';\nimport { autoPlayGif, reduceMotion, disableSwiping, mascot } from 'flavours/glitch/initial_state';\nimport { assetHost } from 'flavours/glitch/utils/config';\nimport { WithRouterPropTypes } from 'flavours/glitch/utils/react_router';\n\nconst messages = defineMessages({\n close: { id: 'lightbox.close', defaultMessage: 'Close' },\n previous: { id: 'lightbox.previous', defaultMessage: 'Previous' },\n next: { id: 'lightbox.next', defaultMessage: 'Next' },\n});\n\nclass ContentWithRouter extends ImmutablePureComponent {\n static propTypes = {\n announcement: ImmutablePropTypes.map.isRequired,\n ...WithRouterPropTypes,\n };\n\n setRef = c => {\n this.node = c;\n };\n\n componentDidMount () {\n this._updateLinks();\n }\n\n componentDidUpdate () {\n this._updateLinks();\n }\n\n _updateLinks () {\n const node = this.node;\n\n if (!node) {\n return;\n }\n\n const links = node.querySelectorAll('a');\n\n for (var i = 0; i < links.length; ++i) {\n let link = links[i];\n\n if (link.classList.contains('status-link')) {\n continue;\n }\n\n link.classList.add('status-link');\n\n let mention = this.props.announcement.get('mentions').find(item => link.href === item.get('url'));\n\n if (mention) {\n link.addEventListener('click', this.onMentionClick.bind(this, mention), false);\n link.setAttribute('title', mention.get('acct'));\n } else if (link.textContent[0] === '#' || (link.previousSibling && link.previousSibling.textContent && link.previousSibling.textContent[link.previousSibling.textContent.length - 1] === '#')) {\n link.addEventListener('click', this.onHashtagClick.bind(this, link.text), false);\n } else {\n let status = this.props.announcement.get('statuses').find(item => link.href === item.get('url'));\n if (status) {\n link.addEventListener('click', this.onStatusClick.bind(this, status), false);\n }\n link.setAttribute('title', link.href);\n link.classList.add('unhandled-link');\n }\n\n link.setAttribute('target', '_blank');\n link.setAttribute('rel', 'noopener noreferrer');\n }\n }\n\n onMentionClick = (mention, e) => {\n if (this.props.history && e.button === 0 && !(e.ctrlKey || e.metaKey)) {\n e.preventDefault();\n this.props.history.push(`/@${mention.get('acct')}`);\n }\n };\n\n onHashtagClick = (hashtag, e) => {\n hashtag = hashtag.replace(/^#/, '');\n\n if (this.props.history&& e.button === 0 && !(e.ctrlKey || e.metaKey)) {\n e.preventDefault();\n this.props.history.push(`/tags/${hashtag}`);\n }\n };\n\n onStatusClick = (status, e) => {\n if (this.props.history && e.button === 0 && !(e.ctrlKey || e.metaKey)) {\n e.preventDefault();\n this.props.history.push(`/@${status.getIn(['account', 'acct'])}/${status.get('id')}`);\n }\n };\n\n handleMouseEnter = ({ currentTarget }) => {\n if (autoPlayGif) {\n return;\n }\n\n const emojis = currentTarget.querySelectorAll('.custom-emoji');\n\n for (var i = 0; i < emojis.length; i++) {\n let emoji = emojis[i];\n emoji.src = emoji.getAttribute('data-original');\n }\n };\n\n handleMouseLeave = ({ currentTarget }) => {\n if (autoPlayGif) {\n return;\n }\n\n const emojis = currentTarget.querySelectorAll('.custom-emoji');\n\n for (var i = 0; i < emojis.length; i++) {\n let emoji = emojis[i];\n emoji.src = emoji.getAttribute('data-static');\n }\n };\n\n render () {\n const { announcement } = this.props;\n\n return (\n \n );\n }\n\n}\n\nconst Content = withRouter(ContentWithRouter);\n\nclass Emoji extends PureComponent {\n\n static propTypes = {\n emoji: PropTypes.string.isRequired,\n emojiMap: ImmutablePropTypes.map.isRequired,\n hovered: PropTypes.bool.isRequired,\n };\n\n render () {\n const { emoji, emojiMap, hovered } = this.props;\n\n if (unicodeMapping[emoji]) {\n const { filename, shortCode } = unicodeMapping[this.props.emoji];\n const title = shortCode ? `:${shortCode}:` : '';\n\n return (\n \n );\n } else if (emojiMap.get(emoji)) {\n const filename = (autoPlayGif || hovered) ? emojiMap.getIn([emoji, 'url']) : emojiMap.getIn([emoji, 'static_url']);\n const shortCode = `:${emoji}:`;\n\n return (\n \n );\n } else {\n return null;\n }\n }\n\n}\n\nclass Reaction extends ImmutablePureComponent {\n\n static propTypes = {\n announcementId: PropTypes.string.isRequired,\n reaction: ImmutablePropTypes.map.isRequired,\n addReaction: PropTypes.func.isRequired,\n removeReaction: PropTypes.func.isRequired,\n emojiMap: ImmutablePropTypes.map.isRequired,\n style: PropTypes.object,\n };\n\n state = {\n hovered: false,\n };\n\n handleClick = () => {\n const { reaction, announcementId, addReaction, removeReaction } = this.props;\n\n if (reaction.get('me')) {\n removeReaction(announcementId, reaction.get('name'));\n } else {\n addReaction(announcementId, reaction.get('name'));\n }\n };\n\n handleMouseEnter = () => this.setState({ hovered: true });\n\n handleMouseLeave = () => this.setState({ hovered: false });\n\n render () {\n const { reaction } = this.props;\n\n let shortCode = reaction.get('name');\n\n if (unicodeMapping[shortCode]) {\n shortCode = unicodeMapping[shortCode].shortCode;\n }\n\n return (\n \n );\n }\n\n}\n\nclass ReactionsBar extends ImmutablePureComponent {\n\n static propTypes = {\n announcementId: PropTypes.string.isRequired,\n reactions: ImmutablePropTypes.list.isRequired,\n addReaction: PropTypes.func.isRequired,\n removeReaction: PropTypes.func.isRequired,\n emojiMap: ImmutablePropTypes.map.isRequired,\n };\n\n handleEmojiPick = data => {\n const { addReaction, announcementId } = this.props;\n addReaction(announcementId, data.native.replace(/:/g, ''));\n };\n\n willEnter () {\n return { scale: reduceMotion ? 1 : 0 };\n }\n\n willLeave () {\n return { scale: reduceMotion ? 0 : spring(0, { stiffness: 170, damping: 26 }) };\n }\n\n render () {\n const { reactions } = this.props;\n const visibleReactions = reactions.filter(x => x.get('count') > 0);\n\n const styles = visibleReactions.map(reaction => ({\n key: reaction.get('name'),\n data: reaction,\n style: { scale: reduceMotion ? 1 : spring(1, { stiffness: 150, damping: 13 }) },\n })).toArray();\n\n return (\n \n {items => (\n
\n {items.map(({ key, data, style }) => (\n \n ))}\n\n {visibleReactions.size < 8 && } />}\n
\n )}\n
\n );\n }\n\n}\n\nclass Announcement extends ImmutablePureComponent {\n\n static propTypes = {\n announcement: ImmutablePropTypes.map.isRequired,\n emojiMap: ImmutablePropTypes.map.isRequired,\n addReaction: PropTypes.func.isRequired,\n removeReaction: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n selected: PropTypes.bool,\n };\n\n state = {\n unread: !this.props.announcement.get('read'),\n };\n\n componentDidUpdate () {\n const { selected, announcement } = this.props;\n if (!selected && this.state.unread !== !announcement.get('read')) {\n this.setState({ unread: !announcement.get('read') });\n }\n }\n\n render () {\n const { announcement } = this.props;\n const { unread } = this.state;\n const startsAt = announcement.get('starts_at') && new Date(announcement.get('starts_at'));\n const endsAt = announcement.get('ends_at') && new Date(announcement.get('ends_at'));\n const now = new Date();\n const hasTimeRange = startsAt && endsAt;\n const skipYear = hasTimeRange && startsAt.getFullYear() === endsAt.getFullYear() && endsAt.getFullYear() === now.getFullYear();\n const skipEndDate = hasTimeRange && startsAt.getDate() === endsAt.getDate() && startsAt.getMonth() === endsAt.getMonth() && startsAt.getFullYear() === endsAt.getFullYear();\n const skipTime = announcement.get('all_day');\n\n return (\n
\n \n \n {hasTimeRange && ยท - }\n \n\n \n\n \n\n {unread && }\n
\n );\n }\n\n}\n\nclass Announcements extends ImmutablePureComponent {\n\n static propTypes = {\n announcements: ImmutablePropTypes.list,\n emojiMap: ImmutablePropTypes.map.isRequired,\n dismissAnnouncement: PropTypes.func.isRequired,\n addReaction: PropTypes.func.isRequired,\n removeReaction: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n state = {\n index: 0,\n };\n\n static getDerivedStateFromProps(props, state) {\n if (props.announcements.size > 0 && state.index >= props.announcements.size) {\n return { index: props.announcements.size - 1 };\n } else {\n return null;\n }\n }\n\n componentDidMount () {\n this._markAnnouncementAsRead();\n }\n\n componentDidUpdate () {\n this._markAnnouncementAsRead();\n }\n\n _markAnnouncementAsRead () {\n const { dismissAnnouncement, announcements } = this.props;\n const { index } = this.state;\n const announcement = announcements.get(announcements.size - 1 - index);\n if (!announcement.get('read')) dismissAnnouncement(announcement.get('id'));\n }\n\n handleChangeIndex = index => {\n this.setState({ index: index % this.props.announcements.size });\n };\n\n handleNextClick = () => {\n this.setState({ index: (this.state.index + 1) % this.props.announcements.size });\n };\n\n handlePrevClick = () => {\n this.setState({ index: (this.props.announcements.size + this.state.index - 1) % this.props.announcements.size });\n };\n\n render () {\n const { announcements, intl } = this.props;\n const { index } = this.state;\n\n if (announcements.isEmpty()) {\n return null;\n }\n\n return (\n
\n \n\n
\n \n {announcements.map((announcement, idx) => (\n \n )).reverse()}\n \n\n {announcements.size > 1 && (\n
\n \n {index + 1} / {announcements.size}\n \n
\n )}\n
\n
\n );\n }\n\n}\n\nexport default injectIntl(Announcements);\n","import { createSelector } from '@reduxjs/toolkit';\nimport { Map as ImmutableMap } from 'immutable';\nimport { connect } from 'react-redux';\n\n\nimport { addReaction, removeReaction, dismissAnnouncement } from 'flavours/glitch/actions/announcements';\n\nimport Announcements from '../components/announcements';\n\nconst customEmojiMap = createSelector([state => state.get('custom_emojis')], items => items.reduce((map, emoji) => map.set(emoji.get('shortcode'), emoji), ImmutableMap()));\n\nconst mapStateToProps = state => ({\n announcements: state.getIn(['announcements', 'items']),\n emojiMap: customEmojiMap(state),\n});\n\nconst mapDispatchToProps = dispatch => ({\n dismissAnnouncement: id => dispatch(dismissAnnouncement(id)),\n addReaction: (id, name) => dispatch(addReaction(id, name)),\n removeReaction: (id, name) => dispatch(removeReaction(id, name)),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Announcements);\n","/* eslint-disable @typescript-eslint/no-unsafe-call,\n @typescript-eslint/no-unsafe-return,\n @typescript-eslint/no-unsafe-assignment,\n @typescript-eslint/no-unsafe-member-access\n -- the settings store is not yet typed */\nimport { useCallback } from 'react';\n\nimport { FormattedMessage, defineMessages, useIntl } from 'react-intl';\n\nimport SettingText from 'flavours/glitch/components/setting_text';\nimport { useAppSelector, useAppDispatch } from 'flavours/glitch/store';\n\nimport { changeSetting } from '../../../actions/settings';\nimport SettingToggle from '../../notifications/components/setting_toggle';\n\nconst messages = defineMessages({\n filter_regex: {\n id: 'home.column_settings.filter_regex',\n defaultMessage: 'Filter out by regular expressions',\n },\n settings: { id: 'home.settings', defaultMessage: 'Column settings' },\n});\n\nexport const ColumnSettings: React.FC = () => {\n const settings = useAppSelector((state) => state.settings.get('home'));\n\n const intl = useIntl();\n\n const dispatch = useAppDispatch();\n const onChange = useCallback(\n (key: string, checked: boolean) => {\n dispatch(changeSetting(['home', ...key], checked));\n },\n [dispatch],\n );\n\n return (\n
\n
\n
\n \n }\n />\n\n \n }\n />\n\n \n }\n />\n
\n
\n\n
\n

\n \n

\n\n
\n \n
\n
\n
\n );\n};\n","import { FormattedMessage } from 'react-intl';\n\nexport const CriticalUpdateBanner = () => (\n
\n
\n

\n \n

\n

\n {' '}\n \n \n \n

\n
\n
\n);\n","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\n\nimport classNames from 'classnames';\nimport { Helmet } from 'react-helmet';\n\nimport { connect } from 'react-redux';\n\nimport CampaignIcon from '@/material-icons/400-24px/campaign.svg?react';\nimport HomeIcon from '@/material-icons/400-24px/home-fill.svg?react';\nimport { fetchAnnouncements, toggleShowAnnouncements } from 'flavours/glitch/actions/announcements';\nimport { IconWithBadge } from 'flavours/glitch/components/icon_with_badge';\nimport { NotSignedInIndicator } from 'flavours/glitch/components/not_signed_in_indicator';\nimport AnnouncementsContainer from 'flavours/glitch/features/getting_started/containers/announcements_container';\nimport { criticalUpdatesPending } from 'flavours/glitch/initial_state';\n\nimport { addColumn, removeColumn, moveColumn } from '../../actions/columns';\nimport { expandHomeTimeline } from '../../actions/timelines';\nimport Column from '../../components/column';\nimport ColumnHeader from '../../components/column_header';\nimport StatusListContainer from '../ui/containers/status_list_container';\n\nimport { ColumnSettings } from './components/column_settings';\nimport { CriticalUpdateBanner } from './components/critical_update_banner';\n\nconst messages = defineMessages({\n title: { id: 'column.home', defaultMessage: 'Home' },\n show_announcements: { id: 'home.show_announcements', defaultMessage: 'Show announcements' },\n hide_announcements: { id: 'home.hide_announcements', defaultMessage: 'Hide announcements' },\n});\n\nconst mapStateToProps = state => ({\n hasUnread: state.getIn(['timelines', 'home', 'unread']) > 0,\n isPartial: state.getIn(['timelines', 'home', 'isPartial']),\n hasAnnouncements: !state.getIn(['announcements', 'items']).isEmpty(),\n unreadAnnouncements: state.getIn(['announcements', 'items']).count(item => !item.get('read')),\n showAnnouncements: state.getIn(['announcements', 'show']),\n regex: state.getIn(['settings', 'home', 'regex', 'body']),\n});\n\nclass HomeTimeline extends PureComponent {\n\n static contextTypes = {\n identity: PropTypes.object,\n };\n\n static propTypes = {\n dispatch: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n hasUnread: PropTypes.bool,\n isPartial: PropTypes.bool,\n columnId: PropTypes.string,\n multiColumn: PropTypes.bool,\n hasAnnouncements: PropTypes.bool,\n unreadAnnouncements: PropTypes.number,\n showAnnouncements: PropTypes.bool,\n regex: PropTypes.string,\n };\n\n handlePin = () => {\n const { columnId, dispatch } = this.props;\n\n if (columnId) {\n dispatch(removeColumn(columnId));\n } else {\n dispatch(addColumn('HOME', {}));\n }\n };\n\n handleMove = (dir) => {\n const { columnId, dispatch } = this.props;\n dispatch(moveColumn(columnId, dir));\n };\n\n handleHeaderClick = () => {\n this.column.scrollTop();\n };\n\n setRef = c => {\n this.column = c;\n };\n\n handleLoadMore = maxId => {\n this.props.dispatch(expandHomeTimeline({ maxId }));\n };\n\n componentDidMount () {\n setTimeout(() => this.props.dispatch(fetchAnnouncements()), 700);\n this._checkIfReloadNeeded(false, this.props.isPartial);\n }\n\n componentDidUpdate (prevProps) {\n this._checkIfReloadNeeded(prevProps.isPartial, this.props.isPartial);\n }\n\n componentWillUnmount () {\n this._stopPolling();\n }\n\n _checkIfReloadNeeded (wasPartial, isPartial) {\n const { dispatch } = this.props;\n\n if (wasPartial === isPartial) {\n return;\n } else if (!wasPartial && isPartial) {\n this.polling = setInterval(() => {\n dispatch(expandHomeTimeline());\n }, 3000);\n } else if (wasPartial && !isPartial) {\n this._stopPolling();\n }\n }\n\n _stopPolling () {\n if (this.polling) {\n clearInterval(this.polling);\n this.polling = null;\n }\n }\n\n handleToggleAnnouncementsClick = (e) => {\n e.stopPropagation();\n this.props.dispatch(toggleShowAnnouncements());\n };\n\n render () {\n const { intl, hasUnread, columnId, multiColumn, hasAnnouncements, unreadAnnouncements, showAnnouncements } = this.props;\n const pinned = !!columnId;\n const { signedIn } = this.context.identity;\n const banners = [];\n\n let announcementsButton;\n\n if (hasAnnouncements) {\n announcementsButton = (\n \n \n \n );\n }\n\n if (criticalUpdatesPending) {\n banners.push();\n }\n\n return (\n \n }\n >\n \n \n\n {signedIn ? (\n }\n bindToDocument={!multiColumn}\n regex={this.props.regex}\n />\n ) : }\n\n \n {intl.formatMessage(messages.title)}\n \n \n \n );\n }\n\n}\n\nexport default connect(mapStateToProps)(injectIntl(HomeTimeline));\n"],"sourceRoot":""}