{"version":3,"sources":["webpack:///app/javascript/opt/mastodon/app/javascript/flavours/glitch/features/explore/components/story.jsx","webpack:///app/javascript/opt/mastodon/app/javascript/flavours/glitch/features/explore/links.jsx","webpack:///app/javascript/opt/mastodon/app/javascript/flavours/glitch/features/explore/results.jsx","webpack:///app/javascript/opt/mastodon/app/javascript/flavours/glitch/features/explore/statuses.jsx","webpack:///app/javascript/opt/mastodon/app/javascript/flavours/glitch/features/explore/suggestions.jsx","webpack:///app/javascript/opt/mastodon/app/javascript/flavours/glitch/features/explore/tags.jsx","webpack:///app/javascript/opt/mastodon/app/javascript/flavours/glitch/features/explore/index.jsx"],"names":["Story","PureComponent","constructor","arguments","_defineProperty","thumbnailLoaded","this","setState","render","expanded","url","title","lang","publisher","author","publishedAt","sharedTimes","thumbnail","thumbnailDescription","blurhash","props","state","_jsx","className","classNames","href","target","rel","Skeleton","width","_jsxs","_Fragment","children","RelativeTimestamp","timestamp","FormattedMessage","id","defaultMessage","values","name","ShortNumber","value","renderer","accountsCountRenderer","Blurhash","hash","src","onLoad","handleImageLoad","alt","Links","componentDidMount","dispatch","links","history","action","size","fetchTrendingLinks","isLoading","banner","DismissableBanner","isEmpty","LoadingIndicator","map","link","i","get","getIn","connect","withRouter","messages","defineMessages","hidePeek","list","skipLast","Results","type","submittedType","submitSearch","_loadMore","getDerivedStateFromProps","expandSearch","intl","q","results","hasMore","ImmutableList","filteredResults","accounts","hashtags","statuses","SearchSection","Icon","icon","PeopleIcon","onClickMore","handleLoadMoreAccounts","take","Account","TagIcon","handleLoadMoreHashtags","hashtag","Hashtag","FindInPageIcon","handleLoadMoreStatuses","Status","renderAccounts","renderHashtags","renderStatuses","onClick","handleSelectAll","undefined","handleSelectAccounts","handleSelectHashtags","handleSelectStatuses","ScrollableList","scrollKey","onLoadMore","handleLoadMore","emptyMessage","bindToDocument","Helmet","formatMessage","injectIntl","Statuses","_debounce","expandTrendingStatuses","leading","statusIds","fetchTrendingStatuses","multiColumn","StatusList","trackScroll","prepend","alwaysPrepend","timelineId","withCounters","getStatusList","Suggestions","accountId","dismissSuggestion","suggestions","fetchSuggestions","suggestion","AccountCard","onDismiss","handleDismiss","Tags","fetchTrendingHashtags","isLoadingHashtags","searchResults","Explore","column","scrollTop","c","isSearching","signedIn","context","identity","Column","ref","setRef","label","ColumnHeader","iconComponent","SearchIcon","handleHeaderClick","Search","SearchResults","NavLink","exact","to","tagName","Switch","Route","path","component","content","PropTypes","object","layout","trendsEnabled"],"mappings":"yWAae,MAAMA,UAAcC,gBAAcC,cAAA,SAAAC,WAAAC,YAAA,aAgBvC,CACNC,iBAAiB,IAClBD,YAAA,wBAEiB,IAAME,KAAKC,SAAS,CAAEF,iBAAiB,KAAO,CAEhEG,SACE,MAAM,SAAEC,EAAQ,IAAEC,EAAG,MAAEC,EAAK,KAAEC,EAAI,UAAEC,EAAS,OAAEC,EAAM,YAAEC,EAAW,YAAEC,EAAW,UAAEC,EAAS,qBAAEC,EAAoB,SAAEC,GAAab,KAAKc,OAE9H,gBAAEf,GAAoBC,KAAKe,MAEjC,OACEC,YAAA,KAAGC,UAAWC,IAAW,QAAS,CAAEf,aAAagB,KAAMf,EAAKgB,OAAO,QAAQC,IAAI,iBAAU,EACvFL,YAAA,OAAKC,UAAU,uBAAgB,EAC7BD,YAAA,OAAKC,UAAU,kCAA2B,EAAEV,EAAYS,YAAA,QAAMV,KAAMA,QAAK,EAAEC,GAAoBS,YAACM,IAAQ,CAACC,MAAO,KAAQd,GAAee,eAAAC,WAAA,CAAAC,SAAA,CAAE,MAAGV,YAACW,IAAiB,CAACC,UAAWnB,QAC1KO,YAAA,OAAKC,UAAU,wBAAwBX,KAAMA,QAAK,EAAED,GAAgBW,YAACM,IAAQ,KAC7EN,YAAA,OAAKC,UAAU,+BAAwB,EAAET,GAAUgB,eAAAC,WAAA,CAAAC,SAAA,CAAEV,YAACa,IAAgB,CAACC,GAAE,sBAAuBC,eAAe,YAAYC,OAAQ,CAAEC,KAAMjB,YAAA,mBAASR,MAAsB,SAA+B,iBAAhBE,EAA2BM,YAACkB,IAAW,CAACC,MAAOzB,EAAa0B,SAAUC,MAA4BrB,YAACM,IAAQ,CAACC,MAAO,QAG9SP,YAAA,OAAKC,UAAU,yBAAkB,EAC9BN,EACCa,eAAAC,WAAA,CAAAC,SAAA,CACEV,YAAA,OAAKC,UAAWC,IAAW,4BAA6B,CAAE,oCAAqCnB,UAAmB,EAACiB,YAACsB,IAAQ,CAACC,KAAM1B,KACnIG,YAAA,OAAKwB,IAAK7B,EAAW8B,OAAQzC,KAAK0C,gBAAiBC,IAAK/B,EAAsBP,MAAOO,EAAsBN,KAAMA,OAEjHU,YAACM,IAAQ,KAIrB,ECpCF,MAAMsB,UAAcjD,gBASlBkD,oBACE,MAAM,SAAEC,EAAQ,MAAEC,EAAK,QAAEC,GAAYhD,KAAKc,MAGnB,QAAnBkC,EAAQC,QAAoBF,EAAMG,KAAO,GAI7CJ,EAASK,cACX,CAEAjD,SACE,MAAM,UAAEkD,EAAS,MAAEL,GAAU/C,KAAKc,MAE5BuC,EACJrC,YAACsC,IAAiB,CAACxB,GAAG,sBAAe,EACnCd,YAACa,IAAgB,CAACC,GAAE,mCAAoCC,eAAe,iJAI3E,OAAKqB,GAAaL,EAAMQ,UAEpBvC,YAAA,OAAKC,UAAU,mDAA4C,EACxDoC,EAEDrC,YAAA,OAAKC,UAAU,+BAAwB,EACrCD,YAACa,IAAgB,CAACC,GAAE,gCAAiCC,eAAe,uDAO1Ef,YAAA,OAAKC,UAAU,4BAA4B,0BAAc,EACtDoC,EAEAD,EAAapC,YAACwC,IAAgB,IAAOT,EAAMU,KAAI,CAACC,EAAMC,IACrD3C,YAACtB,EAAK,CAEJS,SAAgB,IAANwD,EACVrD,KAAMoD,EAAKE,IAAI,YACfxD,IAAKsD,EAAKE,IAAI,OACdvD,MAAOqD,EAAKE,IAAI,SAChBrD,UAAWmD,EAAKE,IAAI,iBACpBnD,YAAaiD,EAAKE,IAAI,gBACtBpD,OAAQkD,EAAKE,IAAI,eACjBlD,YAAsD,EAAzCgD,EAAKG,MAAM,CAAC,UAAW,EAAG,aAA4D,EAAzCH,EAAKG,MAAM,CAAC,UAAW,EAAG,aACpFlD,UAAW+C,EAAKE,IAAI,SACpBhD,qBAAsB8C,EAAKE,IAAI,qBAC/B/C,SAAU6C,EAAKE,IAAI,aAXdF,EAAKE,IAAI,SAgBxB,EAIaE,yBAxES/C,IAAK,CAC3BgC,MAAOhC,EAAM8C,MAAM,CAAC,SAAU,QAAS,UACvCT,UAAWrC,EAAM8C,MAAM,CAAC,SAAU,QAAS,iBAsE9BC,CAAyBC,YAAWnB,I,oFCjEnD,MAAMoB,EAAWC,YAAe,CAC9B5D,MAAO,CAAEyB,GAAG,uBAAyBC,eAAe,oBAahDmC,EAAWC,GACXA,EAAKjB,KAJgB,IAIaiB,EAAKjB,KAJlB,IAIgD,EAChEiB,EAAKC,SAAS,GAEdD,EAgBX,MAAME,UAAgB1E,gBAAcC,cAAA,SAAAC,WAAAC,YAAA,aAgB1B,CACNwE,KAAMtE,KAAKc,MAAMyD,eAAiB,QACnCzE,YAAA,wBAYiB,KAChB,MAAM,cAAEyE,EAAa,SAAEzB,GAAa9C,KAAKc,MAIrCyD,GACFzB,EAAS0B,eAGXxE,KAAKC,SAAS,CAAEqE,KAAM,OAAQ,IAC/BxE,YAAA,6BAEsB,KACrB,MAAM,cAAEyE,EAAa,SAAEzB,GAAa9C,KAAKc,MAInB,aAAlByD,GACFzB,EAAS0B,YAAa,aAGxBxE,KAAKC,SAAS,CAAEqE,KAAM,YAAa,IACpCxE,YAAA,6BAEsB,KACrB,MAAM,cAAEyE,EAAa,SAAEzB,GAAa9C,KAAKc,MAInB,aAAlByD,GACFzB,EAAS0B,YAAa,aAGxBxE,KAAKC,SAAS,CAAEqE,KAAM,YAAa,IACpCxE,YAAA,6BAEsB,KACrB,MAAM,cAAEyE,EAAa,SAAEzB,GAAa9C,KAAKc,MAInB,aAAlByD,GACFzB,EAAS0B,YAAa,aAGxBxE,KAAKC,SAAS,CAAEqE,KAAM,YAAa,IACpCxE,YAAA,+BAEwB,IAAME,KAAKyE,UAAU,cAAW3E,YAAA,+BAChC,IAAME,KAAKyE,UAAU,cAAW3E,YAAA,+BAChC,IAAME,KAAKyE,UAAU,cAAW3E,YAAA,uBAOxC,KACf,MAAM,KAAEwE,GAAStE,KAAKe,MAET,QAATuD,GACFtE,KAAKyE,UAAUH,EACjB,GACD,CAzED,+BAAOI,CAAyB5D,EAAOC,GACrC,OAAID,EAAMyD,gBAAkBxD,EAAMuD,KACzB,CACLA,KAAMxD,EAAMyD,eAAiB,OAI1B,IACT,CAsDAE,UAAWH,GACT,MAAM,SAAExB,GAAa9C,KAAKc,MAC1BgC,EAAS6B,YAAaL,GACxB,CAUApE,SACE,MAAM,KAAE0E,EAAI,UAAExB,EAAS,EAAEyB,EAAC,QAAEC,GAAY9E,KAAKc,OACvC,KAAEwD,GAAStE,KAAKe,MAGhBgE,EAAmB,QAATT,IAAiBQ,EAAQlB,IAAIU,EAAMU,kBAAiB9B,KA3H7C,IA2H0E4B,EAAQlB,IAAIU,GAAMpB,KA3H5F,IA2H0H,GAEjJ,IAAI+B,EAEJ,MAAMC,EAAWJ,EAAQlB,IAAI,WAAYoB,kBACnCG,EAAWL,EAAQlB,IAAI,WAAYoB,kBACnCI,EAAWN,EAAQlB,IAAI,WAAYoB,kBAEzC,OAAOV,GACP,IAAK,MACHW,EAAmBC,EAAShC,KAAOiC,EAASjC,KAAOkC,EAASlC,KAAQ,EAClE1B,eAAAC,WAAA,CAAAC,SAAA,CACGwD,EAAShC,KAAO,GACflC,YAACqE,IAAa,CAAgBhF,MAAOmB,eAAAC,WAAA,CAAAC,SAAA,CAAEV,YAACsE,IAAI,CAACxD,GAAG,QAAQyD,KAAMC,MAAcxE,YAACa,IAAgB,CAACC,GAAE,0BAA2BC,eAAe,gBAAkB0D,YAAazF,KAAK0F,wBAA3J,WAChBR,EAASS,KAxIA,GAwIsBlC,KAAI3B,GAAMd,YAAC4E,IAAO,CAAU9D,GAAIA,GAARA,MAI3DqD,EAASjC,KAAO,GACflC,YAACqE,IAAa,CAAgBhF,MAAOmB,eAAAC,WAAA,CAAAC,SAAA,CAAEV,YAACsE,IAAI,CAACxD,GAAG,UAAUyD,KAAMM,MAAW7E,YAACa,IAAgB,CAACC,GAAE,0BAA2BC,eAAe,gBAAkB0D,YAAazF,KAAK8F,wBAA1J,WAChBX,EAASQ,KA9IA,GA8IsBlC,KAAIsC,GAAW/E,YAACgF,IAAO,CAA2BD,QAASA,GAA9BA,EAAQnC,IAAI,YAI5EwB,EAASlC,KAAO,GACflC,YAACqE,IAAa,CAAgBhF,MAAOmB,eAAAC,WAAA,CAAAC,SAAA,CAAEV,YAACsE,IAAI,CAACxD,GAAG,cAAcyD,KAAMU,MAAkBjF,YAACa,IAAgB,CAACC,GAAE,0BAA2BC,eAAe,aAAe0D,YAAazF,KAAKkG,wBAAlK,WAChBd,EAASO,KApJA,GAoJsBlC,KAAI3B,GAAMd,YAACmF,IAAM,CAAUrE,GAAIA,GAARA,SAI3D,GACJ,MACF,IAAK,WACHmD,EAjJiBC,IAAYhB,EAASgB,GAAUzB,KAAI3B,GACxDd,YAAC4E,IAAO,CAAU9D,GAAIA,GAARA,KAgJQsE,CAAelB,GACjC,MACF,IAAK,WACHD,EAhJiBE,IAAYjB,EAASiB,GAAU1B,KAAIsC,GACxD/E,YAACgF,IAAO,CAA2BD,QAASA,GAA9BA,EAAQnC,IAAI,WA+IJyC,CAAelB,GACjC,MACF,IAAK,WACHF,EA/IiBG,IAAYlB,EAASkB,GAAU3B,KAAI3B,GACxDd,YAACmF,IAAM,CAAUrE,GAAIA,GAARA,KA8ISwE,CAAelB,GAInC,OACE5D,eAAAC,WAAA,CAAAC,SAAA,CACEV,YAAA,OAAKC,UAAU,kCAA2B,EACxCD,YAAA,UAAQuF,QAASvG,KAAKwG,gBAAiBvF,UAAoB,QAATqD,EAAiB,cAAWmC,QAAU,EAACzF,YAACa,IAAgB,CAACC,GAAE,qBAAsBC,eAAe,SAClJf,YAAA,UAAQuF,QAASvG,KAAK0G,qBAAsBzF,UAAoB,aAATqD,EAAsB,cAAWmC,QAAU,EAACzF,YAACa,IAAgB,CAACC,GAAE,0BAA2BC,eAAe,cACjKf,YAAA,UAAQuF,QAASvG,KAAK2G,qBAAsB1F,UAAoB,aAATqD,EAAsB,cAAWmC,QAAU,EAACzF,YAACa,IAAgB,CAACC,GAAE,0BAA2BC,eAAe,cACjKf,YAAA,UAAQuF,QAASvG,KAAK4G,qBAAsB3F,UAAoB,aAATqD,EAAsB,cAAWmC,QAAU,EAACzF,YAACa,IAAgB,CAACC,GAAE,0BAA2BC,eAAe,YAGnKf,YAAA,OAAKC,UAAU,0BAA0B,0BAAc,EACrDD,YAAC6F,IAAc,CACbC,UAAU,iBACV1D,UAAWA,EACX2D,WAAY/G,KAAKgH,eACjBjC,QAASA,EACTkC,aAAcjG,YAACa,IAAgB,CAACC,GAAE,+BAAgCC,eAAe,mDACjFmF,gBAAc,UAEbjC,IAILjE,YAACmG,IAAM,UACLnG,YAAA,kBAAQ4D,EAAKwC,cAAcpD,EAAS3D,MAAO,CAAEwE,UAIrD,EAIaf,yBA5MS/C,IAAK,CAC3BqC,UAAWrC,EAAM8C,MAAM,CAAC,SAAU,cAClCiB,QAAS/D,EAAM8C,MAAM,CAAC,SAAU,YAChCgB,EAAG9D,EAAM8C,MAAM,CAAC,SAAU,eAC1BU,cAAexD,EAAM8C,MAAM,CAAC,SAAU,YAwMzBC,CAAyBuD,YAAWhD,I,oCC/MnD,MAAMiD,UAAiB3H,gBAAcC,cAAA,SAAAC,WAAAC,YAAA,sBAsBlByH,KAAS,KACxB,MAAM,SAAEzE,GAAa9C,KAAKc,MAC1BgC,EAAS0E,cAAyB,GACjC,IAAK,CAAEC,SAAS,IAAO,CAd1B5E,oBACE,MAAM,SAAEC,EAAQ,UAAE4E,EAAS,QAAE1E,GAAYhD,KAAKc,MAGvB,QAAnBkC,EAAQC,QAAoByE,EAAUxE,KAAO,GAIjDJ,EAAS6E,cACX,CAOAzH,SACE,MAAM,UAAEkD,EAAS,QAAE2B,EAAO,UAAE2C,EAAS,YAAEE,GAAgB5H,KAAKc,MAEtDmG,EAAejG,YAACa,IAAgB,CAACC,GAAE,gCAAiCC,eAAe,qDAEzF,OACEf,YAAC6G,IAAU,CACTC,aAAW,EACXC,QAAS/G,YAACsC,IAAiB,CAACxB,GAAG,yBAAkB,EAACd,YAACa,IAAgB,CAACC,GAAE,sCAAuCC,eAAe,+IAC5HiG,eAAa,EACbC,WAAW,UACXP,UAAWA,EACXZ,UAAU,mBACV/B,QAASA,EACT3B,UAAWA,EACX2D,WAAY/G,KAAKgH,eACjBC,aAAcA,EACdC,gBAAiBU,EACjBM,cAAY,GAGlB,EAIapE,yBA1DS/C,IAAK,CAC3B2G,UAAWS,YAAcpH,EAAO,YAChCqC,UAAWrC,EAAM8C,MAAM,CAAC,eAAgB,WAAY,cAAc,GAClEkB,UAAWhE,EAAM8C,MAAM,CAAC,eAAgB,WAAY,YAuDvCC,CAAyBC,YAAWuD,I,sBCzDnD,MAAMc,WAAoBzI,gBAAcC,cAAA,SAAAC,WAAAC,YAAA,sBAoBrBuI,IACf,MAAM,SAAEvF,GAAa9C,KAAKc,MAC1BgC,EAASwF,aAAkBD,GAAW,GACvC,CAdDxF,oBACE,MAAM,SAAEC,EAAQ,YAAEyF,EAAW,QAAEvF,GAAYhD,KAAKc,MAGzB,QAAnBkC,EAAQC,QAAoBsF,EAAYrF,KAAO,GAInDJ,EAAS0F,cAAiB,GAC5B,CAOAtI,SACE,MAAM,UAAEkD,EAAS,YAAEmF,GAAgBvI,KAAKc,MAExC,OAAKsC,GAAamF,EAAYhF,UAE1BvC,YAAA,OAAKC,UAAU,yDAAkD,EAC/DD,YAAA,OAAKC,UAAU,+BAAwB,EACrCD,YAACa,IAAgB,CAACC,GAAE,gCAAiCC,eAAe,uDAO1Ef,YAAA,OAAKC,UAAU,kCAAkC,0BAAc,EAC5DmC,EAAYpC,YAACwC,IAAgB,IAAM+E,EAAY9E,KAAIgF,GAClDzH,YAAC0H,KAAW,CAAiC5G,GAAI2G,EAAW7E,IAAI,WAAY+E,UAAwC,sBAA7BF,EAAW7E,IAAI,UAAoC5D,KAAK4I,cAAgB,MAA7IH,EAAW7E,IAAI,cAIzC,EAIaE,0BAtDS/C,IAAK,CAC3BwH,YAAaxH,EAAM8C,MAAM,CAAC,cAAe,UACzCT,UAAWrC,EAAM8C,MAAM,CAAC,cAAe,iBAoD1BC,CAAyBC,YAAWqE,KChDnD,MAAMS,WAAalJ,gBASjBkD,oBACE,MAAM,SAAEC,EAAQ,QAAEE,EAAO,SAAEmC,GAAanF,KAAKc,MAGtB,QAAnBkC,EAAQC,QAAoBkC,EAASjC,KAAO,GAIhDJ,EAASgG,cACX,CAEA5I,SACE,MAAM,UAAEkD,EAAS,SAAE+B,GAAanF,KAAKc,MAE/BuC,EACJrC,YAACsC,IAAiB,CAACxB,GAAG,qBAAc,EAClCd,YAACa,IAAgB,CAACC,GAAE,kCAAmCC,eAAe,8IAI1E,OAAKqB,GAAa+B,EAAS5B,UAEvBvC,YAAA,OAAKC,UAAU,mDAA4C,EACxDoC,EAEDrC,YAAA,OAAKC,UAAU,+BAAwB,EACrCD,YAACa,IAAgB,CAACC,GAAE,gCAAiCC,eAAe,uDAO1Ef,YAAA,OAAKC,UAAU,4BAA4B,0BAAc,EACtDoC,EAEAD,EAAapC,YAACwC,IAAgB,IAAO2B,EAAS1B,KAAIsC,GACjD/E,YAACgF,IAAO,CAA2BD,QAASA,GAA9BA,EAAQnC,IAAI,WAIlC,EAIaE,0BA3DS/C,IAAK,CAC3BoE,SAAUpE,EAAM8C,MAAM,CAAC,SAAU,OAAQ,UACzCkF,kBAAmBhI,EAAM8C,MAAM,CAAC,SAAU,OAAQ,iBAyDrCC,CAAyBC,YAAW8E,KCnDnD,MAAM7E,GAAWC,YAAe,CAC9B5D,MAAO,CAAEyB,GAAG,gBAAkBC,eAAe,WAC7CiH,cAAe,CAAElH,GAAG,yBAA2BC,eAAe,oBAQhE,MAAMkH,WAAgBtJ,gBAAcC,cAAA,SAAAC,WAAAC,YAAA,0BAYd,KAClBE,KAAKkJ,OAAOC,WAAW,IACxBrJ,YAAA,eAEQsJ,IACPpJ,KAAKkJ,OAASE,CAAC,GAChB,CAEDlJ,SACE,MAAM,KAAE0E,EAAI,YAAEgD,EAAW,YAAEyB,GAAgBrJ,KAAKc,OAC1C,SAAEwI,GAAatJ,KAAKuJ,QAAQC,SAElC,OACEhI,eAACiI,IAAM,CAACvC,gBAAiBU,EAAa8B,IAAK1J,KAAK2J,OAAQC,MAAOhF,EAAKwC,cAAcpD,GAAS3D,OAAOqB,SAAA,CAChGV,YAAC6I,IAAY,CACXtE,KAAM8D,EAAc,SAAW,UAC/BS,cAAeT,EAAcU,IAAalE,IAC1CxF,MAAOuE,EAAKwC,cAAciC,EAAcrF,GAASgF,cAAgBhF,GAAS3D,OAC1EkG,QAASvG,KAAKgK,kBACdpC,YAAaA,IAGf5G,YAAA,OAAKC,UAAU,+BAAwB,EACrCD,YAACiJ,IAAM,KAGRZ,EACCrI,YAACkJ,EAAa,IAEd1I,eAAAC,WAAA,CAAAC,SAAA,CACEV,YAAA,OAAKC,UAAU,kCAA2B,EACxCD,YAACmJ,IAAO,CAACC,OAAK,EAACC,GAAG,iBAAU,EAC1BrJ,YAACa,IAAgB,CAACyI,QAAQ,MAAMxI,GAAE,4BAA6BC,eAAe,WAGhFf,YAACmJ,IAAO,CAACC,OAAK,EAACC,GAAG,sBAAe,EAC/BrJ,YAACa,IAAgB,CAACyI,QAAQ,MAAMxI,GAAE,wBAAyBC,eAAe,cAG3EuH,GACCtI,YAACmJ,IAAO,CAACC,OAAK,EAACC,GAAG,6BAAsB,EACtCrJ,YAACa,IAAgB,CAACyI,QAAQ,MAAMxI,GAAE,4BAA6BC,eAAe,YAIlFf,YAACmJ,IAAO,CAACC,OAAK,EAACC,GAAG,uBAAgB,EAChCrJ,YAACa,IAAgB,CAACyI,QAAQ,MAAMxI,GAAE,yBAA0BC,eAAe,WAI/Ef,YAACuJ,IAAM,UACLvJ,YAACwJ,IAAK,CAACC,KAAK,gBAAgBC,UAAW7B,KACvC7H,YAACwJ,IAAK,CAACC,KAAK,iBAAiBC,UAAW9H,IACxC5B,YAACwJ,IAAK,CAACC,KAAK,uBAAuBC,UAAWtC,KAC9CpH,YAACwJ,IAAK,CAACJ,OAAK,EAACK,KAAM,CAAC,WAAY,iBAAkB,iBAAW,EAC3DzJ,YAACsG,EAAQ,CAACM,YAAaA,MAI3B5G,YAACmG,IAAM,UACLnG,YAAA,kBAAQ4D,EAAKwC,cAAcpD,GAAS3D,QACpCW,YAAA,QAAMiB,KAAK,SAAS0I,QAAStB,EAAc,UAAY,cAMnE,EAEDvJ,YAjFKmJ,GAAO,eAEW,CACpBO,SAAUoB,IAAUC,SAgFT/G,6BAxFS/C,IAAK,CAC3B+J,OAAQ/J,EAAM8C,MAAM,CAAC,OAAQ,WAC7BwF,YAAatI,EAAM8C,MAAM,CAAC,SAAU,gBAAkBkH,OAsFzCjH,CAAyBuD,YAAW4B,I","file":"js/flavours/glitch/async/explore-f4bbc4843baa7e1bb2d5.chunk.js","sourcesContent":["import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { FormattedMessage } from 'react-intl';\n\nimport classNames from 'classnames';\n\nimport { Blurhash } from 'flavours/glitch/components/blurhash';\nimport { accountsCountRenderer } from 'flavours/glitch/components/hashtag';\nimport { RelativeTimestamp } from 'flavours/glitch/components/relative_timestamp';\nimport { ShortNumber } from 'flavours/glitch/components/short_number';\nimport { Skeleton } from 'flavours/glitch/components/skeleton';\n\nexport default class Story extends PureComponent {\n\n static propTypes = {\n url: PropTypes.string,\n title: PropTypes.string,\n lang: PropTypes.string,\n publisher: PropTypes.string,\n publishedAt: PropTypes.string,\n author: PropTypes.string,\n sharedTimes: PropTypes.number,\n thumbnail: PropTypes.string,\n thumbnailDescription: PropTypes.string,\n blurhash: PropTypes.string,\n expanded: PropTypes.bool,\n };\n\n state = {\n thumbnailLoaded: false,\n };\n\n handleImageLoad = () => this.setState({ thumbnailLoaded: true });\n\n render () {\n const { expanded, url, title, lang, publisher, author, publishedAt, sharedTimes, thumbnail, thumbnailDescription, blurhash } = this.props;\n\n const { thumbnailLoaded } = this.state;\n\n return (\n \n
\n
{publisher ? {publisher} : }{publishedAt && <> · }
\n
{title ? title : }
\n
{author && <>{author} }} /> · }{typeof sharedTimes === 'number' ? : }
\n
\n\n
\n {thumbnail ? (\n <>\n
\n {thumbnailDescription}\n \n ) : }\n
\n
\n );\n }\n\n}\n","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { FormattedMessage } from 'react-intl';\n\nimport { withRouter } from 'react-router-dom';\n\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { connect } from 'react-redux';\n\nimport { fetchTrendingLinks } from 'flavours/glitch/actions/trends';\nimport { DismissableBanner } from 'flavours/glitch/components/dismissable_banner';\nimport { LoadingIndicator } from 'flavours/glitch/components/loading_indicator';\nimport { WithRouterPropTypes } from 'flavours/glitch/utils/react_router';\n\nimport Story from './components/story';\n\nconst mapStateToProps = state => ({\n links: state.getIn(['trends', 'links', 'items']),\n isLoading: state.getIn(['trends', 'links', 'isLoading']),\n});\n\nclass Links extends PureComponent {\n\n static propTypes = {\n links: ImmutablePropTypes.list,\n isLoading: PropTypes.bool,\n dispatch: PropTypes.func.isRequired,\n ...WithRouterPropTypes,\n };\n\n componentDidMount () {\n const { dispatch, links, history } = this.props;\n\n // If we're navigating back to the screen, do not trigger a reload\n if (history.action === 'POP' && links.size > 0) {\n return;\n }\n\n dispatch(fetchTrendingLinks());\n }\n\n render () {\n const { isLoading, links } = this.props;\n\n const banner = (\n \n \n \n );\n\n if (!isLoading && links.isEmpty()) {\n return (\n
\n {banner}\n\n
\n \n
\n
\n );\n }\n\n return (\n
\n {banner}\n\n {isLoading ? () : links.map((link, i) => (\n \n ))}\n
\n );\n }\n\n}\n\nexport default connect(mapStateToProps)(withRouter(Links));\n","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { injectIntl, defineMessages, FormattedMessage } from 'react-intl';\n\nimport { Helmet } from 'react-helmet';\n\nimport { List as ImmutableList } from 'immutable';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { connect } from 'react-redux';\n\n\nimport FindInPageIcon from '@/material-icons/400-24px/find_in_page.svg?react';\nimport PeopleIcon from '@/material-icons/400-24px/group.svg?react';\nimport TagIcon from '@/material-icons/400-24px/tag.svg?react';\nimport { submitSearch, expandSearch } from 'flavours/glitch/actions/search';\nimport { ImmutableHashtag as Hashtag } from 'flavours/glitch/components/hashtag';\nimport { Icon } from 'flavours/glitch/components/icon';\nimport ScrollableList from 'flavours/glitch/components/scrollable_list';\nimport Account from 'flavours/glitch/containers/account_container';\nimport Status from 'flavours/glitch/containers/status_container';\n\nimport { SearchSection } from './components/search_section';\n\nconst messages = defineMessages({\n title: { id: 'search_results.title', defaultMessage: 'Search for {q}' },\n});\n\nconst mapStateToProps = state => ({\n isLoading: state.getIn(['search', 'isLoading']),\n results: state.getIn(['search', 'results']),\n q: state.getIn(['search', 'searchTerm']),\n submittedType: state.getIn(['search', 'type']),\n});\n\nconst INITIAL_PAGE_LIMIT = 10;\nconst INITIAL_DISPLAY = 4;\n\nconst hidePeek = list => {\n if (list.size > INITIAL_PAGE_LIMIT && list.size % INITIAL_PAGE_LIMIT === 1) {\n return list.skipLast(1);\n } else {\n return list;\n }\n};\n\nconst renderAccounts = accounts => hidePeek(accounts).map(id => (\n \n));\n\nconst renderHashtags = hashtags => hidePeek(hashtags).map(hashtag => (\n \n));\n\nconst renderStatuses = statuses => hidePeek(statuses).map(id => (\n \n));\n\nclass Results extends PureComponent {\n\n static propTypes = {\n results: ImmutablePropTypes.contains({\n accounts: ImmutablePropTypes.orderedSet,\n statuses: ImmutablePropTypes.orderedSet,\n hashtags: ImmutablePropTypes.orderedSet,\n }),\n isLoading: PropTypes.bool,\n multiColumn: PropTypes.bool,\n dispatch: PropTypes.func.isRequired,\n q: PropTypes.string,\n intl: PropTypes.object,\n submittedType: PropTypes.oneOf(['accounts', 'statuses', 'hashtags']),\n };\n\n state = {\n type: this.props.submittedType || 'all',\n };\n\n static getDerivedStateFromProps(props, state) {\n if (props.submittedType !== state.type) {\n return {\n type: props.submittedType || 'all',\n };\n }\n\n return null;\n }\n\n handleSelectAll = () => {\n const { submittedType, dispatch } = this.props;\n\n // If we originally searched for a specific type, we need to resubmit\n // the query to get all types of results\n if (submittedType) {\n dispatch(submitSearch());\n }\n\n this.setState({ type: 'all' });\n };\n\n handleSelectAccounts = () => {\n const { submittedType, dispatch } = this.props;\n\n // If we originally searched for something else (but not everything),\n // we need to resubmit the query for this specific type\n if (submittedType !== 'accounts') {\n dispatch(submitSearch('accounts'));\n }\n\n this.setState({ type: 'accounts' });\n };\n\n handleSelectHashtags = () => {\n const { submittedType, dispatch } = this.props;\n\n // If we originally searched for something else (but not everything),\n // we need to resubmit the query for this specific type\n if (submittedType !== 'hashtags') {\n dispatch(submitSearch('hashtags'));\n }\n\n this.setState({ type: 'hashtags' });\n };\n\n handleSelectStatuses = () => {\n const { submittedType, dispatch } = this.props;\n\n // If we originally searched for something else (but not everything),\n // we need to resubmit the query for this specific type\n if (submittedType !== 'statuses') {\n dispatch(submitSearch('statuses'));\n }\n\n this.setState({ type: 'statuses' });\n };\n\n handleLoadMoreAccounts = () => this._loadMore('accounts');\n handleLoadMoreStatuses = () => this._loadMore('statuses');\n handleLoadMoreHashtags = () => this._loadMore('hashtags');\n\n _loadMore (type) {\n const { dispatch } = this.props;\n dispatch(expandSearch(type));\n }\n\n handleLoadMore = () => {\n const { type } = this.state;\n\n if (type !== 'all') {\n this._loadMore(type);\n }\n };\n\n render () {\n const { intl, isLoading, q, results } = this.props;\n const { type } = this.state;\n\n // We request 1 more result than we display so we can tell if there'd be a next page\n const hasMore = type !== 'all' ? results.get(type, ImmutableList()).size > INITIAL_PAGE_LIMIT && results.get(type).size % INITIAL_PAGE_LIMIT === 1 : false;\n\n let filteredResults;\n\n const accounts = results.get('accounts', ImmutableList());\n const hashtags = results.get('hashtags', ImmutableList());\n const statuses = results.get('statuses', ImmutableList());\n\n switch(type) {\n case 'all':\n filteredResults = (accounts.size + hashtags.size + statuses.size) > 0 ? (\n <>\n {accounts.size > 0 && (\n } onClickMore={this.handleLoadMoreAccounts}>\n {accounts.take(INITIAL_DISPLAY).map(id => )}\n \n )}\n\n {hashtags.size > 0 && (\n } onClickMore={this.handleLoadMoreHashtags}>\n {hashtags.take(INITIAL_DISPLAY).map(hashtag => )}\n \n )}\n\n {statuses.size > 0 && (\n } onClickMore={this.handleLoadMoreStatuses}>\n {statuses.take(INITIAL_DISPLAY).map(id => )}\n \n )}\n \n ) : [];\n break;\n case 'accounts':\n filteredResults = renderAccounts(accounts);\n break;\n case 'hashtags':\n filteredResults = renderHashtags(hashtags);\n break;\n case 'statuses':\n filteredResults = renderStatuses(statuses);\n break;\n }\n\n return (\n <>\n
\n \n \n \n \n
\n\n
\n }\n bindToDocument\n >\n {filteredResults}\n \n
\n\n \n {intl.formatMessage(messages.title, { q })}\n \n \n );\n }\n\n}\n\nexport default connect(mapStateToProps)(injectIntl(Results));\n","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { FormattedMessage } from 'react-intl';\n\nimport { withRouter } from 'react-router-dom';\n\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { connect } from 'react-redux';\n\nimport { debounce } from 'lodash';\n\n\nimport { fetchTrendingStatuses, expandTrendingStatuses } from 'flavours/glitch/actions/trends';\nimport { DismissableBanner } from 'flavours/glitch/components/dismissable_banner';\nimport StatusList from 'flavours/glitch/components/status_list';\nimport { getStatusList } from 'flavours/glitch/selectors';\nimport { WithRouterPropTypes } from 'flavours/glitch/utils/react_router';\n\nconst mapStateToProps = state => ({\n statusIds: getStatusList(state, 'trending'),\n isLoading: state.getIn(['status_lists', 'trending', 'isLoading'], true),\n hasMore: !!state.getIn(['status_lists', 'trending', 'next']),\n});\n\nclass Statuses extends PureComponent {\n\n static propTypes = {\n statusIds: ImmutablePropTypes.list,\n isLoading: PropTypes.bool,\n hasMore: PropTypes.bool,\n multiColumn: PropTypes.bool,\n dispatch: PropTypes.func.isRequired,\n ...WithRouterPropTypes,\n };\n\n componentDidMount () {\n const { dispatch, statusIds, history } = this.props;\n\n // If we're navigating back to the screen, do not trigger a reload\n if (history.action === 'POP' && statusIds.size > 0) {\n return;\n }\n\n dispatch(fetchTrendingStatuses());\n }\n\n handleLoadMore = debounce(() => {\n const { dispatch } = this.props;\n dispatch(expandTrendingStatuses());\n }, 300, { leading: true });\n\n render () {\n const { isLoading, hasMore, statusIds, multiColumn } = this.props;\n\n const emptyMessage = ;\n\n return (\n }\n alwaysPrepend\n timelineId='explore'\n statusIds={statusIds}\n scrollKey='explore-statuses'\n hasMore={hasMore}\n isLoading={isLoading}\n onLoadMore={this.handleLoadMore}\n emptyMessage={emptyMessage}\n bindToDocument={!multiColumn}\n withCounters\n />\n );\n }\n\n}\n\nexport default connect(mapStateToProps)(withRouter(Statuses));\n","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { FormattedMessage } from 'react-intl';\n\nimport { withRouter } from 'react-router-dom';\n\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { connect } from 'react-redux';\n\nimport { fetchSuggestions, dismissSuggestion } from 'flavours/glitch/actions/suggestions';\nimport { LoadingIndicator } from 'flavours/glitch/components/loading_indicator';\nimport AccountCard from 'flavours/glitch/features/directory/components/account_card';\nimport { WithRouterPropTypes } from 'flavours/glitch/utils/react_router';\n\nconst mapStateToProps = state => ({\n suggestions: state.getIn(['suggestions', 'items']),\n isLoading: state.getIn(['suggestions', 'isLoading']),\n});\n\nclass Suggestions extends PureComponent {\n\n static propTypes = {\n isLoading: PropTypes.bool,\n suggestions: ImmutablePropTypes.list,\n dispatch: PropTypes.func.isRequired,\n ...WithRouterPropTypes,\n };\n\n componentDidMount () {\n const { dispatch, suggestions, history } = this.props;\n\n // If we're navigating back to the screen, do not trigger a reload\n if (history.action === 'POP' && suggestions.size > 0) {\n return;\n }\n\n dispatch(fetchSuggestions(true));\n }\n\n handleDismiss = (accountId) => {\n const { dispatch } = this.props;\n dispatch(dismissSuggestion(accountId));\n };\n\n render () {\n const { isLoading, suggestions } = this.props;\n\n if (!isLoading && suggestions.isEmpty()) {\n return (\n
\n
\n \n
\n
\n );\n }\n\n return (\n
\n {isLoading ? : suggestions.map(suggestion => (\n \n ))}\n
\n );\n }\n\n}\n\nexport default connect(mapStateToProps)(withRouter(Suggestions));\n","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { FormattedMessage } from 'react-intl';\n\nimport { withRouter } from 'react-router-dom';\n\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { connect } from 'react-redux';\n\nimport { fetchTrendingHashtags } from 'flavours/glitch/actions/trends';\nimport { DismissableBanner } from 'flavours/glitch/components/dismissable_banner';\nimport { ImmutableHashtag as Hashtag } from 'flavours/glitch/components/hashtag';\nimport { LoadingIndicator } from 'flavours/glitch/components/loading_indicator';\nimport { WithRouterPropTypes } from 'flavours/glitch/utils/react_router';\n\nconst mapStateToProps = state => ({\n hashtags: state.getIn(['trends', 'tags', 'items']),\n isLoadingHashtags: state.getIn(['trends', 'tags', 'isLoading']),\n});\n\nclass Tags extends PureComponent {\n\n static propTypes = {\n hashtags: ImmutablePropTypes.list,\n isLoading: PropTypes.bool,\n dispatch: PropTypes.func.isRequired,\n ...WithRouterPropTypes,\n };\n\n componentDidMount () {\n const { dispatch, history, hashtags } = this.props;\n\n // If we're navigating back to the screen, do not trigger a reload\n if (history.action === 'POP' && hashtags.size > 0) {\n return;\n }\n\n dispatch(fetchTrendingHashtags());\n }\n\n render () {\n const { isLoading, hashtags } = this.props;\n\n const banner = (\n \n \n \n );\n\n if (!isLoading && hashtags.isEmpty()) {\n return (\n
\n {banner}\n\n
\n \n
\n
\n );\n }\n\n return (\n
\n {banner}\n\n {isLoading ? () : hashtags.map(hashtag => (\n \n ))}\n
\n );\n }\n\n}\n\nexport default connect(mapStateToProps)(withRouter(Tags));\n","import PropTypes from 'prop-types';\nimport { PureComponent } from 'react';\n\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\n\nimport { Helmet } from 'react-helmet';\nimport { NavLink, Switch, Route } from 'react-router-dom';\n\nimport { connect } from 'react-redux';\n\n\nimport SearchIcon from '@/material-icons/400-24px/search.svg?react';\nimport TagIcon from '@/material-icons/400-24px/tag.svg?react';\nimport Column from 'flavours/glitch/components/column';\nimport ColumnHeader from 'flavours/glitch/components/column_header';\nimport Search from 'flavours/glitch/features/compose/containers/search_container';\nimport { trendsEnabled } from 'flavours/glitch/initial_state';\n\nimport Links from './links';\nimport SearchResults from './results';\nimport Statuses from './statuses';\nimport Suggestions from './suggestions';\nimport Tags from './tags';\n\nconst messages = defineMessages({\n title: { id: 'explore.title', defaultMessage: 'Explore' },\n searchResults: { id: 'explore.search_results', defaultMessage: 'Search results' },\n});\n\nconst mapStateToProps = state => ({\n layout: state.getIn(['meta', 'layout']),\n isSearching: state.getIn(['search', 'submitted']) || !trendsEnabled,\n});\n\nclass Explore extends PureComponent {\n\n static contextTypes = {\n identity: PropTypes.object,\n };\n\n static propTypes = {\n intl: PropTypes.object.isRequired,\n multiColumn: PropTypes.bool,\n isSearching: PropTypes.bool,\n };\n\n handleHeaderClick = () => {\n this.column.scrollTop();\n };\n\n setRef = c => {\n this.column = c;\n };\n\n render() {\n const { intl, multiColumn, isSearching } = this.props;\n const { signedIn } = this.context.identity;\n\n return (\n \n \n\n
\n \n
\n\n {isSearching ? (\n \n ) : (\n <>\n
\n \n \n \n\n \n \n \n\n {signedIn && (\n \n \n \n )}\n\n \n \n \n
\n\n \n \n \n \n \n \n \n \n\n \n {intl.formatMessage(messages.title)}\n \n \n \n )}\n
\n );\n }\n\n}\n\nexport default connect(mapStateToProps)(injectIntl(Explore));\n"],"sourceRoot":""}