X-Git-Url: https://git.squeep.com/?a=blobdiff_plain;ds=sidebyside;f=priv%2Fstatic%2Fpacks%2Ffeatures%2Flist_adder.js.map;h=f3b671cad0eace97df8abb4f19d10f08ab53edb7;hb=fa1f5d4442560ca7fadc1057d0a1ae34ce4b08e8;hp=e8c5ee75862785b7211a79aea7a774d26cdce02d;hpb=b3b0855456a92351667a50c8ea77f328bded76ca;p=akkoma
diff --git a/priv/static/packs/features/list_adder.js.map b/priv/static/packs/features/list_adder.js.map
index e8c5ee758..f3b671cad 100644
--- a/priv/static/packs/features/list_adder.js.map
+++ b/priv/static/packs/features/list_adder.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///app/javascript/seagate/sources/git/hacktivis.me/git/mastofe/app/javascript/mastodon/features/list_adder/components/list.js","webpack:///app/javascript/seagate/sources/git/hacktivis.me/git/mastofe/app/javascript/mastodon/features/list_adder/components/account.js","webpack:///app/javascript/seagate/sources/git/hacktivis.me/git/mastofe/app/javascript/mastodon/features/list_adder/index.js"],"names":["messages","defineMessages","remove","id","defaultMessage","add","List","connect","state","_ref","listId","added","list","get","getIn","includes","dispatch","_ref2","onRemove","removeFromListAdder","onAdd","addToListAdder","injectIntl","render","button","_this$props","this","props","intl","Object","jsx","icon_button","icon","title","formatMessage","onClick","className","ImmutablePureComponent","ImmutablePropTypes","map","isRequired","PropTypes","object","func","bool","Account","getAccount","makeGetAccount","accountId","account","avatar","size","display_name","getOrderedLists","createSelector","lists","toList","filter","item","sort","a","b","localeCompare","ListAdder","listIds","onInitialize","setupListAdder","onReset","resetListAdder","componentDidMount","componentWillUnmount","_this$props2","account_Account","new_list_form","ListId","list_List","string","onClose"],"mappings":"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","file":"features/list_adder.js","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport IconButton from '../../../components/icon_button';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport { removeFromListAdder, addToListAdder } 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 MapStateToProps = (state, { listId, added }) => ({\n list: state.get('lists').get(listId),\n added: typeof added === 'undefined' ? state.getIn(['listAdder', 'lists', 'items']).includes(listId) : added,\n});\n\nconst mapDispatchToProps = (dispatch, { listId }) => ({\n onRemove: () => dispatch(removeFromListAdder(listId)),\n onAdd: () => dispatch(addToListAdder(listId)),\n});\n\nexport default @connect(MapStateToProps, mapDispatchToProps)\n@injectIntl\nclass List extends ImmutablePureComponent {\n\n static propTypes = {\n list: 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 { list, intl, onRemove, onAdd, added } = this.props;\n\n let button;\n\n if (added) {\n button = ;\n } else {\n button = ;\n }\n\n return (\n
\n
\n
\n \n {list.get('title')}\n
\n\n
\n {button}\n
\n
\n
\n );\n }\n\n}\n","import React from 'react';\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 { injectIntl } from 'react-intl';\n\nconst makeMapStateToProps = () => {\n const getAccount = makeGetAccount();\n\n const mapStateToProps = (state, { accountId }) => ({\n account: getAccount(state, accountId),\n });\n\n return mapStateToProps;\n};\n\n\nexport default @connect(makeMapStateToProps)\n@injectIntl\nclass Account extends ImmutablePureComponent {\n\n static propTypes = {\n account: ImmutablePropTypes.map.isRequired,\n };\n\n render () {\n const { account } = this.props;\n return (\n \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 { setupListAdder, resetListAdder } from '../../actions/lists';\nimport { createSelector } from 'reselect';\nimport List from './components/list';\nimport Account from './components/account';\nimport NewListForm from '../lists/components/new_list_form';\n// hack\n\nconst 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\nconst mapStateToProps = state => ({\n listIds: getOrderedLists(state).map(list=>list.get('id')),\n});\n\nconst mapDispatchToProps = dispatch => ({\n onInitialize: accountId => dispatch(setupListAdder(accountId)),\n onReset: () => dispatch(resetListAdder()),\n});\n\nexport default @connect(mapStateToProps, mapDispatchToProps)\n@injectIntl\nclass ListAdder extends ImmutablePureComponent {\n\n static propTypes = {\n accountId: PropTypes.string.isRequired,\n onClose: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n onInitialize: PropTypes.func.isRequired,\n onReset: PropTypes.func.isRequired,\n listIds: ImmutablePropTypes.list.isRequired,\n };\n\n componentDidMount () {\n const { onInitialize, accountId } = this.props;\n onInitialize(accountId);\n }\n\n componentWillUnmount () {\n const { onReset } = this.props;\n onReset();\n }\n\n render () {\n const { accountId, listIds } = this.props;\n\n return (\n \n
\n\n
\n\n\n
\n {listIds.map(ListId =>
)}\n
\n
\n );\n }\n\n}\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/list_adder/components/list.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/list_adder/components/account.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/list_adder/index.js"],"names":["messages","defineMessages","remove","add","List","connect","state","listId","added","list","get","getIn","includes","dispatch","onRemove","removeFromListAdder","onAdd","addToListAdder","injectIntl","render","button","this","props","intl","icon","title","formatMessage","onClick","className","id","fixedWidth","ImmutablePureComponent","ImmutablePropTypes","map","isRequired","PropTypes","object","func","bool","Account","getAccount","makeGetAccount","accountId","account","size","getOrderedLists","createSelector","lists","toList","filter","item","sort","a","b","localeCompare","ListAdder","listIds","onInitialize","setupListAdder","onReset","resetListAdder","componentDidMount","componentWillUnmount","ListId","string","onClose"],"mappings":"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","file":"features/list_adder.js","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport IconButton from '../../../components/icon_button';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport { removeFromListAdder, addToListAdder } from '../../../actions/lists';\nimport Icon from 'mastodon/components/icon';\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 MapStateToProps = (state, { listId, added }) => ({\n list: state.get('lists').get(listId),\n added: typeof added === 'undefined' ? state.getIn(['listAdder', 'lists', 'items']).includes(listId) : added,\n});\n\nconst mapDispatchToProps = (dispatch, { listId }) => ({\n onRemove: () => dispatch(removeFromListAdder(listId)),\n onAdd: () => dispatch(addToListAdder(listId)),\n});\n\nexport default @connect(MapStateToProps, mapDispatchToProps)\n@injectIntl\nclass List extends ImmutablePureComponent {\n\n static propTypes = {\n list: 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 { list, intl, onRemove, onAdd, added } = this.props;\n\n let button;\n\n if (added) {\n button = ;\n } else {\n button = ;\n }\n\n return (\n \n
\n
\n \n {list.get('title')}\n
\n\n
\n {button}\n
\n
\n
\n );\n }\n\n}\n","import React from 'react';\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 { injectIntl } from 'react-intl';\n\nconst makeMapStateToProps = () => {\n const getAccount = makeGetAccount();\n\n const mapStateToProps = (state, { accountId }) => ({\n account: getAccount(state, accountId),\n });\n\n return mapStateToProps;\n};\n\n\nexport default @connect(makeMapStateToProps)\n@injectIntl\nclass Account extends ImmutablePureComponent {\n\n static propTypes = {\n account: ImmutablePropTypes.map.isRequired,\n };\n\n render () {\n const { account } = this.props;\n return (\n \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 { setupListAdder, resetListAdder } from '../../actions/lists';\nimport { createSelector } from 'reselect';\nimport List from './components/list';\nimport Account from './components/account';\nimport NewListForm from '../lists/components/new_list_form';\n// hack\n\nconst 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\nconst mapStateToProps = state => ({\n listIds: getOrderedLists(state).map(list=>list.get('id')),\n});\n\nconst mapDispatchToProps = dispatch => ({\n onInitialize: accountId => dispatch(setupListAdder(accountId)),\n onReset: () => dispatch(resetListAdder()),\n});\n\nexport default @connect(mapStateToProps, mapDispatchToProps)\n@injectIntl\nclass ListAdder extends ImmutablePureComponent {\n\n static propTypes = {\n accountId: PropTypes.string.isRequired,\n onClose: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n onInitialize: PropTypes.func.isRequired,\n onReset: PropTypes.func.isRequired,\n listIds: ImmutablePropTypes.list.isRequired,\n };\n\n componentDidMount () {\n const { onInitialize, accountId } = this.props;\n onInitialize(accountId);\n }\n\n componentWillUnmount () {\n const { onReset } = this.props;\n onReset();\n }\n\n render () {\n const { accountId, listIds } = this.props;\n\n return (\n \n
\n\n
\n\n\n
\n {listIds.map(ListId =>
)}\n
\n
\n );\n }\n\n}\n"],"sourceRoot":""}
\ No newline at end of file