{"version":3,"sources":["webpack:///./app/javascript/mastodon/features/following/index.js"],"names":["RemoteHint","url","resource","id","defaultMessage","Following","connect","state","params","acct","accountId","getIn","normalizeForLookup","remote","remoteUrl","isAccount","accountIds","hasMore","isLoading","suspended","hidden","getAccountHidden","blockedBy","ImmutablePureComponent","handleLoadMore","this","props","dispatch","expandFollowing","leading","_load","fetchAccount","fetchFollowing","componentDidMount","lookupAccount","componentDidUpdate","prevProps","render","multiColumn","emptyMessage","forceEmptyState","isEmpty","remoteMessage","scrollKey","onLoadMore","prepend","hideTabs","alwaysPrepend","append","bindToDocument","map","withNote","propTypes","PropTypes","shape","string","isRequired","func","ImmutablePropTypes","list","bool"],"mappings":"iVAyBA,MAuBMA,EAAa,QAAC,IAAEC,GAAK,SACzB,YAAC,IAAY,CAACA,IAAKA,EAAKC,SAAU,YAAC,IAAgB,CAACC,GAAG,kCAAkCC,eAAe,eACxG,IAOIC,EADUC,mBA/BQ,CAACC,EAAM,KAA+B,IAA5BC,QAAQ,KAAEC,EAAI,GAAEN,IAAM,EACtD,MAAMO,EAAYP,GAAMI,EAAMI,MAAM,CAAC,eAAgBC,YAAmBH,KAExE,OAAKC,EAME,CACLA,YACAG,SAAWN,EAAMI,MAAM,CAAC,WAAYD,EAAW,WAAaH,EAAMI,MAAM,CAAC,WAAYD,EAAW,cAChGI,UAAWP,EAAMI,MAAM,CAAC,WAAYD,EAAW,QAC/CK,YAAaR,EAAMI,MAAM,CAAC,WAAYD,IACtCM,WAAYT,EAAMI,MAAM,CAAC,aAAc,YAAaD,EAAW,UAC/DO,UAAWV,EAAMI,MAAM,CAAC,aAAc,YAAaD,EAAW,SAC9DQ,UAAWX,EAAMI,MAAM,CAAC,aAAc,YAAaD,EAAW,cAAc,GAC5ES,UAAWZ,EAAMI,MAAM,CAAC,WAAYD,EAAW,cAAc,GAC7DU,OAAQC,YAAiBd,EAAOG,GAChCY,UAAWf,EAAMI,MAAM,CAAC,gBAAiBD,EAAW,eAAe,IAf5D,CACLQ,WAAW,KA0BuB,IAAzB,cACSK,IAAwB,cAAD,yBAgD7CC,eAAiB,KAAS,KACxBC,KAAKC,MAAMC,SAASC,YAAgBH,KAAKC,MAAMhB,cAC9C,IAAK,CAAEmB,SAAS,IA7BnBC,QACE,MAAM,UAAEpB,EAAS,UAAEK,EAAS,SAAEY,GAAaF,KAAKC,MAE3CX,GAAWY,EAASI,YAAarB,IACtCiB,EAASK,YAAetB,IAG1BuB,oBACE,MAAQzB,QAAQ,KAAEC,GAAM,UAAEC,EAAS,SAAEiB,GAAaF,KAAKC,MAEnDhB,EACFe,KAAKK,QAELH,EAASO,YAAczB,IAI3B0B,mBAAoBC,GAClB,MAAQ5B,QAAQ,KAAEC,GAAM,UAAEC,EAAS,SAAEiB,GAAaF,KAAKC,MAEnDU,EAAU1B,YAAcA,GAAaA,EACvCe,KAAKK,QACIM,EAAU5B,OAAOC,OAASA,GACnCkB,EAASO,YAAczB,IAQ3B4B,SACE,MAAM,UAAE3B,EAAS,WAAEM,EAAU,QAAEC,EAAO,UAAEK,EAAS,UAAEP,EAAS,YAAEuB,EAAW,UAAEpB,EAAS,UAAEC,EAAS,OAAEC,EAAM,OAAEP,EAAM,UAAEC,GAAcW,KAAKC,MAEpI,IAAKX,EACH,OACE,YAAC,IAAM,UACL,YAAC,IAAgB,KAKvB,IAAKC,EACH,OACE,YAAC,IAAM,UACL,YAAC,IAAgB,KAKvB,IAAIuB,EAEJ,MAAMC,EAAkBlB,GAAaH,GAAaC,EAGhDmB,EADEpB,EACa,YAAC,IAAgB,CAAChB,GAAG,iCAAiCC,eAAe,sBAC3EgB,EACM,YAAC,IAAkB,CAACV,UAAWA,IACrCY,EACM,YAAC,IAAgB,CAACnB,GAAG,mCAAmCC,eAAe,wBAC7ES,GAAUG,EAAWyB,UACf,YAACzC,EAAU,CAACC,IAAKa,IAEjB,YAAC,IAAgB,CAACX,GAAG,wBAAwBC,eAAe,yCAG7E,MAAMsC,EAAgB7B,EAAS,YAACb,EAAU,CAACC,IAAKa,IAAgB,KAEhE,OACE,YAAC,IAAM,UACL,YAAC,IAAgB,CAACwB,YAAaA,IAE/B,YAAC,IAAc,CACbK,UAAU,YACV1B,SAAUuB,GAAmBvB,EAC7BC,UAAWA,EACX0B,WAAYnB,KAAKD,eACjBqB,QAAS,YAAC,IAAe,CAACnC,UAAWe,KAAKC,MAAMhB,UAAWoC,UAAQ,IACnEC,eAAa,EACbC,OAAQN,EACRH,aAAcA,EACdU,gBAAiBX,QAAY,EAE5BE,EAAkB,GAAKxB,EAAWkC,KAAI/C,GACrC,YAAC,IAAgB,CAAUA,GAAIA,EAAIgD,UAAU,GAAtBhD,SAOlC,EA9GQiD,UAAY,CACjB5C,OAAQ6C,IAAUC,MAAM,CACtB7C,KAAM4C,IAAUE,OAChBpD,GAAIkD,IAAUE,SACbC,WACH9C,UAAW2C,IAAUE,OACrB5B,SAAU0B,IAAUI,KAAKD,WACzBxC,WAAY0C,IAAmBC,KAC/B1C,QAASoC,IAAUO,KACnB1C,UAAWmC,IAAUO,KACrBtC,UAAW+B,IAAUO,KACrB7C,UAAWsC,IAAUO,KACrBzC,UAAWkC,IAAUO,KACrBxC,OAAQiC,IAAUO,KAClB/C,OAAQwC,IAAUO,KAClB9C,UAAWuC,IAAUE,OACrBjB,YAAae,IAAUO,MAnBa,EAoBrC","file":"js/features/following-d685882d7a860da176c4.chunk.js","sourcesContent":["import React from 'react';\nimport { connect } from 'react-redux';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { debounce } from 'lodash';\nimport LoadingIndicator from '../../components/loading_indicator';\nimport {\n lookupAccount,\n fetchAccount,\n fetchFollowing,\n expandFollowing,\n} from '../../actions/accounts';\nimport { FormattedMessage } from 'react-intl';\nimport AccountContainer from '../../containers/account_container';\nimport Column from '../ui/components/column';\nimport HeaderContainer from '../account_timeline/containers/header_container';\nimport ColumnBackButton from '../../components/column_back_button';\nimport ScrollableList from '../../components/scrollable_list';\nimport MissingIndicator from 'mastodon/components/missing_indicator';\nimport TimelineHint from 'mastodon/components/timeline_hint';\nimport LimitedAccountHint from '../account_timeline/components/limited_account_hint';\nimport { getAccountHidden } from 'mastodon/selectors';\nimport { normalizeForLookup } from 'mastodon/reducers/accounts_map';\n\nconst mapStateToProps = (state, { params: { acct, id } }) => {\n const accountId = id || state.getIn(['accounts_map', normalizeForLookup(acct)]);\n\n if (!accountId) {\n return {\n isLoading: true,\n };\n }\n\n return {\n accountId,\n remote: !!(state.getIn(['accounts', accountId, 'acct']) !== state.getIn(['accounts', accountId, 'username'])),\n remoteUrl: state.getIn(['accounts', accountId, 'url']),\n isAccount: !!state.getIn(['accounts', accountId]),\n accountIds: state.getIn(['user_lists', 'following', accountId, 'items']),\n hasMore: !!state.getIn(['user_lists', 'following', accountId, 'next']),\n isLoading: state.getIn(['user_lists', 'following', accountId, 'isLoading'], true),\n suspended: state.getIn(['accounts', accountId, 'suspended'], false),\n hidden: getAccountHidden(state, accountId),\n blockedBy: state.getIn(['relationships', accountId, 'blocked_by'], false),\n };\n};\n\nconst RemoteHint = ({ url }) => (\n } />\n);\n\nRemoteHint.propTypes = {\n url: PropTypes.string.isRequired,\n};\n\nexport default @connect(mapStateToProps)\nclass Following extends ImmutablePureComponent {\n\n static propTypes = {\n params: PropTypes.shape({\n acct: PropTypes.string,\n id: PropTypes.string,\n }).isRequired,\n accountId: PropTypes.string,\n dispatch: PropTypes.func.isRequired,\n accountIds: ImmutablePropTypes.list,\n hasMore: PropTypes.bool,\n isLoading: PropTypes.bool,\n blockedBy: PropTypes.bool,\n isAccount: PropTypes.bool,\n suspended: PropTypes.bool,\n hidden: PropTypes.bool,\n remote: PropTypes.bool,\n remoteUrl: PropTypes.string,\n multiColumn: PropTypes.bool,\n };\n\n _load () {\n const { accountId, isAccount, dispatch } = this.props;\n\n if (!isAccount) dispatch(fetchAccount(accountId));\n dispatch(fetchFollowing(accountId));\n }\n\n componentDidMount () {\n const { params: { acct }, accountId, dispatch } = this.props;\n\n if (accountId) {\n this._load();\n } else {\n dispatch(lookupAccount(acct));\n }\n }\n\n componentDidUpdate (prevProps) {\n const { params: { acct }, accountId, dispatch } = this.props;\n\n if (prevProps.accountId !== accountId && accountId) {\n this._load();\n } else if (prevProps.params.acct !== acct) {\n dispatch(lookupAccount(acct));\n }\n }\n\n handleLoadMore = debounce(() => {\n this.props.dispatch(expandFollowing(this.props.accountId));\n }, 300, { leading: true });\n\n render () {\n const { accountId, accountIds, hasMore, blockedBy, isAccount, multiColumn, isLoading, suspended, hidden, remote, remoteUrl } = this.props;\n\n if (!isAccount) {\n return (\n \n \n \n );\n }\n\n if (!accountIds) {\n return (\n \n \n \n );\n }\n\n let emptyMessage;\n\n const forceEmptyState = blockedBy || suspended || hidden;\n\n if (suspended) {\n emptyMessage = ;\n } else if (hidden) {\n emptyMessage = ;\n } else if (blockedBy) {\n emptyMessage = ;\n } else if (remote && accountIds.isEmpty()) {\n emptyMessage = ;\n } else {\n emptyMessage = ;\n }\n\n const remoteMessage = remote ? : null;\n\n return (\n \n \n\n }\n alwaysPrepend\n append={remoteMessage}\n emptyMessage={emptyMessage}\n bindToDocument={!multiColumn}\n >\n {forceEmptyState ? [] : accountIds.map(id =>\n ,\n )}\n \n \n );\n }\n\n}\n"],"sourceRoot":""}