{"version":3,"sources":["webpack:///./app/javascript/mastodon/features/explore/components/story.js","webpack:///./app/javascript/mastodon/features/explore/links.js","webpack:///./app/javascript/mastodon/features/explore/tags.js","webpack:///./app/javascript/mastodon/features/explore/statuses.js","webpack:///./app/javascript/mastodon/features/explore/suggestions.js","webpack:///./app/javascript/mastodon/features/explore/results.js","webpack:///./app/javascript/mastodon/features/explore/index.js"],"names":["Story","React","PureComponent","state","thumbnailLoaded","handleImageLoad","this","setState","render","url","title","publisher","sharedTimes","thumbnail","blurhash","props","className","href","target","rel","width","value","renderer","accountsCountRenderer","Fragment","classNames","hash","src","onLoad","alt","role","Links","connect","links","getIn","isLoading","componentDidMount","dispatch","fetchTrendingLinks","banner","id","defaultMessage","isEmpty","map","link","get","Tags","hashtags","isLoadingHashtags","fetchTrendingHashtags","hashtag","Statuses","statusIds","hasMore","handleLoadMore","expandTrendingStatuses","leading","fetchTrendingStatuses","multiColumn","emptyMessage","trackScroll","scrollKey","onLoadMore","bindToDocument","withCounters","Suggestions","suggestions","fetchSuggestions","suggestion","messages","defineMessages","appendLoadMore","list","size","push","visible","onClick","renderAccounts","results","ImmutableList","item","renderHashtags","renderStatuses","Results","q","injectIntl","type","handleSelectAll","handleSelectAccounts","handleSelectHashtags","handleSelectStatuses","handleLoadMoreAccounts","loadMore","handleLoadMoreStatuses","handleLoadMoreHashtags","expandSearch","intl","filteredResults","concat","Helmet","formatMessage","searchResults","Explore","layout","isSearching","showTrends","handleHeaderClick","column","scrollTop","setRef","c","signedIn","context","identity","ref","label","icon","NavLink","exact","to","tagName","Switch","Route","path","component","componentParams","name","content","contextTypes","router","PropTypes","object"],"mappings":"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","file":"js/features/explore-a6e3b3c26c527a3f3008.chunk.js","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Blurhash from 'mastodon/components/blurhash';\nimport { accountsCountRenderer } from 'mastodon/components/hashtag';\nimport ShortNumber from 'mastodon/components/short_number';\nimport Skeleton from 'mastodon/components/skeleton';\nimport classNames from 'classnames';\n\nexport default class Story extends React.PureComponent {\n\n static propTypes = {\n url: PropTypes.string,\n title: PropTypes.string,\n publisher: PropTypes.string,\n sharedTimes: PropTypes.number,\n thumbnail: PropTypes.string,\n blurhash: PropTypes.string,\n };\n\n state = {\n thumbnailLoaded: false,\n };\n\n handleImageLoad = () => this.setState({ thumbnailLoaded: true });\n\n render () {\n const { url, title, publisher, sharedTimes, thumbnail, blurhash } = this.props;\n\n const { thumbnailLoaded } = this.state;\n\n return (\n \n
\n
{publisher ? publisher : }
\n
{title ? title : }
\n
{typeof sharedTimes === 'number' ? : }
\n
\n\n
\n {thumbnail ? (\n \n
\n \n
\n ) : }\n
\n
\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport Story from './components/story';\nimport LoadingIndicator from 'mastodon/components/loading_indicator';\nimport { connect } from 'react-redux';\nimport { fetchTrendingLinks } from 'mastodon/actions/trends';\nimport { FormattedMessage } from 'react-intl';\nimport DismissableBanner from 'mastodon/components/dismissable_banner';\n\nconst mapStateToProps = state => ({\n links: state.getIn(['trends', 'links', 'items']),\n isLoading: state.getIn(['trends', 'links', 'isLoading']),\n});\n\nexport default @connect(mapStateToProps)\nclass Links extends React.PureComponent {\n\n static propTypes = {\n links: ImmutablePropTypes.list,\n isLoading: PropTypes.bool,\n dispatch: PropTypes.func.isRequired,\n };\n\n componentDidMount () {\n const { dispatch } = this.props;\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 => (\n \n ))}\n
\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { ImmutableHashtag as Hashtag } from 'mastodon/components/hashtag';\nimport LoadingIndicator from 'mastodon/components/loading_indicator';\nimport { connect } from 'react-redux';\nimport { fetchTrendingHashtags } from 'mastodon/actions/trends';\nimport { FormattedMessage } from 'react-intl';\nimport DismissableBanner from 'mastodon/components/dismissable_banner';\n\nconst mapStateToProps = state => ({\n hashtags: state.getIn(['trends', 'tags', 'items']),\n isLoadingHashtags: state.getIn(['trends', 'tags', 'isLoading']),\n});\n\nexport default @connect(mapStateToProps)\nclass Tags extends React.PureComponent {\n\n static propTypes = {\n hashtags: ImmutablePropTypes.list,\n isLoading: PropTypes.bool,\n dispatch: PropTypes.func.isRequired,\n };\n\n componentDidMount () {\n const { dispatch } = this.props;\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","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport StatusList from 'mastodon/components/status_list';\nimport { FormattedMessage } from 'react-intl';\nimport { connect } from 'react-redux';\nimport { fetchTrendingStatuses, expandTrendingStatuses } from 'mastodon/actions/trends';\nimport { debounce } from 'lodash';\nimport DismissableBanner from 'mastodon/components/dismissable_banner';\n\nconst mapStateToProps = state => ({\n statusIds: state.getIn(['status_lists', 'trending', 'items']),\n isLoading: state.getIn(['status_lists', 'trending', 'isLoading'], true),\n hasMore: !!state.getIn(['status_lists', 'trending', 'next']),\n});\n\nexport default @connect(mapStateToProps)\nclass Statuses extends React.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 };\n\n componentDidMount () {\n const { dispatch } = this.props;\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 \n \n \n\n \n \n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport AccountCard from 'mastodon/features/directory/components/account_card';\nimport LoadingIndicator from 'mastodon/components/loading_indicator';\nimport { connect } from 'react-redux';\nimport { fetchSuggestions } from 'mastodon/actions/suggestions';\nimport { FormattedMessage } from 'react-intl';\n\nconst mapStateToProps = state => ({\n suggestions: state.getIn(['suggestions', 'items']),\n isLoading: state.getIn(['suggestions', 'isLoading']),\n});\n\nexport default @connect(mapStateToProps)\nclass Suggestions extends React.PureComponent {\n\n static propTypes = {\n isLoading: PropTypes.bool,\n suggestions: ImmutablePropTypes.list,\n dispatch: PropTypes.func.isRequired,\n };\n\n componentDidMount () {\n const { dispatch } = this.props;\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","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { injectIntl, defineMessages, FormattedMessage } from 'react-intl';\nimport { connect } from 'react-redux';\nimport { expandSearch } from 'mastodon/actions/search';\nimport Account from 'mastodon/containers/account_container';\nimport Status from 'mastodon/containers/status_container';\nimport { ImmutableHashtag as Hashtag } from 'mastodon/components/hashtag';\nimport { List as ImmutableList } from 'immutable';\nimport LoadMore from 'mastodon/components/load_more';\nimport LoadingIndicator from 'mastodon/components/loading_indicator';\nimport { Helmet } from 'react-helmet';\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});\n\nconst appendLoadMore = (id, list, onLoadMore) => {\n if (list.size >= 5) {\n return list.push();\n } else {\n return list;\n }\n};\n\nconst renderAccounts = (results, onLoadMore) => appendLoadMore('accounts', results.get('accounts', ImmutableList()).map(item => (\n \n)), onLoadMore);\n\nconst renderHashtags = (results, onLoadMore) => appendLoadMore('hashtags', results.get('hashtags', ImmutableList()).map(item => (\n \n)), onLoadMore);\n\nconst renderStatuses = (results, onLoadMore) => appendLoadMore('statuses', results.get('statuses', ImmutableList()).map(item => (\n \n)), onLoadMore);\n\nexport default @connect(mapStateToProps)\n@injectIntl\nclass Results extends React.PureComponent {\n\n static propTypes = {\n results: ImmutablePropTypes.map,\n isLoading: PropTypes.bool,\n multiColumn: PropTypes.bool,\n dispatch: PropTypes.func.isRequired,\n q: PropTypes.string,\n intl: PropTypes.object,\n };\n\n state = {\n type: 'all',\n };\n\n handleSelectAll = () => this.setState({ type: 'all' });\n handleSelectAccounts = () => this.setState({ type: 'accounts' });\n handleSelectHashtags = () => this.setState({ type: 'hashtags' });\n handleSelectStatuses = () => this.setState({ type: 'statuses' });\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 render () {\n const { intl, isLoading, q, results } = this.props;\n const { type } = this.state;\n\n let filteredResults = ImmutableList();\n\n if (!isLoading) {\n switch(type) {\n case 'all':\n filteredResults = filteredResults.concat(renderAccounts(results, this.handleLoadMoreAccounts), renderHashtags(results, this.handleLoadMoreHashtags), renderStatuses(results, this.handleLoadMoreStatuses));\n break;\n case 'accounts':\n filteredResults = filteredResults.concat(renderAccounts(results, this.handleLoadMoreAccounts));\n break;\n case 'hashtags':\n filteredResults = filteredResults.concat(renderHashtags(results, this.handleLoadMoreHashtags));\n break;\n case 'statuses':\n filteredResults = filteredResults.concat(renderStatuses(results, this.handleLoadMoreStatuses));\n break;\n }\n\n if (filteredResults.size === 0) {\n filteredResults = (\n
\n \n
\n );\n }\n }\n\n return (\n \n
\n \n \n \n \n
\n\n
\n {isLoading ? : filteredResults}\n
\n\n \n {intl.formatMessage(messages.title, { q })}\n \n
\n );\n }\n\n}\n","import React from 'react';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport Column from 'mastodon/components/column';\nimport ColumnHeader from 'mastodon/components/column_header';\nimport { NavLink, Switch, Route } from 'react-router-dom';\nimport Links from './links';\nimport Tags from './tags';\nimport Statuses from './statuses';\nimport Suggestions from './suggestions';\nimport Search from 'mastodon/features/compose/containers/search_container';\nimport SearchResults from './results';\nimport { Helmet } from 'react-helmet';\nimport { showTrends } from 'mastodon/initial_state';\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']) || !showTrends,\n});\n\nexport default @connect(mapStateToProps)\n@injectIntl\nclass Explore extends React.PureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n identity: PropTypes.object,\n };\n\n static propTypes = {\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.context.identity;\n\n return (\n \n \n\n
\n \n
\n\n
\n {isSearching ? (\n \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 {intl.formatMessage(messages.title)}\n \n \n \n )}\n
\n
\n );\n }\n\n}\n"],"sourceRoot":""}