summaryrefslogtreecommitdiff
path: root/priv/static/packs/flavours/glitch/async/notifications.js.map
blob: 3402276457e41838e7c51b6bbc64fa2bd383b17f (plain)
1
{"version":3,"sources":["webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/notifications/components/follow.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/notifications/components/follow_request.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/notifications/containers/follow_request_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/notifications/components/notification.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/notifications/containers/notification_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/notifications/components/clear_column_button.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/notifications/components/column_settings.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/notifications/containers/column_settings_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/notifications/components/filter_bar.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/notifications/containers/filter_bar_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/notifications/index.js"],"names":["NotificationFollow","props","notification","onMoveUp","get","onMoveDown","handleOpenProfile","context","router","history","push","getIn","e","preventDefault","onMention","getHandlers","moveUp","this","handleMoveUp","moveDown","handleMoveDown","open","handleOpen","openProfile","mention","handleMention","reply","render","account","hidden","displayName","link","className","href","title","to","dangerouslySetInnerHTML","__html","handlers","tabIndex","fixedWidth","id","defaultMessage","values","name","withNote","ImmutablePureComponent","PropTypes","bool","string","isRequired","ImmutablePropTypes","map","messages","defineMessages","authorize","reject","FollowRequest","injectIntl","intl","onAuthorize","onReject","size","formatMessage","icon","onClick","func","object","connect","dispatch","authorizeFollowRequest","rejectFollowRequest","Notification","getScrollPosition","updateScrollBottom","containerId","contextType","cachedMediaWidth","cacheMediaWidth","onUnmount","withDismiss","prepend","muted","number","getNotification","makeGetNotification","state","accountId","notifCleaning","mentionCompose","ClearColumnButton","React","Component","ColumnSettings","path","checked","onChange","settings","pushSettings","onClear","filterShowStr","filterAdvancedStr","alertStr","showStr","soundStr","showPushSettings","pushStr","pushMeta","role","aria-labelledby","prefix","settingPath","label","meta","onPushChange","PureComponent","clearMessage","clearConfirm","changePushNotifications","slice","changeSetting","setFilter","openModal","message","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","numPending","notifCleaningActive","onEnterCleaningMode","yes","enterNotificationClearingMode","onMount","mountNotifications","unmountNotifications","maxId","expandNotifications","last","leading","loadPending","scrollTopNotifications","columnId","removeColumn","addColumn","dir","moveColumn","column","scrollTop","c","elementIndex","findIndex","_selectChild","index","align_top","container","node","element","querySelector","offsetTop","scrollIntoView","clientHeight","offsetHeight","focus","componentDidMount","componentWillUnmount","shouldUpdateScroll","multiColumn","pinned","emptyMessage","scrollableContent","filterBarContainer","disabled","handleLoadGap","scrollContainer","scrollKey","trackScroll","showLoading","onLoadMore","handleLoadOlder","onLoadPending","handleLoadPending","onScrollToTop","handleScrollToTop","onScroll","handleScroll","bindToDocument","ref","setColumnRef","extraClasses","active","onPin","handlePin","onMove","handleMove","handleHeaderClick"],"mappings":"6TAcqBA,E,8LASJ,WAAO,IAAD,EACgB,EAAKC,MAAhCC,EADW,EACXA,cACRC,EAFmB,EACGA,UACbD,EAAaE,IAAI,U,6CAGX,WAAO,IAAD,EACgB,EAAKH,MAAlCC,EADa,EACbA,cACRG,EAFqB,EACCA,YACXH,EAAaE,IAAI,U,yCAGjB,WACX,EAAKE,uB,gDAGa,WAAO,IACjBJ,EAAiB,EAAKD,MAAtBC,aACR,EAAKK,QAAQC,OAAOC,QAAQC,KAA5B,aAA8CR,EAAaS,MAAM,CAAC,UAAW,W,4CAG/D,SAAAC,GACdA,EAAEC,iBADiB,MAGiB,EAAKZ,MAAjCC,EAHW,EAGXA,cACRY,EAJmB,EAGGA,WACZZ,EAAaE,IAAI,WAAY,EAAKG,QAAQC,OAAOC,Y,8CAG7DM,YAAA,WACE,MAAO,CACLC,OAAQC,KAAKC,aACbC,SAAUF,KAAKG,eACfC,KAAMJ,KAAKK,WACXC,YAAaN,KAAKX,kBAClBkB,QAASP,KAAKQ,cACdC,MAAOT,KAAKQ,gB,EAIhBE,OAAA,WAAW,IAAD,EACkCV,KAAKhB,MAAvC2B,EADA,EACAA,QAAS1B,EADT,EACSA,aAAc2B,EADvB,EACuBA,OAGzBC,EAAcF,EAAQxB,IAAI,sBAAwBwB,EAAQxB,IAAI,YAC9D2B,EACJ,4BAAK,YAAC,IAAD,CACHC,UAAU,6BACVC,KAAML,EAAQxB,IAAI,OAClB8B,MAAON,EAAQxB,IAAI,QACnB+B,GAAE,aAAeP,EAAQxB,IAAI,MAC7BgC,wBAAyB,CAAEC,OAAQP,MAKvC,OACE,YAAC,UAAD,CAASQ,SAAUrB,KAAKF,oBAAxB,EACE,mBAAKiB,UAAU,6CAA6CO,SAAS,UAArE,EACE,mBAAKP,UAAU,8BAAf,EACE,mBAAKA,UAAU,6CAAf,EACE,YAAC,IAAD,CAAMQ,YAAU,EAACC,GAAG,eAGtB,YAAC,IAAD,CACEA,GAAG,sBACHC,eAAe,sBACfC,OAAQ,CAAEC,KAAMb,MAIpB,YAAC,IAAD,CAAkBF,OAAQA,EAAQY,GAAIb,EAAQxB,IAAI,MAAOyC,UAAU,IACnE,YAAC,IAAD,CAA8B3C,aAAcA,O,GA9EN4C,K,YAA3B9C,E,YAEA,CACjB6B,OAAQkB,IAAUC,KAClBP,GAAIM,IAAUE,OAAOC,WACrBtB,QAASuB,IAAmBC,IAAIF,WAChChD,aAAciD,IAAmBC,IAAIF,a,kCCPnCG,EAAWC,YAAe,CAC9BC,UAAU,CAAD,0DACTC,OAAO,CAAD,sDAIFC,EADUC,a,kMAWC,WAAO,IAAD,EACgB,EAAKzD,MAAhCC,EADW,EACXA,cACRC,EAFmB,EACGA,UACbD,EAAaE,IAAI,U,6CAGX,WAAO,IAAD,EACgB,EAAKH,MAAlCC,EADa,EACbA,cACRG,EAFqB,EACCA,YACXH,EAAaE,IAAI,U,yCAGjB,WACX,EAAKE,uB,gDAGa,WAAO,IACjBJ,EAAiB,EAAKD,MAAtBC,aACR,EAAKK,QAAQC,OAAOC,QAAQC,KAA5B,aAA8CR,EAAaS,MAAM,CAAC,UAAW,W,4CAG/D,SAAAC,GACdA,EAAEC,iBADiB,MAGiB,EAAKZ,MAAjCC,EAHW,EAGXA,cACRY,EAJmB,EAGGA,WACZZ,EAAaE,IAAI,WAAY,EAAKG,QAAQC,OAAOC,Y,8CAG7DM,YAAA,WACE,MAAO,CACLC,OAAQC,KAAKC,aACbC,SAAUF,KAAKG,eACfC,KAAMJ,KAAKK,WACXC,YAAaN,KAAKX,kBAClBkB,QAASP,KAAKQ,cACdC,MAAOT,KAAKQ,gB,EAIhBE,OAAA,WAAW,IAAD,EAC+DV,KAAKhB,MAApE0D,EADA,EACAA,KAAM9B,EADN,EACMA,OAAQD,EADd,EACcA,QAASgC,EADvB,EACuBA,YAAaC,EADpC,EACoCA,SAAU3D,EAD9C,EAC8CA,aAEtD,IAAK0B,EACH,OAAO,sBAGT,GAAIC,EACF,OACE,YAAC,WAAD,UACGD,EAAQxB,IAAI,gBACZwB,EAAQxB,IAAI,aAMnB,IAAM0B,EAAcF,EAAQxB,IAAI,sBAAwBwB,EAAQxB,IAAI,YAC9D2B,EACJ,4BAAK,YAAC,IAAD,CACHC,UAAU,6BACVC,KAAML,EAAQxB,IAAI,OAClB8B,MAAON,EAAQxB,IAAI,QACnB+B,GAAE,aAAeP,EAAQxB,IAAI,MAC7BgC,wBAAyB,CAAEC,OAAQP,MAIvC,OACE,YAAC,UAAD,CAASQ,SAAUrB,KAAKF,oBAAxB,EACE,mBAAKiB,UAAU,qDAAqDO,SAAS,UAA7E,EACE,mBAAKP,UAAU,8BAAf,EACE,mBAAKA,UAAU,6CAAf,EACE,YAAC,IAAD,CAAMS,GAAG,OAAOD,YAAU,KAG5B,YAAC,IAAD,CACEC,GAAG,8BACHC,eAAe,qCACfC,OAAQ,CAAEC,KAAMb,MAIpB,mBAAKC,UAAU,gBAAf,EACE,mBAAKA,UAAU,yBAAf,EACE,YAAC,IAAD,CAAmCA,UAAU,wBAAwBE,MAAON,EAAQxB,IAAI,QAAS6B,KAAML,EAAQxB,IAAI,OAAQ+B,GAAE,aAAeP,EAAQxB,IAAI,OAAxIwB,EAAQxB,IAAI,MAC1B,mBAAK4B,UAAU,gCAAf,EAAyC,YAAC,IAAD,CAAQJ,QAASA,EAASkC,KAAM,MACzE,YAAC,IAAD,CAAalC,QAASA,KAGxB,mBAAKI,UAAU,8BAAf,EACE,YAAC,IAAD,CAAYE,MAAOyB,EAAKI,cAAcV,EAASE,WAAYS,KAAK,QAAQC,QAASL,IACjF,YAAC,IAAD,CAAY1B,MAAOyB,EAAKI,cAAcV,EAASG,QAASQ,KAAK,QAAQC,QAASJ,OAKpF,YAAC,IAAD,CAA8B3D,aAAcA,O,GAxG1B4C,K,0BAEP,CACjBlB,QAASuB,IAAmBC,IAAIF,WAChCU,YAAab,IAAUmB,KAAKhB,WAC5BW,SAAUd,IAAUmB,KAAKhB,WACzBS,KAAMZ,IAAUoB,OAAOjB,WACvBhD,aAAciD,IAAmBC,IAAIF,a,iBCX1BkB,oBAAQ,MAVI,SAACC,EAAD,OAAazC,EAAb,EAAaA,QAAb,MAA4B,CACrDgC,YADqD,WAEnDS,EAASC,YAAuB1C,EAAQxB,IAAI,SAG9CyD,SALqD,WAMnDQ,EAASE,YAAoB3C,EAAQxB,IAAI,YAI9BgE,CAAkCX,GCJ5Be,E,kGAenB7C,OAAA,WAAW,IAAD,EASJV,KAAKhB,MAPP4B,EAFM,EAENA,OACA3B,EAHM,EAGNA,aACAG,EAJM,EAINA,WACAF,EALM,EAKNA,SACAW,EANM,EAMNA,UACA2D,EAPM,EAONA,kBACAC,EARM,EAQNA,mBAGF,OAAOxE,EAAaE,IAAI,SACxB,IAAK,SACH,OACE,YAAC,EAAD,CACEyB,OAAQA,EACRY,GAAIvC,EAAaE,IAAI,MACrBwB,QAAS1B,EAAaE,IAAI,WAC1BF,aAAcA,EACdG,WAAYA,EACZF,SAAUA,EACVW,UAAWA,IAGjB,IAAK,iBACH,OACE,YAAC,EAAD,CACEe,OAAQA,EACRY,GAAIvC,EAAaE,IAAI,MACrBwB,QAAS1B,EAAaE,IAAI,WAC1BF,aAAcA,EACdG,WAAYA,EACZF,SAAUA,EACVW,UAAWA,IAGjB,IAAK,UACH,OACE,YAAC,IAAD,CACE6D,YAAazE,EAAaE,IAAI,MAC9ByB,OAAQA,EACRY,GAAIvC,EAAaE,IAAI,UACrBF,aAAcA,EACdG,WAAYA,EACZF,SAAUA,EACVW,UAAWA,EACX8D,YAAY,gBACZH,kBAAmBA,EACnBC,mBAAoBA,EACpBG,iBAAkB5D,KAAKhB,MAAM4E,iBAC7BC,gBAAiB7D,KAAKhB,MAAM6E,gBAC5BC,UAAW9D,KAAKhB,MAAM8E,UACtBC,aAAW,IAGjB,IAAK,YACH,OACE,YAAC,IAAD,CACEL,YAAazE,EAAaE,IAAI,MAC9ByB,OAAQA,EACRY,GAAIvC,EAAaE,IAAI,UACrBwB,QAAS1B,EAAaE,IAAI,WAC1B6E,QAAQ,YACRC,OAAK,EACLhF,aAAcA,EACdG,WAAYA,EACZF,SAAUA,EACVW,UAAWA,EACX2D,kBAAmBA,EACnBC,mBAAoBA,EACpBG,iBAAkB5D,KAAKhB,MAAM4E,iBAC7BC,gBAAiB7D,KAAKhB,MAAM6E,gBAC5BC,UAAW9D,KAAKhB,MAAM8E,UACtBC,aAAW,IAGjB,IAAK,SACH,OACE,YAAC,IAAD,CACEL,YAAazE,EAAaE,IAAI,MAC9ByB,OAAQA,EACRY,GAAIvC,EAAaE,IAAI,UACrBwB,QAAS1B,EAAaE,IAAI,WAC1B6E,QAAQ,SACRC,OAAK,EACLhF,aAAcA,EACdG,WAAYA,EACZF,SAAUA,EACVW,UAAWA,EACX2D,kBAAmBA,EACnBC,mBAAoBA,EACpBG,iBAAkB5D,KAAKhB,MAAM4E,iBAC7BC,gBAAiB7D,KAAKhB,MAAM6E,gBAC5BC,UAAW9D,KAAKhB,MAAM8E,UACtBC,aAAW,IAGjB,IAAK,OACH,OACE,YAAC,IAAD,CACEL,YAAazE,EAAaE,IAAI,MAC9ByB,OAAQA,EACRY,GAAIvC,EAAaE,IAAI,UACrBwB,QAAS1B,EAAaE,IAAI,WAC1B6E,QAAQ,OACRC,OAAK,EACLhF,aAAcA,EACdG,WAAYA,EACZF,SAAUA,EACVW,UAAWA,EACX2D,kBAAmBA,EACnBC,mBAAoBA,EACpBG,iBAAkB5D,KAAKhB,MAAM4E,iBAC7BC,gBAAiB7D,KAAKhB,MAAM6E,gBAC5BC,UAAW9D,KAAKhB,MAAM8E,UACtBC,aAAW,IAGjB,QACE,OAAO,O,GAtI6BlC,K,YAArB0B,E,YAEA,CACjBtE,aAAciD,IAAmBC,IAAIF,WACrCrB,OAAQkB,IAAUC,KAClB7C,SAAU4C,IAAUmB,KAAKhB,WACzB7C,WAAY0C,IAAUmB,KAAKhB,WAC3BpC,UAAWiC,IAAUmB,KAAKhB,WAC1BuB,kBAAmB1B,IAAUmB,KAC7BQ,mBAAoB3B,IAAUmB,KAC9BY,gBAAiB/B,IAAUmB,KAC3BW,iBAAkB9B,IAAUoC,OAC5BJ,UAAWhC,IAAUmB,O,oBCEVE,qBAjBa,WAC1B,IAAMgB,EAAkBC,cAOxB,OALwB,SAACC,EAAOrF,GAAR,MAAmB,CACzCC,aAAckF,EAAgBE,EAAOrF,EAAMC,aAAcD,EAAMsF,WAC/DC,cAAeF,EAAM3E,MAAM,CAAC,gBAAiB,sBAMtB,SAAA0D,GAAQ,MAAK,CACtCvD,UAAW,SAACc,EAASpB,GACnB6D,EAASoB,aAAe7D,EAASpB,QAItB4D,CAAiDI,GCpB3CkB,E,kGAMnB/D,OAAA,WACE,OACE,sBAAQK,UAAU,sCAAsCO,SAAS,IAAI0B,QAAShD,KAAKhB,MAAMgE,cAAzF,EAAkG,YAAC,IAAD,CAAMxB,GAAG,WAA3G,IAAuH,YAAC,IAAD,CAAkBA,GAAG,sBAAsBC,eAAe,0B,GARxIiD,IAAMC,W,UCEhCC,E,8LASJ,SAACC,EAAMC,GACpB,EAAK9F,MAAM+F,SAAX,CAAqB,QAArB,OAAgCF,GAAOC,M,sCAGzCpE,OAAA,WAAW,IAAD,EAC8CV,KAAKhB,MAAnDgG,EADA,EACAA,SAAUC,EADV,EACUA,aAAcF,EADxB,EACwBA,SAAUG,EADlC,EACkCA,QAEpCC,EAAgB,YAAC,IAAD,CAAkB3D,GAAG,gDAAgDC,eAAe,SACpG2D,EAAoB,YAAC,IAAD,CAAkB5D,GAAG,oDAAoDC,eAAe,2BAC5G4D,EAAY,YAAC,IAAD,CAAkB7D,GAAG,sCAAsCC,eAAe,0BACtF6D,EAAY,YAAC,IAAD,CAAkB9D,GAAG,qCAAqCC,eAAe,mBACrF8D,EAAY,YAAC,IAAD,CAAkB/D,GAAG,sCAAsCC,eAAe,eAEtF+D,EAAmBP,EAAa9F,IAAI,mBAAqB8F,EAAa9F,IAAI,gBAC1EsG,EAAUD,GAAoB,YAAC,IAAD,CAAkBhE,GAAG,qCAAqCC,eAAe,uBACvGiE,EAAWF,GAAoB,YAAC,IAAD,CAAkBhE,GAAG,0CAA0CC,eAAe,gBAEnH,OACE,4BACE,mBAAKV,UAAU,6BAAf,EACE,YAAC,EAAD,CAAmBiC,QAASkC,KAG9B,mBAAKS,KAAK,QAAQC,kBAAgB,iCAAlC,EACE,oBAAMpE,GAAG,2BAA2BT,UAAU,iCAA9C,EACE,YAAC,IAAD,CAAkBS,GAAG,oDAAoDC,eAAe,sBAE1F,mBAAKV,UAAU,6BAAf,EACE,YAAC,IAAD,CAAeS,GAAG,kBAAkBqE,OAAO,gBAAgBb,SAAUA,EAAUc,YAAa,CAAC,cAAe,QAASf,SAAUA,EAAUgB,MAAOZ,IAChJ,YAAC,IAAD,CAAe3D,GAAG,kBAAkBqE,OAAO,gBAAgBb,SAAUA,EAAUc,YAAa,CAAC,cAAe,YAAaf,SAAUA,EAAUgB,MAAOX,MAIxJ,mBAAKO,KAAK,QAAQC,kBAAgB,6BAAlC,EACE,oBAAMpE,GAAG,uBAAuBT,UAAU,iCAA1C,EAAqE,YAAC,IAAD,CAAkBS,GAAG,uCAAuCC,eAAe,oBAEhJ,mBAAKV,UAAU,6BAAf,EACE,YAAC,IAAD,CAAe8E,OAAO,wBAAwBb,SAAUA,EAAUc,YAAa,CAAC,SAAU,UAAWf,SAAUA,EAAUgB,MAAOV,IAC/HG,GAAoB,YAAC,IAAD,CAAeK,OAAO,qBAAqBb,SAAUC,EAAca,YAAa,CAAC,SAAU,UAAWE,KAAMN,EAAUX,SAAU/E,KAAKiG,aAAcF,MAAON,IAC/K,YAAC,IAAD,CAAeI,OAAO,gBAAgBb,SAAUA,EAAUc,YAAa,CAAC,QAAS,UAAWf,SAAUA,EAAUgB,MAAOT,IACvH,YAAC,IAAD,CAAeO,OAAO,gBAAgBb,SAAUA,EAAUc,YAAa,CAAC,SAAU,UAAWf,SAAUA,EAAUgB,MAAOR,MAI5H,mBAAKI,KAAK,QAAQC,kBAAgB,qCAAlC,EACE,oBAAMpE,GAAG,+BAA+BT,UAAU,iCAAlD,EAA6E,YAAC,IAAD,CAAkBS,GAAG,+CAA+CC,eAAe,0BAEhK,mBAAKV,UAAU,6BAAf,EACE,YAAC,IAAD,CAAe8E,OAAO,wBAAwBb,SAAUA,EAAUc,YAAa,CAAC,SAAU,kBAAmBf,SAAUA,EAAUgB,MAAOV,IACvIG,GAAoB,YAAC,IAAD,CAAeK,OAAO,qBAAqBb,SAAUC,EAAca,YAAa,CAAC,SAAU,kBAAmBf,SAAU/E,KAAKiG,aAAcF,MAAON,IACvK,YAAC,IAAD,CAAeI,OAAO,gBAAgBb,SAAUA,EAAUc,YAAa,CAAC,QAAS,kBAAmBf,SAAUA,EAAUgB,MAAOT,IAC/H,YAAC,IAAD,CAAeO,OAAO,gBAAgBb,SAAUA,EAAUc,YAAa,CAAC,SAAU,kBAAmBf,SAAUA,EAAUgB,MAAOR,MAIpI,mBAAKI,KAAK,QAAQC,kBAAgB,gCAAlC,EACE,oBAAMpE,GAAG,0BAA0BT,UAAU,iCAA7C,EAAwE,YAAC,IAAD,CAAkBS,GAAG,0CAA0CC,eAAe,iBAEtJ,mBAAKV,UAAU,6BAAf,EACE,YAAC,IAAD,CAAe8E,OAAO,wBAAwBb,SAAUA,EAAUc,YAAa,CAAC,SAAU,aAAcf,SAAUA,EAAUgB,MAAOV,IAClIG,GAAoB,YAAC,IAAD,CAAeK,OAAO,qBAAqBb,SAAUC,EAAca,YAAa,CAAC,SAAU,aAAcE,KAAMN,EAAUX,SAAU/E,KAAKiG,aAAcF,MAAON,IAClL,YAAC,IAAD,CAAeI,OAAO,gBAAgBb,SAAUA,EAAUc,YAAa,CAAC,QAAS,aAAcf,SAAUA,EAAUgB,MAAOT,IAC1H,YAAC,IAAD,CAAeO,OAAO,gBAAgBb,SAAUA,EAAUc,YAAa,CAAC,SAAU,aAAcf,SAAUA,EAAUgB,MAAOR,MAI/H,mBAAKI,KAAK,QAAQC,kBAAgB,8BAAlC,EACE,oBAAMpE,GAAG,wBAAwBT,UAAU,iCAA3C,EAAsE,YAAC,IAAD,CAAkBS,GAAG,wCAAwCC,eAAe,eAElJ,mBAAKV,UAAU,6BAAf,EACE,YAAC,IAAD,CAAe8E,OAAO,wBAAwBb,SAAUA,EAAUc,YAAa,CAAC,SAAU,WAAYf,SAAUA,EAAUgB,MAAOV,IAChIG,GAAoB,YAAC,IAAD,CAAeK,OAAO,qBAAqBb,SAAUC,EAAca,YAAa,CAAC,SAAU,WAAYE,KAAMN,EAAUX,SAAU/E,KAAKiG,aAAcF,MAAON,IAChL,YAAC,IAAD,CAAeI,OAAO,gBAAgBb,SAAUA,EAAUc,YAAa,CAAC,QAAS,WAAYf,SAAUA,EAAUgB,MAAOT,IACxH,YAAC,IAAD,CAAeO,OAAO,gBAAgBb,SAAUA,EAAUc,YAAa,CAAC,SAAU,WAAYf,SAAUA,EAAUgB,MAAOR,MAI7H,mBAAKI,KAAK,QAAQC,kBAAgB,6BAAlC,EACE,oBAAMpE,GAAG,uBAAuBT,UAAU,iCAA1C,EAAqE,YAAC,IAAD,CAAkBS,GAAG,uCAAuCC,eAAe,aAEhJ,mBAAKV,UAAU,6BAAf,EACE,YAAC,IAAD,CAAe8E,OAAO,wBAAwBb,SAAUA,EAAUc,YAAa,CAAC,SAAU,UAAWf,SAAUA,EAAUgB,MAAOV,IAC/HG,GAAoB,YAAC,IAAD,CAAeK,OAAO,qBAAqBb,SAAUC,EAAca,YAAa,CAAC,SAAU,UAAWE,KAAMN,EAAUX,SAAU/E,KAAKiG,aAAcF,MAAON,IAC/K,YAAC,IAAD,CAAeI,OAAO,gBAAgBb,SAAUA,EAAUc,YAAa,CAAC,QAAS,UAAWf,SAAUA,EAAUgB,MAAOT,IACvH,YAAC,IAAD,CAAeO,OAAO,gBAAgBb,SAAUA,EAAUc,YAAa,CAAC,SAAU,UAAWf,SAAUA,EAAUgB,MAAOR,MAI5H,mBAAKI,KAAK,QAAQC,kBAAgB,2BAAlC,EACE,oBAAMpE,GAAG,qBAAqBT,UAAU,iCAAxC,EAAmE,YAAC,IAAD,CAAkBS,GAAG,qCAAqCC,eAAe,mBAE5I,mBAAKV,UAAU,6BAAf,EACE,YAAC,IAAD,CAAe8E,OAAO,wBAAwBb,SAAUA,EAAUc,YAAa,CAAC,SAAU,QAASf,SAAUA,EAAUgB,MAAOV,IAC7HG,GAAoB,YAAC,IAAD,CAAeK,OAAO,qBAAqBb,SAAUC,EAAca,YAAa,CAAC,SAAU,QAASE,KAAMN,EAAUX,SAAU/E,KAAKiG,aAAcF,MAAON,IAC7K,YAAC,IAAD,CAAeI,OAAO,gBAAgBb,SAAUA,EAAUc,YAAa,CAAC,QAAS,QAASf,SAAUA,EAAUgB,MAAOT,IACrH,YAAC,IAAD,CAAeO,OAAO,gBAAgBb,SAAUA,EAAUc,YAAa,CAAC,SAAU,QAASf,SAAUA,EAAUgB,MAAOR,Q,GAxGtFb,IAAMwB,e,yBCE5C9D,EAAWC,YAAe,CAC9B8D,aAAa,CAAD,2HACZC,aAAa,CAAD,iEA+BC3D,eAAWU,mBA5BF,SAAAkB,GAAK,MAAK,CAChCW,SAAUX,EAAM3E,MAAM,CAAC,WAAY,kBACnCuF,aAAcZ,EAAMlF,IAAI,0BAGC,SAACiE,EAAD,OAAaV,EAAb,EAAaA,KAAb,MAAyB,CAElDqC,SAFkD,SAExCF,EAAMC,GACE,SAAZD,EAAK,GACPzB,EAASiD,YAAwBxB,EAAKyB,MAAM,GAAIxB,IAC3B,gBAAZD,EAAK,IACdzB,EAASmD,YAAc,CAAC,iBAAF,OAAsB1B,GAAOC,IACnD1B,EAASoD,YAAU,SAEnBpD,EAASmD,YAAc,CAAC,iBAAF,OAAsB1B,GAAOC,KAIvDI,QAbkD,WAchD9B,EAASqD,YAAU,UAAW,CAC5BC,QAAShE,EAAKI,cAAcV,EAAS+D,cACrCQ,QAASjE,EAAKI,cAAcV,EAASgE,cACrCQ,UAAW,kBAAMxD,EAASyD,uBAMN1D,CAA6CyB,ICrCjEkC,GAAWzE,YAAe,CAC9B0E,SAAS,CAAD,8DACRC,WAAW,CAAD,kEACVC,OAAO,CAAD,0DACNC,MAAM,CAAD,+DACLC,QAAQ,CAAD,8DAIHC,GADU3E,Y,4GAUdO,QAAA,SAASqE,GAAmB,IAAD,OACzB,OAAO,kBAAM,EAAKrI,MAAMsI,aAAaD,K,EAGvC3G,OAAA,WAAW,IAAD,EACuCV,KAAKhB,MAA5CuI,EADA,EACAA,eAAgBC,EADhB,EACgBA,aAAc9E,EAD9B,EAC8BA,KAsEtC,OArEyB8E,EAsBvB,mBAAKzG,UAAU,iCAAf,EACE,sBACEA,UAA8B,QAAnBwG,EAA2B,SAAW,GACjDvE,QAAShD,KAAKgD,QAAQ,aAFxB,EAIE,YAAC,IAAD,CACExB,GAAG,2BACHC,eAAe,SAGnB,sBACEV,UAA8B,YAAnBwG,EAA+B,SAAW,GACrDvE,QAAShD,KAAKgD,QAAQ,WACtB/B,MAAOyB,EAAKI,cAAcgE,GAASC,gBAHrC,EAKE,YAAC,IAAD,CAAMvF,GAAG,YAAYD,YAAU,KAEjC,sBACER,UAA8B,cAAnBwG,EAAiC,SAAW,GACvDvE,QAAShD,KAAKgD,QAAQ,aACtB/B,MAAOyB,EAAKI,cAAcgE,GAASE,kBAHrC,EAKE,YAAC,IAAD,CAAMxF,GAAG,OAAOD,YAAU,KAE5B,sBACER,UAA8B,WAAnBwG,EAA8B,SAAW,GACpDvE,QAAShD,KAAKgD,QAAQ,UACtB/B,MAAOyB,EAAKI,cAAcgE,GAASG,cAHrC,EAKE,YAAC,IAAD,CAAMzF,GAAG,UAAUD,YAAU,KAE/B,sBACER,UAA8B,SAAnBwG,EAA4B,SAAW,GAClDvE,QAAShD,KAAKgD,QAAQ,QACtB/B,MAAOyB,EAAKI,cAAcgE,GAASI,aAHrC,EAKE,YAAC,IAAD,CAAM1F,GAAG,QAAQD,YAAU,KAE7B,sBACER,UAA8B,WAAnBwG,EAA8B,SAAW,GACpDvE,QAAShD,KAAKgD,QAAQ,UACtB/B,MAAOyB,EAAKI,cAAcgE,GAASK,eAHrC,EAKE,YAAC,IAAD,CAAM3F,GAAG,YAAYD,YAAU,MAhEnC,mBAAKR,UAAU,iCAAf,EACE,sBACEA,UAA8B,QAAnBwG,EAA2B,SAAW,GACjDvE,QAAShD,KAAKgD,QAAQ,aAFxB,EAIE,YAAC,IAAD,CACExB,GAAG,2BACHC,eAAe,SAGnB,sBACEV,UAA8B,YAAnBwG,EAA+B,SAAW,GACrDvE,QAAShD,KAAKgD,QAAQ,iBAFxB,EAIE,YAAC,IAAD,CACExB,GAAG,gCACHC,eAAe,gB,GAhCHiD,IAAMwB,iB,ECCf/C,sBAXa,SAAAkB,GAAK,MAAK,CACpCkD,eAAgBlD,EAAM3E,MAAM,CAAC,WAAY,gBAAiB,cAAe,WACzE8H,aAAcnD,EAAM3E,MAAM,CAAC,WAAY,gBAAiB,cAAe,iBAG9C,SAAC0D,GAAD,MAAe,CACxCkE,aADwC,SAC1BG,GACZrE,EAASoD,YAAUiB,QAIRtE,CAAiDiE,I,gFCUhE,IAAMhF,GAAWC,YAAe,CAC9BpB,MAAM,CAAD,4DAGDyG,GAAmBC,aAAe,CACtC,SAAAtD,GAAK,OAAIA,EAAM3E,MAAM,CAAC,WAAY,gBAAiB,cAAe,UAClE,SAAA2E,GAAK,OAAIA,EAAM3E,MAAM,CAAC,WAAY,gBAAiB,cAAe,YAClE,SAAA2E,GAAK,OAAIuD,gBAAcvD,EAAM3E,MAAM,CAAC,WAAY,gBAAiB,UAAUmI,QAAO,SAAAC,GAAI,OAAKA,KAAMC,SACjG,SAAA1D,GAAK,OAAIA,EAAM3E,MAAM,CAAC,gBAAiB,aACtC,SAACsI,EAAeC,EAAaC,EAAeC,GAC7C,OAAKH,GAAiC,QAAhBC,EAMfE,EAAcN,QAAO,SAAAC,GAAI,OAAa,OAATA,GAAiBG,IAAgBH,EAAK3I,IAAI,WAFrEgJ,EAAcC,WAAU,SAAAN,GAAI,OAAa,OAATA,GAAiBI,EAAcG,SAASP,EAAK3I,IAAI,eAgCtFmJ,GAFUnF,mBAzBQ,SAAAkB,GAAK,MAAK,CAChC2D,cAAe3D,EAAM3E,MAAM,CAAC,WAAY,gBAAiB,cAAe,SACxEyI,cAAeT,GAAiBrD,GAChCkE,cAAgBlE,EAAMlF,IAAI,kBAC1BqJ,UAAWnE,EAAM3E,MAAM,CAAC,gBAAiB,cAAc,GACvD+I,SAAUpE,EAAM3E,MAAM,CAAC,gBAAiB,WAAa,GAAK2E,EAAM3E,MAAM,CAAC,gBAAiB,iBAAiBmD,KAAO,EAChH6F,QAASrE,EAAM3E,MAAM,CAAC,gBAAiB,YACvCiJ,WAAYtE,EAAM3E,MAAM,CAAC,gBAAiB,gBAAiBkI,mBAAiB/E,KAC5E+F,oBAAqBvE,EAAM3E,MAAM,CAAC,gBAAiB,qBAI1B,SAAA0D,GAAQ,MAAK,CACtCyF,oBADsC,SAClBC,GAClB1F,EAAS2F,YAA8BD,KAEzCE,QAJsC,WAKpC5F,EAAS6F,gBAEXnF,UAPsC,WAQpCV,EAAS8F,gBAEX9F,c,GAIDX,a,mMA0BiB,SAAC0G,GACf,EAAKnK,MAAMoE,SAASgG,YAAoB,CAAED,c,6CAG1B,KAAS,WACzB,IAAME,EAAO,EAAKrK,MAAMmJ,cAAckB,OACtC,EAAKrK,MAAMoE,SAASgG,YAAoB,CAAED,MAAOE,GAAQA,EAAKlK,IAAI,WACjE,IAAK,CAAEmK,SAAS,K,gDAEC,WAClB,EAAKtK,MAAMoE,SAASmG,kB,+CAGF,KAAS,WAC3B,EAAKvK,MAAMoE,SAASoG,aAAuB,MAC1C,M,0CAEY,KAAS,WACtB,EAAKxK,MAAMoE,SAASoG,aAAuB,MAC1C,M,wCAES,WAAO,IAAD,EACe,EAAKxK,MAA5ByK,EADQ,EACRA,SAAUrG,EADF,EACEA,SAGhBA,EADEqG,EACOC,YAAaD,GAEbE,YAAU,gBAAiB,Q,yCAI3B,SAACC,GAAS,IAAD,EACW,EAAK5K,MAA5ByK,EADY,EACZA,UACRrG,EAFoB,EACFA,UACTyG,YAAWJ,EAAUG,O,gDAGZ,WAClB,EAAKE,OAAOC,e,2CAGC,SAAAC,GACb,EAAKF,OAASE,K,2CAGD,SAAAxI,GACb,IAAMyI,EAAe,EAAKjL,MAAMmJ,cAAc+B,WAAU,SAAApC,GAAI,OAAa,OAATA,GAAiBA,EAAK3I,IAAI,QAAUqC,KAAM,EAC1G,EAAK2I,aAAaF,GAAc,M,6CAGjB,SAAAzI,GACf,IAAMyI,EAAe,EAAKjL,MAAMmJ,cAAc+B,WAAU,SAAApC,GAAI,OAAa,OAATA,GAAiBA,EAAK3I,IAAI,QAAUqC,KAAM,EAC1G,EAAK2I,aAAaF,GAAc,M,8CAGlCE,aAAA,SAAcC,EAAOC,GACnB,IAAMC,EAAYtK,KAAK8J,OAAOS,KACxBC,EAAUF,EAAUG,cAAV,wBAA+CL,EAAQ,GAAvD,gBAEZI,IACEH,GAAaC,EAAUP,UAAYS,EAAQE,UAC7CF,EAAQG,gBAAe,IACbN,GAAaC,EAAUP,UAAYO,EAAUM,aAAeJ,EAAQE,UAAYF,EAAQK,cAClGL,EAAQG,gBAAe,GAEzBH,EAAQM,U,EAIZC,kBAAA,WAAsB,IACZ/B,EAAYhJ,KAAKhB,MAAjBgK,QACJA,GACFA,K,EAIJgC,qBAAA,WAAyB,IACflH,EAAc9D,KAAKhB,MAAnB8E,UACJA,GACFA,K,EAIJpD,OAAA,WAAW,IAAD,SAC4HV,KAAKhB,MAAjI0D,EADA,EACAA,KAAMyF,EADN,EACMA,cAAe8C,EADrB,EACqBA,mBAAoBzC,EADzC,EACyCA,UAAWC,EADpD,EACoDA,SAAUgB,EAD9D,EAC8DA,SAAUyB,EADxE,EACwEA,YAAaxC,EADrF,EACqFA,QAASC,EAD9F,EAC8FA,WAAYX,EAD1G,EAC0GA,cAC5GmD,IAAW1B,EACX2B,EAAe,YAAC,IAAD,CAAkB5J,GAAG,6BAA6BC,eAAe,0FAElF4J,EAAoB,KAElBC,EAAqBtD,EACtB,YAAC,GAAD,IACD,KAGFqD,EADE7C,GAAaxI,KAAKqL,kBACArL,KAAKqL,kBAChBlD,EAActF,KAAO,GAAK6F,EACfP,EAAchG,KAAI,SAAC2F,EAAMsC,GAAP,OAA0B,OAATtC,EACrD,YAAC,KAAD,CAEEyD,SAAU/C,EACVW,MAAOiB,EAAQ,EAAIjC,EAAczI,MAAM,CAAC0K,EAAQ,EAAG,OAAS,KAC5DpH,QAAS,EAAKwI,eAHT,OAASrD,EAAczI,MAAM,CAAC0K,EAAQ,EAAG,QAMhD,YAAC,EAAD,CAEEnL,aAAc6I,EACdxD,UAAWwD,EAAK3I,IAAI,WACpBD,SAAU,EAAKe,aACfb,WAAY,EAAKe,gBAJZ2H,EAAK3I,IAAI,UAQE,KAGtBa,KAAKqL,kBAAoBA,EAEzB,IAAMI,EACJ,YAAC,KAAD,CACEC,UAAS,iBAAmBjC,EAC5BkC,aAAcR,EACd3C,UAAWA,EACXoD,YAAapD,GAAoC,IAAvBL,EAActF,KACxC6F,QAASA,EACTC,WAAYA,EACZyC,aAAcA,EACdS,WAAY7L,KAAK8L,gBACjBC,cAAe/L,KAAKgM,kBACpBC,cAAejM,KAAKkM,kBACpBC,SAAUnM,KAAKoM,aACfnB,mBAAoBA,EACpBoB,gBAAiBnB,QAbnB,EAeGG,GAIL,OACE,kBAAC,IAAD,CACEgB,gBAAiBnB,EACjBoB,IAAKtM,KAAKuM,aACV5K,KAAK,gBACL6K,aAAcxM,KAAKhB,MAAM4J,oBAAsB,iBAAmB,KAClE7C,MAAOrD,EAAKI,cAAcV,GAASnB,QAEnC,YAAC,IAAD,CACE8B,KAAK,OACL0J,OAAQhE,EACRxH,MAAOyB,EAAKI,cAAcV,GAASnB,OACnCyL,MAAO1M,KAAK2M,UACZC,OAAQ5M,KAAK6M,WACb7J,QAAShD,KAAK8M,kBACd3B,OAAQA,EACRD,YAAaA,EACb3C,cAAevI,KAAKhB,MAAMuJ,cAC1BhE,eAAa,EACbqE,oBAAqB5I,KAAKhB,MAAM4J,oBAChCC,oBAAqB7I,KAAKhB,MAAM6J,0BAZlC,EAcE,YAAC,GAAD,KAEDyC,EACAG,I,GA5LmB/G,IAAMwB,e,6BAqBV,CACpByF,aAAa,I","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';\nimport Icon from 'flavours/glitch/components/icon';\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              <Icon fixedWidth id='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","import React, { Fragment } from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport Avatar from 'flavours/glitch/components/avatar';\nimport DisplayName from 'flavours/glitch/components/display_name';\nimport Permalink from 'flavours/glitch/components/permalink';\nimport IconButton from 'flavours/glitch/components/icon_button';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport NotificationOverlayContainer from '../containers/overlay_container';\nimport { HotKeys } from 'react-hotkeys';\nimport Icon from 'flavours/glitch/components/icon';\n\nconst messages = defineMessages({\n  authorize: { id: 'follow_request.authorize', defaultMessage: 'Authorize' },\n  reject: { id: 'follow_request.reject', defaultMessage: 'Reject' },\n});\n\nexport default @injectIntl\nclass FollowRequest extends ImmutablePureComponent {\n\n  static propTypes = {\n    account: ImmutablePropTypes.map.isRequired,\n    onAuthorize: PropTypes.func.isRequired,\n    onReject: PropTypes.func.isRequired,\n    intl: PropTypes.object.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 { intl, hidden, account, onAuthorize, onReject, notification } = this.props;\n\n    if (!account) {\n      return <div />;\n    }\n\n    if (hidden) {\n      return (\n        <Fragment>\n          {account.get('display_name')}\n          {account.get('username')}\n        </Fragment>\n      );\n    }\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    return (\n      <HotKeys handlers={this.getHandlers()}>\n        <div className='notification notification-follow-request focusable' tabIndex='0'>\n          <div className='notification__message'>\n            <div className='notification__favourite-icon-wrapper'>\n              <Icon id='user' fixedWidth />\n            </div>\n\n            <FormattedMessage\n              id='notification.follow_request'\n              defaultMessage='{name} has requested to follow you'\n              values={{ name: link }}\n            />\n          </div>\n\n          <div className='account'>\n            <div className='account__wrapper'>\n              <Permalink key={account.get('id')} className='account__display-name' title={account.get('acct')} href={account.get('url')} to={`/accounts/${account.get('id')}`}>\n                <div className='account__avatar-wrapper'><Avatar account={account} size={36} /></div>\n                <DisplayName account={account} />\n              </Permalink>\n\n              <div className='account__relationship'>\n                <IconButton title={intl.formatMessage(messages.authorize)} icon='check' onClick={onAuthorize} />\n                <IconButton title={intl.formatMessage(messages.reject)} icon='times' onClick={onReject} />\n              </div>\n            </div>\n          </div>\n\n          <NotificationOverlayContainer notification={notification} />\n        </div>\n      </HotKeys>\n    );\n  }\n\n}\n","import { connect } from 'react-redux';\nimport { makeGetAccount } from 'flavours/glitch/selectors';\nimport FollowRequest from '../components/follow_request';\nimport { authorizeFollowRequest, rejectFollowRequest } from 'flavours/glitch/actions/accounts';\n\nconst mapDispatchToProps = (dispatch, { account }) => ({\n  onAuthorize () {\n    dispatch(authorizeFollowRequest(account.get('id')));\n  },\n\n  onReject () {\n    dispatch(rejectFollowRequest(account.get('id')));\n  },\n});\n\nexport default connect(null, mapDispatchToProps)(FollowRequest);\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';\nimport NotificationFollowRequestContainer from '../containers/follow_request_container';\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 'follow_request':\n      return (\n        <NotificationFollowRequestContainer\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';\nimport Icon from 'flavours/glitch/components/icon';\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}><Icon id='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-follow-request'>\n          <span id='notifications-follow-request' className='column-settings__section'><FormattedMessage id='notifications.column_settings.follow_request' defaultMessage='New follow requests:' /></span>\n\n          <div className='column-settings__row'>\n            <SettingToggle prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'follow_request']} onChange={onChange} label={alertStr} />\n            {showPushSettings && <SettingToggle prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'follow_request']} onChange={this.onPushChange} label={pushStr} />}\n            <SettingToggle prefix='notifications' settings={settings} settingPath={['shows', 'follow_request']} onChange={onChange} label={showStr} />\n            <SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'follow_request']} 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';\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: '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          <Icon id='reply-all' fixedWidth />\n        </button>\n        <button\n          className={selectedFilter === 'favourite' ? 'active' : ''}\n          onClick={this.onClick('favourite')}\n          title={intl.formatMessage(tooltips.favourites)}\n        >\n          <Icon id='star' fixedWidth />\n        </button>\n        <button\n          className={selectedFilter === 'reblog' ? 'active' : ''}\n          onClick={this.onClick('reblog')}\n          title={intl.formatMessage(tooltips.boosts)}\n        >\n          <Icon id='retweet' fixedWidth />\n        </button>\n        <button\n          className={selectedFilter === 'poll' ? 'active' : ''}\n          onClick={this.onClick('poll')}\n          title={intl.formatMessage(tooltips.polls)}\n        >\n          <Icon id='tasks' fixedWidth />\n        </button>\n        <button\n          className={selectedFilter === 'follow' ? 'active' : ''}\n          onClick={this.onClick('follow')}\n          title={intl.formatMessage(tooltips.follows)}\n        >\n          <Icon id='user-plus' fixedWidth />\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  loadPending,\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 || 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});\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\nexport default @connect(mapStateToProps, mapDispatchToProps)\n@injectIntl\nclass 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    numPending: PropTypes.number,\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  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  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, numPending, 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        numPending={numPending}\n        emptyMessage={emptyMessage}\n        onLoadMore={this.handleLoadOlder}\n        onLoadPending={this.handleLoadPending}\n        onScrollToTop={this.handleScrollToTop}\n        onScroll={this.handleScroll}\n        shouldUpdateScroll={shouldUpdateScroll}\n        bindToDocument={!multiColumn}\n      >\n        {scrollableContent}\n      </ScrollableList>\n    );\n\n    return (\n      <Column\n        bindToDocument={!multiColumn}\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":""}