{"version":3,"sources":["webpack:///./app/javascript/mastodon/features/firehose/index.jsx"],"names":["messages","defineMessages","title","id","defaultMessage","ColumnSettings","dispatch","useAppDispatch","settings","useAppSelector","state","getIn","onChange","useCallback","key","checked","changeSetting","_jsx","className","SettingToggle","settingPath","label","FormattedMessage","Firehose","_ref","feedType","multiColumn","intl","useIntl","signedIn","useIdentity","columnRef","useRef","onlyMedia","hasUnread","handlePin","addColumn","other","onlyRemote","handleLoadMore","maxId","expandCommunityTimeline","expandPublicTimeline","handleHeaderClick","_columnRef$current","current","scrollTop","useEffect","disconnect","connectCommunityStream","connectPublicStream","_disconnect","prependBanner","DismissableBanner","values","domain","emptyMessage","_jsxs","Column","bindToDocument","ref","formatMessage","children","ColumnHeader","icon","iconComponent","PublicIcon","active","onPin","onClick","NavLink","exact","to","tagName","StatusListContainer","prepend","timelineId","onLoadMore","trackScroll","scrollKey","Helmet","name","content"],"mappings":"qRAuBA,MAAMA,EAAWC,YAAe,CAC9BC,MAAO,CAAEC,GAAG,kBAAoBC,eAAe,gBAG3CC,EAAiBA,KACrB,MAAMC,EAAWC,cACXC,EAAWC,aAAgBC,GAAUA,EAAMC,MAAM,CAAC,WAAY,eAC9DC,EAAWC,uBACf,CAACC,EAAKC,IAAYT,EAASU,YAAc,CAAC,cAAeF,GAAMC,KAC/D,CAACT,IAGH,OACEW,YAAA,OAAKC,UAAU,wBAAiB,EAC9BD,YAAA,oBACEA,YAAA,OAAKC,UAAU,6BAAsB,EACnCD,YAACE,IAAa,CACZX,SAAUA,EACVY,YAAa,CAAC,aACdR,SAAUA,EACVS,MAAOJ,YAACK,IAAgB,CAACnB,GAAE,uCAAwCC,eAAe,mBAIpF,EA6JKmB,UAzJEC,IAAgC,IAA/B,SAAEC,EAAQ,YAAEC,GAAaF,EACzC,MAAMlB,EAAWC,cACXoB,EAAOC,eACP,SAAEC,GAAaC,cACfC,EAAYC,iBAAO,MAEnBC,EAAYxB,aAAgBC,GAAUA,EAAMC,MAAM,CAAC,WAAY,WAAY,cAAc,KACzFuB,EAAYzB,aAAgBC,GAAUA,EAAMC,MAAM,CAAC,YAAa,GAAGc,IAAWQ,EAAY,SAAW,KAAM,UAAW,GAAK,IAE3HE,EAAYtB,uBAChB,KACE,OAAOY,GACP,IAAK,YACHnB,EAAS8B,YAAU,YAAa,CAAEC,MAAO,CAAEJ,gBAC3C,MACF,IAAK,SACH3B,EAAS8B,YAAU,SAAU,CAAEC,MAAO,CAAEJ,gBACxC,MACF,IAAK,gBACH3B,EAAS8B,YAAU,SAAU,CAAEC,MAAO,CAAEJ,YAAWK,YAAY,MAEjE,GAEF,CAAChC,EAAU2B,EAAWR,IAGlBc,EAAiB1B,uBACpB2B,IACC,OAAOf,GACP,IAAK,YACHnB,EAASmC,YAAwB,CAAED,QAAOP,eAC1C,MACF,IAAK,SACH3B,EAASoC,YAAqB,CAAEF,QAAOP,eACvC,MACF,IAAK,gBACH3B,EAASoC,YAAqB,CAAEF,QAAOP,YAAWK,YAAY,KAEhE,GAEF,CAAChC,EAAU2B,EAAWR,IAGlBkB,EAAoB9B,uBAAY,SAAA+B,EAAA,OAAuB,QAAvBA,EAAMb,EAAUc,eAAO,IAAAD,OAAA,EAAjBA,EAAmBE,WAAW,GAAE,IAE5EC,qBAAU,KACR,IAAIC,EAEJ,OAAOvB,GACP,IAAK,YACHnB,EAASmC,YAAwB,CAAER,eAC/BJ,IACFmB,EAAa1C,EAAS2C,YAAuB,CAAEhB,gBAEjD,MACF,IAAK,SACH3B,EAASoC,YAAqB,CAAET,eAC5BJ,IACFmB,EAAa1C,EAAS4C,YAAoB,CAAEjB,gBAE9C,MACF,IAAK,gBACH3B,EAASoC,YAAqB,CAAET,YAAWK,YAAY,KACnDT,IACFmB,EAAa1C,EAAS4C,YAAoB,CAAEjB,YAAWK,YAAY,MAKvE,MAAO,SAAAa,EAAA,OAAgB,QAAhBA,EAAMH,SAAU,IAAAG,OAAA,EAAVA,GAAc,IAC1B,CAAC7C,EAAUuB,EAAUJ,EAAUQ,IAElC,MAAMmB,EAA6B,cAAb3B,EACpBR,YAACoC,IAAiB,CAAClD,GAAG,2BAAoB,EACxCc,YAACK,IAAgB,CACfnB,GAAE,wCACFC,eAAe,4FACfkD,OAAQ,CAAEC,eAIdtC,YAACoC,IAAiB,CAAClD,GAAG,wBAAiB,EACrCc,YAACK,IAAgB,CACfnB,GAAE,qCACFC,eAAe,uGACfkD,OAAQ,CAAEC,eAKVC,EAA4B,cAAb/B,EACnBR,YAACK,IAAgB,CACfnB,GAAE,yBACFC,eAAe,mFAGjBa,YAACK,IAAgB,CACfnB,GAAE,sBACFC,eAAe,+GAInB,OACEqD,eAACC,IAAM,CAACC,gBAAiBjC,EAAakC,IAAK7B,EAAWV,MAAOM,EAAKkC,cAAc7D,EAASE,OAAO4D,SAAA,CAC9F7C,YAAC8C,IAAY,CACXC,KAAK,QACLC,cAAeC,IACfC,OAAQjC,EACRhC,MAAOyB,EAAKkC,cAAc7D,EAASE,OACnCkE,MAAOjC,EACPkC,QAAS1B,EACTjB,YAAaA,QAAY,EAEzBT,YAACZ,EAAc,KAGjBY,YAAA,OAAKC,UAAU,kCAA2B,EACxCD,YAACqD,IAAO,CAACC,OAAK,EAACC,GAAG,sBAAe,EAC/BvD,YAACK,IAAgB,CAACmD,QAAQ,MAAMtE,GAAE,iBAAkBC,eAAe,iBAGrEa,YAACqD,IAAO,CAACC,OAAK,EAACC,GAAG,uBAAgB,EAChCvD,YAACK,IAAgB,CAACmD,QAAQ,MAAMtE,GAAE,kBAAmBC,eAAe,mBAGtEa,YAACqD,IAAO,CAACC,OAAK,EAACC,GAAG,gBAAS,EACzBvD,YAACK,IAAgB,CAACmD,QAAQ,MAAMtE,GAAE,eAAgBC,eAAe,UAIrEa,YAACyD,IAAmB,CAClBC,QAASvB,EACTwB,WAAY,GAAGnD,IAAWQ,EAAY,SAAW,KACjD4C,WAAYtC,EACZuC,aAAW,EACXC,UAAU,WACVvB,aAAcA,EACdG,gBAAiBjC,IAGnBT,YAAC+D,IAAM,UACL/D,YAAA,kBAAQU,EAAKkC,cAAc7D,EAASE,QACpCe,YAAA,QAAMgE,KAAK,SAASC,QAAQ,eAEvB,C","file":"js/features/firehose-eac37915d6af40438469.chunk.js","sourcesContent":["import PropTypes from 'prop-types';\nimport { useRef, useCallback, useEffect } from 'react';\n\nimport { useIntl, defineMessages, FormattedMessage } from 'react-intl';\n\nimport { Helmet } from 'react-helmet';\nimport { NavLink } from 'react-router-dom';\n\nimport { useIdentity } from '@/mastodon/identity_context';\nimport PublicIcon from '@/material-icons/400-24px/public.svg?react';\nimport { addColumn } from 'mastodon/actions/columns';\nimport { changeSetting } from 'mastodon/actions/settings';\nimport { connectPublicStream, connectCommunityStream } from 'mastodon/actions/streaming';\nimport { expandPublicTimeline, expandCommunityTimeline } from 'mastodon/actions/timelines';\nimport { DismissableBanner } from 'mastodon/components/dismissable_banner';\nimport { domain } from 'mastodon/initial_state';\nimport { useAppDispatch, useAppSelector } from 'mastodon/store';\n\nimport Column from '../../components/column';\nimport ColumnHeader from '../../components/column_header';\nimport SettingToggle from '../notifications/components/setting_toggle';\nimport StatusListContainer from '../ui/containers/status_list_container';\n\nconst messages = defineMessages({\n title: { id: 'column.firehose', defaultMessage: 'Live feeds' },\n});\n\nconst ColumnSettings = () => {\n const dispatch = useAppDispatch();\n const settings = useAppSelector((state) => state.getIn(['settings', 'firehose']));\n const onChange = useCallback(\n (key, checked) => dispatch(changeSetting(['firehose', ...key], checked)),\n [dispatch],\n );\n\n return (\n
\n
\n
\n }\n />\n
\n
\n
\n );\n};\n\nconst Firehose = ({ feedType, multiColumn }) => {\n const dispatch = useAppDispatch();\n const intl = useIntl();\n const { signedIn } = useIdentity();\n const columnRef = useRef(null);\n\n const onlyMedia = useAppSelector((state) => state.getIn(['settings', 'firehose', 'onlyMedia'], false));\n const hasUnread = useAppSelector((state) => state.getIn(['timelines', `${feedType}${onlyMedia ? ':media' : ''}`, 'unread'], 0) > 0);\n\n const handlePin = useCallback(\n () => {\n switch(feedType) {\n case 'community':\n dispatch(addColumn('COMMUNITY', { other: { onlyMedia } }));\n break;\n case 'public':\n dispatch(addColumn('PUBLIC', { other: { onlyMedia } }));\n break;\n case 'public:remote':\n dispatch(addColumn('REMOTE', { other: { onlyMedia, onlyRemote: true } }));\n break;\n }\n },\n [dispatch, onlyMedia, feedType],\n );\n\n const handleLoadMore = useCallback(\n (maxId) => {\n switch(feedType) {\n case 'community':\n dispatch(expandCommunityTimeline({ maxId, onlyMedia }));\n break;\n case 'public':\n dispatch(expandPublicTimeline({ maxId, onlyMedia }));\n break;\n case 'public:remote':\n dispatch(expandPublicTimeline({ maxId, onlyMedia, onlyRemote: true }));\n break;\n }\n },\n [dispatch, onlyMedia, feedType],\n );\n\n const handleHeaderClick = useCallback(() => columnRef.current?.scrollTop(), []);\n\n useEffect(() => {\n let disconnect;\n\n switch(feedType) {\n case 'community':\n dispatch(expandCommunityTimeline({ onlyMedia }));\n if (signedIn) {\n disconnect = dispatch(connectCommunityStream({ onlyMedia }));\n }\n break;\n case 'public':\n dispatch(expandPublicTimeline({ onlyMedia }));\n if (signedIn) {\n disconnect = dispatch(connectPublicStream({ onlyMedia }));\n }\n break;\n case 'public:remote':\n dispatch(expandPublicTimeline({ onlyMedia, onlyRemote: true }));\n if (signedIn) {\n disconnect = dispatch(connectPublicStream({ onlyMedia, onlyRemote: true }));\n }\n break;\n }\n\n return () => disconnect?.();\n }, [dispatch, signedIn, feedType, onlyMedia]);\n\n const prependBanner = feedType === 'community' ? (\n \n \n \n ) : (\n \n \n \n );\n\n const emptyMessage = feedType === 'community' ? (\n \n ) : (\n \n );\n\n return (\n \n \n \n \n\n
\n \n \n \n\n \n \n \n\n \n \n \n
\n\n \n\n \n {intl.formatMessage(messages.title)}\n \n \n
\n );\n};\n\nFirehose.propTypes = {\n multiColumn: PropTypes.bool,\n feedType: PropTypes.string,\n};\n\nexport default Firehose;\n"],"sourceRoot":""}