onboarding_modal.js.map 18.1 KB
Newer Older
Haelwenn's avatar
Haelwenn committed
1
{"version":3,"sources":["webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/ui/components/onboarding_modal.js"],"names":["noop","messages","defineMessages","home_title","notifications_title","local_title","federated_title","PageOne","acct","domain","className","style","flex","id","defaultMessage","values","handle","PageTwo","intl","myAccount","account","privacy","text","spoilerText","suggestions","PageThree","value","onChange","onSubmit","onClear","onShow","illustration","to","href","introductions","PageFour","icon","type","formatMessage","marginBottom","PageSix","admin","adminSection","get","guidelines","target","fork","rel","Mastodon","github","apps","OnboardingModal","connect","state","getIn","me","injectIntl","currentIndex","e","preventDefault","props","onClose","i","Number","currentTarget","getAttribute","setState","Math","max","pages","min","length","index","key","handlePrev","handleNext","componentWillMount","this","componentDidMount","window","addEventListener","handleKeyUp","componentWillUnmount","render","nextOrDoneBtn","onClick","handleClose","onChangeIndex","handleSwipe","map","page","classNames","handleSkip","_","active","role","tabIndex","data-index","handleDot","React","PureComponent"],"mappings":"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","file":"flavours/glitch/async/onboarding_modal.js","sourcesContent":["import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport ReactSwipeableViews from 'react-swipeable-views';\nimport classNames from 'classnames';\nimport Permalink from 'flavours/glitch/components/permalink';\nimport ComposeForm from 'flavours/glitch/features/compose/components/compose_form';\nimport DrawerAccount from 'flavours/glitch/features/compose/components/navigation_bar';\nimport Search from 'flavours/glitch/features/compose/components/search';\nimport ColumnHeader from './column_header';\nimport { me } from 'flavours/glitch/util/initial_state';\n\nconst noop = () => { };\n\nconst messages = defineMessages({\n  home_title: { id: 'column.home', defaultMessage: 'Home' },\n  notifications_title: { id: 'column.notifications', defaultMessage: 'Notifications' },\n  local_title: { id: 'column.community', defaultMessage: 'Local timeline' },\n  federated_title: { id: 'column.public', defaultMessage: 'Federated timeline' },\n});\n\nconst PageOne = ({ acct, domain }) => (\n  <div className='onboarding-modal__page onboarding-modal__page-one'>\n    <div style={{ flex: '0 0 auto' }}>\n      <div className='onboarding-modal__page-one__elephant-friend' />\n    </div>\n\n    <div>\n      <h1><FormattedMessage id='onboarding.page_one.welcome' defaultMessage='Welcome to {domain}!' values={{ domain }} /></h1>\n      <p><FormattedMessage id='onboarding.page_one.federation' defaultMessage='{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.' values={{ domain }} /></p>\n      <p><FormattedMessage id='onboarding.page_one.handle' defaultMessage='You are on {domain}, so your full handle is {handle}' values={{ domain, handle: <strong>@{acct}@{domain}</strong> }} /></p>\n    </div>\n  </div>\n);\n\nPageOne.propTypes = {\n  acct: PropTypes.string.isRequired,\n  domain: PropTypes.string.isRequired,\n};\n\nconst PageTwo = ({ intl, myAccount }) => (\n  <div className='onboarding-modal__page onboarding-modal__page-two'>\n    <div className='figure non-interactive'>\n      <div className='pseudo-drawer'>\n        <DrawerAccount account={myAccount} />\n        <ComposeForm\n          privacy='public'\n          text='Awoo! #introductions'\n          spoilerText=''\n          suggestions={ [] }\n        />\n      </div>\n    </div>\n\n    <p><FormattedMessage id='onboarding.page_two.compose' defaultMessage='Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.' /></p>\n  </div>\n);\n\nPageTwo.propTypes = {\n  intl: PropTypes.object.isRequired,\n  myAccount: ImmutablePropTypes.map.isRequired,\n};\n\nconst PageThree = ({ intl, myAccount }) => (\n  <div className='onboarding-modal__page onboarding-modal__page-three'>\n    <div className='figure non-interactive'>\n      <Search\n        value=''\n        onChange={noop}\n        onSubmit={noop}\n        onClear={noop}\n        onShow={noop}\n      />\n\n      <div className='pseudo-drawer'>\n        <DrawerAccount account={myAccount} />\n      </div>\n    </div>\n\n    <p><FormattedMessage id='onboarding.page_three.search' defaultMessage='Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.' values={{ illustration: <Permalink to='/timelines/tag/illustration' href='/tags/illustration'>#illustration</Permalink>, introductions: <Permalink to='/timelines/tag/introductions' href='/tags/introductions'>#introductions</Permalink> }} /></p>\n    <p><FormattedMessage id='onboarding.page_three.profile' defaultMessage='Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.' /></p>\n  </div>\n);\n\nPageThree.propTypes = {\n  intl: PropTypes.object.isRequired,\n  myAccount: ImmutablePropTypes.map.isRequired,\n};\n\nconst PageFour = ({ domain, intl }) => (\n  <div className='onboarding-modal__page onboarding-modal__page-four'>\n    <div className='onboarding-modal__page-four__columns'>\n      <div className='row'>\n        <div>\n          <div className='figure non-interactive'><ColumnHeader icon='home' type={intl.formatMessage(messages.home_title)} /></div>\n          <p><FormattedMessage id='onboarding.page_four.home' defaultMessage='The home timeline shows posts from people you follow.' /></p>\n        </div>\n\n        <div>\n          <div className='figure non-interactive'><ColumnHeader icon='bell' type={intl.formatMessage(messages.notifications_title)} /></div>\n          <p><FormattedMessage id='onboarding.page_four.notifications' defaultMessage='The notifications column shows when someone interacts with you.' /></p>\n        </div>\n      </div>\n\n      <div className='row'>\n        <div>\n          <div className='figure non-interactive' style={{ marginBottom: 0 }}><ColumnHeader icon='users' type={intl.formatMessage(messages.local_title)} /></div>\n        </div>\n\n        <div>\n          <div className='figure non-interactive' style={{ marginBottom: 0 }}><ColumnHeader icon='globe' type={intl.formatMessage(messages.federated_title)} /></div>\n        </div>\n      </div>\n\n      <p><FormattedMessage id='onboarding.page_five.public_timelines' defaultMessage='The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.' values={{ domain }} /></p>\n    </div>\n  </div>\n);\n\nPageFour.propTypes = {\n  domain: PropTypes.string.isRequired,\n  intl: PropTypes.object.isRequired,\n};\n\nconst PageSix = ({ admin, domain }) => {\n  let adminSection = '';\n\n  if (admin) {\n    adminSection = (\n      <p>\n        <FormattedMessage id='onboarding.page_six.admin' defaultMessage=\"Your instance's admin is {admin}.\" values={{ admin: <Permalink href={admin.get('url')} to={`/accounts/${admin.get('id')}`}>@{admin.get('acct')}</Permalink> }} />\n        <br />\n        <FormattedMessage id='onboarding.page_six.read_guidelines' defaultMessage=\"Please read {domain}'s {guidelines}!\" values={{ domain, guidelines: <a href='/about/more' target='_blank'><FormattedMessage id='onboarding.page_six.guidelines' defaultMessage='community guidelines' /></a> }} />\n      </p>\n    );\n  }\n\n  return (\n    <div className='onboarding-modal__page onboarding-modal__page-six'>\n      <h1><FormattedMessage id='onboarding.page_six.almost_done' defaultMessage='Almost done...' /></h1>\n      {adminSection}\n      <p><FormattedMessage id='onboarding.page_six.github' defaultMessage='{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.' values={{ domain, fork: <a href='https://en.wikipedia.org/wiki/Fork_(software_development)' target='_blank' rel='noopener'>fork</a>, Mastodon: <a href='https://github.com/tootsuite/mastodon' target='_blank' rel='noopener'>Mastodon</a>, github: <a href='https://github.com/glitch-soc/mastodon' target='_blank' rel='noopener'>GitHub</a> }} /></p>\n      <p><FormattedMessage id='onboarding.page_six.apps_available' defaultMessage='There are {apps} available for iOS, Android and other platforms.' values={{ domain, apps: <a href='https://joinmastodon.org/apps' target='_blank' rel='noopener'><FormattedMessage id='onboarding.page_six.various_app' defaultMessage='mobile apps' /></a> }} /></p>\n      <p><em><FormattedMessage id='onboarding.page_six.appetoot' defaultMessage='Bon Appetoot!' /></em></p>\n    </div>\n  );\n};\n\nPageSix.propTypes = {\n  admin: ImmutablePropTypes.map,\n  domain: PropTypes.string.isRequired,\n};\n\nconst mapStateToProps = state => ({\n  myAccount: state.getIn(['accounts', me]),\n  admin: state.getIn(['accounts', state.getIn(['meta', 'admin'])]),\n  domain: state.getIn(['meta', 'domain']),\n});\n\nexport default @connect(mapStateToProps)\n@injectIntl\nclass OnboardingModal extends React.PureComponent {\n\n  static propTypes = {\n    onClose: PropTypes.func.isRequired,\n    intl: PropTypes.object.isRequired,\n    myAccount: ImmutablePropTypes.map.isRequired,\n    domain: PropTypes.string.isRequired,\n    admin: ImmutablePropTypes.map,\n  };\n\n  state = {\n    currentIndex: 0,\n  };\n\n  componentWillMount() {\n    const { myAccount, admin, domain, intl } = this.props;\n    this.pages = [\n      <PageOne acct={myAccount.get('acct')} domain={domain} />,\n      <PageTwo myAccount={myAccount} intl={intl} />,\n      <PageThree myAccount={myAccount} intl={intl} />,\n      <PageFour domain={domain} intl={intl} />,\n      <PageSix admin={admin} domain={domain} />,\n    ];\n  };\n\n  componentDidMount() {\n    window.addEventListener('keyup', this.handleKeyUp);\n  }\n\n  componentWillUnmount() {\n    window.addEventListener('keyup', this.handleKeyUp);\n  }\n\n  handleSkip = (e) => {\n    e.preventDefault();\n    this.props.onClose();\n  }\n\n  handleDot = (e) => {\n    const i = Number(e.currentTarget.getAttribute('data-index'));\n    e.preventDefault();\n    this.setState({ currentIndex: i });\n  }\n\n  handlePrev = () => {\n    this.setState(({ currentIndex }) => ({\n      currentIndex: Math.max(0, currentIndex - 1),\n    }));\n  }\n\n  handleNext = () => {\n    const { pages } = this;\n    this.setState(({ currentIndex }) => ({\n      currentIndex: Math.min(currentIndex + 1, pages.length - 1),\n    }));\n  }\n\n  handleSwipe = (index) => {\n    this.setState({ currentIndex: index });\n  }\n\n  handleKeyUp = ({ key }) => {\n    switch (key) {\n    case 'ArrowLeft':\n      this.handlePrev();\n      break;\n    case 'ArrowRight':\n      this.handleNext();\n      break;\n    }\n  }\n\n  handleClose = () => {\n    this.props.onClose();\n  }\n\n  render () {\n    const { pages } = this;\n    const { currentIndex } = this.state;\n    const hasMore = currentIndex < pages.length - 1;\n\n    const nextOrDoneBtn = hasMore ? (\n      <button\n        onClick={this.handleNext}\n        className='onboarding-modal__nav onboarding-modal__next'\n      >\n        <FormattedMessage id='onboarding.next' defaultMessage='Next' />\n      </button>\n    ) : (\n      <button\n        onClick={this.handleClose}\n        className='onboarding-modal__nav onboarding-modal__done'\n      >\n        <FormattedMessage id='onboarding.done' defaultMessage='Done' />\n      </button>\n    );\n\n    return (\n      <div className='modal-root__modal onboarding-modal'>\n        <ReactSwipeableViews index={currentIndex} onChangeIndex={this.handleSwipe} className='onboarding-modal__pager'>\n          {pages.map((page, i) => {\n            const className = classNames('onboarding-modal__page__wrapper', {\n              'onboarding-modal__page__wrapper--active': i === currentIndex,\n            });\n            return (\n              <div key={i} className={className}>{page}</div>\n            );\n          })}\n        </ReactSwipeableViews>\n\n        <div className='onboarding-modal__paginator'>\n          <div>\n            <button\n              onClick={this.handleSkip}\n              className='onboarding-modal__nav onboarding-modal__skip'\n            >\n              <FormattedMessage id='onboarding.skip' defaultMessage='Skip' />\n            </button>\n          </div>\n\n          <div className='onboarding-modal__dots'>\n            {pages.map((_, i) => {\n              const className = classNames('onboarding-modal__dot', {\n                active: i === currentIndex,\n              });\n              return (\n                <div\n                  key={`dot-${i}`}\n                  role='button'\n                  tabIndex='0'\n                  data-index={i}\n                  onClick={this.handleDot}\n                  className={className}\n                />\n              );\n            })}\n          </div>\n\n          <div>\n            {nextOrDoneBtn}\n          </div>\n        </div>\n      </div>\n    );\n  }\n\n}\n"],"sourceRoot":""}