Merging with develop
[akkoma] / priv / static / packs / flavours / glitch / async / notifications.js.map
index ec155e81e63514d7898ffe1f007805c7dbd89b0c..a3b1f969c9d0d889b597987dcbcf7ad3977270d4 100644 (file)
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///app/javascript/seagate/sources/git/hacktivis.me/git/mastofe/app/javascript/flavours/glitch/features/notifications/components/follow.js","webpack:///app/javascript/seagate/sources/git/hacktivis.me/git/mastofe/app/javascript/flavours/glitch/features/notifications/components/notification.js","webpack:///app/javascript/seagate/sources/git/hacktivis.me/git/mastofe/app/javascript/flavours/glitch/features/notifications/containers/notification_container.js","webpack:///app/javascript/seagate/sources/git/hacktivis.me/git/mastofe/app/javascript/flavours/glitch/features/notifications/components/clear_column_button.js","webpack:///app/javascript/seagate/sources/git/hacktivis.me/git/mastofe/app/javascript/flavours/glitch/features/notifications/components/column_settings.js","webpack:///app/javascript/seagate/sources/git/hacktivis.me/git/mastofe/app/javascript/flavours/glitch/features/notifications/containers/column_settings_container.js","webpack:///app/javascript/seagate/sources/git/hacktivis.me/git/mastofe/app/javascript/flavours/glitch/features/notifications/components/filter_bar.js","webpack:///app/javascript/seagate/sources/git/hacktivis.me/git/mastofe/app/javascript/flavours/glitch/features/notifications/containers/filter_bar_container.js","webpack:///app/javascript/seagate/sources/git/hacktivis.me/git/mastofe/app/javascript/flavours/glitch/features/notifications/index.js"],"names":["NotificationFollow","_this$props","_this","props","notification","onMoveUp","get","_this$props2","onMoveDown","handleOpenProfile","context","router","history","push","getIn","e","preventDefault","_this$props3","onMention","getHandlers","moveUp","this","handleMoveUp","moveDown","handleMoveDown","open","handleOpen","openProfile","mention","handleMention","reply","render","_this$props4","account","hidden","displayName","link","Object","jsx","permalink","className","href","title","to","dangerouslySetInnerHTML","__html","react_hotkeys_index_es","handlers","tabIndex","index_es","id","defaultMessage","values","name","account_container","withNote","overlay_container","ImmutablePureComponent","PropTypes","bool","string","isRequired","ImmutablePropTypes","map","Notification","getScrollPosition","updateScrollBottom","follow_NotificationFollow","status_container","containerId","contextType","withDismiss","prepend","muted","func","connect","getNotification","makeGetNotification","state","accountId","notifCleaning","dispatch","mentionCompose","ClearColumnButton","onClick","React","Component","ColumnSettings","path","checked","onChange","concat","settings","pushSettings","onClear","filterShowStr","filterAdvancedStr","alertStr","showStr","soundStr","showPushSettings","pushStr","pushMeta","clear_column_button_ClearColumnButton","role","aria-labelledby","setting_toggle","prefix","settingPath","label","meta","onPushChange","PureComponent","messages","defineMessages","clearMessage","clearConfirm","injectIntl","_ref","intl","changePushNotifications","slice","changeSetting","setFilter","openModal","message","formatMessage","confirm","onConfirm","clearNotifications","tooltips","mentions","favourites","boosts","follows","FilterBar","notificationType","selectFilter","selectedFilter","advancedMode","newActiveFilter","getNotifications","createSelector","ImmutableList","filter","item","keys","showFilterBar","allowedType","excludedTypes","notifications","filterNot","includes","Notifications","localSettings","isLoading","isUnread","hasMore","notifCleaningActive","onEnterCleaningMode","yes","enterNotificationClearingMode","onMount","mountNotifications","onUnmount","unmountNotifications","maxId","expandNotifications","debounce_default","last","leading","scrollTopNotifications","columnId","removeColumn","addColumn","dir","moveColumn","column","scrollTop","c","elementIndex","findIndex","_selectChild","index","element","node","querySelector","focus","componentDidMount","componentWillUnmount","_this2","shouldUpdateScroll","multiColumn","pinned","emptyMessage","scrollableContent","filterBarContainer","filter_bar_container","size","load_gap","disabled","handleLoadGap","notification_container","scrollContainer","scrollable_list","scrollKey","trackScroll","showLoading","onLoadMore","handleLoadOlder","onScrollToTop","handleScrollToTop","onScroll","handleScroll","react_default","a","createElement","ref","setColumnRef","extraClasses","column_header","icon","active","onPin","handlePin","onMove","handleMove","handleHeaderClick","column_settings_container"],"mappings":"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","file":"flavours/glitch/async/notifications.js","sourcesContent":["//  Package imports.\nimport React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport { FormattedMessage } from 'react-intl';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { HotKeys } from 'react-hotkeys';\n\n// Our imports.\nimport Permalink from 'flavours/glitch/components/permalink';\nimport AccountContainer from 'flavours/glitch/containers/account_container';\nimport NotificationOverlayContainer from '../containers/overlay_container';\n\nexport default class NotificationFollow extends ImmutablePureComponent {\n\n  static propTypes = {\n    hidden: PropTypes.bool,\n    id: PropTypes.string.isRequired,\n    account: ImmutablePropTypes.map.isRequired,\n    notification: ImmutablePropTypes.map.isRequired,\n  };\n\n  handleMoveUp = () => {\n    const { notification, onMoveUp } = this.props;\n    onMoveUp(notification.get('id'));\n  }\n\n  handleMoveDown = () => {\n    const { notification, onMoveDown } = this.props;\n    onMoveDown(notification.get('id'));\n  }\n\n  handleOpen = () => {\n    this.handleOpenProfile();\n  }\n\n  handleOpenProfile = () => {\n    const { notification } = this.props;\n    this.context.router.history.push(`/accounts/${notification.getIn(['account', 'id'])}`);\n  }\n\n  handleMention = e => {\n    e.preventDefault();\n\n    const { notification, onMention } = this.props;\n    onMention(notification.get('account'), this.context.router.history);\n  }\n\n  getHandlers () {\n    return {\n      moveUp: this.handleMoveUp,\n      moveDown: this.handleMoveDown,\n      open: this.handleOpen,\n      openProfile: this.handleOpenProfile,\n      mention: this.handleMention,\n      reply: this.handleMention,\n    };\n  }\n\n  render () {\n    const { account, notification, hidden } = this.props;\n\n    //  Links to the display name.\n    const displayName = account.get('display_name_html') || account.get('username');\n    const link = (\n      <bdi><Permalink\n        className='notification__display-name'\n        href={account.get('url')}\n        title={account.get('acct')}\n        to={`/accounts/${account.get('id')}`}\n        dangerouslySetInnerHTML={{ __html: displayName }}\n      /></bdi>\n    );\n\n    //  Renders.\n    return (\n      <HotKeys handlers={this.getHandlers()}>\n        <div className='notification notification-follow focusable' tabIndex='0'>\n          <div className='notification__message'>\n            <div className='notification__favourite-icon-wrapper'>\n              <i className='fa fa-fw fa-user-plus' />\n            </div>\n\n            <FormattedMessage\n              id='notification.follow'\n              defaultMessage='{name} followed you'\n              values={{ name: link }}\n            />\n          </div>\n\n          <AccountContainer hidden={hidden} id={account.get('id')} withNote={false} />\n          <NotificationOverlayContainer notification={notification} />\n        </div>\n      </HotKeys>\n    );\n  }\n\n}\n","//  Package imports.\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\n\n//  Our imports,\nimport StatusContainer from 'flavours/glitch/containers/status_container';\nimport NotificationFollow from './follow';\n\nexport default class Notification extends ImmutablePureComponent {\n\n  static propTypes = {\n    notification: ImmutablePropTypes.map.isRequired,\n    hidden: PropTypes.bool,\n    onMoveUp: PropTypes.func.isRequired,\n    onMoveDown: PropTypes.func.isRequired,\n    onMention: PropTypes.func.isRequired,\n    getScrollPosition: PropTypes.func,\n    updateScrollBottom: PropTypes.func,\n  };\n\n  render () {\n    const {\n      hidden,\n      notification,\n      onMoveDown,\n      onMoveUp,\n      onMention,\n      getScrollPosition,\n      updateScrollBottom,\n    } = this.props;\n\n    switch(notification.get('type')) {\n    case 'follow':\n      return (\n        <NotificationFollow\n          hidden={hidden}\n          id={notification.get('id')}\n          account={notification.get('account')}\n          notification={notification}\n          onMoveDown={onMoveDown}\n          onMoveUp={onMoveUp}\n          onMention={onMention}\n        />\n      );\n    case 'mention':\n      return (\n        <StatusContainer\n          containerId={notification.get('id')}\n          hidden={hidden}\n          id={notification.get('status')}\n          notification={notification}\n          onMoveDown={onMoveDown}\n          onMoveUp={onMoveUp}\n          onMention={onMention}\n          contextType='notifications'\n          getScrollPosition={getScrollPosition}\n          updateScrollBottom={updateScrollBottom}\n          withDismiss\n        />\n      );\n    case 'favourite':\n      return (\n        <StatusContainer\n          containerId={notification.get('id')}\n          hidden={hidden}\n          id={notification.get('status')}\n          account={notification.get('account')}\n          prepend='favourite'\n          muted\n          notification={notification}\n          onMoveDown={onMoveDown}\n          onMoveUp={onMoveUp}\n          onMention={onMention}\n          getScrollPosition={getScrollPosition}\n          updateScrollBottom={updateScrollBottom}\n          withDismiss\n        />\n      );\n    case 'reblog':\n      return (\n        <StatusContainer\n          containerId={notification.get('id')}\n          hidden={hidden}\n          id={notification.get('status')}\n          account={notification.get('account')}\n          prepend='reblog'\n          muted\n          notification={notification}\n          onMoveDown={onMoveDown}\n          onMoveUp={onMoveUp}\n          onMention={onMention}\n          getScrollPosition={getScrollPosition}\n          updateScrollBottom={updateScrollBottom}\n          withDismiss\n        />\n      );\n    default:\n      return null;\n    }\n  }\n\n}\n","//  Package imports.\nimport { connect } from 'react-redux';\n\n//  Our imports.\nimport { makeGetNotification } from 'flavours/glitch/selectors';\nimport Notification from '../components/notification';\nimport { mentionCompose } from 'flavours/glitch/actions/compose';\n\nconst makeMapStateToProps = () => {\n  const getNotification = makeGetNotification();\n\n  const mapStateToProps = (state, props) => ({\n    notification: getNotification(state, props.notification, props.accountId),\n    notifCleaning: state.getIn(['notifications', 'cleaningMode']),\n  });\n\n  return mapStateToProps;\n};\n\nconst mapDispatchToProps = dispatch => ({\n  onMention: (account, router) => {\n    dispatch(mentionCompose(account, router));\n  },\n});\n\nexport default connect(makeMapStateToProps, mapDispatchToProps)(Notification);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { FormattedMessage } from 'react-intl';\n\nexport default class ClearColumnButton extends React.Component {\n\n  static propTypes = {\n    onClick: PropTypes.func.isRequired,\n  };\n\n  render () {\n    return (\n      <button className='text-btn column-header__setting-btn' tabIndex='0' onClick={this.props.onClick}><i className='fa fa-eraser' /> <FormattedMessage id='notifications.clear' defaultMessage='Clear notifications' /></button>\n    );\n  }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { FormattedMessage } from 'react-intl';\nimport ClearColumnButton from './clear_column_button';\nimport SettingToggle from './setting_toggle';\n\nexport default class ColumnSettings extends React.PureComponent {\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  };\n\n  onPushChange = (path, checked) => {\n    this.props.onChange(['push', ...path], checked);\n  }\n\n  render () {\n    const { settings, pushSettings, onChange, onClear } = this.props;\n\n    const filterShowStr = <FormattedMessage id='notifications.column_settings.filter_bar.show' defaultMessage='Show' />;\n    const filterAdvancedStr = <FormattedMessage id='notifications.column_settings.filter_bar.advanced' defaultMessage='Display all categories' />;\n    const alertStr  = <FormattedMessage id='notifications.column_settings.alert' defaultMessage='Desktop notifications' />;\n    const showStr   = <FormattedMessage id='notifications.column_settings.show' defaultMessage='Show in column' />;\n    const soundStr  = <FormattedMessage id='notifications.column_settings.sound' defaultMessage='Play sound' />;\n\n    const showPushSettings = pushSettings.get('browserSupport') && pushSettings.get('isSubscribed');\n    const pushStr = showPushSettings && <FormattedMessage id='notifications.column_settings.push' defaultMessage='Push notifications' />;\n    const pushMeta = showPushSettings && <FormattedMessage id='notifications.column_settings.push_meta' defaultMessage='This device' />;\n\n    return (\n      <div>\n        <div className='column-settings__row'>\n          <ClearColumnButton onClick={onClear} />\n        </div>\n\n        <div role='group' aria-labelledby='notifications-filter-bar'>\n          <span id='notifications-filter-bar' className='column-settings__section'>\n            <FormattedMessage id='notifications.column_settings.filter_bar.category' defaultMessage='Quick filter bar' />\n          </span>\n          <div className='column-settings__row'>\n            <SettingToggle id='show-filter-bar' prefix='notifications' settings={settings} settingPath={['quickFilter', 'show']} onChange={onChange} label={filterShowStr} />\n            <SettingToggle id='show-filter-bar' prefix='notifications' settings={settings} settingPath={['quickFilter', 'advanced']} onChange={onChange} label={filterAdvancedStr} />\n          </div>\n        </div>\n\n        <div role='group' aria-labelledby='notifications-follow'>\n          <span id='notifications-follow' className='column-settings__section'><FormattedMessage id='notifications.column_settings.follow' defaultMessage='New followers:' /></span>\n\n          <div className='column-settings__row'>\n            <SettingToggle prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'follow']} onChange={onChange} label={alertStr} />\n            {showPushSettings && <SettingToggle prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'follow']} meta={pushMeta} onChange={this.onPushChange} label={pushStr} />}\n            <SettingToggle prefix='notifications' settings={settings} settingPath={['shows', 'follow']} onChange={onChange} label={showStr} />\n            <SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'follow']} onChange={onChange} label={soundStr} />\n          </div>\n        </div>\n\n        <div role='group' aria-labelledby='notifications-favourite'>\n          <span id='notifications-favourite' className='column-settings__section'><FormattedMessage id='notifications.column_settings.favourite' defaultMessage='Favourites:' /></span>\n\n          <div className='column-settings__row'>\n            <SettingToggle prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'favourite']} onChange={onChange} label={alertStr} />\n            {showPushSettings && <SettingToggle prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'favourite']} meta={pushMeta} onChange={this.onPushChange} label={pushStr} />}\n            <SettingToggle prefix='notifications' settings={settings} settingPath={['shows', 'favourite']} onChange={onChange} label={showStr} />\n            <SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'favourite']} onChange={onChange} label={soundStr} />\n          </div>\n        </div>\n\n        <div role='group' aria-labelledby='notifications-mention'>\n          <span id='notifications-mention' className='column-settings__section'><FormattedMessage id='notifications.column_settings.mention' defaultMessage='Mentions:' /></span>\n\n          <div className='column-settings__row'>\n            <SettingToggle prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'mention']} onChange={onChange} label={alertStr} />\n            {showPushSettings && <SettingToggle prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'mention']} meta={pushMeta} onChange={this.onPushChange} label={pushStr} />}\n            <SettingToggle prefix='notifications' settings={settings} settingPath={['shows', 'mention']} onChange={onChange} label={showStr} />\n            <SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'mention']} onChange={onChange} label={soundStr} />\n          </div>\n        </div>\n\n        <div role='group' aria-labelledby='notifications-reblog'>\n          <span id='notifications-reblog' className='column-settings__section'><FormattedMessage id='notifications.column_settings.reblog' defaultMessage='Boosts:' /></span>\n\n          <div className='column-settings__row'>\n            <SettingToggle prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'reblog']} onChange={onChange} label={alertStr} />\n            {showPushSettings && <SettingToggle prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'reblog']} meta={pushMeta} onChange={this.onPushChange} label={pushStr} />}\n            <SettingToggle prefix='notifications' settings={settings} settingPath={['shows', 'reblog']} onChange={onChange} label={showStr} />\n            <SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'reblog']} onChange={onChange} label={soundStr} />\n          </div>\n        </div>\n      </div>\n    );\n  }\n\n}\n","import { connect } from 'react-redux';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport ColumnSettings from '../components/column_settings';\nimport { changeSetting } from 'flavours/glitch/actions/settings';\nimport { setFilter } from 'flavours/glitch/actions/notifications';\nimport { clearNotifications } from 'flavours/glitch/actions/notifications';\nimport { changeAlerts as changePushNotifications } from 'flavours/glitch/actions/push_notifications';\nimport { openModal } from 'flavours/glitch/actions/modal';\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});\n\nconst mapStateToProps = state => ({\n  settings: state.getIn(['settings', 'notifications']),\n  pushSettings: state.get('push_notifications'),\n});\n\nconst mapDispatchToProps = (dispatch, { intl }) => ({\n\n  onChange (path, checked) {\n    if (path[0] === 'push') {\n      dispatch(changePushNotifications(path.slice(1), checked));\n    } else if (path[0] === 'quickFilter') {\n      dispatch(changeSetting(['notifications', ...path], checked));\n      dispatch(setFilter('all'));\n    } else {\n      dispatch(changeSetting(['notifications', ...path], checked));\n    }\n  },\n\n  onClear () {\n    dispatch(openModal('CONFIRM', {\n      message: intl.formatMessage(messages.clearMessage),\n      confirm: intl.formatMessage(messages.clearConfirm),\n      onConfirm: () => dispatch(clearNotifications()),\n    }));\n  },\n\n});\n\nexport default injectIntl(connect(mapStateToProps, mapDispatchToProps)(ColumnSettings));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\n\nconst tooltips = defineMessages({\n  mentions: { id: 'notifications.filter.mentions', defaultMessage: 'Mentions' },\n  favourites: { id: 'notifications.filter.favourites', defaultMessage: 'Favourites' },\n  boosts: { id: 'notifications.filter.boosts', defaultMessage: 'Boosts' },\n  follows: { id: 'notifications.filter.follows', defaultMessage: 'Follows' },\n});\n\nexport default @injectIntl\nclass FilterBar extends React.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      <div className='notification__filter-bar'>\n        <button\n          className={selectedFilter === 'all' ? 'active' : ''}\n          onClick={this.onClick('all')}\n        >\n          <FormattedMessage\n            id='notifications.filter.all'\n            defaultMessage='All'\n          />\n        </button>\n        <button\n          className={selectedFilter === 'mention' ? 'active' : ''}\n          onClick={this.onClick('mention')}\n        >\n          <FormattedMessage\n            id='notifications.filter.mentions'\n            defaultMessage='Mentions'\n          />\n        </button>\n      </div>\n    ) : (\n      <div className='notification__filter-bar'>\n        <button\n          className={selectedFilter === 'all' ? 'active' : ''}\n          onClick={this.onClick('all')}\n        >\n          <FormattedMessage\n            id='notifications.filter.all'\n            defaultMessage='All'\n          />\n        </button>\n        <button\n          className={selectedFilter === 'mention' ? 'active' : ''}\n          onClick={this.onClick('mention')}\n          title={intl.formatMessage(tooltips.mentions)}\n        >\n          <i className='fa fa-fw fa-at' />\n        </button>\n        <button\n          className={selectedFilter === 'favourite' ? 'active' : ''}\n          onClick={this.onClick('favourite')}\n          title={intl.formatMessage(tooltips.favourites)}\n        >\n          <i className='fa fa-fw fa-star' />\n        </button>\n        <button\n          className={selectedFilter === 'reblog' ? 'active' : ''}\n          onClick={this.onClick('reblog')}\n          title={intl.formatMessage(tooltips.boosts)}\n        >\n          <i className='fa fa-fw fa-retweet' />\n        </button>\n        <button\n          className={selectedFilter === 'follow' ? 'active' : ''}\n          onClick={this.onClick('follow')}\n          title={intl.formatMessage(tooltips.follows)}\n        >\n          <i className='fa fa-fw fa-user-plus' />\n        </button>\n      </div>\n    );\n    return renderedElement;\n  }\n\n}\n","import { connect } from 'react-redux';\nimport FilterBar from '../components/filter_bar';\nimport { setFilter } from '../../../actions/notifications';\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 React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport Column from 'flavours/glitch/components/column';\nimport ColumnHeader from 'flavours/glitch/components/column_header';\nimport {\n  enterNotificationClearingMode,\n  expandNotifications,\n  scrollTopNotifications,\n  mountNotifications,\n  unmountNotifications,\n} from 'flavours/glitch/actions/notifications';\nimport { addColumn, removeColumn, moveColumn } from 'flavours/glitch/actions/columns';\nimport NotificationContainer from './containers/notification_container';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport ColumnSettingsContainer from './containers/column_settings_container';\nimport FilterBarContainer from './containers/filter_bar_container';\nimport { createSelector } from 'reselect';\nimport { List as ImmutableList } from 'immutable';\nimport { debounce } from 'lodash';\nimport ScrollableList from 'flavours/glitch/components/scrollable_list';\nimport LoadGap from 'flavours/glitch/components/load_gap';\n\nconst messages = defineMessages({\n  title: { id: 'column.notifications', defaultMessage: 'Notifications' },\n});\n\nconst getNotifications = createSelector([\n  state => state.getIn(['settings', 'notifications', 'quickFilter', 'show']),\n  state => state.getIn(['settings', 'notifications', 'quickFilter', 'active']),\n  state => ImmutableList(state.getIn(['settings', 'notifications', 'shows']).filter(item => !item).keys()),\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'], true),\n  isUnread: state.getIn(['notifications', 'unread']) > 0,\n  hasMore: state.getIn(['notifications', 'hasMore']),\n  notifCleaningActive: state.getIn(['notifications', 'cleaningMode']),\n});\n\n/* glitch */\nconst mapDispatchToProps = dispatch => ({\n  onEnterCleaningMode(yes) {\n    dispatch(enterNotificationClearingMode(yes));\n  },\n  onMount() {\n    dispatch(mountNotifications());\n  },\n  onUnmount() {\n    dispatch(unmountNotifications());\n  },\n  dispatch,\n});\n\n@connect(mapStateToProps, mapDispatchToProps)\n@injectIntl\nexport default class Notifications extends React.PureComponent {\n\n  static propTypes = {\n    columnId: PropTypes.string,\n    notifications: ImmutablePropTypes.list.isRequired,\n    showFilterBar: PropTypes.bool.isRequired,\n    dispatch: PropTypes.func.isRequired,\n    shouldUpdateScroll: PropTypes.func,\n    intl: PropTypes.object.isRequired,\n    isLoading: PropTypes.bool,\n    isUnread: PropTypes.bool,\n    multiColumn: PropTypes.bool,\n    hasMore: PropTypes.bool,\n    localSettings: ImmutablePropTypes.map,\n    notifCleaningActive: PropTypes.bool,\n    onEnterCleaningMode: PropTypes.func,\n    onMount: PropTypes.func,\n    onUnmount: PropTypes.func,\n  };\n\n  static defaultProps = {\n    trackScroll: true,\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  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);\n  }\n\n  handleMoveDown = id => {\n    const elementIndex = this.props.notifications.findIndex(item => item !== null && item.get('id') === id) + 1;\n    this._selectChild(elementIndex);\n  }\n\n  _selectChild (index) {\n    const element = this.column.node.querySelector(`article:nth-of-type(${index + 1}) .focusable`);\n\n    if (element) {\n      element.focus();\n    }\n  }\n\n  componentDidMount () {\n    const { onMount } = this.props;\n    if (onMount) {\n      onMount();\n    }\n  }\n\n  componentWillUnmount () {\n    const { onUnmount } = this.props;\n    if (onUnmount) {\n      onUnmount();\n    }\n  }\n\n  render () {\n    const { intl, notifications, shouldUpdateScroll, isLoading, isUnread, columnId, multiColumn, hasMore, showFilterBar } = this.props;\n    const pinned = !!columnId;\n    const emptyMessage = <FormattedMessage id='empty_column.notifications' defaultMessage=\"You don't have any notifications yet. Interact with others to start the conversation.\" />;\n\n    let scrollableContent = null;\n\n    const filterBarContainer = showFilterBar\n      ? (<FilterBarContainer />)\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        <LoadGap\n          key={'gap:' + notifications.getIn([index + 1, 'id'])}\n          disabled={isLoading}\n          maxId={index > 0 ? notifications.getIn([index - 1, 'id']) : null}\n          onClick={this.handleLoadGap}\n        />\n      ) : (\n        <NotificationContainer\n          key={item.get('id')}\n          notification={item}\n          accountId={item.get('account')}\n          onMoveUp={this.handleMoveUp}\n          onMoveDown={this.handleMoveDown}\n        />\n      ));\n    } else {\n      scrollableContent = null;\n    }\n\n    this.scrollableContent = scrollableContent;\n\n    const scrollContainer = (\n      <ScrollableList\n        scrollKey={`notifications-${columnId}`}\n        trackScroll={!pinned}\n        isLoading={isLoading}\n        showLoading={isLoading && notifications.size === 0}\n        hasMore={hasMore}\n        emptyMessage={emptyMessage}\n        onLoadMore={this.handleLoadOlder}\n        onScrollToTop={this.handleScrollToTop}\n        onScroll={this.handleScroll}\n        shouldUpdateScroll={shouldUpdateScroll}\n      >\n        {scrollableContent}\n      </ScrollableList>\n    );\n\n    return (\n      <Column\n        ref={this.setColumnRef}\n        name='notifications'\n        extraClasses={this.props.notifCleaningActive ? 'notif-cleaning' : null}\n        label={intl.formatMessage(messages.title)}\n      >\n        <ColumnHeader\n          icon='bell'\n          active={isUnread}\n          title={intl.formatMessage(messages.title)}\n          onPin={this.handlePin}\n          onMove={this.handleMove}\n          onClick={this.handleHeaderClick}\n          pinned={pinned}\n          multiColumn={multiColumn}\n          localSettings={this.props.localSettings}\n          notifCleaning\n          notifCleaningActive={this.props.notifCleaningActive} // this is used to toggle the header text\n          onEnterCleaningMode={this.props.onEnterCleaningMode}\n        >\n          <ColumnSettingsContainer />\n        </ColumnHeader>\n        {filterBarContainer}\n        {scrollContainer}\n      </Column>\n    );\n  }\n\n}\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/notifications/components/follow.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/notifications/components/notification.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/notifications/containers/notification_container.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/notifications/components/clear_column_button.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/notifications/components/column_settings.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/notifications/containers/column_settings_container.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/notifications/components/filter_bar.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/notifications/containers/filter_bar_container.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/notifications/index.js"],"names":["NotificationFollow","_this$props","_this","props","notification","onMoveUp","get","_this$props2","onMoveDown","handleOpenProfile","context","router","history","push","getIn","e","preventDefault","_this$props3","onMention","getHandlers","moveUp","this","handleMoveUp","moveDown","handleMoveDown","open","handleOpen","openProfile","mention","handleMention","reply","render","_this$props4","account","hidden","displayName","link","Object","jsx","permalink","className","href","title","to","dangerouslySetInnerHTML","__html","react_hotkeys_index_es","handlers","tabIndex","index_es","id","defaultMessage","values","name","account_container","withNote","overlay_container","ImmutablePureComponent","PropTypes","bool","string","isRequired","ImmutablePropTypes","map","Notification","getScrollPosition","updateScrollBottom","follow_NotificationFollow","status_container","containerId","contextType","cachedMediaWidth","cacheMediaWidth","onUnmount","withDismiss","prepend","muted","func","number","connect","getNotification","makeGetNotification","state","accountId","notifCleaning","dispatch","mentionCompose","ClearColumnButton","onClick","React","Component","ColumnSettings","path","checked","onChange","concat","settings","pushSettings","onClear","filterShowStr","filterAdvancedStr","alertStr","showStr","soundStr","showPushSettings","pushStr","pushMeta","clear_column_button_ClearColumnButton","role","aria-labelledby","setting_toggle","prefix","settingPath","label","meta","onPushChange","PureComponent","messages","defineMessages","clearMessage","clearConfirm","injectIntl","_ref","intl","changePushNotifications","slice","changeSetting","setFilter","openModal","message","formatMessage","confirm","onConfirm","clearNotifications","tooltips","mentions","favourites","boosts","polls","follows","FilterBar","notificationType","selectFilter","selectedFilter","advancedMode","newActiveFilter","getNotifications","createSelector","ImmutableList","filter","item","keys","showFilterBar","allowedType","excludedTypes","notifications","filterNot","includes","Notifications","localSettings","isLoading","isUnread","hasMore","notifCleaningActive","onEnterCleaningMode","yes","enterNotificationClearingMode","onMount","mountNotifications","unmountNotifications","maxId","expandNotifications","debounce_default","last","leading","scrollTopNotifications","columnId","removeColumn","addColumn","dir","moveColumn","column","scrollTop","c","elementIndex","findIndex","_selectChild","index","element","node","querySelector","focus","componentDidMount","componentWillUnmount","_this2","shouldUpdateScroll","multiColumn","pinned","emptyMessage","scrollableContent","filterBarContainer","filter_bar_container","size","load_gap","disabled","handleLoadGap","notification_container","scrollContainer","scrollable_list","scrollKey","trackScroll","showLoading","onLoadMore","handleLoadOlder","onScrollToTop","handleScrollToTop","onScroll","handleScroll","react_default","a","createElement","ref","setColumnRef","extraClasses","column_header","icon","active","onPin","handlePin","onMove","handleMove","handleHeaderClick","column_settings_container"],"mappings":"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","file":"flavours/glitch/async/notifications.js","sourcesContent":["//  Package imports.\nimport React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport { FormattedMessage } from 'react-intl';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { HotKeys } from 'react-hotkeys';\n\n// Our imports.\nimport Permalink from 'flavours/glitch/components/permalink';\nimport AccountContainer from 'flavours/glitch/containers/account_container';\nimport NotificationOverlayContainer from '../containers/overlay_container';\n\nexport default class NotificationFollow extends ImmutablePureComponent {\n\n  static propTypes = {\n    hidden: PropTypes.bool,\n    id: PropTypes.string.isRequired,\n    account: ImmutablePropTypes.map.isRequired,\n    notification: ImmutablePropTypes.map.isRequired,\n  };\n\n  handleMoveUp = () => {\n    const { notification, onMoveUp } = this.props;\n    onMoveUp(notification.get('id'));\n  }\n\n  handleMoveDown = () => {\n    const { notification, onMoveDown } = this.props;\n    onMoveDown(notification.get('id'));\n  }\n\n  handleOpen = () => {\n    this.handleOpenProfile();\n  }\n\n  handleOpenProfile = () => {\n    const { notification } = this.props;\n    this.context.router.history.push(`/accounts/${notification.getIn(['account', 'id'])}`);\n  }\n\n  handleMention = e => {\n    e.preventDefault();\n\n    const { notification, onMention } = this.props;\n    onMention(notification.get('account'), this.context.router.history);\n  }\n\n  getHandlers () {\n    return {\n      moveUp: this.handleMoveUp,\n      moveDown: this.handleMoveDown,\n      open: this.handleOpen,\n      openProfile: this.handleOpenProfile,\n      mention: this.handleMention,\n      reply: this.handleMention,\n    };\n  }\n\n  render () {\n    const { account, notification, hidden } = this.props;\n\n    //  Links to the display name.\n    const displayName = account.get('display_name_html') || account.get('username');\n    const link = (\n      <bdi><Permalink\n        className='notification__display-name'\n        href={account.get('url')}\n        title={account.get('acct')}\n        to={`/accounts/${account.get('id')}`}\n        dangerouslySetInnerHTML={{ __html: displayName }}\n      /></bdi>\n    );\n\n    //  Renders.\n    return (\n      <HotKeys handlers={this.getHandlers()}>\n        <div className='notification notification-follow focusable' tabIndex='0'>\n          <div className='notification__message'>\n            <div className='notification__favourite-icon-wrapper'>\n              <i className='fa fa-fw fa-user-plus' />\n            </div>\n\n            <FormattedMessage\n              id='notification.follow'\n              defaultMessage='{name} followed you'\n              values={{ name: link }}\n            />\n          </div>\n\n          <AccountContainer hidden={hidden} id={account.get('id')} withNote={false} />\n          <NotificationOverlayContainer notification={notification} />\n        </div>\n      </HotKeys>\n    );\n  }\n\n}\n","//  Package imports.\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\n\n//  Our imports,\nimport StatusContainer from 'flavours/glitch/containers/status_container';\nimport NotificationFollow from './follow';\n\nexport default class Notification extends ImmutablePureComponent {\n\n  static propTypes = {\n    notification: ImmutablePropTypes.map.isRequired,\n    hidden: PropTypes.bool,\n    onMoveUp: PropTypes.func.isRequired,\n    onMoveDown: PropTypes.func.isRequired,\n    onMention: PropTypes.func.isRequired,\n    getScrollPosition: PropTypes.func,\n    updateScrollBottom: PropTypes.func,\n    cacheMediaWidth: PropTypes.func,\n    cachedMediaWidth: PropTypes.number,\n    onUnmount: PropTypes.func,\n  };\n\n  render () {\n    const {\n      hidden,\n      notification,\n      onMoveDown,\n      onMoveUp,\n      onMention,\n      getScrollPosition,\n      updateScrollBottom,\n    } = this.props;\n\n    switch(notification.get('type')) {\n    case 'follow':\n      return (\n        <NotificationFollow\n          hidden={hidden}\n          id={notification.get('id')}\n          account={notification.get('account')}\n          notification={notification}\n          onMoveDown={onMoveDown}\n          onMoveUp={onMoveUp}\n          onMention={onMention}\n        />\n      );\n    case 'mention':\n      return (\n        <StatusContainer\n          containerId={notification.get('id')}\n          hidden={hidden}\n          id={notification.get('status')}\n          notification={notification}\n          onMoveDown={onMoveDown}\n          onMoveUp={onMoveUp}\n          onMention={onMention}\n          contextType='notifications'\n          getScrollPosition={getScrollPosition}\n          updateScrollBottom={updateScrollBottom}\n          cachedMediaWidth={this.props.cachedMediaWidth}\n          cacheMediaWidth={this.props.cacheMediaWidth}\n          onUnmount={this.props.onUnmount}\n          withDismiss\n        />\n      );\n    case 'favourite':\n      return (\n        <StatusContainer\n          containerId={notification.get('id')}\n          hidden={hidden}\n          id={notification.get('status')}\n          account={notification.get('account')}\n          prepend='favourite'\n          muted\n          notification={notification}\n          onMoveDown={onMoveDown}\n          onMoveUp={onMoveUp}\n          onMention={onMention}\n          getScrollPosition={getScrollPosition}\n          updateScrollBottom={updateScrollBottom}\n          cachedMediaWidth={this.props.cachedMediaWidth}\n          cacheMediaWidth={this.props.cacheMediaWidth}\n          onUnmount={this.props.onUnmount}\n          withDismiss\n        />\n      );\n    case 'reblog':\n      return (\n        <StatusContainer\n          containerId={notification.get('id')}\n          hidden={hidden}\n          id={notification.get('status')}\n          account={notification.get('account')}\n          prepend='reblog'\n          muted\n          notification={notification}\n          onMoveDown={onMoveDown}\n          onMoveUp={onMoveUp}\n          onMention={onMention}\n          getScrollPosition={getScrollPosition}\n          updateScrollBottom={updateScrollBottom}\n          cachedMediaWidth={this.props.cachedMediaWidth}\n          cacheMediaWidth={this.props.cacheMediaWidth}\n          onUnmount={this.props.onUnmount}\n          withDismiss\n        />\n      );\n    case 'poll':\n      return (\n        <StatusContainer\n          containerId={notification.get('id')}\n          hidden={hidden}\n          id={notification.get('status')}\n          account={notification.get('account')}\n          prepend='poll'\n          muted\n          notification={notification}\n          onMoveDown={onMoveDown}\n          onMoveUp={onMoveUp}\n          onMention={onMention}\n          getScrollPosition={getScrollPosition}\n          updateScrollBottom={updateScrollBottom}\n          cachedMediaWidth={this.props.cachedMediaWidth}\n          cacheMediaWidth={this.props.cacheMediaWidth}\n          onUnmount={this.props.onUnmount}\n          withDismiss\n        />\n      );\n    default:\n      return null;\n    }\n  }\n\n}\n","//  Package imports.\nimport { connect } from 'react-redux';\n\n//  Our imports.\nimport { makeGetNotification } from 'flavours/glitch/selectors';\nimport Notification from '../components/notification';\nimport { mentionCompose } from 'flavours/glitch/actions/compose';\n\nconst makeMapStateToProps = () => {\n  const getNotification = makeGetNotification();\n\n  const mapStateToProps = (state, props) => ({\n    notification: getNotification(state, props.notification, props.accountId),\n    notifCleaning: state.getIn(['notifications', 'cleaningMode']),\n  });\n\n  return mapStateToProps;\n};\n\nconst mapDispatchToProps = dispatch => ({\n  onMention: (account, router) => {\n    dispatch(mentionCompose(account, router));\n  },\n});\n\nexport default connect(makeMapStateToProps, mapDispatchToProps)(Notification);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { FormattedMessage } from 'react-intl';\n\nexport default class ClearColumnButton extends React.Component {\n\n  static propTypes = {\n    onClick: PropTypes.func.isRequired,\n  };\n\n  render () {\n    return (\n      <button className='text-btn column-header__setting-btn' tabIndex='0' onClick={this.props.onClick}><i className='fa fa-eraser' /> <FormattedMessage id='notifications.clear' defaultMessage='Clear notifications' /></button>\n    );\n  }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { FormattedMessage } from 'react-intl';\nimport ClearColumnButton from './clear_column_button';\nimport SettingToggle from './setting_toggle';\n\nexport default class ColumnSettings extends React.PureComponent {\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  };\n\n  onPushChange = (path, checked) => {\n    this.props.onChange(['push', ...path], checked);\n  }\n\n  render () {\n    const { settings, pushSettings, onChange, onClear } = this.props;\n\n    const filterShowStr = <FormattedMessage id='notifications.column_settings.filter_bar.show' defaultMessage='Show' />;\n    const filterAdvancedStr = <FormattedMessage id='notifications.column_settings.filter_bar.advanced' defaultMessage='Display all categories' />;\n    const alertStr  = <FormattedMessage id='notifications.column_settings.alert' defaultMessage='Desktop notifications' />;\n    const showStr   = <FormattedMessage id='notifications.column_settings.show' defaultMessage='Show in column' />;\n    const soundStr  = <FormattedMessage id='notifications.column_settings.sound' defaultMessage='Play sound' />;\n\n    const showPushSettings = pushSettings.get('browserSupport') && pushSettings.get('isSubscribed');\n    const pushStr = showPushSettings && <FormattedMessage id='notifications.column_settings.push' defaultMessage='Push notifications' />;\n    const pushMeta = showPushSettings && <FormattedMessage id='notifications.column_settings.push_meta' defaultMessage='This device' />;\n\n    return (\n      <div>\n        <div className='column-settings__row'>\n          <ClearColumnButton onClick={onClear} />\n        </div>\n\n        <div role='group' aria-labelledby='notifications-filter-bar'>\n          <span id='notifications-filter-bar' className='column-settings__section'>\n            <FormattedMessage id='notifications.column_settings.filter_bar.category' defaultMessage='Quick filter bar' />\n          </span>\n          <div className='column-settings__row'>\n            <SettingToggle id='show-filter-bar' prefix='notifications' settings={settings} settingPath={['quickFilter', 'show']} onChange={onChange} label={filterShowStr} />\n            <SettingToggle id='show-filter-bar' prefix='notifications' settings={settings} settingPath={['quickFilter', 'advanced']} onChange={onChange} label={filterAdvancedStr} />\n          </div>\n        </div>\n\n        <div role='group' aria-labelledby='notifications-follow'>\n          <span id='notifications-follow' className='column-settings__section'><FormattedMessage id='notifications.column_settings.follow' defaultMessage='New followers:' /></span>\n\n          <div className='column-settings__row'>\n            <SettingToggle prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'follow']} onChange={onChange} label={alertStr} />\n            {showPushSettings && <SettingToggle prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'follow']} meta={pushMeta} onChange={this.onPushChange} label={pushStr} />}\n            <SettingToggle prefix='notifications' settings={settings} settingPath={['shows', 'follow']} onChange={onChange} label={showStr} />\n            <SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'follow']} onChange={onChange} label={soundStr} />\n          </div>\n        </div>\n\n        <div role='group' aria-labelledby='notifications-favourite'>\n          <span id='notifications-favourite' className='column-settings__section'><FormattedMessage id='notifications.column_settings.favourite' defaultMessage='Favourites:' /></span>\n\n          <div className='column-settings__row'>\n            <SettingToggle prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'favourite']} onChange={onChange} label={alertStr} />\n            {showPushSettings && <SettingToggle prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'favourite']} meta={pushMeta} onChange={this.onPushChange} label={pushStr} />}\n            <SettingToggle prefix='notifications' settings={settings} settingPath={['shows', 'favourite']} onChange={onChange} label={showStr} />\n            <SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'favourite']} onChange={onChange} label={soundStr} />\n          </div>\n        </div>\n\n        <div role='group' aria-labelledby='notifications-mention'>\n          <span id='notifications-mention' className='column-settings__section'><FormattedMessage id='notifications.column_settings.mention' defaultMessage='Mentions:' /></span>\n\n          <div className='column-settings__row'>\n            <SettingToggle prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'mention']} onChange={onChange} label={alertStr} />\n            {showPushSettings && <SettingToggle prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'mention']} meta={pushMeta} onChange={this.onPushChange} label={pushStr} />}\n            <SettingToggle prefix='notifications' settings={settings} settingPath={['shows', 'mention']} onChange={onChange} label={showStr} />\n            <SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'mention']} onChange={onChange} label={soundStr} />\n          </div>\n        </div>\n\n        <div role='group' aria-labelledby='notifications-reblog'>\n          <span id='notifications-reblog' className='column-settings__section'><FormattedMessage id='notifications.column_settings.reblog' defaultMessage='Boosts:' /></span>\n\n          <div className='column-settings__row'>\n            <SettingToggle prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'reblog']} onChange={onChange} label={alertStr} />\n            {showPushSettings && <SettingToggle prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'reblog']} meta={pushMeta} onChange={this.onPushChange} label={pushStr} />}\n            <SettingToggle prefix='notifications' settings={settings} settingPath={['shows', 'reblog']} onChange={onChange} label={showStr} />\n            <SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'reblog']} onChange={onChange} label={soundStr} />\n          </div>\n        </div>\n\n        <div role='group' aria-labelledby='notifications-poll'>\n          <span id='notifications-poll' className='column-settings__section'><FormattedMessage id='notifications.column_settings.poll' defaultMessage='Poll results:' /></span>\n\n          <div className='column-settings__row'>\n            <SettingToggle prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'poll']} onChange={onChange} label={alertStr} />\n            {showPushSettings && <SettingToggle prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'poll']} meta={pushMeta} onChange={this.onPushChange} label={pushStr} />}\n            <SettingToggle prefix='notifications' settings={settings} settingPath={['shows', 'poll']} onChange={onChange} label={showStr} />\n            <SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'poll']} onChange={onChange} label={soundStr} />\n          </div>\n        </div>\n      </div>\n    );\n  }\n\n}\n","import { connect } from 'react-redux';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport ColumnSettings from '../components/column_settings';\nimport { changeSetting } from 'flavours/glitch/actions/settings';\nimport { setFilter } from 'flavours/glitch/actions/notifications';\nimport { clearNotifications } from 'flavours/glitch/actions/notifications';\nimport { changeAlerts as changePushNotifications } from 'flavours/glitch/actions/push_notifications';\nimport { openModal } from 'flavours/glitch/actions/modal';\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});\n\nconst mapStateToProps = state => ({\n  settings: state.getIn(['settings', 'notifications']),\n  pushSettings: state.get('push_notifications'),\n});\n\nconst mapDispatchToProps = (dispatch, { intl }) => ({\n\n  onChange (path, checked) {\n    if (path[0] === 'push') {\n      dispatch(changePushNotifications(path.slice(1), checked));\n    } else if (path[0] === 'quickFilter') {\n      dispatch(changeSetting(['notifications', ...path], checked));\n      dispatch(setFilter('all'));\n    } else {\n      dispatch(changeSetting(['notifications', ...path], checked));\n    }\n  },\n\n  onClear () {\n    dispatch(openModal('CONFIRM', {\n      message: intl.formatMessage(messages.clearMessage),\n      confirm: intl.formatMessage(messages.clearConfirm),\n      onConfirm: () => dispatch(clearNotifications()),\n    }));\n  },\n\n});\n\nexport default injectIntl(connect(mapStateToProps, mapDispatchToProps)(ColumnSettings));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\n\nconst tooltips = defineMessages({\n  mentions: { id: 'notifications.filter.mentions', defaultMessage: 'Mentions' },\n  favourites: { id: 'notifications.filter.favourites', defaultMessage: 'Favourites' },\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});\n\nexport default @injectIntl\nclass FilterBar extends React.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      <div className='notification__filter-bar'>\n        <button\n          className={selectedFilter === 'all' ? 'active' : ''}\n          onClick={this.onClick('all')}\n        >\n          <FormattedMessage\n            id='notifications.filter.all'\n            defaultMessage='All'\n          />\n        </button>\n        <button\n          className={selectedFilter === 'mention' ? 'active' : ''}\n          onClick={this.onClick('mention')}\n        >\n          <FormattedMessage\n            id='notifications.filter.mentions'\n            defaultMessage='Mentions'\n          />\n        </button>\n      </div>\n    ) : (\n      <div className='notification__filter-bar'>\n        <button\n          className={selectedFilter === 'all' ? 'active' : ''}\n          onClick={this.onClick('all')}\n        >\n          <FormattedMessage\n            id='notifications.filter.all'\n            defaultMessage='All'\n          />\n        </button>\n        <button\n          className={selectedFilter === 'mention' ? 'active' : ''}\n          onClick={this.onClick('mention')}\n          title={intl.formatMessage(tooltips.mentions)}\n        >\n          <i className='fa fa-fw fa-at' />\n        </button>\n        <button\n          className={selectedFilter === 'favourite' ? 'active' : ''}\n          onClick={this.onClick('favourite')}\n          title={intl.formatMessage(tooltips.favourites)}\n        >\n          <i className='fa fa-fw fa-star' />\n        </button>\n        <button\n          className={selectedFilter === 'reblog' ? 'active' : ''}\n          onClick={this.onClick('reblog')}\n          title={intl.formatMessage(tooltips.boosts)}\n        >\n          <i className='fa fa-fw fa-retweet' />\n        </button>\n        <button\n          className={selectedFilter === 'poll' ? 'active' : ''}\n          onClick={this.onClick('poll')}\n          title={intl.formatMessage(tooltips.polls)}\n        >\n          <i className='fa fa-fw fa-tasks' />\n        </button>\n        <button\n          className={selectedFilter === 'follow' ? 'active' : ''}\n          onClick={this.onClick('follow')}\n          title={intl.formatMessage(tooltips.follows)}\n        >\n          <i className='fa fa-fw fa-user-plus' />\n        </button>\n      </div>\n    );\n    return renderedElement;\n  }\n\n}\n","import { connect } from 'react-redux';\nimport FilterBar from '../components/filter_bar';\nimport { setFilter } from '../../../actions/notifications';\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 React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport Column from 'flavours/glitch/components/column';\nimport ColumnHeader from 'flavours/glitch/components/column_header';\nimport {\n  enterNotificationClearingMode,\n  expandNotifications,\n  scrollTopNotifications,\n  mountNotifications,\n  unmountNotifications,\n} from 'flavours/glitch/actions/notifications';\nimport { addColumn, removeColumn, moveColumn } from 'flavours/glitch/actions/columns';\nimport NotificationContainer from './containers/notification_container';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport ColumnSettingsContainer from './containers/column_settings_container';\nimport FilterBarContainer from './containers/filter_bar_container';\nimport { createSelector } from 'reselect';\nimport { List as ImmutableList } from 'immutable';\nimport { debounce } from 'lodash';\nimport ScrollableList from 'flavours/glitch/components/scrollable_list';\nimport LoadGap from 'flavours/glitch/components/load_gap';\n\nconst messages = defineMessages({\n  title: { id: 'column.notifications', defaultMessage: 'Notifications' },\n});\n\nconst getNotifications = createSelector([\n  state => state.getIn(['settings', 'notifications', 'quickFilter', 'show']),\n  state => state.getIn(['settings', 'notifications', 'quickFilter', 'active']),\n  state => ImmutableList(state.getIn(['settings', 'notifications', 'shows']).filter(item => !item).keys()),\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'], true),\n  isUnread: state.getIn(['notifications', 'unread']) > 0,\n  hasMore: state.getIn(['notifications', 'hasMore']),\n  notifCleaningActive: state.getIn(['notifications', 'cleaningMode']),\n});\n\n/* glitch */\nconst mapDispatchToProps = dispatch => ({\n  onEnterCleaningMode(yes) {\n    dispatch(enterNotificationClearingMode(yes));\n  },\n  onMount() {\n    dispatch(mountNotifications());\n  },\n  onUnmount() {\n    dispatch(unmountNotifications());\n  },\n  dispatch,\n});\n\n@connect(mapStateToProps, mapDispatchToProps)\n@injectIntl\nexport default class Notifications extends React.PureComponent {\n\n  static propTypes = {\n    columnId: PropTypes.string,\n    notifications: ImmutablePropTypes.list.isRequired,\n    showFilterBar: PropTypes.bool.isRequired,\n    dispatch: PropTypes.func.isRequired,\n    shouldUpdateScroll: PropTypes.func,\n    intl: PropTypes.object.isRequired,\n    isLoading: PropTypes.bool,\n    isUnread: PropTypes.bool,\n    multiColumn: PropTypes.bool,\n    hasMore: PropTypes.bool,\n    localSettings: ImmutablePropTypes.map,\n    notifCleaningActive: PropTypes.bool,\n    onEnterCleaningMode: PropTypes.func,\n    onMount: PropTypes.func,\n    onUnmount: PropTypes.func,\n  };\n\n  static defaultProps = {\n    trackScroll: true,\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  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);\n  }\n\n  handleMoveDown = id => {\n    const elementIndex = this.props.notifications.findIndex(item => item !== null && item.get('id') === id) + 1;\n    this._selectChild(elementIndex);\n  }\n\n  _selectChild (index) {\n    const element = this.column.node.querySelector(`article:nth-of-type(${index + 1}) .focusable`);\n\n    if (element) {\n      element.focus();\n    }\n  }\n\n  componentDidMount () {\n    const { onMount } = this.props;\n    if (onMount) {\n      onMount();\n    }\n  }\n\n  componentWillUnmount () {\n    const { onUnmount } = this.props;\n    if (onUnmount) {\n      onUnmount();\n    }\n  }\n\n  render () {\n    const { intl, notifications, shouldUpdateScroll, isLoading, isUnread, columnId, multiColumn, hasMore, showFilterBar } = this.props;\n    const pinned = !!columnId;\n    const emptyMessage = <FormattedMessage id='empty_column.notifications' defaultMessage=\"You don't have any notifications yet. Interact with others to start the conversation.\" />;\n\n    let scrollableContent = null;\n\n    const filterBarContainer = showFilterBar\n      ? (<FilterBarContainer />)\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        <LoadGap\n          key={'gap:' + notifications.getIn([index + 1, 'id'])}\n          disabled={isLoading}\n          maxId={index > 0 ? notifications.getIn([index - 1, 'id']) : null}\n          onClick={this.handleLoadGap}\n        />\n      ) : (\n        <NotificationContainer\n          key={item.get('id')}\n          notification={item}\n          accountId={item.get('account')}\n          onMoveUp={this.handleMoveUp}\n          onMoveDown={this.handleMoveDown}\n        />\n      ));\n    } else {\n      scrollableContent = null;\n    }\n\n    this.scrollableContent = scrollableContent;\n\n    const scrollContainer = (\n      <ScrollableList\n        scrollKey={`notifications-${columnId}`}\n        trackScroll={!pinned}\n        isLoading={isLoading}\n        showLoading={isLoading && notifications.size === 0}\n        hasMore={hasMore}\n        emptyMessage={emptyMessage}\n        onLoadMore={this.handleLoadOlder}\n        onScrollToTop={this.handleScrollToTop}\n        onScroll={this.handleScroll}\n        shouldUpdateScroll={shouldUpdateScroll}\n      >\n        {scrollableContent}\n      </ScrollableList>\n    );\n\n    return (\n      <Column\n        ref={this.setColumnRef}\n        name='notifications'\n        extraClasses={this.props.notifCleaningActive ? 'notif-cleaning' : null}\n        label={intl.formatMessage(messages.title)}\n      >\n        <ColumnHeader\n          icon='bell'\n          active={isUnread}\n          title={intl.formatMessage(messages.title)}\n          onPin={this.handlePin}\n          onMove={this.handleMove}\n          onClick={this.handleHeaderClick}\n          pinned={pinned}\n          multiColumn={multiColumn}\n          localSettings={this.props.localSettings}\n          notifCleaning\n          notifCleaningActive={this.props.notifCleaningActive} // this is used to toggle the header text\n          onEnterCleaningMode={this.props.onEnterCleaningMode}\n        >\n          <ColumnSettingsContainer />\n        </ColumnHeader>\n        {filterBarContainer}\n        {scrollContainer}\n      </Column>\n    );\n  }\n\n}\n"],"sourceRoot":""}
\ No newline at end of file