{"version":3,"sources":["webpack:///./app/javascript/mastodon/features/explore/components/story.jsx","webpack:///./app/javascript/mastodon/features/explore/links.jsx","webpack:///./app/javascript/mastodon/features/explore/results.jsx","webpack:///./app/javascript/mastodon/features/explore/statuses.jsx","webpack:///./app/javascript/mastodon/features/explore/components/card.jsx","webpack:///./app/javascript/mastodon/features/explore/suggestions.jsx","webpack:///./app/javascript/mastodon/features/explore/tags.jsx","webpack:///./app/javascript/mastodon/features/explore/index.jsx"],"names":["sharesCountRenderer","displayNumber","pluralReady","_jsx","FormattedMessage","id","defaultMessage","values","count","counter","Story","_ref","url","title","lang","publisher","publishedAt","author","authorAccount","sharedTimes","thumbnail","thumbnailDescription","blurhash","expanded","thumbnailLoaded","setThumbnailLoaded","useState","handleImageLoad","useCallback","className","classNames","Skeleton","width","_jsxs","_Fragment","children","RelativeTimestamp","timestamp","href","target","rel","name","AuthorLink","accountId","Link","to","encodeURIComponent","ShortNumber","value","renderer","Blurhash","hash","src","onLoad","alt","Links","PureComponent","componentDidMount","dispatch","links","history","this","props","action","size","fetchTrendingLinks","render","isLoading","banner","DismissableBanner","isEmpty","LoadingIndicator","map","link","i","get","getIn","connect","state","withRouter","messages","defineMessages","hidePeek","list","skipLast","Results","constructor","arguments","_defineProperty","type","submittedType","submitSearch","setState","_loadMore","getDerivedStateFromProps","expandSearch","intl","q","results","hasMore","ImmutableList","filteredResults","accounts","hashtags","statuses","SearchSection","Icon","icon","PeopleIcon","onClickMore","handleLoadMoreAccounts","take","Account","TagIcon","handleLoadMoreHashtags","hashtag","Hashtag","FindInPageIcon","handleLoadMoreStatuses","Status","renderAccounts","renderHashtags","renderStatuses","onClick","handleSelectAll","undefined","handleSelectAccounts","handleSelectHashtags","handleSelectStatuses","ScrollableList","scrollKey","onLoadMore","handleLoadMore","emptyMessage","bindToDocument","Helmet","formatMessage","injectIntl","Statuses","_debounce","expandTrendingStatuses","leading","statusIds","fetchTrendingStatuses","multiColumn","StatusList","trackScroll","prepend","alwaysPrepend","timelineId","withCounters","getStatusList","dismiss","Card","source","useIntl","account","useSelector","useDispatch","handleDismiss","dismissSuggestion","label","domain","Avatar","DisplayName","IconButton","iconComponent","CloseIcon","FollowButton","Suggestions","suggestions","fetchSuggestions","suggestion","Tags","fetchTrendingHashtags","isLoadingHashtags","searchResults","Explore","column","scrollTop","c","isSearching","signedIn","identity","Column","ref","setRef","ColumnHeader","SearchIcon","ExploreIcon","handleHeaderClick","Search","SearchResults","NavLink","exact","tagName","Switch","Route","path","component","content","withIdentity","layout","trendsEnabled"],"mappings":"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","file":"js/features/explore-b9abe4446db0caf09740.chunk.js","sourcesContent":["import PropTypes from 'prop-types';\nimport { useState, useCallback } from 'react';\n\nimport { FormattedMessage } from 'react-intl';\n\nimport classNames from 'classnames';\nimport { Link } from 'react-router-dom';\n\n\n\nimport { Blurhash } from 'mastodon/components/blurhash';\nimport { RelativeTimestamp } from 'mastodon/components/relative_timestamp';\nimport { ShortNumber } from 'mastodon/components/short_number';\nimport { Skeleton } from 'mastodon/components/skeleton';\n\nimport { AuthorLink } from './author_link';\n\nconst sharesCountRenderer = (displayNumber, pluralReady) => (\n {displayNumber},\n }}\n />\n);\n\nexport const Story = ({\n url,\n title,\n lang,\n publisher,\n publishedAt,\n author,\n authorAccount,\n sharedTimes,\n thumbnail,\n thumbnailDescription,\n blurhash,\n expanded\n}) => {\n const [thumbnailLoaded, setThumbnailLoaded] = useState(false);\n\n const handleImageLoad = useCallback(() => {\n setThumbnailLoaded(true);\n }, [setThumbnailLoaded]);\n\n return (\n
\n
\n
\n {publisher ? {publisher} : }{publishedAt && <> ยท }\n
\n\n \n {title ? title : }\n \n\n
\n {author ? : {author} }} /> : }\n {typeof sharedTimes === 'number' ? : }\n
\n
\n\n \n {thumbnail ? (\n <>\n
\n {thumbnailDescription}\n \n ) : }\n
\n
\n );\n};\n\nStory.propTypes = {\n url: PropTypes.string,\n title: PropTypes.string,\n lang: PropTypes.string,\n publisher: PropTypes.string,\n publishedAt: PropTypes.string,\n author: PropTypes.string,\n authorAccount: PropTypes.string,\n sharedTimes: PropTypes.number,\n thumbnail: PropTypes.string,\n thumbnailDescription: PropTypes.string,\n blurhash: PropTypes.string,\n expanded: PropTypes.bool,\n};\n","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { FormattedMessage } from 'react-intl';\n\nimport { withRouter } from 'react-router-dom';\n\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { connect } from 'react-redux';\n\nimport { fetchTrendingLinks } from 'mastodon/actions/trends';\nimport { DismissableBanner } from 'mastodon/components/dismissable_banner';\nimport { LoadingIndicator } from 'mastodon/components/loading_indicator';\nimport { WithRouterPropTypes } from 'mastodon/utils/react_router';\n\nimport { Story } from './components/story';\n\nconst mapStateToProps = state => ({\n links: state.getIn(['trends', 'links', 'items']),\n isLoading: state.getIn(['trends', 'links', 'isLoading']),\n});\n\nclass Links extends PureComponent {\n\n static propTypes = {\n links: ImmutablePropTypes.list,\n isLoading: PropTypes.bool,\n dispatch: PropTypes.func.isRequired,\n ...WithRouterPropTypes,\n };\n\n componentDidMount () {\n const { dispatch, links, history } = this.props;\n\n // If we're navigating back to the screen, do not trigger a reload\n if (history.action === 'POP' && links.size > 0) {\n return;\n }\n\n dispatch(fetchTrendingLinks());\n }\n\n render () {\n const { isLoading, links } = this.props;\n\n const banner = (\n \n \n \n );\n\n if (!isLoading && links.isEmpty()) {\n return (\n
\n {banner}\n\n
\n \n
\n
\n );\n }\n\n return (\n
\n {banner}\n\n {isLoading ? () : links.map((link, i) => (\n \n ))}\n
\n );\n }\n\n}\n\nexport default connect(mapStateToProps)(withRouter(Links));\n","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { injectIntl, defineMessages, FormattedMessage } from 'react-intl';\n\nimport { Helmet } from 'react-helmet';\n\nimport { List as ImmutableList } from 'immutable';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { connect } from 'react-redux';\n\nimport FindInPageIcon from '@/material-icons/400-24px/find_in_page.svg?react';\nimport PeopleIcon from '@/material-icons/400-24px/group.svg?react';\nimport TagIcon from '@/material-icons/400-24px/tag.svg?react';\nimport { submitSearch, expandSearch } from 'mastodon/actions/search';\nimport { ImmutableHashtag as Hashtag } from 'mastodon/components/hashtag';\nimport { Icon } from 'mastodon/components/icon';\nimport ScrollableList from 'mastodon/components/scrollable_list';\nimport Account from 'mastodon/containers/account_container';\nimport Status from 'mastodon/containers/status_container';\n\nimport { SearchSection } from './components/search_section';\n\nconst messages = defineMessages({\n title: { id: 'search_results.title', defaultMessage: 'Search for {q}' },\n});\n\nconst mapStateToProps = state => ({\n isLoading: state.getIn(['search', 'isLoading']),\n results: state.getIn(['search', 'results']),\n q: state.getIn(['search', 'searchTerm']),\n submittedType: state.getIn(['search', 'type']),\n});\n\nconst INITIAL_PAGE_LIMIT = 10;\nconst INITIAL_DISPLAY = 4;\n\nconst hidePeek = list => {\n if (list.size > INITIAL_PAGE_LIMIT && list.size % INITIAL_PAGE_LIMIT === 1) {\n return list.skipLast(1);\n } else {\n return list;\n }\n};\n\nconst renderAccounts = accounts => hidePeek(accounts).map(id => (\n \n));\n\nconst renderHashtags = hashtags => hidePeek(hashtags).map(hashtag => (\n \n));\n\nconst renderStatuses = statuses => hidePeek(statuses).map(id => (\n \n));\n\nclass Results extends PureComponent {\n\n static propTypes = {\n results: ImmutablePropTypes.contains({\n accounts: ImmutablePropTypes.orderedSet,\n statuses: ImmutablePropTypes.orderedSet,\n hashtags: ImmutablePropTypes.orderedSet,\n }),\n isLoading: PropTypes.bool,\n multiColumn: PropTypes.bool,\n dispatch: PropTypes.func.isRequired,\n q: PropTypes.string,\n intl: PropTypes.object,\n submittedType: PropTypes.oneOf(['accounts', 'statuses', 'hashtags']),\n };\n\n state = {\n type: this.props.submittedType || 'all',\n };\n\n static getDerivedStateFromProps(props, state) {\n if (props.submittedType !== state.type) {\n return {\n type: props.submittedType || 'all',\n };\n }\n\n return null;\n }\n\n handleSelectAll = () => {\n const { submittedType, dispatch } = this.props;\n\n // If we originally searched for a specific type, we need to resubmit\n // the query to get all types of results\n if (submittedType) {\n dispatch(submitSearch());\n }\n\n this.setState({ type: 'all' });\n };\n\n handleSelectAccounts = () => {\n const { submittedType, dispatch } = this.props;\n\n // If we originally searched for something else (but not everything),\n // we need to resubmit the query for this specific type\n if (submittedType !== 'accounts') {\n dispatch(submitSearch('accounts'));\n }\n\n this.setState({ type: 'accounts' });\n };\n\n handleSelectHashtags = () => {\n const { submittedType, dispatch } = this.props;\n\n // If we originally searched for something else (but not everything),\n // we need to resubmit the query for this specific type\n if (submittedType !== 'hashtags') {\n dispatch(submitSearch('hashtags'));\n }\n\n this.setState({ type: 'hashtags' });\n };\n\n handleSelectStatuses = () => {\n const { submittedType, dispatch } = this.props;\n\n // If we originally searched for something else (but not everything),\n // we need to resubmit the query for this specific type\n if (submittedType !== 'statuses') {\n dispatch(submitSearch('statuses'));\n }\n\n this.setState({ type: 'statuses' });\n };\n\n handleLoadMoreAccounts = () => this._loadMore('accounts');\n handleLoadMoreStatuses = () => this._loadMore('statuses');\n handleLoadMoreHashtags = () => this._loadMore('hashtags');\n\n _loadMore (type) {\n const { dispatch } = this.props;\n dispatch(expandSearch(type));\n }\n\n handleLoadMore = () => {\n const { type } = this.state;\n\n if (type !== 'all') {\n this._loadMore(type);\n }\n };\n\n render () {\n const { intl, isLoading, q, results } = this.props;\n const { type } = this.state;\n\n // We request 1 more result than we display so we can tell if there'd be a next page\n const hasMore = type !== 'all' ? results.get(type, ImmutableList()).size > INITIAL_PAGE_LIMIT && results.get(type).size % INITIAL_PAGE_LIMIT === 1 : false;\n\n let filteredResults;\n\n const accounts = results.get('accounts', ImmutableList());\n const hashtags = results.get('hashtags', ImmutableList());\n const statuses = results.get('statuses', ImmutableList());\n\n switch(type) {\n case 'all':\n filteredResults = (accounts.size + hashtags.size + statuses.size) > 0 ? (\n <>\n {accounts.size > 0 && (\n } onClickMore={this.handleLoadMoreAccounts}>\n {accounts.take(INITIAL_DISPLAY).map(id => )}\n \n )}\n\n {hashtags.size > 0 && (\n } onClickMore={this.handleLoadMoreHashtags}>\n {hashtags.take(INITIAL_DISPLAY).map(hashtag => )}\n \n )}\n\n {statuses.size > 0 && (\n } onClickMore={this.handleLoadMoreStatuses}>\n {statuses.take(INITIAL_DISPLAY).map(id => )}\n \n )}\n \n ) : [];\n break;\n case 'accounts':\n filteredResults = renderAccounts(accounts);\n break;\n case 'hashtags':\n filteredResults = renderHashtags(hashtags);\n break;\n case 'statuses':\n filteredResults = renderStatuses(statuses);\n break;\n }\n\n return (\n <>\n
\n \n \n \n \n
\n\n
\n }\n bindToDocument\n >\n {filteredResults}\n \n
\n\n \n {intl.formatMessage(messages.title, { q })}\n \n \n );\n }\n\n}\n\nexport default connect(mapStateToProps)(injectIntl(Results));\n","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { FormattedMessage } from 'react-intl';\n\nimport { withRouter } from 'react-router-dom';\n\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { connect } from 'react-redux';\n\nimport { debounce } from 'lodash';\n\n\nimport { fetchTrendingStatuses, expandTrendingStatuses } from 'mastodon/actions/trends';\nimport { DismissableBanner } from 'mastodon/components/dismissable_banner';\nimport StatusList from 'mastodon/components/status_list';\nimport { getStatusList } from 'mastodon/selectors';\nimport { WithRouterPropTypes } from 'mastodon/utils/react_router';\n\nconst mapStateToProps = state => ({\n statusIds: getStatusList(state, 'trending'),\n isLoading: state.getIn(['status_lists', 'trending', 'isLoading'], true),\n hasMore: !!state.getIn(['status_lists', 'trending', 'next']),\n});\n\nclass Statuses extends PureComponent {\n\n static propTypes = {\n statusIds: ImmutablePropTypes.list,\n isLoading: PropTypes.bool,\n hasMore: PropTypes.bool,\n multiColumn: PropTypes.bool,\n dispatch: PropTypes.func.isRequired,\n ...WithRouterPropTypes,\n };\n\n componentDidMount () {\n const { dispatch, statusIds, history } = this.props;\n\n // If we're navigating back to the screen, do not trigger a reload\n if (history.action === 'POP' && statusIds.size > 0) {\n return;\n }\n\n dispatch(fetchTrendingStatuses());\n }\n\n handleLoadMore = debounce(() => {\n const { dispatch } = this.props;\n dispatch(expandTrendingStatuses());\n }, 300, { leading: true });\n\n render () {\n const { isLoading, hasMore, statusIds, multiColumn } = this.props;\n\n const emptyMessage = ;\n\n return (\n }\n alwaysPrepend\n timelineId='explore'\n statusIds={statusIds}\n scrollKey='explore-statuses'\n hasMore={hasMore}\n isLoading={isLoading}\n onLoadMore={this.handleLoadMore}\n emptyMessage={emptyMessage}\n bindToDocument={!multiColumn}\n withCounters\n />\n );\n }\n\n}\n\nexport default connect(mapStateToProps)(withRouter(Statuses));\n","import PropTypes from 'prop-types';\nimport { useCallback } from 'react';\n\nimport { FormattedMessage, useIntl, defineMessages } from 'react-intl';\n\nimport { Link } from 'react-router-dom';\n\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport CloseIcon from '@/material-icons/400-24px/close.svg?react';\nimport { dismissSuggestion } from 'mastodon/actions/suggestions';\nimport { Avatar } from 'mastodon/components/avatar';\nimport { DisplayName } from 'mastodon/components/display_name';\nimport { FollowButton } from 'mastodon/components/follow_button';\nimport { IconButton } from 'mastodon/components/icon_button';\nimport { domain } from 'mastodon/initial_state';\n\nconst messages = defineMessages({\n dismiss: { id: 'follow_suggestions.dismiss', defaultMessage: \"Don't show again\" },\n});\n\nexport const Card = ({ id, source }) => {\n const intl = useIntl();\n const account = useSelector(state => state.getIn(['accounts', id]));\n const dispatch = useDispatch();\n\n const handleDismiss = useCallback(() => {\n dispatch(dismissSuggestion(id));\n }, [id, dispatch]);\n\n let label;\n\n switch (source) {\n case 'friends_of_friends':\n label = ;\n break;\n case 'similar_to_recently_followed':\n label = ;\n break;\n case 'featured':\n label = ;\n break;\n case 'most_followed':\n label = ;\n break;\n case 'most_interactions':\n label = ;\n break;\n }\n\n return (\n
\n
\n {label}\n
\n\n
\n \n\n
\n
\n \n \n \n
\n
\n
\n
\n );\n};\n\nCard.propTypes = {\n id: PropTypes.string.isRequired,\n source: PropTypes.oneOf(['friends_of_friends', 'similar_to_recently_followed', 'featured', 'most_followed', 'most_interactions']),\n};\n","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { FormattedMessage } from 'react-intl';\n\nimport { withRouter } from 'react-router-dom';\n\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { connect } from 'react-redux';\n\nimport { fetchSuggestions } from 'mastodon/actions/suggestions';\nimport { LoadingIndicator } from 'mastodon/components/loading_indicator';\nimport { WithRouterPropTypes } from 'mastodon/utils/react_router';\n\nimport { Card } from './components/card';\n\nconst mapStateToProps = state => ({\n suggestions: state.getIn(['suggestions', 'items']),\n isLoading: state.getIn(['suggestions', 'isLoading']),\n});\n\nclass Suggestions extends PureComponent {\n\n static propTypes = {\n isLoading: PropTypes.bool,\n suggestions: ImmutablePropTypes.list,\n dispatch: PropTypes.func.isRequired,\n ...WithRouterPropTypes,\n };\n\n componentDidMount () {\n const { dispatch, suggestions, history } = this.props;\n\n // If we're navigating back to the screen, do not trigger a reload\n if (history.action === 'POP' && suggestions.size > 0) {\n return;\n }\n\n dispatch(fetchSuggestions(true));\n }\n\n render () {\n const { isLoading, suggestions } = this.props;\n\n if (!isLoading && suggestions.isEmpty()) {\n return (\n
\n
\n \n
\n
\n );\n }\n\n return (\n
\n {isLoading ? : suggestions.map(suggestion => (\n \n ))}\n
\n );\n }\n\n}\n\nexport default connect(mapStateToProps)(withRouter(Suggestions));\n","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { FormattedMessage } from 'react-intl';\n\nimport { withRouter } from 'react-router-dom';\n\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { connect } from 'react-redux';\n\nimport { fetchTrendingHashtags } from 'mastodon/actions/trends';\nimport { DismissableBanner } from 'mastodon/components/dismissable_banner';\nimport { ImmutableHashtag as Hashtag } from 'mastodon/components/hashtag';\nimport { LoadingIndicator } from 'mastodon/components/loading_indicator';\nimport { WithRouterPropTypes } from 'mastodon/utils/react_router';\n\nconst mapStateToProps = state => ({\n hashtags: state.getIn(['trends', 'tags', 'items']),\n isLoadingHashtags: state.getIn(['trends', 'tags', 'isLoading']),\n});\n\nclass Tags extends PureComponent {\n\n static propTypes = {\n hashtags: ImmutablePropTypes.list,\n isLoading: PropTypes.bool,\n dispatch: PropTypes.func.isRequired,\n ...WithRouterPropTypes,\n };\n\n componentDidMount () {\n const { dispatch, history, hashtags } = this.props;\n\n // If we're navigating back to the screen, do not trigger a reload\n if (history.action === 'POP' && hashtags.size > 0) {\n return;\n }\n\n dispatch(fetchTrendingHashtags());\n }\n\n render () {\n const { isLoading, hashtags } = this.props;\n\n const banner = (\n \n \n \n );\n\n if (!isLoading && hashtags.isEmpty()) {\n return (\n
\n {banner}\n\n
\n \n
\n
\n );\n }\n\n return (\n
\n {banner}\n\n {isLoading ? () : hashtags.map(hashtag => (\n \n ))}\n
\n );\n }\n\n}\n\nexport default connect(mapStateToProps)(withRouter(Tags));\n","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\n\nimport { Helmet } from 'react-helmet';\nimport { NavLink, Switch, Route } from 'react-router-dom';\n\nimport { connect } from 'react-redux';\n\nimport ExploreIcon from '@/material-icons/400-24px/explore.svg?react';\nimport SearchIcon from '@/material-icons/400-24px/search.svg?react';\nimport Column from 'mastodon/components/column';\nimport ColumnHeader from 'mastodon/components/column_header';\nimport Search from 'mastodon/features/compose/containers/search_container';\nimport { identityContextPropShape, withIdentity } from 'mastodon/identity_context';\nimport { trendsEnabled } from 'mastodon/initial_state';\n\nimport Links from './links';\nimport SearchResults from './results';\nimport Statuses from './statuses';\nimport Suggestions from './suggestions';\nimport Tags from './tags';\n\nconst messages = defineMessages({\n title: { id: 'explore.title', defaultMessage: 'Explore' },\n searchResults: { id: 'explore.search_results', defaultMessage: 'Search results' },\n});\n\nconst mapStateToProps = state => ({\n layout: state.getIn(['meta', 'layout']),\n isSearching: state.getIn(['search', 'submitted']) || !trendsEnabled,\n});\n\nclass Explore extends PureComponent {\n static propTypes = {\n identity: identityContextPropShape,\n intl: PropTypes.object.isRequired,\n multiColumn: PropTypes.bool,\n isSearching: PropTypes.bool,\n };\n\n handleHeaderClick = () => {\n this.column.scrollTop();\n };\n\n setRef = c => {\n this.column = c;\n };\n\n render() {\n const { intl, multiColumn, isSearching } = this.props;\n const { signedIn } = this.props.identity;\n\n return (\n \n \n\n
\n \n
\n\n {isSearching ? (\n \n ) : (\n <>\n
\n \n \n \n\n \n \n \n\n {signedIn && (\n \n \n \n )}\n\n \n \n \n
\n\n \n \n \n \n \n \n \n \n\n \n {intl.formatMessage(messages.title)}\n \n \n \n )}\n
\n );\n }\n\n}\n\nexport default withIdentity(connect(mapStateToProps)(injectIntl(Explore)));\n"],"sourceRoot":""}