{"version":3,"sources":["webpack:///app/javascript/opt/mastodon/app/javascript/flavours/glitch/features/hashtag_timeline/components/hashtag_header.jsx","webpack:///app/javascript/opt/mastodon/app/javascript/flavours/glitch/features/hashtag_timeline/components/column_settings.jsx","webpack:///app/javascript/opt/mastodon/app/javascript/flavours/glitch/features/hashtag_timeline/containers/column_settings_container.js","webpack:///app/javascript/opt/mastodon/app/javascript/flavours/glitch/features/hashtag_timeline/index.jsx"],"names":["messages","defineMessages","followHashtag","id","defaultMessage","unfollowHashtag","usesRenderer","displayNumber","pluralReady","_jsx","FormattedMessage","values","count","counter","peopleRenderer","usesTodayRenderer","HashtagHeader","injectIntl","_ref","tag","intl","disabled","onClick","uses","people","get","reduce","arr","day","dividingCircle","className","Button","text","formatMessage","ShortNumber","value","renderer","getIn","placeholder","noOptions","ColumnSettings","PureComponent","constructor","arguments","_defineProperty","open","this","hasTags","mode","oldValue","tags","length","props","onChange","state","setState","map","includes","settings","toJS","modeSelect","modeLabel","NonceProvider","nonce","document","querySelector","content","cacheKey","AsyncSelect","isMulti","autoFocus","onSelect","loadOptions","onLoad","classNamePrefix","name","noOptionsMessage","render","Toggle","onToggle","checked","SettingToggle","settingPath","label","connect","mapStateToProps","columnId","columns","index","findIndex","c","api","params","q","type","then","response","data","hashtags","mapDispatchToProps","dispatch","_ref2","key","changeColumnParams","HashtagTimeline","removeColumn","addColumn","title","additionalFor","push","additional","join","dir","moveColumn","column","scrollTop","maxId","local","expandHashtagTimeline","signedIn","context","identity","_subscribe","undefined","any","all","none","disconnects","connectHashtagStream","status","filter","_unsubscribe","disconnect","_unload","clearTimeline","_load","fetchHashtag","componentDidMount","componentDidUpdate","prevProps","_isEqual","componentWillUnmount","hasUnread","multiColumn","pinned","_jsxs","Column","bindToDocument","ref","setRef","children","ColumnHeader","icon","iconComponent","TagIcon","active","onPin","handlePin","onMove","handleMove","handleHeaderClick","showBackButton","ColumnSettingsContainer","StatusListContainer","prepend","handleFollow","alwaysPrepend","trackScroll","scrollKey","timelineId","onLoadMore","handleLoadMore","emptyMessage","Helmet","PropTypes","object"],"mappings":"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","file":"js/flavours/glitch/async/hashtag_timeline-20141eda709bed5202e4.chunk.js","sourcesContent":["import PropTypes from 'prop-types';\n\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\n\nimport ImmutablePropTypes from 'react-immutable-proptypes';\n\nimport { Button } from 'flavours/glitch/components/button';\nimport { ShortNumber } from 'flavours/glitch/components/short_number';\n\nconst messages = defineMessages({\n followHashtag: { id: 'hashtag.follow', defaultMessage: 'Follow hashtag' },\n unfollowHashtag: { id: 'hashtag.unfollow', defaultMessage: 'Unfollow hashtag' },\n});\n\nconst usesRenderer = (displayNumber, pluralReady) => (\n {displayNumber},\n }}\n />\n);\n\nconst peopleRenderer = (displayNumber, pluralReady) => (\n {displayNumber},\n }}\n />\n);\n\nconst usesTodayRenderer = (displayNumber, pluralReady) => (\n {displayNumber},\n }}\n />\n);\n\nexport const HashtagHeader = injectIntl(({ tag, intl, disabled, onClick }) => {\n if (!tag) {\n return null;\n }\n\n const [uses, people] = tag.get('history').reduce((arr, day) => [arr[0] + day.get('uses') * 1, arr[1] + day.get('accounts') * 1], [0, 0]);\n const dividingCircle = {' · '};\n\n return (\n
\n
\n

#{tag.get('name')}

\n
\n\n
\n \n {dividingCircle}\n \n {dividingCircle}\n \n
\n
\n );\n});\n\nHashtagHeader.propTypes = {\n tag: ImmutablePropTypes.map,\n disabled: PropTypes.bool,\n onClick: PropTypes.func,\n intl: PropTypes.object,\n};","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\n\nimport ImmutablePropTypes from 'react-immutable-proptypes';\n\nimport { NonceProvider } from 'react-select';\nimport AsyncSelect from 'react-select/async';\nimport Toggle from 'react-toggle';\n\nimport SettingToggle from '../../notifications/components/setting_toggle';\n\nconst messages = defineMessages({\n placeholder: { id: 'hashtag.column_settings.select.placeholder', defaultMessage: 'Enter hashtags…' },\n noOptions: { id: 'hashtag.column_settings.select.no_options_message', defaultMessage: 'No suggestions found' },\n});\n\nclass ColumnSettings extends PureComponent {\n\n static propTypes = {\n settings: ImmutablePropTypes.map.isRequired,\n onChange: PropTypes.func.isRequired,\n onLoad: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n state = {\n open: this.hasTags(),\n };\n\n hasTags () {\n return ['all', 'any', 'none'].map(mode => this.tags(mode).length > 0).includes(true);\n }\n\n tags (mode) {\n let tags = this.props.settings.getIn(['tags', mode]) || [];\n\n if (tags.toJS) {\n return tags.toJS();\n } else {\n return tags;\n }\n }\n\n onSelect = mode => value => {\n const oldValue = this.tags(mode);\n\n // Prevent changes that add more than 4 tags, but allow removing\n // tags that were already added before\n if ((value.length > 4) && !(value < oldValue)) {\n return;\n }\n\n this.props.onChange(['tags', mode], value);\n };\n\n onToggle = () => {\n if (this.state.open && this.hasTags()) {\n this.props.onChange('tags', {});\n }\n\n this.setState({ open: !this.state.open });\n };\n\n noOptionsMessage = () => this.props.intl.formatMessage(messages.noOptions);\n\n modeSelect (mode) {\n return (\n
\n \n {this.modeLabel(mode)}\n \n\n \n \n \n
\n );\n }\n\n modeLabel (mode) {\n switch(mode) {\n case 'any':\n return ;\n case 'all':\n return ;\n case 'none':\n return ;\n default:\n return '';\n }\n }\n\n render () {\n const { settings, onChange } = this.props;\n\n return (\n
\n
\n
\n \n\n \n \n \n
\n
\n\n {this.state.open && (\n
\n {this.modeSelect('any')}\n {this.modeSelect('all')}\n {this.modeSelect('none')}\n
\n )}\n\n
\n } />\n
\n
\n );\n }\n\n}\n\nexport default injectIntl(ColumnSettings);\n","import { connect } from 'react-redux';\n\nimport { changeColumnParams } from '../../../actions/columns';\nimport api from '../../../api';\nimport ColumnSettings from '../components/column_settings';\n\nconst mapStateToProps = (state, { columnId }) => {\n const columns = state.getIn(['settings', 'columns']);\n const index = columns.findIndex(c => c.get('uuid') === columnId);\n\n if (!(columnId && index >= 0)) {\n return {};\n }\n\n return {\n settings: columns.get(index).get('params'),\n onLoad (value) {\n return api(() => state).get('/api/v2/search', { params: { q: value, type: 'hashtags' } }).then(response => {\n return (response.data.hashtags || []).map((tag) => {\n return { value: tag.name, label: `#${tag.name}` };\n });\n });\n },\n };\n};\n\nconst mapDispatchToProps = (dispatch, { columnId }) => ({\n onChange (key, value) {\n dispatch(changeColumnParams(columnId, key, value));\n },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ColumnSettings);\n","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { FormattedMessage } from 'react-intl';\n\nimport { Helmet } from 'react-helmet';\n\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { connect } from 'react-redux';\n\nimport { isEqual } from 'lodash';\n\nimport TagIcon from '@/material-icons/400-24px/tag.svg?react';\nimport { addColumn, removeColumn, moveColumn } from 'flavours/glitch/actions/columns';\nimport { connectHashtagStream } from 'flavours/glitch/actions/streaming';\nimport { fetchHashtag, followHashtag, unfollowHashtag } from 'flavours/glitch/actions/tags';\nimport { expandHashtagTimeline, clearTimeline } from 'flavours/glitch/actions/timelines';\nimport Column from 'flavours/glitch/components/column';\nimport ColumnHeader from 'flavours/glitch/components/column_header';\n\nimport StatusListContainer from '../ui/containers/status_list_container';\n\nimport { HashtagHeader } from './components/hashtag_header';\nimport ColumnSettingsContainer from './containers/column_settings_container';\n\nconst mapStateToProps = (state, props) => ({\n hasUnread: state.getIn(['timelines', `hashtag:${props.params.id}${props.params.local ? ':local' : ''}`, 'unread']) > 0,\n tag: state.getIn(['tags', props.params.id]),\n});\n\nclass HashtagTimeline extends PureComponent {\n\n disconnects = [];\n\n static contextTypes = {\n identity: PropTypes.object,\n };\n\n static propTypes = {\n params: PropTypes.object.isRequired,\n columnId: PropTypes.string,\n dispatch: PropTypes.func.isRequired,\n hasUnread: PropTypes.bool,\n tag: ImmutablePropTypes.map,\n multiColumn: PropTypes.bool,\n };\n\n handlePin = () => {\n const { columnId, dispatch } = this.props;\n\n if (columnId) {\n dispatch(removeColumn(columnId));\n } else {\n dispatch(addColumn('HASHTAG', { id: this.props.params.id }));\n }\n };\n\n title = () => {\n const { id } = this.props.params;\n const title = [id];\n\n if (this.additionalFor('any')) {\n title.push(' ', );\n }\n\n if (this.additionalFor('all')) {\n title.push(' ', );\n }\n\n if (this.additionalFor('none')) {\n title.push(' ', );\n }\n\n return title;\n };\n\n additionalFor = (mode) => {\n const { tags } = this.props.params;\n\n if (tags && (tags[mode] || []).length > 0) {\n return tags[mode].map(tag => tag.value).join('/');\n } else {\n return '';\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 _subscribe (dispatch, id, tags = {}, local) {\n const { signedIn } = this.context.identity;\n\n if (!signedIn) {\n return;\n }\n\n let any = (tags.any || []).map(tag => tag.value);\n let all = (tags.all || []).map(tag => tag.value);\n let none = (tags.none || []).map(tag => tag.value);\n\n [id, ...any].map(tag => {\n this.disconnects.push(dispatch(connectHashtagStream(id, tag, local, status => {\n let tags = status.tags.map(tag => tag.name);\n\n return all.filter(tag => tags.includes(tag)).length === all.length &&\n none.filter(tag => tags.includes(tag)).length === 0;\n })));\n });\n }\n\n _unsubscribe () {\n this.disconnects.map(disconnect => disconnect());\n this.disconnects = [];\n }\n\n _unload () {\n const { dispatch } = this.props;\n const { id, local } = this.props.params;\n\n this._unsubscribe();\n dispatch(clearTimeline(`hashtag:${id}${local ? ':local' : ''}`));\n }\n\n _load() {\n const { dispatch } = this.props;\n const { id, tags, local } = this.props.params;\n\n this._subscribe(dispatch, id, tags, local);\n dispatch(expandHashtagTimeline(id, { tags, local }));\n dispatch(fetchHashtag(id));\n }\n\n componentDidMount () {\n this._load();\n }\n\n componentDidUpdate (prevProps) {\n const { params } = this.props;\n const { id, tags, local } = prevProps.params;\n\n if (id !== params.id || !isEqual(tags, params.tags) || !isEqual(local, params.local)) {\n this._unload();\n this._load();\n }\n }\n\n componentWillUnmount () {\n this._unsubscribe();\n }\n\n setRef = c => {\n this.column = c;\n };\n\n handleLoadMore = maxId => {\n const { dispatch, params } = this.props;\n const { id, tags, local } = params;\n\n dispatch(expandHashtagTimeline(id, { maxId, tags, local }));\n };\n\n handleFollow = () => {\n const { dispatch, params, tag } = this.props;\n const { id } = params;\n const { signedIn } = this.context.identity;\n\n if (!signedIn) {\n return;\n }\n\n if (tag.get('following')) {\n dispatch(unfollowHashtag(id));\n } else {\n dispatch(followHashtag(id));\n }\n };\n\n render () {\n const { hasUnread, columnId, multiColumn, tag } = this.props;\n const { id, local } = this.props.params;\n const pinned = !!columnId;\n const { signedIn } = this.context.identity;\n\n return (\n \n \n {columnId && }\n \n\n }\n alwaysPrepend\n trackScroll={!pinned}\n scrollKey={`hashtag_timeline-${columnId}`}\n timelineId={`hashtag:${id}${local ? ':local' : ''}`}\n onLoadMore={this.handleLoadMore}\n emptyMessage={}\n bindToDocument={!multiColumn}\n />\n\n \n #{id}\n \n \n \n );\n }\n\n}\n\nexport default connect(mapStateToProps)(HashtagTimeline);\n"],"sourceRoot":""}