{"version":3,"sources":["webpack:///app/javascript/home/mastodon/reactions-test/app/javascript/flavours/glitch/components/icon_with_badge.tsx","webpack:///app/javascript/home/mastodon/reactions-test/app/javascript/flavours/glitch/features/getting_started/components/announcements.jsx","webpack:///app/javascript/home/mastodon/reactions-test/app/javascript/flavours/glitch/features/getting_started/containers/announcements_container.js","webpack:///app/javascript/home/mastodon/reactions-test/app/javascript/flavours/glitch/features/home_timeline/components/column_settings.tsx","webpack:///app/javascript/home/mastodon/reactions-test/app/javascript/flavours/glitch/features/home_timeline/components/explore_prompt.tsx","webpack:///app/javascript/home/mastodon/reactions-test/app/javascript/flavours/glitch/features/home_timeline/index.jsx","webpack:///./app/javascript/images/elephant_ui_plane.svg","webpack:///./app/javascript/images/friends-cropped.png"],"names":["IconWithBadge","_ref","id","count","issueBadge","className","_jsx","Icon","fixedWidth","num","messages","defineMessages","close","defaultMessage","previous","next","Content","ImmutablePureComponent","constructor","arguments","setRef","c","this","node","onMentionClick","mention","e","context","router","button","ctrlKey","metaKey","preventDefault","history","push","get","onHashtagClick","hashtag","replace","onStatusClick","status","getIn","handleMouseEnter","currentTarget","autoPlayGif","emojis","querySelectorAll","i","length","emoji","src","getAttribute","handleMouseLeave","_ref2","componentDidMount","_updateLinks","componentDidUpdate","links","link","classList","contains","add","props","announcement","find","item","href","addEventListener","bind","setAttribute","textContent","previousSibling","text","render","ref","dangerouslySetInnerHTML","__html","onMouseEnter","onMouseLeave","contextTypes","PropTypes","object","propTypes","ImmutablePropTypes","map","isRequired","Emoji","PureComponent","emojiMap","hovered","unicodeMapping","filename","shortCode","title","_jsx2","draggable","alt","assetHost","Reaction","state","handleClick","reaction","announcementId","addReaction","removeReaction","setState","classNames","active","onClick","style","AnimatedNumber","value","string","func","ReactionsBar","handleEmojiPick","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","list","Announcement","unread","selected","startsAt","Date","endsAt","now","hasTimeRange","skipYear","getFullYear","skipEndDate","getDate","getMonth","skipTime","FormattedMessage","FormattedDate","hour12","year","undefined","month","day","hour","minute","intl","bool","Announcements","index","handleChangeIndex","announcements","handleNextClick","handlePrevClick","static","_markAnnouncementAsRead","dismissAnnouncement","mascot","elephantUIPlane","ReactSwipeableViews","animateHeight","animateTransitions","onChangeIndex","idx","disabled","disableSwiping","IconButton","formatMessage","icon","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","ExplorePrompt","DismissableBanner","background","Link","to","show_announcements","hide_announcements","getHomeFeedSpeed","ImmutableList","statusIds","pendingStatusIds","statusMap","statuses","me","take","oldest","newest","gap","homeTooSlow","isLoading","isPartial","speed","HomeTimeline","handlePin","columnId","removeColumn","addColumn","handleMove","dir","moveColumn","handleHeaderClick","column","scrollTop","handleLoadMore","maxId","expandHomeTimeline","handleToggleAnnouncementsClick","stopPropagation","toggleShowAnnouncements","setTimeout","fetchAnnouncements","_checkIfReloadNeeded","prevProps","componentWillUnmount","_stopPolling","wasPartial","polling","setInterval","clearInterval","hasUnread","multiColumn","tooSlow","hasAnnouncements","unreadAnnouncements","showAnnouncements","pinned","signedIn","identity","announcementsButton","banner","_jsxs","Column","bindToDocument","children","ColumnHeader","onPin","onMove","extraButton","appendContent","AnnouncementsContainer","StatusListContainer","prepend","alwaysPrepend","trackScroll","scrollKey","onLoadMore","timelineId","emptyMessage","regex","NotSignedInIndicator","Helmet","content"],"mappings":"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","file":"js/flavours/glitch/async/home_timeline-930679131cc73ecfd152.chunk.js","sourcesContent":["import * as React from 'react';\n\nimport { Icon } from './icon';\n\nconst formatNumber = (num: number): number | string => (num > 40 ? '40+' : num);\n\ninterface Props {\n id: string;\n count: number;\n issueBadge: boolean;\n className: string;\n}\nexport const IconWithBadge: React.FC = ({\n id,\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';\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 { 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 elephantUIPlane from 'mastodon/../images/elephant_ui_plane.svg';\n\n\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 Content extends ImmutablePureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n announcement: ImmutablePropTypes.map.isRequired,\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.context.router && e.button === 0 && !(e.ctrlKey || e.metaKey)) {\n e.preventDefault();\n this.context.router.history.push(`/@${mention.get('acct')}`);\n }\n };\n\n onHashtagClick = (hashtag, e) => {\n hashtag = hashtag.replace(/^#/, '');\n\n if (this.context.router && e.button === 0 && !(e.ctrlKey || e.metaKey)) {\n e.preventDefault();\n this.context.router.history.push(`/tags/${hashtag}`);\n }\n };\n\n onStatusClick = (status, e) => {\n if (this.context.router && e.button === 0 && !(e.ctrlKey || e.metaKey)) {\n e.preventDefault();\n this.context.router.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\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(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 ))}\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 { Map as ImmutableMap } from 'immutable';\nimport { connect } from 'react-redux';\nimport { createSelector } from 'reselect';\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
\n
\n );\n};\n","import { FormattedMessage } from 'react-intl';\n\nimport { Link } from 'react-router-dom';\n\nimport { DismissableBanner } from 'flavours/glitch/components/dismissable_banner';\nimport background from 'mastodon/../images/friends-cropped.png';\n\nexport const ExplorePrompt = () => (\n \n \n\n

\n \n

\n

\n \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 { List as ImmutableList } from 'immutable';\nimport { connect } from 'react-redux';\nimport { createSelector } from 'reselect';\n\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 { me } 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 { ExplorePrompt } from './components/explore_prompt';\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 getHomeFeedSpeed = createSelector([\n state => state.getIn(['timelines', 'home', 'items'], ImmutableList()),\n state => state.getIn(['timelines', 'home', 'pendingItems'], ImmutableList()),\n state => state.get('statuses'),\n], (statusIds, pendingStatusIds, statusMap) => {\n const recentStatusIds = pendingStatusIds.size > 0 ? pendingStatusIds : statusIds;\n const statuses = recentStatusIds.filter(id => id !== null).map(id => statusMap.get(id)).filter(status => status?.get('account') !== me).take(20);\n const oldest = new Date(statuses.getIn([statuses.size - 1, 'created_at'], 0));\n const newest = new Date(statuses.getIn([0, 'created_at'], 0));\n const averageGap = (newest - oldest) / (1000 * (statuses.size + 1)); // Average gap between posts on first page in seconds\n\n return {\n gap: averageGap,\n newest,\n };\n});\n\nconst homeTooSlow = createSelector([\n state => state.getIn(['timelines', 'home', 'isLoading']),\n state => state.getIn(['timelines', 'home', 'isPartial']),\n getHomeFeedSpeed,\n], (isLoading, isPartial, speed) =>\n !isLoading && !isPartial // Only if the home feed has finished loading\n && (speed.gap > (30 * 60) // If the average gap between posts is more than 20 minutes\n || (Date.now() - speed.newest) > (1000 * 3600)) // If the most recent post is from over an hour ago\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 tooSlow: homeTooSlow(state),\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 tooSlow: 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, tooSlow, hasAnnouncements, unreadAnnouncements, showAnnouncements } = this.props;\n const pinned = !!columnId;\n const { signedIn } = this.context.identity;\n\n let announcementsButton, banner;\n\n if (hasAnnouncements) {\n announcementsButton = (\n \n \n \n );\n }\n\n if (tooSlow) {\n banner = ;\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","export default __webpack_public_path__ + \"media/images/elephant_ui_plane-72f8702db120a51a1cdbc4fb7f5ef59d.svg\";","export default __webpack_public_path__ + \"media/images/friends-cropped-40409bf96999902fa49757ebce824ce6.png\";"],"sourceRoot":""}