Merge branch 'develop' into feature/database-compaction
[akkoma] / priv / static / packs / features / list_editor.js.map
index 54fdc6380e37e7c05fb4e5f0503d7dd041f613ad..8fa97d4cc2d3aefa3992796d28ee4db5cddc558c 100644 (file)
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///./app/javascript/mastodon/features/list_editor/components/account.js","webpack:///./app/javascript/mastodon/features/list_editor/components/search.js","webpack:///./app/javascript/mastodon/features/list_editor/index.js"],"names":["messages","Object","index_es","remove","id","defaultMessage","add","account_Account","es","getAccount","selectors","state","_ref","accountId","added","account","getIn","includes","dispatch","_ref2","onRemove","lists","onAdd","render","_props","this","props","intl","button","jsx_default","icon_button","icon","title","formatMessage","onClick","className","avatar","size","display_name","react_immutable_pure_component_es","propTypes","ImmutablePropTypes_default","a","map","isRequired","prop_types_default","object","func","bool","defaultProps","search_messages","search","search_Search","value","onSubmit","onClear","onChange","handleChange","e","_this","target","handleKeyUp","keyCode","handleClear","hasValue","length","style","display","type","onKeyUp","placeholder","role","tabIndex","classnames_default","active","aria-label","react_default","PureComponent","list_editor_ListEditor","accountIds","searchAccountIds","onInitialize","listId","onReset","componentDidMount","componentWillUnmount","_props2","showSearch","optional_motion","defaultStyle","x","spring_default","stiffness","damping","transform","visibility","string","onClose","list"],"mappings":"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","file":"features/list_editor.js","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { makeGetAccount } from '../../../selectors';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport Avatar from '../../../components/avatar';\nimport DisplayName from '../../../components/display_name';\nimport IconButton from '../../../components/icon_button';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport { removeFromListEditor, addToListEditor } from '../../../actions/lists';\n\nconst messages = defineMessages({\n  remove: { id: 'lists.account.remove', defaultMessage: 'Remove from list' },\n  add: { id: 'lists.account.add', defaultMessage: 'Add to list' },\n});\n\nconst makeMapStateToProps = () => {\n  const getAccount = makeGetAccount();\n\n  const mapStateToProps = (state, { accountId, added }) => ({\n    account: getAccount(state, accountId),\n    added: typeof added === 'undefined' ? state.getIn(['listEditor', 'accounts', 'items']).includes(accountId) : added,\n  });\n\n  return mapStateToProps;\n};\n\nconst mapDispatchToProps = (dispatch, { accountId }) => ({\n  onRemove: () => dispatch(removeFromListEditor(accountId)),\n  onAdd: () => dispatch(addToListEditor(accountId)),\n});\n\n@connect(makeMapStateToProps, mapDispatchToProps)\n@injectIntl\nexport default class Account extends ImmutablePureComponent {\n\n  static propTypes = {\n    account: ImmutablePropTypes.map.isRequired,\n    intl: PropTypes.object.isRequired,\n    onRemove: PropTypes.func.isRequired,\n    onAdd: PropTypes.func.isRequired,\n    added: PropTypes.bool,\n  };\n\n  static defaultProps = {\n    added: false,\n  };\n\n  render () {\n    const { account, intl, onRemove, onAdd, added } = this.props;\n\n    let button;\n\n    if (added) {\n      button = <IconButton icon='times' title={intl.formatMessage(messages.remove)} onClick={onRemove} />;\n    } else {\n      button = <IconButton icon='plus' title={intl.formatMessage(messages.add)} onClick={onAdd} />;\n    }\n\n    return (\n      <div className='account'>\n        <div className='account__wrapper'>\n          <div className='account__display-name'>\n            <div className='account__avatar-wrapper'><Avatar account={account} size={36} /></div>\n            <DisplayName account={account} />\n          </div>\n\n          <div className='account__relationship'>\n            {button}\n          </div>\n        </div>\n      </div>\n    );\n  }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport { fetchListSuggestions, clearListSuggestions, changeListSuggestions } from '../../../actions/lists';\nimport classNames from 'classnames';\n\nconst messages = defineMessages({\n  search: { id: 'lists.search', defaultMessage: 'Search among people you follow' },\n});\n\nconst mapStateToProps = state => ({\n  value: state.getIn(['listEditor', 'suggestions', 'value']),\n});\n\nconst mapDispatchToProps = dispatch => ({\n  onSubmit: value => dispatch(fetchListSuggestions(value)),\n  onClear: () => dispatch(clearListSuggestions()),\n  onChange: value => dispatch(changeListSuggestions(value)),\n});\n\n@connect(mapStateToProps, mapDispatchToProps)\n@injectIntl\nexport default class Search extends React.PureComponent {\n\n  static propTypes = {\n    intl: PropTypes.object.isRequired,\n    value: PropTypes.string.isRequired,\n    onChange: PropTypes.func.isRequired,\n    onSubmit: PropTypes.func.isRequired,\n    onClear: PropTypes.func.isRequired,\n  };\n\n  handleChange = e => {\n    this.props.onChange(e.target.value);\n  }\n\n  handleKeyUp = e => {\n    if (e.keyCode === 13) {\n      this.props.onSubmit(this.props.value);\n    }\n  }\n\n  handleClear = () => {\n    this.props.onClear();\n  }\n\n  render () {\n    const { value, intl } = this.props;\n    const hasValue = value.length > 0;\n\n    return (\n      <div className='list-editor__search search'>\n        <label>\n          <span style={{ display: 'none' }}>{intl.formatMessage(messages.search)}</span>\n\n          <input\n            className='search__input'\n            type='text'\n            value={value}\n            onChange={this.handleChange}\n            onKeyUp={this.handleKeyUp}\n            placeholder={intl.formatMessage(messages.search)}\n          />\n        </label>\n\n        <div role='button' tabIndex='0' className='search__icon' onClick={this.handleClear}>\n          <i className={classNames('fa fa-search', { active: !hasValue })} />\n          <i aria-label={intl.formatMessage(messages.search)} className={classNames('fa fa-times-circle', { active: hasValue })} />\n        </div>\n      </div>\n    );\n  }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { connect } from 'react-redux';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { injectIntl } from 'react-intl';\nimport { setupListEditor, clearListSuggestions, resetListEditor } from '../../actions/lists';\nimport Account from './components/account';\nimport Search from './components/search';\nimport Motion from '../ui/util/optional_motion';\nimport spring from 'react-motion/lib/spring';\n\nconst mapStateToProps = state => ({\n  title: state.getIn(['listEditor', 'title']),\n  accountIds: state.getIn(['listEditor', 'accounts', 'items']),\n  searchAccountIds: state.getIn(['listEditor', 'suggestions', 'items']),\n});\n\nconst mapDispatchToProps = dispatch => ({\n  onInitialize: listId => dispatch(setupListEditor(listId)),\n  onClear: () => dispatch(clearListSuggestions()),\n  onReset: () => dispatch(resetListEditor()),\n});\n\n@connect(mapStateToProps, mapDispatchToProps)\n@injectIntl\nexport default class ListEditor extends ImmutablePureComponent {\n\n  static propTypes = {\n    listId: PropTypes.string.isRequired,\n    onClose: PropTypes.func.isRequired,\n    intl: PropTypes.object.isRequired,\n    onInitialize: PropTypes.func.isRequired,\n    onClear: PropTypes.func.isRequired,\n    onReset: PropTypes.func.isRequired,\n    title: PropTypes.string.isRequired,\n    accountIds: ImmutablePropTypes.list.isRequired,\n    searchAccountIds: ImmutablePropTypes.list.isRequired,\n  };\n\n  componentDidMount () {\n    const { onInitialize, listId } = this.props;\n    onInitialize(listId);\n  }\n\n  componentWillUnmount () {\n    const { onReset } = this.props;\n    onReset();\n  }\n\n  render () {\n    const { title, accountIds, searchAccountIds, onClear } = this.props;\n    const showSearch = searchAccountIds.size > 0;\n\n    return (\n      <div className='modal-root__modal list-editor'>\n        <h4>{title}</h4>\n\n        <Search />\n\n        <div className='drawer__pager'>\n          <div className='drawer__inner list-editor__accounts'>\n            {accountIds.map(accountId => <Account key={accountId} accountId={accountId} added />)}\n          </div>\n\n          {showSearch && <div role='button' tabIndex='-1' className='drawer__backdrop' onClick={onClear} />}\n\n          <Motion defaultStyle={{ x: -100 }} style={{ x: spring(showSearch ? 0 : -100, { stiffness: 210, damping: 20 }) }}>\n            {({ x }) => (\n              <div className='drawer__inner backdrop' style={{ transform: x === 0 ? null : `translateX(${x}%)`, visibility: x === -100 ? 'hidden' : 'visible' }}>\n                {searchAccountIds.map(accountId => <Account key={accountId} accountId={accountId} />)}\n              </div>\n            )}\n          </Motion>\n        </div>\n      </div>\n    );\n  }\n\n}\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/features/list_editor/components/account.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/features/list_editor/components/search.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/features/list_editor/components/edit_list_form.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/features/list_editor/index.js"],"names":["messages","defineMessages","remove","id","defaultMessage","add","Account","connect","getAccount","makeGetAccount","state","_ref","accountId","added","account","getIn","includes","dispatch","_ref2","onRemove","removeFromListEditor","onAdd","addToListEditor","injectIntl","render","button","_this$props","this","props","intl","Object","jsx","icon_button","icon","title","formatMessage","onClick","className","avatar","size","display_name","ImmutablePureComponent","ImmutablePropTypes","map","isRequired","PropTypes","object","func","bool","search","Search","value","onSubmit","fetchListSuggestions","onClear","clearListSuggestions","onChange","changeListSuggestions","e","_this","target","keyCode","hasValue","length","style","display","type","handleChange","onKeyUp","handleKeyUp","placeholder","role","tabIndex","handleClear","classNames","active","aria-label","React","PureComponent","ListForm","disabled","changeListEditorTitle","submitListEditor","preventDefault","handleSubmit","handleClick","ListEditor","accountIds","searchAccountIds","onInitialize","listId","setupListEditor","onReset","resetListEditor","componentDidMount","componentWillUnmount","_this$props2","showSearch","edit_list_form_ListForm","search_Search","account_Account","optional_motion","defaultStyle","x","spring","stiffness","damping","transform","visibility","string","onClose","list"],"mappings":"8PAYMA,EAAWC,YAAe,CAC9BC,OAAM,CAAAC,GAAA,uBAAAC,eAAA,oBACNC,IAAG,CAAAF,GAAA,oBAAAC,eAAA,iBAqBCE,EAFUC,kBAhBY,WAC1B,IAAMC,EAAaC,cAOnB,OALwB,SAACC,EAADC,GAAA,IAAUC,EAAVD,EAAUC,UAAWC,EAArBF,EAAqBE,MAArB,MAAkC,CACxDC,QAASN,EAAWE,EAAOE,GAC3BC,WAAwB,IAAVA,EAAwBH,EAAMK,MAAM,CAAC,aAAc,WAAY,UAAUC,SAASJ,GAAaC,KAMtF,SAACI,EAADC,GAAA,IAAaN,EAAbM,EAAaN,UAAb,MAA8B,CACvDO,SAAU,kBAAMF,EAASG,YAAqBR,KAC9CS,MAAO,kBAAMJ,EAASK,YAAgBV,UAIvCW,mHAeCC,OAAA,WAAU,IAGJC,EAHIC,EAC0CC,KAAKC,MAA/Cd,EADAY,EACAZ,QAASe,EADTH,EACSG,KAAMV,EADfO,EACeP,SAAUE,EADzBK,EACyBL,MAUjC,OALEI,EANMC,EACgCb,MAK7BiB,OAAAC,EAAA,EAAAD,CAACE,EAAA,EAAD,CAAYC,KAAK,QAAQC,MAAOL,EAAKM,cAAcnC,EAASE,QAASkC,QAASjB,IAE9EW,OAAAC,EAAA,EAAAD,CAACE,EAAA,EAAD,CAAYC,KAAK,OAAOC,MAAOL,EAAKM,cAAcnC,EAASK,KAAM+B,QAASf,IAInFS,OAAAC,EAAA,EAAAD,CAAA,OAAKO,UAAU,gBAAf,EACEP,OAAAC,EAAA,EAAAD,CAAA,OAAKO,UAAU,yBAAf,EACEP,OAAAC,EAAA,EAAAD,CAAA,OAAKO,UAAU,8BAAf,EACEP,OAAAC,EAAA,EAAAD,CAAA,OAAKO,UAAU,gCAAf,EAAyCP,OAAAC,EAAA,EAAAD,CAACQ,EAAA,EAAD,CAAQxB,QAASA,EAASyB,KAAM,MACzET,OAAAC,EAAA,EAAAD,CAACU,EAAA,EAAD,CAAa1B,QAASA,KAGxBgB,OAAAC,EAAA,EAAAD,CAAA,OAAKO,UAAU,8BAAf,EACGZ,SAlCSgB,+BAED,CACjB3B,QAAS4B,IAAmBC,IAAIC,WAChCf,KAAMgB,IAAUC,OAAOF,WACvBzB,SAAU0B,IAAUE,KAAKH,WACzBvB,MAAOwB,IAAUE,KAAKH,WACtB/B,MAAOgC,IAAUG,oCAGG,CACpBnC,OAAO,iDCtCLb,EAAWC,YAAe,CAC9BgD,OAAM,CAAA9C,GAAA,eAAAC,eAAA,oCAeF8C,EAFU3C,kBAVQ,SAAAG,GAAK,MAAK,CAChCyC,MAAOzC,EAAMK,MAAM,CAAC,aAAc,cAAe,YAGxB,SAAAE,GAAQ,MAAK,CACtCmC,SAAU,SAAAD,GAAK,OAAIlC,EAASoC,YAAqBF,KACjDG,QAAS,kBAAMrC,EAASsC,gBACxBC,SAAU,SAAAL,GAAK,OAAIlC,EAASwC,YAAsBN,UAInD5B,2MAWgB,SAAAmC,GACbC,EAAK/B,MAAM4B,SAASE,EAAEE,OAAOT,kDAGjB,SAAAO,GACM,KAAdA,EAAEG,SACJF,EAAK/B,MAAMwB,SAASO,EAAK/B,MAAMuB,kDAIrB,WACZQ,EAAK/B,MAAM0B,kDAGb9B,OAAA,WAAU,IAAAE,EACgBC,KAAKC,MAArBuB,EADAzB,EACAyB,MAAOtB,EADPH,EACOG,KACTiC,EAA0B,EAAfX,EAAMY,OAEvB,OACEjC,OAAAC,EAAA,EAAAD,CAAA,OAAKO,UAAU,mCAAf,EACEP,OAAAC,EAAA,EAAAD,CAAA,kBACEA,OAAAC,EAAA,EAAAD,CAAA,QAAMkC,MAAO,CAAEC,QAAS,cAAxB,EAAmCpC,EAAKM,cAAcnC,EAASiD,SAE/DnB,OAAAC,EAAA,EAAAD,CAAA,SACEO,UAAU,gBACV6B,KAAK,OACLf,MAAOA,EACPK,SAAU7B,KAAKwC,aACfC,QAASzC,KAAK0C,YACdC,YAAazC,EAAKM,cAAcnC,EAASiD,WAI7CnB,OAAAC,EAAA,EAAAD,CAAA,OAAKyC,KAAK,SAASC,SAAS,IAAInC,UAAU,eAAeD,QAAST,KAAK8C,kBAAvE,EACE3C,OAAAC,EAAA,EAAAD,CAACG,EAAA,EAAD,CAAM9B,GAAG,SAASkC,UAAWqC,IAAW,CAAEC,QAASb,MACnDhC,OAAAC,EAAA,EAAAD,CAACG,EAAA,EAAD,CAAM9B,GAAG,eAAeyE,aAAY/C,EAAKM,cAAcnC,EAASiD,QAASZ,UAAWqC,IAAW,CAAEC,OAAQb,YA7C9Fe,IAAMC,uBCjBrB9E,EAAWC,YAAe,CAC9BiC,MAAK,CAAA/B,GAAA,oBAAAC,eAAA,kBAeD2E,EAFUxE,kBAVQ,SAAAG,GAAK,MAAK,CAChCyC,MAAOzC,EAAMK,MAAM,CAAC,aAAc,UAClCiE,UAAWtE,EAAMK,MAAM,CAAC,aAAc,gBAGb,SAAAE,GAAQ,MAAK,CACtCuC,SAAU,SAAAL,GAAK,OAAIlC,EAASgE,YAAsB9B,KAClDC,SAAU,kBAAMnC,EAASiE,aAAiB,UAI3C3D,2MAWgB,SAAAmC,GACbC,EAAK/B,MAAM4B,SAASE,EAAEE,OAAOT,mDAGhB,SAAAO,GACbA,EAAEyB,iBACFxB,EAAK/B,MAAMwB,sDAGC,WACZO,EAAK/B,MAAMwB,mDAGb5B,OAAA,WAAU,IAAAE,EAC0BC,KAAKC,MAA/BuB,EADAzB,EACAyB,MAAO6B,EADPtD,EACOsD,SAET9C,EAHER,EACiBG,KAENM,cAAcnC,EAASkC,OAE1C,OACEJ,OAAAC,EAAA,EAAAD,CAAA,QAAMO,UAAU,qBAAqBe,SAAUzB,KAAKyD,mBAApD,EACEtD,OAAAC,EAAA,EAAAD,CAAA,SACEO,UAAU,eACVc,MAAOA,EACPK,SAAU7B,KAAKwC,eAGjBrC,OAAAC,EAAA,EAAAD,CAACE,EAAA,EAAD,CACEgD,SAAUA,EACV/C,KAAK,QACLC,MAAOA,EACPE,QAAST,KAAK0D,mBAxCDR,IAAMC,sFCV7B,IAaMQ,EAFU/E,kBAXQ,SAAAG,GAAK,MAAK,CAChC6E,WAAY7E,EAAMK,MAAM,CAAC,aAAc,WAAY,UACnDyE,iBAAkB9E,EAAMK,MAAM,CAAC,aAAc,cAAe,YAGnC,SAAAE,GAAQ,MAAK,CACtCwE,aAAc,SAAAC,GAAM,OAAIzE,EAAS0E,YAAgBD,KACjDpC,QAAS,kBAAMrC,EAASsC,gBACxBqC,QAAS,kBAAM3E,EAAS4E,qBAIzBtE,2HAcCuE,kBAAA,WAAqB,IAAApE,EACcC,KAAKC,OACtC6D,EAFmB/D,EACX+D,cADW/D,EACGgE,WAIxBK,qBAAA,YAEEH,EADoBjE,KAAKC,MAAjBgE,cAIVpE,OAAA,WAAU,IAAAwE,EAC0CrE,KAAKC,MAA/C2D,EADAS,EACAT,WAAYC,EADZQ,EACYR,iBAAkBlC,EAD9B0C,EAC8B1C,QAChC2C,EAAqC,EAAxBT,EAAiBjD,KAEpC,OACET,OAAAC,EAAA,EAAAD,CAAA,OAAKO,UAAU,sCAAf,EACEP,OAAAC,EAAA,EAAAD,CAACoE,EAAD,IAEApE,OAAAC,EAAA,EAAAD,CAACqE,EAAD,IAEArE,OAAAC,EAAA,EAAAD,CAAA,OAAKO,UAAU,sBAAf,EACEP,OAAAC,EAAA,EAAAD,CAAA,OAAKO,UAAU,4CAAf,EACGkD,EAAW5C,IAAI,SAAA/B,GAAS,OAAIkB,OAAAC,EAAA,EAAAD,CAACsE,EAAD,CAAyBxF,UAAWA,EAAWC,OAAK,GAAtCD,MAG5CqF,GAAcnE,OAAAC,EAAA,EAAAD,CAAA,OAAKyC,KAAK,SAASC,SAAS,KAAKnC,UAAU,mBAAmBD,QAASkB,IAEtFxB,OAAAC,EAAA,EAAAD,CAACuE,EAAA,EAAD,CAAQC,aAAc,CAAEC,GAAI,KAAOvC,MAAO,CAAEuC,EAAGC,IAAOP,EAAa,GAAK,IAAK,CAAEQ,UAAW,IAAKC,QAAS,YAAxG,EACG,SAAA/F,GAAA,IAAG4F,EAAH5F,EAAG4F,EAAH,OACCzE,OAAAC,EAAA,EAAAD,CAAA,OAAKO,UAAU,yBAAyB2B,MAAO,CAAE2C,UAAiB,IAANJ,EAAU,KAAV,cAA+BA,EAA/B,KAAsCK,YAAmB,MAAPL,EAAa,SAAW,iBAAtI,EACGf,EAAiB7C,IAAI,SAAA/B,GAAS,OAAIkB,OAAAC,EAAA,EAAAD,CAACsE,EAAD,CAAyBxF,UAAWA,GAAtBA,cA3CxC6B,+BAEJ,CACjBiD,OAAQ7C,IAAUgE,OAAOjE,WACzBkE,QAASjE,IAAUE,KAAKH,WACxBf,KAAMgB,IAAUC,OAAOF,WACvB6C,aAAc5C,IAAUE,KAAKH,WAC7BU,QAAST,IAAUE,KAAKH,WACxBgD,QAAS/C,IAAUE,KAAKH,WACxB2C,WAAY7C,IAAmBqE,KAAKnE,WACpC4C,iBAAkB9C,IAAmBqE,KAAKnE","file":"features/list_editor.js","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { makeGetAccount } from '../../../selectors';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport Avatar from '../../../components/avatar';\nimport DisplayName from '../../../components/display_name';\nimport IconButton from '../../../components/icon_button';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport { removeFromListEditor, addToListEditor } from '../../../actions/lists';\n\nconst messages = defineMessages({\n  remove: { id: 'lists.account.remove', defaultMessage: 'Remove from list' },\n  add: { id: 'lists.account.add', defaultMessage: 'Add to list' },\n});\n\nconst makeMapStateToProps = () => {\n  const getAccount = makeGetAccount();\n\n  const mapStateToProps = (state, { accountId, added }) => ({\n    account: getAccount(state, accountId),\n    added: typeof added === 'undefined' ? state.getIn(['listEditor', 'accounts', 'items']).includes(accountId) : added,\n  });\n\n  return mapStateToProps;\n};\n\nconst mapDispatchToProps = (dispatch, { accountId }) => ({\n  onRemove: () => dispatch(removeFromListEditor(accountId)),\n  onAdd: () => dispatch(addToListEditor(accountId)),\n});\n\nexport default @connect(makeMapStateToProps, mapDispatchToProps)\n@injectIntl\nclass Account extends ImmutablePureComponent {\n\n  static propTypes = {\n    account: ImmutablePropTypes.map.isRequired,\n    intl: PropTypes.object.isRequired,\n    onRemove: PropTypes.func.isRequired,\n    onAdd: PropTypes.func.isRequired,\n    added: PropTypes.bool,\n  };\n\n  static defaultProps = {\n    added: false,\n  };\n\n  render () {\n    const { account, intl, onRemove, onAdd, added } = this.props;\n\n    let button;\n\n    if (added) {\n      button = <IconButton icon='times' title={intl.formatMessage(messages.remove)} onClick={onRemove} />;\n    } else {\n      button = <IconButton icon='plus' title={intl.formatMessage(messages.add)} onClick={onAdd} />;\n    }\n\n    return (\n      <div className='account'>\n        <div className='account__wrapper'>\n          <div className='account__display-name'>\n            <div className='account__avatar-wrapper'><Avatar account={account} size={36} /></div>\n            <DisplayName account={account} />\n          </div>\n\n          <div className='account__relationship'>\n            {button}\n          </div>\n        </div>\n      </div>\n    );\n  }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport { fetchListSuggestions, clearListSuggestions, changeListSuggestions } from '../../../actions/lists';\nimport classNames from 'classnames';\nimport Icon from 'mastodon/components/icon';\n\nconst messages = defineMessages({\n  search: { id: 'lists.search', defaultMessage: 'Search among people you follow' },\n});\n\nconst mapStateToProps = state => ({\n  value: state.getIn(['listEditor', 'suggestions', 'value']),\n});\n\nconst mapDispatchToProps = dispatch => ({\n  onSubmit: value => dispatch(fetchListSuggestions(value)),\n  onClear: () => dispatch(clearListSuggestions()),\n  onChange: value => dispatch(changeListSuggestions(value)),\n});\n\nexport default @connect(mapStateToProps, mapDispatchToProps)\n@injectIntl\nclass Search extends React.PureComponent {\n\n  static propTypes = {\n    intl: PropTypes.object.isRequired,\n    value: PropTypes.string.isRequired,\n    onChange: PropTypes.func.isRequired,\n    onSubmit: PropTypes.func.isRequired,\n    onClear: PropTypes.func.isRequired,\n  };\n\n  handleChange = e => {\n    this.props.onChange(e.target.value);\n  }\n\n  handleKeyUp = e => {\n    if (e.keyCode === 13) {\n      this.props.onSubmit(this.props.value);\n    }\n  }\n\n  handleClear = () => {\n    this.props.onClear();\n  }\n\n  render () {\n    const { value, intl } = this.props;\n    const hasValue = value.length > 0;\n\n    return (\n      <div className='list-editor__search search'>\n        <label>\n          <span style={{ display: 'none' }}>{intl.formatMessage(messages.search)}</span>\n\n          <input\n            className='search__input'\n            type='text'\n            value={value}\n            onChange={this.handleChange}\n            onKeyUp={this.handleKeyUp}\n            placeholder={intl.formatMessage(messages.search)}\n          />\n        </label>\n\n        <div role='button' tabIndex='0' className='search__icon' onClick={this.handleClear}>\n          <Icon id='search' className={classNames({ active: !hasValue })} />\n          <Icon id='times-circle' aria-label={intl.formatMessage(messages.search)} className={classNames({ active: hasValue })} />\n        </div>\n      </div>\n    );\n  }\n\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { changeListEditorTitle, submitListEditor } from '../../../actions/lists';\nimport IconButton from '../../../components/icon_button';\nimport { defineMessages, injectIntl } from 'react-intl';\n\nconst messages = defineMessages({\n  title: { id: 'lists.edit.submit', defaultMessage: 'Change title' },\n});\n\nconst mapStateToProps = state => ({\n  value: state.getIn(['listEditor', 'title']),\n  disabled: !state.getIn(['listEditor', 'isChanged']),\n});\n\nconst mapDispatchToProps = dispatch => ({\n  onChange: value => dispatch(changeListEditorTitle(value)),\n  onSubmit: () => dispatch(submitListEditor(false)),\n});\n\nexport default @connect(mapStateToProps, mapDispatchToProps)\n@injectIntl\nclass ListForm extends React.PureComponent {\n\n  static propTypes = {\n    value: PropTypes.string.isRequired,\n    disabled: PropTypes.bool,\n    intl: PropTypes.object.isRequired,\n    onChange: PropTypes.func.isRequired,\n    onSubmit: PropTypes.func.isRequired,\n  };\n\n  handleChange = e => {\n    this.props.onChange(e.target.value);\n  }\n\n  handleSubmit = e => {\n    e.preventDefault();\n    this.props.onSubmit();\n  }\n\n  handleClick = () => {\n    this.props.onSubmit();\n  }\n\n  render () {\n    const { value, disabled, intl } = this.props;\n\n    const title = intl.formatMessage(messages.title);\n\n    return (\n      <form className='column-inline-form' onSubmit={this.handleSubmit}>\n        <input\n          className='setting-text'\n          value={value}\n          onChange={this.handleChange}\n        />\n\n        <IconButton\n          disabled={disabled}\n          icon='check'\n          title={title}\n          onClick={this.handleClick}\n        />\n      </form>\n    );\n  }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { connect } from 'react-redux';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { injectIntl } from 'react-intl';\nimport { setupListEditor, clearListSuggestions, resetListEditor } from '../../actions/lists';\nimport Account from './components/account';\nimport Search from './components/search';\nimport EditListForm from './components/edit_list_form';\nimport Motion from '../ui/util/optional_motion';\nimport spring from 'react-motion/lib/spring';\n\nconst mapStateToProps = state => ({\n  accountIds: state.getIn(['listEditor', 'accounts', 'items']),\n  searchAccountIds: state.getIn(['listEditor', 'suggestions', 'items']),\n});\n\nconst mapDispatchToProps = dispatch => ({\n  onInitialize: listId => dispatch(setupListEditor(listId)),\n  onClear: () => dispatch(clearListSuggestions()),\n  onReset: () => dispatch(resetListEditor()),\n});\n\nexport default @connect(mapStateToProps, mapDispatchToProps)\n@injectIntl\nclass ListEditor extends ImmutablePureComponent {\n\n  static propTypes = {\n    listId: PropTypes.string.isRequired,\n    onClose: PropTypes.func.isRequired,\n    intl: PropTypes.object.isRequired,\n    onInitialize: PropTypes.func.isRequired,\n    onClear: PropTypes.func.isRequired,\n    onReset: PropTypes.func.isRequired,\n    accountIds: ImmutablePropTypes.list.isRequired,\n    searchAccountIds: ImmutablePropTypes.list.isRequired,\n  };\n\n  componentDidMount () {\n    const { onInitialize, listId } = this.props;\n    onInitialize(listId);\n  }\n\n  componentWillUnmount () {\n    const { onReset } = this.props;\n    onReset();\n  }\n\n  render () {\n    const { accountIds, searchAccountIds, onClear } = this.props;\n    const showSearch = searchAccountIds.size > 0;\n\n    return (\n      <div className='modal-root__modal list-editor'>\n        <EditListForm />\n\n        <Search />\n\n        <div className='drawer__pager'>\n          <div className='drawer__inner list-editor__accounts'>\n            {accountIds.map(accountId => <Account key={accountId} accountId={accountId} added />)}\n          </div>\n\n          {showSearch && <div role='button' tabIndex='-1' className='drawer__backdrop' onClick={onClear} />}\n\n          <Motion defaultStyle={{ x: -100 }} style={{ x: spring(showSearch ? 0 : -100, { stiffness: 210, damping: 20 }) }}>\n            {({ x }) => (\n              <div className='drawer__inner backdrop' style={{ transform: x === 0 ? null : `translateX(${x}%)`, visibility: x === -100 ? 'hidden' : 'visible' }}>\n                {searchAccountIds.map(accountId => <Account key={accountId} accountId={accountId} />)}\n              </div>\n            )}\n          </Motion>\n        </div>\n      </div>\n    );\n  }\n\n}\n"],"sourceRoot":""}
\ No newline at end of file