{"version":3,"sources":["webpack:///app/javascript/home/mastodon/live/app/javascript/flavours/glitch/components/notification_purge_buttons.jsx","webpack:///app/javascript/home/mastodon/live/app/javascript/flavours/glitch/containers/notification_purge_buttons_container.js","webpack:///app/javascript/home/mastodon/live/app/javascript/flavours/glitch/features/notifications/components/filtered_notifications_banner.jsx","webpack:///app/javascript/home/mastodon/live/app/javascript/flavours/glitch/features/notifications/components/notifications_permission_banner.jsx","webpack:///app/javascript/home/mastodon/live/app/javascript/flavours/glitch/features/notifications/components/checkbox_with_label.jsx","webpack:///app/javascript/home/mastodon/live/app/javascript/flavours/glitch/features/notifications/components/clear_column_button.jsx","webpack:///app/javascript/home/mastodon/live/app/javascript/flavours/glitch/features/notifications/components/grant_permission_button.jsx","webpack:///app/javascript/home/mastodon/live/app/javascript/flavours/glitch/features/notifications/components/pill_bar_button.jsx","webpack:///app/javascript/home/mastodon/live/app/javascript/flavours/glitch/features/notifications/components/column_settings.jsx","webpack:///app/javascript/home/mastodon/live/app/javascript/flavours/glitch/features/notifications/containers/column_settings_container.js","webpack:///app/javascript/home/mastodon/live/app/javascript/flavours/glitch/features/notifications/components/filter_bar.jsx","webpack:///app/javascript/home/mastodon/live/app/javascript/flavours/glitch/features/notifications/containers/filter_bar_container.js","webpack:///app/javascript/home/mastodon/live/app/javascript/flavours/glitch/features/notifications/index.jsx"],"names":["messages","defineMessages","btnAll","id","defaultMessage","btnNone","btnInvert","btnApply","NotificationPurgeButtons","ImmutablePureComponent","render","intl","markNewForDelete","this","props","_jsx","className","onClick","onMarkAll","classNames","active","formatMessage","onMarkNone","onInvert","onDeleteMarked","Icon","icon","DeleteIcon","_defineProperty","PropTypes","func","isRequired","object","bool","injectIntl","clearMessage","clearConfirm","connect","state","getIn","mapDispatchToProps","dispatch","_ref","onEnterCleaningMode","yes","enterNotificationClearingMode","openModal","modalType","modalProps","message","confirm","onConfirm","deleteMarkedNotifications","markAllNotifications","FilteredNotificationsBanner","useDispatch","policy","useSelector","get","useEffect","fetchNotificationPolicy","interval","setInterval","clearInterval","Link","to","InventoryIcon","FormattedMessage","values","count","toCappedNumber","close","NotificationsPermissionBanner","PureComponent","constructor","arguments","requestBrowserPermission","changeSetting","IconButton","iconComponent","CloseIcon","handleClose","title","SettingsIcon","Button","handleClick","CheckboxWithLabel","checked","disabled","children","onChange","handleChange","useCallback","_ref2","target","Toggle","ClearColumnButton","tabIndex","DeleteForeverIcon","GrantPermissionButton","PillBarButton","settings","settingPath","prefix","label","filter","Boolean","join","ColumnSettings","path","onChangePolicy","pushSettings","onClear","alertsEnabled","browserSupport","browserPermission","onRequestNotificationPermission","notificationPolicy","unreadMarkersShowStr","filterBarShowStr","filterAdvancedStr","alertStr","showStr","soundStr","showPushSettings","pushStr","handleFilterNotFollowing","handleFilterNotFollowers","days","handleFilterNewAccounts","handleFilterPrivateMentions","role","SettingToggle","onPushChange","context","identity","permissions","PERMISSION_MANAGE_USERS","PERMISSION_MANAGE_REPORTS","permissionDenied","includes","window","Notification","permission","changePushNotifications","slice","showAlert","setFilter","clearNotifications","param","updateNotificationsPolicy","tooltips","mentions","favourites","boosts","polls","follows","statuses","FilterBar","notificationType","selectFilter","selectedFilter","advancedMode","ReplyAllIcon","StarIcon","RepeatIcon","InsertChartIcon","HomeIcon","PersonAddIcon","newActiveFilter","enterNotifCleaning","markAsRead","getExcludedTypes","createSelector","shows","ImmutableList","item","keys","getNotifications","showFilterBar","allowedType","excludedTypes","notifications","filterNot","Notifications","animatingNCD","maxId","expandNotifications","_debounce","last","leading","loadPending","scrollTopNotifications","columnId","removeColumn","addColumn","dir","moveColumn","column","scrollTop","c","elementIndex","findIndex","_selectChild","setState","notifCleaningActive","markNotificationsAsRead","submitMarkers","immediate","componentDidMount","mountNotifications","componentWillUnmount","handleLoadOlder","cancel","handleScrollToTop","handleScroll","unmountNotifications","index","align_top","container","node","element","querySelector","concat","offsetTop","scrollIntoView","clientHeight","offsetHeight","focus","isLoading","isUnread","multiColumn","hasMore","numPending","lastReadId","canMarkAsRead","needsNotificationPermission","pinned","emptyMessage","signedIn","scrollableContent","filterBarContainer","FilterBarContainer","scrollContainer","size","map","LoadGap","handleLoadGap","NotificationContainer","notification","accountId","onMoveUp","handleMoveUp","onMoveDown","handleMoveDown","unread","compareId","ScrollableList","scrollKey","trackScroll","showLoading","prepend","alwaysPrepend","onLoadMore","onLoadPending","handleLoadPending","onScrollToTop","onScroll","bindToDocument","NotSignedInIndicator","extraButtons","push","handleMarkAsRead","DoneAllIcon","notifCleaningButtonClassName","notifCleaningDrawerClassName","msgEnterNotifCleaning","notifCleaningDrawer","onTransitionEnd","handleTransitionEndNCD","NotificationPurgeButtonsContainer","_jsxs","Column","ref","setColumnRef","extraClasses","ColumnHeader","NotificationsIcon","onPin","handlePin","onMove","handleMove","handleHeaderClick","localSettings","extraButton","appendContent","ColumnSettingsContainer","Helmet","name","content","some"],"mappings":"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","file":"js/flavours/glitch/async/notifications-c431f15baf7146fb1a4a.chunk.js","sourcesContent":["/**\n * Buttons widget for controlling the notification clearing mode.\n * In idle state, the cleaning mode button is shown. When the mode is active,\n * a Confirm and Abort buttons are shown in its place.\n */\n\nimport PropTypes from 'prop-types';\n\nimport { defineMessages, injectIntl } from 'react-intl';\n\nimport classNames from 'classnames';\n\nimport ImmutablePureComponent from 'react-immutable-pure-component';\n\nimport DeleteIcon from '@/material-icons/400-24px/delete.svg?react';\nimport { Icon } from 'flavours/glitch/components/icon';\n\n\nconst messages = defineMessages({\n btnAll : { id: 'notification_purge.btn_all', defaultMessage: 'Select\\nall' },\n btnNone : { id: 'notification_purge.btn_none', defaultMessage: 'Select\\nnone' },\n btnInvert : { id: 'notification_purge.btn_invert', defaultMessage: 'Invert\\nselection' },\n btnApply : { id: 'notification_purge.btn_apply', defaultMessage: 'Clear\\nselected' },\n});\n\nclass NotificationPurgeButtons extends ImmutablePureComponent {\n\n static propTypes = {\n onDeleteMarked : PropTypes.func.isRequired,\n onMarkAll : PropTypes.func.isRequired,\n onMarkNone : PropTypes.func.isRequired,\n onInvert : PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n markNewForDelete: PropTypes.bool,\n };\n\n render () {\n const { intl, markNewForDelete } = this.props;\n\n //className='active'\n return (\n
\n \n\n \n\n \n\n \n
\n );\n }\n\n}\n\nexport default injectIntl(NotificationPurgeButtons);\n","// Package imports.\nimport { defineMessages, injectIntl } from 'react-intl';\n\nimport { connect } from 'react-redux';\n\n// Our imports.\nimport { openModal } from 'flavours/glitch/actions/modal';\nimport {\n deleteMarkedNotifications,\n enterNotificationClearingMode,\n markAllNotifications,\n} from 'flavours/glitch/actions/notifications';\nimport NotificationPurgeButtons from 'flavours/glitch/components/notification_purge_buttons';\n\nconst messages = defineMessages({\n clearMessage: { id: 'notifications.marked_clear_confirmation', defaultMessage: 'Are you sure you want to permanently clear all selected notifications?' },\n clearConfirm: { id: 'notifications.marked_clear', defaultMessage: 'Clear selected notifications' },\n});\n\nconst mapDispatchToProps = (dispatch, { intl }) => ({\n onEnterCleaningMode(yes) {\n dispatch(enterNotificationClearingMode(yes));\n },\n\n onDeleteMarked() {\n dispatch(openModal({\n modalType: 'CONFIRM',\n modalProps: {\n message: intl.formatMessage(messages.clearMessage),\n confirm: intl.formatMessage(messages.clearConfirm),\n onConfirm: () => dispatch(deleteMarkedNotifications()),\n },\n }));\n },\n\n onMarkAll() {\n dispatch(markAllNotifications(true));\n },\n\n onMarkNone() {\n dispatch(markAllNotifications(false));\n },\n\n onInvert() {\n dispatch(markAllNotifications(null));\n },\n});\n\nconst mapStateToProps = state => ({\n markNewForDelete: state.getIn(['notifications', 'markNewForDelete']),\n});\n\nexport default injectIntl(connect(mapStateToProps, mapDispatchToProps)(NotificationPurgeButtons));\n","import { useEffect } from 'react';\n\nimport { FormattedMessage } from 'react-intl';\n\nimport { Link } from 'react-router-dom';\n\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport InventoryIcon from '@/material-icons/400-24px/inventory_2.svg?react';\nimport { fetchNotificationPolicy } from 'flavours/glitch/actions/notifications';\nimport { Icon } from 'flavours/glitch/components/icon';\nimport { toCappedNumber } from 'flavours/glitch/utils/numbers';\n\nexport const FilteredNotificationsBanner = () => {\n const dispatch = useDispatch();\n const policy = useSelector(state => state.get('notificationPolicy'));\n\n useEffect(() => {\n dispatch(fetchNotificationPolicy());\n\n const interval = setInterval(() => {\n dispatch(fetchNotificationPolicy());\n }, 120000);\n\n return () => {\n clearInterval(interval);\n };\n }, [dispatch]);\n\n if (policy === null || policy.getIn(['summary', 'pending_notifications_count']) * 1 === 0) {\n return null;\n }\n\n return (\n \n \n\n
\n \n \n
\n\n
\n {toCappedNumber(policy.getIn(['summary', 'pending_notifications_count']))}\n
\n \n );\n};\n","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\n\nimport { connect } from 'react-redux';\n\nimport SettingsIcon from '@/material-icons/400-20px/settings.svg?react';\nimport CloseIcon from '@/material-icons/400-24px/close.svg?react';\nimport { requestBrowserPermission } from 'flavours/glitch/actions/notifications';\nimport { changeSetting } from 'flavours/glitch/actions/settings';\nimport { Button } from 'flavours/glitch/components/button';\nimport { Icon } from 'flavours/glitch/components/icon';\nimport { IconButton } from 'flavours/glitch/components/icon_button';\n\nconst messages = defineMessages({\n close: { id: 'lightbox.close', defaultMessage: 'Close' },\n});\n\nclass NotificationsPermissionBanner extends PureComponent {\n\n static propTypes = {\n dispatch: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n handleClick = () => {\n this.props.dispatch(requestBrowserPermission());\n };\n\n handleClose = () => {\n this.props.dispatch(changeSetting(['notifications', 'dismissPermissionBanner'], true));\n };\n\n render () {\n const { intl } = this.props;\n\n return (\n
\n
\n \n
\n\n

\n

}} />

\n \n
\n );\n }\n\n}\n\nexport default connect()(injectIntl(NotificationsPermissionBanner));\n","import PropTypes from 'prop-types';\nimport { useCallback } from 'react';\n\nimport Toggle from 'react-toggle';\n\nexport const CheckboxWithLabel = ({ checked, disabled, children, onChange }) => {\n const handleChange = useCallback(({ target }) => {\n onChange(target.checked);\n }, [onChange]);\n\n return (\n \n );\n};\n\nCheckboxWithLabel.propTypes = {\n checked: PropTypes.bool,\n disabled: PropTypes.bool,\n children: PropTypes.children,\n onChange: PropTypes.func,\n};\n","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { FormattedMessage } from 'react-intl';\n\nimport DeleteForeverIcon from '@/material-icons/400-24px/delete_forever.svg?react';\nimport { Icon } from 'flavours/glitch/components/icon';\n\nexport default class ClearColumnButton extends PureComponent {\n\n static propTypes = {\n onClick: PropTypes.func.isRequired,\n };\n\n render () {\n return (\n \n );\n }\n\n}\n","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { FormattedMessage } from 'react-intl';\n\nexport default class GrantPermissionButton extends PureComponent {\n\n static propTypes = {\n onClick: PropTypes.func.isRequired,\n };\n\n render () {\n return (\n \n );\n }\n\n}\n","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport classNames from 'classnames';\n\nimport ImmutablePropTypes from 'react-immutable-proptypes';\n\nexport default class PillBarButton extends PureComponent {\n\n static propTypes = {\n prefix: PropTypes.string,\n settings: ImmutablePropTypes.map.isRequired,\n settingPath: PropTypes.array.isRequired,\n label: PropTypes.node.isRequired,\n onChange: PropTypes.func.isRequired,\n disabled: PropTypes.bool,\n };\n\n onChange = () => {\n const { settings, settingPath } = this.props;\n this.props.onChange(settingPath, !settings.getIn(settingPath));\n };\n\n render () {\n const { prefix, settings, settingPath, label, disabled } = this.props;\n const id = ['setting-pillbar-button', prefix, ...settingPath].filter(Boolean).join('-');\n const active = settings.getIn(settingPath);\n\n return (\n \n {label}\n \n );\n }\n\n}\n","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { FormattedMessage } from 'react-intl';\n\nimport ImmutablePropTypes from 'react-immutable-proptypes';\n\nimport { PERMISSION_MANAGE_USERS, PERMISSION_MANAGE_REPORTS } from 'flavours/glitch/permissions';\n\nimport { CheckboxWithLabel } from './checkbox_with_label';\nimport ClearColumnButton from './clear_column_button';\nimport GrantPermissionButton from './grant_permission_button';\nimport PillBarButton from './pill_bar_button';\nimport SettingToggle from './setting_toggle';\n\nexport default class ColumnSettings extends PureComponent {\n\n static contextTypes = {\n identity: PropTypes.object,\n };\n\n static propTypes = {\n settings: ImmutablePropTypes.map.isRequired,\n pushSettings: ImmutablePropTypes.map.isRequired,\n onChange: PropTypes.func.isRequired,\n onClear: PropTypes.func.isRequired,\n onRequestNotificationPermission: PropTypes.func,\n alertsEnabled: PropTypes.bool,\n browserSupport: PropTypes.bool,\n browserPermission: PropTypes.string,\n notificationPolicy: ImmutablePropTypes.map,\n onChangePolicy: PropTypes.func.isRequired,\n };\n\n onPushChange = (path, checked) => {\n this.props.onChange(['push', ...path], checked);\n };\n\n handleFilterNotFollowing = checked => {\n this.props.onChangePolicy('filter_not_following', checked);\n };\n\n handleFilterNotFollowers = checked => {\n this.props.onChangePolicy('filter_not_followers', checked);\n };\n\n handleFilterNewAccounts = checked => {\n this.props.onChangePolicy('filter_new_accounts', checked);\n };\n\n handleFilterPrivateMentions = checked => {\n this.props.onChangePolicy('filter_private_mentions', checked);\n };\n\n render () {\n const { settings, pushSettings, onChange, onClear, alertsEnabled, browserSupport, browserPermission, onRequestNotificationPermission, notificationPolicy } = this.props;\n\n const unreadMarkersShowStr = ;\n const filterBarShowStr = ;\n const filterAdvancedStr = ;\n const alertStr = ;\n const showStr = ;\n const soundStr = ;\n\n const showPushSettings = pushSettings.get('browserSupport') && pushSettings.get('isSubscribed');\n const pushStr = showPushSettings && ;\n\n return (\n
\n {alertsEnabled && browserSupport && browserPermission === 'denied' && (\n \n )}\n\n
\n \n
\n\n {alertsEnabled && browserSupport && browserPermission === 'default' && (\n
\n \n \n \n
\n )}\n\n
\n

\n\n
\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n
\n
\n\n
\n

\n \n
\n \n \n
\n
\n\n
\n

\n \n

\n\n
\n \n
\n
\n\n
\n

\n\n
\n \n {showPushSettings && }\n \n \n
\n
\n\n
\n

\n\n
\n \n {showPushSettings && }\n \n \n
\n
\n\n
\n

\n\n
\n \n {showPushSettings && }\n \n \n
\n
\n\n
\n

\n\n
\n \n {showPushSettings && }\n \n \n
\n
\n\n
\n

\n\n
\n \n {showPushSettings && }\n \n \n
\n
\n\n
\n

\n\n
\n \n {showPushSettings && }\n \n \n
\n
\n\n
\n

\n\n
\n \n {showPushSettings && }\n \n \n
\n
\n\n
\n

\n\n
\n \n {showPushSettings && }\n \n \n
\n
\n\n {((this.context.identity.permissions & PERMISSION_MANAGE_USERS) === PERMISSION_MANAGE_USERS) && (\n
\n

\n\n
\n \n {showPushSettings && }\n \n \n
\n
\n )}\n\n {((this.context.identity.permissions & PERMISSION_MANAGE_REPORTS) === PERMISSION_MANAGE_REPORTS) && (\n
\n

\n\n
\n \n {showPushSettings && }\n \n \n
\n
\n )}\n
\n );\n }\n\n}\n","import { defineMessages, injectIntl } from 'react-intl';\n\nimport { connect } from 'react-redux';\n\nimport { showAlert } from '../../../actions/alerts';\nimport { openModal } from '../../../actions/modal';\nimport { setFilter, clearNotifications, requestBrowserPermission, updateNotificationsPolicy } from '../../../actions/notifications';\nimport { changeAlerts as changePushNotifications } from '../../../actions/push_notifications';\nimport { changeSetting } from '../../../actions/settings';\nimport ColumnSettings from '../components/column_settings';\n\nconst messages = defineMessages({\n clearMessage: { id: 'notifications.clear_confirmation', defaultMessage: 'Are you sure you want to permanently clear all your notifications?' },\n clearConfirm: { id: 'notifications.clear', defaultMessage: 'Clear notifications' },\n permissionDenied: { id: 'notifications.permission_denied_alert', defaultMessage: 'Desktop notifications can\\'t be enabled, as browser permission has been denied before' },\n});\n\nconst mapStateToProps = state => ({\n settings: state.getIn(['settings', 'notifications']),\n pushSettings: state.get('push_notifications'),\n alertsEnabled: state.getIn(['settings', 'notifications', 'alerts']).includes(true),\n browserSupport: state.getIn(['notifications', 'browserSupport']),\n browserPermission: state.getIn(['notifications', 'browserPermission']),\n notificationPolicy: state.get('notificationPolicy'),\n});\n\nconst mapDispatchToProps = (dispatch, { intl }) => ({\n\n onChange (path, checked) {\n if (path[0] === 'push') {\n if (checked && typeof window.Notification !== 'undefined' && Notification.permission !== 'granted') {\n dispatch(requestBrowserPermission((permission) => {\n if (permission === 'granted') {\n dispatch(changePushNotifications(path.slice(1), checked));\n } else {\n dispatch(showAlert({ message: messages.permissionDenied }));\n }\n }));\n } else {\n dispatch(changePushNotifications(path.slice(1), checked));\n }\n } else if (path[0] === 'quickFilter') {\n dispatch(changeSetting(['notifications', ...path], checked));\n dispatch(setFilter('all'));\n } else if (path[0] === 'alerts' && checked && typeof window.Notification !== 'undefined' && Notification.permission !== 'granted') {\n if (checked && typeof window.Notification !== 'undefined' && Notification.permission !== 'granted') {\n dispatch(requestBrowserPermission((permission) => {\n if (permission === 'granted') {\n dispatch(changeSetting(['notifications', ...path], checked));\n } else {\n dispatch(showAlert({ message: messages.permissionDenied }));\n }\n }));\n } else {\n dispatch(changeSetting(['notifications', ...path], checked));\n }\n } else {\n dispatch(changeSetting(['notifications', ...path], checked));\n }\n },\n\n onClear () {\n dispatch(openModal({\n modalType: 'CONFIRM',\n modalProps: {\n message: intl.formatMessage(messages.clearMessage),\n confirm: intl.formatMessage(messages.clearConfirm),\n onConfirm: () => dispatch(clearNotifications()),\n },\n }));\n },\n\n onRequestNotificationPermission () {\n dispatch(requestBrowserPermission());\n },\n\n onChangePolicy (param, checked) {\n dispatch(updateNotificationsPolicy({\n [param]: checked,\n }));\n },\n\n});\n\nexport default injectIntl(connect(mapStateToProps, mapDispatchToProps)(ColumnSettings));\n","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\n\nimport HomeIcon from '@/material-icons/400-24px/home-fill.svg?react';\nimport InsertChartIcon from '@/material-icons/400-24px/insert_chart.svg?react';\nimport PersonAddIcon from '@/material-icons/400-24px/person_add.svg?react';\nimport RepeatIcon from '@/material-icons/400-24px/repeat.svg?react';\nimport ReplyAllIcon from '@/material-icons/400-24px/reply_all.svg?react';\nimport StarIcon from '@/material-icons/400-24px/star.svg?react';\nimport { Icon } from 'flavours/glitch/components/icon';\n\nconst tooltips = defineMessages({\n mentions: { id: 'notifications.filter.mentions', defaultMessage: 'Mentions' },\n favourites: { id: 'notifications.filter.favourites', defaultMessage: 'Favorites' },\n boosts: { id: 'notifications.filter.boosts', defaultMessage: 'Boosts' },\n polls: { id: 'notifications.filter.polls', defaultMessage: 'Poll results' },\n follows: { id: 'notifications.filter.follows', defaultMessage: 'Follows' },\n statuses: { id: 'notifications.filter.statuses', defaultMessage: 'Updates from people you follow' },\n});\n\nclass FilterBar extends PureComponent {\n\n static propTypes = {\n selectFilter: PropTypes.func.isRequired,\n selectedFilter: PropTypes.string.isRequired,\n advancedMode: PropTypes.bool.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n onClick (notificationType) {\n return () => this.props.selectFilter(notificationType);\n }\n\n render () {\n const { selectedFilter, advancedMode, intl } = this.props;\n const renderedElement = !advancedMode ? (\n
\n \n \n \n \n \n \n
\n ) : (\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n );\n return renderedElement;\n }\n\n}\n\nexport default injectIntl(FilterBar);\n","import { connect } from 'react-redux';\n\nimport { setFilter } from '../../../actions/notifications';\nimport FilterBar from '../components/filter_bar';\n\nconst makeMapStateToProps = state => ({\n selectedFilter: state.getIn(['settings', 'notifications', 'quickFilter', 'active']),\n advancedMode: state.getIn(['settings', 'notifications', 'quickFilter', 'advanced']),\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n selectFilter (newActiveFilter) {\n dispatch(setFilter(newActiveFilter));\n },\n});\n\nexport default connect(makeMapStateToProps, mapDispatchToProps)(FilterBar);\n","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\n\nimport classNames from 'classnames';\nimport { Helmet } from 'react-helmet';\n\nimport { createSelector } from '@reduxjs/toolkit';\nimport { List as ImmutableList } from 'immutable';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { connect } from 'react-redux';\n\nimport { debounce } from 'lodash';\n\nimport DeleteForeverIcon from '@/material-icons/400-24px/delete_forever.svg?react';\nimport DoneAllIcon from '@/material-icons/400-24px/done_all.svg?react';\nimport NotificationsIcon from '@/material-icons/400-24px/notifications-fill.svg?react';\nimport { compareId } from 'flavours/glitch/compare_id';\nimport { Icon } from 'flavours/glitch/components/icon';\nimport { NotSignedInIndicator } from 'flavours/glitch/components/not_signed_in_indicator';\n\nimport { addColumn, removeColumn, moveColumn } from '../../actions/columns';\nimport { submitMarkers } from '../../actions/markers';\nimport {\n enterNotificationClearingMode,\n expandNotifications,\n scrollTopNotifications,\n loadPending,\n mountNotifications,\n unmountNotifications,\n markNotificationsAsRead,\n} from '../../actions/notifications';\nimport Column from '../../components/column';\nimport ColumnHeader from '../../components/column_header';\nimport { LoadGap } from '../../components/load_gap';\nimport ScrollableList from '../../components/scrollable_list';\nimport NotificationPurgeButtonsContainer from '../../containers/notification_purge_buttons_container';\n\nimport { FilteredNotificationsBanner } from './components/filtered_notifications_banner';\nimport NotificationsPermissionBanner from './components/notifications_permission_banner';\nimport ColumnSettingsContainer from './containers/column_settings_container';\nimport FilterBarContainer from './containers/filter_bar_container';\nimport NotificationContainer from './containers/notification_container';\n\nconst messages = defineMessages({\n title: { id: 'column.notifications', defaultMessage: 'Notifications' },\n enterNotifCleaning : { id: 'notification_purge.start', defaultMessage: 'Enter notification cleaning mode' },\n markAsRead : { id: 'notifications.mark_as_read', defaultMessage: 'Mark every notification as read' },\n});\n\nconst getExcludedTypes = createSelector([\n state => state.getIn(['settings', 'notifications', 'shows']),\n], (shows) => {\n return ImmutableList(shows.filter(item => !item).keys());\n});\n\nconst getNotifications = createSelector([\n state => state.getIn(['settings', 'notifications', 'quickFilter', 'show']),\n state => state.getIn(['settings', 'notifications', 'quickFilter', 'active']),\n getExcludedTypes,\n state => state.getIn(['notifications', 'items']),\n], (showFilterBar, allowedType, excludedTypes, notifications) => {\n if (!showFilterBar || allowedType === 'all') {\n // used if user changed the notification settings after loading the notifications from the server\n // otherwise a list of notifications will come pre-filtered from the backend\n // we need to turn it off for FilterBar in order not to block ourselves from seeing a specific category\n return notifications.filterNot(item => item !== null && excludedTypes.includes(item.get('type')));\n }\n return notifications.filter(item => item === null || allowedType === item.get('type'));\n});\n\nconst mapStateToProps = state => ({\n showFilterBar: state.getIn(['settings', 'notifications', 'quickFilter', 'show']),\n notifications: getNotifications(state),\n localSettings: state.get('local_settings'),\n isLoading: state.getIn(['notifications', 'isLoading'], 0) > 0,\n isUnread: state.getIn(['notifications', 'unread']) > 0 || state.getIn(['notifications', 'pendingItems']).size > 0,\n hasMore: state.getIn(['notifications', 'hasMore']),\n numPending: state.getIn(['notifications', 'pendingItems'], ImmutableList()).size,\n notifCleaningActive: state.getIn(['notifications', 'cleaningMode']),\n lastReadId: state.getIn(['settings', 'notifications', 'showUnread']) ? state.getIn(['notifications', 'readMarkerId']) : '0',\n canMarkAsRead: state.getIn(['settings', 'notifications', 'showUnread']) && state.getIn(['notifications', 'readMarkerId']) !== '0' && getNotifications(state).some(item => item !== null && compareId(item.get('id'), state.getIn(['notifications', 'readMarkerId'])) > 0),\n needsNotificationPermission: state.getIn(['settings', 'notifications', 'alerts']).includes(true) && state.getIn(['notifications', 'browserSupport']) && state.getIn(['notifications', 'browserPermission']) === 'default' && !state.getIn(['settings', 'notifications', 'dismissPermissionBanner']),\n});\n\n/* glitch */\nconst mapDispatchToProps = dispatch => ({\n onEnterCleaningMode(yes) {\n dispatch(enterNotificationClearingMode(yes));\n },\n dispatch,\n});\n\nclass Notifications extends PureComponent {\n\n static contextTypes = {\n identity: PropTypes.object,\n };\n\n static propTypes = {\n columnId: PropTypes.string,\n notifications: ImmutablePropTypes.list.isRequired,\n showFilterBar: PropTypes.bool.isRequired,\n dispatch: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n isLoading: PropTypes.bool,\n isUnread: PropTypes.bool,\n multiColumn: PropTypes.bool,\n hasMore: PropTypes.bool,\n numPending: PropTypes.number,\n localSettings: ImmutablePropTypes.map,\n notifCleaningActive: PropTypes.bool,\n onEnterCleaningMode: PropTypes.func,\n lastReadId: PropTypes.string,\n canMarkAsRead: PropTypes.bool,\n needsNotificationPermission: PropTypes.bool,\n };\n\n static defaultProps = {\n trackScroll: true,\n };\n\n state = {\n animatingNCD: false,\n };\n\n componentDidMount() {\n this.props.dispatch(mountNotifications());\n }\n\n componentWillUnmount () {\n this.handleLoadOlder.cancel();\n this.handleScrollToTop.cancel();\n this.handleScroll.cancel();\n // this.props.dispatch(scrollTopNotifications(false));\n this.props.dispatch(unmountNotifications());\n }\n\n handleLoadGap = (maxId) => {\n this.props.dispatch(expandNotifications({ maxId }));\n };\n\n handleLoadOlder = debounce(() => {\n const last = this.props.notifications.last();\n this.props.dispatch(expandNotifications({ maxId: last && last.get('id') }));\n }, 300, { leading: true });\n\n handleLoadPending = () => {\n this.props.dispatch(loadPending());\n };\n\n handleScrollToTop = debounce(() => {\n this.props.dispatch(scrollTopNotifications(true));\n }, 100);\n\n handleScroll = debounce(() => {\n this.props.dispatch(scrollTopNotifications(false));\n }, 100);\n\n handlePin = () => {\n const { columnId, dispatch } = this.props;\n\n if (columnId) {\n dispatch(removeColumn(columnId));\n } else {\n dispatch(addColumn('NOTIFICATIONS', {}));\n }\n };\n\n handleMove = (dir) => {\n const { columnId, dispatch } = this.props;\n dispatch(moveColumn(columnId, dir));\n };\n\n handleHeaderClick = () => {\n this.column.scrollTop();\n };\n\n setColumnRef = c => {\n this.column = c;\n };\n\n handleMoveUp = id => {\n const elementIndex = this.props.notifications.findIndex(item => item !== null && item.get('id') === id) - 1;\n this._selectChild(elementIndex, true);\n };\n\n handleMoveDown = id => {\n const elementIndex = this.props.notifications.findIndex(item => item !== null && item.get('id') === id) + 1;\n this._selectChild(elementIndex, false);\n };\n\n _selectChild (index, align_top) {\n const container = this.column.node;\n const element = container.querySelector(`article:nth-of-type(${index + 1}) .focusable`);\n\n if (element) {\n if (align_top && container.scrollTop > element.offsetTop) {\n element.scrollIntoView(true);\n } else if (!align_top && container.scrollTop + container.clientHeight < element.offsetTop + element.offsetHeight) {\n element.scrollIntoView(false);\n }\n element.focus();\n }\n }\n\n handleTransitionEndNCD = () => {\n this.setState({ animatingNCD: false });\n };\n\n onEnterCleaningMode = () => {\n this.setState({ animatingNCD: true });\n this.props.onEnterCleaningMode(!this.props.notifCleaningActive);\n };\n\n handleMarkAsRead = () => {\n this.props.dispatch(markNotificationsAsRead());\n this.props.dispatch(submitMarkers({ immediate: true }));\n };\n\n render () {\n const { intl, notifications, isLoading, isUnread, columnId, multiColumn, hasMore, numPending, showFilterBar, lastReadId, canMarkAsRead, needsNotificationPermission } = this.props;\n const { notifCleaningActive } = this.props;\n const { animatingNCD } = this.state;\n const pinned = !!columnId;\n const emptyMessage = ;\n const { signedIn } = this.context.identity;\n\n let scrollableContent = null;\n\n const filterBarContainer = (signedIn && showFilterBar)\n ? ()\n : null;\n\n if (isLoading && this.scrollableContent) {\n scrollableContent = this.scrollableContent;\n } else if (notifications.size > 0 || hasMore) {\n scrollableContent = notifications.map((item, index) => item === null ? (\n 0 ? notifications.getIn([index - 1, 'id']) : null}\n onClick={this.handleLoadGap}\n />\n ) : (\n 0}\n />\n ));\n } else {\n scrollableContent = null;\n }\n\n this.scrollableContent = scrollableContent;\n\n let scrollContainer;\n\n if (signedIn) {\n scrollContainer = (\n }\n alwaysPrepend\n emptyMessage={emptyMessage}\n onLoadMore={this.handleLoadOlder}\n onLoadPending={this.handleLoadPending}\n onScrollToTop={this.handleScrollToTop}\n onScroll={this.handleScroll}\n bindToDocument={!multiColumn}\n >\n {scrollableContent}\n \n );\n } else {\n scrollContainer = ;\n }\n\n const extraButtons = [];\n\n if (canMarkAsRead) {\n extraButtons.push(\n \n \n ,\n );\n }\n\n const notifCleaningButtonClassName = classNames('column-header__button', {\n 'active': notifCleaningActive,\n });\n\n const notifCleaningDrawerClassName = classNames('ncd column-header__collapsible', {\n 'collapsed': !notifCleaningActive,\n 'animating': animatingNCD,\n });\n\n const msgEnterNotifCleaning = intl.formatMessage(messages.enterNotifCleaning);\n\n extraButtons.push(\n \n \n ,\n );\n\n const notifCleaningDrawer = (\n
\n
\n {(notifCleaningActive || animatingNCD) ? () : null }\n
\n
\n );\n\n return (\n \n \n \n \n\n {filterBarContainer}\n\n \n\n {scrollContainer}\n\n \n {intl.formatMessage(messages.title)}\n \n \n \n );\n }\n\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(injectIntl(Notifications));\n"],"sourceRoot":""}