1 line
19 KiB
Plaintext
1 line
19 KiB
Plaintext
{"version":3,"sources":["webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/ui/components/link_footer.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/getting_started/index.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/getting_started/components/trends.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/getting_started/containers/trends_container.js"],"names":["LinkFooter","injectIntl","render","className","id","defaultMessage","values","mastofe","href","rel","target","glitchsoc","mastodon","pleroma","React","PureComponent","messages","defineMessages","heading","home_timeline","notifications","public_timeline","navigation_subheading","settings_subheading","community_timeline","direct","bookmarks","preferences","settings","follow_requests","lists","keyboard_shortcuts","lists_subheading","misc","menu","profile_directory","badgeDisplay","number","limit","GettingStarted","connect","getOrderedLists","createSelector","state","get","toList","filter","item","sort","a","b","localeCompare","myAccount","getIn","me","columns","unreadFollowRequests","ImmutableList","size","unreadNotifications","customPanelEnabled","customPanel","dispatch","fetchFollowRequests","fetchLists","openSettings","openModal","fetchPanel","fetchPleromaConfig","componentWillMount","this","props","componentDidMount","multiColumn","window","innerWidth","context","router","history","replace","intl","navItems","listItems","find","push","icon","text","formatMessage","to","badge","concat","map","list","Number","toString","instance_panel","dangerouslySetInnerHTML","__html","name","label","hideHeadingOnMobile","account","undefined","preferencesLink","onClick","showTrends","ImmutablePureComponent","PropTypes","object","isRequired","ImmutablePropTypes","bool","func","string","Trends","fetchTrends","refreshInterval","setInterval","componentWillUnmount","clearInterval","trends","isEmpty","take","hashtag","loading"],"mappings":"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","file":"flavours/glitch/async/getting_started.js","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { FormattedMessage, injectIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\n\nexport default @injectIntl\nclass LinkFooter extends React.PureComponent {\n\n static propTypes = {\n intl: PropTypes.object.isRequired,\n };\n\n render () {\n return (\n <div className='getting-started__footer'>\n <p>\n <FormattedMessage\n id='getting_started.mastofe_notice'\n defaultMessage='Mastofe is a libre distribution of the frontend from {glitchsoc}, a friendly fork of {mastodon}. You can contribute or report issues at {mastofe}.'\n values={{\n mastofe: <a href='https://git.pleroma.social/pleroma/mastofe' rel='noopener' target='_blank'>Mastofe</a>,\n glitchsoc: <a href='https://github.com/glitch-soc/mastodon' rel='noopener' target='_blank'>glitch-soc</a>,\n mastodon: <a href='https://github.com/tootsuite/mastodon' rel='noopener' target='_blank'>Mastodon</a>,\n pleroma: <a href='https://pleroma.social' rel='noopener' target='_blank'>Pleroma</a>\n }}\n />\n </p>\n </div>\n );\n }\n};\n","import React from 'react';\nimport Column from 'flavours/glitch/features/ui/components/column';\nimport ColumnLink from 'flavours/glitch/features/ui/components/column_link';\nimport ColumnSubheading from 'flavours/glitch/features/ui/components/column_subheading';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport { connect } from 'react-redux';\nimport { openModal } from 'flavours/glitch/actions/modal';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { me, profile_directory, showTrends } from 'flavours/glitch/util/initial_state';\nimport { fetchFollowRequests } from 'flavours/glitch/actions/accounts';\nimport { List as ImmutableList } from 'immutable';\nimport { createSelector } from 'reselect';\nimport { fetchLists } from 'flavours/glitch/actions/lists';\nimport { preferencesLink } from 'flavours/glitch/util/backend_links';\nimport NavigationBar from '../compose/components/navigation_bar';\nimport LinkFooter from 'flavours/glitch/features/ui/components/link_footer';\nimport { fetchPanel, fetchPleromaConfig } from 'mastodon/actions/pleroma';\nimport TrendsContainer from './containers/trends_container';\n\nconst messages = defineMessages({\n heading: { id: 'getting_started.heading', defaultMessage: 'Getting started' },\n home_timeline: { id: 'tabs_bar.home', defaultMessage: 'Home' },\n notifications: { id: 'tabs_bar.notifications', defaultMessage: 'Notifications' },\n public_timeline: { id: 'navigation_bar.public_timeline', defaultMessage: 'Federated timeline' },\n navigation_subheading: { id: 'column_subheading.navigation', defaultMessage: 'Navigation' },\n settings_subheading: { id: 'column_subheading.settings', defaultMessage: 'Settings' },\n community_timeline: { id: 'navigation_bar.community_timeline', defaultMessage: 'Local timeline' },\n direct: { id: 'navigation_bar.direct', defaultMessage: 'Direct messages' },\n bookmarks: { id: 'navigation_bar.bookmarks', defaultMessage: 'Bookmarks' },\n preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' },\n settings: { id: 'navigation_bar.app_settings', defaultMessage: 'App settings' },\n follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' },\n lists: { id: 'navigation_bar.lists', defaultMessage: 'Lists' },\n keyboard_shortcuts: { id: 'navigation_bar.keyboard_shortcuts', defaultMessage: 'Keyboard shortcuts' },\n lists: { id: 'navigation_bar.lists', defaultMessage: 'Lists' },\n lists_subheading: { id: 'column_subheading.lists', defaultMessage: 'Lists' },\n misc: { id: 'navigation_bar.misc', defaultMessage: 'Misc' },\n menu: { id: 'getting_started.heading', defaultMessage: 'Getting started' },\n profile_directory: { id: 'getting_started.directory', defaultMessage: 'Profile directory' },\n});\n\nconst makeMapStateToProps = () => {\n const getOrderedLists = createSelector([state => state.get('lists')], lists => {\n if (!lists) {\n return lists;\n }\n\n return lists.toList().filter(item => !!item).sort((a, b) => a.get('title').localeCompare(b.get('title')));\n });\n\n const mapStateToProps = state => ({\n lists: getOrderedLists(state),\n myAccount: state.getIn(['accounts', me]),\n columns: state.getIn(['settings', 'columns']),\n unreadFollowRequests: state.getIn(['user_lists', 'follow_requests', 'items'], ImmutableList()).size,\n unreadNotifications: state.getIn(['notifications', 'unread']),\n customPanelEnabled: state.getIn(['custom_panel', 'enabled']),\n customPanel: state.getIn(['custom_panel', 'panel']),\n });\n\n return mapStateToProps;\n};\n\nconst mapDispatchToProps = dispatch => ({\n fetchFollowRequests: () => dispatch(fetchFollowRequests()),\n fetchLists: () => dispatch(fetchLists()),\n openSettings: () => dispatch(openModal('SETTINGS', {})),\n fetchPanel: () => dispatch(fetchPanel()),\n fetchPleromaConfig: () => dispatch(fetchPleromaConfig()),\n});\n\nconst badgeDisplay = (number, limit) => {\n if (number === 0) {\n return undefined;\n } else if (limit && number >= limit) {\n return `${limit}+`;\n } else {\n return number;\n }\n};\n\nconst NAVIGATION_PANEL_BREAKPOINT = 600 + (285 * 2) + (10 * 2);\n\n export default @connect(makeMapStateToProps, mapDispatchToProps)\n @injectIntl\n class GettingStarted extends ImmutablePureComponent {\n\n static contextTypes = {\n router: PropTypes.object.isRequired,\n };\n\n static propTypes = {\n intl: PropTypes.object.isRequired,\n myAccount: ImmutablePropTypes.map.isRequired,\n columns: ImmutablePropTypes.list,\n multiColumn: PropTypes.bool,\n fetchFollowRequests: PropTypes.func.isRequired,\n unreadFollowRequests: PropTypes.number,\n unreadNotifications: PropTypes.number,\n lists: ImmutablePropTypes.list,\n fetchLists: PropTypes.func.isRequired,\n openSettings: PropTypes.func.isRequired,\n fetchPanel: PropTypes.func.isRequired,\n fetchPleromaConfig: PropTypes.func.isRequired,\n customPanelEnabled: PropTypes.bool,\n customPanel: PropTypes.string.isRequired,\n };\n\n componentWillMount () {\n this.props.fetchLists();\n }\n\n componentDidMount () {\n const { fetchFollowRequests, multiColumn, fetchPleromaConfig, fetchPanel } = this.props;\n\n if (!multiColumn && window.innerWidth >= NAVIGATION_PANEL_BREAKPOINT) {\n this.context.router.history.replace('/timelines/home');\n return;\n }\n\n fetchFollowRequests();\n\n fetchPleromaConfig();\n fetchPanel();\n }\n\n render () {\n const { intl, myAccount, columns, multiColumn, unreadFollowRequests, unreadNotifications, lists, openSettings, customPanelEnabled, customPanel } = this.props;\n\n const navItems = [];\n let listItems = [];\n\n if (multiColumn) {\n if (!columns.find(item => item.get('id') === 'HOME')) {\n navItems.push(<ColumnLink key='0' icon='home' text={intl.formatMessage(messages.home_timeline)} to='/timelines/home' />);\n }\n\n if (!columns.find(item => item.get('id') === 'NOTIFICATIONS')) {\n navItems.push(<ColumnLink key='1' icon='bell' text={intl.formatMessage(messages.notifications)} badge={badgeDisplay(unreadNotifications)} to='/notifications' />);\n }\n\n if (!columns.find(item => item.get('id') === 'COMMUNITY')) {\n navItems.push(<ColumnLink key='2' icon='users' text={intl.formatMessage(messages.community_timeline)} to='/timelines/public/local' />);\n }\n\n if (!columns.find(item => item.get('id') === 'PUBLIC')) {\n navItems.push(<ColumnLink key='3' icon='globe' text={intl.formatMessage(messages.public_timeline)} to='/timelines/public' />);\n }\n }\n\n if (!multiColumn || !columns.find(item => item.get('id') === 'DIRECT')) {\n navItems.push(<ColumnLink key='4' icon='envelope' text={intl.formatMessage(messages.direct)} to='/timelines/direct' />);\n }\n\n if (!multiColumn || !columns.find(item => item.get('id') === 'BOOKMARKS')) {\n navItems.push(<ColumnLink key='5' icon='bookmark' text={intl.formatMessage(messages.bookmarks)} to='/bookmarks' />);\n }\n\n if (myAccount.get('locked') || unreadFollowRequests > 0) {\n navItems.push(<ColumnLink key='6' icon='user-plus' text={intl.formatMessage(messages.follow_requests)} badge={badgeDisplay(unreadFollowRequests, 40)} to='/follow_requests' />);\n }\n\n if (profile_directory) {\n navItems.push(<ColumnLink key='7' icon='address-book' text={intl.formatMessage(messages.profile_directory)} to='/directory' />);\n }\n\n navItems.push(<ColumnLink key='8' icon='ellipsis-h' text={intl.formatMessage(messages.misc)} to='/getting-started-misc' />);\n\n listItems = listItems.concat([\n <div key='9'>\n <ColumnLink key='10' icon='bars' text={intl.formatMessage(messages.lists)} to='/lists' />\n {lists.map(list =>\n <ColumnLink key={(11 + Number(list.get('id'))).toString()} to={`/timelines/list/${list.get('id')}`} icon='list-ul' text={list.get('title')} />\n )}\n </div>,\n ]);\n\n const instance_panel = (customPanelEnabled ? <div className='getting-started getting-started__panel' dangerouslySetInnerHTML={{__html: customPanel}} /> : null);\n\n return (\n <Column name='getting-started' icon='asterisk' heading={intl.formatMessage(messages.heading)} label={intl.formatMessage(messages.menu)} hideHeadingOnMobile>\n <div className='scrollable optionally-scrollable'>\n <div className='getting-started__wrapper'>\n {!multiColumn && <NavigationBar account={myAccount} />}\n {multiColumn && <ColumnSubheading text={intl.formatMessage(messages.navigation_subheading)} />}\n {navItems}\n <ColumnSubheading text={intl.formatMessage(messages.lists_subheading)} />\n {listItems}\n <ColumnSubheading text={intl.formatMessage(messages.settings_subheading)} />\n { preferencesLink !== undefined && <ColumnLink icon='cog' text={intl.formatMessage(messages.preferences)} href={preferencesLink} /> }\n <ColumnLink icon='cogs' text={intl.formatMessage(messages.settings)} onClick={openSettings} />\n </div>\n\n {instance_panel}\n\n <LinkFooter />\n </div>\n\n {multiColumn && showTrends && <TrendsContainer />}\n </Column>\n );\n }\n\n}\n","import React from 'react';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport Hashtag from 'flavours/glitch/components/hashtag';\nimport { FormattedMessage } from 'react-intl';\n\nexport default class Trends extends ImmutablePureComponent {\n\n static defaultProps = {\n loading: false,\n };\n\n static propTypes = {\n trends: ImmutablePropTypes.list,\n fetchTrends: PropTypes.func.isRequired,\n };\n\n componentDidMount () {\n this.props.fetchTrends();\n this.refreshInterval = setInterval(() => this.props.fetchTrends(), 900 * 1000);\n }\n\n componentWillUnmount () {\n if (this.refreshInterval) {\n clearInterval(this.refreshInterval);\n }\n }\n\n render () {\n const { trends } = this.props;\n\n if (!trends || trends.isEmpty()) {\n return null;\n }\n\n return (\n <div className='getting-started__trends'>\n <h4><FormattedMessage id='trends.trending_now' defaultMessage='Trending now' /></h4>\n\n {trends.take(3).map(hashtag => <Hashtag key={hashtag.get('name')} hashtag={hashtag} />)}\n </div>\n );\n }\n\n}\n","import { connect } from 'react-redux';\nimport { fetchTrends } from '../../../actions/trends';\nimport Trends from '../components/trends';\n\nconst mapStateToProps = state => ({\n trends: state.getIn(['trends', 'items']),\n});\n\nconst mapDispatchToProps = dispatch => ({\n fetchTrends: () => dispatch(fetchTrends()),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Trends);\n"],"sourceRoot":""} |