mirror of
https://akkoma.dev/AkkomaGang/akkoma.git
synced 2024-12-27 03:04:12 +00:00
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/mastodon/features/ui/components/link_footer.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/getting_started/index.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/getting_started/components/trends.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/getting_started/containers/trends_container.js"],"names":["messages","defineMessages","logoutMessage","logoutConfirm","LinkFooter","connect","dispatch","intl","onLogout","openModal","message","formatMessage","confirm","onConfirm","logOut","injectIntl","e","preventDefault","stopPropagation","props","render","withHotkeys","this","className","invitesEnabled","href","target","id","defaultMessage","to","onClick","handleLogoutClick","values","github","source_url","rel","repository","version","React","PureComponent","home_timeline","notifications","public_timeline","settings_subheading","community_timeline","direct","bookmarks","preferences","follow_requests","favourites","blocks","domain_blocks","mutes","pins","lists","discover","personal","security","menu","profile_directory","GettingStarted","state","myAccount","getIn","me","unreadFollowRequests","ImmutableList","size","fetchFollowRequests","componentDidMount","multiColumn","window","innerWidth","context","router","history","replace","number","limit","navItems","i","height","push","text","icon","get","badge","bindToDocument","label","fixedWidth","style","account","showTrends","ImmutablePureComponent","PropTypes","object","isRequired","ImmutablePropTypes","map","columns","list","bool","func","unreadNotifications","Trends","fetchTrends","refreshInterval","setInterval","componentWillUnmount","clearInterval","trends","isEmpty","take","hashtag","loading"],"mappings":"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","file":"features/getting_started.js","sourcesContent":["import { connect } from 'react-redux';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport { invitesEnabled, version, repository, source_url } from 'mastodon/initial_state';\nimport { logOut } from 'mastodon/utils/log_out';\nimport { openModal } from 'mastodon/actions/modal';\n\nconst messages = defineMessages({\n logoutMessage: { id: 'confirmations.logout.message', defaultMessage: 'Are you sure you want to log out?' },\n logoutConfirm: { id: 'confirmations.logout.confirm', defaultMessage: 'Log out' },\n});\n\nconst mapDispatchToProps = (dispatch, { intl }) => ({\n onLogout () {\n dispatch(openModal('CONFIRM', {\n message: intl.formatMessage(messages.logoutMessage),\n confirm: intl.formatMessage(messages.logoutConfirm),\n onConfirm: () => logOut(),\n }));\n },\n});\n\nexport default @injectIntl\n@connect(null, mapDispatchToProps)\nclass LinkFooter extends React.PureComponent {\n\n static propTypes = {\n withHotkeys: PropTypes.bool,\n onLogout: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n handleLogoutClick = e => {\n e.preventDefault();\n e.stopPropagation();\n\n this.props.onLogout();\n\n return false;\n }\n\n render () {\n const { withHotkeys } = this.props;\n\n return (\n <div className='getting-started__footer'>\n <ul>\n {invitesEnabled && <li><a href='/invites' target='_blank'><FormattedMessage id='getting_started.invite' defaultMessage='Invite people' /></a> · </li>}\n {withHotkeys && <li><Link to='/keyboard-shortcuts'><FormattedMessage id='navigation_bar.keyboard_shortcuts' defaultMessage='Hotkeys' /></Link> · </li>}\n <li><a href='/auth/edit'><FormattedMessage id='getting_started.security' defaultMessage='Security' /></a> · </li>\n <li><a href='/about/more' target='_blank'><FormattedMessage id='navigation_bar.info' defaultMessage='About this server' /></a> · </li>\n <li><a href='https://joinmastodon.org/apps' target='_blank'><FormattedMessage id='navigation_bar.apps' defaultMessage='Mobile apps' /></a> · </li>\n <li><a href='/terms' target='_blank'><FormattedMessage id='getting_started.terms' defaultMessage='Terms of service' /></a> · </li>\n <li><a href='/settings/applications' target='_blank'><FormattedMessage id='getting_started.developers' defaultMessage='Developers' /></a> · </li>\n <li><a href='https://docs.joinmastodon.org' target='_blank'><FormattedMessage id='getting_started.documentation' defaultMessage='Documentation' /></a> · </li>\n <li><a href='/auth/sign_out' onClick={this.handleLogoutClick}><FormattedMessage id='navigation_bar.logout' defaultMessage='Logout' /></a></li>\n </ul>\n\n <p>\n <FormattedMessage\n id='getting_started.open_source_notice'\n defaultMessage='Mastodon is open source software. You can contribute or report issues on GitHub at {github}.'\n values={{ github: <span><a href={source_url} rel='noopener noreferrer' target='_blank'>{repository}</a> (v{version})</span> }}\n />\n </p>\n </div>\n );\n }\n\n};\n","import React from 'react';\nimport Column from '../ui/components/column';\nimport ColumnLink from '../ui/components/column_link';\nimport ColumnSubheading from '../ui/components/column_subheading';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { me, profile_directory, showTrends } from '../../initial_state';\nimport { fetchFollowRequests } from 'mastodon/actions/accounts';\nimport { List as ImmutableList } from 'immutable';\nimport NavigationBar from '../compose/components/navigation_bar';\nimport Icon from 'mastodon/components/icon';\nimport LinkFooter from 'mastodon/features/ui/components/link_footer';\nimport TrendsContainer from './containers/trends_container';\n\nconst messages = defineMessages({\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 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 follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' },\n favourites: { id: 'navigation_bar.favourites', defaultMessage: 'Favourites' },\n blocks: { id: 'navigation_bar.blocks', defaultMessage: 'Blocked users' },\n domain_blocks: { id: 'navigation_bar.domain_blocks', defaultMessage: 'Hidden domains' },\n mutes: { id: 'navigation_bar.mutes', defaultMessage: 'Muted users' },\n pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned toots' },\n lists: { id: 'navigation_bar.lists', defaultMessage: 'Lists' },\n discover: { id: 'navigation_bar.discover', defaultMessage: 'Discover' },\n personal: { id: 'navigation_bar.personal', defaultMessage: 'Personal' },\n security: { id: 'navigation_bar.security', defaultMessage: 'Security' },\n menu: { id: 'getting_started.heading', defaultMessage: 'Getting started' },\n profile_directory: { id: 'getting_started.directory', defaultMessage: 'Profile directory' },\n});\n\nconst mapStateToProps = state => ({\n myAccount: state.getIn(['accounts', me]),\n unreadFollowRequests: state.getIn(['user_lists', 'follow_requests', 'items'], ImmutableList()).size,\n});\n\nconst mapDispatchToProps = dispatch => ({\n fetchFollowRequests: () => dispatch(fetchFollowRequests()),\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\nexport default @connect(mapStateToProps, mapDispatchToProps)\n@injectIntl\nclass 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 };\n\n componentDidMount () {\n const { fetchFollowRequests, multiColumn } = 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\n render () {\n const { intl, myAccount, multiColumn, unreadFollowRequests } = this.props;\n\n const navItems = [];\n let i = 1;\n let height = (multiColumn) ? 0 : 60;\n\n if (multiColumn) {\n navItems.push(\n <ColumnSubheading key={i++} text={intl.formatMessage(messages.discover)} />,\n <ColumnLink key={i++} icon='users' text={intl.formatMessage(messages.community_timeline)} to='/timelines/public/local' />,\n <ColumnLink key={i++} icon='globe' text={intl.formatMessage(messages.public_timeline)} to='/timelines/public' />,\n );\n\n height += 34 + 48*2;\n\n if (profile_directory) {\n navItems.push(\n <ColumnLink key={i++} icon='address-book' text={intl.formatMessage(messages.profile_directory)} to='/directory' />\n );\n\n height += 48;\n }\n\n navItems.push(\n <ColumnSubheading key={i++} text={intl.formatMessage(messages.personal)} />\n );\n\n height += 34;\n } else if (profile_directory) {\n navItems.push(\n <ColumnLink key={i++} icon='address-book' text={intl.formatMessage(messages.profile_directory)} to='/directory' />\n );\n\n height += 48;\n }\n\n navItems.push(\n <ColumnLink key={i++} icon='envelope' text={intl.formatMessage(messages.direct)} to='/timelines/direct' />,\n <ColumnLink key={i++} icon='bookmark' text={intl.formatMessage(messages.bookmarks)} to='/bookmarks' />,\n <ColumnLink key={i++} icon='star' text={intl.formatMessage(messages.favourites)} to='/favourites' />,\n <ColumnLink key={i++} icon='list-ul' text={intl.formatMessage(messages.lists)} to='/lists' />\n );\n\n height += 48*4;\n\n if (myAccount.get('locked') || unreadFollowRequests > 0) {\n navItems.push(<ColumnLink key={i++} icon='user-plus' text={intl.formatMessage(messages.follow_requests)} badge={badgeDisplay(unreadFollowRequests, 40)} to='/follow_requests' />);\n height += 48;\n }\n\n if (!multiColumn) {\n navItems.push(\n <ColumnSubheading key={i++} text={intl.formatMessage(messages.settings_subheading)} />,\n <ColumnLink key={i++} icon='gears' text={intl.formatMessage(messages.preferences)} href='/settings/preferences' />,\n );\n\n height += 34 + 48;\n }\n\n return (\n <Column bindToDocument={!multiColumn} label={intl.formatMessage(messages.menu)}>\n {multiColumn && <div className='column-header__wrapper'>\n <h1 className='column-header'>\n <button>\n <Icon id='bars' className='column-header__icon' fixedWidth />\n <FormattedMessage id='getting_started.heading' defaultMessage='Getting started' />\n </button>\n </h1>\n </div>}\n\n <div className='getting-started'>\n <div className='getting-started__wrapper' style={{ height }}>\n {!multiColumn && <NavigationBar account={myAccount} />}\n {navItems}\n </div>\n\n {!multiColumn && <div className='flex-spacer' />}\n\n <LinkFooter withHotkeys={multiColumn} />\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 'mastodon/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":""} |