update pleroma-fe
authorFloatingGhost <hannah@coffee-and-dreams.uk>
Tue, 14 Jun 2022 16:10:31 +0000 (17:10 +0100)
committerFloatingGhost <hannah@coffee-and-dreams.uk>
Tue, 14 Jun 2022 16:10:31 +0000 (17:10 +0100)
priv/static/index.html
priv/static/static/js/2.55d5f2926c7b22177236.js [moved from priv/static/static/js/2.eb2c361cdcbd8c4f7638.js with 55% similarity]
priv/static/static/js/2.55d5f2926c7b22177236.js.map [moved from priv/static/static/js/2.eb2c361cdcbd8c4f7638.js.map with 72% similarity]
priv/static/static/js/app.23b7ec270c69f4f99782.js [deleted file]
priv/static/static/js/app.23b7ec270c69f4f99782.js.map [deleted file]
priv/static/static/js/app.e8949b9a3c7cfdab2e4c.js [new file with mode: 0644]
priv/static/static/js/app.e8949b9a3c7cfdab2e4c.js.map [new file with mode: 0644]
priv/static/sw-pleroma.js

index 5a32014f418cc782fb25d7bf606d46acd28c25bc..ea41fd7953796d4e6559ac5a0000e5d575d098f9 100644 (file)
@@ -1 +1 @@
-<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,user-scalable=no"><title>Pleroma</title><link rel=stylesheet href=/static/font/css/fontello.css><link rel=stylesheet href=/static/font/css/animation.css><link rel=stylesheet href=/static/font/tiresias.css><link rel=stylesheet href=/static/font/css/lato.css><link rel=stylesheet href=/static/mfm.css><!--server-generated-meta--><link rel=icon type=image/png href=/favicon.png><link href=/static/css/app.ab6cb01d5b0b782e7457.css rel=stylesheet></head><body class=hidden><noscript>To use Pleroma, please enable JavaScript.</noscript><div id=app></div><script type=text/javascript src=/static/js/vendors~app.be2014390281e934ebf1.js></script><script type=text/javascript src=/static/js/app.23b7ec270c69f4f99782.js></script></body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,user-scalable=no"><title>Pleroma</title><link rel=stylesheet href=/static/font/css/fontello.css><link rel=stylesheet href=/static/font/css/animation.css><link rel=stylesheet href=/static/font/tiresias.css><link rel=stylesheet href=/static/font/css/lato.css><link rel=stylesheet href=/static/mfm.css><!--server-generated-meta--><link rel=icon type=image/png href=/favicon.png><link href=/static/css/app.ab6cb01d5b0b782e7457.css rel=stylesheet></head><body class=hidden><noscript>To use Pleroma, please enable JavaScript.</noscript><div id=app></div><script type=text/javascript src=/static/js/vendors~app.be2014390281e934ebf1.js></script><script type=text/javascript src=/static/js/app.e8949b9a3c7cfdab2e4c.js></script></body></html>
\ No newline at end of file
similarity index 55%
rename from priv/static/static/js/2.eb2c361cdcbd8c4f7638.js
rename to priv/static/static/js/2.55d5f2926c7b22177236.js
index 046fcc4b4a9ee070345dbb30072a6f4093fb2411..97fa806532b9768c6d2fcc63c1b746de67163a73 100644 (file)
@@ -1,2 +1,2 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{628:function(e,t,l){},629:function(e,t,l){},630:function(e,t,l){},631:function(e,t,l){},632:function(e,t,l){},633:function(e,t,l){},634:function(e,t,l){},635:function(e,t,l){},636:function(e,t,l){},637:function(e,t,l){},638:function(e,t,l){},639:function(e,t,l){},644:function(e,t,l){},645:function(e,t,l){},646:function(e,t,l){},647:function(e,t,l){},648:function(e,t,l){},649:function(e,t,l){},650:function(e,t,l){},651:function(e,t,l){},652:function(e,t,l){},653:function(e,t,l){},654:function(e,t,l){},656:function(e,t,l){"use strict";l(628)},657:function(e,t,l){"use strict";l(629)},658:function(e,t,l){"use strict";l(630)},659:function(e,t,l){"use strict";l(631)},660:function(e,t,l){"use strict";l(632)},661:function(e,t,l){"use strict";l(633)},662:function(e,t,l){"use strict";l(634)},663:function(e,t,l){},664:function(e,t,l){"use strict";l(635)},665:function(e,t,l){"use strict";l(636)},666:function(e,t,l){"use strict";l(637)},670:function(e,t,l){"use strict";l(638)},671:function(e,t,l){"use strict";l(639)},695:function(e,t,l){"use strict";l(644)},698:function(e,t,l){"use strict";l(645)},699:function(e,t,l){"use strict";l(646)},700:function(e,t,l){"use strict";l(647)},701:function(e,t,l){"use strict";l(648)},702:function(e,t,l){"use strict";l(649)},703:function(e,t,l){"use strict";l(650)},704:function(e,t,l){"use strict";l(651)},705:function(e,t,l){"use strict";l(652)},706:function(e,t,l){"use strict";l(653)},707:function(e,t,l){"use strict";l(654)},708:function(e,t,l){"use strict";l.r(t);var a=l(0);const n=["label"],s=["label"],o=["label"],c=["label"],i=["label"],r=["label"],b=["label"],u=["label"],d=["label"];var O=l(71);const p=["label"],j={class:"setting-item"},m={class:"setting-item"},h={class:"setting-item"},f={class:"setting-item"},g={class:"setting-item"},k={class:"setting-item"};var v=l(5),y=l.n(v);const w={class:"importer"},_={key:2},V=Object(a.l)(" "+Object(a.O)(" ")+" "),$={key:3},C=Object(a.l)(" "+Object(a.O)(" ")+" ");var T=l(6),x=l(3);T.c.add(x.r,x.rb);var L={props:{submitHandler:{type:Function,required:!0},submitButtonLabel:{type:String},successMessage:{type:String},errorMessage:{type:String}},data:function(){return{file:null,error:!1,success:!1,submitting:!1}},methods:{change:function(){this.file=this.$refs.input.files[0]},submit:function(){var e=this;this.dismiss(),this.submitting=!0,this.submitHandler(this.file).then((function(){e.success=!0})).catch((function(){e.error=!0})).finally((function(){e.submitting=!1}))},dismiss:function(){this.success=!1,this.error=!1}}},S=(l(656),l(4)),D=l.n(S);var P=D()(L,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("FAIcon");return Object(a.D)(),Object(a.j)("div",w,[Object(a.k)("form",null,[Object(a.k)("input",{ref:"input",type:"file",onChange:t[0]||(t[0]=(...t)=>e.change&&e.change(...t))},null,544)]),e.submitting?(Object(a.D)(),Object(a.h)(c,{key:0,class:"importer-uploading",spin:"",icon:"circle-notch"})):(Object(a.D)(),Object(a.j)("button",{key:1,class:"btn button-default",onClick:t[1]||(t[1]=(...t)=>e.submit&&e.submit(...t))},Object(a.O)(e.submitButtonLabel||e.$t("importer.submit")),1)),e.success?(Object(a.D)(),Object(a.j)("div",_,[Object(a.k)("button",{class:"button-unstyled",onClick:t[2]||(t[2]=(...t)=>e.dismiss&&e.dismiss(...t))},[Object(a.m)(c,{icon:"times"})]),V,Object(a.k)("span",null,Object(a.O)(e.successMessage||e.$t("importer.success")),1)])):e.error?(Object(a.D)(),Object(a.j)("div",$,[Object(a.k)("button",{class:"button-unstyled",onClick:t[3]||(t[3]=(...t)=>e.dismiss&&e.dismiss(...t))},[Object(a.m)(c,{icon:"times"})]),C,Object(a.k)("span",null,Object(a.O)(e.errorMessage||e.$t("importer.error")),1)])):Object(a.i)("",!0)])}]]);const U={class:"exporter"},I={key:0};T.c.add(x.r);var B={props:{getContent:{type:Function,required:!0},filename:{type:String,default:"export.csv"},exportButtonLabel:{type:String},processingMessage:{type:String}},data:function(){return{processing:!1}},methods:{process:function(){var e=this;this.processing=!0,this.getContent().then((function(t){var l=document.createElement("a");l.setAttribute("href","data:text/plain;charset=utf-8,"+encodeURIComponent(t)),l.setAttribute("download",e.filename),l.style.display="none",document.body.appendChild(l),l.click(),document.body.removeChild(l),setTimeout((function(){e.processing=!1}),2e3)}))}}};l(657);var F=D()(B,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("FAIcon");return Object(a.D)(),Object(a.j)("div",U,[e.processing?(Object(a.D)(),Object(a.j)("div",I,[Object(a.m)(c,{icon:"circle-notch",size:"lg",spin:""}),Object(a.k)("span",null,Object(a.O)(e.processingMessage||e.$t("exporter.processing")),1)])):(Object(a.D)(),Object(a.j)("button",{key:1,class:"btn button-default",onClick:t[0]||(t[0]=(...t)=>e.process&&e.process(...t))},Object(a.O)(e.exportButtonLabel||e.$t("exporter.export")),1))])}]]),E=l(51),M=l(8);function A(e,t){var l=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),l.push.apply(l,a)}return l}var R={data:function(){return{activeTab:"profile",newDomainToMute:""}},created:function(){this.$store.dispatch("fetchTokens")},components:{Importer:P,Exporter:F,Checkbox:E.a},computed:function(e){for(var t=1;t<arguments.length;t++){var l=null!=arguments[t]?arguments[t]:{};t%2?A(Object(l),!0).forEach((function(t){y()(e,t,l[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(l)):A(Object(l)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(l,t))}))}return e}({},Object(M.e)({backendInteractor:function(e){return e.api.backendInteractor},user:function(e){return e.users.currentUser}})),methods:{getFollowsContent:function(){return this.backendInteractor.exportFriends({id:this.user.id}).then(this.generateExportableUsersContent)},getBlocksContent:function(){return this.backendInteractor.fetchBlocks().then(this.generateExportableUsersContent)},getMutesContent:function(){return this.backendInteractor.fetchMutes().then(this.generateExportableUsersContent)},importFollows:function(e){return this.backendInteractor.importFollows({file:e}).then((function(e){if(!e)throw new Error("failed")}))},importBlocks:function(e){return this.backendInteractor.importBlocks({file:e}).then((function(e){if(!e)throw new Error("failed")}))},importMutes:function(e){return this.backendInteractor.importMutes({file:e}).then((function(e){if(!e)throw new Error("failed")}))},generateExportableUsersContent:function(e){return e.map((function(e){return e&&e.is_local?e.screen_name+"@"+location.hostname:e.screen_name})).join("\n")}}};var W=D()(R,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("Importer"),i=Object(a.J)("Exporter");return Object(a.D)(),Object(a.j)("div",{label:e.$t("settings.data_import_export_tab")},[Object(a.k)("div",j,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.follow_import")),1),Object(a.k)("p",null,Object(a.O)(e.$t("settings.import_followers_from_a_csv_file")),1),Object(a.m)(c,{"submit-handler":e.importFollows,"success-message":e.$t("settings.follows_imported"),"error-message":e.$t("settings.follow_import_error")},null,8,["submit-handler","success-message","error-message"])]),Object(a.k)("div",m,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.follow_export")),1),Object(a.m)(i,{"get-content":e.getFollowsContent,filename:"friends.csv","export-button-label":e.$t("settings.follow_export_button")},null,8,["get-content","export-button-label"])]),Object(a.k)("div",h,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.block_import")),1),Object(a.k)("p",null,Object(a.O)(e.$t("settings.import_blocks_from_a_csv_file")),1),Object(a.m)(c,{"submit-handler":e.importBlocks,"success-message":e.$t("settings.blocks_imported"),"error-message":e.$t("settings.block_import_error")},null,8,["submit-handler","success-message","error-message"])]),Object(a.k)("div",f,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.block_export")),1),Object(a.m)(i,{"get-content":e.getBlocksContent,filename:"blocks.csv","export-button-label":e.$t("settings.block_export_button")},null,8,["get-content","export-button-label"])]),Object(a.k)("div",g,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.mute_import")),1),Object(a.k)("p",null,Object(a.O)(e.$t("settings.import_mutes_from_a_csv_file")),1),Object(a.m)(c,{"submit-handler":e.importMutes,"success-message":e.$t("settings.mutes_imported"),"error-message":e.$t("settings.mute_import_error")},null,8,["submit-handler","success-message","error-message"])]),Object(a.k)("div",k,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.mute_export")),1),Object(a.m)(i,{"get-content":e.getMutesContent,filename:"mutes.csv","export-button-label":e.$t("settings.mute_export_button")},null,8,["get-content","export-button-label"])])],8,p)}]]);const J=["label"],N={class:"usersearch-wrapper"},q={class:"bulk-actions"},G=["label"],H={label:"Users"},z={class:"usersearch-wrapper"},K={class:"bulk-actions"},Y=["label"],Z={class:"domain-mute-form"},Q={class:"bulk-actions"};var X=l(16),ee=l.n(X),te=l(21),le=l.n(te),ae=l(224),ne=l.n(ae);const se={class:"autosuggest"},oe=["placeholder"],ce={key:0,class:"autosuggest-results"};var ie={props:{query:{type:Function,required:!0},filter:{type:Function},placeholder:{type:String,default:"Search..."}},data:function(){return{term:"",timeout:null,results:[],resultsVisible:!1}},computed:{filtered:function(){return this.filter?this.filter(this.results):this.results}},watch:{term:function(e){this.fetchResults(e)}},methods:{fetchResults:function(e){var t=this;clearTimeout(this.timeout),this.timeout=setTimeout((function(){t.results=[],e&&t.query(e).then((function(e){t.results=e}))}),500)},onInputClick:function(){this.resultsVisible=!0},onClickOutside:function(){this.resultsVisible=!1}}};l(658);var re=D()(ie,[["render",function(e,t,l,n,s,o){const c=Object(a.K)("click-outside");return Object(a.W)((Object(a.D)(),Object(a.j)("div",se,[Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[0]||(t[0]=t=>e.term=t),placeholder:e.placeholder,class:"autosuggest-input",onClick:t[1]||(t[1]=(...t)=>e.onInputClick&&e.onInputClick(...t))},null,8,oe),[[a.S,e.term]]),e.resultsVisible&&e.filtered.length>0?(Object(a.D)(),Object(a.j)("div",ce,[(Object(a.D)(!0),Object(a.j)(a.a,null,Object(a.H)(e.filtered,t=>Object(a.I)(e.$slots,"default",{item:t})),256))])):Object(a.i)("",!0)])),[[c,e.onClickOutside]])}]]);const be={class:"block-card-content-container"},ue=["disabled"],de=["disabled"];var Oe=l(53),pe={props:["userId"],data:function(){return{progress:!1}},computed:{user:function(){return this.$store.getters.findUser(this.userId)},relationship:function(){return this.$store.getters.relationship(this.userId)},blocked:function(){return this.relationship.blocking}},components:{BasicUserCard:Oe.a},methods:{unblockUser:function(){var e=this;this.progress=!0,this.$store.dispatch("unblockUser",this.user.id).then((function(){e.progress=!1}))},blockUser:function(){var e=this;this.progress=!0,this.$store.dispatch("blockUser",this.user.id).then((function(){e.progress=!1}))}}};l(659);var je=D()(pe,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("basic-user-card");return Object(a.D)(),Object(a.h)(c,{user:e.user},{default:Object(a.V)(()=>[Object(a.k)("div",be,[e.blocked?(Object(a.D)(),Object(a.j)("button",{key:0,class:"btn button-default",disabled:e.progress,onClick:t[0]||(t[0]=(...t)=>e.unblockUser&&e.unblockUser(...t))},[e.progress?(Object(a.D)(),Object(a.j)(a.a,{key:0},[Object(a.l)(Object(a.O)(e.$t("user_card.unblock_progress")),1)],64)):(Object(a.D)(),Object(a.j)(a.a,{key:1},[Object(a.l)(Object(a.O)(e.$t("user_card.unblock")),1)],64))],8,ue)):(Object(a.D)(),Object(a.j)("button",{key:1,class:"btn button-default",disabled:e.progress,onClick:t[1]||(t[1]=(...t)=>e.blockUser&&e.blockUser(...t))},[e.progress?(Object(a.D)(),Object(a.j)(a.a,{key:0},[Object(a.l)(Object(a.O)(e.$t("user_card.block_progress")),1)],64)):(Object(a.D)(),Object(a.j)(a.a,{key:1},[Object(a.l)(Object(a.O)(e.$t("user_card.block")),1)],64))],8,de))])]),_:1},8,["user"])}]]);const me={class:"mute-card-content-container"},he=["disabled"],fe=["disabled"];var ge={props:["userId"],data:function(){return{progress:!1}},computed:{user:function(){return this.$store.getters.findUser(this.userId)},relationship:function(){return this.$store.getters.relationship(this.userId)},muted:function(){return this.relationship.muting}},components:{BasicUserCard:Oe.a},methods:{unmuteUser:function(){var e=this;this.progress=!0,this.$store.dispatch("unmuteUser",this.userId).then((function(){e.progress=!1}))},muteUser:function(){var e=this;this.progress=!0,this.$store.dispatch("muteUser",this.userId).then((function(){e.progress=!1}))}}};l(660);var ke=D()(ge,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("basic-user-card");return Object(a.D)(),Object(a.h)(c,{user:e.user},{default:Object(a.V)(()=>[Object(a.k)("div",me,[e.muted?(Object(a.D)(),Object(a.j)("button",{key:0,class:"btn button-default",disabled:e.progress,onClick:t[0]||(t[0]=(...t)=>e.unmuteUser&&e.unmuteUser(...t))},[e.progress?(Object(a.D)(),Object(a.j)(a.a,{key:0},[Object(a.l)(Object(a.O)(e.$t("user_card.unmute_progress")),1)],64)):(Object(a.D)(),Object(a.j)(a.a,{key:1},[Object(a.l)(Object(a.O)(e.$t("user_card.unmute")),1)],64))],8,he)):(Object(a.D)(),Object(a.j)("button",{key:1,class:"btn button-default",disabled:e.progress,onClick:t[1]||(t[1]=(...t)=>e.muteUser&&e.muteUser(...t))},[e.progress?(Object(a.D)(),Object(a.j)(a.a,{key:0},[Object(a.l)(Object(a.O)(e.$t("user_card.mute_progress")),1)],64)):(Object(a.D)(),Object(a.j)(a.a,{key:1},[Object(a.l)(Object(a.O)(e.$t("user_card.mute")),1)],64))],8,fe))])]),_:1},8,["user"])}]]);const ve={class:"domain-mute-card"},ye={class:"domain-mute-card-domain"};var we=l(104),_e={props:["domain"],components:{ProgressButton:we.a},computed:{user:function(){return this.$store.state.users.currentUser},muted:function(){return this.user.domainMutes.includes(this.domain)}},methods:{unmuteDomain:function(){return this.$store.dispatch("unmuteDomain",this.domain)},muteDomain:function(){return this.$store.dispatch("muteDomain",this.domain)}}};l(661);var Ve=D()(_e,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("ProgressButton");return Object(a.D)(),Object(a.j)("div",ve,[Object(a.k)("div",ye,Object(a.O)(e.domain),1),e.muted?(Object(a.D)(),Object(a.h)(c,{key:0,click:e.unmuteDomain,class:"btn button-default"},{progress:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("domain_mute_card.unmute_progress")),1)]),default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("domain_mute_card.unmute"))+" ",1)]),_:1},8,["click"])):(Object(a.D)(),Object(a.h)(c,{key:1,click:e.muteDomain,class:"btn button-default"},{progress:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("domain_mute_card.mute_progress")),1)]),default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("domain_mute_card.mute"))+" ",1)]),_:1},8,["click"]))])}]]);const $e={class:"selectable-list"},Ce={key:0,class:"selectable-list-header"},Te={class:"selectable-list-checkbox-wrapper"},xe={class:"selectable-list-header-actions"},Le={class:"selectable-list-checkbox-wrapper"};var Se={components:{List:l(69).a,Checkbox:E.a},props:{items:{type:Array,default:function(){return[]}},getKey:{type:Function,default:function(e){return e.id}}},data:function(){return{selected:[]}},computed:{allKeys:function(){return this.items.map(this.getKey)},filteredSelected:function(){var e=this;return this.allKeys.filter((function(t){return-1!==e.selected.indexOf(t)}))},allSelected:function(){return this.filteredSelected.length===this.items.length},noneSelected:function(){return 0===this.filteredSelected.length},someSelected:function(){return!this.allSelected&&!this.noneSelected}},methods:{isSelected:function(e){return-1!==this.filteredSelected.indexOf(this.getKey(e))},toggle:function(e,t){var l=this.getKey(t);e!==this.isSelected(l)&&(e?this.selected.push(l):this.selected.splice(this.selected.indexOf(l),1))},toggleAll:function(e){this.selected=e?this.allKeys.slice(0):[]}}};l(662);var De=D()(Se,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("Checkbox"),i=Object(a.J)("List");return Object(a.D)(),Object(a.j)("div",$e,[e.items.length>0?(Object(a.D)(),Object(a.j)("div",Ce,[Object(a.k)("div",Te,[Object(a.m)(c,{"model-value":e.allSelected,indeterminate:e.someSelected,"onUpdate:modelValue":e.toggleAll},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("selectable_list.select_all")),1)]),_:1},8,["model-value","indeterminate","onUpdate:modelValue"])]),Object(a.k)("div",xe,[Object(a.I)(e.$slots,"header",{selected:e.filteredSelected})])])):Object(a.i)("",!0),Object(a.m)(i,{items:e.items,"get-key":e.getKey},{item:Object(a.V)(({item:t})=>[Object(a.k)("div",{class:Object(a.w)(["selectable-list-item-inner",{"selectable-list-item-selected-inner":e.isSelected(t)}])},[Object(a.k)("div",Le,[Object(a.m)(c,{"model-value":e.isSelected(t),"onUpdate:modelValue":l=>e.toggle(l,t)},null,8,["model-value","onUpdate:modelValue"])]),Object(a.I)(e.$slots,"item",{item:t})],2)]),empty:Object(a.V)(()=>[Object(a.I)(e.$slots,"empty")]),_:3},8,["items","get-key"])])}]]),Pe=l(12),Ue=l.n(Pe),Ie=l(300),Be=l.n(Ie),Fe=l(301),Ee=(l(663),l(68));function Me(e,t){var l=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),l.push.apply(l,a)}return l}function Ae(e){for(var t=1;t<arguments.length;t++){var l=null!=arguments[t]?arguments[t]:{};t%2?Me(Object(l),!0).forEach((function(t){y()(e,t,l[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(l)):Me(Object(l)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(l,t))}))}return e}T.c.add(x.r);var Re=function(e){var t=e.fetch,l=e.select,n=e.childPropName,s=void 0===n?"content":n,o=e.additionalPropNames,c=void 0===o?[]:o;return function(e){var n=Object.keys(Object(Fe.a)(e)).filter((function(e){return e!==s})).concat(c);return{props:[].concat(Ue()(n),["refresh"]),data:function(){return{loading:!1,error:!1}},computed:{fetchedData:function(){return l(this.$props,this.$store)}},created:function(){(this.refresh||Be()(this.fetchedData))&&this.fetchData()},methods:{fetchData:function(){var e=this;this.loading||(this.loading=!0,this.error=!1,t(this.$props,this.$store).then((function(){e.loading=!1})).catch((function(){e.error=!0,e.loading=!1})))}},render:function(){if(this.error||this.loading)return Object(a.m)("div",{class:"with-subscription-loading"},[this.error?Object(a.m)("a",{onClick:this.fetchData,class:"alert error"},[this.$t("general.generic_error")]):Object(a.m)(Ee.a,{spin:!0,icon:"circle-notch"},null)]);var t,l=Ae(Ae({},this.$props),{},y()({},s,this.fetchedData)),n=this.$slots;return Object(a.m)("div",{class:"with-subscription"},[Object(a.m)(e,l,(t=n,"function"==typeof t||"[object Object]"===Object.prototype.toString.call(t)&&!Object(a.t)(t)?n:{default:function(){return[n]}}))])}}}},We=Re({fetch:function(e,t){return t.dispatch("fetchBlocks")},select:function(e,t){return ee()(t.state.users.currentUser,"blockIds",[])},childPropName:"items"})(De),Je=Re({fetch:function(e,t){return t.dispatch("fetchMutes")},select:function(e,t){return ee()(t.state.users.currentUser,"muteIds",[])},childPropName:"items"})(De),Ne=Re({fetch:function(e,t){return t.dispatch("fetchDomainMutes")},select:function(e,t){return ee()(t.state.users.currentUser,"domainMutes",[])},childPropName:"items"})(De),qe={data:function(){return{activeTab:"profile"}},created:function(){this.$store.dispatch("fetchTokens"),this.$store.dispatch("getKnownDomains")},components:{TabSwitcher:O.a,BlockList:We,MuteList:Je,DomainMuteList:Ne,BlockCard:je,MuteCard:ke,DomainMuteCard:Ve,ProgressButton:we.a,Autosuggest:re,Checkbox:E.a},computed:{knownDomains:function(){return this.$store.state.instance.knownDomains},user:function(){return this.$store.state.users.currentUser}},methods:{importFollows:function(e){return this.$store.state.api.backendInteractor.importFollows({file:e}).then((function(e){if(!e)throw new Error("failed")}))},importBlocks:function(e){return this.$store.state.api.backendInteractor.importBlocks({file:e}).then((function(e){if(!e)throw new Error("failed")}))},generateExportableUsersContent:function(e){return e.map((function(e){return e&&e.is_local?e.screen_name+"@"+location.hostname:e.screen_name})).join("\n")},activateTab:function(e){this.activeTab=e},filterUnblockedUsers:function(e){var t=this;return ne()(e,(function(e){return t.$store.getters.relationship(t.userId).blocking||e===t.user.id}))},filterUnMutedUsers:function(e){var t=this;return ne()(e,(function(e){return t.$store.getters.relationship(t.userId).muting||e===t.user.id}))},queryUserIds:function(e){return this.$store.dispatch("searchUsers",{query:e}).then((function(e){return le()(e,"id")}))},blockUsers:function(e){return this.$store.dispatch("blockUsers",e)},unblockUsers:function(e){return this.$store.dispatch("unblockUsers",e)},muteUsers:function(e){return this.$store.dispatch("muteUsers",e)},unmuteUsers:function(e){return this.$store.dispatch("unmuteUsers",e)},filterUnMutedDomains:function(e){var t=this;return e.filter((function(e){return!t.user.domainMutes.includes(e)}))},queryKnownDomains:function(e){var t=this;return new Promise((function(l,a){l(t.knownDomains.filter((function(t){return t.toLowerCase().includes(e)})))}))},unmuteDomains:function(e){return this.$store.dispatch("unmuteDomains",e)}}};l(664);var Ge=D()(qe,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("BlockCard"),i=Object(a.J)("Autosuggest"),r=Object(a.J)("ProgressButton"),b=Object(a.J)("BlockList"),u=Object(a.J)("MuteCard"),d=Object(a.J)("MuteList"),O=Object(a.J)("DomainMuteCard"),p=Object(a.J)("DomainMuteList"),j=Object(a.J)("tab-switcher");return Object(a.D)(),Object(a.h)(j,{"scrollable-tabs":!0,class:"mutes-and-blocks-tab"},{default:Object(a.V)(()=>[Object(a.k)("div",{label:e.$t("settings.blocks_tab")},[Object(a.k)("div",N,[Object(a.m)(i,{filter:e.filterUnblockedUsers,query:e.queryUserIds,placeholder:e.$t("settings.search_user_to_block")},{default:Object(a.V)(e=>[Object(a.m)(c,{"user-id":e.item},null,8,["user-id"])]),_:1},8,["filter","query","placeholder"])]),Object(a.m)(b,{refresh:!0,"get-key":e=>e},{header:Object(a.V)(({selected:t})=>[Object(a.k)("div",q,[t.length>0?(Object(a.D)(),Object(a.h)(r,{key:0,class:"btn button-default bulk-action-button",click:()=>e.blockUsers(t)},{progress:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("user_card.block_progress")),1)]),default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("user_card.block"))+" ",1)]),_:2},1032,["click"])):Object(a.i)("",!0),t.length>0?(Object(a.D)(),Object(a.h)(r,{key:1,class:"btn button-default",click:()=>e.unblockUsers(t)},{progress:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("user_card.unblock_progress")),1)]),default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("user_card.unblock"))+" ",1)]),_:2},1032,["click"])):Object(a.i)("",!0)])]),item:Object(a.V)(({item:e})=>[Object(a.m)(c,{"user-id":e},null,8,["user-id"])]),empty:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.no_blocks")),1)]),_:1},8,["get-key"])],8,J),Object(a.k)("div",{label:e.$t("settings.mutes_tab")},[Object(a.m)(j,null,{default:Object(a.V)(()=>[Object(a.k)("div",H,[Object(a.k)("div",z,[Object(a.m)(i,{filter:e.filterUnMutedUsers,query:e.queryUserIds,placeholder:e.$t("settings.search_user_to_mute")},{default:Object(a.V)(e=>[Object(a.m)(u,{"user-id":e.item},null,8,["user-id"])]),_:1},8,["filter","query","placeholder"])]),Object(a.m)(d,{refresh:!0,"get-key":e=>e},{header:Object(a.V)(({selected:t})=>[Object(a.k)("div",K,[t.length>0?(Object(a.D)(),Object(a.h)(r,{key:0,class:"btn button-default",click:()=>e.muteUsers(t)},{progress:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("user_card.mute_progress")),1)]),default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("user_card.mute"))+" ",1)]),_:2},1032,["click"])):Object(a.i)("",!0),t.length>0?(Object(a.D)(),Object(a.h)(r,{key:1,class:"btn button-default",click:()=>e.unmuteUsers(t)},{progress:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("user_card.unmute_progress")),1)]),default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("user_card.unmute"))+" ",1)]),_:2},1032,["click"])):Object(a.i)("",!0)])]),item:Object(a.V)(({item:e})=>[Object(a.m)(u,{"user-id":e},null,8,["user-id"])]),empty:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.no_mutes")),1)]),_:1},8,["get-key"])]),Object(a.k)("div",{label:e.$t("settings.domain_mutes")},[Object(a.k)("div",Z,[Object(a.m)(i,{filter:e.filterUnMutedDomains,query:e.queryKnownDomains,placeholder:e.$t("settings.type_domains_to_mute")},{default:Object(a.V)(e=>[Object(a.m)(O,{domain:e.item},null,8,["domain"])]),_:1},8,["filter","query","placeholder"])]),Object(a.m)(p,{refresh:!0,"get-key":e=>e},{header:Object(a.V)(({selected:t})=>[Object(a.k)("div",Q,[t.length>0?(Object(a.D)(),Object(a.h)(r,{key:0,class:"btn button-default",click:()=>e.unmuteDomains(t)},{progress:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("domain_mute_card.unmute_progress")),1)]),default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("domain_mute_card.unmute"))+" ",1)]),_:2},1032,["click"])):Object(a.i)("",!0)])]),item:Object(a.V)(({item:e})=>[Object(a.m)(O,{domain:e},null,8,["domain"])]),empty:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.no_mutes")),1)]),_:1},8,["get-key"])],8,Y)]),_:1})],8,G)]),_:1})}]]);const He=["label"],ze={class:"setting-item"},Ke={class:"setting-list"},Ye={class:"select-multiple"},Ze={class:"label"},Qe={class:"option-list"},Xe={key:0,class:"setting-item"},et={class:"setting-list"},tt={class:"setting-item"};const lt={key:0,class:"BooleanSetting"},at={key:0,class:"label"},nt=Object(a.l)(" "+Object(a.O)(" ")+" ");var st=l(625),ot=l.n(st),ct=l(39),it=l.n(ct);const rt={key:0,class:"ModifiedIndicator"},bt=Object(a.l)("   "),ut={class:"modified-tooltip"};var dt=l(24);T.c.add(x.yb);var Ot={components:{Popover:dt.default},props:["changed"]};l(665);var pt=D()(Ot,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("FAIcon"),i=Object(a.J)("Popover");return l.changed?(Object(a.D)(),Object(a.j)("span",rt,[Object(a.m)(i,{trigger:"hover"},{trigger:Object(a.V)(()=>[bt,Object(a.m)(c,{icon:"wrench","aria-label":e.$t("settings.setting_changed")},null,8,["aria-label"])]),content:Object(a.V)(()=>[Object(a.k)("div",ut,Object(a.O)(e.$t("settings.setting_changed")),1)]),_:1})])):Object(a.i)("",!0)}]]);const jt={key:0,class:"ServerSideIndicator"},mt=Object(a.l)("   "),ht={class:"serverside-tooltip"};T.c.add(x.eb);var ft={components:{Popover:dt.default},props:["serverSide"]};l(666);var gt=D()(ft,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("FAIcon"),i=Object(a.J)("Popover");return l.serverSide?(Object(a.D)(),Object(a.j)("span",jt,[Object(a.m)(i,{trigger:"hover"},{trigger:Object(a.V)(()=>[mt,Object(a.m)(c,{icon:"server","aria-label":e.$t("settings.setting_server_side")},null,8,["aria-label"])]),content:Object(a.V)(()=>[Object(a.k)("div",ht,Object(a.O)(e.$t("settings.setting_server_side")),1)]),_:1})])):Object(a.i)("",!0)}]]),kt={components:{Checkbox:E.a,ModifiedIndicator:pt,ServerSideIndicator:gt},props:["path","disabled","expert"],computed:{pathDefault:function(){var e=this.path.split("."),t=ot()(e),l=t[0],a=t.slice(1);return[l+"DefaultValue"].concat(Ue()(a)).join(".")},state:function(){var e=ee()(this.$parent,this.path);return void 0===e?this.defaultState:e},defaultState:function(){return ee()(this.$parent,this.pathDefault)},isServerSide:function(){return this.path.startsWith("serverSide_")},isChanged:function(){return!this.path.startsWith("serverSide_")&&this.state!==this.defaultState},matchesExpertLevel:function(){return(this.expert||0)<=this.$parent.expertLevel}},methods:{update:function(e){it()(this.$parent,this.path,e)}}};var vt=D()(kt,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("ModifiedIndicator"),i=Object(a.J)("ServerSideIndicator"),r=Object(a.J)("Checkbox");return e.matchesExpertLevel?(Object(a.D)(),Object(a.j)("label",lt,[Object(a.m)(r,{"model-value":e.state,disabled:e.disabled,"onUpdate:modelValue":e.update},{default:Object(a.V)(()=>[e.$slots.default?(Object(a.D)(),Object(a.j)("span",at,[Object(a.I)(e.$slots,"default")])):Object(a.i)("",!0),nt,Object(a.m)(c,{changed:e.isChanged},null,8,["changed"]),Object(a.m)(i,{"server-side":e.isServerSide},null,8,["server-side"])]),_:3},8,["model-value","disabled","onUpdate:modelValue"])])):Object(a.i)("",!0)}]]),yt=l(11),wt=l.n(yt),_t=l(121),Vt=l(220);function $t(e,t){var l=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),l.push.apply(l,a)}return l}function Ct(e){for(var t=1;t<arguments.length;t++){var l=null!=arguments[t]?arguments[t]:{};t%2?$t(Object(l),!0).forEach((function(t){y()(e,t,l[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(l)):$t(Object(l)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(l,t))}))}return e}var Tt=function(){return Ct(Ct(Ct(Ct({user:function(){return this.$store.state.users.currentUser}},Object.keys(_t.b).map((function(e){return[e+"DefaultValue",function(){return this.$store.getters.defaultConfig[e]}]})).reduce((function(e,t){var l=wt()(t,2),a=l[0],n=l[1];return Ct(Ct({},e),{},y()({},a,n))}),{})),Object.keys(_t.b).map((function(e){return[e,{get:function(){return this.$store.getters.mergedConfig[e]},set:function(t){this.$store.dispatch("setOption",{name:e,value:t})}}]})).reduce((function(e,t){var l=wt()(t,2),a=l[0],n=l[1];return Ct(Ct({},e),{},y()({},a,n))}),{})),Object.keys(Vt.b).map((function(e){return["serverSide_"+e,{get:function(){return this.$store.state.serverSideConfig[e]},set:function(t){this.$store.dispatch("setServerSideOption",{name:e,value:t})}}]})).reduce((function(e,t){var l=wt()(t,2),a=l[0],n=l[1];return Ct(Ct({},e),{},y()({},a,n))}),{})),{},{useStreamingApi:{get:function(){return this.$store.getters.mergedConfig.useStreamingApi},set:function(e){var t=this;(e?this.$store.dispatch("enableMastoSockets"):this.$store.dispatch("disableMastoSockets")).then((function(){t.$store.dispatch("setOption",{name:"useStreamingApi",value:e})})).catch((function(e){console.error("Failed starting MastoAPI Streaming socket",e),t.$store.dispatch("disableMastoSockets"),t.$store.dispatch("setOption",{name:"useStreamingApi",value:!1})}))}}})};function xt(e,t){var l=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),l.push.apply(l,a)}return l}var Lt={data:function(){return{activeTab:"profile",notificationSettings:this.$store.state.users.currentUser.notification_settings,newDomainToMute:""}},components:{BooleanSetting:vt},computed:function(e){for(var t=1;t<arguments.length;t++){var l=null!=arguments[t]?arguments[t]:{};t%2?xt(Object(l),!0).forEach((function(t){y()(e,t,l[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(l)):xt(Object(l)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(l,t))}))}return e}({user:function(){return this.$store.state.users.currentUser}},Tt()),methods:{updateNotificationSettings:function(){this.$store.state.api.backendInteractor.updateNotificationSettings({settings:this.notificationSettings})}}};var St=D()(Lt,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("BooleanSetting");return Object(a.D)(),Object(a.j)("div",{label:e.$t("settings.notifications")},[Object(a.k)("div",ze,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.notification_setting_filters")),1),Object(a.k)("ul",Ke,[Object(a.k)("li",null,[Object(a.m)(c,{path:"serverSide_blockNotificationsFromStrangers"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.notification_setting_block_from_strangers")),1)]),_:1})]),Object(a.k)("li",Ye,[Object(a.k)("span",Ze,Object(a.O)(e.$t("settings.notification_visibility")),1),Object(a.k)("ul",Qe,[Object(a.k)("li",null,[Object(a.m)(c,{path:"notificationVisibility.likes"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.notification_visibility_likes")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(c,{path:"notificationVisibility.repeats"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.notification_visibility_repeats")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(c,{path:"notificationVisibility.follows"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.notification_visibility_follows")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(c,{path:"notificationVisibility.mentions"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.notification_visibility_mentions")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(c,{path:"notificationVisibility.moves"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.notification_visibility_moves")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(c,{path:"notificationVisibility.emojiReactions"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.notification_visibility_emoji_reactions")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(c,{path:"notificationVisibility.polls"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.notification_visibility_polls")),1)]),_:1})])])])])]),e.expertLevel>0?(Object(a.D)(),Object(a.j)("div",Xe,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.notification_setting_privacy")),1),Object(a.k)("ul",et,[Object(a.k)("li",null,[Object(a.m)(c,{path:"webPushNotifications",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.enable_web_push_notifications")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(c,{path:"serverSide_webPushHideContents",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.notification_setting_hide_notification_contents")),1)]),_:1})])])])):Object(a.i)("",!0),Object(a.k)("div",tt,[Object(a.k)("p",null,Object(a.O)(e.$t("settings.notification_mutes")),1),Object(a.k)("p",null,Object(a.O)(e.$t("settings.notification_blocks")),1)])],8,He)}]]);const Dt=["label"],Pt={class:"setting-item"},Ut={class:"setting-list"},It={key:0,class:"setting-item"},Bt={class:"setting-list"};var Ft=l(667),Et=l.n(Ft),Mt=l(49),At=l.n(Mt);const Rt={key:0,class:"ChoiceSetting"},Wt=Object(a.l)(" "+Object(a.O)(" ")+" "),Jt=["value"];var Nt=l(52),qt={components:{Select:Nt.a,ModifiedIndicator:pt,ServerSideIndicator:gt},props:["path","disabled","options","expert"],computed:{pathDefault:function(){var e=this.path.split("."),t=ot()(e),l=t[0],a=t.slice(1);return[l+"DefaultValue"].concat(Ue()(a)).join(".")},state:function(){var e=ee()(this.$parent,this.path);return void 0===e?this.defaultState:e},defaultState:function(){return ee()(this.$parent,this.pathDefault)},isServerSide:function(){return this.path.startsWith("serverSide_")},isChanged:function(){return!this.path.startsWith("serverSide_")&&this.state!==this.defaultState},matchesExpertLevel:function(){return(this.expert||0)<=this.$parent.expertLevel}},methods:{update:function(e){it()(this.$parent,this.path,e)}}};l(670);var Gt=D()(qt,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("Select"),i=Object(a.J)("ModifiedIndicator"),r=Object(a.J)("ServerSideIndicator");return e.matchesExpertLevel?(Object(a.D)(),Object(a.j)("label",Rt,[Object(a.I)(e.$slots,"default"),Wt,Object(a.m)(c,{"model-value":e.state,disabled:e.disabled,"onUpdate:modelValue":e.update},{default:Object(a.V)(()=>[(Object(a.D)(!0),Object(a.j)(a.a,null,Object(a.H)(e.options,t=>(Object(a.D)(),Object(a.j)("option",{key:t.key,value:t.value},Object(a.O)(t.label)+" "+Object(a.O)(t.value===e.defaultState?e.$t("settings.instance_default_simple"):""),9,Jt))),128))]),_:1},8,["model-value","disabled","onUpdate:modelValue"]),Object(a.m)(i,{changed:e.isChanged},null,8,["changed"]),Object(a.m)(r,{"server-side":e.isServerSide},null,8,["server-side"])])):Object(a.i)("",!0)}]]);const Ht={key:0,class:"IntegerSetting"},zt=["for"],Kt=["id","disabled","min","value"],Yt=Object(a.l)(" "+Object(a.O)(" ")+" ");var Zt={components:{ModifiedIndicator:pt},props:{path:String,disabled:Boolean,min:Number,expert:[Number,String]},computed:{pathDefault:function(){var e=this.path.split("."),t=ot()(e),l=t[0],a=t.slice(1);return[l+"DefaultValue"].concat(Ue()(a)).join(".")},state:function(){var e=ee()(this.$parent,this.path);return void 0===e?this.defaultState:e},defaultState:function(){return ee()(this.$parent,this.pathDefault)},isChanged:function(){return this.state!==this.defaultState},matchesExpertLevel:function(){return(this.expert||0)<=this.$parent.expertLevel}},methods:{update:function(e){it()(this.$parent,this.path,parseInt(e.target.value))}}};var Qt=D()(Zt,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("ModifiedIndicator");return e.matchesExpertLevel?(Object(a.D)(),Object(a.j)("span",Ht,[Object(a.k)("label",{for:e.path},[Object(a.I)(e.$slots,"default")],8,zt),Object(a.k)("input",{id:e.path,class:"number-input",type:"number",step:"1",disabled:e.disabled,min:e.min||0,value:e.state,onChange:t[0]||(t[0]=(...t)=>e.update&&e.update(...t))},null,40,Kt),Yt,Object(a.m)(c,{changed:e.isChanged},null,8,["changed"])])):Object(a.i)("",!0)}]]);function Xt(e,t){var l=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),l.push.apply(l,a)}return l}function el(e){for(var t=1;t<arguments.length;t++){var l=null!=arguments[t]?arguments[t]:{};t%2?Xt(Object(l),!0).forEach((function(t){y()(e,t,l[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(l)):Xt(Object(l)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(l,t))}))}return e}var tl={data:function(){var e=this;return{muteWordsStringLocal:this.$store.getters.mergedConfig.muteWords.join("\n"),replyVisibilityOptions:["all","following","self"].map((function(t){return{key:t,value:t,label:e.$t("settings.reply_visibility_".concat(t))}}))}},components:{BooleanSetting:vt,ChoiceSetting:Gt,IntegerSetting:Qt},computed:el(el({},Tt()),{},{muteWordsString:{get:function(){return this.muteWordsStringLocal},set:function(e){this.muteWordsStringLocal=e,this.$store.dispatch("setOption",{name:"muteWords",value:At()(e.split("\n"),(function(e){return Et()(e).length>0}))})}}}),watch:{notificationVisibility:{handler:function(e){this.$store.dispatch("setOption",{name:"notificationVisibility",value:this.$store.getters.mergedConfig.notificationVisibility})},deep:!0},replyVisibility:function(){this.$store.dispatch("queueFlushAll")}}};var ll=D()(tl,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("BooleanSetting"),i=Object(a.J)("ChoiceSetting"),r=Object(a.J)("IntegerSetting");return Object(a.D)(),Object(a.j)("div",{label:e.$t("settings.filtering")},[Object(a.k)("div",Pt,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.posts")),1),Object(a.k)("ul",Ut,[Object(a.k)("li",null,[Object(a.m)(c,{path:"hideFilteredStatuses"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_filtered_statuses")),1)]),_:1}),Object(a.k)("ul",{class:Object(a.w)(["setting-list suboptions",[{disabled:!e.streaming}]])},[Object(a.k)("li",null,[Object(a.m)(c,{disabled:e.hideFilteredStatuses,path:"hideWordFilteredPosts"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_wordfiltered_statuses")),1)]),_:1},8,["disabled"])]),Object(a.k)("li",null,[e.user?(Object(a.D)(),Object(a.h)(c,{key:0,disabled:e.hideFilteredStatuses,path:"hideMutedThreads"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_muted_threads")),1)]),_:1},8,["disabled"])):Object(a.i)("",!0)]),Object(a.k)("li",null,[e.user?(Object(a.D)(),Object(a.h)(c,{key:0,disabled:e.hideFilteredStatuses,path:"hideMutedPosts"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_muted_posts")),1)]),_:1},8,["disabled"])):Object(a.i)("",!0)])],2)]),Object(a.k)("li",null,[Object(a.m)(c,{path:"muteBotStatuses"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.mute_bot_posts")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(c,{path:"hidePostStats"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_post_stats")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(c,{path:"hideBotIndication"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_bot_indication")),1)]),_:1})]),e.user?(Object(a.D)(),Object(a.h)(i,{key:0,id:"replyVisibility",path:"replyVisibility",options:e.replyVisibilityOptions},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.replies_in_timeline")),1)]),_:1},8,["options"])):Object(a.i)("",!0),Object(a.k)("li",null,[Object(a.k)("h3",null,Object(a.O)(e.$t("settings.wordfilter")),1),Object(a.W)(Object(a.k)("textarea",{id:"muteWords","onUpdate:modelValue":t[0]||(t[0]=t=>e.muteWordsString=t),class:"resize-height"},null,512),[[a.S,e.muteWordsString]]),Object(a.k)("div",null,Object(a.O)(e.$t("settings.filtering_explanation")),1)]),Object(a.k)("h3",null,Object(a.O)(e.$t("settings.attachments")),1),Object(a.k)("li",null,[Object(a.m)(r,{path:"maxThumbnails",expert:"1",min:0},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.max_thumbnails")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(c,{path:"hideAttachments"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_attachments_in_tl")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(c,{path:"hideAttachmentsInConv"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_attachments_in_convo")),1)]),_:1})])])]),e.expertLevel>0?(Object(a.D)(),Object(a.j)("div",It,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.user_profiles")),1),Object(a.k)("ul",Bt,[Object(a.k)("li",null,[Object(a.m)(c,{path:"hideUserStats"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_user_stats")),1)]),_:1})])])])):Object(a.i)("",!0)],8,Dt)}]]);const al=["label"],nl={class:"setting-item"},sl={key:0},ol={class:"setting-item"},cl={key:0},il={key:1},rl={key:2},bl={class:"setting-item"},ul={class:"oauth-tokens"},dl=Object(a.k)("th",null,null,-1),Ol={class:"actions"},pl=["onClick"],jl={class:"setting-item"},ml={key:0},hl={key:1},fl={key:2},gl={key:3};const kl={key:0,class:"setting-item mfa-settings"},vl={class:"mfa-heading"},yl={key:0,class:"setting-item"},wl=Object(a.k)("br",null,null,-1),_l={key:0},Vl={key:2},$l={class:"warning"},Cl={key:1},Tl={key:0},xl={key:1},Ll={class:"setup-otp"},Sl={class:"qr-code"},Dl={class:"verify"},Pl={class:"confirm-otp-actions"},Ul={key:0,class:"alert error"};var Il=l(13),Bl=l.n(Il),Fl=l(10),El=l.n(Fl);const Ml={class:"mfa-backup-codes"},Al={key:0},Rl={key:1},Wl={class:"alert warning"},Jl={class:"backup-codes"};var Nl={props:{backupCodes:{type:Object,default:function(){return{inProgress:!1,codes:[]}}}},data:function(){return{}},computed:{inProgress:function(){return this.backupCodes.inProgress},ready:function(){return this.backupCodes.codes.length>0},displayTitle:function(){return this.inProgress||this.ready}}};l(671);var ql=D()(Nl,[["render",function(e,t,l,n,s,o){return Object(a.D)(),Object(a.j)("div",Ml,[e.displayTitle?(Object(a.D)(),Object(a.j)("h4",Al,Object(a.O)(e.$t("settings.mfa.recovery_codes")),1)):Object(a.i)("",!0),e.inProgress?(Object(a.D)(),Object(a.j)("i",Rl,Object(a.O)(e.$t("settings.mfa.waiting_a_recovery_codes")),1)):Object(a.i)("",!0),e.ready?(Object(a.D)(),Object(a.j)(a.a,{key:2},[Object(a.k)("p",Wl,Object(a.O)(e.$t("settings.mfa.recovery_codes_warning")),1),Object(a.k)("ul",Jl,[(Object(a.D)(!0),Object(a.j)(a.a,null,Object(a.H)(e.backupCodes.codes,e=>(Object(a.D)(),Object(a.j)("li",{key:e},Object(a.O)(e),1))),128))])],64)):Object(a.i)("",!0)])}]]);const Gl={class:"method-item"},Hl=["disabled"],zl={key:1,class:"alert error"};const Kl=["disabled"],Yl=["disabled"];var Zl={props:["disabled"],data:function(){return{}},methods:{confirm:function(){this.$emit("confirm")},cancel:function(){this.$emit("cancel")}}};var Ql=D()(Zl,[["render",function(e,t,l,n,s,o){return Object(a.D)(),Object(a.j)("div",null,[Object(a.I)(e.$slots,"default"),Object(a.k)("button",{class:"btn button-default",disabled:e.disabled,onClick:t[0]||(t[0]=(...t)=>e.confirm&&e.confirm(...t))},Object(a.O)(e.$t("general.confirm")),9,Kl),Object(a.k)("button",{class:"btn button-default",disabled:e.disabled,onClick:t[1]||(t[1]=(...t)=>e.cancel&&e.cancel(...t))},Object(a.O)(e.$t("general.cancel")),9,Yl)])}]]);function Xl(e,t){var l=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),l.push.apply(l,a)}return l}var ea={props:["settings"],data:function(){return{error:!1,currentPassword:"",deactivate:!1,inProgress:!1}},components:{confirm:Ql},computed:function(e){for(var t=1;t<arguments.length;t++){var l=null!=arguments[t]?arguments[t]:{};t%2?Xl(Object(l),!0).forEach((function(t){y()(e,t,l[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(l)):Xl(Object(l)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(l,t))}))}return e}({isActivated:function(){return this.settings.totp}},Object(M.e)({backendInteractor:function(e){return e.api.backendInteractor}})),methods:{doActivate:function(){this.$emit("activate")},cancelDeactivate:function(){this.deactivate=!1},doDeactivate:function(){this.error=null,this.deactivate=!0},confirmDeactivate:function(){var e=this;this.error=null,this.inProgress=!0,this.backendInteractor.mfaDisableOTP({password:this.currentPassword}).then((function(t){e.inProgress=!1,t.error?e.error=t.error:(e.deactivate=!1,e.$emit("deactivate"))}))}}};function ta(e,t){var l=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),l.push.apply(l,a)}return l}var la={data:function(){return{settings:{available:!1,enabled:!1,totp:!1},setupState:{state:"",setupOTPState:""},backupCodes:{getNewCodes:!1,inProgress:!1,codes:[]},otpSettings:{provisioning_uri:"",key:""},currentPassword:null,otpConfirmToken:null,error:null,readyInit:!1}},components:{"recovery-codes":ql,"totp-item":D()(ea,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("confirm");return Object(a.D)(),Object(a.j)("div",null,[Object(a.k)("div",Gl,[Object(a.k)("strong",null,Object(a.O)(e.$t("settings.mfa.otp")),1),e.isActivated?Object(a.i)("",!0):(Object(a.D)(),Object(a.j)("button",{key:0,class:"btn button-default",onClick:t[0]||(t[0]=(...t)=>e.doActivate&&e.doActivate(...t))},Object(a.O)(e.$t("general.enable")),1)),e.isActivated?(Object(a.D)(),Object(a.j)("button",{key:1,class:"btn button-default",disabled:e.deactivate,onClick:t[1]||(t[1]=(...t)=>e.doDeactivate&&e.doDeactivate(...t))},Object(a.O)(e.$t("general.disable")),9,Hl)):Object(a.i)("",!0)]),e.deactivate?(Object(a.D)(),Object(a.h)(c,{key:0,disabled:e.inProgress,onConfirm:e.confirmDeactivate,onCancel:e.cancelDeactivate},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.enter_current_password_to_confirm"))+": ",1),Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[2]||(t[2]=t=>e.currentPassword=t),type:"password"},null,512),[[a.S,e.currentPassword]])]),_:1},8,["disabled","onConfirm","onCancel"])):Object(a.i)("",!0),e.error?(Object(a.D)(),Object(a.j)("div",zl,Object(a.O)(e.error),1)):Object(a.i)("",!0)])}]]),qrcode:l(672).a,confirm:Ql},computed:function(e){for(var t=1;t<arguments.length;t++){var l=null!=arguments[t]?arguments[t]:{};t%2?ta(Object(l),!0).forEach((function(t){y()(e,t,l[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(l)):ta(Object(l)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(l,t))}))}return e}({canSetupOTP:function(){return(this.setupInProgress&&this.backupCodesPrepared||this.settings.enabled)&&!this.settings.totp&&!this.setupOTPInProgress},setupInProgress:function(){return""!==this.setupState.state&&"complete"!==this.setupState.state},setupOTPInProgress:function(){return"setupOTP"===this.setupState.state&&!this.completedOTP},prepareOTP:function(){return"prepare"===this.setupState.setupOTPState},confirmOTP:function(){return"confirm"===this.setupState.setupOTPState},completedOTP:function(){return"completed"===this.setupState.setupOTPState},backupCodesPrepared:function(){return!this.backupCodes.inProgress&&this.backupCodes.codes.length>0},confirmNewBackupCodes:function(){return this.backupCodes.getNewCodes}},Object(M.e)({backendInteractor:function(e){return e.api.backendInteractor}})),methods:{activateOTP:function(){this.settings.enabled||(this.setupState.state="getBackupcodes",this.fetchBackupCodes())},fetchBackupCodes:function(){var e=this;return this.backupCodes.inProgress=!0,this.backupCodes.codes=[],this.backendInteractor.generateMfaBackupCodes().then((function(t){e.backupCodes.codes=t.codes,e.backupCodes.inProgress=!1}))},getBackupCodes:function(){this.backupCodes.getNewCodes=!0},confirmBackupCodes:function(){var e=this;this.fetchBackupCodes().then((function(t){e.backupCodes.getNewCodes=!1}))},cancelBackupCodes:function(){this.backupCodes.getNewCodes=!1},setupOTP:function(){var e=this;this.setupState.state="setupOTP",this.setupState.setupOTPState="prepare",this.backendInteractor.mfaSetupOTP().then((function(t){e.otpSettings=t,e.setupState.setupOTPState="confirm"}))},doConfirmOTP:function(){var e=this;this.error=null,this.backendInteractor.mfaConfirmOTP({token:this.otpConfirmToken,password:this.currentPassword}).then((function(t){t.error?e.error=t.error:e.completeSetup()}))},completeSetup:function(){this.setupState.setupOTPState="complete",this.setupState.state="complete",this.currentPassword=null,this.error=null,this.fetchSettings()},cancelSetup:function(){this.setupState.setupOTPState="",this.setupState.state="",this.currentPassword=null,this.error=null},fetchSettings:function(){var e=this;return Bl()(El.a.mark((function t(){var l;return El.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.backendInteractor.settingsMFA();case 2:if(!(l=t.sent).error){t.next=5;break}return t.abrupt("return");case 5:return e.settings=l.settings,e.settings.available=!0,t.abrupt("return",l);case 8:case"end":return t.stop()}}),t)})))()}},mounted:function(){var e=this;this.fetchSettings().then((function(){e.readyInit=!0}))}};l(695);var aa=D()(la,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("totp-item"),i=Object(a.J)("recovery-codes"),r=Object(a.J)("confirm"),b=Object(a.J)("qrcode");return e.readyInit&&e.settings.available?(Object(a.D)(),Object(a.j)("div",kl,[Object(a.k)("div",vl,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.mfa.title")),1)]),Object(a.k)("div",null,[e.setupInProgress?Object(a.i)("",!0):(Object(a.D)(),Object(a.j)("div",yl,[Object(a.k)("h3",null,Object(a.O)(e.$t("settings.mfa.authentication_methods")),1),Object(a.m)(c,{settings:e.settings,onDeactivate:e.fetchSettings,onActivate:e.activateOTP},null,8,["settings","onDeactivate","onActivate"]),wl,e.settings.enabled?(Object(a.D)(),Object(a.j)("div",_l,[e.confirmNewBackupCodes?Object(a.i)("",!0):(Object(a.D)(),Object(a.h)(i,{key:0,"backup-codes":e.backupCodes},null,8,["backup-codes"])),e.confirmNewBackupCodes?Object(a.i)("",!0):(Object(a.D)(),Object(a.j)("button",{key:1,class:"btn button-default",onClick:t[0]||(t[0]=(...t)=>e.getBackupCodes&&e.getBackupCodes(...t))},Object(a.O)(e.$t("settings.mfa.generate_new_recovery_codes")),1)),e.confirmNewBackupCodes?(Object(a.D)(),Object(a.j)("div",Vl,[Object(a.m)(r,{disabled:e.backupCodes.inProgress,onConfirm:e.confirmBackupCodes,onCancel:e.cancelBackupCodes},{default:Object(a.V)(()=>[Object(a.k)("p",$l,Object(a.O)(e.$t("settings.mfa.warning_of_generate_new_codes")),1)]),_:1},8,["disabled","onConfirm","onCancel"])])):Object(a.i)("",!0)])):Object(a.i)("",!0)])),e.setupInProgress?(Object(a.D)(),Object(a.j)("div",Cl,[Object(a.k)("h3",null,Object(a.O)(e.$t("settings.mfa.setup_otp")),1),e.setupOTPInProgress?Object(a.i)("",!0):(Object(a.D)(),Object(a.h)(i,{key:0,"backup-codes":e.backupCodes},null,8,["backup-codes"])),e.canSetupOTP?(Object(a.D)(),Object(a.j)("button",{key:1,class:"btn button-default",onClick:t[1]||(t[1]=(...t)=>e.cancelSetup&&e.cancelSetup(...t))},Object(a.O)(e.$t("general.cancel")),1)):Object(a.i)("",!0),e.canSetupOTP?(Object(a.D)(),Object(a.j)("button",{key:2,class:"btn button-default",onClick:t[2]||(t[2]=(...t)=>e.setupOTP&&e.setupOTP(...t))},Object(a.O)(e.$t("settings.mfa.setup_otp")),1)):Object(a.i)("",!0),e.setupOTPInProgress?(Object(a.D)(),Object(a.j)(a.a,{key:3},[e.prepareOTP?(Object(a.D)(),Object(a.j)("i",Tl,Object(a.O)(e.$t("settings.mfa.wait_pre_setup_otp")),1)):Object(a.i)("",!0),e.confirmOTP?(Object(a.D)(),Object(a.j)("div",xl,[Object(a.k)("div",Ll,[Object(a.k)("div",Sl,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.mfa.scan.title")),1),Object(a.k)("p",null,Object(a.O)(e.$t("settings.mfa.scan.desc")),1),Object(a.m)(b,{value:e.otpSettings.provisioning_uri,options:{width:200}},null,8,["value"]),Object(a.k)("p",null,Object(a.O)(e.$t("settings.mfa.scan.secret_code"))+": "+Object(a.O)(e.otpSettings.key),1)]),Object(a.k)("div",Dl,[Object(a.k)("h4",null,Object(a.O)(e.$t("general.verify")),1),Object(a.k)("p",null,Object(a.O)(e.$t("settings.mfa.verify.desc")),1),Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[3]||(t[3]=t=>e.otpConfirmToken=t),type:"text"},null,512),[[a.S,e.otpConfirmToken]]),Object(a.k)("p",null,Object(a.O)(e.$t("settings.enter_current_password_to_confirm"))+":",1),Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[4]||(t[4]=t=>e.currentPassword=t),type:"password"},null,512),[[a.S,e.currentPassword]]),Object(a.k)("div",Pl,[Object(a.k)("button",{class:"btn button-default",onClick:t[5]||(t[5]=(...t)=>e.doConfirmOTP&&e.doConfirmOTP(...t))},Object(a.O)(e.$t("settings.mfa.confirm_and_enable")),1),Object(a.k)("button",{class:"btn button-default",onClick:t[6]||(t[6]=(...t)=>e.cancelSetup&&e.cancelSetup(...t))},Object(a.O)(e.$t("general.cancel")),1)]),e.error?(Object(a.D)(),Object(a.j)("div",Ul,Object(a.O)(e.error),1)):Object(a.i)("",!0)])])])):Object(a.i)("",!0)],64)):Object(a.i)("",!0)])):Object(a.i)("",!0)])])):Object(a.i)("",!0)}]]),na=l(38),sa={data:function(){return{newEmail:"",changeEmailError:!1,changeEmailPassword:"",changedEmail:!1,deletingAccount:!1,deleteAccountConfirmPasswordInput:"",deleteAccountError:!1,changePasswordInputs:["","",""],changedPassword:!1,changePasswordError:!1}},created:function(){this.$store.dispatch("fetchTokens")},components:{ProgressButton:we.a,Mfa:aa,Checkbox:E.a},computed:{user:function(){return this.$store.state.users.currentUser},pleromaBackend:function(){return this.$store.state.instance.pleromaBackend},oauthTokens:function(){var e=this;return this.$store.state.oauthTokens.tokens.map((function(t){return{id:t.id,appName:t.app_name,validUntil:new Date(t.valid_until).toLocaleDateString(na.a.internalToBrowserLocale(e.$i18n.locale))}}))}},methods:{confirmDelete:function(){this.deletingAccount=!0},deleteAccount:function(){var e=this;this.$store.state.api.backendInteractor.deleteAccount({password:this.deleteAccountConfirmPasswordInput}).then((function(t){"success"===t.status?(e.$store.dispatch("logout"),e.$router.push({name:"root"})):e.deleteAccountError=t.error}))},changePassword:function(){var e=this,t={password:this.changePasswordInputs[0],newPassword:this.changePasswordInputs[1],newPasswordConfirmation:this.changePasswordInputs[2]};this.$store.state.api.backendInteractor.changePassword(t).then((function(t){"success"===t.status?(e.changedPassword=!0,e.changePasswordError=!1,e.logout()):(e.changedPassword=!1,e.changePasswordError=t.error)}))},changeEmail:function(){var e=this,t={email:this.newEmail,password:this.changeEmailPassword};this.$store.state.api.backendInteractor.changeEmail(t).then((function(t){"success"===t.status?(e.changedEmail=!0,e.changeEmailError=!1):(e.changedEmail=!1,e.changeEmailError=t.error)}))},logout:function(){this.$store.dispatch("logout"),this.$router.replace("/")},revokeToken:function(e){window.confirm("".concat(this.$i18n.t("settings.revoke_token"),"?"))&&this.$store.dispatch("revokeToken",e)}}};var oa=D()(sa,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("mfa");return Object(a.D)(),Object(a.j)("div",{label:e.$t("settings.security_tab")},[Object(a.k)("div",nl,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.change_email")),1),Object(a.k)("div",null,[Object(a.k)("p",null,Object(a.O)(e.$t("settings.new_email")),1),Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[0]||(t[0]=t=>e.newEmail=t),type:"email",autocomplete:"email"},null,512),[[a.S,e.newEmail]])]),Object(a.k)("div",null,[Object(a.k)("p",null,Object(a.O)(e.$t("settings.current_password")),1),Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[1]||(t[1]=t=>e.changeEmailPassword=t),type:"password",autocomplete:"current-password"},null,512),[[a.S,e.changeEmailPassword]])]),Object(a.k)("button",{class:"btn button-default",onClick:t[2]||(t[2]=(...t)=>e.changeEmail&&e.changeEmail(...t))},Object(a.O)(e.$t("settings.save")),1),e.changedEmail?(Object(a.D)(),Object(a.j)("p",sl,Object(a.O)(e.$t("settings.changed_email")),1)):Object(a.i)("",!0),!1!==e.changeEmailError?(Object(a.D)(),Object(a.j)(a.a,{key:1},[Object(a.k)("p",null,Object(a.O)(e.$t("settings.change_email_error")),1),Object(a.k)("p",null,Object(a.O)(e.changeEmailError),1)],64)):Object(a.i)("",!0)]),Object(a.k)("div",ol,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.change_password")),1),Object(a.k)("div",null,[Object(a.k)("p",null,Object(a.O)(e.$t("settings.current_password")),1),Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[3]||(t[3]=t=>e.changePasswordInputs[0]=t),type:"password"},null,512),[[a.S,e.changePasswordInputs[0]]])]),Object(a.k)("div",null,[Object(a.k)("p",null,Object(a.O)(e.$t("settings.new_password")),1),Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[4]||(t[4]=t=>e.changePasswordInputs[1]=t),type:"password"},null,512),[[a.S,e.changePasswordInputs[1]]])]),Object(a.k)("div",null,[Object(a.k)("p",null,Object(a.O)(e.$t("settings.confirm_new_password")),1),Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[5]||(t[5]=t=>e.changePasswordInputs[2]=t),type:"password"},null,512),[[a.S,e.changePasswordInputs[2]]])]),Object(a.k)("button",{class:"btn button-default",onClick:t[6]||(t[6]=(...t)=>e.changePassword&&e.changePassword(...t))},Object(a.O)(e.$t("settings.save")),1),e.changedPassword?(Object(a.D)(),Object(a.j)("p",cl,Object(a.O)(e.$t("settings.changed_password")),1)):!1!==e.changePasswordError?(Object(a.D)(),Object(a.j)("p",il,Object(a.O)(e.$t("settings.change_password_error")),1)):Object(a.i)("",!0),e.changePasswordError?(Object(a.D)(),Object(a.j)("p",rl,Object(a.O)(e.changePasswordError),1)):Object(a.i)("",!0)]),Object(a.k)("div",bl,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.oauth_tokens")),1),Object(a.k)("table",ul,[Object(a.k)("thead",null,[Object(a.k)("tr",null,[Object(a.k)("th",null,Object(a.O)(e.$t("settings.app_name")),1),Object(a.k)("th",null,Object(a.O)(e.$t("settings.valid_until")),1),dl])]),Object(a.k)("tbody",null,[(Object(a.D)(!0),Object(a.j)(a.a,null,Object(a.H)(e.oauthTokens,t=>(Object(a.D)(),Object(a.j)("tr",{key:t.id},[Object(a.k)("td",null,Object(a.O)(t.appName),1),Object(a.k)("td",null,Object(a.O)(t.validUntil),1),Object(a.k)("td",Ol,[Object(a.k)("button",{class:"btn button-default",onClick:l=>e.revokeToken(t.id)},Object(a.O)(e.$t("settings.revoke_token")),9,pl)])]))),128))])])]),Object(a.m)(c),Object(a.k)("div",jl,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.delete_account")),1),e.deletingAccount?Object(a.i)("",!0):(Object(a.D)(),Object(a.j)("p",ml,Object(a.O)(e.$t("settings.delete_account_description")),1)),e.deletingAccount?(Object(a.D)(),Object(a.j)("div",hl,[Object(a.k)("p",null,Object(a.O)(e.$t("settings.delete_account_instructions")),1),Object(a.k)("p",null,Object(a.O)(e.$t("login.password")),1),Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[7]||(t[7]=t=>e.deleteAccountConfirmPasswordInput=t),type:"password"},null,512),[[a.S,e.deleteAccountConfirmPasswordInput]]),Object(a.k)("button",{class:"btn button-default",onClick:t[8]||(t[8]=(...t)=>e.deleteAccount&&e.deleteAccount(...t))},Object(a.O)(e.$t("settings.delete_account")),1)])):Object(a.i)("",!0),!1!==e.deleteAccountError?(Object(a.D)(),Object(a.j)("p",fl,Object(a.O)(e.$t("settings.delete_account_error")),1)):Object(a.i)("",!0),e.deleteAccountError?(Object(a.D)(),Object(a.j)("p",gl,Object(a.O)(e.deleteAccountError),1)):Object(a.i)("",!0),e.deletingAccount?Object(a.i)("",!0):(Object(a.D)(),Object(a.j)("button",{key:4,class:"btn button-default",onClick:t[9]||(t[9]=(...t)=>e.confirmDelete&&e.confirmDelete(...t))},Object(a.O)(e.$t("settings.save")),1))])],8,al)}]]);const ca={class:"profile-tab"},ia={class:"setting-item"},ra={key:0},ba={key:1},ua=["onUpdate:modelValue","placeholder"],da=["onUpdate:modelValue","placeholder"],Oa=["onClick"],pa=["disabled"],ja={class:"setting-item"},ma={class:"visibility-notice"},ha={class:"current-avatar-container"},fa=["src"],ga=["title"],ka={class:"setting-item"},va={class:"banner-background-preview"},ya=["src"],wa=["title"],_a=["src"],Va={class:"setting-item"},$a={class:"banner-background-preview"},Ca=["src"],Ta=["title"],xa=["src"],La={class:"setting-item"},Sa={class:"setting-list"};var Da=l(75),Pa=l.n(Da),Ua=l(122),Ia=l.n(Ua);const Ba={class:"image-cropper"},Fa={key:0},Ea={class:"image-cropper-image-container"},Ma=["src"],Aa={class:"image-cropper-buttons-wrapper"},Ra=["disabled","textContent"],Wa=["disabled","textContent"],Ja=["disabled","textContent"],Na=["accept"];var qa=l(28),Ga=l.n(qa),Ha=l(696),za=l.n(Ha);l(697);T.c.add(x.r);var Ka={props:{trigger:{type:[String,window.Element],required:!0},submitHandler:{type:Function,required:!0},cropperOptions:{type:Object,default:function(){return{aspectRatio:1,autoCropArea:1,viewMode:1,movable:!1,zoomable:!1,guides:!1}}},mimes:{type:String,default:"image/png, image/gif, image/jpeg, image/bmp, image/x-icon"},saveButtonLabel:{type:String},saveWithoutCroppingButtonlabel:{type:String},cancelButtonLabel:{type:String}},data:function(){return{cropper:void 0,dataUrl:void 0,filename:void 0,submitting:!1}},computed:{saveText:function(){return this.saveButtonLabel||this.$t("image_cropper.save")},saveWithoutCroppingText:function(){return this.saveWithoutCroppingButtonlabel||this.$t("image_cropper.save_without_cropping")},cancelText:function(){return this.cancelButtonLabel||this.$t("image_cropper.cancel")}},methods:{destroy:function(){this.cropper&&this.cropper.destroy(),this.$refs.input.value="",this.dataUrl=void 0,this.$emit("close")},submit:function(){var e=this,t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.submitting=!0,this.submitHandler(t&&this.cropper,this.file).then((function(){return e.destroy()})).finally((function(){e.submitting=!1}))},pickImage:function(){this.$refs.input.click()},createCropper:function(){this.cropper=new za.a(this.$refs.img,this.cropperOptions)},getTriggerDOM:function(){return"object"===Ga()(this.trigger)?this.trigger:document.querySelector(this.trigger)},readFile:function(){var e=this,t=this.$refs.input;if(null!=t.files&&null!=t.files[0]){this.file=t.files[0];var l=new window.FileReader;l.onload=function(t){e.dataUrl=t.target.result,e.$emit("open")},l.readAsDataURL(this.file),this.$emit("changed",this.file,l)}}},mounted:function(){var e=this.getTriggerDOM();e?e.addEventListener("click",this.pickImage):this.$emit("error","No image make trigger found.","user"),this.$refs.input.addEventListener("change",this.readFile)},beforeUnmount:function(){var e=this.getTriggerDOM();e&&e.removeEventListener("click",this.pickImage),this.$refs.input.removeEventListener("change",this.readFile)}};l(698);var Ya=D()(Ka,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("FAIcon");return Object(a.D)(),Object(a.j)("div",Ba,[e.dataUrl?(Object(a.D)(),Object(a.j)("div",Fa,[Object(a.k)("div",Ea,[Object(a.k)("img",{ref:"img",src:e.dataUrl,alt:"",onLoad:t[0]||(t[0]=Object(a.Y)((...t)=>e.createCropper&&e.createCropper(...t),["stop"]))},null,40,Ma)]),Object(a.k)("div",Aa,[Object(a.k)("button",{class:"button-default btn",type:"button",disabled:e.submitting,onClick:t[1]||(t[1]=t=>e.submit()),textContent:Object(a.O)(e.saveText)},null,8,Ra),Object(a.k)("button",{class:"button-default btn",type:"button",disabled:e.submitting,onClick:t[2]||(t[2]=(...t)=>e.destroy&&e.destroy(...t)),textContent:Object(a.O)(e.cancelText)},null,8,Wa),Object(a.k)("button",{class:"button-default btn",type:"button",disabled:e.submitting,onClick:t[3]||(t[3]=t=>e.submit(!1)),textContent:Object(a.O)(e.saveWithoutCroppingText)},null,8,Ja),e.submitting?(Object(a.D)(),Object(a.h)(c,{key:0,spin:"",icon:"circle-notch"})):Object(a.i)("",!0)])])):Object(a.i)("",!0),Object(a.k)("input",{ref:"input",type:"file",class:"image-cropper-img-input",accept:e.mimes},null,8,Na)])}]]),Za=l(175),Qa=l(96),Xa=l(310),en=l(167),tn=l(174);function ln(e,t){var l=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),l.push.apply(l,a)}return l}function an(e){for(var t=1;t<arguments.length;t++){var l=null!=arguments[t]?arguments[t]:{};t%2?ln(Object(l),!0).forEach((function(t){y()(e,t,l[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(l)):ln(Object(l)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(l,t))}))}return e}T.c.add(x.rb,x.V,x.r);var nn={data:function(){return{newName:this.$store.state.users.currentUser.name_unescaped,newBio:Pa()(this.$store.state.users.currentUser.description),newLocked:this.$store.state.users.currentUser.locked,newFields:this.$store.state.users.currentUser.fields.map((function(e){return{name:e.name,value:e.value}})),showRole:this.$store.state.users.currentUser.show_role,role:this.$store.state.users.currentUser.role,bot:this.$store.state.users.currentUser.bot,pickAvatarBtnVisible:!0,bannerUploading:!1,backgroundUploading:!1,banner:null,bannerPreview:null,background:null,backgroundPreview:null,emailLanguage:this.$store.state.users.currentUser.language||""}},components:{ScopeSelector:Za.a,ImageCropper:Ya,EmojiInput:Xa.a,Autosuggest:re,ProgressButton:we.a,Checkbox:E.a,BooleanSetting:vt,InterfaceLanguageSwitcher:tn.a},computed:an(an({user:function(){return this.$store.state.users.currentUser}},Tt()),{},{emojiUserSuggestor:function(){return Object(en.a)({emoji:[].concat(Ue()(this.$store.state.instance.emoji),Ue()(this.$store.state.instance.customEmoji)),store:this.$store})},emojiSuggestor:function(){return Object(en.a)({emoji:[].concat(Ue()(this.$store.state.instance.emoji),Ue()(this.$store.state.instance.customEmoji))})},userSuggestor:function(){return Object(en.a)({store:this.$store})},fieldsLimits:function(){return this.$store.state.instance.fieldsLimits},maxFields:function(){return this.fieldsLimits?this.fieldsLimits.maxFields:0},defaultAvatar:function(){return this.$store.state.instance.server+this.$store.state.instance.defaultAvatar},defaultBanner:function(){return this.$store.state.instance.server+this.$store.state.instance.defaultBanner},isDefaultAvatar:function(){var e=this.$store.state.instance.defaultAvatar;return!this.$store.state.users.currentUser.profile_image_url||this.$store.state.users.currentUser.profile_image_url.includes(e)},isDefaultBanner:function(){var e=this.$store.state.instance.defaultBanner;return!this.$store.state.users.currentUser.cover_photo||this.$store.state.users.currentUser.cover_photo.includes(e)},isDefaultBackground:function(){return!this.$store.state.users.currentUser.background_image},avatarImgSrc:function(){var e=this.$store.state.users.currentUser.profile_image_url_original;return e||this.defaultAvatar},bannerImgSrc:function(){var e=this.$store.state.users.currentUser.cover_photo;return e||this.defaultBanner}}),methods:{updateProfile:function(){var e=this,t={note:this.newBio,locked:this.newLocked,display_name:this.newName,fields_attributes:this.newFields.filter((function(e){return null!=e})),bot:this.bot,show_role:this.showRole};this.emailLanguage&&(t.language=na.a.internalToBackendLocale(this.emailLanguage)),this.$store.state.api.backendInteractor.updateProfile({params:t}).then((function(t){e.newFields.splice(t.fields.length),Ia()(e.newFields,t.fields),e.$store.commit("addNewUsers",[t]),e.$store.commit("setCurrentUser",t)}))},changeVis:function(e){this.newDefaultScope=e},addField:function(){return this.newFields.length<this.maxFields&&(this.newFields.push({name:"",value:""}),!0)},deleteField:function(e,t){this.$delete(this.newFields,e)},uploadFile:function(e,t){var l=this,a=t.target.files[0];if(a)if(a.size>this.$store.state.instance[e+"limit"]){var n=Qa.a.fileSizeFormat(a.size),s=Qa.a.fileSizeFormat(this.$store.state.instance[e+"limit"]);this.$store.dispatch("pushGlobalNotice",{messageKey:"upload.error.message",messageArgs:[this.$t("upload.error.file_too_big",{filesize:n.num,filesizeunit:n.unit,allowedsize:s.num,allowedsizeunit:s.unit})],level:"error"})}else{var o=new FileReader;o.onload=function(t){var n=t.target.result;l[e+"Preview"]=n,l[e]=a},o.readAsDataURL(a)}},resetAvatar:function(){window.confirm(this.$t("settings.reset_avatar_confirm"))&&this.submitAvatar(void 0,"")},resetBanner:function(){window.confirm(this.$t("settings.reset_banner_confirm"))&&this.submitBanner("")},resetBackground:function(){window.confirm(this.$t("settings.reset_background_confirm"))&&this.submitBackground("")},submitAvatar:function(e,t){var l=this;return new Promise((function(a,n){function s(e,t){l.$store.state.api.backendInteractor.updateProfileImages({avatar:e,avatarName:t}).then((function(e){l.$store.commit("addNewUsers",[e]),l.$store.commit("setCurrentUser",e),a()})).catch((function(e){l.displayUploadError(e),n(e)}))}e?e.getCroppedCanvas().toBlob((function(e){return s(e,t.name)}),t.type):s(t,t.name)}))},submitBanner:function(e){var t=this;(this.bannerPreview||""===e)&&(this.bannerUploading=!0,this.$store.state.api.backendInteractor.updateProfileImages({banner:e}).then((function(e){t.$store.commit("addNewUsers",[e]),t.$store.commit("setCurrentUser",e),t.bannerPreview=null})).catch(this.displayUploadError).finally((function(){t.bannerUploading=!1})))},submitBackground:function(e){var t=this;(this.backgroundPreview||""===e)&&(this.backgroundUploading=!0,this.$store.state.api.backendInteractor.updateProfileImages({background:e}).then((function(e){t.$store.commit("addNewUsers",[e]),t.$store.commit("setCurrentUser",e),t.backgroundPreview=null})).catch(this.displayUploadError).finally((function(){t.backgroundUploading=!1})))},displayUploadError:function(e){this.$store.dispatch("pushGlobalNotice",{messageKey:"upload.error.message",messageArgs:[e.message],level:"error"})}}};l(699);var sn=D()(nn,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("EmojiInput"),i=Object(a.J)("Checkbox"),r=Object(a.J)("FAIcon"),b=Object(a.J)("interface-language-switcher"),u=Object(a.J)("image-cropper"),d=Object(a.J)("BooleanSetting");return Object(a.D)(),Object(a.j)("div",ca,[Object(a.k)("div",ia,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.name_bio")),1),Object(a.k)("p",null,Object(a.O)(e.$t("settings.name")),1),Object(a.m)(c,{modelValue:e.newName,"onUpdate:modelValue":t[1]||(t[1]=t=>e.newName=t),"enable-emoji-picker":"",suggest:e.emojiSuggestor},{default:Object(a.V)(()=>[Object(a.W)(Object(a.k)("input",{id:"username","onUpdate:modelValue":t[0]||(t[0]=t=>e.newName=t),class:"name-changer"},null,512),[[a.S,e.newName]])]),_:1},8,["modelValue","suggest"]),Object(a.k)("p",null,Object(a.O)(e.$t("settings.bio")),1),Object(a.m)(c,{modelValue:e.newBio,"onUpdate:modelValue":t[3]||(t[3]=t=>e.newBio=t),"enable-emoji-picker":"",suggest:e.emojiUserSuggestor},{default:Object(a.V)(()=>[Object(a.W)(Object(a.k)("textarea",{"onUpdate:modelValue":t[2]||(t[2]=t=>e.newBio=t),class:"bio resize-height"},null,512),[[a.S,e.newBio]])]),_:1},8,["modelValue","suggest"]),"admin"===e.role||"moderator"===e.role?(Object(a.D)(),Object(a.j)("p",ra,[Object(a.m)(i,{modelValue:e.showRole,"onUpdate:modelValue":t[4]||(t[4]=t=>e.showRole=t)},{default:Object(a.V)(()=>["admin"===e.role?(Object(a.D)(),Object(a.j)(a.a,{key:0},[Object(a.l)(Object(a.O)(e.$t("settings.show_admin_badge")),1)],64)):Object(a.i)("",!0),"moderator"===e.role?(Object(a.D)(),Object(a.j)(a.a,{key:1},[Object(a.l)(Object(a.O)(e.$t("settings.show_moderator_badge")),1)],64)):Object(a.i)("",!0)]),_:1},8,["modelValue"])])):Object(a.i)("",!0),e.maxFields>0?(Object(a.D)(),Object(a.j)("div",ba,[Object(a.k)("p",null,Object(a.O)(e.$t("settings.profile_fields.label")),1),(Object(a.D)(!0),Object(a.j)(a.a,null,Object(a.H)(e.newFields,(t,l)=>(Object(a.D)(),Object(a.j)("div",{key:l,class:"profile-fields"},[Object(a.m)(c,{modelValue:e.newFields[l].name,"onUpdate:modelValue":t=>e.newFields[l].name=t,"enable-emoji-picker":"","hide-emoji-button":"",suggest:e.userSuggestor},{default:Object(a.V)(()=>[Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t=>e.newFields[l].name=t,placeholder:e.$t("settings.profile_fields.name")},null,8,ua),[[a.S,e.newFields[l].name]])]),_:2},1032,["modelValue","onUpdate:modelValue","suggest"]),Object(a.m)(c,{modelValue:e.newFields[l].value,"onUpdate:modelValue":t=>e.newFields[l].value=t,"enable-emoji-picker":"","hide-emoji-button":"",suggest:e.userSuggestor},{default:Object(a.V)(()=>[Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t=>e.newFields[l].value=t,placeholder:e.$t("settings.profile_fields.value")},null,8,da),[[a.S,e.newFields[l].value]])]),_:2},1032,["modelValue","onUpdate:modelValue","suggest"]),Object(a.k)("button",{class:"delete-field button-unstyled -hover-highlight",onClick:t=>e.deleteField(l)},[e.newFields.length>1?(Object(a.D)(),Object(a.h)(r,{key:0,icon:"times"})):Object(a.i)("",!0)],8,Oa)]))),128)),e.newFields.length<e.maxFields?(Object(a.D)(),Object(a.j)("button",{key:0,class:"add-field faint button-unstyled -hover-highlight",onClick:t[5]||(t[5]=(...t)=>e.addField&&e.addField(...t))},[Object(a.m)(r,{icon:"plus"}),Object(a.l)(" "+Object(a.O)(e.$t("settings.profile_fields.add_field")),1)])):Object(a.i)("",!0)])):Object(a.i)("",!0),Object(a.k)("p",null,[Object(a.m)(i,{modelValue:e.bot,"onUpdate:modelValue":t[6]||(t[6]=t=>e.bot=t)},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.bot")),1)]),_:1},8,["modelValue"])]),Object(a.k)("p",null,[Object(a.m)(b,{"prompt-text":e.$t("settings.email_language"),language:e.emailLanguage,"set-language":t=>e.emailLanguage=t},null,8,["prompt-text","language","set-language"])]),Object(a.k)("button",{disabled:e.newName&&0===e.newName.length,class:"btn button-default",onClick:t[7]||(t[7]=(...t)=>e.updateProfile&&e.updateProfile(...t))},Object(a.O)(e.$t("settings.save")),9,pa)]),Object(a.k)("div",ja,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.avatar")),1),Object(a.k)("p",ma,Object(a.O)(e.$t("settings.avatar_size_instruction")),1),Object(a.k)("div",ha,[Object(a.k)("img",{src:e.user.profile_image_url_original,class:"current-avatar"},null,8,fa),!e.isDefaultAvatar&&e.pickAvatarBtnVisible?(Object(a.D)(),Object(a.j)("button",{key:0,title:e.$t("settings.reset_avatar"),onClick:t[8]||(t[8]=(...t)=>e.resetAvatar&&e.resetAvatar(...t)),class:"button-unstyled reset-button"},[Object(a.m)(r,{icon:"times",type:"button"})],8,ga)):Object(a.i)("",!0)]),Object(a.k)("p",null,Object(a.O)(e.$t("settings.set_new_avatar")),1),Object(a.W)(Object(a.k)("button",{id:"pick-avatar",class:"button-default btn",type:"button"},Object(a.O)(e.$t("settings.upload_a_photo")),513),[[a.T,e.pickAvatarBtnVisible]]),Object(a.m)(u,{trigger:"#pick-avatar","submit-handler":e.submitAvatar,onOpen:t[9]||(t[9]=t=>e.pickAvatarBtnVisible=!1),onClose:t[10]||(t[10]=t=>e.pickAvatarBtnVisible=!0)},null,8,["submit-handler"])]),Object(a.k)("div",ka,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.profile_banner")),1),Object(a.k)("div",va,[Object(a.k)("img",{src:e.user.cover_photo},null,8,ya),e.isDefaultBanner?Object(a.i)("",!0):(Object(a.D)(),Object(a.j)("button",{key:0,class:"button-unstyled reset-button",title:e.$t("settings.reset_profile_banner"),onClick:t[11]||(t[11]=(...t)=>e.resetBanner&&e.resetBanner(...t))},[Object(a.m)(r,{icon:"times",type:"button"})],8,wa))]),Object(a.k)("p",null,Object(a.O)(e.$t("settings.set_new_profile_banner")),1),e.bannerPreview?(Object(a.D)(),Object(a.j)("img",{key:0,class:"banner-background-preview",src:e.bannerPreview},null,8,_a)):Object(a.i)("",!0),Object(a.k)("div",null,[Object(a.k)("input",{type:"file",onChange:t[12]||(t[12]=t=>e.uploadFile("banner",t))},null,32)]),e.bannerUploading?(Object(a.D)(),Object(a.h)(r,{key:1,class:"uploading",spin:"",icon:"circle-notch"})):e.bannerPreview?(Object(a.D)(),Object(a.j)("button",{key:2,class:"btn button-default",onClick:t[13]||(t[13]=t=>e.submitBanner(e.banner))},Object(a.O)(e.$t("settings.save")),1)):Object(a.i)("",!0)]),Object(a.k)("div",Va,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.profile_background")),1),Object(a.k)("div",$a,[Object(a.k)("img",{src:e.user.background_image},null,8,Ca),e.isDefaultBackground?Object(a.i)("",!0):(Object(a.D)(),Object(a.j)("button",{key:0,class:"button-unstyled reset-button",title:e.$t("settings.reset_profile_background"),onClick:t[14]||(t[14]=(...t)=>e.resetBackground&&e.resetBackground(...t))},[Object(a.m)(r,{icon:"times",type:"button"})],8,Ta))]),Object(a.k)("p",null,Object(a.O)(e.$t("settings.set_new_profile_background")),1),e.backgroundPreview?(Object(a.D)(),Object(a.j)("img",{key:0,class:"banner-background-preview",src:e.backgroundPreview},null,8,xa)):Object(a.i)("",!0),Object(a.k)("div",null,[Object(a.k)("input",{type:"file",onChange:t[15]||(t[15]=t=>e.uploadFile("background",t))},null,32)]),e.backgroundUploading?(Object(a.D)(),Object(a.h)(r,{key:1,class:"uploading",spin:"",icon:"circle-notch"})):e.backgroundPreview?(Object(a.D)(),Object(a.j)("button",{key:2,class:"btn button-default",onClick:t[16]||(t[16]=t=>e.submitBackground(e.background))},Object(a.O)(e.$t("settings.save")),1)):Object(a.i)("",!0)]),Object(a.k)("div",La,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.account_privacy")),1),Object(a.k)("ul",Sa,[Object(a.k)("li",null,[Object(a.m)(d,{path:"serverSide_locked"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.lock_account_description")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(d,{path:"serverSide_discoverable"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.discoverable")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(d,{path:"serverSide_allowFollowingMove"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.allow_following_move")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(d,{path:"serverSide_hideFavorites"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_favorites_description")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(d,{path:"serverSide_hideFollowers"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_followers_description")),1)]),_:1}),Object(a.k)("ul",{class:Object(a.w)(["setting-list suboptions",[{disabled:!e.serverSide_hideFollowers}]])},[Object(a.k)("li",null,[Object(a.m)(d,{path:"serverSide_hideFollowersCount",disabled:!e.serverSide_hideFollowers},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_followers_count_description")),1)]),_:1},8,["disabled"])])],2)]),Object(a.k)("li",null,[Object(a.m)(d,{path:"serverSide_hideFollows"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_follows_description")),1)]),_:1}),Object(a.k)("ul",{class:Object(a.w)(["setting-list suboptions",[{disabled:!e.serverSide_hideFollows}]])},[Object(a.k)("li",null,[Object(a.m)(d,{path:"serverSide_hideFollowsCount",disabled:!e.serverSide_hideFollows},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_follows_count_description")),1)]),_:1},8,["disabled"])])],2)])])])])}]]);const on=["label"],cn={class:"setting-item"},rn={class:"setting-list"},bn={key:0},un={key:1},dn={key:2},On={class:"setting-item"},pn={class:"setting-list"},jn={key:0,class:"setting-list suboptions"},mn={class:"setting-list suboptions"},hn={key:0,class:"unavailable"},fn={class:"setting-list suboptions"},gn={key:0},kn={key:1},vn={key:2},yn={key:3},wn={key:0,class:"setting-item"},_n={class:"setting-list"},Vn={for:"default-vis"},$n={key:0};function Cn(e,t){var l=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),l.push.apply(l,a)}return l}T.c.add(x.I);var Tn={data:function(){var e=this;return{subjectLineOptions:["email","noop","masto"].map((function(t){return{key:t,value:t,label:e.$t("settings.subject_line_".concat("masto"===t?"mastodon":t))}})),conversationDisplayOptions:["tree","linear"].map((function(t){return{key:t,value:t,label:e.$t("settings.conversation_display_".concat(t))}})),conversationOtherRepliesButtonOptions:["below","inside"].map((function(t){return{key:t,value:t,label:e.$t("settings.conversation_other_replies_button_".concat(t))}})),mentionLinkDisplayOptions:["short","full_for_remote","full"].map((function(t){return{key:t,value:t,label:e.$t("settings.mention_link_display_".concat(t))}})),thirdColumnModeOptions:["none","notifications","postform"].map((function(t){return{key:t,value:t,label:e.$t("settings.third_column_mode_".concat(t))}})),loopSilentAvailable:Object.getOwnPropertyDescriptor(HTMLVideoElement.prototype,"mozHasAudio")||Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype,"webkitAudioDecodedByteCount")||Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype,"audioTracks")}},components:{BooleanSetting:vt,ChoiceSetting:Gt,IntegerSetting:Qt,InterfaceLanguageSwitcher:tn.a,ScopeSelector:Za.a,ServerSideIndicator:gt},computed:function(e){for(var t=1;t<arguments.length;t++){var l=null!=arguments[t]?arguments[t]:{};t%2?Cn(Object(l),!0).forEach((function(t){y()(e,t,l[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(l)):Cn(Object(l)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(l,t))}))}return e}({postFormats:function(){return this.$store.state.instance.postFormats||[]},postContentOptions:function(){var e=this;return this.postFormats.map((function(t){return{key:t,value:t,label:e.$t('post_status.content_type["'.concat(t,'"]'))}}))},instanceSpecificPanelPresent:function(){return this.$store.state.instance.showInstanceSpecificPanel},instanceWallpaperUsed:function(){return this.$store.state.instance.background&&!this.$store.state.users.currentUser.background_image},instanceShoutboxPresent:function(){return this.$store.state.instance.shoutAvailable},language:{get:function(){return this.$store.getters.mergedConfig.interfaceLanguage},set:function(e){this.$store.dispatch("setOption",{name:"interfaceLanguage",value:e})}}},Tt()),methods:{changeDefaultScope:function(e){this.$store.dispatch("setServerSideOption",{name:"defaultScope",value:e})}}};var xn=D()(Tn,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("interface-language-switcher"),i=Object(a.J)("BooleanSetting"),r=Object(a.J)("ChoiceSetting"),b=Object(a.J)("IntegerSetting"),u=Object(a.J)("FAIcon"),d=Object(a.J)("ServerSideIndicator"),O=Object(a.J)("ScopeSelector");return Object(a.D)(),Object(a.j)("div",{label:e.$t("settings.general")},[Object(a.k)("div",cn,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.interface")),1),Object(a.k)("ul",rn,[Object(a.k)("li",null,[Object(a.m)(c,{"prompt-text":e.$t("settings.interfaceLanguage"),language:e.language,"set-language":t=>e.language=t},null,8,["prompt-text","language","set-language"])]),e.instanceSpecificPanelPresent?(Object(a.D)(),Object(a.j)("li",bn,[Object(a.m)(i,{path:"hideISP"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_isp")),1)]),_:1})])):Object(a.i)("",!0),Object(a.k)("li",null,[Object(a.m)(i,{path:"sidebarRight"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.right_sidebar")),1)]),_:1})]),e.instanceWallpaperUsed?(Object(a.D)(),Object(a.j)("li",un,[Object(a.m)(i,{path:"hideInstanceWallpaper"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_wallpaper")),1)]),_:1})])):Object(a.i)("",!0),Object(a.k)("li",null,[Object(a.m)(i,{path:"stopGifs"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.stop_gifs")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"streaming"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.streaming")),1)]),_:1}),Object(a.k)("ul",{class:Object(a.w)(["setting-list suboptions",[{disabled:!e.streaming}]])},[Object(a.k)("li",null,[Object(a.m)(i,{path:"pauseOnUnfocused",disabled:!e.streaming},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.pause_on_unfocused")),1)]),_:1},8,["disabled"])])],2)]),Object(a.k)("li",null,[Object(a.m)(i,{path:"useStreamingApi",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.useStreamingApi")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"virtualScrolling",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.virtual_scrolling")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"disableStickyHeaders"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.disable_sticky_headers")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"showScrollbars"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.show_scrollbars")),1)]),_:1})]),Object(a.k)("li",null,[e.user?(Object(a.D)(),Object(a.h)(r,{key:0,id:"thirdColumnMode",path:"thirdColumnMode",options:e.thirdColumnModeOptions},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.third_column_mode")),1)]),_:1},8,["options"])):Object(a.i)("",!0)]),Object(a.k)("li",null,[Object(a.m)(i,{path:"minimalScopesMode"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.minimal_scopes_mode")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"sensitiveByDefault"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.sensitive_by_default")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"sensitiveIfSubject"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.sensitive_if_subject")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"renderMisskeyMarkdown"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.render_mfm")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"alwaysShowNewPostButton",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.always_show_post_button")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"autohideFloatingPostButton",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.autohide_floating_post_button")),1)]),_:1})]),e.instanceShoutboxPresent?(Object(a.D)(),Object(a.j)("li",dn,[Object(a.m)(i,{path:"hideShoutbox",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_shoutbox")),1)]),_:1})])):Object(a.i)("",!0)])]),Object(a.k)("div",On,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.post_look_feel")),1),Object(a.k)("ul",pn,[Object(a.k)("li",null,[Object(a.m)(r,{id:"conversationDisplay",path:"conversationDisplay",options:e.conversationDisplayOptions},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.conversation_display")),1)]),_:1},8,["options"])]),"linear"!==e.conversationDisplay?(Object(a.D)(),Object(a.j)("ul",jn,[Object(a.k)("li",null,[Object(a.m)(i,{path:"conversationTreeAdvanced"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.tree_advanced")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"conversationTreeFadeAncestors",expert:1},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.tree_fade_ancestors")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(b,{path:"maxDepthInThread",min:3,expert:1},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.max_depth_in_thread")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(r,{id:"conversationOtherRepliesButton",path:"conversationOtherRepliesButton",options:e.conversationOtherRepliesButtonOptions,expert:1},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.conversation_other_replies_button")),1)]),_:1},8,["options"])])])):Object(a.i)("",!0),Object(a.k)("li",null,[Object(a.m)(i,{path:"collapseMessageWithSubject"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.collapse_subject")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"emojiReactionsOnTimeline",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.emoji_reactions_on_timeline")),1)]),_:1})]),Object(a.k)("li",null,[e.user?(Object(a.D)(),Object(a.h)(i,{key:0,path:"serverSide_stripRichContent",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.no_rich_text_description")),1)]),_:1})):Object(a.i)("",!0)]),Object(a.k)("h3",null,Object(a.O)(e.$t("settings.attachments")),1),Object(a.k)("li",null,[Object(a.m)(i,{path:"useContainFit",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.use_contain_fit")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"hideNsfw"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.nsfw_clickthrough")),1)]),_:1})]),Object(a.k)("ul",mn,[Object(a.k)("li",null,[Object(a.m)(i,{path:"preloadImage",expert:"1",disabled:!e.hideNsfw},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.preload_images")),1)]),_:1},8,["disabled"])]),Object(a.k)("li",null,[Object(a.m)(i,{path:"useOneClickNsfw",expert:"1",disabled:!e.hideNsfw},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.use_one_click_nsfw")),1)]),_:1},8,["disabled"])])]),Object(a.k)("li",null,[Object(a.m)(i,{path:"loopVideo",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.loop_video")),1)]),_:1}),Object(a.k)("ul",{class:Object(a.w)(["setting-list suboptions",[{disabled:!e.streaming}]])},[Object(a.k)("li",null,[Object(a.m)(i,{path:"loopVideoSilentOnly",expert:"1",disabled:!e.loopVideo||!e.loopSilentAvailable},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.loop_video_silent_only")),1)]),_:1},8,["disabled"]),e.loopSilentAvailable?Object(a.i)("",!0):(Object(a.D)(),Object(a.j)("div",hn,[Object(a.m)(u,{icon:"globe"}),Object(a.l)("! "+Object(a.O)(e.$t("settings.limited_availability")),1)]))])],2)]),Object(a.k)("li",null,[Object(a.m)(i,{path:"playVideosInModal",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.play_videos_in_modal")),1)]),_:1})]),Object(a.k)("h3",null,Object(a.O)(e.$t("settings.mention_links")),1),Object(a.k)("li",null,[Object(a.m)(r,{id:"mentionLinkDisplay",path:"mentionLinkDisplay",options:e.mentionLinkDisplayOptions},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.mention_link_display")),1)]),_:1},8,["options"])]),Object(a.k)("ul",fn,["short"===e.mentionLinkDisplay?(Object(a.D)(),Object(a.j)("li",gn,[Object(a.m)(i,{path:"mentionLinkShowTooltip",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.mention_link_show_tooltip")),1)]),_:1})])):Object(a.i)("",!0)]),Object(a.k)("li",null,[Object(a.m)(i,{path:"useAtIcon",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.use_at_icon")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"mentionLinkShowAvatar"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.mention_link_show_avatar")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"mentionLinkFadeDomain",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.mention_link_fade_domain")),1)]),_:1})]),e.user?(Object(a.D)(),Object(a.j)("li",kn,[Object(a.m)(i,{path:"mentionLinkBoldenYou",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.mention_link_bolden_you")),1)]),_:1})])):Object(a.i)("",!0),e.expertLevel>0?(Object(a.D)(),Object(a.j)("h3",vn,Object(a.O)(e.$t("settings.fun")),1)):Object(a.i)("",!0),Object(a.k)("li",null,[Object(a.m)(i,{path:"greentext",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.greentext")),1)]),_:1})]),e.user?(Object(a.D)(),Object(a.j)("li",yn,[Object(a.m)(i,{path:"mentionLinkShowYous",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.show_yous")),1)]),_:1})])):Object(a.i)("",!0)])]),e.user?(Object(a.D)(),Object(a.j)("div",wn,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.composing")),1),Object(a.k)("ul",_n,[Object(a.k)("li",null,[Object(a.k)("label",Vn,[Object(a.l)(Object(a.O)(e.$t("settings.default_vis"))+" ",1),Object(a.m)(d,{"server-side":!0}),Object(a.m)(O,{class:"scope-selector","show-all":!0,"user-default":e.serverSide_defaultScope,"initial-scope":e.serverSide_defaultScope,"on-scope-change":e.changeDefaultScope},null,8,["user-default","initial-scope","on-scope-change"])])]),Object(a.k)("li",null,[Object(a.m)(i,{path:"sensitiveByDefault"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.sensitive_by_default")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"scopeCopy",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.scope_copy")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"alwaysShowSubjectInput",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.subject_input_always_show")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(r,{id:"subjectLineBehavior",path:"subjectLineBehavior",options:e.subjectLineOptions,expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.subject_line_behavior")),1)]),_:1},8,["options"])]),e.postFormats.length>0?(Object(a.D)(),Object(a.j)("li",$n,[Object(a.m)(r,{id:"postContentType",path:"postContentType",options:e.postContentOptions},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.post_status_content_type")),1)]),_:1},8,["options"])])):Object(a.i)("",!0),Object(a.k)("li",null,[Object(a.m)(i,{path:"minimalScopesMode",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.minimal_scopes_mode")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"alwaysShowNewPostButton",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.always_show_post_button")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"autohideFloatingPostButton",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.autohide_floating_post_button")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"padEmoji",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.pad_emoji")),1)]),_:1})])])])):Object(a.i)("",!0)],8,on)}]]);const Ln=["label"],Sn={class:"setting-item"},Dn={class:"setting-list"},Pn={class:"option-list"},Un=["href"],In={class:"option-list"},Bn=["href"];var Fn={data:function(){var e=this.$store.state.instance;return{backendVersion:e.backendVersion,frontendVersion:e.frontendVersion}},computed:{frontendVersionLink:function(){return"https://git.pleroma.social/pleroma/pleroma-fe/commit/"+this.frontendVersion},backendVersionLink:function(){return"https://git.pleroma.social/pleroma/pleroma/commit/"+(e=this.backendVersion,(t=e.match(/-g(\w+)/i))?t[1]:"");var e,t}}};var En=D()(Fn,[["render",function(e,t,l,n,s,o){return Object(a.D)(),Object(a.j)("div",{label:e.$t("settings.version.title")},[Object(a.k)("div",Sn,[Object(a.k)("ul",Dn,[Object(a.k)("li",null,[Object(a.k)("p",null,Object(a.O)(e.$t("settings.version.backend_version")),1),Object(a.k)("ul",Pn,[Object(a.k)("li",null,[Object(a.k)("a",{href:e.backendVersionLink,target:"_blank"},Object(a.O)(e.backendVersion),9,Un)])])]),Object(a.k)("li",null,[Object(a.k)("p",null,Object(a.O)(e.$t("settings.version.frontend_version")),1),Object(a.k)("ul",In,[Object(a.k)("li",null,[Object(a.k)("a",{href:e.frontendVersionLink,target:"_blank"},Object(a.O)(e.frontendVersion),9,Bn)])])])])])],8,Ln)}]]);const Mn={class:"theme-tab"},An={class:"presets-container"},Rn={class:"save-load"},Wn={key:0,class:"theme-warning"},Jn={class:"alert warning"},Nn={class:"buttons"},qn={class:"top"},Gn={class:"presets"},Hn={for:"preset-switcher",class:"select"},zn=["value"],Kn={class:"export-import"},Yn={class:"save-load-options"},Zn={class:"keep-option"},Qn={class:"keep-option"},Xn={class:"keep-option"},es={class:"keep-option"},ts={class:"keep-option"},ls=["label"],as={class:"tab-header"},ns={class:"tab-header-buttons"},ss={class:"color-item"},os={class:"color-item"},cs={class:"color-item"},is={class:"color-item"},rs=["label"],bs={class:"tab-header"},us={class:"color-item"},ds={class:"color-item"},Os={class:"color-item"},ps={class:"color-item"},js={class:"color-item"},ms={class:"color-item"},hs={class:"color-item"},fs={class:"color-item"},gs={class:"color-item"},ks={class:"color-item"},vs={class:"color-item"},ys={class:"color-item"},ws={class:"color-item"},_s={class:"color-item"},Vs={class:"color-item"},$s={class:"color-item"},Cs={class:"color-item"},Ts={class:"color-item"},xs=["label"],Ls={class:"tab-header"},Ss=["label"],Ds={class:"tab-header shadow-selector"},Ps={class:"select-container"},Us=["value"],Is={class:"override"},Bs={for:"override",class:"label"},Fs=Object(a.l)(" "+Object(a.O)(" ")+" "),Es=Object(a.k)("label",{class:"checkbox-label",for:"override"},null,-1),Ms={key:0},As=Object(a.k)("code",null,"filter: drop-shadow()",-1),Rs=Object(a.k)("code",null,"drop-shadow",-1),Ws=Object(a.k)("code",null,"spread-radius",-1),Js=Object(a.k)("code",null,"inset",-1),Ns=Object(a.k)("code",null,"box-shadow",-1),qs=["label"],Gs={class:"tab-header"},Hs={class:"apply-container"},zs=["disabled"];var Ks=l(18),Ys=l(43),Zs=l(138),Qs=l(36),Xs=l(54);const eo=["for"],to={class:"input color-input-field"},lo=["id","value","disabled"],ao=["id","value","disabled"],no={key:1,class:"transparentIndicator"};var so={components:{Checkbox:E.a},props:{name:{required:!0,type:String},label:{required:!0,type:String},modelValue:{required:!1,type:String,default:void 0},fallback:{required:!1,type:String,default:void 0},disabled:{required:!1,type:Boolean,default:!1},showOptionalTickbox:{required:!1,type:Boolean,default:!0}},emits:["update:modelValue"],computed:{present:function(){return void 0!==this.modelValue},validColor:function(){return Object(Ks.f)(this.modelValue||this.fallback)},transparentColor:function(){return"transparent"===this.modelValue},computedColor:function(){return this.modelValue&&this.modelValue.startsWith("--")}}};l(700),l(701);var oo=D()(so,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("Checkbox");return Object(a.D)(),Object(a.j)("div",{class:Object(a.w)(["color-input style-control",{disabled:!o.present||l.disabled}])},[Object(a.k)("label",{for:l.name,class:"label"},Object(a.O)(l.label),9,eo),void 0!==l.fallback&&l.showOptionalTickbox?(Object(a.D)(),Object(a.h)(c,{key:0,"model-value":o.present,disabled:l.disabled,class:"opt","onUpdate:modelValue":t[0]||(t[0]=t=>e.$emit("update:modelValue",void 0===l.modelValue?l.fallback:void 0))},null,8,["model-value","disabled"])):Object(a.i)("",!0),Object(a.k)("div",to,[Object(a.k)("input",{id:l.name+"-t",class:"textColor unstyled",type:"text",value:l.modelValue||l.fallback,disabled:!o.present||l.disabled,onInput:t[1]||(t[1]=t=>e.$emit("update:modelValue",t.target.value))},null,40,lo),o.validColor?(Object(a.D)(),Object(a.j)("input",{key:0,id:l.name,class:"nativeColor unstyled",type:"color",value:l.modelValue||l.fallback,disabled:!o.present||l.disabled,onInput:t[2]||(t[2]=t=>e.$emit("update:modelValue",t.target.value))},null,40,ao)):Object(a.i)("",!0),o.transparentColor?(Object(a.D)(),Object(a.j)("div",no)):Object(a.i)("",!0),o.computedColor?(Object(a.D)(),Object(a.j)("div",{key:2,class:"computedIndicator",style:Object(a.x)({backgroundColor:l.fallback})},null,4)):Object(a.i)("",!0)])],2)}]]);const co=["for"],io=["id","checked"],ro=["for"],bo=["id","value","disabled","max","min","step"],uo=["id","value","disabled","max","min","step"];var Oo={props:["name","modelValue","fallback","disabled","label","max","min","step","hardMin","hardMax"],emits:["update:modelValue"],computed:{present:function(){return void 0!==this.modelValue}}};var po=D()(Oo,[["render",function(e,t,l,n,s,o){return Object(a.D)(),Object(a.j)("div",{class:Object(a.w)(["range-control style-control",{disabled:!o.present||l.disabled}])},[Object(a.k)("label",{for:l.name,class:"label"},Object(a.O)(l.label),9,co),void 0!==l.fallback?(Object(a.D)(),Object(a.j)("input",{key:0,id:l.name+"-o",class:"opt",type:"checkbox",checked:o.present,onChange:t[0]||(t[0]=t=>e.$emit("update:modelValue",o.present?void 0:l.fallback))},null,40,io)):Object(a.i)("",!0),void 0!==l.fallback?(Object(a.D)(),Object(a.j)("label",{key:1,class:"opt-l",for:l.name+"-o"},null,8,ro)):Object(a.i)("",!0),Object(a.k)("input",{id:l.name,class:"input-number",type:"range",value:l.modelValue||l.fallback,disabled:!o.present||l.disabled,max:l.max||l.hardMax||100,min:l.min||l.hardMin||0,step:l.step||1,onInput:t[1]||(t[1]=t=>e.$emit("update:modelValue",t.target.value))},null,40,bo),Object(a.k)("input",{id:l.name,class:"input-number",type:"number",value:l.modelValue||l.fallback,disabled:!o.present||l.disabled,max:l.hardMax,min:l.hardMin,step:l.step||1,onInput:t[2]||(t[2]=t=>e.$emit("update:modelValue",t.target.value))},null,40,uo)],2)}]]);const jo=["for"],mo=["id","value","disabled"];var ho={components:{Checkbox:E.a},props:["name","modelValue","fallback","disabled"],emits:["update:modelValue"],computed:{present:function(){return void 0!==this.modelValue}}};var fo=D()(ho,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("Checkbox");return Object(a.D)(),Object(a.j)("div",{class:Object(a.w)(["opacity-control style-control",{disabled:!o.present||l.disabled}])},[Object(a.k)("label",{for:l.name,class:"label"},Object(a.O)(e.$t("settings.style.common.opacity")),9,jo),void 0!==l.fallback?(Object(a.D)(),Object(a.h)(c,{key:0,"model-value":o.present,disabled:l.disabled,class:"opt","onUpdate:modelValue":t[0]||(t[0]=t=>e.$emit("update:modelValue",o.present?void 0:l.fallback))},null,8,["model-value","disabled"])):Object(a.i)("",!0),Object(a.k)("input",{id:l.name,class:"input-number",type:"number",value:l.modelValue||l.fallback,disabled:!o.present||l.disabled,max:"1",min:"0",step:".05",onInput:t[1]||(t[1]=t=>e.$emit("update:modelValue",t.target.value))},null,40,mo)],2)}]]);const go={class:"shadow-preview-container"},ko=["disabled"],vo=["disabled"],yo={class:"wrap"},wo=["disabled"],_o={class:"preview-window"},Vo=["disabled"],$o=["disabled"],Co={class:"wrap"},To=["disabled"],xo={class:"shadow-tweak"},Lo=["disabled"],So=["value"],Do=["disabled"],Po=["disabled"],Uo=["disabled"],Io=["disabled"],Bo=["disabled"],Fo={for:"inset",class:"label"},Eo=["disabled"],Mo=Object(a.k)("label",{class:"checkbox-label",for:"inset"},null,-1),Ao=["disabled"],Ro={for:"spread",class:"label"},Wo=["disabled"],Jo=["disabled"],No=["disabled"],qo={for:"spread",class:"label"},Go=["disabled"],Ho=["disabled"],zo=Object(a.k)("code",null,"--variable,mod",-1);function Ko(e,t){var l=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),l.push.apply(l,a)}return l}function Yo(e){for(var t=1;t<arguments.length;t++){var l=null!=arguments[t]?arguments[t]:{};t%2?Ko(Object(l),!0).forEach((function(t){y()(e,t,l[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(l)):Ko(Object(l)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(l,t))}))}return e}T.c.add(x.n,x.q,x.rb,x.V);var Zo=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Yo({x:0,y:0,blur:0,spread:0,inset:!1,color:"#000000",alpha:1},e)},Qo={props:["modelValue","fallback","ready"],emits:["update:modelValue"],data:function(){return{selectedId:0,cValue:(this.modelValue||this.fallback||[]).map(Zo)}},components:{ColorInput:oo,OpacityInput:fo,Select:Nt.a},methods:{add:function(){this.cValue.push(Zo(this.selected)),this.selectedId=this.cValue.length-1},del:function(){this.cValue.splice(this.selectedId,1),this.selectedId=0===this.cValue.length?void 0:Math.max(this.selectedId-1,0)},moveUp:function(){var e=this.cValue.splice(this.selectedId,1)[0];this.cValue.splice(this.selectedId-1,0,e),this.selectedId-=1},moveDn:function(){var e=this.cValue.splice(this.selectedId,1)[0];this.cValue.splice(this.selectedId+1,0,e),this.selectedId+=1}},beforeUpdate:function(){this.cValue=this.modelValue||this.fallback},computed:{anyShadows:function(){return this.cValue.length>0},anyShadowsFallback:function(){return this.fallback.length>0},selected:function(){return this.ready&&this.anyShadows?this.cValue[this.selectedId]:Zo({})},currentFallback:function(){return this.ready&&this.anyShadowsFallback?this.fallback[this.selectedId]:Zo({})},moveUpValid:function(){return this.ready&&this.selectedId>0},moveDnValid:function(){return this.ready&&this.selectedId<this.cValue.length-1},present:function(){return this.ready&&void 0!==this.cValue[this.selectedId]&&!this.usingFallback},usingFallback:function(){return void 0===this.modelValue},rgb:function(){return Object(Ks.f)(this.selected.color)},style:function(){return this.ready?{boxShadow:Object(Ys.i)(this.fallback)}:{}}}};l(702);var Xo=D()(Qo,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("Select"),i=Object(a.J)("FAIcon"),r=Object(a.J)("ColorInput"),b=Object(a.J)("OpacityInput"),u=Object(a.J)("i18n-t");return Object(a.D)(),Object(a.j)("div",{class:Object(a.w)(["shadow-control",{disabled:!e.present}])},[Object(a.k)("div",go,[Object(a.k)("div",{disabled:!e.present,class:"y-shift-control"},[Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[0]||(t[0]=t=>e.selected.y=t),disabled:!e.present,class:"input-number",type:"number"},null,8,vo),[[a.S,e.selected.y]]),Object(a.k)("div",yo,[Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[1]||(t[1]=t=>e.selected.y=t),disabled:!e.present,class:"input-range",type:"range",max:"20",min:"-20"},null,8,wo),[[a.S,e.selected.y]])])],8,ko),Object(a.k)("div",_o,[Object(a.k)("div",{class:"preview-block",style:Object(a.x)(e.style)},null,4)]),Object(a.k)("div",{disabled:!e.present,class:"x-shift-control"},[Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[2]||(t[2]=t=>e.selected.x=t),disabled:!e.present,class:"input-number",type:"number"},null,8,$o),[[a.S,e.selected.x]]),Object(a.k)("div",Co,[Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[3]||(t[3]=t=>e.selected.x=t),disabled:!e.present,class:"input-range",type:"range",max:"20",min:"-20"},null,8,To),[[a.S,e.selected.x]])])],8,Vo)]),Object(a.k)("div",xo,[Object(a.k)("div",{disabled:e.usingFallback,class:"id-control style-control"},[Object(a.m)(c,{id:"shadow-switcher",modelValue:e.selectedId,"onUpdate:modelValue":t[4]||(t[4]=t=>e.selectedId=t),class:"shadow-switcher",disabled:!e.ready||e.usingFallback},{default:Object(a.V)(()=>[(Object(a.D)(!0),Object(a.j)(a.a,null,Object(a.H)(e.cValue,(t,l)=>(Object(a.D)(),Object(a.j)("option",{key:l,value:l},Object(a.O)(e.$t("settings.style.shadows.shadow_id",{value:l})),9,So))),128))]),_:1},8,["modelValue","disabled"]),Object(a.k)("button",{class:"btn button-default",disabled:!e.ready||!e.present,onClick:t[5]||(t[5]=(...t)=>e.del&&e.del(...t))},[Object(a.m)(i,{"fixed-width":"",icon:"times"})],8,Do),Object(a.k)("button",{class:"btn button-default",disabled:!e.moveUpValid,onClick:t[6]||(t[6]=(...t)=>e.moveUp&&e.moveUp(...t))},[Object(a.m)(i,{"fixed-width":"",icon:"chevron-up"})],8,Po),Object(a.k)("button",{class:"btn button-default",disabled:!e.moveDnValid,onClick:t[7]||(t[7]=(...t)=>e.moveDn&&e.moveDn(...t))},[Object(a.m)(i,{"fixed-width":"",icon:"chevron-down"})],8,Uo),Object(a.k)("button",{class:"btn button-default",disabled:e.usingFallback,onClick:t[8]||(t[8]=(...t)=>e.add&&e.add(...t))},[Object(a.m)(i,{"fixed-width":"",icon:"plus"})],8,Io)],8,Lo),Object(a.k)("div",{disabled:!e.present,class:"inset-control style-control"},[Object(a.k)("label",Fo,Object(a.O)(e.$t("settings.style.shadows.inset")),1),Object(a.W)(Object(a.k)("input",{id:"inset","onUpdate:modelValue":t[9]||(t[9]=t=>e.selected.inset=t),disabled:!e.present,name:"inset",class:"input-inset",type:"checkbox"},null,8,Eo),[[a.R,e.selected.inset]]),Mo],8,Bo),Object(a.k)("div",{disabled:!e.present,class:"blur-control style-control"},[Object(a.k)("label",Ro,Object(a.O)(e.$t("settings.style.shadows.blur")),1),Object(a.W)(Object(a.k)("input",{id:"blur","onUpdate:modelValue":t[10]||(t[10]=t=>e.selected.blur=t),disabled:!e.present,name:"blur",class:"input-range",type:"range",max:"20",min:"0"},null,8,Wo),[[a.S,e.selected.blur]]),Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[11]||(t[11]=t=>e.selected.blur=t),disabled:!e.present,class:"input-number",type:"number",min:"0"},null,8,Jo),[[a.S,e.selected.blur]])],8,Ao),Object(a.k)("div",{disabled:!e.present,class:"spread-control style-control"},[Object(a.k)("label",qo,Object(a.O)(e.$t("settings.style.shadows.spread")),1),Object(a.W)(Object(a.k)("input",{id:"spread","onUpdate:modelValue":t[12]||(t[12]=t=>e.selected.spread=t),disabled:!e.present,name:"spread",class:"input-range",type:"range",max:"20",min:"-20"},null,8,Go),[[a.S,e.selected.spread]]),Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[13]||(t[13]=t=>e.selected.spread=t),disabled:!e.present,class:"input-number",type:"number"},null,8,Ho),[[a.S,e.selected.spread]])],8,No),Object(a.m)(r,{modelValue:e.selected.color,"onUpdate:modelValue":t[14]||(t[14]=t=>e.selected.color=t),disabled:!e.present,label:e.$t("settings.style.common.color"),fallback:e.currentFallback.color,"show-optional-tickbox":!1,name:"shadow"},null,8,["modelValue","disabled","label","fallback"]),Object(a.m)(b,{modelValue:e.selected.alpha,"onUpdate:modelValue":t[15]||(t[15]=t=>e.selected.alpha=t),disabled:!e.present},null,8,["modelValue","disabled"]),Object(a.m)(u,{scope:"global",keypath:"settings.style.shadows.hintV3",tag:"p"},{default:Object(a.V)(()=>[zo]),_:1})])],2)}]]);const ec=["for"],tc=["id","checked"],lc=["for"],ac=Object(a.l)(" "+Object(a.O)(" ")+" "),nc=["value"],sc=["id"];var oc={components:{Select:Nt.a},props:["name","label","modelValue","fallback","options","no-inherit"],emits:["update:modelValue"],data:function(){return{lValue:this.modelValue,availableOptions:[this.noInherit?"":"inherit","custom"].concat(Ue()(this.options||[]),["serif","monospace","sans-serif"]).filter((function(e){return e}))}},beforeUpdate:function(){this.lValue=this.modelValue},computed:{present:function(){return void 0!==this.lValue},dValue:function(){return this.lValue||this.fallback||{}},family:{get:function(){return this.dValue.family},set:function(e){it()(this.lValue,"family",e),this.$emit("update:modelValue",this.lValue)}},isCustom:function(){return"custom"===this.preset},preset:{get:function(){return"serif"===this.family||"sans-serif"===this.family||"monospace"===this.family||"inherit"===this.family?this.family:"custom"},set:function(e){this.family="custom"===e?"":e}}}};l(703);var cc=D()(oc,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("Select");return Object(a.D)(),Object(a.j)("div",{class:Object(a.w)(["font-control style-control",{custom:e.isCustom}])},[Object(a.k)("label",{for:"custom"===e.preset?e.name:e.name+"-font-switcher",class:"label"},Object(a.O)(e.label),9,ec),void 0!==e.fallback?(Object(a.D)(),Object(a.j)("input",{key:0,id:e.name+"-o",class:"opt exlcude-disabled",type:"checkbox",checked:e.present,onChange:t[0]||(t[0]=t=>e.$emit("update:modelValue",void 0===e.modelValue?e.fallback:void 0))},null,40,tc)):Object(a.i)("",!0),void 0!==e.fallback?(Object(a.D)(),Object(a.j)("label",{key:1,class:"opt-l",for:e.name+"-o"},null,8,lc)):Object(a.i)("",!0),ac,Object(a.m)(c,{id:e.name+"-font-switcher",modelValue:e.preset,"onUpdate:modelValue":t[1]||(t[1]=t=>e.preset=t),disabled:!e.present,class:"font-switcher"},{default:Object(a.V)(()=>[(Object(a.D)(!0),Object(a.j)(a.a,null,Object(a.H)(e.availableOptions,t=>(Object(a.D)(),Object(a.j)("option",{key:t,value:t},Object(a.O)("custom"===t?e.$t("settings.style.fonts.custom"):t),9,nc))),128))]),_:1},8,["id","modelValue","disabled"]),e.isCustom?Object(a.W)((Object(a.D)(),Object(a.j)("input",{key:2,id:e.name,"onUpdate:modelValue":t[2]||(t[2]=t=>e.family=t),class:"custom-font",type:"text"},null,8,sc)),[[a.S,e.family]]):Object(a.i)("",!0)],2)}]]);const ic={key:0,class:"contrast-ratio"},rc=["title"],bc={key:0},uc={key:1},dc={key:2},Oc=["title"],pc={key:0},jc={key:1},mc={key:2};T.c.add(x.a,x.z,x.pb);var hc={props:{large:{required:!1,type:Boolean,default:!1},contrast:{required:!1,type:Object,default:function(){return{}}}},computed:{hint:function(){var e=this.contrast.aaa?"aaa":this.contrast.aa?"aa":"bad",t=this.$t("settings.style.common.contrast.level.".concat(e)),l=this.$t("settings.style.common.contrast.context.text"),a=this.contrast.text;return this.$t("settings.style.common.contrast.hint",{level:t,context:l,ratio:a})},hint_18pt:function(){var e=this.contrast.laaa?"aaa":this.contrast.laa?"aa":"bad",t=this.$t("settings.style.common.contrast.level.".concat(e)),l=this.$t("settings.style.common.contrast.context.18pt"),a=this.contrast.text;return this.$t("settings.style.common.contrast.hint",{level:t,context:l,ratio:a})}}};l(704);var fc=D()(hc,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("FAIcon");return l.contrast?(Object(a.D)(),Object(a.j)("span",ic,[Object(a.k)("span",{title:o.hint,class:"rating"},[l.contrast.aaa?(Object(a.D)(),Object(a.j)("span",bc,[Object(a.m)(c,{icon:"thumbs-up"})])):Object(a.i)("",!0),!l.contrast.aaa&&l.contrast.aa?(Object(a.D)(),Object(a.j)("span",uc,[Object(a.m)(c,{icon:"adjust"})])):Object(a.i)("",!0),l.contrast.aaa||l.contrast.aa?Object(a.i)("",!0):(Object(a.D)(),Object(a.j)("span",dc,[Object(a.m)(c,{icon:"exclamation-triangle"})]))],8,rc),l.contrast&&l.large?(Object(a.D)(),Object(a.j)("span",{key:0,class:"rating",title:o.hint_18pt},[l.contrast.laaa?(Object(a.D)(),Object(a.j)("span",pc,[Object(a.m)(c,{icon:"thumbs-up"})])):Object(a.i)("",!0),!l.contrast.laaa&&l.contrast.laa?(Object(a.D)(),Object(a.j)("span",jc,[Object(a.m)(c,{icon:"adjust"})])):Object(a.i)("",!0),l.contrast.laaa||l.contrast.laa?Object(a.i)("",!0):(Object(a.D)(),Object(a.j)("span",mc,[Object(a.m)(c,{icon:"exclamation-triangle"})]))],8,Oc)):Object(a.i)("",!0)])):Object(a.i)("",!0)}]]);const gc={class:"preview-container"},kc=Object(a.k)("div",{class:"underlay underlay-preview"},null,-1),vc={class:"panel dummy"},yc={class:"panel-heading"},wc={class:"title"},_c=Object(a.k)("span",{class:"badge badge-notification"}," 99 ",-1),Vc={class:"faint"},$c={class:"alert error"},Cc={class:"btn button-default"},Tc={class:"panel-body theme-preview-content"},xc={class:"post"},Lc=Object(a.k)("div",{class:"avatar still-image"}," ( ͡° ͜ʖ ͡°) ",-1),Sc={class:"content"},Dc={style:{"font-family":"var(--postCodeFont)"}},Pc={style:{color:"var(--link)"}},Uc={class:"icons"},Ic={class:"after-post"},Bc=Object(a.k)("div",{class:"avatar-alt"}," :^) ",-1),Fc={class:"content"},Ec={style:{color:"var(--faintLink)"}},Mc=Object(a.k)("div",{class:"separator"},null,-1),Ac={class:"alert error"},Rc=["value"],Wc={class:"actions"},Jc={class:"checkbox"},Nc=Object(a.k)("input",{id:"preview_checkbox",checked:"very yes",type:"checkbox"},null,-1),qc={for:"preview_checkbox"},Gc={class:"btn button-default"};T.c.add(x.rb,x.jb,x.Z,x.Y);var Hc={};l(705);var zc=D()(Hc,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("i18n-t"),i=Object(a.J)("FAIcon");return Object(a.D)(),Object(a.j)("div",gc,[kc,Object(a.k)("div",vc,[Object(a.k)("div",yc,[Object(a.k)("div",wc,[Object(a.l)(Object(a.O)(e.$t("settings.style.preview.header"))+" ",1),_c]),Object(a.k)("span",Vc,Object(a.O)(e.$t("settings.style.preview.header_faint")),1),Object(a.k)("span",$c,Object(a.O)(e.$t("settings.style.preview.error")),1),Object(a.k)("button",Cc,Object(a.O)(e.$t("settings.style.preview.button")),1)]),Object(a.k)("div",Tc,[Object(a.k)("div",xc,[Lc,Object(a.k)("div",Sc,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.preview.content")),1),Object(a.m)(c,{scope:"global",keypath:"settings.style.preview.text"},{default:Object(a.V)(()=>[Object(a.k)("code",Dc,Object(a.O)(e.$t("settings.style.preview.mono")),1),Object(a.k)("a",Pc,Object(a.O)(e.$t("settings.style.preview.link")),1)]),_:1}),Object(a.k)("div",Uc,[Object(a.m)(i,{"fixed-width":"",style:{color:"var(--cBlue)"},class:"fa-scale-110 fa-old-padding",icon:"reply"}),Object(a.m)(i,{"fixed-width":"",style:{color:"var(--cGreen)"},class:"fa-scale-110 fa-old-padding",icon:"retweet"}),Object(a.m)(i,{"fixed-width":"",style:{color:"var(--cOrange)"},class:"fa-scale-110 fa-old-padding",icon:"star"}),Object(a.m)(i,{"fixed-width":"",style:{color:"var(--cRed)"},class:"fa-scale-110 fa-old-padding",icon:"times"})])])]),Object(a.k)("div",Ic,[Bc,Object(a.k)("div",Fc,[Object(a.m)(c,{keypath:"settings.style.preview.fine_print",tag:"span",class:"faint",scope:"global"},{default:Object(a.V)(()=>[Object(a.k)("a",Ec,Object(a.O)(e.$t("settings.style.preview.faint_link")),1)]),_:1})])]),Mc,Object(a.k)("span",Ac,Object(a.O)(e.$t("settings.style.preview.error")),1),Object(a.k)("input",{value:e.$t("settings.style.preview.input"),type:"text"},null,8,Rc),Object(a.k)("div",Wc,[Object(a.k)("span",Jc,[Nc,Object(a.k)("label",qc,Object(a.O)(e.$t("settings.style.preview.checkbox")),1)]),Object(a.k)("button",Gc,Object(a.O)(e.$t("settings.style.preview.button")),1)])])])])}]]);function Kc(e,t){var l=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),l.push.apply(l,a)}return l}function Yc(e){for(var t=1;t<arguments.length;t++){var l=null!=arguments[t]?arguments[t]:{};t%2?Kc(Object(l),!0).forEach((function(t){y()(e,t,l[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(l)):Kc(Object(l)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(l,t))}))}return e}var Zc=["bg","fg","text","link","cRed","cGreen","cBlue","cOrange"].map((function(e){return e+"ColorLocal"})),Qc={data:function(){var e=this;return Yc(Yc(Yc({themeImporter:Object(Zs.b)({validator:this.importValidator,onImport:this.onImport,onImportFailure:this.onImportFailure}),themeExporter:Object(Zs.a)({filename:"pleroma_theme",getExportedObject:function(){return e.exportedTheme}}),availableStyles:[],selected:"",selectedTheme:this.$store.getters.mergedConfig.theme,themeWarning:void 0,tempImportFile:void 0,engineVersion:0,previewShadows:{},previewColors:{},previewRadii:{},previewFonts:{},shadowsInvalid:!0,colorsInvalid:!0,radiiInvalid:!0,keepColor:!1,keepShadows:!1,keepOpacity:!1,keepRoundness:!1,keepFonts:!1},Object.keys(Qs.c).map((function(e){return[e,""]})).reduce((function(e,t){var l=wt()(t,2),a=l[0],n=l[1];return Yc(Yc({},e),{},y()({},a+"ColorLocal",n))}),{})),Object.keys(Xs.b).map((function(e){return[e,""]})).reduce((function(e,t){var l=wt()(t,2),a=l[0],n=l[1];return Yc(Yc({},e),{},y()({},a+"OpacityLocal",n))}),{})),{},{shadowSelected:void 0,shadowsLocal:{},fontsLocal:{},btnRadiusLocal:"",inputRadiusLocal:"",checkboxRadiusLocal:"",panelRadiusLocal:"",avatarRadiusLocal:"",avatarAltRadiusLocal:"",attachmentRadiusLocal:"",tooltipRadiusLocal:"",chatMessageRadiusLocal:""})},created:function(){var e=this;Object(Ys.k)().then((function(e){return Promise.all(Object.entries(e).map((function(e){var t=wt()(e,2),l=t[0];return t[1].then((function(e){return[l,e]}))})))})).then((function(e){return e.reduce((function(e,t){var l=wt()(t,2),a=l[0],n=l[1];return n?Yc(Yc({},e),{},y()({},a,n)):e}),{})})).then((function(t){e.availableStyles=t}))},mounted:function(){this.loadThemeFromLocalStorage(),void 0===this.shadowSelected&&(this.shadowSelected=this.shadowsAvailable[0])},computed:{themeWarningHelp:function(){if(this.themeWarning){var e=this.$t,t="settings.style.switcher.help.",l=this.themeWarning,a=l.origin,n=l.themeEngineVersion,s=l.type,o=l.noActionsPossible;if("file"===a){if(2===n&&"wrong_version"===s)return e(t+"v2_imported");if(n>Xs.a)return e(t+"future_version_imported")+" "+e(o?t+"snapshot_missing":t+"snapshot_present");if(n<Xs.a)return e(t+"future_version_imported")+" "+e(o?t+"snapshot_missing":t+"snapshot_present")}else if("localStorage"===a){if("snapshot_source_mismatch"===s)return e(t+"snapshot_source_mismatch");if(2===n)return e(t+"upgraded_from_v2");if(n>Xs.a)return e(t+"fe_downgraded")+" "+e(o?t+"migration_snapshot_ok":t+"migration_snapshot_gone");if(n<Xs.a)return e(t+"fe_upgraded")+" "+e(o?t+"migration_snapshot_ok":t+"migration_snapshot_gone")}}},selectedVersion:function(){return Array.isArray(this.selectedTheme)?1:2},currentColors:function(){var e=this;return Object.keys(Qs.c).map((function(t){return[t,e[t+"ColorLocal"]]})).reduce((function(e,t){var l=wt()(t,2),a=l[0],n=l[1];return Yc(Yc({},e),{},y()({},a,n))}),{})},currentOpacity:function(){var e=this;return Object.keys(Xs.b).map((function(t){return[t,e[t+"OpacityLocal"]]})).reduce((function(e,t){var l=wt()(t,2),a=l[0],n=l[1];return Yc(Yc({},e),{},y()({},a,n))}),{})},currentRadii:function(){return{btn:this.btnRadiusLocal,input:this.inputRadiusLocal,checkbox:this.checkboxRadiusLocal,panel:this.panelRadiusLocal,avatar:this.avatarRadiusLocal,avatarAlt:this.avatarAltRadiusLocal,tooltip:this.tooltipRadiusLocal,attachment:this.attachmentRadiusLocal,chatMessage:this.chatMessageRadiusLocal}},preview:function(){return Object(Ys.d)(this.previewColors,this.previewRadii,this.previewShadows,this.previewFonts)},previewTheme:function(){return this.preview.theme.colors?this.preview.theme:{colors:{},opacity:{},radii:{},shadows:{},fonts:{}}},previewContrast:function(){try{if(!this.previewTheme.colors.bg)return{};var e=this.previewTheme.colors,t=this.previewTheme.opacity;if(!e.bg)return{};var l=Object.entries(e).reduce((function(e,t){var l,a=wt()(t,2),n=a[0],s=a[1];return Yc(Yc({},e),{},y()({},n,(l=s).startsWith("--")||"transparent"===l?l:Object(Ks.f)(l)))}),{}),a=Object.entries(Qs.c).reduce((function(e,a){var n=wt()(a,2),s=n[0],o=n[1],c="text"===s||"link"===s;if(!(c||"object"===Ga()(o)&&null!==o&&o.textColor))return e;var i=c?{layer:"bg"}:o,r=i.layer,b=i.variant,u=b||r,d=Object(Xs.f)(u),O=[s].concat(Ue()("bg"===u?["cRed","cGreen","cBlue","cOrange"]:[])),p=Object(Xs.e)(r,b||r,d,l,t);return Yc(Yc({},e),O.reduce((function(e,t){var a=c?"bg"+t[0].toUpperCase()+t.slice(1):t;return Yc(Yc({},e),{},y()({},a,Object(Ks.c)(l[t],p,l[t])))}),{}))}),{});return Object.entries(a).reduce((function(e,t){var l,a=wt()(t,2),n=a[0],s=a[1];return e[n]={text:(l=s).toPrecision(3)+":1",aa:l>=4.5,aaa:l>=7,laa:l>=3,laaa:l>=4.5},e}),{})}catch(e){console.warn("Failure computing contrasts",e)}},previewRules:function(){return this.preview.rules?[].concat(Ue()(Object.values(this.preview.rules)),["color: var(--text)","font-family: var(--interfaceFont, sans-serif)"]).join(";"):""},shadowsAvailable:function(){return Object.keys(Ys.a).sort()},currentShadowOverriden:{get:function(){return!!this.currentShadow},set:function(e){e?this.shadowsLocal[this.shadowSelected]=this.currentShadowFallback.map((function(e){return Object.assign({},e)})):delete this.shadowsLocal[this.shadowSelected]}},currentShadowFallback:function(){return(this.previewTheme.shadows||{})[this.shadowSelected]},currentShadow:{get:function(){return this.shadowsLocal[this.shadowSelected]},set:function(e){this.shadowsLocal[this.shadowSelected]=e}},themeValid:function(){return!this.shadowsInvalid&&!this.colorsInvalid&&!this.radiiInvalid},exportedTheme:function(){var e=!(this.keepFonts||this.keepShadows||this.keepOpacity||this.keepRoundness||this.keepColor),t={themeEngineVersion:Xs.a};return(this.keepFonts||e)&&(t.fonts=this.fontsLocal),(this.keepShadows||e)&&(t.shadows=this.shadowsLocal),(this.keepOpacity||e)&&(t.opacity=this.currentOpacity),(this.keepColor||e)&&(t.colors=this.currentColors),(this.keepRoundness||e)&&(t.radii=this.currentRadii),{_pleroma_theme_version:2,theme:Yc({themeEngineVersion:Xs.a},this.previewTheme),source:t}},isActive:function(){var e=this.$parent;return!!e&&e.isActive("theme")}},components:{ColorInput:oo,OpacityInput:fo,RangeInput:po,ContrastRatio:fc,ShadowControl:Xo,FontControl:cc,TabSwitcher:O.a,Preview:zc,Checkbox:E.a,Select:Nt.a},methods:{loadTheme:function(e,t){var l=e.theme,a=e.source,n=e._pleroma_theme_version,s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(this.dismissWarning(),!a&&!l)throw new Error("Can't load theme: empty");var o="localStorage"!==t||l.colors?n:"l1",c=(l||{}).themeEngineVersion,i=(a||{}).themeEngineVersion||2,r=i===Xs.a,b=void 0!==l&&void 0!==a&&i!==c,u=a&&s||!l;r&&!b||u||"l1"===o||"defaults"===t||(b&&"localStorage"===t?this.themeWarning={origin:t,themeEngineVersion:i,type:"snapshot_source_mismatch"}:l?r||(this.themeWarning={origin:t,noActionsPossible:!a,themeEngineVersion:i,type:"wrong_version"}):this.themeWarning={origin:t,noActionsPossible:!0,themeEngineVersion:i,type:"no_snapshot_old_version"}),this.normalizeLocalState(l,o,a,u)},forceLoadLocalStorage:function(){this.loadThemeFromLocalStorage(!0)},dismissWarning:function(){this.themeWarning=void 0,this.tempImportFile=void 0},forceLoad:function(){switch(this.themeWarning.origin){case"localStorage":this.loadThemeFromLocalStorage(!0);break;case"file":this.onImport(this.tempImportFile,!0)}this.dismissWarning()},forceSnapshot:function(){switch(this.themeWarning.origin){case"localStorage":this.loadThemeFromLocalStorage(!1,!0);break;case"file":console.error("Forcing snapshot from file is not supported yet")}this.dismissWarning()},loadThemeFromLocalStorage:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],l=this.$store.getters.mergedConfig,a=l.customTheme,n=l.customThemeSource;a||n?this.loadTheme({theme:a,source:t?a:n},"localStorage",e):this.loadTheme(this.$store.state.instance.themeData,"defaults",e)},setCustomTheme:function(){this.$store.dispatch("setOption",{name:"customTheme",value:Yc({themeEngineVersion:Xs.a},this.previewTheme)}),this.$store.dispatch("setOption",{name:"customThemeSource",value:{themeEngineVersion:Xs.a,shadows:this.shadowsLocal,fonts:this.fontsLocal,opacity:this.currentOpacity,colors:this.currentColors,radii:this.currentRadii}})},updatePreviewColorsAndShadows:function(){this.previewColors=Object(Ys.e)({opacity:this.currentOpacity,colors:this.currentColors}),this.previewShadows=Object(Ys.h)({shadows:this.shadowsLocal,opacity:this.previewTheme.opacity,themeEngineVersion:this.engineVersion},this.previewColors.theme.colors,this.previewColors.mod)},importTheme:function(){this.themeImporter.importData()},exportTheme:function(){this.themeExporter.exportData()},onImport:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.tempImportFile=e,this.loadTheme(e,"file",t)},onImportFailure:function(e){this.$store.dispatch("pushGlobalNotice",{messageKey:"settings.invalid_theme_imported",level:"error"})},importValidator:function(e){var t=e._pleroma_theme_version;return t>=1||t<=2},clearAll:function(){this.loadThemeFromLocalStorage()},clearV1:function(){var e=this;Object.keys(this.$data).filter((function(e){return e.endsWith("ColorLocal")||e.endsWith("OpacityLocal")})).filter((function(e){return!Zc.includes(e)})).forEach((function(t){e.$data[t]=void 0}))},clearRoundness:function(){var e=this;Object.keys(this.$data).filter((function(e){return e.endsWith("RadiusLocal")})).forEach((function(t){e.$data[t]=void 0}))},clearOpacity:function(){var e=this;Object.keys(this.$data).filter((function(e){return e.endsWith("OpacityLocal")})).forEach((function(t){e.$data[t]=void 0}))},clearShadows:function(){this.shadowsLocal={}},clearFonts:function(){this.fontsLocal={}},normalizeLocalState:function(e){var t,l=this,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2?arguments[2]:void 0,s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];void 0!==n&&(s||n.themeEngineVersion===Xs.a)?(t=n,a=n.themeEngineVersion):t=e;var o=t.radii||t,c=t.opacity,i=t.shadows||{},r=t.fonts||{},b=t.themeEngineVersion?t.colors||t:Object(Ys.c)(t.colors||t);if(0===a&&(t.version&&(a=t.version),void 0===b.text&&void 0!==b.fg&&(a=1),void 0!==b.text&&void 0!==b.fg&&(a=2)),this.engineVersion=a,1===a&&(this.fgColorLocal=Object(Ks.i)(b.btn),this.textColorLocal=Object(Ks.i)(b.fg)),!this.keepColor){this.clearV1();var u=new Set(1!==a?Object.keys(Qs.c):[]);1!==a&&"l1"!==a||u.add("bg").add("link").add("cRed").add("cBlue").add("cGreen").add("cOrange"),u.forEach((function(e){var t=b[e],a=Object(Ks.i)(b[e]);l[e+"ColorLocal"]="#aN"===a?t:a}))}c&&!this.keepOpacity&&(this.clearOpacity(),Object.entries(c).forEach((function(e){var t=wt()(e,2),a=t[0],n=t[1];null==n||Number.isNaN(n)||(l[a+"OpacityLocal"]=n)}))),this.keepRoundness||(this.clearRoundness(),Object.entries(o).forEach((function(e){var t=wt()(e,2),a=t[0],n=t[1],s=a.endsWith("Radius")?a.split("Radius")[0]:a;l[s+"RadiusLocal"]=n}))),this.keepShadows||(this.clearShadows(),this.shadowsLocal=2===a?Object(Ys.m)(i,this.previewTheme.opacity):i,this.shadowSelected=this.shadowsAvailable[0]),this.keepFonts||(this.clearFonts(),this.fontsLocal=r)}},watch:{currentRadii:function(){try{this.previewRadii=Object(Ys.g)({radii:this.currentRadii}),this.radiiInvalid=!1}catch(e){this.radiiInvalid=!0,console.warn(e)}},shadowsLocal:{handler:function(){if(1!==Object.getOwnPropertyNames(this.previewColors).length)try{this.updatePreviewColorsAndShadows(),this.shadowsInvalid=!1}catch(e){this.shadowsInvalid=!0,console.warn(e)}},deep:!0},fontsLocal:{handler:function(){try{this.previewFonts=Object(Ys.f)({fonts:this.fontsLocal}),this.fontsInvalid=!1}catch(e){this.fontsInvalid=!0,console.warn(e)}},deep:!0},currentColors:function(){try{this.updatePreviewColorsAndShadows(),this.colorsInvalid=!1,this.shadowsInvalid=!1}catch(e){this.colorsInvalid=!0,this.shadowsInvalid=!0,console.warn(e)}},currentOpacity:function(){try{this.updatePreviewColorsAndShadows()}catch(e){console.warn(e)}},selected:function(){var e=this;this.selectedTheme=Object.entries(this.availableStyles).find((function(t){var l=wt()(t,2),a=(l[0],l[1]);return Array.isArray(a)?(console.log(a[0]===e.selected,e.selected),a[0]===e.selected):a.name===e.selected}))[1]},selectedTheme:function(){this.dismissWarning(),1===this.selectedVersion?(this.keepRoundness||this.clearRoundness(),this.keepShadows||this.clearShadows(),this.keepOpacity||this.clearOpacity(),this.keepColor||(this.clearV1(),this.bgColorLocal=this.selectedTheme[1],this.fgColorLocal=this.selectedTheme[2],this.textColorLocal=this.selectedTheme[3],this.linkColorLocal=this.selectedTheme[4],this.cRedColorLocal=this.selectedTheme[5],this.cGreenColorLocal=this.selectedTheme[6],this.cBlueColorLocal=this.selectedTheme[7],this.cOrangeColorLocal=this.selectedTheme[8])):this.selectedVersion>=2&&this.normalizeLocalState(this.selectedTheme.theme,2,this.selectedTheme.source)}}};l(706);var Xc=D()(Qc,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("Select"),i=Object(a.J)("Checkbox"),r=Object(a.J)("preview"),b=Object(a.J)("ColorInput"),u=Object(a.J)("OpacityInput"),d=Object(a.J)("ContrastRatio"),O=Object(a.J)("RangeInput"),p=Object(a.J)("ShadowControl"),j=Object(a.J)("i18n-t"),m=Object(a.J)("FontControl"),h=Object(a.J)("tab-switcher");return Object(a.D)(),Object(a.j)("div",Mn,[Object(a.k)("div",An,[Object(a.k)("div",Rn,[e.themeWarning?(Object(a.D)(),Object(a.j)("div",Wn,[Object(a.k)("div",Jn,Object(a.O)(e.themeWarningHelp),1),Object(a.k)("div",Nn,["snapshot_source_mismatch"===e.themeWarning.type?(Object(a.D)(),Object(a.j)(a.a,{key:0},[Object(a.k)("button",{class:"btn button-default",onClick:t[0]||(t[0]=(...t)=>e.forceLoad&&e.forceLoad(...t))},Object(a.O)(e.$t("settings.style.switcher.use_source")),1),Object(a.k)("button",{class:"btn button-default",onClick:t[1]||(t[1]=(...t)=>e.forceSnapshot&&e.forceSnapshot(...t))},Object(a.O)(e.$t("settings.style.switcher.use_snapshot")),1)],64)):e.themeWarning.noActionsPossible?(Object(a.D)(),Object(a.j)("button",{key:1,class:"btn button-default",onClick:t[2]||(t[2]=(...t)=>e.dismissWarning&&e.dismissWarning(...t))},Object(a.O)(e.$t("general.dismiss")),1)):(Object(a.D)(),Object(a.j)(a.a,{key:2},[Object(a.k)("button",{class:"btn button-default",onClick:t[3]||(t[3]=(...t)=>e.forceLoad&&e.forceLoad(...t))},Object(a.O)(e.$t("settings.style.switcher.load_theme")),1),Object(a.k)("button",{class:"btn button-default",onClick:t[4]||(t[4]=(...t)=>e.dismissWarning&&e.dismissWarning(...t))},Object(a.O)(e.$t("settings.style.switcher.keep_as_is")),1)],64))])])):Object(a.i)("",!0),Object(a.k)("div",qn,[Object(a.k)("div",Gn,[Object(a.l)(Object(a.O)(e.$t("settings.presets"))+" ",1),Object(a.k)("label",Hn,[Object(a.m)(c,{id:"preset-switcher",modelValue:e.selected,"onUpdate:modelValue":t[5]||(t[5]=t=>e.selected=t),class:"preset-switcher"},{default:Object(a.V)(()=>[(Object(a.D)(!0),Object(a.j)(a.a,null,Object(a.H)(e.availableStyles,e=>(Object(a.D)(),Object(a.j)("option",{key:e.name,value:e.name||e[0],style:Object(a.x)({backgroundColor:e[1]||(e.theme||e.source).colors.bg,color:e[3]||(e.theme||e.source).colors.text})},Object(a.O)(e[0]||e.name),13,zn))),128))]),_:1},8,["modelValue"])])]),Object(a.k)("div",Kn,[Object(a.k)("button",{class:"btn button-default",onClick:t[6]||(t[6]=(...t)=>e.importTheme&&e.importTheme(...t))},Object(a.O)(e.$t("settings.import_theme")),1),Object(a.k)("button",{class:"btn button-default",onClick:t[7]||(t[7]=(...t)=>e.exportTheme&&e.exportTheme(...t))},Object(a.O)(e.$t("settings.export_theme")),1)])])]),Object(a.k)("div",Yn,[Object(a.k)("span",Zn,[Object(a.m)(i,{modelValue:e.keepColor,"onUpdate:modelValue":t[8]||(t[8]=t=>e.keepColor=t)},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.style.switcher.keep_color")),1)]),_:1},8,["modelValue"])]),Object(a.k)("span",Qn,[Object(a.m)(i,{modelValue:e.keepShadows,"onUpdate:modelValue":t[9]||(t[9]=t=>e.keepShadows=t)},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.style.switcher.keep_shadows")),1)]),_:1},8,["modelValue"])]),Object(a.k)("span",Xn,[Object(a.m)(i,{modelValue:e.keepOpacity,"onUpdate:modelValue":t[10]||(t[10]=t=>e.keepOpacity=t)},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.style.switcher.keep_opacity")),1)]),_:1},8,["modelValue"])]),Object(a.k)("span",es,[Object(a.m)(i,{modelValue:e.keepRoundness,"onUpdate:modelValue":t[11]||(t[11]=t=>e.keepRoundness=t)},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.style.switcher.keep_roundness")),1)]),_:1},8,["modelValue"])]),Object(a.k)("span",ts,[Object(a.m)(i,{modelValue:e.keepFonts,"onUpdate:modelValue":t[12]||(t[12]=t=>e.keepFonts=t)},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.style.switcher.keep_fonts")),1)]),_:1},8,["modelValue"])]),Object(a.k)("p",null,Object(a.O)(e.$t("settings.style.switcher.save_load_hint")),1)])]),Object(a.m)(r,{style:Object(a.x)(e.previewRules)},null,8,["style"]),(Object(a.D)(),Object(a.h)(a.b,null,[Object(a.m)(h,{key:"style-tweak"},{default:Object(a.V)(()=>[Object(a.k)("div",{label:e.$t("settings.style.common_colors._tab_label"),class:"color-container"},[Object(a.k)("div",as,[Object(a.k)("p",null,Object(a.O)(e.$t("settings.theme_help")),1),Object(a.k)("div",ns,[Object(a.k)("button",{class:"btn button-default",onClick:t[13]||(t[13]=(...t)=>e.clearOpacity&&e.clearOpacity(...t))},Object(a.O)(e.$t("settings.style.switcher.clear_opacity")),1),Object(a.k)("button",{class:"btn button-default",onClick:t[14]||(t[14]=(...t)=>e.clearV1&&e.clearV1(...t))},Object(a.O)(e.$t("settings.style.switcher.clear_all")),1)])]),Object(a.k)("p",null,Object(a.O)(e.$t("settings.theme_help_v2_1")),1),Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.common_colors.main")),1),Object(a.k)("div",ss,[Object(a.m)(b,{modelValue:e.bgColorLocal,"onUpdate:modelValue":t[15]||(t[15]=t=>e.bgColorLocal=t),name:"bgColor",label:e.$t("settings.background")},null,8,["modelValue","label"]),Object(a.m)(u,{modelValue:e.bgOpacityLocal,"onUpdate:modelValue":t[16]||(t[16]=t=>e.bgOpacityLocal=t),name:"bgOpacity",fallback:e.previewTheme.opacity.bg},null,8,["modelValue","fallback"]),Object(a.m)(b,{modelValue:e.textColorLocal,"onUpdate:modelValue":t[17]||(t[17]=t=>e.textColorLocal=t),name:"textColor",label:e.$t("settings.text")},null,8,["modelValue","label"]),Object(a.m)(d,{contrast:e.previewContrast.bgText},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.accentColorLocal,"onUpdate:modelValue":t[18]||(t[18]=t=>e.accentColorLocal=t),name:"accentColor",fallback:e.previewTheme.colors.link,label:e.$t("settings.accent"),"show-optional-tickbox":void 0!==e.linkColorLocal},null,8,["modelValue","fallback","label","show-optional-tickbox"]),Object(a.m)(b,{modelValue:e.linkColorLocal,"onUpdate:modelValue":t[19]||(t[19]=t=>e.linkColorLocal=t),name:"linkColor",fallback:e.previewTheme.colors.accent,label:e.$t("settings.links"),"show-optional-tickbox":void 0!==e.accentColorLocal},null,8,["modelValue","fallback","label","show-optional-tickbox"]),Object(a.m)(d,{contrast:e.previewContrast.bgLink},null,8,["contrast"])]),Object(a.k)("div",os,[Object(a.m)(b,{modelValue:e.fgColorLocal,"onUpdate:modelValue":t[20]||(t[20]=t=>e.fgColorLocal=t),name:"fgColor",label:e.$t("settings.foreground")},null,8,["modelValue","label"]),Object(a.m)(b,{modelValue:e.fgTextColorLocal,"onUpdate:modelValue":t[21]||(t[21]=t=>e.fgTextColorLocal=t),name:"fgTextColor",label:e.$t("settings.text"),fallback:e.previewTheme.colors.fgText},null,8,["modelValue","label","fallback"]),Object(a.m)(b,{modelValue:e.fgLinkColorLocal,"onUpdate:modelValue":t[22]||(t[22]=t=>e.fgLinkColorLocal=t),name:"fgLinkColor",label:e.$t("settings.links"),fallback:e.previewTheme.colors.fgLink},null,8,["modelValue","label","fallback"]),Object(a.k)("p",null,Object(a.O)(e.$t("settings.style.common_colors.foreground_hint")),1)]),Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.common_colors.rgbo")),1),Object(a.k)("div",cs,[Object(a.m)(b,{modelValue:e.cRedColorLocal,"onUpdate:modelValue":t[23]||(t[23]=t=>e.cRedColorLocal=t),name:"cRedColor",label:e.$t("settings.cRed")},null,8,["modelValue","label"]),Object(a.m)(d,{contrast:e.previewContrast.bgCRed},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.cBlueColorLocal,"onUpdate:modelValue":t[24]||(t[24]=t=>e.cBlueColorLocal=t),name:"cBlueColor",label:e.$t("settings.cBlue")},null,8,["modelValue","label"]),Object(a.m)(d,{contrast:e.previewContrast.bgCBlue},null,8,["contrast"])]),Object(a.k)("div",is,[Object(a.m)(b,{modelValue:e.cGreenColorLocal,"onUpdate:modelValue":t[25]||(t[25]=t=>e.cGreenColorLocal=t),name:"cGreenColor",label:e.$t("settings.cGreen")},null,8,["modelValue","label"]),Object(a.m)(d,{contrast:e.previewContrast.bgCGreen},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.cOrangeColorLocal,"onUpdate:modelValue":t[26]||(t[26]=t=>e.cOrangeColorLocal=t),name:"cOrangeColor",label:e.$t("settings.cOrange")},null,8,["modelValue","label"]),Object(a.m)(d,{contrast:e.previewContrast.bgCOrange},null,8,["contrast"])]),Object(a.k)("p",null,Object(a.O)(e.$t("settings.theme_help_v2_2")),1)],8,ls),Object(a.k)("div",{label:e.$t("settings.style.advanced_colors._tab_label"),class:"color-container"},[Object(a.k)("div",bs,[Object(a.k)("p",null,Object(a.O)(e.$t("settings.theme_help")),1),Object(a.k)("button",{class:"btn button-default",onClick:t[27]||(t[27]=(...t)=>e.clearOpacity&&e.clearOpacity(...t))},Object(a.O)(e.$t("settings.style.switcher.clear_opacity")),1),Object(a.k)("button",{class:"btn button-default",onClick:t[28]||(t[28]=(...t)=>e.clearV1&&e.clearV1(...t))},Object(a.O)(e.$t("settings.style.switcher.clear_all")),1)]),Object(a.k)("div",us,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.post")),1),Object(a.m)(b,{modelValue:e.postLinkColorLocal,"onUpdate:modelValue":t[29]||(t[29]=t=>e.postLinkColorLocal=t),name:"postLinkColor",fallback:e.previewTheme.colors.accent,label:e.$t("settings.links")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.postLink},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.postGreentextColorLocal,"onUpdate:modelValue":t[30]||(t[30]=t=>e.postGreentextColorLocal=t),name:"postGreentextColor",fallback:e.previewTheme.colors.cGreen,label:e.$t("settings.greentext")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.postGreentext},null,8,["contrast"]),Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.alert")),1),Object(a.m)(b,{modelValue:e.alertErrorColorLocal,"onUpdate:modelValue":t[31]||(t[31]=t=>e.alertErrorColorLocal=t),name:"alertError",label:e.$t("settings.style.advanced_colors.alert_error"),fallback:e.previewTheme.colors.alertError},null,8,["modelValue","label","fallback"]),Object(a.m)(b,{modelValue:e.alertErrorTextColorLocal,"onUpdate:modelValue":t[32]||(t[32]=t=>e.alertErrorTextColorLocal=t),name:"alertErrorText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.alertErrorText},null,8,["modelValue","label","fallback"]),Object(a.m)(d,{contrast:e.previewContrast.alertErrorText,large:""},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.alertWarningColorLocal,"onUpdate:modelValue":t[33]||(t[33]=t=>e.alertWarningColorLocal=t),name:"alertWarning",label:e.$t("settings.style.advanced_colors.alert_warning"),fallback:e.previewTheme.colors.alertWarning},null,8,["modelValue","label","fallback"]),Object(a.m)(b,{modelValue:e.alertWarningTextColorLocal,"onUpdate:modelValue":t[34]||(t[34]=t=>e.alertWarningTextColorLocal=t),name:"alertWarningText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.alertWarningText},null,8,["modelValue","label","fallback"]),Object(a.m)(d,{contrast:e.previewContrast.alertWarningText,large:""},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.alertNeutralColorLocal,"onUpdate:modelValue":t[35]||(t[35]=t=>e.alertNeutralColorLocal=t),name:"alertNeutral",label:e.$t("settings.style.advanced_colors.alert_neutral"),fallback:e.previewTheme.colors.alertNeutral},null,8,["modelValue","label","fallback"]),Object(a.m)(b,{modelValue:e.alertNeutralTextColorLocal,"onUpdate:modelValue":t[36]||(t[36]=t=>e.alertNeutralTextColorLocal=t),name:"alertNeutralText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.alertNeutralText},null,8,["modelValue","label","fallback"]),Object(a.m)(d,{contrast:e.previewContrast.alertNeutralText,large:""},null,8,["contrast"]),Object(a.m)(u,{modelValue:e.alertOpacityLocal,"onUpdate:modelValue":t[37]||(t[37]=t=>e.alertOpacityLocal=t),name:"alertOpacity",fallback:e.previewTheme.opacity.alert},null,8,["modelValue","fallback"])]),Object(a.k)("div",ds,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.badge")),1),Object(a.m)(b,{modelValue:e.badgeNotificationColorLocal,"onUpdate:modelValue":t[38]||(t[38]=t=>e.badgeNotificationColorLocal=t),name:"badgeNotification",label:e.$t("settings.style.advanced_colors.badge_notification"),fallback:e.previewTheme.colors.badgeNotification},null,8,["modelValue","label","fallback"]),Object(a.m)(b,{modelValue:e.badgeNotificationTextColorLocal,"onUpdate:modelValue":t[39]||(t[39]=t=>e.badgeNotificationTextColorLocal=t),name:"badgeNotificationText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.badgeNotificationText},null,8,["modelValue","label","fallback"]),Object(a.m)(d,{contrast:e.previewContrast.badgeNotificationText,large:""},null,8,["contrast"])]),Object(a.k)("div",Os,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.panel_header")),1),Object(a.m)(b,{modelValue:e.panelColorLocal,"onUpdate:modelValue":t[40]||(t[40]=t=>e.panelColorLocal=t),name:"panelColor",fallback:e.previewTheme.colors.panel,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),Object(a.m)(u,{modelValue:e.panelOpacityLocal,"onUpdate:modelValue":t[41]||(t[41]=t=>e.panelOpacityLocal=t),name:"panelOpacity",fallback:e.previewTheme.opacity.panel,disabled:"transparent"===e.panelColorLocal},null,8,["modelValue","fallback","disabled"]),Object(a.m)(b,{modelValue:e.panelTextColorLocal,"onUpdate:modelValue":t[42]||(t[42]=t=>e.panelTextColorLocal=t),name:"panelTextColor",fallback:e.previewTheme.colors.panelText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.panelText,large:""},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.panelLinkColorLocal,"onUpdate:modelValue":t[43]||(t[43]=t=>e.panelLinkColorLocal=t),name:"panelLinkColor",fallback:e.previewTheme.colors.panelLink,label:e.$t("settings.links")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.panelLink,large:""},null,8,["contrast"])]),Object(a.k)("div",ps,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.top_bar")),1),Object(a.m)(b,{modelValue:e.topBarColorLocal,"onUpdate:modelValue":t[44]||(t[44]=t=>e.topBarColorLocal=t),name:"topBarColor",fallback:e.previewTheme.colors.topBar,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),Object(a.m)(b,{modelValue:e.topBarTextColorLocal,"onUpdate:modelValue":t[45]||(t[45]=t=>e.topBarTextColorLocal=t),name:"topBarTextColor",fallback:e.previewTheme.colors.topBarText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.topBarText},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.topBarLinkColorLocal,"onUpdate:modelValue":t[46]||(t[46]=t=>e.topBarLinkColorLocal=t),name:"topBarLinkColor",fallback:e.previewTheme.colors.topBarLink,label:e.$t("settings.links")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.topBarLink},null,8,["contrast"])]),Object(a.k)("div",js,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.inputs")),1),Object(a.m)(b,{modelValue:e.inputColorLocal,"onUpdate:modelValue":t[47]||(t[47]=t=>e.inputColorLocal=t),name:"inputColor",fallback:e.previewTheme.colors.input,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),Object(a.m)(u,{modelValue:e.inputOpacityLocal,"onUpdate:modelValue":t[48]||(t[48]=t=>e.inputOpacityLocal=t),name:"inputOpacity",fallback:e.previewTheme.opacity.input,disabled:"transparent"===e.inputColorLocal},null,8,["modelValue","fallback","disabled"]),Object(a.m)(b,{modelValue:e.inputTextColorLocal,"onUpdate:modelValue":t[49]||(t[49]=t=>e.inputTextColorLocal=t),name:"inputTextColor",fallback:e.previewTheme.colors.inputText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.inputText},null,8,["contrast"])]),Object(a.k)("div",ms,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.buttons")),1),Object(a.m)(b,{modelValue:e.btnColorLocal,"onUpdate:modelValue":t[50]||(t[50]=t=>e.btnColorLocal=t),name:"btnColor",fallback:e.previewTheme.colors.btn,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),Object(a.m)(u,{modelValue:e.btnOpacityLocal,"onUpdate:modelValue":t[51]||(t[51]=t=>e.btnOpacityLocal=t),name:"btnOpacity",fallback:e.previewTheme.opacity.btn,disabled:"transparent"===e.btnColorLocal},null,8,["modelValue","fallback","disabled"]),Object(a.m)(b,{modelValue:e.btnTextColorLocal,"onUpdate:modelValue":t[52]||(t[52]=t=>e.btnTextColorLocal=t),name:"btnTextColor",fallback:e.previewTheme.colors.btnText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.btnText},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.btnPanelTextColorLocal,"onUpdate:modelValue":t[53]||(t[53]=t=>e.btnPanelTextColorLocal=t),name:"btnPanelTextColor",fallback:e.previewTheme.colors.btnPanelText,label:e.$t("settings.style.advanced_colors.panel_header")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.btnPanelText},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.btnTopBarTextColorLocal,"onUpdate:modelValue":t[54]||(t[54]=t=>e.btnTopBarTextColorLocal=t),name:"btnTopBarTextColor",fallback:e.previewTheme.colors.btnTopBarText,label:e.$t("settings.style.advanced_colors.top_bar")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.btnTopBarText},null,8,["contrast"]),Object(a.k)("h5",null,Object(a.O)(e.$t("settings.style.advanced_colors.pressed")),1),Object(a.m)(b,{modelValue:e.btnPressedColorLocal,"onUpdate:modelValue":t[55]||(t[55]=t=>e.btnPressedColorLocal=t),name:"btnPressedColor",fallback:e.previewTheme.colors.btnPressed,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),Object(a.m)(b,{modelValue:e.btnPressedTextColorLocal,"onUpdate:modelValue":t[56]||(t[56]=t=>e.btnPressedTextColorLocal=t),name:"btnPressedTextColor",fallback:e.previewTheme.colors.btnPressedText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.btnPressedText},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.btnPressedPanelTextColorLocal,"onUpdate:modelValue":t[57]||(t[57]=t=>e.btnPressedPanelTextColorLocal=t),name:"btnPressedPanelTextColor",fallback:e.previewTheme.colors.btnPressedPanelText,label:e.$t("settings.style.advanced_colors.panel_header")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.btnPressedPanelText},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.btnPressedTopBarTextColorLocal,"onUpdate:modelValue":t[58]||(t[58]=t=>e.btnPressedTopBarTextColorLocal=t),name:"btnPressedTopBarTextColor",fallback:e.previewTheme.colors.btnPressedTopBarText,label:e.$t("settings.style.advanced_colors.top_bar")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.btnPressedTopBarText},null,8,["contrast"]),Object(a.k)("h5",null,Object(a.O)(e.$t("settings.style.advanced_colors.disabled")),1),Object(a.m)(b,{modelValue:e.btnDisabledColorLocal,"onUpdate:modelValue":t[59]||(t[59]=t=>e.btnDisabledColorLocal=t),name:"btnDisabledColor",fallback:e.previewTheme.colors.btnDisabled,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),Object(a.m)(b,{modelValue:e.btnDisabledTextColorLocal,"onUpdate:modelValue":t[60]||(t[60]=t=>e.btnDisabledTextColorLocal=t),name:"btnDisabledTextColor",fallback:e.previewTheme.colors.btnDisabledText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),Object(a.m)(b,{modelValue:e.btnDisabledPanelTextColorLocal,"onUpdate:modelValue":t[61]||(t[61]=t=>e.btnDisabledPanelTextColorLocal=t),name:"btnDisabledPanelTextColor",fallback:e.previewTheme.colors.btnDisabledPanelText,label:e.$t("settings.style.advanced_colors.panel_header")},null,8,["modelValue","fallback","label"]),Object(a.m)(b,{modelValue:e.btnDisabledTopBarTextColorLocal,"onUpdate:modelValue":t[62]||(t[62]=t=>e.btnDisabledTopBarTextColorLocal=t),name:"btnDisabledTopBarTextColor",fallback:e.previewTheme.colors.btnDisabledTopBarText,label:e.$t("settings.style.advanced_colors.top_bar")},null,8,["modelValue","fallback","label"]),Object(a.k)("h5",null,Object(a.O)(e.$t("settings.style.advanced_colors.toggled")),1),Object(a.m)(b,{modelValue:e.btnToggledColorLocal,"onUpdate:modelValue":t[63]||(t[63]=t=>e.btnToggledColorLocal=t),name:"btnToggledColor",fallback:e.previewTheme.colors.btnToggled,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),Object(a.m)(b,{modelValue:e.btnToggledTextColorLocal,"onUpdate:modelValue":t[64]||(t[64]=t=>e.btnToggledTextColorLocal=t),name:"btnToggledTextColor",fallback:e.previewTheme.colors.btnToggledText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.btnToggledText},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.btnToggledPanelTextColorLocal,"onUpdate:modelValue":t[65]||(t[65]=t=>e.btnToggledPanelTextColorLocal=t),name:"btnToggledPanelTextColor",fallback:e.previewTheme.colors.btnToggledPanelText,label:e.$t("settings.style.advanced_colors.panel_header")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.btnToggledPanelText},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.btnToggledTopBarTextColorLocal,"onUpdate:modelValue":t[66]||(t[66]=t=>e.btnToggledTopBarTextColorLocal=t),name:"btnToggledTopBarTextColor",fallback:e.previewTheme.colors.btnToggledTopBarText,label:e.$t("settings.style.advanced_colors.top_bar")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.btnToggledTopBarText},null,8,["contrast"])]),Object(a.k)("div",hs,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.tabs")),1),Object(a.m)(b,{modelValue:e.tabColorLocal,"onUpdate:modelValue":t[67]||(t[67]=t=>e.tabColorLocal=t),name:"tabColor",fallback:e.previewTheme.colors.tab,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),Object(a.m)(b,{modelValue:e.tabTextColorLocal,"onUpdate:modelValue":t[68]||(t[68]=t=>e.tabTextColorLocal=t),name:"tabTextColor",fallback:e.previewTheme.colors.tabText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.tabText},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.tabActiveTextColorLocal,"onUpdate:modelValue":t[69]||(t[69]=t=>e.tabActiveTextColorLocal=t),name:"tabActiveTextColor",fallback:e.previewTheme.colors.tabActiveText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.tabActiveText},null,8,["contrast"])]),Object(a.k)("div",fs,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.borders")),1),Object(a.m)(b,{modelValue:e.borderColorLocal,"onUpdate:modelValue":t[70]||(t[70]=t=>e.borderColorLocal=t),name:"borderColor",fallback:e.previewTheme.colors.border,label:e.$t("settings.style.common.color")},null,8,["modelValue","fallback","label"]),Object(a.m)(u,{modelValue:e.borderOpacityLocal,"onUpdate:modelValue":t[71]||(t[71]=t=>e.borderOpacityLocal=t),name:"borderOpacity",fallback:e.previewTheme.opacity.border,disabled:"transparent"===e.borderColorLocal},null,8,["modelValue","fallback","disabled"])]),Object(a.k)("div",gs,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.faint_text")),1),Object(a.m)(b,{modelValue:e.faintColorLocal,"onUpdate:modelValue":t[72]||(t[72]=t=>e.faintColorLocal=t),name:"faintColor",fallback:e.previewTheme.colors.faint,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),Object(a.m)(b,{modelValue:e.faintLinkColorLocal,"onUpdate:modelValue":t[73]||(t[73]=t=>e.faintLinkColorLocal=t),name:"faintLinkColor",fallback:e.previewTheme.colors.faintLink,label:e.$t("settings.links")},null,8,["modelValue","fallback","label"]),Object(a.m)(b,{modelValue:e.panelFaintColorLocal,"onUpdate:modelValue":t[74]||(t[74]=t=>e.panelFaintColorLocal=t),name:"panelFaintColor",fallback:e.previewTheme.colors.panelFaint,label:e.$t("settings.style.advanced_colors.panel_header")},null,8,["modelValue","fallback","label"]),Object(a.m)(u,{modelValue:e.faintOpacityLocal,"onUpdate:modelValue":t[75]||(t[75]=t=>e.faintOpacityLocal=t),name:"faintOpacity",fallback:e.previewTheme.opacity.faint},null,8,["modelValue","fallback"])]),Object(a.k)("div",ks,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.underlay")),1),Object(a.m)(b,{modelValue:e.underlayColorLocal,"onUpdate:modelValue":t[76]||(t[76]=t=>e.underlayColorLocal=t),name:"underlay",label:e.$t("settings.style.advanced_colors.underlay"),fallback:e.previewTheme.colors.underlay},null,8,["modelValue","label","fallback"]),Object(a.m)(u,{modelValue:e.underlayOpacityLocal,"onUpdate:modelValue":t[77]||(t[77]=t=>e.underlayOpacityLocal=t),name:"underlayOpacity",fallback:e.previewTheme.opacity.underlay,disabled:"transparent"===e.underlayOpacityLocal},null,8,["modelValue","fallback","disabled"])]),Object(a.k)("div",vs,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.wallpaper")),1),Object(a.m)(b,{modelValue:e.wallpaperColorLocal,"onUpdate:modelValue":t[78]||(t[78]=t=>e.wallpaperColorLocal=t),name:"wallpaper",label:e.$t("settings.style.advanced_colors.wallpaper"),fallback:e.previewTheme.colors.wallpaper},null,8,["modelValue","label","fallback"])]),Object(a.k)("div",ys,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.poll")),1),Object(a.m)(b,{modelValue:e.pollColorLocal,"onUpdate:modelValue":t[79]||(t[79]=t=>e.pollColorLocal=t),name:"poll",label:e.$t("settings.background"),fallback:e.previewTheme.colors.poll},null,8,["modelValue","label","fallback"]),Object(a.m)(b,{modelValue:e.pollTextColorLocal,"onUpdate:modelValue":t[80]||(t[80]=t=>e.pollTextColorLocal=t),name:"pollText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.pollText},null,8,["modelValue","label","fallback"])]),Object(a.k)("div",ws,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.icons")),1),Object(a.m)(b,{modelValue:e.iconColorLocal,"onUpdate:modelValue":t[81]||(t[81]=t=>e.iconColorLocal=t),name:"icon",label:e.$t("settings.style.advanced_colors.icons"),fallback:e.previewTheme.colors.icon},null,8,["modelValue","label","fallback"])]),Object(a.k)("div",_s,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.highlight")),1),Object(a.m)(b,{modelValue:e.highlightColorLocal,"onUpdate:modelValue":t[82]||(t[82]=t=>e.highlightColorLocal=t),name:"highlight",label:e.$t("settings.background"),fallback:e.previewTheme.colors.highlight},null,8,["modelValue","label","fallback"]),Object(a.m)(b,{modelValue:e.highlightTextColorLocal,"onUpdate:modelValue":t[83]||(t[83]=t=>e.highlightTextColorLocal=t),name:"highlightText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.highlightText},null,8,["modelValue","label","fallback"]),Object(a.m)(d,{contrast:e.previewContrast.highlightText},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.highlightLinkColorLocal,"onUpdate:modelValue":t[84]||(t[84]=t=>e.highlightLinkColorLocal=t),name:"highlightLink",label:e.$t("settings.links"),fallback:e.previewTheme.colors.highlightLink},null,8,["modelValue","label","fallback"]),Object(a.m)(d,{contrast:e.previewContrast.highlightLink},null,8,["contrast"])]),Object(a.k)("div",Vs,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.popover")),1),Object(a.m)(b,{modelValue:e.popoverColorLocal,"onUpdate:modelValue":t[85]||(t[85]=t=>e.popoverColorLocal=t),name:"popover",label:e.$t("settings.background"),fallback:e.previewTheme.colors.popover},null,8,["modelValue","label","fallback"]),Object(a.m)(u,{modelValue:e.popoverOpacityLocal,"onUpdate:modelValue":t[86]||(t[86]=t=>e.popoverOpacityLocal=t),name:"popoverOpacity",fallback:e.previewTheme.opacity.popover,disabled:"transparent"===e.popoverOpacityLocal},null,8,["modelValue","fallback","disabled"]),Object(a.m)(b,{modelValue:e.popoverTextColorLocal,"onUpdate:modelValue":t[87]||(t[87]=t=>e.popoverTextColorLocal=t),name:"popoverText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.popoverText},null,8,["modelValue","label","fallback"]),Object(a.m)(d,{contrast:e.previewContrast.popoverText},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.popoverLinkColorLocal,"onUpdate:modelValue":t[88]||(t[88]=t=>e.popoverLinkColorLocal=t),name:"popoverLink",label:e.$t("settings.links"),fallback:e.previewTheme.colors.popoverLink},null,8,["modelValue","label","fallback"]),Object(a.m)(d,{contrast:e.previewContrast.popoverLink},null,8,["contrast"])]),Object(a.k)("div",$s,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.selectedPost")),1),Object(a.m)(b,{modelValue:e.selectedPostColorLocal,"onUpdate:modelValue":t[89]||(t[89]=t=>e.selectedPostColorLocal=t),name:"selectedPost",label:e.$t("settings.background"),fallback:e.previewTheme.colors.selectedPost},null,8,["modelValue","label","fallback"]),Object(a.m)(b,{modelValue:e.selectedPostTextColorLocal,"onUpdate:modelValue":t[90]||(t[90]=t=>e.selectedPostTextColorLocal=t),name:"selectedPostText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.selectedPostText},null,8,["modelValue","label","fallback"]),Object(a.m)(d,{contrast:e.previewContrast.selectedPostText},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.selectedPostLinkColorLocal,"onUpdate:modelValue":t[91]||(t[91]=t=>e.selectedPostLinkColorLocal=t),name:"selectedPostLink",label:e.$t("settings.links"),fallback:e.previewTheme.colors.selectedPostLink},null,8,["modelValue","label","fallback"]),Object(a.m)(d,{contrast:e.previewContrast.selectedPostLink},null,8,["contrast"])]),Object(a.k)("div",Cs,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.selectedMenu")),1),Object(a.m)(b,{modelValue:e.selectedMenuColorLocal,"onUpdate:modelValue":t[92]||(t[92]=t=>e.selectedMenuColorLocal=t),name:"selectedMenu",label:e.$t("settings.background"),fallback:e.previewTheme.colors.selectedMenu},null,8,["modelValue","label","fallback"]),Object(a.m)(b,{modelValue:e.selectedMenuTextColorLocal,"onUpdate:modelValue":t[93]||(t[93]=t=>e.selectedMenuTextColorLocal=t),name:"selectedMenuText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.selectedMenuText},null,8,["modelValue","label","fallback"]),Object(a.m)(d,{contrast:e.previewContrast.selectedMenuText},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.selectedMenuLinkColorLocal,"onUpdate:modelValue":t[94]||(t[94]=t=>e.selectedMenuLinkColorLocal=t),name:"selectedMenuLink",label:e.$t("settings.links"),fallback:e.previewTheme.colors.selectedMenuLink},null,8,["modelValue","label","fallback"]),Object(a.m)(d,{contrast:e.previewContrast.selectedMenuLink},null,8,["contrast"])]),Object(a.k)("div",Ts,[Object(a.k)("h4",null,Object(a.O)(e.$t("chats.chats")),1),Object(a.m)(b,{modelValue:e.chatBgColorLocal,"onUpdate:modelValue":t[95]||(t[95]=t=>e.chatBgColorLocal=t),name:"chatBgColor",fallback:e.previewTheme.colors.bg,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),Object(a.k)("h5",null,Object(a.O)(e.$t("settings.style.advanced_colors.chat.incoming")),1),Object(a.m)(b,{modelValue:e.chatMessageIncomingBgColorLocal,"onUpdate:modelValue":t[96]||(t[96]=t=>e.chatMessageIncomingBgColorLocal=t),name:"chatMessageIncomingBgColor",fallback:e.previewTheme.colors.bg,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),Object(a.m)(b,{modelValue:e.chatMessageIncomingTextColorLocal,"onUpdate:modelValue":t[97]||(t[97]=t=>e.chatMessageIncomingTextColorLocal=t),name:"chatMessageIncomingTextColor",fallback:e.previewTheme.colors.text,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),Object(a.m)(b,{modelValue:e.chatMessageIncomingLinkColorLocal,"onUpdate:modelValue":t[98]||(t[98]=t=>e.chatMessageIncomingLinkColorLocal=t),name:"chatMessageIncomingLinkColor",fallback:e.previewTheme.colors.link,label:e.$t("settings.links")},null,8,["modelValue","fallback","label"]),Object(a.m)(b,{modelValue:e.chatMessageIncomingBorderColorLocal,"onUpdate:modelValue":t[99]||(t[99]=t=>e.chatMessageIncomingBorderColorLocal=t),name:"chatMessageIncomingBorderLinkColor",fallback:e.previewTheme.colors.fg,label:e.$t("settings.style.advanced_colors.chat.border")},null,8,["modelValue","fallback","label"]),Object(a.k)("h5",null,Object(a.O)(e.$t("settings.style.advanced_colors.chat.outgoing")),1),Object(a.m)(b,{modelValue:e.chatMessageOutgoingBgColorLocal,"onUpdate:modelValue":t[100]||(t[100]=t=>e.chatMessageOutgoingBgColorLocal=t),name:"chatMessageOutgoingBgColor",fallback:e.previewTheme.colors.bg,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),Object(a.m)(b,{modelValue:e.chatMessageOutgoingTextColorLocal,"onUpdate:modelValue":t[101]||(t[101]=t=>e.chatMessageOutgoingTextColorLocal=t),name:"chatMessageOutgoingTextColor",fallback:e.previewTheme.colors.text,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),Object(a.m)(b,{modelValue:e.chatMessageOutgoingLinkColorLocal,"onUpdate:modelValue":t[102]||(t[102]=t=>e.chatMessageOutgoingLinkColorLocal=t),name:"chatMessageOutgoingLinkColor",fallback:e.previewTheme.colors.link,label:e.$t("settings.links")},null,8,["modelValue","fallback","label"]),Object(a.m)(b,{modelValue:e.chatMessageOutgoingBorderColorLocal,"onUpdate:modelValue":t[103]||(t[103]=t=>e.chatMessageOutgoingBorderColorLocal=t),name:"chatMessageOutgoingBorderLinkColor",fallback:e.previewTheme.colors.bg,label:e.$t("settings.style.advanced_colors.chat.border")},null,8,["modelValue","fallback","label"])])],8,rs),Object(a.k)("div",{label:e.$t("settings.style.radii._tab_label"),class:"radius-container"},[Object(a.k)("div",Ls,[Object(a.k)("p",null,Object(a.O)(e.$t("settings.radii_help")),1),Object(a.k)("button",{class:"btn button-default",onClick:t[104]||(t[104]=(...t)=>e.clearRoundness&&e.clearRoundness(...t))},Object(a.O)(e.$t("settings.style.switcher.clear_all")),1)]),Object(a.m)(O,{modelValue:e.btnRadiusLocal,"onUpdate:modelValue":t[105]||(t[105]=t=>e.btnRadiusLocal=t),name:"btnRadius",label:e.$t("settings.btnRadius"),fallback:e.previewTheme.radii.btn,max:"16","hard-min":"0"},null,8,["modelValue","label","fallback"]),Object(a.m)(O,{modelValue:e.inputRadiusLocal,"onUpdate:modelValue":t[106]||(t[106]=t=>e.inputRadiusLocal=t),name:"inputRadius",label:e.$t("settings.inputRadius"),fallback:e.previewTheme.radii.input,max:"9","hard-min":"0"},null,8,["modelValue","label","fallback"]),Object(a.m)(O,{modelValue:e.checkboxRadiusLocal,"onUpdate:modelValue":t[107]||(t[107]=t=>e.checkboxRadiusLocal=t),name:"checkboxRadius",label:e.$t("settings.checkboxRadius"),fallback:e.previewTheme.radii.checkbox,max:"16","hard-min":"0"},null,8,["modelValue","label","fallback"]),Object(a.m)(O,{modelValue:e.panelRadiusLocal,"onUpdate:modelValue":t[108]||(t[108]=t=>e.panelRadiusLocal=t),name:"panelRadius",label:e.$t("settings.panelRadius"),fallback:e.previewTheme.radii.panel,max:"50","hard-min":"0"},null,8,["modelValue","label","fallback"]),Object(a.m)(O,{modelValue:e.avatarRadiusLocal,"onUpdate:modelValue":t[109]||(t[109]=t=>e.avatarRadiusLocal=t),name:"avatarRadius",label:e.$t("settings.avatarRadius"),fallback:e.previewTheme.radii.avatar,max:"28","hard-min":"0"},null,8,["modelValue","label","fallback"]),Object(a.m)(O,{modelValue:e.avatarAltRadiusLocal,"onUpdate:modelValue":t[110]||(t[110]=t=>e.avatarAltRadiusLocal=t),name:"avatarAltRadius",label:e.$t("settings.avatarAltRadius"),fallback:e.previewTheme.radii.avatarAlt,max:"28","hard-min":"0"},null,8,["modelValue","label","fallback"]),Object(a.m)(O,{modelValue:e.attachmentRadiusLocal,"onUpdate:modelValue":t[111]||(t[111]=t=>e.attachmentRadiusLocal=t),name:"attachmentRadius",label:e.$t("settings.attachmentRadius"),fallback:e.previewTheme.radii.attachment,max:"50","hard-min":"0"},null,8,["modelValue","label","fallback"]),Object(a.m)(O,{modelValue:e.tooltipRadiusLocal,"onUpdate:modelValue":t[112]||(t[112]=t=>e.tooltipRadiusLocal=t),name:"tooltipRadius",label:e.$t("settings.tooltipRadius"),fallback:e.previewTheme.radii.tooltip,max:"50","hard-min":"0"},null,8,["modelValue","label","fallback"]),Object(a.m)(O,{modelValue:e.chatMessageRadiusLocal,"onUpdate:modelValue":t[113]||(t[113]=t=>e.chatMessageRadiusLocal=t),name:"chatMessageRadius",label:e.$t("settings.chatMessageRadius"),fallback:e.previewTheme.radii.chatMessage||2,max:"50","hard-min":"0"},null,8,["modelValue","label","fallback"])],8,xs),Object(a.k)("div",{label:e.$t("settings.style.shadows._tab_label"),class:"shadow-container"},[Object(a.k)("div",Ds,[Object(a.k)("div",Ps,[Object(a.l)(Object(a.O)(e.$t("settings.style.shadows.component"))+" "+Object(a.O)(" ")+" ",1),Object(a.m)(c,{id:"shadow-switcher",modelValue:e.shadowSelected,"onUpdate:modelValue":t[114]||(t[114]=t=>e.shadowSelected=t),class:"shadow-switcher"},{default:Object(a.V)(()=>[(Object(a.D)(!0),Object(a.j)(a.a,null,Object(a.H)(e.shadowsAvailable,t=>(Object(a.D)(),Object(a.j)("option",{key:t,value:t},Object(a.O)(e.$t("settings.style.shadows.components."+t)),9,Us))),128))]),_:1},8,["modelValue"])]),Object(a.k)("div",Is,[Object(a.k)("label",Bs,Object(a.O)(e.$t("settings.style.shadows.override")),1),Fs,Object(a.W)(Object(a.k)("input",{id:"override","onUpdate:modelValue":t[115]||(t[115]=t=>e.currentShadowOverriden=t),name:"override",class:"input-override",type:"checkbox"},null,512),[[a.R,e.currentShadowOverriden]]),Es]),Object(a.k)("button",{class:"btn button-default",onClick:t[116]||(t[116]=(...t)=>e.clearShadows&&e.clearShadows(...t))},Object(a.O)(e.$t("settings.style.switcher.clear_all")),1)]),Object(a.m)(p,{modelValue:e.currentShadow,"onUpdate:modelValue":t[117]||(t[117]=t=>e.currentShadow=t),ready:!!e.currentShadowFallback,fallback:e.currentShadowFallback},null,8,["modelValue","ready","fallback"]),"avatar"===e.shadowSelected||"avatarStatus"===e.shadowSelected?(Object(a.D)(),Object(a.j)("div",Ms,[Object(a.m)(j,{scope:"global",keypath:"settings.style.shadows.filter_hint.always_drop_shadow",tag:"p"},{default:Object(a.V)(()=>[As]),_:1}),Object(a.k)("p",null,Object(a.O)(e.$t("settings.style.shadows.filter_hint.avatar_inset")),1),Object(a.m)(j,{scope:"global",keypath:"settings.style.shadows.filter_hint.drop_shadow_syntax",tag:"p"},{default:Object(a.V)(()=>[Rs,Ws,Js]),_:1}),Object(a.m)(j,{scope:"global",keypath:"settings.style.shadows.filter_hint.inset_classic",tag:"p"},{default:Object(a.V)(()=>[Ns]),_:1}),Object(a.k)("p",null,Object(a.O)(e.$t("settings.style.shadows.filter_hint.spread_zero")),1)])):Object(a.i)("",!0)],8,Ss),Object(a.k)("div",{label:e.$t("settings.style.fonts._tab_label"),class:"fonts-container"},[Object(a.k)("div",Gs,[Object(a.k)("p",null,Object(a.O)(e.$t("settings.style.fonts.help")),1),Object(a.k)("button",{class:"btn button-default",onClick:t[118]||(t[118]=(...t)=>e.clearFonts&&e.clearFonts(...t))},Object(a.O)(e.$t("settings.style.switcher.clear_all")),1)]),Object(a.m)(m,{modelValue:e.fontsLocal.interface,"onUpdate:modelValue":t[119]||(t[119]=t=>e.fontsLocal.interface=t),name:"ui",label:e.$t("settings.style.fonts.components.interface"),fallback:e.previewTheme.fonts.interface,"no-inherit":"1"},null,8,["modelValue","label","fallback"]),Object(a.m)(m,{modelValue:e.fontsLocal.input,"onUpdate:modelValue":t[120]||(t[120]=t=>e.fontsLocal.input=t),name:"input",label:e.$t("settings.style.fonts.components.input"),fallback:e.previewTheme.fonts.input},null,8,["modelValue","label","fallback"]),Object(a.m)(m,{modelValue:e.fontsLocal.post,"onUpdate:modelValue":t[121]||(t[121]=t=>e.fontsLocal.post=t),name:"post",label:e.$t("settings.style.fonts.components.post"),fallback:e.previewTheme.fonts.post},null,8,["modelValue","label","fallback"]),Object(a.m)(m,{modelValue:e.fontsLocal.postCode,"onUpdate:modelValue":t[122]||(t[122]=t=>e.fontsLocal.postCode=t),name:"postCode",label:e.$t("settings.style.fonts.components.postCode"),fallback:e.previewTheme.fonts.postCode},null,8,["modelValue","label","fallback"])],8,qs)]),_:1})],1024)),e.isActive?(Object(a.D)(),Object(a.h)(a.c,{key:0,to:"#unscrolled-content"},[Object(a.k)("div",Hs,[Object(a.k)("button",{class:"btn button-default submit",disabled:!e.themeValid,onClick:t[123]||(t[123]=(...t)=>e.setCustomTheme&&e.setCustomTheme(...t))},Object(a.O)(e.$t("general.apply")),9,zs),Object(a.k)("button",{class:"btn button-default",onClick:t[124]||(t[124]=(...t)=>e.clearAll&&e.clearAll(...t))},Object(a.O)(e.$t("settings.style.switcher.reset")),1)])])):Object(a.i)("",!0)])}]]);T.c.add(x.yb,x.ub,x.G,x.R,x.i,x.u,x.C,x.L);var ei={components:{TabSwitcher:O.a,DataImportExportTab:W,MutesAndBlocksTab:Ge,NotificationsTab:St,FilteringTab:ll,SecurityTab:oa,ProfileTab:sn,GeneralTab:xn,VersionTab:En,ThemeTab:Xc},computed:{isLoggedIn:function(){return!!this.$store.state.users.currentUser},open:function(){return"hidden"!==this.$store.state.interface.settingsModalState},bodyLock:function(){return"visible"===this.$store.state.interface.settingsModalState}},methods:{onOpen:function(){var e=this.$store.state.interface.settingsModalTargetTab;if(e){var t=this.$refs.tabSwitcher.$slots.default().findIndex((function(t){return t.props&&t.props["data-tab-name"]===e}));t>=0&&this.$refs.tabSwitcher.setTab(t)}this.$store.dispatch("clearSettingsModalTargetTab")}},mounted:function(){this.onOpen()},watch:{open:function(e){e&&this.onOpen()}}};l(707);const ti=D()(ei,[["render",function(e,t,l,O,p,j){const m=Object(a.J)("GeneralTab"),h=Object(a.J)("ProfileTab"),f=Object(a.J)("SecurityTab"),g=Object(a.J)("FilteringTab"),k=Object(a.J)("ThemeTab"),v=Object(a.J)("NotificationsTab"),y=Object(a.J)("DataImportExportTab"),w=Object(a.J)("MutesAndBlocksTab"),_=Object(a.J)("VersionTab"),V=Object(a.J)("tab-switcher");return Object(a.D)(),Object(a.h)(V,{ref:"tabSwitcher",class:"settings_tab-switcher","side-tab-bar":!0,"scrollable-tabs":!0,"body-scroll-lock":e.bodyLock},{default:Object(a.V)(()=>[Object(a.k)("div",{label:e.$t("settings.general"),icon:"wrench","data-tab-name":"general"},[Object(a.m)(m)],8,n),e.isLoggedIn?(Object(a.D)(),Object(a.j)("div",{key:0,label:e.$t("settings.profile_tab"),icon:"user","data-tab-name":"profile"},[Object(a.m)(h)],8,s)):Object(a.i)("",!0),e.isLoggedIn?(Object(a.D)(),Object(a.j)("div",{key:1,label:e.$t("settings.security_tab"),icon:"lock","data-tab-name":"security"},[Object(a.m)(f)],8,o)):Object(a.i)("",!0),Object(a.k)("div",{label:e.$t("settings.filtering"),icon:"filter","data-tab-name":"filtering"},[Object(a.m)(g)],8,c),Object(a.k)("div",{label:e.$t("settings.theme"),icon:"paint-brush","data-tab-name":"theme"},[Object(a.m)(k)],8,i),e.isLoggedIn?(Object(a.D)(),Object(a.j)("div",{key:2,label:e.$t("settings.notifications"),icon:"bell","data-tab-name":"notifications"},[Object(a.m)(v)],8,r)):Object(a.i)("",!0),e.isLoggedIn?(Object(a.D)(),Object(a.j)("div",{key:3,label:e.$t("settings.data_import_export_tab"),icon:"download","data-tab-name":"dataImportExport"},[Object(a.m)(y)],8,b)):Object(a.i)("",!0),e.isLoggedIn?(Object(a.D)(),Object(a.j)("div",{key:4,label:e.$t("settings.mutes_and_blocks"),fullHeight:!0,icon:"eye-slash","data-tab-name":"mutesAndBlocks"},[Object(a.m)(w)],8,u)):Object(a.i)("",!0),Object(a.k)("div",{label:e.$t("settings.version.title"),icon:"info","data-tab-name":"version"},[Object(a.m)(_)],8,d)]),_:1},8,["body-scroll-lock"])}]]);t.default=ti}}]);
-//# sourceMappingURL=2.eb2c361cdcbd8c4f7638.js.map
\ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{628:function(e,t,l){},629:function(e,t,l){},630:function(e,t,l){},631:function(e,t,l){},632:function(e,t,l){},633:function(e,t,l){},634:function(e,t,l){},635:function(e,t,l){},636:function(e,t,l){},637:function(e,t,l){},638:function(e,t,l){},639:function(e,t,l){},644:function(e,t,l){},645:function(e,t,l){},646:function(e,t,l){},647:function(e,t,l){},648:function(e,t,l){},649:function(e,t,l){},650:function(e,t,l){},651:function(e,t,l){},652:function(e,t,l){},653:function(e,t,l){},654:function(e,t,l){},656:function(e,t,l){"use strict";l(628)},657:function(e,t,l){"use strict";l(629)},658:function(e,t,l){"use strict";l(630)},659:function(e,t,l){"use strict";l(631)},660:function(e,t,l){"use strict";l(632)},661:function(e,t,l){"use strict";l(633)},662:function(e,t,l){"use strict";l(634)},663:function(e,t,l){},664:function(e,t,l){"use strict";l(635)},665:function(e,t,l){"use strict";l(636)},666:function(e,t,l){"use strict";l(637)},670:function(e,t,l){"use strict";l(638)},671:function(e,t,l){"use strict";l(639)},695:function(e,t,l){"use strict";l(644)},698:function(e,t,l){"use strict";l(645)},699:function(e,t,l){"use strict";l(646)},700:function(e,t,l){"use strict";l(647)},701:function(e,t,l){"use strict";l(648)},702:function(e,t,l){"use strict";l(649)},703:function(e,t,l){"use strict";l(650)},704:function(e,t,l){"use strict";l(651)},705:function(e,t,l){"use strict";l(652)},706:function(e,t,l){"use strict";l(653)},707:function(e,t,l){"use strict";l(654)},708:function(e,t,l){"use strict";l.r(t);var a=l(0);const n=["label"],s=["label"],o=["label"],c=["label"],i=["label"],r=["label"],b=["label"],u=["label"],d=["label"];var O=l(71);const p=["label"],j={class:"setting-item"},m={class:"setting-item"},h={class:"setting-item"},f={class:"setting-item"},g={class:"setting-item"},k={class:"setting-item"};var v=l(5),y=l.n(v);const w={class:"importer"},_={key:2},V=Object(a.l)(" "+Object(a.O)(" ")+" "),$={key:3},C=Object(a.l)(" "+Object(a.O)(" ")+" ");var T=l(6),x=l(3);T.c.add(x.r,x.rb);var L={props:{submitHandler:{type:Function,required:!0},submitButtonLabel:{type:String},successMessage:{type:String},errorMessage:{type:String}},data:function(){return{file:null,error:!1,success:!1,submitting:!1}},methods:{change:function(){this.file=this.$refs.input.files[0]},submit:function(){var e=this;this.dismiss(),this.submitting=!0,this.submitHandler(this.file).then((function(){e.success=!0})).catch((function(){e.error=!0})).finally((function(){e.submitting=!1}))},dismiss:function(){this.success=!1,this.error=!1}}},S=(l(656),l(4)),D=l.n(S);var P=D()(L,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("FAIcon");return Object(a.D)(),Object(a.j)("div",w,[Object(a.k)("form",null,[Object(a.k)("input",{ref:"input",type:"file",onChange:t[0]||(t[0]=(...t)=>e.change&&e.change(...t))},null,544)]),e.submitting?(Object(a.D)(),Object(a.h)(c,{key:0,class:"importer-uploading",spin:"",icon:"circle-notch"})):(Object(a.D)(),Object(a.j)("button",{key:1,class:"btn button-default",onClick:t[1]||(t[1]=(...t)=>e.submit&&e.submit(...t))},Object(a.O)(e.submitButtonLabel||e.$t("importer.submit")),1)),e.success?(Object(a.D)(),Object(a.j)("div",_,[Object(a.k)("button",{class:"button-unstyled",onClick:t[2]||(t[2]=(...t)=>e.dismiss&&e.dismiss(...t))},[Object(a.m)(c,{icon:"times"})]),V,Object(a.k)("span",null,Object(a.O)(e.successMessage||e.$t("importer.success")),1)])):e.error?(Object(a.D)(),Object(a.j)("div",$,[Object(a.k)("button",{class:"button-unstyled",onClick:t[3]||(t[3]=(...t)=>e.dismiss&&e.dismiss(...t))},[Object(a.m)(c,{icon:"times"})]),C,Object(a.k)("span",null,Object(a.O)(e.errorMessage||e.$t("importer.error")),1)])):Object(a.i)("",!0)])}]]);const U={class:"exporter"},I={key:0};T.c.add(x.r);var B={props:{getContent:{type:Function,required:!0},filename:{type:String,default:"export.csv"},exportButtonLabel:{type:String},processingMessage:{type:String}},data:function(){return{processing:!1}},methods:{process:function(){var e=this;this.processing=!0,this.getContent().then((function(t){var l=document.createElement("a");l.setAttribute("href","data:text/plain;charset=utf-8,"+encodeURIComponent(t)),l.setAttribute("download",e.filename),l.style.display="none",document.body.appendChild(l),l.click(),document.body.removeChild(l),setTimeout((function(){e.processing=!1}),2e3)}))}}};l(657);var F=D()(B,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("FAIcon");return Object(a.D)(),Object(a.j)("div",U,[e.processing?(Object(a.D)(),Object(a.j)("div",I,[Object(a.m)(c,{icon:"circle-notch",size:"lg",spin:""}),Object(a.k)("span",null,Object(a.O)(e.processingMessage||e.$t("exporter.processing")),1)])):(Object(a.D)(),Object(a.j)("button",{key:1,class:"btn button-default",onClick:t[0]||(t[0]=(...t)=>e.process&&e.process(...t))},Object(a.O)(e.exportButtonLabel||e.$t("exporter.export")),1))])}]]),E=l(51),A=l(8);function M(e,t){var l=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),l.push.apply(l,a)}return l}var R={data:function(){return{activeTab:"profile",newDomainToMute:""}},created:function(){this.$store.dispatch("fetchTokens")},components:{Importer:P,Exporter:F,Checkbox:E.a},computed:function(e){for(var t=1;t<arguments.length;t++){var l=null!=arguments[t]?arguments[t]:{};t%2?M(Object(l),!0).forEach((function(t){y()(e,t,l[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(l)):M(Object(l)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(l,t))}))}return e}({},Object(A.e)({backendInteractor:function(e){return e.api.backendInteractor},user:function(e){return e.users.currentUser}})),methods:{getFollowsContent:function(){return this.backendInteractor.exportFriends({id:this.user.id}).then(this.generateExportableUsersContent)},getBlocksContent:function(){return this.backendInteractor.fetchBlocks().then(this.generateExportableUsersContent)},getMutesContent:function(){return this.backendInteractor.fetchMutes().then(this.generateExportableUsersContent)},importFollows:function(e){return this.backendInteractor.importFollows({file:e}).then((function(e){if(!e)throw new Error("failed")}))},importBlocks:function(e){return this.backendInteractor.importBlocks({file:e}).then((function(e){if(!e)throw new Error("failed")}))},importMutes:function(e){return this.backendInteractor.importMutes({file:e}).then((function(e){if(!e)throw new Error("failed")}))},generateExportableUsersContent:function(e){return e.map((function(e){return e&&e.is_local?e.screen_name+"@"+location.hostname:e.screen_name})).join("\n")}}};var W=D()(R,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("Importer"),i=Object(a.J)("Exporter");return Object(a.D)(),Object(a.j)("div",{label:e.$t("settings.data_import_export_tab")},[Object(a.k)("div",j,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.follow_import")),1),Object(a.k)("p",null,Object(a.O)(e.$t("settings.import_followers_from_a_csv_file")),1),Object(a.m)(c,{"submit-handler":e.importFollows,"success-message":e.$t("settings.follows_imported"),"error-message":e.$t("settings.follow_import_error")},null,8,["submit-handler","success-message","error-message"])]),Object(a.k)("div",m,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.follow_export")),1),Object(a.m)(i,{"get-content":e.getFollowsContent,filename:"friends.csv","export-button-label":e.$t("settings.follow_export_button")},null,8,["get-content","export-button-label"])]),Object(a.k)("div",h,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.block_import")),1),Object(a.k)("p",null,Object(a.O)(e.$t("settings.import_blocks_from_a_csv_file")),1),Object(a.m)(c,{"submit-handler":e.importBlocks,"success-message":e.$t("settings.blocks_imported"),"error-message":e.$t("settings.block_import_error")},null,8,["submit-handler","success-message","error-message"])]),Object(a.k)("div",f,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.block_export")),1),Object(a.m)(i,{"get-content":e.getBlocksContent,filename:"blocks.csv","export-button-label":e.$t("settings.block_export_button")},null,8,["get-content","export-button-label"])]),Object(a.k)("div",g,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.mute_import")),1),Object(a.k)("p",null,Object(a.O)(e.$t("settings.import_mutes_from_a_csv_file")),1),Object(a.m)(c,{"submit-handler":e.importMutes,"success-message":e.$t("settings.mutes_imported"),"error-message":e.$t("settings.mute_import_error")},null,8,["submit-handler","success-message","error-message"])]),Object(a.k)("div",k,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.mute_export")),1),Object(a.m)(i,{"get-content":e.getMutesContent,filename:"mutes.csv","export-button-label":e.$t("settings.mute_export_button")},null,8,["get-content","export-button-label"])])],8,p)}]]);const J=["label"],N={class:"usersearch-wrapper"},q={class:"bulk-actions"},G=["label"],H={label:"Users"},z={class:"usersearch-wrapper"},K={class:"bulk-actions"},Y=["label"],Z={class:"domain-mute-form"},Q={class:"bulk-actions"};var X=l(16),ee=l.n(X),te=l(21),le=l.n(te),ae=l(224),ne=l.n(ae);const se={class:"autosuggest"},oe=["placeholder"],ce={key:0,class:"autosuggest-results"};var ie={props:{query:{type:Function,required:!0},filter:{type:Function},placeholder:{type:String,default:"Search..."}},data:function(){return{term:"",timeout:null,results:[],resultsVisible:!1}},computed:{filtered:function(){return this.filter?this.filter(this.results):this.results}},watch:{term:function(e){this.fetchResults(e)}},methods:{fetchResults:function(e){var t=this;clearTimeout(this.timeout),this.timeout=setTimeout((function(){t.results=[],e&&t.query(e).then((function(e){t.results=e}))}),500)},onInputClick:function(){this.resultsVisible=!0},onClickOutside:function(){this.resultsVisible=!1}}};l(658);var re=D()(ie,[["render",function(e,t,l,n,s,o){const c=Object(a.K)("click-outside");return Object(a.W)((Object(a.D)(),Object(a.j)("div",se,[Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[0]||(t[0]=t=>e.term=t),placeholder:e.placeholder,class:"autosuggest-input",onClick:t[1]||(t[1]=(...t)=>e.onInputClick&&e.onInputClick(...t))},null,8,oe),[[a.S,e.term]]),e.resultsVisible&&e.filtered.length>0?(Object(a.D)(),Object(a.j)("div",ce,[(Object(a.D)(!0),Object(a.j)(a.a,null,Object(a.H)(e.filtered,t=>Object(a.I)(e.$slots,"default",{item:t})),256))])):Object(a.i)("",!0)])),[[c,e.onClickOutside]])}]]);const be={class:"block-card-content-container"},ue=["disabled"],de=["disabled"];var Oe=l(53),pe={props:["userId"],data:function(){return{progress:!1}},computed:{user:function(){return this.$store.getters.findUser(this.userId)},relationship:function(){return this.$store.getters.relationship(this.userId)},blocked:function(){return this.relationship.blocking}},components:{BasicUserCard:Oe.a},methods:{unblockUser:function(){var e=this;this.progress=!0,this.$store.dispatch("unblockUser",this.user.id).then((function(){e.progress=!1}))},blockUser:function(){var e=this;this.progress=!0,this.$store.dispatch("blockUser",this.user.id).then((function(){e.progress=!1}))}}};l(659);var je=D()(pe,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("basic-user-card");return Object(a.D)(),Object(a.h)(c,{user:e.user},{default:Object(a.V)(()=>[Object(a.k)("div",be,[e.blocked?(Object(a.D)(),Object(a.j)("button",{key:0,class:"btn button-default",disabled:e.progress,onClick:t[0]||(t[0]=(...t)=>e.unblockUser&&e.unblockUser(...t))},[e.progress?(Object(a.D)(),Object(a.j)(a.a,{key:0},[Object(a.l)(Object(a.O)(e.$t("user_card.unblock_progress")),1)],64)):(Object(a.D)(),Object(a.j)(a.a,{key:1},[Object(a.l)(Object(a.O)(e.$t("user_card.unblock")),1)],64))],8,ue)):(Object(a.D)(),Object(a.j)("button",{key:1,class:"btn button-default",disabled:e.progress,onClick:t[1]||(t[1]=(...t)=>e.blockUser&&e.blockUser(...t))},[e.progress?(Object(a.D)(),Object(a.j)(a.a,{key:0},[Object(a.l)(Object(a.O)(e.$t("user_card.block_progress")),1)],64)):(Object(a.D)(),Object(a.j)(a.a,{key:1},[Object(a.l)(Object(a.O)(e.$t("user_card.block")),1)],64))],8,de))])]),_:1},8,["user"])}]]);const me={class:"mute-card-content-container"},he=["disabled"],fe=["disabled"];var ge={props:["userId"],data:function(){return{progress:!1}},computed:{user:function(){return this.$store.getters.findUser(this.userId)},relationship:function(){return this.$store.getters.relationship(this.userId)},muted:function(){return this.relationship.muting}},components:{BasicUserCard:Oe.a},methods:{unmuteUser:function(){var e=this;this.progress=!0,this.$store.dispatch("unmuteUser",this.userId).then((function(){e.progress=!1}))},muteUser:function(){var e=this;this.progress=!0,this.$store.dispatch("muteUser",this.userId).then((function(){e.progress=!1}))}}};l(660);var ke=D()(ge,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("basic-user-card");return Object(a.D)(),Object(a.h)(c,{user:e.user},{default:Object(a.V)(()=>[Object(a.k)("div",me,[e.muted?(Object(a.D)(),Object(a.j)("button",{key:0,class:"btn button-default",disabled:e.progress,onClick:t[0]||(t[0]=(...t)=>e.unmuteUser&&e.unmuteUser(...t))},[e.progress?(Object(a.D)(),Object(a.j)(a.a,{key:0},[Object(a.l)(Object(a.O)(e.$t("user_card.unmute_progress")),1)],64)):(Object(a.D)(),Object(a.j)(a.a,{key:1},[Object(a.l)(Object(a.O)(e.$t("user_card.unmute")),1)],64))],8,he)):(Object(a.D)(),Object(a.j)("button",{key:1,class:"btn button-default",disabled:e.progress,onClick:t[1]||(t[1]=(...t)=>e.muteUser&&e.muteUser(...t))},[e.progress?(Object(a.D)(),Object(a.j)(a.a,{key:0},[Object(a.l)(Object(a.O)(e.$t("user_card.mute_progress")),1)],64)):(Object(a.D)(),Object(a.j)(a.a,{key:1},[Object(a.l)(Object(a.O)(e.$t("user_card.mute")),1)],64))],8,fe))])]),_:1},8,["user"])}]]);const ve={class:"domain-mute-card"},ye={class:"domain-mute-card-domain"};var we=l(104),_e={props:["domain"],components:{ProgressButton:we.a},computed:{user:function(){return this.$store.state.users.currentUser},muted:function(){return this.user.domainMutes.includes(this.domain)}},methods:{unmuteDomain:function(){return this.$store.dispatch("unmuteDomain",this.domain)},muteDomain:function(){return this.$store.dispatch("muteDomain",this.domain)}}};l(661);var Ve=D()(_e,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("ProgressButton");return Object(a.D)(),Object(a.j)("div",ve,[Object(a.k)("div",ye,Object(a.O)(e.domain),1),e.muted?(Object(a.D)(),Object(a.h)(c,{key:0,click:e.unmuteDomain,class:"btn button-default"},{progress:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("domain_mute_card.unmute_progress")),1)]),default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("domain_mute_card.unmute"))+" ",1)]),_:1},8,["click"])):(Object(a.D)(),Object(a.h)(c,{key:1,click:e.muteDomain,class:"btn button-default"},{progress:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("domain_mute_card.mute_progress")),1)]),default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("domain_mute_card.mute"))+" ",1)]),_:1},8,["click"]))])}]]);const $e={class:"selectable-list"},Ce={key:0,class:"selectable-list-header"},Te={class:"selectable-list-checkbox-wrapper"},xe={class:"selectable-list-header-actions"},Le={class:"selectable-list-checkbox-wrapper"};var Se={components:{List:l(69).a,Checkbox:E.a},props:{items:{type:Array,default:function(){return[]}},getKey:{type:Function,default:function(e){return e.id}}},data:function(){return{selected:[]}},computed:{allKeys:function(){return this.items.map(this.getKey)},filteredSelected:function(){var e=this;return this.allKeys.filter((function(t){return-1!==e.selected.indexOf(t)}))},allSelected:function(){return this.filteredSelected.length===this.items.length},noneSelected:function(){return 0===this.filteredSelected.length},someSelected:function(){return!this.allSelected&&!this.noneSelected}},methods:{isSelected:function(e){return-1!==this.filteredSelected.indexOf(this.getKey(e))},toggle:function(e,t){var l=this.getKey(t);e!==this.isSelected(l)&&(e?this.selected.push(l):this.selected.splice(this.selected.indexOf(l),1))},toggleAll:function(e){this.selected=e?this.allKeys.slice(0):[]}}};l(662);var De=D()(Se,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("Checkbox"),i=Object(a.J)("List");return Object(a.D)(),Object(a.j)("div",$e,[e.items.length>0?(Object(a.D)(),Object(a.j)("div",Ce,[Object(a.k)("div",Te,[Object(a.m)(c,{"model-value":e.allSelected,indeterminate:e.someSelected,"onUpdate:modelValue":e.toggleAll},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("selectable_list.select_all")),1)]),_:1},8,["model-value","indeterminate","onUpdate:modelValue"])]),Object(a.k)("div",xe,[Object(a.I)(e.$slots,"header",{selected:e.filteredSelected})])])):Object(a.i)("",!0),Object(a.m)(i,{items:e.items,"get-key":e.getKey},{item:Object(a.V)(({item:t})=>[Object(a.k)("div",{class:Object(a.w)(["selectable-list-item-inner",{"selectable-list-item-selected-inner":e.isSelected(t)}])},[Object(a.k)("div",Le,[Object(a.m)(c,{"model-value":e.isSelected(t),"onUpdate:modelValue":l=>e.toggle(l,t)},null,8,["model-value","onUpdate:modelValue"])]),Object(a.I)(e.$slots,"item",{item:t})],2)]),empty:Object(a.V)(()=>[Object(a.I)(e.$slots,"empty")]),_:3},8,["items","get-key"])])}]]),Pe=l(12),Ue=l.n(Pe),Ie=l(300),Be=l.n(Ie),Fe=l(301),Ee=(l(663),l(68));function Ae(e,t){var l=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),l.push.apply(l,a)}return l}function Me(e){for(var t=1;t<arguments.length;t++){var l=null!=arguments[t]?arguments[t]:{};t%2?Ae(Object(l),!0).forEach((function(t){y()(e,t,l[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(l)):Ae(Object(l)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(l,t))}))}return e}T.c.add(x.r);var Re=function(e){var t=e.fetch,l=e.select,n=e.childPropName,s=void 0===n?"content":n,o=e.additionalPropNames,c=void 0===o?[]:o;return function(e){var n=Object.keys(Object(Fe.a)(e)).filter((function(e){return e!==s})).concat(c);return{props:[].concat(Ue()(n),["refresh"]),data:function(){return{loading:!1,error:!1}},computed:{fetchedData:function(){return l(this.$props,this.$store)}},created:function(){(this.refresh||Be()(this.fetchedData))&&this.fetchData()},methods:{fetchData:function(){var e=this;this.loading||(this.loading=!0,this.error=!1,t(this.$props,this.$store).then((function(){e.loading=!1})).catch((function(){e.error=!0,e.loading=!1})))}},render:function(){if(this.error||this.loading)return Object(a.m)("div",{class:"with-subscription-loading"},[this.error?Object(a.m)("a",{onClick:this.fetchData,class:"alert error"},[this.$t("general.generic_error")]):Object(a.m)(Ee.a,{spin:!0,icon:"circle-notch"},null)]);var t,l=Me(Me({},this.$props),{},y()({},s,this.fetchedData)),n=this.$slots;return Object(a.m)("div",{class:"with-subscription"},[Object(a.m)(e,l,(t=n,"function"==typeof t||"[object Object]"===Object.prototype.toString.call(t)&&!Object(a.t)(t)?n:{default:function(){return[n]}}))])}}}},We=Re({fetch:function(e,t){return t.dispatch("fetchBlocks")},select:function(e,t){return ee()(t.state.users.currentUser,"blockIds",[])},childPropName:"items"})(De),Je=Re({fetch:function(e,t){return t.dispatch("fetchMutes")},select:function(e,t){return ee()(t.state.users.currentUser,"muteIds",[])},childPropName:"items"})(De),Ne=Re({fetch:function(e,t){return t.dispatch("fetchDomainMutes")},select:function(e,t){return ee()(t.state.users.currentUser,"domainMutes",[])},childPropName:"items"})(De),qe={data:function(){return{activeTab:"profile"}},created:function(){this.$store.dispatch("fetchTokens"),this.$store.dispatch("getKnownDomains")},components:{TabSwitcher:O.a,BlockList:We,MuteList:Je,DomainMuteList:Ne,BlockCard:je,MuteCard:ke,DomainMuteCard:Ve,ProgressButton:we.a,Autosuggest:re,Checkbox:E.a},computed:{knownDomains:function(){return this.$store.state.instance.knownDomains},user:function(){return this.$store.state.users.currentUser}},methods:{importFollows:function(e){return this.$store.state.api.backendInteractor.importFollows({file:e}).then((function(e){if(!e)throw new Error("failed")}))},importBlocks:function(e){return this.$store.state.api.backendInteractor.importBlocks({file:e}).then((function(e){if(!e)throw new Error("failed")}))},generateExportableUsersContent:function(e){return e.map((function(e){return e&&e.is_local?e.screen_name+"@"+location.hostname:e.screen_name})).join("\n")},activateTab:function(e){this.activeTab=e},filterUnblockedUsers:function(e){var t=this;return ne()(e,(function(e){return t.$store.getters.relationship(t.userId).blocking||e===t.user.id}))},filterUnMutedUsers:function(e){var t=this;return ne()(e,(function(e){return t.$store.getters.relationship(t.userId).muting||e===t.user.id}))},queryUserIds:function(e){return this.$store.dispatch("searchUsers",{query:e}).then((function(e){return le()(e,"id")}))},blockUsers:function(e){return this.$store.dispatch("blockUsers",e)},unblockUsers:function(e){return this.$store.dispatch("unblockUsers",e)},muteUsers:function(e){return this.$store.dispatch("muteUsers",e)},unmuteUsers:function(e){return this.$store.dispatch("unmuteUsers",e)},filterUnMutedDomains:function(e){var t=this;return e.filter((function(e){return!t.user.domainMutes.includes(e)}))},queryKnownDomains:function(e){var t=this;return new Promise((function(l,a){l(t.knownDomains.filter((function(t){return t.toLowerCase().includes(e)})))}))},unmuteDomains:function(e){return this.$store.dispatch("unmuteDomains",e)}}};l(664);var Ge=D()(qe,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("BlockCard"),i=Object(a.J)("Autosuggest"),r=Object(a.J)("ProgressButton"),b=Object(a.J)("BlockList"),u=Object(a.J)("MuteCard"),d=Object(a.J)("MuteList"),O=Object(a.J)("DomainMuteCard"),p=Object(a.J)("DomainMuteList"),j=Object(a.J)("tab-switcher");return Object(a.D)(),Object(a.h)(j,{"scrollable-tabs":!0,class:"mutes-and-blocks-tab"},{default:Object(a.V)(()=>[Object(a.k)("div",{label:e.$t("settings.blocks_tab")},[Object(a.k)("div",N,[Object(a.m)(i,{filter:e.filterUnblockedUsers,query:e.queryUserIds,placeholder:e.$t("settings.search_user_to_block")},{default:Object(a.V)(e=>[Object(a.m)(c,{"user-id":e.item},null,8,["user-id"])]),_:1},8,["filter","query","placeholder"])]),Object(a.m)(b,{refresh:!0,"get-key":e=>e},{header:Object(a.V)(({selected:t})=>[Object(a.k)("div",q,[t.length>0?(Object(a.D)(),Object(a.h)(r,{key:0,class:"btn button-default bulk-action-button",click:()=>e.blockUsers(t)},{progress:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("user_card.block_progress")),1)]),default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("user_card.block"))+" ",1)]),_:2},1032,["click"])):Object(a.i)("",!0),t.length>0?(Object(a.D)(),Object(a.h)(r,{key:1,class:"btn button-default",click:()=>e.unblockUsers(t)},{progress:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("user_card.unblock_progress")),1)]),default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("user_card.unblock"))+" ",1)]),_:2},1032,["click"])):Object(a.i)("",!0)])]),item:Object(a.V)(({item:e})=>[Object(a.m)(c,{"user-id":e},null,8,["user-id"])]),empty:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.no_blocks")),1)]),_:1},8,["get-key"])],8,J),Object(a.k)("div",{label:e.$t("settings.mutes_tab")},[Object(a.m)(j,null,{default:Object(a.V)(()=>[Object(a.k)("div",H,[Object(a.k)("div",z,[Object(a.m)(i,{filter:e.filterUnMutedUsers,query:e.queryUserIds,placeholder:e.$t("settings.search_user_to_mute")},{default:Object(a.V)(e=>[Object(a.m)(u,{"user-id":e.item},null,8,["user-id"])]),_:1},8,["filter","query","placeholder"])]),Object(a.m)(d,{refresh:!0,"get-key":e=>e},{header:Object(a.V)(({selected:t})=>[Object(a.k)("div",K,[t.length>0?(Object(a.D)(),Object(a.h)(r,{key:0,class:"btn button-default",click:()=>e.muteUsers(t)},{progress:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("user_card.mute_progress")),1)]),default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("user_card.mute"))+" ",1)]),_:2},1032,["click"])):Object(a.i)("",!0),t.length>0?(Object(a.D)(),Object(a.h)(r,{key:1,class:"btn button-default",click:()=>e.unmuteUsers(t)},{progress:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("user_card.unmute_progress")),1)]),default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("user_card.unmute"))+" ",1)]),_:2},1032,["click"])):Object(a.i)("",!0)])]),item:Object(a.V)(({item:e})=>[Object(a.m)(u,{"user-id":e},null,8,["user-id"])]),empty:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.no_mutes")),1)]),_:1},8,["get-key"])]),Object(a.k)("div",{label:e.$t("settings.domain_mutes")},[Object(a.k)("div",Z,[Object(a.m)(i,{filter:e.filterUnMutedDomains,query:e.queryKnownDomains,placeholder:e.$t("settings.type_domains_to_mute")},{default:Object(a.V)(e=>[Object(a.m)(O,{domain:e.item},null,8,["domain"])]),_:1},8,["filter","query","placeholder"])]),Object(a.m)(p,{refresh:!0,"get-key":e=>e},{header:Object(a.V)(({selected:t})=>[Object(a.k)("div",Q,[t.length>0?(Object(a.D)(),Object(a.h)(r,{key:0,class:"btn button-default",click:()=>e.unmuteDomains(t)},{progress:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("domain_mute_card.unmute_progress")),1)]),default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("domain_mute_card.unmute"))+" ",1)]),_:2},1032,["click"])):Object(a.i)("",!0)])]),item:Object(a.V)(({item:e})=>[Object(a.m)(O,{domain:e},null,8,["domain"])]),empty:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.no_mutes")),1)]),_:1},8,["get-key"])],8,Y)]),_:1})],8,G)]),_:1})}]]);const He=["label"],ze={class:"setting-item"},Ke={class:"setting-list"},Ye={class:"select-multiple"},Ze={class:"label"},Qe={class:"option-list"},Xe={key:0,class:"setting-item"},et={class:"setting-list"},tt={class:"setting-item"};const lt={key:0,class:"BooleanSetting"},at={key:0,class:"label"},nt=Object(a.l)(" "+Object(a.O)(" ")+" ");var st=l(625),ot=l.n(st),ct=l(39),it=l.n(ct);const rt={key:0,class:"ModifiedIndicator"},bt=Object(a.l)("   "),ut={class:"modified-tooltip"};var dt=l(24);T.c.add(x.yb);var Ot={components:{Popover:dt.default},props:["changed"]};l(665);var pt=D()(Ot,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("FAIcon"),i=Object(a.J)("Popover");return l.changed?(Object(a.D)(),Object(a.j)("span",rt,[Object(a.m)(i,{trigger:"hover"},{trigger:Object(a.V)(()=>[bt,Object(a.m)(c,{icon:"wrench","aria-label":e.$t("settings.setting_changed")},null,8,["aria-label"])]),content:Object(a.V)(()=>[Object(a.k)("div",ut,Object(a.O)(e.$t("settings.setting_changed")),1)]),_:1})])):Object(a.i)("",!0)}]]);const jt={key:0,class:"ServerSideIndicator"},mt=Object(a.l)("   "),ht={class:"serverside-tooltip"};T.c.add(x.eb);var ft={components:{Popover:dt.default},props:["serverSide"]};l(666);var gt=D()(ft,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("FAIcon"),i=Object(a.J)("Popover");return l.serverSide?(Object(a.D)(),Object(a.j)("span",jt,[Object(a.m)(i,{trigger:"hover"},{trigger:Object(a.V)(()=>[mt,Object(a.m)(c,{icon:"server","aria-label":e.$t("settings.setting_server_side")},null,8,["aria-label"])]),content:Object(a.V)(()=>[Object(a.k)("div",ht,Object(a.O)(e.$t("settings.setting_server_side")),1)]),_:1})])):Object(a.i)("",!0)}]]),kt={components:{Checkbox:E.a,ModifiedIndicator:pt,ServerSideIndicator:gt},props:["path","disabled","expert"],computed:{pathDefault:function(){var e=this.path.split("."),t=ot()(e),l=t[0],a=t.slice(1);return[l+"DefaultValue"].concat(Ue()(a)).join(".")},state:function(){var e=ee()(this.$parent,this.path);return void 0===e?this.defaultState:e},defaultState:function(){return ee()(this.$parent,this.pathDefault)},isServerSide:function(){return this.path.startsWith("serverSide_")},isChanged:function(){return!this.path.startsWith("serverSide_")&&this.state!==this.defaultState},matchesExpertLevel:function(){return(this.expert||0)<=this.$parent.expertLevel}},methods:{update:function(e){it()(this.$parent,this.path,e)}}};var vt=D()(kt,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("ModifiedIndicator"),i=Object(a.J)("ServerSideIndicator"),r=Object(a.J)("Checkbox");return e.matchesExpertLevel?(Object(a.D)(),Object(a.j)("label",lt,[Object(a.m)(r,{"model-value":e.state,disabled:e.disabled,"onUpdate:modelValue":e.update},{default:Object(a.V)(()=>[e.$slots.default?(Object(a.D)(),Object(a.j)("span",at,[Object(a.I)(e.$slots,"default")])):Object(a.i)("",!0),nt,Object(a.m)(c,{changed:e.isChanged},null,8,["changed"]),Object(a.m)(i,{"server-side":e.isServerSide},null,8,["server-side"])]),_:3},8,["model-value","disabled","onUpdate:modelValue"])])):Object(a.i)("",!0)}]]),yt=l(11),wt=l.n(yt),_t=l(121),Vt=l(220);function $t(e,t){var l=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),l.push.apply(l,a)}return l}function Ct(e){for(var t=1;t<arguments.length;t++){var l=null!=arguments[t]?arguments[t]:{};t%2?$t(Object(l),!0).forEach((function(t){y()(e,t,l[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(l)):$t(Object(l)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(l,t))}))}return e}var Tt=function(){return Ct(Ct(Ct(Ct({user:function(){return this.$store.state.users.currentUser}},Object.keys(_t.b).map((function(e){return[e+"DefaultValue",function(){return this.$store.getters.defaultConfig[e]}]})).reduce((function(e,t){var l=wt()(t,2),a=l[0],n=l[1];return Ct(Ct({},e),{},y()({},a,n))}),{})),Object.keys(_t.b).map((function(e){return[e,{get:function(){return this.$store.getters.mergedConfig[e]},set:function(t){this.$store.dispatch("setOption",{name:e,value:t})}}]})).reduce((function(e,t){var l=wt()(t,2),a=l[0],n=l[1];return Ct(Ct({},e),{},y()({},a,n))}),{})),Object.keys(Vt.b).map((function(e){return["serverSide_"+e,{get:function(){return this.$store.state.serverSideConfig[e]},set:function(t){this.$store.dispatch("setServerSideOption",{name:e,value:t})}}]})).reduce((function(e,t){var l=wt()(t,2),a=l[0],n=l[1];return Ct(Ct({},e),{},y()({},a,n))}),{})),{},{useStreamingApi:{get:function(){return this.$store.getters.mergedConfig.useStreamingApi},set:function(e){var t=this;(e?this.$store.dispatch("enableMastoSockets"):this.$store.dispatch("disableMastoSockets")).then((function(){t.$store.dispatch("setOption",{name:"useStreamingApi",value:e})})).catch((function(e){console.error("Failed starting MastoAPI Streaming socket",e),t.$store.dispatch("disableMastoSockets"),t.$store.dispatch("setOption",{name:"useStreamingApi",value:!1})}))}}})};function xt(e,t){var l=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),l.push.apply(l,a)}return l}var Lt={data:function(){return{activeTab:"profile",notificationSettings:this.$store.state.users.currentUser.notification_settings,newDomainToMute:""}},components:{BooleanSetting:vt},computed:function(e){for(var t=1;t<arguments.length;t++){var l=null!=arguments[t]?arguments[t]:{};t%2?xt(Object(l),!0).forEach((function(t){y()(e,t,l[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(l)):xt(Object(l)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(l,t))}))}return e}({user:function(){return this.$store.state.users.currentUser}},Tt()),methods:{updateNotificationSettings:function(){this.$store.state.api.backendInteractor.updateNotificationSettings({settings:this.notificationSettings})}}};var St=D()(Lt,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("BooleanSetting");return Object(a.D)(),Object(a.j)("div",{label:e.$t("settings.notifications")},[Object(a.k)("div",ze,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.notification_setting_filters")),1),Object(a.k)("ul",Ke,[Object(a.k)("li",null,[Object(a.m)(c,{path:"serverSide_blockNotificationsFromStrangers"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.notification_setting_block_from_strangers")),1)]),_:1})]),Object(a.k)("li",Ye,[Object(a.k)("span",Ze,Object(a.O)(e.$t("settings.notification_visibility")),1),Object(a.k)("ul",Qe,[Object(a.k)("li",null,[Object(a.m)(c,{path:"notificationVisibility.likes"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.notification_visibility_likes")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(c,{path:"notificationVisibility.repeats"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.notification_visibility_repeats")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(c,{path:"notificationVisibility.follows"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.notification_visibility_follows")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(c,{path:"notificationVisibility.mentions"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.notification_visibility_mentions")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(c,{path:"notificationVisibility.moves"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.notification_visibility_moves")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(c,{path:"notificationVisibility.emojiReactions"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.notification_visibility_emoji_reactions")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(c,{path:"notificationVisibility.polls"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.notification_visibility_polls")),1)]),_:1})])])])])]),e.expertLevel>0?(Object(a.D)(),Object(a.j)("div",Xe,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.notification_setting_privacy")),1),Object(a.k)("ul",et,[Object(a.k)("li",null,[Object(a.m)(c,{path:"webPushNotifications",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.enable_web_push_notifications")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(c,{path:"serverSide_webPushHideContents",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.notification_setting_hide_notification_contents")),1)]),_:1})])])])):Object(a.i)("",!0),Object(a.k)("div",tt,[Object(a.k)("p",null,Object(a.O)(e.$t("settings.notification_mutes")),1),Object(a.k)("p",null,Object(a.O)(e.$t("settings.notification_blocks")),1)])],8,He)}]]);const Dt=["label"],Pt={class:"setting-item"},Ut={class:"setting-list"},It={key:0,class:"setting-item"},Bt={class:"setting-list"};var Ft=l(667),Et=l.n(Ft),At=l(49),Mt=l.n(At);const Rt={key:0,class:"ChoiceSetting"},Wt=Object(a.l)(" "+Object(a.O)(" ")+" "),Jt=["value"];var Nt=l(52),qt={components:{Select:Nt.a,ModifiedIndicator:pt,ServerSideIndicator:gt},props:["path","disabled","options","expert"],computed:{pathDefault:function(){var e=this.path.split("."),t=ot()(e),l=t[0],a=t.slice(1);return[l+"DefaultValue"].concat(Ue()(a)).join(".")},state:function(){var e=ee()(this.$parent,this.path);return void 0===e?this.defaultState:e},defaultState:function(){return ee()(this.$parent,this.pathDefault)},isServerSide:function(){return this.path.startsWith("serverSide_")},isChanged:function(){return!this.path.startsWith("serverSide_")&&this.state!==this.defaultState},matchesExpertLevel:function(){return(this.expert||0)<=this.$parent.expertLevel}},methods:{update:function(e){it()(this.$parent,this.path,e)}}};l(670);var Gt=D()(qt,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("Select"),i=Object(a.J)("ModifiedIndicator"),r=Object(a.J)("ServerSideIndicator");return e.matchesExpertLevel?(Object(a.D)(),Object(a.j)("label",Rt,[Object(a.I)(e.$slots,"default"),Wt,Object(a.m)(c,{"model-value":e.state,disabled:e.disabled,"onUpdate:modelValue":e.update},{default:Object(a.V)(()=>[(Object(a.D)(!0),Object(a.j)(a.a,null,Object(a.H)(e.options,t=>(Object(a.D)(),Object(a.j)("option",{key:t.key,value:t.value},Object(a.O)(t.label)+" "+Object(a.O)(t.value===e.defaultState?e.$t("settings.instance_default_simple"):""),9,Jt))),128))]),_:1},8,["model-value","disabled","onUpdate:modelValue"]),Object(a.m)(i,{changed:e.isChanged},null,8,["changed"]),Object(a.m)(r,{"server-side":e.isServerSide},null,8,["server-side"])])):Object(a.i)("",!0)}]]);const Ht={key:0,class:"IntegerSetting"},zt=["for"],Kt=["id","disabled","min","value"],Yt=Object(a.l)(" "+Object(a.O)(" ")+" ");var Zt={components:{ModifiedIndicator:pt},props:{path:String,disabled:Boolean,min:Number,expert:[Number,String]},computed:{pathDefault:function(){var e=this.path.split("."),t=ot()(e),l=t[0],a=t.slice(1);return[l+"DefaultValue"].concat(Ue()(a)).join(".")},state:function(){var e=ee()(this.$parent,this.path);return void 0===e?this.defaultState:e},defaultState:function(){return ee()(this.$parent,this.pathDefault)},isChanged:function(){return this.state!==this.defaultState},matchesExpertLevel:function(){return(this.expert||0)<=this.$parent.expertLevel}},methods:{update:function(e){it()(this.$parent,this.path,parseInt(e.target.value))}}};var Qt=D()(Zt,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("ModifiedIndicator");return e.matchesExpertLevel?(Object(a.D)(),Object(a.j)("span",Ht,[Object(a.k)("label",{for:e.path},[Object(a.I)(e.$slots,"default")],8,zt),Object(a.k)("input",{id:e.path,class:"number-input",type:"number",step:"1",disabled:e.disabled,min:e.min||0,value:e.state,onChange:t[0]||(t[0]=(...t)=>e.update&&e.update(...t))},null,40,Kt),Yt,Object(a.m)(c,{changed:e.isChanged},null,8,["changed"])])):Object(a.i)("",!0)}]]);function Xt(e,t){var l=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),l.push.apply(l,a)}return l}function el(e){for(var t=1;t<arguments.length;t++){var l=null!=arguments[t]?arguments[t]:{};t%2?Xt(Object(l),!0).forEach((function(t){y()(e,t,l[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(l)):Xt(Object(l)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(l,t))}))}return e}var tl={data:function(){var e=this;return{muteWordsStringLocal:this.$store.getters.mergedConfig.muteWords.join("\n"),replyVisibilityOptions:["all","following","self"].map((function(t){return{key:t,value:t,label:e.$t("settings.reply_visibility_".concat(t))}}))}},components:{BooleanSetting:vt,ChoiceSetting:Gt,IntegerSetting:Qt},computed:el(el({},Tt()),{},{muteWordsString:{get:function(){return this.muteWordsStringLocal},set:function(e){this.muteWordsStringLocal=e,this.$store.dispatch("setOption",{name:"muteWords",value:Mt()(e.split("\n"),(function(e){return Et()(e).length>0}))})}}}),watch:{notificationVisibility:{handler:function(e){this.$store.dispatch("setOption",{name:"notificationVisibility",value:this.$store.getters.mergedConfig.notificationVisibility})},deep:!0},replyVisibility:function(){this.$store.dispatch("queueFlushAll")}}};var ll=D()(tl,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("BooleanSetting"),i=Object(a.J)("ChoiceSetting"),r=Object(a.J)("IntegerSetting");return Object(a.D)(),Object(a.j)("div",{label:e.$t("settings.filtering")},[Object(a.k)("div",Pt,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.posts")),1),Object(a.k)("ul",Ut,[Object(a.k)("li",null,[Object(a.m)(c,{path:"hideFilteredStatuses"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_filtered_statuses")),1)]),_:1}),Object(a.k)("ul",{class:Object(a.w)(["setting-list suboptions",[{disabled:!e.streaming}]])},[Object(a.k)("li",null,[Object(a.m)(c,{disabled:e.hideFilteredStatuses,path:"hideWordFilteredPosts"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_wordfiltered_statuses")),1)]),_:1},8,["disabled"])]),Object(a.k)("li",null,[e.user?(Object(a.D)(),Object(a.h)(c,{key:0,disabled:e.hideFilteredStatuses,path:"hideMutedThreads"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_muted_threads")),1)]),_:1},8,["disabled"])):Object(a.i)("",!0)]),Object(a.k)("li",null,[e.user?(Object(a.D)(),Object(a.h)(c,{key:0,disabled:e.hideFilteredStatuses,path:"hideMutedPosts"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_muted_posts")),1)]),_:1},8,["disabled"])):Object(a.i)("",!0)])],2)]),Object(a.k)("li",null,[Object(a.m)(c,{path:"muteBotStatuses"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.mute_bot_posts")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(c,{path:"hidePostStats"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_post_stats")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(c,{path:"hideBotIndication"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_bot_indication")),1)]),_:1})]),e.user?(Object(a.D)(),Object(a.h)(i,{key:0,id:"replyVisibility",path:"replyVisibility",options:e.replyVisibilityOptions},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.replies_in_timeline")),1)]),_:1},8,["options"])):Object(a.i)("",!0),Object(a.k)("li",null,[Object(a.k)("h3",null,Object(a.O)(e.$t("settings.wordfilter")),1),Object(a.W)(Object(a.k)("textarea",{id:"muteWords","onUpdate:modelValue":t[0]||(t[0]=t=>e.muteWordsString=t),class:"resize-height"},null,512),[[a.S,e.muteWordsString]]),Object(a.k)("div",null,Object(a.O)(e.$t("settings.filtering_explanation")),1)]),Object(a.k)("h3",null,Object(a.O)(e.$t("settings.attachments")),1),Object(a.k)("li",null,[Object(a.m)(r,{path:"maxThumbnails",expert:"1",min:0},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.max_thumbnails")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(c,{path:"hideAttachments"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_attachments_in_tl")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(c,{path:"hideAttachmentsInConv"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_attachments_in_convo")),1)]),_:1})])])]),e.expertLevel>0?(Object(a.D)(),Object(a.j)("div",It,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.user_profiles")),1),Object(a.k)("ul",Bt,[Object(a.k)("li",null,[Object(a.m)(c,{path:"hideUserStats"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_user_stats")),1)]),_:1})])])])):Object(a.i)("",!0)],8,Dt)}]]);const al=["label"],nl={class:"setting-item"},sl={key:0},ol={class:"setting-item"},cl={key:0},il={key:1},rl={key:2},bl={class:"setting-item"},ul={class:"oauth-tokens"},dl=Object(a.k)("th",null,null,-1),Ol={class:"actions"},pl=["onClick"],jl={class:"setting-item"},ml={key:0},hl={key:1},fl={key:2},gl={key:3};const kl={key:0,class:"setting-item mfa-settings"},vl={class:"mfa-heading"},yl={key:0,class:"setting-item"},wl=Object(a.k)("br",null,null,-1),_l={key:0},Vl={key:2},$l={class:"warning"},Cl={key:1},Tl={key:0},xl={key:1},Ll={class:"setup-otp"},Sl={class:"qr-code"},Dl={class:"verify"},Pl={class:"confirm-otp-actions"},Ul={key:0,class:"alert error"};var Il=l(13),Bl=l.n(Il),Fl=l(10),El=l.n(Fl);const Al={class:"mfa-backup-codes"},Ml={key:0},Rl={key:1},Wl={class:"alert warning"},Jl={class:"backup-codes"};var Nl={props:{backupCodes:{type:Object,default:function(){return{inProgress:!1,codes:[]}}}},data:function(){return{}},computed:{inProgress:function(){return this.backupCodes.inProgress},ready:function(){return this.backupCodes.codes.length>0},displayTitle:function(){return this.inProgress||this.ready}}};l(671);var ql=D()(Nl,[["render",function(e,t,l,n,s,o){return Object(a.D)(),Object(a.j)("div",Al,[e.displayTitle?(Object(a.D)(),Object(a.j)("h4",Ml,Object(a.O)(e.$t("settings.mfa.recovery_codes")),1)):Object(a.i)("",!0),e.inProgress?(Object(a.D)(),Object(a.j)("i",Rl,Object(a.O)(e.$t("settings.mfa.waiting_a_recovery_codes")),1)):Object(a.i)("",!0),e.ready?(Object(a.D)(),Object(a.j)(a.a,{key:2},[Object(a.k)("p",Wl,Object(a.O)(e.$t("settings.mfa.recovery_codes_warning")),1),Object(a.k)("ul",Jl,[(Object(a.D)(!0),Object(a.j)(a.a,null,Object(a.H)(e.backupCodes.codes,e=>(Object(a.D)(),Object(a.j)("li",{key:e},Object(a.O)(e),1))),128))])],64)):Object(a.i)("",!0)])}]]);const Gl={class:"method-item"},Hl=["disabled"],zl={key:1,class:"alert error"};const Kl=["disabled"],Yl=["disabled"];var Zl={props:["disabled"],data:function(){return{}},methods:{confirm:function(){this.$emit("confirm")},cancel:function(){this.$emit("cancel")}}};var Ql=D()(Zl,[["render",function(e,t,l,n,s,o){return Object(a.D)(),Object(a.j)("div",null,[Object(a.I)(e.$slots,"default"),Object(a.k)("button",{class:"btn button-default",disabled:e.disabled,onClick:t[0]||(t[0]=(...t)=>e.confirm&&e.confirm(...t))},Object(a.O)(e.$t("general.confirm")),9,Kl),Object(a.k)("button",{class:"btn button-default",disabled:e.disabled,onClick:t[1]||(t[1]=(...t)=>e.cancel&&e.cancel(...t))},Object(a.O)(e.$t("general.cancel")),9,Yl)])}]]);function Xl(e,t){var l=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),l.push.apply(l,a)}return l}var ea={props:["settings"],data:function(){return{error:!1,currentPassword:"",deactivate:!1,inProgress:!1}},components:{confirm:Ql},computed:function(e){for(var t=1;t<arguments.length;t++){var l=null!=arguments[t]?arguments[t]:{};t%2?Xl(Object(l),!0).forEach((function(t){y()(e,t,l[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(l)):Xl(Object(l)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(l,t))}))}return e}({isActivated:function(){return this.settings.totp}},Object(A.e)({backendInteractor:function(e){return e.api.backendInteractor}})),methods:{doActivate:function(){this.$emit("activate")},cancelDeactivate:function(){this.deactivate=!1},doDeactivate:function(){this.error=null,this.deactivate=!0},confirmDeactivate:function(){var e=this;this.error=null,this.inProgress=!0,this.backendInteractor.mfaDisableOTP({password:this.currentPassword}).then((function(t){e.inProgress=!1,t.error?e.error=t.error:(e.deactivate=!1,e.$emit("deactivate"))}))}}};function ta(e,t){var l=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),l.push.apply(l,a)}return l}var la={data:function(){return{settings:{available:!1,enabled:!1,totp:!1},setupState:{state:"",setupOTPState:""},backupCodes:{getNewCodes:!1,inProgress:!1,codes:[]},otpSettings:{provisioning_uri:"",key:""},currentPassword:null,otpConfirmToken:null,error:null,readyInit:!1}},components:{"recovery-codes":ql,"totp-item":D()(ea,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("confirm");return Object(a.D)(),Object(a.j)("div",null,[Object(a.k)("div",Gl,[Object(a.k)("strong",null,Object(a.O)(e.$t("settings.mfa.otp")),1),e.isActivated?Object(a.i)("",!0):(Object(a.D)(),Object(a.j)("button",{key:0,class:"btn button-default",onClick:t[0]||(t[0]=(...t)=>e.doActivate&&e.doActivate(...t))},Object(a.O)(e.$t("general.enable")),1)),e.isActivated?(Object(a.D)(),Object(a.j)("button",{key:1,class:"btn button-default",disabled:e.deactivate,onClick:t[1]||(t[1]=(...t)=>e.doDeactivate&&e.doDeactivate(...t))},Object(a.O)(e.$t("general.disable")),9,Hl)):Object(a.i)("",!0)]),e.deactivate?(Object(a.D)(),Object(a.h)(c,{key:0,disabled:e.inProgress,onConfirm:e.confirmDeactivate,onCancel:e.cancelDeactivate},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.enter_current_password_to_confirm"))+": ",1),Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[2]||(t[2]=t=>e.currentPassword=t),type:"password"},null,512),[[a.S,e.currentPassword]])]),_:1},8,["disabled","onConfirm","onCancel"])):Object(a.i)("",!0),e.error?(Object(a.D)(),Object(a.j)("div",zl,Object(a.O)(e.error),1)):Object(a.i)("",!0)])}]]),qrcode:l(672).a,confirm:Ql},computed:function(e){for(var t=1;t<arguments.length;t++){var l=null!=arguments[t]?arguments[t]:{};t%2?ta(Object(l),!0).forEach((function(t){y()(e,t,l[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(l)):ta(Object(l)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(l,t))}))}return e}({canSetupOTP:function(){return(this.setupInProgress&&this.backupCodesPrepared||this.settings.enabled)&&!this.settings.totp&&!this.setupOTPInProgress},setupInProgress:function(){return""!==this.setupState.state&&"complete"!==this.setupState.state},setupOTPInProgress:function(){return"setupOTP"===this.setupState.state&&!this.completedOTP},prepareOTP:function(){return"prepare"===this.setupState.setupOTPState},confirmOTP:function(){return"confirm"===this.setupState.setupOTPState},completedOTP:function(){return"completed"===this.setupState.setupOTPState},backupCodesPrepared:function(){return!this.backupCodes.inProgress&&this.backupCodes.codes.length>0},confirmNewBackupCodes:function(){return this.backupCodes.getNewCodes}},Object(A.e)({backendInteractor:function(e){return e.api.backendInteractor}})),methods:{activateOTP:function(){this.settings.enabled||(this.setupState.state="getBackupcodes",this.fetchBackupCodes())},fetchBackupCodes:function(){var e=this;return this.backupCodes.inProgress=!0,this.backupCodes.codes=[],this.backendInteractor.generateMfaBackupCodes().then((function(t){e.backupCodes.codes=t.codes,e.backupCodes.inProgress=!1}))},getBackupCodes:function(){this.backupCodes.getNewCodes=!0},confirmBackupCodes:function(){var e=this;this.fetchBackupCodes().then((function(t){e.backupCodes.getNewCodes=!1}))},cancelBackupCodes:function(){this.backupCodes.getNewCodes=!1},setupOTP:function(){var e=this;this.setupState.state="setupOTP",this.setupState.setupOTPState="prepare",this.backendInteractor.mfaSetupOTP().then((function(t){e.otpSettings=t,e.setupState.setupOTPState="confirm"}))},doConfirmOTP:function(){var e=this;this.error=null,this.backendInteractor.mfaConfirmOTP({token:this.otpConfirmToken,password:this.currentPassword}).then((function(t){t.error?e.error=t.error:e.completeSetup()}))},completeSetup:function(){this.setupState.setupOTPState="complete",this.setupState.state="complete",this.currentPassword=null,this.error=null,this.fetchSettings()},cancelSetup:function(){this.setupState.setupOTPState="",this.setupState.state="",this.currentPassword=null,this.error=null},fetchSettings:function(){var e=this;return Bl()(El.a.mark((function t(){var l;return El.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.backendInteractor.settingsMFA();case 2:if(!(l=t.sent).error){t.next=5;break}return t.abrupt("return");case 5:return e.settings=l.settings,e.settings.available=!0,t.abrupt("return",l);case 8:case"end":return t.stop()}}),t)})))()}},mounted:function(){var e=this;this.fetchSettings().then((function(){e.readyInit=!0}))}};l(695);var aa=D()(la,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("totp-item"),i=Object(a.J)("recovery-codes"),r=Object(a.J)("confirm"),b=Object(a.J)("qrcode");return e.readyInit&&e.settings.available?(Object(a.D)(),Object(a.j)("div",kl,[Object(a.k)("div",vl,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.mfa.title")),1)]),Object(a.k)("div",null,[e.setupInProgress?Object(a.i)("",!0):(Object(a.D)(),Object(a.j)("div",yl,[Object(a.k)("h3",null,Object(a.O)(e.$t("settings.mfa.authentication_methods")),1),Object(a.m)(c,{settings:e.settings,onDeactivate:e.fetchSettings,onActivate:e.activateOTP},null,8,["settings","onDeactivate","onActivate"]),wl,e.settings.enabled?(Object(a.D)(),Object(a.j)("div",_l,[e.confirmNewBackupCodes?Object(a.i)("",!0):(Object(a.D)(),Object(a.h)(i,{key:0,"backup-codes":e.backupCodes},null,8,["backup-codes"])),e.confirmNewBackupCodes?Object(a.i)("",!0):(Object(a.D)(),Object(a.j)("button",{key:1,class:"btn button-default",onClick:t[0]||(t[0]=(...t)=>e.getBackupCodes&&e.getBackupCodes(...t))},Object(a.O)(e.$t("settings.mfa.generate_new_recovery_codes")),1)),e.confirmNewBackupCodes?(Object(a.D)(),Object(a.j)("div",Vl,[Object(a.m)(r,{disabled:e.backupCodes.inProgress,onConfirm:e.confirmBackupCodes,onCancel:e.cancelBackupCodes},{default:Object(a.V)(()=>[Object(a.k)("p",$l,Object(a.O)(e.$t("settings.mfa.warning_of_generate_new_codes")),1)]),_:1},8,["disabled","onConfirm","onCancel"])])):Object(a.i)("",!0)])):Object(a.i)("",!0)])),e.setupInProgress?(Object(a.D)(),Object(a.j)("div",Cl,[Object(a.k)("h3",null,Object(a.O)(e.$t("settings.mfa.setup_otp")),1),e.setupOTPInProgress?Object(a.i)("",!0):(Object(a.D)(),Object(a.h)(i,{key:0,"backup-codes":e.backupCodes},null,8,["backup-codes"])),e.canSetupOTP?(Object(a.D)(),Object(a.j)("button",{key:1,class:"btn button-default",onClick:t[1]||(t[1]=(...t)=>e.cancelSetup&&e.cancelSetup(...t))},Object(a.O)(e.$t("general.cancel")),1)):Object(a.i)("",!0),e.canSetupOTP?(Object(a.D)(),Object(a.j)("button",{key:2,class:"btn button-default",onClick:t[2]||(t[2]=(...t)=>e.setupOTP&&e.setupOTP(...t))},Object(a.O)(e.$t("settings.mfa.setup_otp")),1)):Object(a.i)("",!0),e.setupOTPInProgress?(Object(a.D)(),Object(a.j)(a.a,{key:3},[e.prepareOTP?(Object(a.D)(),Object(a.j)("i",Tl,Object(a.O)(e.$t("settings.mfa.wait_pre_setup_otp")),1)):Object(a.i)("",!0),e.confirmOTP?(Object(a.D)(),Object(a.j)("div",xl,[Object(a.k)("div",Ll,[Object(a.k)("div",Sl,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.mfa.scan.title")),1),Object(a.k)("p",null,Object(a.O)(e.$t("settings.mfa.scan.desc")),1),Object(a.m)(b,{value:e.otpSettings.provisioning_uri,options:{width:200}},null,8,["value"]),Object(a.k)("p",null,Object(a.O)(e.$t("settings.mfa.scan.secret_code"))+": "+Object(a.O)(e.otpSettings.key),1)]),Object(a.k)("div",Dl,[Object(a.k)("h4",null,Object(a.O)(e.$t("general.verify")),1),Object(a.k)("p",null,Object(a.O)(e.$t("settings.mfa.verify.desc")),1),Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[3]||(t[3]=t=>e.otpConfirmToken=t),type:"text"},null,512),[[a.S,e.otpConfirmToken]]),Object(a.k)("p",null,Object(a.O)(e.$t("settings.enter_current_password_to_confirm"))+":",1),Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[4]||(t[4]=t=>e.currentPassword=t),type:"password"},null,512),[[a.S,e.currentPassword]]),Object(a.k)("div",Pl,[Object(a.k)("button",{class:"btn button-default",onClick:t[5]||(t[5]=(...t)=>e.doConfirmOTP&&e.doConfirmOTP(...t))},Object(a.O)(e.$t("settings.mfa.confirm_and_enable")),1),Object(a.k)("button",{class:"btn button-default",onClick:t[6]||(t[6]=(...t)=>e.cancelSetup&&e.cancelSetup(...t))},Object(a.O)(e.$t("general.cancel")),1)]),e.error?(Object(a.D)(),Object(a.j)("div",Ul,Object(a.O)(e.error),1)):Object(a.i)("",!0)])])])):Object(a.i)("",!0)],64)):Object(a.i)("",!0)])):Object(a.i)("",!0)])])):Object(a.i)("",!0)}]]),na=l(38),sa={data:function(){return{newEmail:"",changeEmailError:!1,changeEmailPassword:"",changedEmail:!1,deletingAccount:!1,deleteAccountConfirmPasswordInput:"",deleteAccountError:!1,changePasswordInputs:["","",""],changedPassword:!1,changePasswordError:!1}},created:function(){this.$store.dispatch("fetchTokens")},components:{ProgressButton:we.a,Mfa:aa,Checkbox:E.a},computed:{user:function(){return this.$store.state.users.currentUser},pleromaBackend:function(){return this.$store.state.instance.pleromaBackend},oauthTokens:function(){var e=this;return this.$store.state.oauthTokens.tokens.map((function(t){return{id:t.id,appName:t.app_name,validUntil:new Date(t.valid_until).toLocaleDateString(na.a.internalToBrowserLocale(e.$i18n.locale))}}))}},methods:{confirmDelete:function(){this.deletingAccount=!0},deleteAccount:function(){var e=this;this.$store.state.api.backendInteractor.deleteAccount({password:this.deleteAccountConfirmPasswordInput}).then((function(t){"success"===t.status?(e.$store.dispatch("logout"),e.$router.push({name:"root"})):e.deleteAccountError=t.error}))},changePassword:function(){var e=this,t={password:this.changePasswordInputs[0],newPassword:this.changePasswordInputs[1],newPasswordConfirmation:this.changePasswordInputs[2]};this.$store.state.api.backendInteractor.changePassword(t).then((function(t){"success"===t.status?(e.changedPassword=!0,e.changePasswordError=!1,e.logout()):(e.changedPassword=!1,e.changePasswordError=t.error)}))},changeEmail:function(){var e=this,t={email:this.newEmail,password:this.changeEmailPassword};this.$store.state.api.backendInteractor.changeEmail(t).then((function(t){"success"===t.status?(e.changedEmail=!0,e.changeEmailError=!1):(e.changedEmail=!1,e.changeEmailError=t.error)}))},logout:function(){this.$store.dispatch("logout"),this.$router.replace("/")},revokeToken:function(e){window.confirm("".concat(this.$i18n.t("settings.revoke_token"),"?"))&&this.$store.dispatch("revokeToken",e)}}};var oa=D()(sa,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("mfa");return Object(a.D)(),Object(a.j)("div",{label:e.$t("settings.security_tab")},[Object(a.k)("div",nl,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.change_email")),1),Object(a.k)("div",null,[Object(a.k)("p",null,Object(a.O)(e.$t("settings.new_email")),1),Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[0]||(t[0]=t=>e.newEmail=t),type:"email",autocomplete:"email"},null,512),[[a.S,e.newEmail]])]),Object(a.k)("div",null,[Object(a.k)("p",null,Object(a.O)(e.$t("settings.current_password")),1),Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[1]||(t[1]=t=>e.changeEmailPassword=t),type:"password",autocomplete:"current-password"},null,512),[[a.S,e.changeEmailPassword]])]),Object(a.k)("button",{class:"btn button-default",onClick:t[2]||(t[2]=(...t)=>e.changeEmail&&e.changeEmail(...t))},Object(a.O)(e.$t("settings.save")),1),e.changedEmail?(Object(a.D)(),Object(a.j)("p",sl,Object(a.O)(e.$t("settings.changed_email")),1)):Object(a.i)("",!0),!1!==e.changeEmailError?(Object(a.D)(),Object(a.j)(a.a,{key:1},[Object(a.k)("p",null,Object(a.O)(e.$t("settings.change_email_error")),1),Object(a.k)("p",null,Object(a.O)(e.changeEmailError),1)],64)):Object(a.i)("",!0)]),Object(a.k)("div",ol,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.change_password")),1),Object(a.k)("div",null,[Object(a.k)("p",null,Object(a.O)(e.$t("settings.current_password")),1),Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[3]||(t[3]=t=>e.changePasswordInputs[0]=t),type:"password"},null,512),[[a.S,e.changePasswordInputs[0]]])]),Object(a.k)("div",null,[Object(a.k)("p",null,Object(a.O)(e.$t("settings.new_password")),1),Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[4]||(t[4]=t=>e.changePasswordInputs[1]=t),type:"password"},null,512),[[a.S,e.changePasswordInputs[1]]])]),Object(a.k)("div",null,[Object(a.k)("p",null,Object(a.O)(e.$t("settings.confirm_new_password")),1),Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[5]||(t[5]=t=>e.changePasswordInputs[2]=t),type:"password"},null,512),[[a.S,e.changePasswordInputs[2]]])]),Object(a.k)("button",{class:"btn button-default",onClick:t[6]||(t[6]=(...t)=>e.changePassword&&e.changePassword(...t))},Object(a.O)(e.$t("settings.save")),1),e.changedPassword?(Object(a.D)(),Object(a.j)("p",cl,Object(a.O)(e.$t("settings.changed_password")),1)):!1!==e.changePasswordError?(Object(a.D)(),Object(a.j)("p",il,Object(a.O)(e.$t("settings.change_password_error")),1)):Object(a.i)("",!0),e.changePasswordError?(Object(a.D)(),Object(a.j)("p",rl,Object(a.O)(e.changePasswordError),1)):Object(a.i)("",!0)]),Object(a.k)("div",bl,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.oauth_tokens")),1),Object(a.k)("table",ul,[Object(a.k)("thead",null,[Object(a.k)("tr",null,[Object(a.k)("th",null,Object(a.O)(e.$t("settings.app_name")),1),Object(a.k)("th",null,Object(a.O)(e.$t("settings.valid_until")),1),dl])]),Object(a.k)("tbody",null,[(Object(a.D)(!0),Object(a.j)(a.a,null,Object(a.H)(e.oauthTokens,t=>(Object(a.D)(),Object(a.j)("tr",{key:t.id},[Object(a.k)("td",null,Object(a.O)(t.appName),1),Object(a.k)("td",null,Object(a.O)(t.validUntil),1),Object(a.k)("td",Ol,[Object(a.k)("button",{class:"btn button-default",onClick:l=>e.revokeToken(t.id)},Object(a.O)(e.$t("settings.revoke_token")),9,pl)])]))),128))])])]),Object(a.m)(c),Object(a.k)("div",jl,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.delete_account")),1),e.deletingAccount?Object(a.i)("",!0):(Object(a.D)(),Object(a.j)("p",ml,Object(a.O)(e.$t("settings.delete_account_description")),1)),e.deletingAccount?(Object(a.D)(),Object(a.j)("div",hl,[Object(a.k)("p",null,Object(a.O)(e.$t("settings.delete_account_instructions")),1),Object(a.k)("p",null,Object(a.O)(e.$t("login.password")),1),Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[7]||(t[7]=t=>e.deleteAccountConfirmPasswordInput=t),type:"password"},null,512),[[a.S,e.deleteAccountConfirmPasswordInput]]),Object(a.k)("button",{class:"btn button-default",onClick:t[8]||(t[8]=(...t)=>e.deleteAccount&&e.deleteAccount(...t))},Object(a.O)(e.$t("settings.delete_account")),1)])):Object(a.i)("",!0),!1!==e.deleteAccountError?(Object(a.D)(),Object(a.j)("p",fl,Object(a.O)(e.$t("settings.delete_account_error")),1)):Object(a.i)("",!0),e.deleteAccountError?(Object(a.D)(),Object(a.j)("p",gl,Object(a.O)(e.deleteAccountError),1)):Object(a.i)("",!0),e.deletingAccount?Object(a.i)("",!0):(Object(a.D)(),Object(a.j)("button",{key:4,class:"btn button-default",onClick:t[9]||(t[9]=(...t)=>e.confirmDelete&&e.confirmDelete(...t))},Object(a.O)(e.$t("settings.save")),1))])],8,al)}]]);const ca={class:"profile-tab"},ia={class:"setting-item"},ra={key:0},ba={key:1},ua=["onUpdate:modelValue","placeholder"],da=["onUpdate:modelValue","placeholder"],Oa=["onClick"],pa=["disabled"],ja={class:"setting-item"},ma={class:"visibility-notice"},ha={class:"current-avatar-container"},fa=["src"],ga=["title"],ka={class:"setting-item"},va={class:"banner-background-preview"},ya=["src"],wa=["title"],_a=["src"],Va={class:"setting-item"},$a={class:"banner-background-preview"},Ca=["src"],Ta=["title"],xa=["src"],La={class:"setting-item"},Sa={class:"setting-list"};var Da=l(75),Pa=l.n(Da),Ua=l(122),Ia=l.n(Ua);const Ba={class:"image-cropper"},Fa={key:0},Ea={class:"image-cropper-image-container"},Aa=["src"],Ma={class:"image-cropper-buttons-wrapper"},Ra=["disabled","textContent"],Wa=["disabled","textContent"],Ja=["disabled","textContent"],Na=["accept"];var qa=l(28),Ga=l.n(qa),Ha=l(696),za=l.n(Ha);l(697);T.c.add(x.r);var Ka={props:{trigger:{type:[String,window.Element],required:!0},submitHandler:{type:Function,required:!0},cropperOptions:{type:Object,default:function(){return{aspectRatio:1,autoCropArea:1,viewMode:1,movable:!1,zoomable:!1,guides:!1}}},mimes:{type:String,default:"image/png, image/gif, image/jpeg, image/bmp, image/x-icon"},saveButtonLabel:{type:String},saveWithoutCroppingButtonlabel:{type:String},cancelButtonLabel:{type:String}},data:function(){return{cropper:void 0,dataUrl:void 0,filename:void 0,submitting:!1}},computed:{saveText:function(){return this.saveButtonLabel||this.$t("image_cropper.save")},saveWithoutCroppingText:function(){return this.saveWithoutCroppingButtonlabel||this.$t("image_cropper.save_without_cropping")},cancelText:function(){return this.cancelButtonLabel||this.$t("image_cropper.cancel")}},methods:{destroy:function(){this.cropper&&this.cropper.destroy(),this.$refs.input.value="",this.dataUrl=void 0,this.$emit("close")},submit:function(){var e=this,t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.submitting=!0,this.submitHandler(t&&this.cropper,this.file).then((function(){return e.destroy()})).finally((function(){e.submitting=!1}))},pickImage:function(){this.$refs.input.click()},createCropper:function(){this.cropper=new za.a(this.$refs.img,this.cropperOptions)},getTriggerDOM:function(){return"object"===Ga()(this.trigger)?this.trigger:document.querySelector(this.trigger)},readFile:function(){var e=this,t=this.$refs.input;if(null!=t.files&&null!=t.files[0]){this.file=t.files[0];var l=new window.FileReader;l.onload=function(t){e.dataUrl=t.target.result,e.$emit("open")},l.readAsDataURL(this.file),this.$emit("changed",this.file,l)}}},mounted:function(){var e=this.getTriggerDOM();e?e.addEventListener("click",this.pickImage):this.$emit("error","No image make trigger found.","user"),this.$refs.input.addEventListener("change",this.readFile)},beforeUnmount:function(){var e=this.getTriggerDOM();e&&e.removeEventListener("click",this.pickImage),this.$refs.input.removeEventListener("change",this.readFile)}};l(698);var Ya=D()(Ka,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("FAIcon");return Object(a.D)(),Object(a.j)("div",Ba,[e.dataUrl?(Object(a.D)(),Object(a.j)("div",Fa,[Object(a.k)("div",Ea,[Object(a.k)("img",{ref:"img",src:e.dataUrl,alt:"",onLoad:t[0]||(t[0]=Object(a.Y)((...t)=>e.createCropper&&e.createCropper(...t),["stop"]))},null,40,Aa)]),Object(a.k)("div",Ma,[Object(a.k)("button",{class:"button-default btn",type:"button",disabled:e.submitting,onClick:t[1]||(t[1]=t=>e.submit()),textContent:Object(a.O)(e.saveText)},null,8,Ra),Object(a.k)("button",{class:"button-default btn",type:"button",disabled:e.submitting,onClick:t[2]||(t[2]=(...t)=>e.destroy&&e.destroy(...t)),textContent:Object(a.O)(e.cancelText)},null,8,Wa),Object(a.k)("button",{class:"button-default btn",type:"button",disabled:e.submitting,onClick:t[3]||(t[3]=t=>e.submit(!1)),textContent:Object(a.O)(e.saveWithoutCroppingText)},null,8,Ja),e.submitting?(Object(a.D)(),Object(a.h)(c,{key:0,spin:"",icon:"circle-notch"})):Object(a.i)("",!0)])])):Object(a.i)("",!0),Object(a.k)("input",{ref:"input",type:"file",class:"image-cropper-img-input",accept:e.mimes},null,8,Na)])}]]),Za=l(175),Qa=l(96),Xa=l(310),en=l(167),tn=l(174);function ln(e,t){var l=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),l.push.apply(l,a)}return l}function an(e){for(var t=1;t<arguments.length;t++){var l=null!=arguments[t]?arguments[t]:{};t%2?ln(Object(l),!0).forEach((function(t){y()(e,t,l[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(l)):ln(Object(l)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(l,t))}))}return e}T.c.add(x.rb,x.V,x.r);var nn={data:function(){return{newName:this.$store.state.users.currentUser.name_unescaped,newBio:Pa()(this.$store.state.users.currentUser.description),newLocked:this.$store.state.users.currentUser.locked,newFields:this.$store.state.users.currentUser.fields.map((function(e){return{name:e.name,value:e.value}})),showRole:this.$store.state.users.currentUser.show_role,role:this.$store.state.users.currentUser.role,bot:this.$store.state.users.currentUser.bot,pickAvatarBtnVisible:!0,bannerUploading:!1,backgroundUploading:!1,banner:null,bannerPreview:null,background:null,backgroundPreview:null,emailLanguage:this.$store.state.users.currentUser.language||""}},components:{ScopeSelector:Za.a,ImageCropper:Ya,EmojiInput:Xa.a,Autosuggest:re,ProgressButton:we.a,Checkbox:E.a,BooleanSetting:vt,InterfaceLanguageSwitcher:tn.a},computed:an(an({user:function(){return this.$store.state.users.currentUser}},Tt()),{},{emojiUserSuggestor:function(){return Object(en.a)({emoji:[].concat(Ue()(this.$store.state.instance.emoji),Ue()(this.$store.state.instance.customEmoji)),store:this.$store})},emojiSuggestor:function(){return Object(en.a)({emoji:[].concat(Ue()(this.$store.state.instance.emoji),Ue()(this.$store.state.instance.customEmoji))})},userSuggestor:function(){return Object(en.a)({store:this.$store})},fieldsLimits:function(){return this.$store.state.instance.fieldsLimits},maxFields:function(){return this.fieldsLimits?this.fieldsLimits.maxFields:0},defaultAvatar:function(){return this.$store.state.instance.server+this.$store.state.instance.defaultAvatar},defaultBanner:function(){return this.$store.state.instance.server+this.$store.state.instance.defaultBanner},isDefaultAvatar:function(){var e=this.$store.state.instance.defaultAvatar;return!this.$store.state.users.currentUser.profile_image_url||this.$store.state.users.currentUser.profile_image_url.includes(e)},isDefaultBanner:function(){var e=this.$store.state.instance.defaultBanner;return!this.$store.state.users.currentUser.cover_photo||this.$store.state.users.currentUser.cover_photo.includes(e)},isDefaultBackground:function(){return!this.$store.state.users.currentUser.background_image},avatarImgSrc:function(){var e=this.$store.state.users.currentUser.profile_image_url_original;return e||this.defaultAvatar},bannerImgSrc:function(){var e=this.$store.state.users.currentUser.cover_photo;return e||this.defaultBanner}}),methods:{updateProfile:function(){var e=this,t={note:this.newBio,locked:this.newLocked,display_name:this.newName,fields_attributes:this.newFields.filter((function(e){return null!=e})),bot:this.bot,show_role:this.showRole};this.emailLanguage&&(t.language=na.a.internalToBackendLocale(this.emailLanguage)),this.$store.state.api.backendInteractor.updateProfile({params:t}).then((function(t){e.newFields.splice(t.fields.length),Ia()(e.newFields,t.fields),e.$store.commit("addNewUsers",[t]),e.$store.commit("setCurrentUser",t)}))},changeVis:function(e){this.newDefaultScope=e},addField:function(){return this.newFields.length<this.maxFields&&(this.newFields.push({name:"",value:""}),!0)},deleteField:function(e,t){this.$delete(this.newFields,e)},uploadFile:function(e,t){var l=this,a=t.target.files[0];if(a)if(a.size>this.$store.state.instance[e+"limit"]){var n=Qa.a.fileSizeFormat(a.size),s=Qa.a.fileSizeFormat(this.$store.state.instance[e+"limit"]);this.$store.dispatch("pushGlobalNotice",{messageKey:"upload.error.message",messageArgs:[this.$t("upload.error.file_too_big",{filesize:n.num,filesizeunit:n.unit,allowedsize:s.num,allowedsizeunit:s.unit})],level:"error"})}else{var o=new FileReader;o.onload=function(t){var n=t.target.result;l[e+"Preview"]=n,l[e]=a},o.readAsDataURL(a)}},resetAvatar:function(){window.confirm(this.$t("settings.reset_avatar_confirm"))&&this.submitAvatar(void 0,"")},resetBanner:function(){window.confirm(this.$t("settings.reset_banner_confirm"))&&this.submitBanner("")},resetBackground:function(){window.confirm(this.$t("settings.reset_background_confirm"))&&this.submitBackground("")},submitAvatar:function(e,t){var l=this;return new Promise((function(a,n){function s(e,t){l.$store.state.api.backendInteractor.updateProfileImages({avatar:e,avatarName:t}).then((function(e){l.$store.commit("addNewUsers",[e]),l.$store.commit("setCurrentUser",e),a()})).catch((function(e){l.displayUploadError(e),n(e)}))}e?e.getCroppedCanvas().toBlob((function(e){return s(e,t.name)}),t.type):s(t,t.name)}))},submitBanner:function(e){var t=this;(this.bannerPreview||""===e)&&(this.bannerUploading=!0,this.$store.state.api.backendInteractor.updateProfileImages({banner:e}).then((function(e){t.$store.commit("addNewUsers",[e]),t.$store.commit("setCurrentUser",e),t.bannerPreview=null})).catch(this.displayUploadError).finally((function(){t.bannerUploading=!1})))},submitBackground:function(e){var t=this;(this.backgroundPreview||""===e)&&(this.backgroundUploading=!0,this.$store.state.api.backendInteractor.updateProfileImages({background:e}).then((function(e){t.$store.commit("addNewUsers",[e]),t.$store.commit("setCurrentUser",e),t.backgroundPreview=null})).catch(this.displayUploadError).finally((function(){t.backgroundUploading=!1})))},displayUploadError:function(e){this.$store.dispatch("pushGlobalNotice",{messageKey:"upload.error.message",messageArgs:[e.message],level:"error"})}}};l(699);var sn=D()(nn,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("EmojiInput"),i=Object(a.J)("Checkbox"),r=Object(a.J)("FAIcon"),b=Object(a.J)("interface-language-switcher"),u=Object(a.J)("image-cropper"),d=Object(a.J)("BooleanSetting");return Object(a.D)(),Object(a.j)("div",ca,[Object(a.k)("div",ia,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.name_bio")),1),Object(a.k)("p",null,Object(a.O)(e.$t("settings.name")),1),Object(a.m)(c,{modelValue:e.newName,"onUpdate:modelValue":t[1]||(t[1]=t=>e.newName=t),"enable-emoji-picker":"",suggest:e.emojiSuggestor},{default:Object(a.V)(()=>[Object(a.W)(Object(a.k)("input",{id:"username","onUpdate:modelValue":t[0]||(t[0]=t=>e.newName=t),class:"name-changer"},null,512),[[a.S,e.newName]])]),_:1},8,["modelValue","suggest"]),Object(a.k)("p",null,Object(a.O)(e.$t("settings.bio")),1),Object(a.m)(c,{modelValue:e.newBio,"onUpdate:modelValue":t[3]||(t[3]=t=>e.newBio=t),"enable-emoji-picker":"",suggest:e.emojiUserSuggestor},{default:Object(a.V)(()=>[Object(a.W)(Object(a.k)("textarea",{"onUpdate:modelValue":t[2]||(t[2]=t=>e.newBio=t),class:"bio resize-height"},null,512),[[a.S,e.newBio]])]),_:1},8,["modelValue","suggest"]),"admin"===e.role||"moderator"===e.role?(Object(a.D)(),Object(a.j)("p",ra,[Object(a.m)(i,{modelValue:e.showRole,"onUpdate:modelValue":t[4]||(t[4]=t=>e.showRole=t)},{default:Object(a.V)(()=>["admin"===e.role?(Object(a.D)(),Object(a.j)(a.a,{key:0},[Object(a.l)(Object(a.O)(e.$t("settings.show_admin_badge")),1)],64)):Object(a.i)("",!0),"moderator"===e.role?(Object(a.D)(),Object(a.j)(a.a,{key:1},[Object(a.l)(Object(a.O)(e.$t("settings.show_moderator_badge")),1)],64)):Object(a.i)("",!0)]),_:1},8,["modelValue"])])):Object(a.i)("",!0),e.maxFields>0?(Object(a.D)(),Object(a.j)("div",ba,[Object(a.k)("p",null,Object(a.O)(e.$t("settings.profile_fields.label")),1),(Object(a.D)(!0),Object(a.j)(a.a,null,Object(a.H)(e.newFields,(t,l)=>(Object(a.D)(),Object(a.j)("div",{key:l,class:"profile-fields"},[Object(a.m)(c,{modelValue:e.newFields[l].name,"onUpdate:modelValue":t=>e.newFields[l].name=t,"enable-emoji-picker":"","hide-emoji-button":"",suggest:e.userSuggestor},{default:Object(a.V)(()=>[Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t=>e.newFields[l].name=t,placeholder:e.$t("settings.profile_fields.name")},null,8,ua),[[a.S,e.newFields[l].name]])]),_:2},1032,["modelValue","onUpdate:modelValue","suggest"]),Object(a.m)(c,{modelValue:e.newFields[l].value,"onUpdate:modelValue":t=>e.newFields[l].value=t,"enable-emoji-picker":"","hide-emoji-button":"",suggest:e.userSuggestor},{default:Object(a.V)(()=>[Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t=>e.newFields[l].value=t,placeholder:e.$t("settings.profile_fields.value")},null,8,da),[[a.S,e.newFields[l].value]])]),_:2},1032,["modelValue","onUpdate:modelValue","suggest"]),Object(a.k)("button",{class:"delete-field button-unstyled -hover-highlight",onClick:t=>e.deleteField(l)},[e.newFields.length>1?(Object(a.D)(),Object(a.h)(r,{key:0,icon:"times"})):Object(a.i)("",!0)],8,Oa)]))),128)),e.newFields.length<e.maxFields?(Object(a.D)(),Object(a.j)("button",{key:0,class:"add-field faint button-unstyled -hover-highlight",onClick:t[5]||(t[5]=(...t)=>e.addField&&e.addField(...t))},[Object(a.m)(r,{icon:"plus"}),Object(a.l)(" "+Object(a.O)(e.$t("settings.profile_fields.add_field")),1)])):Object(a.i)("",!0)])):Object(a.i)("",!0),Object(a.k)("p",null,[Object(a.m)(i,{modelValue:e.bot,"onUpdate:modelValue":t[6]||(t[6]=t=>e.bot=t)},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.bot")),1)]),_:1},8,["modelValue"])]),Object(a.k)("p",null,[Object(a.m)(b,{"prompt-text":e.$t("settings.email_language"),language:e.emailLanguage,"set-language":t=>e.emailLanguage=t},null,8,["prompt-text","language","set-language"])]),Object(a.k)("button",{disabled:e.newName&&0===e.newName.length,class:"btn button-default",onClick:t[7]||(t[7]=(...t)=>e.updateProfile&&e.updateProfile(...t))},Object(a.O)(e.$t("settings.save")),9,pa)]),Object(a.k)("div",ja,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.avatar")),1),Object(a.k)("p",ma,Object(a.O)(e.$t("settings.avatar_size_instruction")),1),Object(a.k)("div",ha,[Object(a.k)("img",{src:e.user.profile_image_url_original,class:"current-avatar"},null,8,fa),!e.isDefaultAvatar&&e.pickAvatarBtnVisible?(Object(a.D)(),Object(a.j)("button",{key:0,title:e.$t("settings.reset_avatar"),onClick:t[8]||(t[8]=(...t)=>e.resetAvatar&&e.resetAvatar(...t)),class:"button-unstyled reset-button"},[Object(a.m)(r,{icon:"times",type:"button"})],8,ga)):Object(a.i)("",!0)]),Object(a.k)("p",null,Object(a.O)(e.$t("settings.set_new_avatar")),1),Object(a.W)(Object(a.k)("button",{id:"pick-avatar",class:"button-default btn",type:"button"},Object(a.O)(e.$t("settings.upload_a_photo")),513),[[a.T,e.pickAvatarBtnVisible]]),Object(a.m)(u,{trigger:"#pick-avatar","submit-handler":e.submitAvatar,onOpen:t[9]||(t[9]=t=>e.pickAvatarBtnVisible=!1),onClose:t[10]||(t[10]=t=>e.pickAvatarBtnVisible=!0)},null,8,["submit-handler"])]),Object(a.k)("div",ka,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.profile_banner")),1),Object(a.k)("div",va,[Object(a.k)("img",{src:e.user.cover_photo},null,8,ya),e.isDefaultBanner?Object(a.i)("",!0):(Object(a.D)(),Object(a.j)("button",{key:0,class:"button-unstyled reset-button",title:e.$t("settings.reset_profile_banner"),onClick:t[11]||(t[11]=(...t)=>e.resetBanner&&e.resetBanner(...t))},[Object(a.m)(r,{icon:"times",type:"button"})],8,wa))]),Object(a.k)("p",null,Object(a.O)(e.$t("settings.set_new_profile_banner")),1),e.bannerPreview?(Object(a.D)(),Object(a.j)("img",{key:0,class:"banner-background-preview",src:e.bannerPreview},null,8,_a)):Object(a.i)("",!0),Object(a.k)("div",null,[Object(a.k)("input",{type:"file",onChange:t[12]||(t[12]=t=>e.uploadFile("banner",t))},null,32)]),e.bannerUploading?(Object(a.D)(),Object(a.h)(r,{key:1,class:"uploading",spin:"",icon:"circle-notch"})):e.bannerPreview?(Object(a.D)(),Object(a.j)("button",{key:2,class:"btn button-default",onClick:t[13]||(t[13]=t=>e.submitBanner(e.banner))},Object(a.O)(e.$t("settings.save")),1)):Object(a.i)("",!0)]),Object(a.k)("div",Va,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.profile_background")),1),Object(a.k)("div",$a,[Object(a.k)("img",{src:e.user.background_image},null,8,Ca),e.isDefaultBackground?Object(a.i)("",!0):(Object(a.D)(),Object(a.j)("button",{key:0,class:"button-unstyled reset-button",title:e.$t("settings.reset_profile_background"),onClick:t[14]||(t[14]=(...t)=>e.resetBackground&&e.resetBackground(...t))},[Object(a.m)(r,{icon:"times",type:"button"})],8,Ta))]),Object(a.k)("p",null,Object(a.O)(e.$t("settings.set_new_profile_background")),1),e.backgroundPreview?(Object(a.D)(),Object(a.j)("img",{key:0,class:"banner-background-preview",src:e.backgroundPreview},null,8,xa)):Object(a.i)("",!0),Object(a.k)("div",null,[Object(a.k)("input",{type:"file",onChange:t[15]||(t[15]=t=>e.uploadFile("background",t))},null,32)]),e.backgroundUploading?(Object(a.D)(),Object(a.h)(r,{key:1,class:"uploading",spin:"",icon:"circle-notch"})):e.backgroundPreview?(Object(a.D)(),Object(a.j)("button",{key:2,class:"btn button-default",onClick:t[16]||(t[16]=t=>e.submitBackground(e.background))},Object(a.O)(e.$t("settings.save")),1)):Object(a.i)("",!0)]),Object(a.k)("div",La,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.account_privacy")),1),Object(a.k)("ul",Sa,[Object(a.k)("li",null,[Object(a.m)(d,{path:"serverSide_locked"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.lock_account_description")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(d,{path:"serverSide_discoverable"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.discoverable")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(d,{path:"serverSide_allowFollowingMove"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.allow_following_move")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(d,{path:"serverSide_hideFavorites"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_favorites_description")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(d,{path:"serverSide_hideFollowers"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_followers_description")),1)]),_:1}),Object(a.k)("ul",{class:Object(a.w)(["setting-list suboptions",[{disabled:!e.serverSide_hideFollowers}]])},[Object(a.k)("li",null,[Object(a.m)(d,{path:"serverSide_hideFollowersCount",disabled:!e.serverSide_hideFollowers},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_followers_count_description")),1)]),_:1},8,["disabled"])])],2)]),Object(a.k)("li",null,[Object(a.m)(d,{path:"serverSide_hideFollows"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_follows_description")),1)]),_:1}),Object(a.k)("ul",{class:Object(a.w)(["setting-list suboptions",[{disabled:!e.serverSide_hideFollows}]])},[Object(a.k)("li",null,[Object(a.m)(d,{path:"serverSide_hideFollowsCount",disabled:!e.serverSide_hideFollows},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_follows_count_description")),1)]),_:1},8,["disabled"])])],2)])])])])}]]);const on=["label"],cn={class:"setting-item"},rn={class:"setting-list"},bn={key:0},un={key:1},dn={key:2},On={class:"setting-item"},pn={class:"setting-list"},jn={key:0,class:"setting-list suboptions"},mn={class:"setting-list suboptions"},hn={key:0,class:"unavailable"},fn={class:"setting-list suboptions"},gn={key:0},kn={key:1},vn={key:2},yn={key:3},wn={key:0,class:"setting-item"},_n={class:"setting-list"},Vn={for:"default-vis"},$n={key:0};function Cn(e,t){var l=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),l.push.apply(l,a)}return l}T.c.add(x.I);var Tn={data:function(){var e=this;return{subjectLineOptions:["email","noop","masto"].map((function(t){return{key:t,value:t,label:e.$t("settings.subject_line_".concat("masto"===t?"mastodon":t))}})),conversationDisplayOptions:["tree","linear"].map((function(t){return{key:t,value:t,label:e.$t("settings.conversation_display_".concat(t))}})),conversationOtherRepliesButtonOptions:["below","inside"].map((function(t){return{key:t,value:t,label:e.$t("settings.conversation_other_replies_button_".concat(t))}})),mentionLinkDisplayOptions:["short","full_for_remote","full"].map((function(t){return{key:t,value:t,label:e.$t("settings.mention_link_display_".concat(t))}})),thirdColumnModeOptions:["none","notifications","postform"].map((function(t){return{key:t,value:t,label:e.$t("settings.third_column_mode_".concat(t))}})),loopSilentAvailable:Object.getOwnPropertyDescriptor(HTMLVideoElement.prototype,"mozHasAudio")||Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype,"webkitAudioDecodedByteCount")||Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype,"audioTracks")}},components:{BooleanSetting:vt,ChoiceSetting:Gt,IntegerSetting:Qt,InterfaceLanguageSwitcher:tn.a,ScopeSelector:Za.a,ServerSideIndicator:gt},computed:function(e){for(var t=1;t<arguments.length;t++){var l=null!=arguments[t]?arguments[t]:{};t%2?Cn(Object(l),!0).forEach((function(t){y()(e,t,l[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(l)):Cn(Object(l)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(l,t))}))}return e}({postFormats:function(){return this.$store.state.instance.postFormats||[]},postContentOptions:function(){var e=this;return this.postFormats.map((function(t){return{key:t,value:t,label:e.$t('post_status.content_type["'.concat(t,'"]'))}}))},instanceSpecificPanelPresent:function(){return this.$store.state.instance.showInstanceSpecificPanel},instanceWallpaperUsed:function(){return this.$store.state.instance.background&&!this.$store.state.users.currentUser.background_image},instanceShoutboxPresent:function(){return this.$store.state.instance.shoutAvailable},language:{get:function(){return this.$store.getters.mergedConfig.interfaceLanguage},set:function(e){this.$store.dispatch("setOption",{name:"interfaceLanguage",value:e})}}},Tt()),methods:{changeDefaultScope:function(e){this.$store.dispatch("setServerSideOption",{name:"defaultScope",value:e})}}};var xn=D()(Tn,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("interface-language-switcher"),i=Object(a.J)("BooleanSetting"),r=Object(a.J)("ChoiceSetting"),b=Object(a.J)("IntegerSetting"),u=Object(a.J)("FAIcon"),d=Object(a.J)("ServerSideIndicator"),O=Object(a.J)("ScopeSelector");return Object(a.D)(),Object(a.j)("div",{label:e.$t("settings.general")},[Object(a.k)("div",cn,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.interface")),1),Object(a.k)("ul",rn,[Object(a.k)("li",null,[Object(a.m)(c,{"prompt-text":e.$t("settings.interfaceLanguage"),language:e.language,"set-language":t=>e.language=t},null,8,["prompt-text","language","set-language"])]),e.instanceSpecificPanelPresent?(Object(a.D)(),Object(a.j)("li",bn,[Object(a.m)(i,{path:"hideISP"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_isp")),1)]),_:1})])):Object(a.i)("",!0),Object(a.k)("li",null,[Object(a.m)(i,{path:"sidebarRight"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.right_sidebar")),1)]),_:1})]),e.instanceWallpaperUsed?(Object(a.D)(),Object(a.j)("li",un,[Object(a.m)(i,{path:"hideInstanceWallpaper"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_wallpaper")),1)]),_:1})])):Object(a.i)("",!0),Object(a.k)("li",null,[Object(a.m)(i,{path:"stopGifs"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.stop_gifs")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"streaming"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.streaming")),1)]),_:1}),Object(a.k)("ul",{class:Object(a.w)(["setting-list suboptions",[{disabled:!e.streaming}]])},[Object(a.k)("li",null,[Object(a.m)(i,{path:"pauseOnUnfocused",disabled:!e.streaming},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.pause_on_unfocused")),1)]),_:1},8,["disabled"])])],2)]),Object(a.k)("li",null,[Object(a.m)(i,{path:"useStreamingApi",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.useStreamingApi")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"virtualScrolling",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.virtual_scrolling")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"disableStickyHeaders"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.disable_sticky_headers")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"showScrollbars"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.show_scrollbars")),1)]),_:1})]),Object(a.k)("li",null,[e.user?(Object(a.D)(),Object(a.h)(r,{key:0,id:"thirdColumnMode",path:"thirdColumnMode",options:e.thirdColumnModeOptions},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.third_column_mode")),1)]),_:1},8,["options"])):Object(a.i)("",!0)]),Object(a.k)("li",null,[Object(a.m)(i,{path:"minimalScopesMode"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.minimal_scopes_mode")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"sensitiveByDefault"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.sensitive_by_default")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"sensitiveIfSubject"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.sensitive_if_subject")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"renderMisskeyMarkdown"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.render_mfm")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"alwaysShowNewPostButton",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.always_show_post_button")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"autohideFloatingPostButton",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.autohide_floating_post_button")),1)]),_:1})]),e.instanceShoutboxPresent?(Object(a.D)(),Object(a.j)("li",dn,[Object(a.m)(i,{path:"hideShoutbox",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.hide_shoutbox")),1)]),_:1})])):Object(a.i)("",!0)])]),Object(a.k)("div",On,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.post_look_feel")),1),Object(a.k)("ul",pn,[Object(a.k)("li",null,[Object(a.m)(r,{id:"conversationDisplay",path:"conversationDisplay",options:e.conversationDisplayOptions},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.conversation_display")),1)]),_:1},8,["options"])]),"linear"!==e.conversationDisplay?(Object(a.D)(),Object(a.j)("ul",jn,[Object(a.k)("li",null,[Object(a.m)(i,{path:"conversationTreeAdvanced"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.tree_advanced")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"conversationTreeFadeAncestors",expert:1},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.tree_fade_ancestors")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(b,{path:"maxDepthInThread",min:3,expert:1},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.max_depth_in_thread")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(r,{id:"conversationOtherRepliesButton",path:"conversationOtherRepliesButton",options:e.conversationOtherRepliesButtonOptions,expert:1},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.conversation_other_replies_button")),1)]),_:1},8,["options"])])])):Object(a.i)("",!0),Object(a.k)("li",null,[Object(a.m)(i,{path:"collapseMessageWithSubject"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.collapse_subject")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"emojiReactionsOnTimeline",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.emoji_reactions_on_timeline")),1)]),_:1})]),Object(a.k)("li",null,[e.user?(Object(a.D)(),Object(a.h)(i,{key:0,path:"serverSide_stripRichContent",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.no_rich_text_description")),1)]),_:1})):Object(a.i)("",!0)]),Object(a.k)("h3",null,Object(a.O)(e.$t("settings.attachments")),1),Object(a.k)("li",null,[Object(a.m)(i,{path:"useContainFit",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.use_contain_fit")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"hideNsfw"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.nsfw_clickthrough")),1)]),_:1})]),Object(a.k)("ul",mn,[Object(a.k)("li",null,[Object(a.m)(i,{path:"preloadImage",expert:"1",disabled:!e.hideNsfw},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.preload_images")),1)]),_:1},8,["disabled"])]),Object(a.k)("li",null,[Object(a.m)(i,{path:"useOneClickNsfw",expert:"1",disabled:!e.hideNsfw},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.use_one_click_nsfw")),1)]),_:1},8,["disabled"])])]),Object(a.k)("li",null,[Object(a.m)(i,{path:"loopVideo",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.loop_video")),1)]),_:1}),Object(a.k)("ul",{class:Object(a.w)(["setting-list suboptions",[{disabled:!e.streaming}]])},[Object(a.k)("li",null,[Object(a.m)(i,{path:"loopVideoSilentOnly",expert:"1",disabled:!e.loopVideo||!e.loopSilentAvailable},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.loop_video_silent_only")),1)]),_:1},8,["disabled"]),e.loopSilentAvailable?Object(a.i)("",!0):(Object(a.D)(),Object(a.j)("div",hn,[Object(a.m)(u,{icon:"globe"}),Object(a.l)("! "+Object(a.O)(e.$t("settings.limited_availability")),1)]))])],2)]),Object(a.k)("li",null,[Object(a.m)(i,{path:"playVideosInModal",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.play_videos_in_modal")),1)]),_:1})]),Object(a.k)("h3",null,Object(a.O)(e.$t("settings.mention_links")),1),Object(a.k)("li",null,[Object(a.m)(r,{id:"mentionLinkDisplay",path:"mentionLinkDisplay",options:e.mentionLinkDisplayOptions},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.mention_link_display")),1)]),_:1},8,["options"])]),Object(a.k)("ul",fn,["short"===e.mentionLinkDisplay?(Object(a.D)(),Object(a.j)("li",gn,[Object(a.m)(i,{path:"mentionLinkShowTooltip",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.mention_link_show_tooltip")),1)]),_:1})])):Object(a.i)("",!0)]),Object(a.k)("li",null,[Object(a.m)(i,{path:"useAtIcon",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.use_at_icon")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"mentionLinkShowAvatar"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.mention_link_show_avatar")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"mentionLinkFadeDomain",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.mention_link_fade_domain")),1)]),_:1})]),e.user?(Object(a.D)(),Object(a.j)("li",kn,[Object(a.m)(i,{path:"mentionLinkBoldenYou",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.mention_link_bolden_you")),1)]),_:1})])):Object(a.i)("",!0),e.expertLevel>0?(Object(a.D)(),Object(a.j)("h3",vn,Object(a.O)(e.$t("settings.fun")),1)):Object(a.i)("",!0),Object(a.k)("li",null,[Object(a.m)(i,{path:"greentext",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.greentext")),1)]),_:1})]),e.user?(Object(a.D)(),Object(a.j)("li",yn,[Object(a.m)(i,{path:"mentionLinkShowYous",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.show_yous")),1)]),_:1})])):Object(a.i)("",!0)])]),e.user?(Object(a.D)(),Object(a.j)("div",wn,[Object(a.k)("h2",null,Object(a.O)(e.$t("settings.composing")),1),Object(a.k)("ul",_n,[Object(a.k)("li",null,[Object(a.k)("label",Vn,[Object(a.l)(Object(a.O)(e.$t("settings.default_vis"))+" ",1),Object(a.m)(d,{"server-side":!0}),Object(a.m)(O,{class:"scope-selector","show-all":!0,"user-default":e.serverSide_defaultScope,"initial-scope":e.serverSide_defaultScope,"on-scope-change":e.changeDefaultScope},null,8,["user-default","initial-scope","on-scope-change"])])]),Object(a.k)("li",null,[Object(a.m)(i,{path:"sensitiveByDefault"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.sensitive_by_default")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"scopeCopy",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.scope_copy")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"alwaysShowSubjectInput",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.subject_input_always_show")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(r,{id:"subjectLineBehavior",path:"subjectLineBehavior",options:e.subjectLineOptions,expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.subject_line_behavior")),1)]),_:1},8,["options"])]),e.postFormats.length>0?(Object(a.D)(),Object(a.j)("li",$n,[Object(a.m)(r,{id:"postContentType",path:"postContentType",options:e.postContentOptions},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.post_status_content_type")),1)]),_:1},8,["options"])])):Object(a.i)("",!0),Object(a.k)("li",null,[Object(a.m)(i,{path:"minimalScopesMode",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.minimal_scopes_mode")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"alwaysShowNewPostButton",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.always_show_post_button")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"autohideFloatingPostButton",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.autohide_floating_post_button")),1)]),_:1})]),Object(a.k)("li",null,[Object(a.m)(i,{path:"padEmoji",expert:"1"},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.pad_emoji")),1)]),_:1})])])])):Object(a.i)("",!0)],8,on)}]]);const Ln=["label"],Sn={class:"setting-item"},Dn={class:"setting-list"},Pn={class:"option-list"},Un=["href"],In={class:"option-list"},Bn=["href"];var Fn={data:function(){var e=this.$store.state.instance;return{backendVersion:e.backendVersion,frontendVersion:e.frontendVersion}},computed:{frontendVersionLink:function(){return"https://akkoma.dev/AkkomaGang/pleroma-fe/commit/"+this.frontendVersion},backendVersionLink:function(){return"https://akkoma.dev/AkkomaGang/akkoma/commit/"+(e=this.backendVersion,(t=e.match(/-g(\w+)/i))?t[1]:"");var e,t}}};var En=D()(Fn,[["render",function(e,t,l,n,s,o){return Object(a.D)(),Object(a.j)("div",{label:e.$t("settings.version.title")},[Object(a.k)("div",Sn,[Object(a.k)("ul",Dn,[Object(a.k)("li",null,[Object(a.k)("p",null,Object(a.O)(e.$t("settings.version.backend_version")),1),Object(a.k)("ul",Pn,[Object(a.k)("li",null,[Object(a.k)("a",{href:e.backendVersionLink,target:"_blank"},Object(a.O)(e.backendVersion),9,Un)])])]),Object(a.k)("li",null,[Object(a.k)("p",null,Object(a.O)(e.$t("settings.version.frontend_version")),1),Object(a.k)("ul",In,[Object(a.k)("li",null,[Object(a.k)("a",{href:e.frontendVersionLink,target:"_blank"},Object(a.O)(e.frontendVersion),9,Bn)])])])])])],8,Ln)}]]);const An={class:"theme-tab"},Mn={class:"presets-container"},Rn={class:"save-load"},Wn={key:0,class:"theme-warning"},Jn={class:"alert warning"},Nn={class:"buttons"},qn={class:"top"},Gn={class:"presets"},Hn={for:"preset-switcher",class:"select"},zn=["value"],Kn={class:"export-import"},Yn={class:"save-load-options"},Zn={class:"keep-option"},Qn={class:"keep-option"},Xn={class:"keep-option"},es={class:"keep-option"},ts={class:"keep-option"},ls=["label"],as={class:"tab-header"},ns={class:"tab-header-buttons"},ss={class:"color-item"},os={class:"color-item"},cs={class:"color-item"},is={class:"color-item"},rs=["label"],bs={class:"tab-header"},us={class:"color-item"},ds={class:"color-item"},Os={class:"color-item"},ps={class:"color-item"},js={class:"color-item"},ms={class:"color-item"},hs={class:"color-item"},fs={class:"color-item"},gs={class:"color-item"},ks={class:"color-item"},vs={class:"color-item"},ys={class:"color-item"},ws={class:"color-item"},_s={class:"color-item"},Vs={class:"color-item"},$s={class:"color-item"},Cs={class:"color-item"},Ts={class:"color-item"},xs=["label"],Ls={class:"tab-header"},Ss=["label"],Ds={class:"tab-header shadow-selector"},Ps={class:"select-container"},Us=["value"],Is={class:"override"},Bs={for:"override",class:"label"},Fs=Object(a.l)(" "+Object(a.O)(" ")+" "),Es=Object(a.k)("label",{class:"checkbox-label",for:"override"},null,-1),As={key:0},Ms=Object(a.k)("code",null,"filter: drop-shadow()",-1),Rs=Object(a.k)("code",null,"drop-shadow",-1),Ws=Object(a.k)("code",null,"spread-radius",-1),Js=Object(a.k)("code",null,"inset",-1),Ns=Object(a.k)("code",null,"box-shadow",-1),qs=["label"],Gs={class:"tab-header"},Hs={class:"apply-container"},zs=["disabled"];var Ks=l(18),Ys=l(43),Zs=l(138),Qs=l(36),Xs=l(54);const eo=["for"],to={class:"input color-input-field"},lo=["id","value","disabled"],ao=["id","value","disabled"],no={key:1,class:"transparentIndicator"};var so={components:{Checkbox:E.a},props:{name:{required:!0,type:String},label:{required:!0,type:String},modelValue:{required:!1,type:String,default:void 0},fallback:{required:!1,type:String,default:void 0},disabled:{required:!1,type:Boolean,default:!1},showOptionalTickbox:{required:!1,type:Boolean,default:!0}},emits:["update:modelValue"],computed:{present:function(){return void 0!==this.modelValue},validColor:function(){return Object(Ks.f)(this.modelValue||this.fallback)},transparentColor:function(){return"transparent"===this.modelValue},computedColor:function(){return this.modelValue&&this.modelValue.startsWith("--")}}};l(700),l(701);var oo=D()(so,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("Checkbox");return Object(a.D)(),Object(a.j)("div",{class:Object(a.w)(["color-input style-control",{disabled:!o.present||l.disabled}])},[Object(a.k)("label",{for:l.name,class:"label"},Object(a.O)(l.label),9,eo),void 0!==l.fallback&&l.showOptionalTickbox?(Object(a.D)(),Object(a.h)(c,{key:0,"model-value":o.present,disabled:l.disabled,class:"opt","onUpdate:modelValue":t[0]||(t[0]=t=>e.$emit("update:modelValue",void 0===l.modelValue?l.fallback:void 0))},null,8,["model-value","disabled"])):Object(a.i)("",!0),Object(a.k)("div",to,[Object(a.k)("input",{id:l.name+"-t",class:"textColor unstyled",type:"text",value:l.modelValue||l.fallback,disabled:!o.present||l.disabled,onInput:t[1]||(t[1]=t=>e.$emit("update:modelValue",t.target.value))},null,40,lo),o.validColor?(Object(a.D)(),Object(a.j)("input",{key:0,id:l.name,class:"nativeColor unstyled",type:"color",value:l.modelValue||l.fallback,disabled:!o.present||l.disabled,onInput:t[2]||(t[2]=t=>e.$emit("update:modelValue",t.target.value))},null,40,ao)):Object(a.i)("",!0),o.transparentColor?(Object(a.D)(),Object(a.j)("div",no)):Object(a.i)("",!0),o.computedColor?(Object(a.D)(),Object(a.j)("div",{key:2,class:"computedIndicator",style:Object(a.x)({backgroundColor:l.fallback})},null,4)):Object(a.i)("",!0)])],2)}]]);const co=["for"],io=["id","checked"],ro=["for"],bo=["id","value","disabled","max","min","step"],uo=["id","value","disabled","max","min","step"];var Oo={props:["name","modelValue","fallback","disabled","label","max","min","step","hardMin","hardMax"],emits:["update:modelValue"],computed:{present:function(){return void 0!==this.modelValue}}};var po=D()(Oo,[["render",function(e,t,l,n,s,o){return Object(a.D)(),Object(a.j)("div",{class:Object(a.w)(["range-control style-control",{disabled:!o.present||l.disabled}])},[Object(a.k)("label",{for:l.name,class:"label"},Object(a.O)(l.label),9,co),void 0!==l.fallback?(Object(a.D)(),Object(a.j)("input",{key:0,id:l.name+"-o",class:"opt",type:"checkbox",checked:o.present,onChange:t[0]||(t[0]=t=>e.$emit("update:modelValue",o.present?void 0:l.fallback))},null,40,io)):Object(a.i)("",!0),void 0!==l.fallback?(Object(a.D)(),Object(a.j)("label",{key:1,class:"opt-l",for:l.name+"-o"},null,8,ro)):Object(a.i)("",!0),Object(a.k)("input",{id:l.name,class:"input-number",type:"range",value:l.modelValue||l.fallback,disabled:!o.present||l.disabled,max:l.max||l.hardMax||100,min:l.min||l.hardMin||0,step:l.step||1,onInput:t[1]||(t[1]=t=>e.$emit("update:modelValue",t.target.value))},null,40,bo),Object(a.k)("input",{id:l.name,class:"input-number",type:"number",value:l.modelValue||l.fallback,disabled:!o.present||l.disabled,max:l.hardMax,min:l.hardMin,step:l.step||1,onInput:t[2]||(t[2]=t=>e.$emit("update:modelValue",t.target.value))},null,40,uo)],2)}]]);const jo=["for"],mo=["id","value","disabled"];var ho={components:{Checkbox:E.a},props:["name","modelValue","fallback","disabled"],emits:["update:modelValue"],computed:{present:function(){return void 0!==this.modelValue}}};var fo=D()(ho,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("Checkbox");return Object(a.D)(),Object(a.j)("div",{class:Object(a.w)(["opacity-control style-control",{disabled:!o.present||l.disabled}])},[Object(a.k)("label",{for:l.name,class:"label"},Object(a.O)(e.$t("settings.style.common.opacity")),9,jo),void 0!==l.fallback?(Object(a.D)(),Object(a.h)(c,{key:0,"model-value":o.present,disabled:l.disabled,class:"opt","onUpdate:modelValue":t[0]||(t[0]=t=>e.$emit("update:modelValue",o.present?void 0:l.fallback))},null,8,["model-value","disabled"])):Object(a.i)("",!0),Object(a.k)("input",{id:l.name,class:"input-number",type:"number",value:l.modelValue||l.fallback,disabled:!o.present||l.disabled,max:"1",min:"0",step:".05",onInput:t[1]||(t[1]=t=>e.$emit("update:modelValue",t.target.value))},null,40,mo)],2)}]]);const go={class:"shadow-preview-container"},ko=["disabled"],vo=["disabled"],yo={class:"wrap"},wo=["disabled"],_o={class:"preview-window"},Vo=["disabled"],$o=["disabled"],Co={class:"wrap"},To=["disabled"],xo={class:"shadow-tweak"},Lo=["disabled"],So=["value"],Do=["disabled"],Po=["disabled"],Uo=["disabled"],Io=["disabled"],Bo=["disabled"],Fo={for:"inset",class:"label"},Eo=["disabled"],Ao=Object(a.k)("label",{class:"checkbox-label",for:"inset"},null,-1),Mo=["disabled"],Ro={for:"spread",class:"label"},Wo=["disabled"],Jo=["disabled"],No=["disabled"],qo={for:"spread",class:"label"},Go=["disabled"],Ho=["disabled"],zo=Object(a.k)("code",null,"--variable,mod",-1);function Ko(e,t){var l=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),l.push.apply(l,a)}return l}function Yo(e){for(var t=1;t<arguments.length;t++){var l=null!=arguments[t]?arguments[t]:{};t%2?Ko(Object(l),!0).forEach((function(t){y()(e,t,l[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(l)):Ko(Object(l)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(l,t))}))}return e}T.c.add(x.n,x.q,x.rb,x.V);var Zo=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Yo({x:0,y:0,blur:0,spread:0,inset:!1,color:"#000000",alpha:1},e)},Qo={props:["modelValue","fallback","ready"],emits:["update:modelValue"],data:function(){return{selectedId:0,cValue:(this.modelValue||this.fallback||[]).map(Zo)}},components:{ColorInput:oo,OpacityInput:fo,Select:Nt.a},methods:{add:function(){this.cValue.push(Zo(this.selected)),this.selectedId=this.cValue.length-1},del:function(){this.cValue.splice(this.selectedId,1),this.selectedId=0===this.cValue.length?void 0:Math.max(this.selectedId-1,0)},moveUp:function(){var e=this.cValue.splice(this.selectedId,1)[0];this.cValue.splice(this.selectedId-1,0,e),this.selectedId-=1},moveDn:function(){var e=this.cValue.splice(this.selectedId,1)[0];this.cValue.splice(this.selectedId+1,0,e),this.selectedId+=1}},beforeUpdate:function(){this.cValue=this.modelValue||this.fallback},computed:{anyShadows:function(){return this.cValue.length>0},anyShadowsFallback:function(){return this.fallback.length>0},selected:function(){return this.ready&&this.anyShadows?this.cValue[this.selectedId]:Zo({})},currentFallback:function(){return this.ready&&this.anyShadowsFallback?this.fallback[this.selectedId]:Zo({})},moveUpValid:function(){return this.ready&&this.selectedId>0},moveDnValid:function(){return this.ready&&this.selectedId<this.cValue.length-1},present:function(){return this.ready&&void 0!==this.cValue[this.selectedId]&&!this.usingFallback},usingFallback:function(){return void 0===this.modelValue},rgb:function(){return Object(Ks.f)(this.selected.color)},style:function(){return this.ready?{boxShadow:Object(Ys.i)(this.fallback)}:{}}}};l(702);var Xo=D()(Qo,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("Select"),i=Object(a.J)("FAIcon"),r=Object(a.J)("ColorInput"),b=Object(a.J)("OpacityInput"),u=Object(a.J)("i18n-t");return Object(a.D)(),Object(a.j)("div",{class:Object(a.w)(["shadow-control",{disabled:!e.present}])},[Object(a.k)("div",go,[Object(a.k)("div",{disabled:!e.present,class:"y-shift-control"},[Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[0]||(t[0]=t=>e.selected.y=t),disabled:!e.present,class:"input-number",type:"number"},null,8,vo),[[a.S,e.selected.y]]),Object(a.k)("div",yo,[Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[1]||(t[1]=t=>e.selected.y=t),disabled:!e.present,class:"input-range",type:"range",max:"20",min:"-20"},null,8,wo),[[a.S,e.selected.y]])])],8,ko),Object(a.k)("div",_o,[Object(a.k)("div",{class:"preview-block",style:Object(a.x)(e.style)},null,4)]),Object(a.k)("div",{disabled:!e.present,class:"x-shift-control"},[Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[2]||(t[2]=t=>e.selected.x=t),disabled:!e.present,class:"input-number",type:"number"},null,8,$o),[[a.S,e.selected.x]]),Object(a.k)("div",Co,[Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[3]||(t[3]=t=>e.selected.x=t),disabled:!e.present,class:"input-range",type:"range",max:"20",min:"-20"},null,8,To),[[a.S,e.selected.x]])])],8,Vo)]),Object(a.k)("div",xo,[Object(a.k)("div",{disabled:e.usingFallback,class:"id-control style-control"},[Object(a.m)(c,{id:"shadow-switcher",modelValue:e.selectedId,"onUpdate:modelValue":t[4]||(t[4]=t=>e.selectedId=t),class:"shadow-switcher",disabled:!e.ready||e.usingFallback},{default:Object(a.V)(()=>[(Object(a.D)(!0),Object(a.j)(a.a,null,Object(a.H)(e.cValue,(t,l)=>(Object(a.D)(),Object(a.j)("option",{key:l,value:l},Object(a.O)(e.$t("settings.style.shadows.shadow_id",{value:l})),9,So))),128))]),_:1},8,["modelValue","disabled"]),Object(a.k)("button",{class:"btn button-default",disabled:!e.ready||!e.present,onClick:t[5]||(t[5]=(...t)=>e.del&&e.del(...t))},[Object(a.m)(i,{"fixed-width":"",icon:"times"})],8,Do),Object(a.k)("button",{class:"btn button-default",disabled:!e.moveUpValid,onClick:t[6]||(t[6]=(...t)=>e.moveUp&&e.moveUp(...t))},[Object(a.m)(i,{"fixed-width":"",icon:"chevron-up"})],8,Po),Object(a.k)("button",{class:"btn button-default",disabled:!e.moveDnValid,onClick:t[7]||(t[7]=(...t)=>e.moveDn&&e.moveDn(...t))},[Object(a.m)(i,{"fixed-width":"",icon:"chevron-down"})],8,Uo),Object(a.k)("button",{class:"btn button-default",disabled:e.usingFallback,onClick:t[8]||(t[8]=(...t)=>e.add&&e.add(...t))},[Object(a.m)(i,{"fixed-width":"",icon:"plus"})],8,Io)],8,Lo),Object(a.k)("div",{disabled:!e.present,class:"inset-control style-control"},[Object(a.k)("label",Fo,Object(a.O)(e.$t("settings.style.shadows.inset")),1),Object(a.W)(Object(a.k)("input",{id:"inset","onUpdate:modelValue":t[9]||(t[9]=t=>e.selected.inset=t),disabled:!e.present,name:"inset",class:"input-inset",type:"checkbox"},null,8,Eo),[[a.R,e.selected.inset]]),Ao],8,Bo),Object(a.k)("div",{disabled:!e.present,class:"blur-control style-control"},[Object(a.k)("label",Ro,Object(a.O)(e.$t("settings.style.shadows.blur")),1),Object(a.W)(Object(a.k)("input",{id:"blur","onUpdate:modelValue":t[10]||(t[10]=t=>e.selected.blur=t),disabled:!e.present,name:"blur",class:"input-range",type:"range",max:"20",min:"0"},null,8,Wo),[[a.S,e.selected.blur]]),Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[11]||(t[11]=t=>e.selected.blur=t),disabled:!e.present,class:"input-number",type:"number",min:"0"},null,8,Jo),[[a.S,e.selected.blur]])],8,Mo),Object(a.k)("div",{disabled:!e.present,class:"spread-control style-control"},[Object(a.k)("label",qo,Object(a.O)(e.$t("settings.style.shadows.spread")),1),Object(a.W)(Object(a.k)("input",{id:"spread","onUpdate:modelValue":t[12]||(t[12]=t=>e.selected.spread=t),disabled:!e.present,name:"spread",class:"input-range",type:"range",max:"20",min:"-20"},null,8,Go),[[a.S,e.selected.spread]]),Object(a.W)(Object(a.k)("input",{"onUpdate:modelValue":t[13]||(t[13]=t=>e.selected.spread=t),disabled:!e.present,class:"input-number",type:"number"},null,8,Ho),[[a.S,e.selected.spread]])],8,No),Object(a.m)(r,{modelValue:e.selected.color,"onUpdate:modelValue":t[14]||(t[14]=t=>e.selected.color=t),disabled:!e.present,label:e.$t("settings.style.common.color"),fallback:e.currentFallback.color,"show-optional-tickbox":!1,name:"shadow"},null,8,["modelValue","disabled","label","fallback"]),Object(a.m)(b,{modelValue:e.selected.alpha,"onUpdate:modelValue":t[15]||(t[15]=t=>e.selected.alpha=t),disabled:!e.present},null,8,["modelValue","disabled"]),Object(a.m)(u,{scope:"global",keypath:"settings.style.shadows.hintV3",tag:"p"},{default:Object(a.V)(()=>[zo]),_:1})])],2)}]]);const ec=["for"],tc=["id","checked"],lc=["for"],ac=Object(a.l)(" "+Object(a.O)(" ")+" "),nc=["value"],sc=["id"];var oc={components:{Select:Nt.a},props:["name","label","modelValue","fallback","options","no-inherit"],emits:["update:modelValue"],data:function(){return{lValue:this.modelValue,availableOptions:[this.noInherit?"":"inherit","custom"].concat(Ue()(this.options||[]),["serif","monospace","sans-serif"]).filter((function(e){return e}))}},beforeUpdate:function(){this.lValue=this.modelValue},computed:{present:function(){return void 0!==this.lValue},dValue:function(){return this.lValue||this.fallback||{}},family:{get:function(){return this.dValue.family},set:function(e){it()(this.lValue,"family",e),this.$emit("update:modelValue",this.lValue)}},isCustom:function(){return"custom"===this.preset},preset:{get:function(){return"serif"===this.family||"sans-serif"===this.family||"monospace"===this.family||"inherit"===this.family?this.family:"custom"},set:function(e){this.family="custom"===e?"":e}}}};l(703);var cc=D()(oc,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("Select");return Object(a.D)(),Object(a.j)("div",{class:Object(a.w)(["font-control style-control",{custom:e.isCustom}])},[Object(a.k)("label",{for:"custom"===e.preset?e.name:e.name+"-font-switcher",class:"label"},Object(a.O)(e.label),9,ec),void 0!==e.fallback?(Object(a.D)(),Object(a.j)("input",{key:0,id:e.name+"-o",class:"opt exlcude-disabled",type:"checkbox",checked:e.present,onChange:t[0]||(t[0]=t=>e.$emit("update:modelValue",void 0===e.modelValue?e.fallback:void 0))},null,40,tc)):Object(a.i)("",!0),void 0!==e.fallback?(Object(a.D)(),Object(a.j)("label",{key:1,class:"opt-l",for:e.name+"-o"},null,8,lc)):Object(a.i)("",!0),ac,Object(a.m)(c,{id:e.name+"-font-switcher",modelValue:e.preset,"onUpdate:modelValue":t[1]||(t[1]=t=>e.preset=t),disabled:!e.present,class:"font-switcher"},{default:Object(a.V)(()=>[(Object(a.D)(!0),Object(a.j)(a.a,null,Object(a.H)(e.availableOptions,t=>(Object(a.D)(),Object(a.j)("option",{key:t,value:t},Object(a.O)("custom"===t?e.$t("settings.style.fonts.custom"):t),9,nc))),128))]),_:1},8,["id","modelValue","disabled"]),e.isCustom?Object(a.W)((Object(a.D)(),Object(a.j)("input",{key:2,id:e.name,"onUpdate:modelValue":t[2]||(t[2]=t=>e.family=t),class:"custom-font",type:"text"},null,8,sc)),[[a.S,e.family]]):Object(a.i)("",!0)],2)}]]);const ic={key:0,class:"contrast-ratio"},rc=["title"],bc={key:0},uc={key:1},dc={key:2},Oc=["title"],pc={key:0},jc={key:1},mc={key:2};T.c.add(x.a,x.z,x.pb);var hc={props:{large:{required:!1,type:Boolean,default:!1},contrast:{required:!1,type:Object,default:function(){return{}}}},computed:{hint:function(){var e=this.contrast.aaa?"aaa":this.contrast.aa?"aa":"bad",t=this.$t("settings.style.common.contrast.level.".concat(e)),l=this.$t("settings.style.common.contrast.context.text"),a=this.contrast.text;return this.$t("settings.style.common.contrast.hint",{level:t,context:l,ratio:a})},hint_18pt:function(){var e=this.contrast.laaa?"aaa":this.contrast.laa?"aa":"bad",t=this.$t("settings.style.common.contrast.level.".concat(e)),l=this.$t("settings.style.common.contrast.context.18pt"),a=this.contrast.text;return this.$t("settings.style.common.contrast.hint",{level:t,context:l,ratio:a})}}};l(704);var fc=D()(hc,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("FAIcon");return l.contrast?(Object(a.D)(),Object(a.j)("span",ic,[Object(a.k)("span",{title:o.hint,class:"rating"},[l.contrast.aaa?(Object(a.D)(),Object(a.j)("span",bc,[Object(a.m)(c,{icon:"thumbs-up"})])):Object(a.i)("",!0),!l.contrast.aaa&&l.contrast.aa?(Object(a.D)(),Object(a.j)("span",uc,[Object(a.m)(c,{icon:"adjust"})])):Object(a.i)("",!0),l.contrast.aaa||l.contrast.aa?Object(a.i)("",!0):(Object(a.D)(),Object(a.j)("span",dc,[Object(a.m)(c,{icon:"exclamation-triangle"})]))],8,rc),l.contrast&&l.large?(Object(a.D)(),Object(a.j)("span",{key:0,class:"rating",title:o.hint_18pt},[l.contrast.laaa?(Object(a.D)(),Object(a.j)("span",pc,[Object(a.m)(c,{icon:"thumbs-up"})])):Object(a.i)("",!0),!l.contrast.laaa&&l.contrast.laa?(Object(a.D)(),Object(a.j)("span",jc,[Object(a.m)(c,{icon:"adjust"})])):Object(a.i)("",!0),l.contrast.laaa||l.contrast.laa?Object(a.i)("",!0):(Object(a.D)(),Object(a.j)("span",mc,[Object(a.m)(c,{icon:"exclamation-triangle"})]))],8,Oc)):Object(a.i)("",!0)])):Object(a.i)("",!0)}]]);const gc={class:"preview-container"},kc=Object(a.k)("div",{class:"underlay underlay-preview"},null,-1),vc={class:"panel dummy"},yc={class:"panel-heading"},wc={class:"title"},_c=Object(a.k)("span",{class:"badge badge-notification"}," 99 ",-1),Vc={class:"faint"},$c={class:"alert error"},Cc={class:"btn button-default"},Tc={class:"panel-body theme-preview-content"},xc={class:"post"},Lc=Object(a.k)("div",{class:"avatar still-image"}," ( ͡° ͜ʖ ͡°) ",-1),Sc={class:"content"},Dc={style:{"font-family":"var(--postCodeFont)"}},Pc={style:{color:"var(--link)"}},Uc={class:"icons"},Ic={class:"after-post"},Bc=Object(a.k)("div",{class:"avatar-alt"}," :^) ",-1),Fc={class:"content"},Ec={style:{color:"var(--faintLink)"}},Ac=Object(a.k)("div",{class:"separator"},null,-1),Mc={class:"alert error"},Rc=["value"],Wc={class:"actions"},Jc={class:"checkbox"},Nc=Object(a.k)("input",{id:"preview_checkbox",checked:"very yes",type:"checkbox"},null,-1),qc={for:"preview_checkbox"},Gc={class:"btn button-default"};T.c.add(x.rb,x.jb,x.Z,x.Y);var Hc={};l(705);var zc=D()(Hc,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("i18n-t"),i=Object(a.J)("FAIcon");return Object(a.D)(),Object(a.j)("div",gc,[kc,Object(a.k)("div",vc,[Object(a.k)("div",yc,[Object(a.k)("div",wc,[Object(a.l)(Object(a.O)(e.$t("settings.style.preview.header"))+" ",1),_c]),Object(a.k)("span",Vc,Object(a.O)(e.$t("settings.style.preview.header_faint")),1),Object(a.k)("span",$c,Object(a.O)(e.$t("settings.style.preview.error")),1),Object(a.k)("button",Cc,Object(a.O)(e.$t("settings.style.preview.button")),1)]),Object(a.k)("div",Tc,[Object(a.k)("div",xc,[Lc,Object(a.k)("div",Sc,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.preview.content")),1),Object(a.m)(c,{scope:"global",keypath:"settings.style.preview.text"},{default:Object(a.V)(()=>[Object(a.k)("code",Dc,Object(a.O)(e.$t("settings.style.preview.mono")),1),Object(a.k)("a",Pc,Object(a.O)(e.$t("settings.style.preview.link")),1)]),_:1}),Object(a.k)("div",Uc,[Object(a.m)(i,{"fixed-width":"",style:{color:"var(--cBlue)"},class:"fa-scale-110 fa-old-padding",icon:"reply"}),Object(a.m)(i,{"fixed-width":"",style:{color:"var(--cGreen)"},class:"fa-scale-110 fa-old-padding",icon:"retweet"}),Object(a.m)(i,{"fixed-width":"",style:{color:"var(--cOrange)"},class:"fa-scale-110 fa-old-padding",icon:"star"}),Object(a.m)(i,{"fixed-width":"",style:{color:"var(--cRed)"},class:"fa-scale-110 fa-old-padding",icon:"times"})])])]),Object(a.k)("div",Ic,[Bc,Object(a.k)("div",Fc,[Object(a.m)(c,{keypath:"settings.style.preview.fine_print",tag:"span",class:"faint",scope:"global"},{default:Object(a.V)(()=>[Object(a.k)("a",Ec,Object(a.O)(e.$t("settings.style.preview.faint_link")),1)]),_:1})])]),Ac,Object(a.k)("span",Mc,Object(a.O)(e.$t("settings.style.preview.error")),1),Object(a.k)("input",{value:e.$t("settings.style.preview.input"),type:"text"},null,8,Rc),Object(a.k)("div",Wc,[Object(a.k)("span",Jc,[Nc,Object(a.k)("label",qc,Object(a.O)(e.$t("settings.style.preview.checkbox")),1)]),Object(a.k)("button",Gc,Object(a.O)(e.$t("settings.style.preview.button")),1)])])])])}]]);function Kc(e,t){var l=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),l.push.apply(l,a)}return l}function Yc(e){for(var t=1;t<arguments.length;t++){var l=null!=arguments[t]?arguments[t]:{};t%2?Kc(Object(l),!0).forEach((function(t){y()(e,t,l[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(l)):Kc(Object(l)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(l,t))}))}return e}var Zc=["bg","fg","text","link","cRed","cGreen","cBlue","cOrange"].map((function(e){return e+"ColorLocal"})),Qc={data:function(){var e=this;return Yc(Yc(Yc({themeImporter:Object(Zs.b)({validator:this.importValidator,onImport:this.onImport,onImportFailure:this.onImportFailure}),themeExporter:Object(Zs.a)({filename:"pleroma_theme",getExportedObject:function(){return e.exportedTheme}}),availableStyles:[],selected:"",selectedTheme:this.$store.getters.mergedConfig.theme,themeWarning:void 0,tempImportFile:void 0,engineVersion:0,previewShadows:{},previewColors:{},previewRadii:{},previewFonts:{},shadowsInvalid:!0,colorsInvalid:!0,radiiInvalid:!0,keepColor:!1,keepShadows:!1,keepOpacity:!1,keepRoundness:!1,keepFonts:!1},Object.keys(Qs.c).map((function(e){return[e,""]})).reduce((function(e,t){var l=wt()(t,2),a=l[0],n=l[1];return Yc(Yc({},e),{},y()({},a+"ColorLocal",n))}),{})),Object.keys(Xs.b).map((function(e){return[e,""]})).reduce((function(e,t){var l=wt()(t,2),a=l[0],n=l[1];return Yc(Yc({},e),{},y()({},a+"OpacityLocal",n))}),{})),{},{shadowSelected:void 0,shadowsLocal:{},fontsLocal:{},btnRadiusLocal:"",inputRadiusLocal:"",checkboxRadiusLocal:"",panelRadiusLocal:"",avatarRadiusLocal:"",avatarAltRadiusLocal:"",attachmentRadiusLocal:"",tooltipRadiusLocal:"",chatMessageRadiusLocal:""})},created:function(){var e=this;Object(Ys.k)().then((function(e){return Promise.all(Object.entries(e).map((function(e){var t=wt()(e,2),l=t[0];return t[1].then((function(e){return[l,e]}))})))})).then((function(e){return e.reduce((function(e,t){var l=wt()(t,2),a=l[0],n=l[1];return n?Yc(Yc({},e),{},y()({},a,n)):e}),{})})).then((function(t){e.availableStyles=t}))},mounted:function(){this.loadThemeFromLocalStorage(),void 0===this.shadowSelected&&(this.shadowSelected=this.shadowsAvailable[0])},computed:{themeWarningHelp:function(){if(this.themeWarning){var e=this.$t,t="settings.style.switcher.help.",l=this.themeWarning,a=l.origin,n=l.themeEngineVersion,s=l.type,o=l.noActionsPossible;if("file"===a){if(2===n&&"wrong_version"===s)return e(t+"v2_imported");if(n>Xs.a)return e(t+"future_version_imported")+" "+e(o?t+"snapshot_missing":t+"snapshot_present");if(n<Xs.a)return e(t+"future_version_imported")+" "+e(o?t+"snapshot_missing":t+"snapshot_present")}else if("localStorage"===a){if("snapshot_source_mismatch"===s)return e(t+"snapshot_source_mismatch");if(2===n)return e(t+"upgraded_from_v2");if(n>Xs.a)return e(t+"fe_downgraded")+" "+e(o?t+"migration_snapshot_ok":t+"migration_snapshot_gone");if(n<Xs.a)return e(t+"fe_upgraded")+" "+e(o?t+"migration_snapshot_ok":t+"migration_snapshot_gone")}}},selectedVersion:function(){return Array.isArray(this.selectedTheme)?1:2},currentColors:function(){var e=this;return Object.keys(Qs.c).map((function(t){return[t,e[t+"ColorLocal"]]})).reduce((function(e,t){var l=wt()(t,2),a=l[0],n=l[1];return Yc(Yc({},e),{},y()({},a,n))}),{})},currentOpacity:function(){var e=this;return Object.keys(Xs.b).map((function(t){return[t,e[t+"OpacityLocal"]]})).reduce((function(e,t){var l=wt()(t,2),a=l[0],n=l[1];return Yc(Yc({},e),{},y()({},a,n))}),{})},currentRadii:function(){return{btn:this.btnRadiusLocal,input:this.inputRadiusLocal,checkbox:this.checkboxRadiusLocal,panel:this.panelRadiusLocal,avatar:this.avatarRadiusLocal,avatarAlt:this.avatarAltRadiusLocal,tooltip:this.tooltipRadiusLocal,attachment:this.attachmentRadiusLocal,chatMessage:this.chatMessageRadiusLocal}},preview:function(){return Object(Ys.d)(this.previewColors,this.previewRadii,this.previewShadows,this.previewFonts)},previewTheme:function(){return this.preview.theme.colors?this.preview.theme:{colors:{},opacity:{},radii:{},shadows:{},fonts:{}}},previewContrast:function(){try{if(!this.previewTheme.colors.bg)return{};var e=this.previewTheme.colors,t=this.previewTheme.opacity;if(!e.bg)return{};var l=Object.entries(e).reduce((function(e,t){var l,a=wt()(t,2),n=a[0],s=a[1];return Yc(Yc({},e),{},y()({},n,(l=s).startsWith("--")||"transparent"===l?l:Object(Ks.f)(l)))}),{}),a=Object.entries(Qs.c).reduce((function(e,a){var n=wt()(a,2),s=n[0],o=n[1],c="text"===s||"link"===s;if(!(c||"object"===Ga()(o)&&null!==o&&o.textColor))return e;var i=c?{layer:"bg"}:o,r=i.layer,b=i.variant,u=b||r,d=Object(Xs.f)(u),O=[s].concat(Ue()("bg"===u?["cRed","cGreen","cBlue","cOrange"]:[])),p=Object(Xs.e)(r,b||r,d,l,t);return Yc(Yc({},e),O.reduce((function(e,t){var a=c?"bg"+t[0].toUpperCase()+t.slice(1):t;return Yc(Yc({},e),{},y()({},a,Object(Ks.c)(l[t],p,l[t])))}),{}))}),{});return Object.entries(a).reduce((function(e,t){var l,a=wt()(t,2),n=a[0],s=a[1];return e[n]={text:(l=s).toPrecision(3)+":1",aa:l>=4.5,aaa:l>=7,laa:l>=3,laaa:l>=4.5},e}),{})}catch(e){console.warn("Failure computing contrasts",e)}},previewRules:function(){return this.preview.rules?[].concat(Ue()(Object.values(this.preview.rules)),["color: var(--text)","font-family: var(--interfaceFont, sans-serif)"]).join(";"):""},shadowsAvailable:function(){return Object.keys(Ys.a).sort()},currentShadowOverriden:{get:function(){return!!this.currentShadow},set:function(e){e?this.shadowsLocal[this.shadowSelected]=this.currentShadowFallback.map((function(e){return Object.assign({},e)})):delete this.shadowsLocal[this.shadowSelected]}},currentShadowFallback:function(){return(this.previewTheme.shadows||{})[this.shadowSelected]},currentShadow:{get:function(){return this.shadowsLocal[this.shadowSelected]},set:function(e){this.shadowsLocal[this.shadowSelected]=e}},themeValid:function(){return!this.shadowsInvalid&&!this.colorsInvalid&&!this.radiiInvalid},exportedTheme:function(){var e=!(this.keepFonts||this.keepShadows||this.keepOpacity||this.keepRoundness||this.keepColor),t={themeEngineVersion:Xs.a};return(this.keepFonts||e)&&(t.fonts=this.fontsLocal),(this.keepShadows||e)&&(t.shadows=this.shadowsLocal),(this.keepOpacity||e)&&(t.opacity=this.currentOpacity),(this.keepColor||e)&&(t.colors=this.currentColors),(this.keepRoundness||e)&&(t.radii=this.currentRadii),{_pleroma_theme_version:2,theme:Yc({themeEngineVersion:Xs.a},this.previewTheme),source:t}},isActive:function(){var e=this.$parent;return!!e&&e.isActive("theme")}},components:{ColorInput:oo,OpacityInput:fo,RangeInput:po,ContrastRatio:fc,ShadowControl:Xo,FontControl:cc,TabSwitcher:O.a,Preview:zc,Checkbox:E.a,Select:Nt.a},methods:{loadTheme:function(e,t){var l=e.theme,a=e.source,n=e._pleroma_theme_version,s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(this.dismissWarning(),!a&&!l)throw new Error("Can't load theme: empty");var o="localStorage"!==t||l.colors?n:"l1",c=(l||{}).themeEngineVersion,i=(a||{}).themeEngineVersion||2,r=i===Xs.a,b=void 0!==l&&void 0!==a&&i!==c,u=a&&s||!l;r&&!b||u||"l1"===o||"defaults"===t||(b&&"localStorage"===t?this.themeWarning={origin:t,themeEngineVersion:i,type:"snapshot_source_mismatch"}:l?r||(this.themeWarning={origin:t,noActionsPossible:!a,themeEngineVersion:i,type:"wrong_version"}):this.themeWarning={origin:t,noActionsPossible:!0,themeEngineVersion:i,type:"no_snapshot_old_version"}),this.normalizeLocalState(l,o,a,u)},forceLoadLocalStorage:function(){this.loadThemeFromLocalStorage(!0)},dismissWarning:function(){this.themeWarning=void 0,this.tempImportFile=void 0},forceLoad:function(){switch(this.themeWarning.origin){case"localStorage":this.loadThemeFromLocalStorage(!0);break;case"file":this.onImport(this.tempImportFile,!0)}this.dismissWarning()},forceSnapshot:function(){switch(this.themeWarning.origin){case"localStorage":this.loadThemeFromLocalStorage(!1,!0);break;case"file":console.error("Forcing snapshot from file is not supported yet")}this.dismissWarning()},loadThemeFromLocalStorage:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],l=this.$store.getters.mergedConfig,a=l.customTheme,n=l.customThemeSource;a||n?this.loadTheme({theme:a,source:t?a:n},"localStorage",e):this.loadTheme(this.$store.state.instance.themeData,"defaults",e)},setCustomTheme:function(){this.$store.dispatch("setOption",{name:"customTheme",value:Yc({themeEngineVersion:Xs.a},this.previewTheme)}),this.$store.dispatch("setOption",{name:"customThemeSource",value:{themeEngineVersion:Xs.a,shadows:this.shadowsLocal,fonts:this.fontsLocal,opacity:this.currentOpacity,colors:this.currentColors,radii:this.currentRadii}})},updatePreviewColorsAndShadows:function(){this.previewColors=Object(Ys.e)({opacity:this.currentOpacity,colors:this.currentColors}),this.previewShadows=Object(Ys.h)({shadows:this.shadowsLocal,opacity:this.previewTheme.opacity,themeEngineVersion:this.engineVersion},this.previewColors.theme.colors,this.previewColors.mod)},importTheme:function(){this.themeImporter.importData()},exportTheme:function(){this.themeExporter.exportData()},onImport:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.tempImportFile=e,this.loadTheme(e,"file",t)},onImportFailure:function(e){this.$store.dispatch("pushGlobalNotice",{messageKey:"settings.invalid_theme_imported",level:"error"})},importValidator:function(e){var t=e._pleroma_theme_version;return t>=1||t<=2},clearAll:function(){this.loadThemeFromLocalStorage()},clearV1:function(){var e=this;Object.keys(this.$data).filter((function(e){return e.endsWith("ColorLocal")||e.endsWith("OpacityLocal")})).filter((function(e){return!Zc.includes(e)})).forEach((function(t){e.$data[t]=void 0}))},clearRoundness:function(){var e=this;Object.keys(this.$data).filter((function(e){return e.endsWith("RadiusLocal")})).forEach((function(t){e.$data[t]=void 0}))},clearOpacity:function(){var e=this;Object.keys(this.$data).filter((function(e){return e.endsWith("OpacityLocal")})).forEach((function(t){e.$data[t]=void 0}))},clearShadows:function(){this.shadowsLocal={}},clearFonts:function(){this.fontsLocal={}},normalizeLocalState:function(e){var t,l=this,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2?arguments[2]:void 0,s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];void 0!==n&&(s||n.themeEngineVersion===Xs.a)?(t=n,a=n.themeEngineVersion):t=e;var o=t.radii||t,c=t.opacity,i=t.shadows||{},r=t.fonts||{},b=t.themeEngineVersion?t.colors||t:Object(Ys.c)(t.colors||t);if(0===a&&(t.version&&(a=t.version),void 0===b.text&&void 0!==b.fg&&(a=1),void 0!==b.text&&void 0!==b.fg&&(a=2)),this.engineVersion=a,1===a&&(this.fgColorLocal=Object(Ks.i)(b.btn),this.textColorLocal=Object(Ks.i)(b.fg)),!this.keepColor){this.clearV1();var u=new Set(1!==a?Object.keys(Qs.c):[]);1!==a&&"l1"!==a||u.add("bg").add("link").add("cRed").add("cBlue").add("cGreen").add("cOrange"),u.forEach((function(e){var t=b[e],a=Object(Ks.i)(b[e]);l[e+"ColorLocal"]="#aN"===a?t:a}))}c&&!this.keepOpacity&&(this.clearOpacity(),Object.entries(c).forEach((function(e){var t=wt()(e,2),a=t[0],n=t[1];null==n||Number.isNaN(n)||(l[a+"OpacityLocal"]=n)}))),this.keepRoundness||(this.clearRoundness(),Object.entries(o).forEach((function(e){var t=wt()(e,2),a=t[0],n=t[1],s=a.endsWith("Radius")?a.split("Radius")[0]:a;l[s+"RadiusLocal"]=n}))),this.keepShadows||(this.clearShadows(),this.shadowsLocal=2===a?Object(Ys.m)(i,this.previewTheme.opacity):i,this.shadowSelected=this.shadowsAvailable[0]),this.keepFonts||(this.clearFonts(),this.fontsLocal=r)}},watch:{currentRadii:function(){try{this.previewRadii=Object(Ys.g)({radii:this.currentRadii}),this.radiiInvalid=!1}catch(e){this.radiiInvalid=!0,console.warn(e)}},shadowsLocal:{handler:function(){if(1!==Object.getOwnPropertyNames(this.previewColors).length)try{this.updatePreviewColorsAndShadows(),this.shadowsInvalid=!1}catch(e){this.shadowsInvalid=!0,console.warn(e)}},deep:!0},fontsLocal:{handler:function(){try{this.previewFonts=Object(Ys.f)({fonts:this.fontsLocal}),this.fontsInvalid=!1}catch(e){this.fontsInvalid=!0,console.warn(e)}},deep:!0},currentColors:function(){try{this.updatePreviewColorsAndShadows(),this.colorsInvalid=!1,this.shadowsInvalid=!1}catch(e){this.colorsInvalid=!0,this.shadowsInvalid=!0,console.warn(e)}},currentOpacity:function(){try{this.updatePreviewColorsAndShadows()}catch(e){console.warn(e)}},selected:function(){var e=this;this.selectedTheme=Object.entries(this.availableStyles).find((function(t){var l=wt()(t,2),a=(l[0],l[1]);return Array.isArray(a)?(console.log(a[0]===e.selected,e.selected),a[0]===e.selected):a.name===e.selected}))[1]},selectedTheme:function(){this.dismissWarning(),1===this.selectedVersion?(this.keepRoundness||this.clearRoundness(),this.keepShadows||this.clearShadows(),this.keepOpacity||this.clearOpacity(),this.keepColor||(this.clearV1(),this.bgColorLocal=this.selectedTheme[1],this.fgColorLocal=this.selectedTheme[2],this.textColorLocal=this.selectedTheme[3],this.linkColorLocal=this.selectedTheme[4],this.cRedColorLocal=this.selectedTheme[5],this.cGreenColorLocal=this.selectedTheme[6],this.cBlueColorLocal=this.selectedTheme[7],this.cOrangeColorLocal=this.selectedTheme[8])):this.selectedVersion>=2&&this.normalizeLocalState(this.selectedTheme.theme,2,this.selectedTheme.source)}}};l(706);var Xc=D()(Qc,[["render",function(e,t,l,n,s,o){const c=Object(a.J)("Select"),i=Object(a.J)("Checkbox"),r=Object(a.J)("preview"),b=Object(a.J)("ColorInput"),u=Object(a.J)("OpacityInput"),d=Object(a.J)("ContrastRatio"),O=Object(a.J)("RangeInput"),p=Object(a.J)("ShadowControl"),j=Object(a.J)("i18n-t"),m=Object(a.J)("FontControl"),h=Object(a.J)("tab-switcher");return Object(a.D)(),Object(a.j)("div",An,[Object(a.k)("div",Mn,[Object(a.k)("div",Rn,[e.themeWarning?(Object(a.D)(),Object(a.j)("div",Wn,[Object(a.k)("div",Jn,Object(a.O)(e.themeWarningHelp),1),Object(a.k)("div",Nn,["snapshot_source_mismatch"===e.themeWarning.type?(Object(a.D)(),Object(a.j)(a.a,{key:0},[Object(a.k)("button",{class:"btn button-default",onClick:t[0]||(t[0]=(...t)=>e.forceLoad&&e.forceLoad(...t))},Object(a.O)(e.$t("settings.style.switcher.use_source")),1),Object(a.k)("button",{class:"btn button-default",onClick:t[1]||(t[1]=(...t)=>e.forceSnapshot&&e.forceSnapshot(...t))},Object(a.O)(e.$t("settings.style.switcher.use_snapshot")),1)],64)):e.themeWarning.noActionsPossible?(Object(a.D)(),Object(a.j)("button",{key:1,class:"btn button-default",onClick:t[2]||(t[2]=(...t)=>e.dismissWarning&&e.dismissWarning(...t))},Object(a.O)(e.$t("general.dismiss")),1)):(Object(a.D)(),Object(a.j)(a.a,{key:2},[Object(a.k)("button",{class:"btn button-default",onClick:t[3]||(t[3]=(...t)=>e.forceLoad&&e.forceLoad(...t))},Object(a.O)(e.$t("settings.style.switcher.load_theme")),1),Object(a.k)("button",{class:"btn button-default",onClick:t[4]||(t[4]=(...t)=>e.dismissWarning&&e.dismissWarning(...t))},Object(a.O)(e.$t("settings.style.switcher.keep_as_is")),1)],64))])])):Object(a.i)("",!0),Object(a.k)("div",qn,[Object(a.k)("div",Gn,[Object(a.l)(Object(a.O)(e.$t("settings.presets"))+" ",1),Object(a.k)("label",Hn,[Object(a.m)(c,{id:"preset-switcher",modelValue:e.selected,"onUpdate:modelValue":t[5]||(t[5]=t=>e.selected=t),class:"preset-switcher"},{default:Object(a.V)(()=>[(Object(a.D)(!0),Object(a.j)(a.a,null,Object(a.H)(e.availableStyles,e=>(Object(a.D)(),Object(a.j)("option",{key:e.name,value:e.name||e[0],style:Object(a.x)({backgroundColor:e[1]||(e.theme||e.source).colors.bg,color:e[3]||(e.theme||e.source).colors.text})},Object(a.O)(e[0]||e.name),13,zn))),128))]),_:1},8,["modelValue"])])]),Object(a.k)("div",Kn,[Object(a.k)("button",{class:"btn button-default",onClick:t[6]||(t[6]=(...t)=>e.importTheme&&e.importTheme(...t))},Object(a.O)(e.$t("settings.import_theme")),1),Object(a.k)("button",{class:"btn button-default",onClick:t[7]||(t[7]=(...t)=>e.exportTheme&&e.exportTheme(...t))},Object(a.O)(e.$t("settings.export_theme")),1)])])]),Object(a.k)("div",Yn,[Object(a.k)("span",Zn,[Object(a.m)(i,{modelValue:e.keepColor,"onUpdate:modelValue":t[8]||(t[8]=t=>e.keepColor=t)},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.style.switcher.keep_color")),1)]),_:1},8,["modelValue"])]),Object(a.k)("span",Qn,[Object(a.m)(i,{modelValue:e.keepShadows,"onUpdate:modelValue":t[9]||(t[9]=t=>e.keepShadows=t)},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.style.switcher.keep_shadows")),1)]),_:1},8,["modelValue"])]),Object(a.k)("span",Xn,[Object(a.m)(i,{modelValue:e.keepOpacity,"onUpdate:modelValue":t[10]||(t[10]=t=>e.keepOpacity=t)},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.style.switcher.keep_opacity")),1)]),_:1},8,["modelValue"])]),Object(a.k)("span",es,[Object(a.m)(i,{modelValue:e.keepRoundness,"onUpdate:modelValue":t[11]||(t[11]=t=>e.keepRoundness=t)},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.style.switcher.keep_roundness")),1)]),_:1},8,["modelValue"])]),Object(a.k)("span",ts,[Object(a.m)(i,{modelValue:e.keepFonts,"onUpdate:modelValue":t[12]||(t[12]=t=>e.keepFonts=t)},{default:Object(a.V)(()=>[Object(a.l)(Object(a.O)(e.$t("settings.style.switcher.keep_fonts")),1)]),_:1},8,["modelValue"])]),Object(a.k)("p",null,Object(a.O)(e.$t("settings.style.switcher.save_load_hint")),1)])]),Object(a.m)(r,{style:Object(a.x)(e.previewRules)},null,8,["style"]),(Object(a.D)(),Object(a.h)(a.b,null,[Object(a.m)(h,{key:"style-tweak"},{default:Object(a.V)(()=>[Object(a.k)("div",{label:e.$t("settings.style.common_colors._tab_label"),class:"color-container"},[Object(a.k)("div",as,[Object(a.k)("p",null,Object(a.O)(e.$t("settings.theme_help")),1),Object(a.k)("div",ns,[Object(a.k)("button",{class:"btn button-default",onClick:t[13]||(t[13]=(...t)=>e.clearOpacity&&e.clearOpacity(...t))},Object(a.O)(e.$t("settings.style.switcher.clear_opacity")),1),Object(a.k)("button",{class:"btn button-default",onClick:t[14]||(t[14]=(...t)=>e.clearV1&&e.clearV1(...t))},Object(a.O)(e.$t("settings.style.switcher.clear_all")),1)])]),Object(a.k)("p",null,Object(a.O)(e.$t("settings.theme_help_v2_1")),1),Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.common_colors.main")),1),Object(a.k)("div",ss,[Object(a.m)(b,{modelValue:e.bgColorLocal,"onUpdate:modelValue":t[15]||(t[15]=t=>e.bgColorLocal=t),name:"bgColor",label:e.$t("settings.background")},null,8,["modelValue","label"]),Object(a.m)(u,{modelValue:e.bgOpacityLocal,"onUpdate:modelValue":t[16]||(t[16]=t=>e.bgOpacityLocal=t),name:"bgOpacity",fallback:e.previewTheme.opacity.bg},null,8,["modelValue","fallback"]),Object(a.m)(b,{modelValue:e.textColorLocal,"onUpdate:modelValue":t[17]||(t[17]=t=>e.textColorLocal=t),name:"textColor",label:e.$t("settings.text")},null,8,["modelValue","label"]),Object(a.m)(d,{contrast:e.previewContrast.bgText},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.accentColorLocal,"onUpdate:modelValue":t[18]||(t[18]=t=>e.accentColorLocal=t),name:"accentColor",fallback:e.previewTheme.colors.link,label:e.$t("settings.accent"),"show-optional-tickbox":void 0!==e.linkColorLocal},null,8,["modelValue","fallback","label","show-optional-tickbox"]),Object(a.m)(b,{modelValue:e.linkColorLocal,"onUpdate:modelValue":t[19]||(t[19]=t=>e.linkColorLocal=t),name:"linkColor",fallback:e.previewTheme.colors.accent,label:e.$t("settings.links"),"show-optional-tickbox":void 0!==e.accentColorLocal},null,8,["modelValue","fallback","label","show-optional-tickbox"]),Object(a.m)(d,{contrast:e.previewContrast.bgLink},null,8,["contrast"])]),Object(a.k)("div",os,[Object(a.m)(b,{modelValue:e.fgColorLocal,"onUpdate:modelValue":t[20]||(t[20]=t=>e.fgColorLocal=t),name:"fgColor",label:e.$t("settings.foreground")},null,8,["modelValue","label"]),Object(a.m)(b,{modelValue:e.fgTextColorLocal,"onUpdate:modelValue":t[21]||(t[21]=t=>e.fgTextColorLocal=t),name:"fgTextColor",label:e.$t("settings.text"),fallback:e.previewTheme.colors.fgText},null,8,["modelValue","label","fallback"]),Object(a.m)(b,{modelValue:e.fgLinkColorLocal,"onUpdate:modelValue":t[22]||(t[22]=t=>e.fgLinkColorLocal=t),name:"fgLinkColor",label:e.$t("settings.links"),fallback:e.previewTheme.colors.fgLink},null,8,["modelValue","label","fallback"]),Object(a.k)("p",null,Object(a.O)(e.$t("settings.style.common_colors.foreground_hint")),1)]),Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.common_colors.rgbo")),1),Object(a.k)("div",cs,[Object(a.m)(b,{modelValue:e.cRedColorLocal,"onUpdate:modelValue":t[23]||(t[23]=t=>e.cRedColorLocal=t),name:"cRedColor",label:e.$t("settings.cRed")},null,8,["modelValue","label"]),Object(a.m)(d,{contrast:e.previewContrast.bgCRed},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.cBlueColorLocal,"onUpdate:modelValue":t[24]||(t[24]=t=>e.cBlueColorLocal=t),name:"cBlueColor",label:e.$t("settings.cBlue")},null,8,["modelValue","label"]),Object(a.m)(d,{contrast:e.previewContrast.bgCBlue},null,8,["contrast"])]),Object(a.k)("div",is,[Object(a.m)(b,{modelValue:e.cGreenColorLocal,"onUpdate:modelValue":t[25]||(t[25]=t=>e.cGreenColorLocal=t),name:"cGreenColor",label:e.$t("settings.cGreen")},null,8,["modelValue","label"]),Object(a.m)(d,{contrast:e.previewContrast.bgCGreen},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.cOrangeColorLocal,"onUpdate:modelValue":t[26]||(t[26]=t=>e.cOrangeColorLocal=t),name:"cOrangeColor",label:e.$t("settings.cOrange")},null,8,["modelValue","label"]),Object(a.m)(d,{contrast:e.previewContrast.bgCOrange},null,8,["contrast"])]),Object(a.k)("p",null,Object(a.O)(e.$t("settings.theme_help_v2_2")),1)],8,ls),Object(a.k)("div",{label:e.$t("settings.style.advanced_colors._tab_label"),class:"color-container"},[Object(a.k)("div",bs,[Object(a.k)("p",null,Object(a.O)(e.$t("settings.theme_help")),1),Object(a.k)("button",{class:"btn button-default",onClick:t[27]||(t[27]=(...t)=>e.clearOpacity&&e.clearOpacity(...t))},Object(a.O)(e.$t("settings.style.switcher.clear_opacity")),1),Object(a.k)("button",{class:"btn button-default",onClick:t[28]||(t[28]=(...t)=>e.clearV1&&e.clearV1(...t))},Object(a.O)(e.$t("settings.style.switcher.clear_all")),1)]),Object(a.k)("div",us,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.post")),1),Object(a.m)(b,{modelValue:e.postLinkColorLocal,"onUpdate:modelValue":t[29]||(t[29]=t=>e.postLinkColorLocal=t),name:"postLinkColor",fallback:e.previewTheme.colors.accent,label:e.$t("settings.links")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.postLink},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.postGreentextColorLocal,"onUpdate:modelValue":t[30]||(t[30]=t=>e.postGreentextColorLocal=t),name:"postGreentextColor",fallback:e.previewTheme.colors.cGreen,label:e.$t("settings.greentext")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.postGreentext},null,8,["contrast"]),Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.alert")),1),Object(a.m)(b,{modelValue:e.alertErrorColorLocal,"onUpdate:modelValue":t[31]||(t[31]=t=>e.alertErrorColorLocal=t),name:"alertError",label:e.$t("settings.style.advanced_colors.alert_error"),fallback:e.previewTheme.colors.alertError},null,8,["modelValue","label","fallback"]),Object(a.m)(b,{modelValue:e.alertErrorTextColorLocal,"onUpdate:modelValue":t[32]||(t[32]=t=>e.alertErrorTextColorLocal=t),name:"alertErrorText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.alertErrorText},null,8,["modelValue","label","fallback"]),Object(a.m)(d,{contrast:e.previewContrast.alertErrorText,large:""},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.alertWarningColorLocal,"onUpdate:modelValue":t[33]||(t[33]=t=>e.alertWarningColorLocal=t),name:"alertWarning",label:e.$t("settings.style.advanced_colors.alert_warning"),fallback:e.previewTheme.colors.alertWarning},null,8,["modelValue","label","fallback"]),Object(a.m)(b,{modelValue:e.alertWarningTextColorLocal,"onUpdate:modelValue":t[34]||(t[34]=t=>e.alertWarningTextColorLocal=t),name:"alertWarningText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.alertWarningText},null,8,["modelValue","label","fallback"]),Object(a.m)(d,{contrast:e.previewContrast.alertWarningText,large:""},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.alertNeutralColorLocal,"onUpdate:modelValue":t[35]||(t[35]=t=>e.alertNeutralColorLocal=t),name:"alertNeutral",label:e.$t("settings.style.advanced_colors.alert_neutral"),fallback:e.previewTheme.colors.alertNeutral},null,8,["modelValue","label","fallback"]),Object(a.m)(b,{modelValue:e.alertNeutralTextColorLocal,"onUpdate:modelValue":t[36]||(t[36]=t=>e.alertNeutralTextColorLocal=t),name:"alertNeutralText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.alertNeutralText},null,8,["modelValue","label","fallback"]),Object(a.m)(d,{contrast:e.previewContrast.alertNeutralText,large:""},null,8,["contrast"]),Object(a.m)(u,{modelValue:e.alertOpacityLocal,"onUpdate:modelValue":t[37]||(t[37]=t=>e.alertOpacityLocal=t),name:"alertOpacity",fallback:e.previewTheme.opacity.alert},null,8,["modelValue","fallback"])]),Object(a.k)("div",ds,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.badge")),1),Object(a.m)(b,{modelValue:e.badgeNotificationColorLocal,"onUpdate:modelValue":t[38]||(t[38]=t=>e.badgeNotificationColorLocal=t),name:"badgeNotification",label:e.$t("settings.style.advanced_colors.badge_notification"),fallback:e.previewTheme.colors.badgeNotification},null,8,["modelValue","label","fallback"]),Object(a.m)(b,{modelValue:e.badgeNotificationTextColorLocal,"onUpdate:modelValue":t[39]||(t[39]=t=>e.badgeNotificationTextColorLocal=t),name:"badgeNotificationText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.badgeNotificationText},null,8,["modelValue","label","fallback"]),Object(a.m)(d,{contrast:e.previewContrast.badgeNotificationText,large:""},null,8,["contrast"])]),Object(a.k)("div",Os,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.panel_header")),1),Object(a.m)(b,{modelValue:e.panelColorLocal,"onUpdate:modelValue":t[40]||(t[40]=t=>e.panelColorLocal=t),name:"panelColor",fallback:e.previewTheme.colors.panel,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),Object(a.m)(u,{modelValue:e.panelOpacityLocal,"onUpdate:modelValue":t[41]||(t[41]=t=>e.panelOpacityLocal=t),name:"panelOpacity",fallback:e.previewTheme.opacity.panel,disabled:"transparent"===e.panelColorLocal},null,8,["modelValue","fallback","disabled"]),Object(a.m)(b,{modelValue:e.panelTextColorLocal,"onUpdate:modelValue":t[42]||(t[42]=t=>e.panelTextColorLocal=t),name:"panelTextColor",fallback:e.previewTheme.colors.panelText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.panelText,large:""},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.panelLinkColorLocal,"onUpdate:modelValue":t[43]||(t[43]=t=>e.panelLinkColorLocal=t),name:"panelLinkColor",fallback:e.previewTheme.colors.panelLink,label:e.$t("settings.links")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.panelLink,large:""},null,8,["contrast"])]),Object(a.k)("div",ps,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.top_bar")),1),Object(a.m)(b,{modelValue:e.topBarColorLocal,"onUpdate:modelValue":t[44]||(t[44]=t=>e.topBarColorLocal=t),name:"topBarColor",fallback:e.previewTheme.colors.topBar,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),Object(a.m)(b,{modelValue:e.topBarTextColorLocal,"onUpdate:modelValue":t[45]||(t[45]=t=>e.topBarTextColorLocal=t),name:"topBarTextColor",fallback:e.previewTheme.colors.topBarText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.topBarText},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.topBarLinkColorLocal,"onUpdate:modelValue":t[46]||(t[46]=t=>e.topBarLinkColorLocal=t),name:"topBarLinkColor",fallback:e.previewTheme.colors.topBarLink,label:e.$t("settings.links")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.topBarLink},null,8,["contrast"])]),Object(a.k)("div",js,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.inputs")),1),Object(a.m)(b,{modelValue:e.inputColorLocal,"onUpdate:modelValue":t[47]||(t[47]=t=>e.inputColorLocal=t),name:"inputColor",fallback:e.previewTheme.colors.input,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),Object(a.m)(u,{modelValue:e.inputOpacityLocal,"onUpdate:modelValue":t[48]||(t[48]=t=>e.inputOpacityLocal=t),name:"inputOpacity",fallback:e.previewTheme.opacity.input,disabled:"transparent"===e.inputColorLocal},null,8,["modelValue","fallback","disabled"]),Object(a.m)(b,{modelValue:e.inputTextColorLocal,"onUpdate:modelValue":t[49]||(t[49]=t=>e.inputTextColorLocal=t),name:"inputTextColor",fallback:e.previewTheme.colors.inputText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.inputText},null,8,["contrast"])]),Object(a.k)("div",ms,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.buttons")),1),Object(a.m)(b,{modelValue:e.btnColorLocal,"onUpdate:modelValue":t[50]||(t[50]=t=>e.btnColorLocal=t),name:"btnColor",fallback:e.previewTheme.colors.btn,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),Object(a.m)(u,{modelValue:e.btnOpacityLocal,"onUpdate:modelValue":t[51]||(t[51]=t=>e.btnOpacityLocal=t),name:"btnOpacity",fallback:e.previewTheme.opacity.btn,disabled:"transparent"===e.btnColorLocal},null,8,["modelValue","fallback","disabled"]),Object(a.m)(b,{modelValue:e.btnTextColorLocal,"onUpdate:modelValue":t[52]||(t[52]=t=>e.btnTextColorLocal=t),name:"btnTextColor",fallback:e.previewTheme.colors.btnText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.btnText},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.btnPanelTextColorLocal,"onUpdate:modelValue":t[53]||(t[53]=t=>e.btnPanelTextColorLocal=t),name:"btnPanelTextColor",fallback:e.previewTheme.colors.btnPanelText,label:e.$t("settings.style.advanced_colors.panel_header")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.btnPanelText},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.btnTopBarTextColorLocal,"onUpdate:modelValue":t[54]||(t[54]=t=>e.btnTopBarTextColorLocal=t),name:"btnTopBarTextColor",fallback:e.previewTheme.colors.btnTopBarText,label:e.$t("settings.style.advanced_colors.top_bar")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.btnTopBarText},null,8,["contrast"]),Object(a.k)("h5",null,Object(a.O)(e.$t("settings.style.advanced_colors.pressed")),1),Object(a.m)(b,{modelValue:e.btnPressedColorLocal,"onUpdate:modelValue":t[55]||(t[55]=t=>e.btnPressedColorLocal=t),name:"btnPressedColor",fallback:e.previewTheme.colors.btnPressed,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),Object(a.m)(b,{modelValue:e.btnPressedTextColorLocal,"onUpdate:modelValue":t[56]||(t[56]=t=>e.btnPressedTextColorLocal=t),name:"btnPressedTextColor",fallback:e.previewTheme.colors.btnPressedText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.btnPressedText},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.btnPressedPanelTextColorLocal,"onUpdate:modelValue":t[57]||(t[57]=t=>e.btnPressedPanelTextColorLocal=t),name:"btnPressedPanelTextColor",fallback:e.previewTheme.colors.btnPressedPanelText,label:e.$t("settings.style.advanced_colors.panel_header")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.btnPressedPanelText},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.btnPressedTopBarTextColorLocal,"onUpdate:modelValue":t[58]||(t[58]=t=>e.btnPressedTopBarTextColorLocal=t),name:"btnPressedTopBarTextColor",fallback:e.previewTheme.colors.btnPressedTopBarText,label:e.$t("settings.style.advanced_colors.top_bar")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.btnPressedTopBarText},null,8,["contrast"]),Object(a.k)("h5",null,Object(a.O)(e.$t("settings.style.advanced_colors.disabled")),1),Object(a.m)(b,{modelValue:e.btnDisabledColorLocal,"onUpdate:modelValue":t[59]||(t[59]=t=>e.btnDisabledColorLocal=t),name:"btnDisabledColor",fallback:e.previewTheme.colors.btnDisabled,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),Object(a.m)(b,{modelValue:e.btnDisabledTextColorLocal,"onUpdate:modelValue":t[60]||(t[60]=t=>e.btnDisabledTextColorLocal=t),name:"btnDisabledTextColor",fallback:e.previewTheme.colors.btnDisabledText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),Object(a.m)(b,{modelValue:e.btnDisabledPanelTextColorLocal,"onUpdate:modelValue":t[61]||(t[61]=t=>e.btnDisabledPanelTextColorLocal=t),name:"btnDisabledPanelTextColor",fallback:e.previewTheme.colors.btnDisabledPanelText,label:e.$t("settings.style.advanced_colors.panel_header")},null,8,["modelValue","fallback","label"]),Object(a.m)(b,{modelValue:e.btnDisabledTopBarTextColorLocal,"onUpdate:modelValue":t[62]||(t[62]=t=>e.btnDisabledTopBarTextColorLocal=t),name:"btnDisabledTopBarTextColor",fallback:e.previewTheme.colors.btnDisabledTopBarText,label:e.$t("settings.style.advanced_colors.top_bar")},null,8,["modelValue","fallback","label"]),Object(a.k)("h5",null,Object(a.O)(e.$t("settings.style.advanced_colors.toggled")),1),Object(a.m)(b,{modelValue:e.btnToggledColorLocal,"onUpdate:modelValue":t[63]||(t[63]=t=>e.btnToggledColorLocal=t),name:"btnToggledColor",fallback:e.previewTheme.colors.btnToggled,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),Object(a.m)(b,{modelValue:e.btnToggledTextColorLocal,"onUpdate:modelValue":t[64]||(t[64]=t=>e.btnToggledTextColorLocal=t),name:"btnToggledTextColor",fallback:e.previewTheme.colors.btnToggledText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.btnToggledText},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.btnToggledPanelTextColorLocal,"onUpdate:modelValue":t[65]||(t[65]=t=>e.btnToggledPanelTextColorLocal=t),name:"btnToggledPanelTextColor",fallback:e.previewTheme.colors.btnToggledPanelText,label:e.$t("settings.style.advanced_colors.panel_header")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.btnToggledPanelText},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.btnToggledTopBarTextColorLocal,"onUpdate:modelValue":t[66]||(t[66]=t=>e.btnToggledTopBarTextColorLocal=t),name:"btnToggledTopBarTextColor",fallback:e.previewTheme.colors.btnToggledTopBarText,label:e.$t("settings.style.advanced_colors.top_bar")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.btnToggledTopBarText},null,8,["contrast"])]),Object(a.k)("div",hs,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.tabs")),1),Object(a.m)(b,{modelValue:e.tabColorLocal,"onUpdate:modelValue":t[67]||(t[67]=t=>e.tabColorLocal=t),name:"tabColor",fallback:e.previewTheme.colors.tab,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),Object(a.m)(b,{modelValue:e.tabTextColorLocal,"onUpdate:modelValue":t[68]||(t[68]=t=>e.tabTextColorLocal=t),name:"tabTextColor",fallback:e.previewTheme.colors.tabText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.tabText},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.tabActiveTextColorLocal,"onUpdate:modelValue":t[69]||(t[69]=t=>e.tabActiveTextColorLocal=t),name:"tabActiveTextColor",fallback:e.previewTheme.colors.tabActiveText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),Object(a.m)(d,{contrast:e.previewContrast.tabActiveText},null,8,["contrast"])]),Object(a.k)("div",fs,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.borders")),1),Object(a.m)(b,{modelValue:e.borderColorLocal,"onUpdate:modelValue":t[70]||(t[70]=t=>e.borderColorLocal=t),name:"borderColor",fallback:e.previewTheme.colors.border,label:e.$t("settings.style.common.color")},null,8,["modelValue","fallback","label"]),Object(a.m)(u,{modelValue:e.borderOpacityLocal,"onUpdate:modelValue":t[71]||(t[71]=t=>e.borderOpacityLocal=t),name:"borderOpacity",fallback:e.previewTheme.opacity.border,disabled:"transparent"===e.borderColorLocal},null,8,["modelValue","fallback","disabled"])]),Object(a.k)("div",gs,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.faint_text")),1),Object(a.m)(b,{modelValue:e.faintColorLocal,"onUpdate:modelValue":t[72]||(t[72]=t=>e.faintColorLocal=t),name:"faintColor",fallback:e.previewTheme.colors.faint,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),Object(a.m)(b,{modelValue:e.faintLinkColorLocal,"onUpdate:modelValue":t[73]||(t[73]=t=>e.faintLinkColorLocal=t),name:"faintLinkColor",fallback:e.previewTheme.colors.faintLink,label:e.$t("settings.links")},null,8,["modelValue","fallback","label"]),Object(a.m)(b,{modelValue:e.panelFaintColorLocal,"onUpdate:modelValue":t[74]||(t[74]=t=>e.panelFaintColorLocal=t),name:"panelFaintColor",fallback:e.previewTheme.colors.panelFaint,label:e.$t("settings.style.advanced_colors.panel_header")},null,8,["modelValue","fallback","label"]),Object(a.m)(u,{modelValue:e.faintOpacityLocal,"onUpdate:modelValue":t[75]||(t[75]=t=>e.faintOpacityLocal=t),name:"faintOpacity",fallback:e.previewTheme.opacity.faint},null,8,["modelValue","fallback"])]),Object(a.k)("div",ks,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.underlay")),1),Object(a.m)(b,{modelValue:e.underlayColorLocal,"onUpdate:modelValue":t[76]||(t[76]=t=>e.underlayColorLocal=t),name:"underlay",label:e.$t("settings.style.advanced_colors.underlay"),fallback:e.previewTheme.colors.underlay},null,8,["modelValue","label","fallback"]),Object(a.m)(u,{modelValue:e.underlayOpacityLocal,"onUpdate:modelValue":t[77]||(t[77]=t=>e.underlayOpacityLocal=t),name:"underlayOpacity",fallback:e.previewTheme.opacity.underlay,disabled:"transparent"===e.underlayOpacityLocal},null,8,["modelValue","fallback","disabled"])]),Object(a.k)("div",vs,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.wallpaper")),1),Object(a.m)(b,{modelValue:e.wallpaperColorLocal,"onUpdate:modelValue":t[78]||(t[78]=t=>e.wallpaperColorLocal=t),name:"wallpaper",label:e.$t("settings.style.advanced_colors.wallpaper"),fallback:e.previewTheme.colors.wallpaper},null,8,["modelValue","label","fallback"])]),Object(a.k)("div",ys,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.poll")),1),Object(a.m)(b,{modelValue:e.pollColorLocal,"onUpdate:modelValue":t[79]||(t[79]=t=>e.pollColorLocal=t),name:"poll",label:e.$t("settings.background"),fallback:e.previewTheme.colors.poll},null,8,["modelValue","label","fallback"]),Object(a.m)(b,{modelValue:e.pollTextColorLocal,"onUpdate:modelValue":t[80]||(t[80]=t=>e.pollTextColorLocal=t),name:"pollText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.pollText},null,8,["modelValue","label","fallback"])]),Object(a.k)("div",ws,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.icons")),1),Object(a.m)(b,{modelValue:e.iconColorLocal,"onUpdate:modelValue":t[81]||(t[81]=t=>e.iconColorLocal=t),name:"icon",label:e.$t("settings.style.advanced_colors.icons"),fallback:e.previewTheme.colors.icon},null,8,["modelValue","label","fallback"])]),Object(a.k)("div",_s,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.highlight")),1),Object(a.m)(b,{modelValue:e.highlightColorLocal,"onUpdate:modelValue":t[82]||(t[82]=t=>e.highlightColorLocal=t),name:"highlight",label:e.$t("settings.background"),fallback:e.previewTheme.colors.highlight},null,8,["modelValue","label","fallback"]),Object(a.m)(b,{modelValue:e.highlightTextColorLocal,"onUpdate:modelValue":t[83]||(t[83]=t=>e.highlightTextColorLocal=t),name:"highlightText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.highlightText},null,8,["modelValue","label","fallback"]),Object(a.m)(d,{contrast:e.previewContrast.highlightText},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.highlightLinkColorLocal,"onUpdate:modelValue":t[84]||(t[84]=t=>e.highlightLinkColorLocal=t),name:"highlightLink",label:e.$t("settings.links"),fallback:e.previewTheme.colors.highlightLink},null,8,["modelValue","label","fallback"]),Object(a.m)(d,{contrast:e.previewContrast.highlightLink},null,8,["contrast"])]),Object(a.k)("div",Vs,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.popover")),1),Object(a.m)(b,{modelValue:e.popoverColorLocal,"onUpdate:modelValue":t[85]||(t[85]=t=>e.popoverColorLocal=t),name:"popover",label:e.$t("settings.background"),fallback:e.previewTheme.colors.popover},null,8,["modelValue","label","fallback"]),Object(a.m)(u,{modelValue:e.popoverOpacityLocal,"onUpdate:modelValue":t[86]||(t[86]=t=>e.popoverOpacityLocal=t),name:"popoverOpacity",fallback:e.previewTheme.opacity.popover,disabled:"transparent"===e.popoverOpacityLocal},null,8,["modelValue","fallback","disabled"]),Object(a.m)(b,{modelValue:e.popoverTextColorLocal,"onUpdate:modelValue":t[87]||(t[87]=t=>e.popoverTextColorLocal=t),name:"popoverText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.popoverText},null,8,["modelValue","label","fallback"]),Object(a.m)(d,{contrast:e.previewContrast.popoverText},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.popoverLinkColorLocal,"onUpdate:modelValue":t[88]||(t[88]=t=>e.popoverLinkColorLocal=t),name:"popoverLink",label:e.$t("settings.links"),fallback:e.previewTheme.colors.popoverLink},null,8,["modelValue","label","fallback"]),Object(a.m)(d,{contrast:e.previewContrast.popoverLink},null,8,["contrast"])]),Object(a.k)("div",$s,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.selectedPost")),1),Object(a.m)(b,{modelValue:e.selectedPostColorLocal,"onUpdate:modelValue":t[89]||(t[89]=t=>e.selectedPostColorLocal=t),name:"selectedPost",label:e.$t("settings.background"),fallback:e.previewTheme.colors.selectedPost},null,8,["modelValue","label","fallback"]),Object(a.m)(b,{modelValue:e.selectedPostTextColorLocal,"onUpdate:modelValue":t[90]||(t[90]=t=>e.selectedPostTextColorLocal=t),name:"selectedPostText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.selectedPostText},null,8,["modelValue","label","fallback"]),Object(a.m)(d,{contrast:e.previewContrast.selectedPostText},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.selectedPostLinkColorLocal,"onUpdate:modelValue":t[91]||(t[91]=t=>e.selectedPostLinkColorLocal=t),name:"selectedPostLink",label:e.$t("settings.links"),fallback:e.previewTheme.colors.selectedPostLink},null,8,["modelValue","label","fallback"]),Object(a.m)(d,{contrast:e.previewContrast.selectedPostLink},null,8,["contrast"])]),Object(a.k)("div",Cs,[Object(a.k)("h4",null,Object(a.O)(e.$t("settings.style.advanced_colors.selectedMenu")),1),Object(a.m)(b,{modelValue:e.selectedMenuColorLocal,"onUpdate:modelValue":t[92]||(t[92]=t=>e.selectedMenuColorLocal=t),name:"selectedMenu",label:e.$t("settings.background"),fallback:e.previewTheme.colors.selectedMenu},null,8,["modelValue","label","fallback"]),Object(a.m)(b,{modelValue:e.selectedMenuTextColorLocal,"onUpdate:modelValue":t[93]||(t[93]=t=>e.selectedMenuTextColorLocal=t),name:"selectedMenuText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.selectedMenuText},null,8,["modelValue","label","fallback"]),Object(a.m)(d,{contrast:e.previewContrast.selectedMenuText},null,8,["contrast"]),Object(a.m)(b,{modelValue:e.selectedMenuLinkColorLocal,"onUpdate:modelValue":t[94]||(t[94]=t=>e.selectedMenuLinkColorLocal=t),name:"selectedMenuLink",label:e.$t("settings.links"),fallback:e.previewTheme.colors.selectedMenuLink},null,8,["modelValue","label","fallback"]),Object(a.m)(d,{contrast:e.previewContrast.selectedMenuLink},null,8,["contrast"])]),Object(a.k)("div",Ts,[Object(a.k)("h4",null,Object(a.O)(e.$t("chats.chats")),1),Object(a.m)(b,{modelValue:e.chatBgColorLocal,"onUpdate:modelValue":t[95]||(t[95]=t=>e.chatBgColorLocal=t),name:"chatBgColor",fallback:e.previewTheme.colors.bg,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),Object(a.k)("h5",null,Object(a.O)(e.$t("settings.style.advanced_colors.chat.incoming")),1),Object(a.m)(b,{modelValue:e.chatMessageIncomingBgColorLocal,"onUpdate:modelValue":t[96]||(t[96]=t=>e.chatMessageIncomingBgColorLocal=t),name:"chatMessageIncomingBgColor",fallback:e.previewTheme.colors.bg,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),Object(a.m)(b,{modelValue:e.chatMessageIncomingTextColorLocal,"onUpdate:modelValue":t[97]||(t[97]=t=>e.chatMessageIncomingTextColorLocal=t),name:"chatMessageIncomingTextColor",fallback:e.previewTheme.colors.text,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),Object(a.m)(b,{modelValue:e.chatMessageIncomingLinkColorLocal,"onUpdate:modelValue":t[98]||(t[98]=t=>e.chatMessageIncomingLinkColorLocal=t),name:"chatMessageIncomingLinkColor",fallback:e.previewTheme.colors.link,label:e.$t("settings.links")},null,8,["modelValue","fallback","label"]),Object(a.m)(b,{modelValue:e.chatMessageIncomingBorderColorLocal,"onUpdate:modelValue":t[99]||(t[99]=t=>e.chatMessageIncomingBorderColorLocal=t),name:"chatMessageIncomingBorderLinkColor",fallback:e.previewTheme.colors.fg,label:e.$t("settings.style.advanced_colors.chat.border")},null,8,["modelValue","fallback","label"]),Object(a.k)("h5",null,Object(a.O)(e.$t("settings.style.advanced_colors.chat.outgoing")),1),Object(a.m)(b,{modelValue:e.chatMessageOutgoingBgColorLocal,"onUpdate:modelValue":t[100]||(t[100]=t=>e.chatMessageOutgoingBgColorLocal=t),name:"chatMessageOutgoingBgColor",fallback:e.previewTheme.colors.bg,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),Object(a.m)(b,{modelValue:e.chatMessageOutgoingTextColorLocal,"onUpdate:modelValue":t[101]||(t[101]=t=>e.chatMessageOutgoingTextColorLocal=t),name:"chatMessageOutgoingTextColor",fallback:e.previewTheme.colors.text,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),Object(a.m)(b,{modelValue:e.chatMessageOutgoingLinkColorLocal,"onUpdate:modelValue":t[102]||(t[102]=t=>e.chatMessageOutgoingLinkColorLocal=t),name:"chatMessageOutgoingLinkColor",fallback:e.previewTheme.colors.link,label:e.$t("settings.links")},null,8,["modelValue","fallback","label"]),Object(a.m)(b,{modelValue:e.chatMessageOutgoingBorderColorLocal,"onUpdate:modelValue":t[103]||(t[103]=t=>e.chatMessageOutgoingBorderColorLocal=t),name:"chatMessageOutgoingBorderLinkColor",fallback:e.previewTheme.colors.bg,label:e.$t("settings.style.advanced_colors.chat.border")},null,8,["modelValue","fallback","label"])])],8,rs),Object(a.k)("div",{label:e.$t("settings.style.radii._tab_label"),class:"radius-container"},[Object(a.k)("div",Ls,[Object(a.k)("p",null,Object(a.O)(e.$t("settings.radii_help")),1),Object(a.k)("button",{class:"btn button-default",onClick:t[104]||(t[104]=(...t)=>e.clearRoundness&&e.clearRoundness(...t))},Object(a.O)(e.$t("settings.style.switcher.clear_all")),1)]),Object(a.m)(O,{modelValue:e.btnRadiusLocal,"onUpdate:modelValue":t[105]||(t[105]=t=>e.btnRadiusLocal=t),name:"btnRadius",label:e.$t("settings.btnRadius"),fallback:e.previewTheme.radii.btn,max:"16","hard-min":"0"},null,8,["modelValue","label","fallback"]),Object(a.m)(O,{modelValue:e.inputRadiusLocal,"onUpdate:modelValue":t[106]||(t[106]=t=>e.inputRadiusLocal=t),name:"inputRadius",label:e.$t("settings.inputRadius"),fallback:e.previewTheme.radii.input,max:"9","hard-min":"0"},null,8,["modelValue","label","fallback"]),Object(a.m)(O,{modelValue:e.checkboxRadiusLocal,"onUpdate:modelValue":t[107]||(t[107]=t=>e.checkboxRadiusLocal=t),name:"checkboxRadius",label:e.$t("settings.checkboxRadius"),fallback:e.previewTheme.radii.checkbox,max:"16","hard-min":"0"},null,8,["modelValue","label","fallback"]),Object(a.m)(O,{modelValue:e.panelRadiusLocal,"onUpdate:modelValue":t[108]||(t[108]=t=>e.panelRadiusLocal=t),name:"panelRadius",label:e.$t("settings.panelRadius"),fallback:e.previewTheme.radii.panel,max:"50","hard-min":"0"},null,8,["modelValue","label","fallback"]),Object(a.m)(O,{modelValue:e.avatarRadiusLocal,"onUpdate:modelValue":t[109]||(t[109]=t=>e.avatarRadiusLocal=t),name:"avatarRadius",label:e.$t("settings.avatarRadius"),fallback:e.previewTheme.radii.avatar,max:"28","hard-min":"0"},null,8,["modelValue","label","fallback"]),Object(a.m)(O,{modelValue:e.avatarAltRadiusLocal,"onUpdate:modelValue":t[110]||(t[110]=t=>e.avatarAltRadiusLocal=t),name:"avatarAltRadius",label:e.$t("settings.avatarAltRadius"),fallback:e.previewTheme.radii.avatarAlt,max:"28","hard-min":"0"},null,8,["modelValue","label","fallback"]),Object(a.m)(O,{modelValue:e.attachmentRadiusLocal,"onUpdate:modelValue":t[111]||(t[111]=t=>e.attachmentRadiusLocal=t),name:"attachmentRadius",label:e.$t("settings.attachmentRadius"),fallback:e.previewTheme.radii.attachment,max:"50","hard-min":"0"},null,8,["modelValue","label","fallback"]),Object(a.m)(O,{modelValue:e.tooltipRadiusLocal,"onUpdate:modelValue":t[112]||(t[112]=t=>e.tooltipRadiusLocal=t),name:"tooltipRadius",label:e.$t("settings.tooltipRadius"),fallback:e.previewTheme.radii.tooltip,max:"50","hard-min":"0"},null,8,["modelValue","label","fallback"]),Object(a.m)(O,{modelValue:e.chatMessageRadiusLocal,"onUpdate:modelValue":t[113]||(t[113]=t=>e.chatMessageRadiusLocal=t),name:"chatMessageRadius",label:e.$t("settings.chatMessageRadius"),fallback:e.previewTheme.radii.chatMessage||2,max:"50","hard-min":"0"},null,8,["modelValue","label","fallback"])],8,xs),Object(a.k)("div",{label:e.$t("settings.style.shadows._tab_label"),class:"shadow-container"},[Object(a.k)("div",Ds,[Object(a.k)("div",Ps,[Object(a.l)(Object(a.O)(e.$t("settings.style.shadows.component"))+" "+Object(a.O)(" ")+" ",1),Object(a.m)(c,{id:"shadow-switcher",modelValue:e.shadowSelected,"onUpdate:modelValue":t[114]||(t[114]=t=>e.shadowSelected=t),class:"shadow-switcher"},{default:Object(a.V)(()=>[(Object(a.D)(!0),Object(a.j)(a.a,null,Object(a.H)(e.shadowsAvailable,t=>(Object(a.D)(),Object(a.j)("option",{key:t,value:t},Object(a.O)(e.$t("settings.style.shadows.components."+t)),9,Us))),128))]),_:1},8,["modelValue"])]),Object(a.k)("div",Is,[Object(a.k)("label",Bs,Object(a.O)(e.$t("settings.style.shadows.override")),1),Fs,Object(a.W)(Object(a.k)("input",{id:"override","onUpdate:modelValue":t[115]||(t[115]=t=>e.currentShadowOverriden=t),name:"override",class:"input-override",type:"checkbox"},null,512),[[a.R,e.currentShadowOverriden]]),Es]),Object(a.k)("button",{class:"btn button-default",onClick:t[116]||(t[116]=(...t)=>e.clearShadows&&e.clearShadows(...t))},Object(a.O)(e.$t("settings.style.switcher.clear_all")),1)]),Object(a.m)(p,{modelValue:e.currentShadow,"onUpdate:modelValue":t[117]||(t[117]=t=>e.currentShadow=t),ready:!!e.currentShadowFallback,fallback:e.currentShadowFallback},null,8,["modelValue","ready","fallback"]),"avatar"===e.shadowSelected||"avatarStatus"===e.shadowSelected?(Object(a.D)(),Object(a.j)("div",As,[Object(a.m)(j,{scope:"global",keypath:"settings.style.shadows.filter_hint.always_drop_shadow",tag:"p"},{default:Object(a.V)(()=>[Ms]),_:1}),Object(a.k)("p",null,Object(a.O)(e.$t("settings.style.shadows.filter_hint.avatar_inset")),1),Object(a.m)(j,{scope:"global",keypath:"settings.style.shadows.filter_hint.drop_shadow_syntax",tag:"p"},{default:Object(a.V)(()=>[Rs,Ws,Js]),_:1}),Object(a.m)(j,{scope:"global",keypath:"settings.style.shadows.filter_hint.inset_classic",tag:"p"},{default:Object(a.V)(()=>[Ns]),_:1}),Object(a.k)("p",null,Object(a.O)(e.$t("settings.style.shadows.filter_hint.spread_zero")),1)])):Object(a.i)("",!0)],8,Ss),Object(a.k)("div",{label:e.$t("settings.style.fonts._tab_label"),class:"fonts-container"},[Object(a.k)("div",Gs,[Object(a.k)("p",null,Object(a.O)(e.$t("settings.style.fonts.help")),1),Object(a.k)("button",{class:"btn button-default",onClick:t[118]||(t[118]=(...t)=>e.clearFonts&&e.clearFonts(...t))},Object(a.O)(e.$t("settings.style.switcher.clear_all")),1)]),Object(a.m)(m,{modelValue:e.fontsLocal.interface,"onUpdate:modelValue":t[119]||(t[119]=t=>e.fontsLocal.interface=t),name:"ui",label:e.$t("settings.style.fonts.components.interface"),fallback:e.previewTheme.fonts.interface,"no-inherit":"1"},null,8,["modelValue","label","fallback"]),Object(a.m)(m,{modelValue:e.fontsLocal.input,"onUpdate:modelValue":t[120]||(t[120]=t=>e.fontsLocal.input=t),name:"input",label:e.$t("settings.style.fonts.components.input"),fallback:e.previewTheme.fonts.input},null,8,["modelValue","label","fallback"]),Object(a.m)(m,{modelValue:e.fontsLocal.post,"onUpdate:modelValue":t[121]||(t[121]=t=>e.fontsLocal.post=t),name:"post",label:e.$t("settings.style.fonts.components.post"),fallback:e.previewTheme.fonts.post},null,8,["modelValue","label","fallback"]),Object(a.m)(m,{modelValue:e.fontsLocal.postCode,"onUpdate:modelValue":t[122]||(t[122]=t=>e.fontsLocal.postCode=t),name:"postCode",label:e.$t("settings.style.fonts.components.postCode"),fallback:e.previewTheme.fonts.postCode},null,8,["modelValue","label","fallback"])],8,qs)]),_:1})],1024)),e.isActive?(Object(a.D)(),Object(a.h)(a.c,{key:0,to:"#unscrolled-content"},[Object(a.k)("div",Hs,[Object(a.k)("button",{class:"btn button-default submit",disabled:!e.themeValid,onClick:t[123]||(t[123]=(...t)=>e.setCustomTheme&&e.setCustomTheme(...t))},Object(a.O)(e.$t("general.apply")),9,zs),Object(a.k)("button",{class:"btn button-default",onClick:t[124]||(t[124]=(...t)=>e.clearAll&&e.clearAll(...t))},Object(a.O)(e.$t("settings.style.switcher.reset")),1)])])):Object(a.i)("",!0)])}]]);T.c.add(x.yb,x.ub,x.G,x.R,x.i,x.u,x.C,x.L);var ei={components:{TabSwitcher:O.a,DataImportExportTab:W,MutesAndBlocksTab:Ge,NotificationsTab:St,FilteringTab:ll,SecurityTab:oa,ProfileTab:sn,GeneralTab:xn,VersionTab:En,ThemeTab:Xc},computed:{isLoggedIn:function(){return!!this.$store.state.users.currentUser},open:function(){return"hidden"!==this.$store.state.interface.settingsModalState},bodyLock:function(){return"visible"===this.$store.state.interface.settingsModalState}},methods:{onOpen:function(){var e=this.$store.state.interface.settingsModalTargetTab;if(e){var t=this.$refs.tabSwitcher.$slots.default().findIndex((function(t){return t.props&&t.props["data-tab-name"]===e}));t>=0&&this.$refs.tabSwitcher.setTab(t)}this.$store.dispatch("clearSettingsModalTargetTab")}},mounted:function(){this.onOpen()},watch:{open:function(e){e&&this.onOpen()}}};l(707);const ti=D()(ei,[["render",function(e,t,l,O,p,j){const m=Object(a.J)("GeneralTab"),h=Object(a.J)("ProfileTab"),f=Object(a.J)("SecurityTab"),g=Object(a.J)("FilteringTab"),k=Object(a.J)("ThemeTab"),v=Object(a.J)("NotificationsTab"),y=Object(a.J)("DataImportExportTab"),w=Object(a.J)("MutesAndBlocksTab"),_=Object(a.J)("VersionTab"),V=Object(a.J)("tab-switcher");return Object(a.D)(),Object(a.h)(V,{ref:"tabSwitcher",class:"settings_tab-switcher","side-tab-bar":!0,"scrollable-tabs":!0,"body-scroll-lock":e.bodyLock},{default:Object(a.V)(()=>[Object(a.k)("div",{label:e.$t("settings.general"),icon:"wrench","data-tab-name":"general"},[Object(a.m)(m)],8,n),e.isLoggedIn?(Object(a.D)(),Object(a.j)("div",{key:0,label:e.$t("settings.profile_tab"),icon:"user","data-tab-name":"profile"},[Object(a.m)(h)],8,s)):Object(a.i)("",!0),e.isLoggedIn?(Object(a.D)(),Object(a.j)("div",{key:1,label:e.$t("settings.security_tab"),icon:"lock","data-tab-name":"security"},[Object(a.m)(f)],8,o)):Object(a.i)("",!0),Object(a.k)("div",{label:e.$t("settings.filtering"),icon:"filter","data-tab-name":"filtering"},[Object(a.m)(g)],8,c),Object(a.k)("div",{label:e.$t("settings.theme"),icon:"paint-brush","data-tab-name":"theme"},[Object(a.m)(k)],8,i),e.isLoggedIn?(Object(a.D)(),Object(a.j)("div",{key:2,label:e.$t("settings.notifications"),icon:"bell","data-tab-name":"notifications"},[Object(a.m)(v)],8,r)):Object(a.i)("",!0),e.isLoggedIn?(Object(a.D)(),Object(a.j)("div",{key:3,label:e.$t("settings.data_import_export_tab"),icon:"download","data-tab-name":"dataImportExport"},[Object(a.m)(y)],8,b)):Object(a.i)("",!0),e.isLoggedIn?(Object(a.D)(),Object(a.j)("div",{key:4,label:e.$t("settings.mutes_and_blocks"),fullHeight:!0,icon:"eye-slash","data-tab-name":"mutesAndBlocks"},[Object(a.m)(w)],8,u)):Object(a.i)("",!0),Object(a.k)("div",{label:e.$t("settings.version.title"),icon:"info","data-tab-name":"version"},[Object(a.m)(_)],8,d)]),_:1},8,["body-scroll-lock"])}]]);t.default=ti}}]);
+//# sourceMappingURL=2.55d5f2926c7b22177236.js.map
\ No newline at end of file
similarity index 72%
rename from priv/static/static/js/2.eb2c361cdcbd8c4f7638.js.map
rename to priv/static/static/js/2.55d5f2926c7b22177236.js.map
index 5f31e87cf713f9898ea063e7a54da7410f11c47d..465c1ba5d00234ed9d358768c286911aa9d5df3a 100644 (file)
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///./src/components/importer/importer.vue?d395","webpack:///./src/components/exporter/exporter.vue?537f","webpack:///./src/components/autosuggest/autosuggest.vue?8acb","webpack:///./src/components/block_card/block_card.vue?a8c3","webpack:///./src/components/mute_card/mute_card.vue?336c","webpack:///./src/components/domain_mute_card/domain_mute_card.vue?e2f9","webpack:///./src/components/selectable_list/selectable_list.vue?793a","webpack:///./src/components/settings_modal/tabs/mutes_and_blocks_tab.scss?8059","webpack:///./src/components/settings_modal/helpers/modified_indicator.vue?669b","webpack:///./src/components/settings_modal/helpers/server_side_indicator.vue?f8f8","webpack:///./src/components/settings_modal/helpers/choice_setting.vue?2690","webpack:///./src/components/settings_modal/tabs/security_tab/mfa_backup_codes.vue?e13c","webpack:///./src/components/settings_modal/tabs/security_tab/mfa.vue?6215","webpack:///./src/components/image_cropper/image_cropper.vue?75b0","webpack:///./src/components/settings_modal/tabs/profile_tab.scss?3d82","webpack:///./src/components/color_input/color_input.scss?2d00","webpack:///./src/components/color_input/color_input.vue?c3ff","webpack:///./src/components/shadow_control/shadow_control.vue?4f4d","webpack:///./src/components/font_control/font_control.vue?a4dd","webpack:///./src/components/contrast_ratio/contrast_ratio.vue?232d","webpack:///./src/components/settings_modal/tabs/theme_tab/preview.vue?5bb1","webpack:///./src/components/settings_modal/tabs/theme_tab/theme_tab.scss?36c1","webpack:///./src/components/settings_modal/settings_modal_content.scss?5d58","webpack:///./src/components/settings_modal/tabs/data_import_export_tab.vue","webpack:///./src/components/importer/importer.vue","webpack:///./src/components/importer/importer.js","webpack:///./src/components/importer/importer.vue?12a4","webpack:///./src/components/exporter/exporter.vue","webpack:///./src/components/exporter/exporter.js","webpack:///./src/components/exporter/exporter.vue?bc56","webpack:///./src/components/settings_modal/tabs/data_import_export_tab.js","webpack:///./src/components/settings_modal/tabs/data_import_export_tab.vue?1279","webpack:///./src/components/settings_modal/tabs/mutes_and_blocks_tab.vue","webpack:///./src/components/autosuggest/autosuggest.vue","webpack:///./src/components/autosuggest/autosuggest.js","webpack:///./src/components/autosuggest/autosuggest.vue?c3ac","webpack:///./src/components/block_card/block_card.vue","webpack:///./src/components/block_card/block_card.js","webpack:///./src/components/block_card/block_card.vue?2c3e","webpack:///./src/components/mute_card/mute_card.vue","webpack:///./src/components/mute_card/mute_card.js","webpack:///./src/components/mute_card/mute_card.vue?640c","webpack:///./src/components/domain_mute_card/domain_mute_card.vue","webpack:///./src/components/domain_mute_card/domain_mute_card.js","webpack:///./src/components/domain_mute_card/domain_mute_card.vue?4954","webpack:///./src/components/selectable_list/selectable_list.vue","webpack:///./src/components/selectable_list/selectable_list.js","webpack:///./src/components/selectable_list/selectable_list.vue?e339","webpack:///./src/hocs/with_subscription/with_subscription.jsx","webpack:///./src/components/settings_modal/tabs/mutes_and_blocks_tab.js","webpack:///./src/components/settings_modal/tabs/mutes_and_blocks_tab.vue?0036","webpack:///./src/components/settings_modal/tabs/notifications_tab.vue","webpack:///./src/components/settings_modal/helpers/boolean_setting.vue","webpack:///./src/components/settings_modal/helpers/modified_indicator.vue","webpack:///./src/components/settings_modal/helpers/modified_indicator.vue?185b","webpack:///./src/components/settings_modal/helpers/server_side_indicator.vue","webpack:///./src/components/settings_modal/helpers/server_side_indicator.vue?5efa","webpack:///./src/components/settings_modal/helpers/boolean_setting.js","webpack:///./src/components/settings_modal/helpers/boolean_setting.vue?de4a","webpack:///./src/components/settings_modal/helpers/shared_computed_object.js","webpack:///./src/components/settings_modal/tabs/notifications_tab.js","webpack:///./src/components/settings_modal/tabs/notifications_tab.vue?656b","webpack:///./src/components/settings_modal/tabs/filtering_tab.vue","webpack:///./src/components/settings_modal/helpers/choice_setting.vue","webpack:///./src/components/settings_modal/helpers/choice_setting.js","webpack:///./src/components/settings_modal/helpers/choice_setting.vue?4d79","webpack:///./src/components/settings_modal/helpers/integer_setting.vue","webpack:///./src/components/settings_modal/helpers/integer_setting.js","webpack:///./src/components/settings_modal/helpers/integer_setting.vue?11fa","webpack:///./src/components/settings_modal/tabs/filtering_tab.js","webpack:///./src/components/settings_modal/tabs/filtering_tab.vue?75c6","webpack:///./src/components/settings_modal/tabs/security_tab/security_tab.vue","webpack:///./src/components/settings_modal/tabs/security_tab/mfa.vue","webpack:///./src/components/settings_modal/tabs/security_tab/mfa_backup_codes.vue","webpack:///./src/components/settings_modal/tabs/security_tab/mfa_backup_codes.js","webpack:///./src/components/settings_modal/tabs/security_tab/mfa_backup_codes.vue?02be","webpack:///./src/components/settings_modal/tabs/security_tab/mfa_totp.vue","webpack:///./src/components/settings_modal/tabs/security_tab/confirm.js","webpack:///./src/components/settings_modal/tabs/security_tab/confirm.vue?7300","webpack:///./src/components/settings_modal/tabs/security_tab/confirm.vue","webpack:///./src/components/settings_modal/tabs/security_tab/mfa_totp.js","webpack:///./src/components/settings_modal/tabs/security_tab/mfa.js","webpack:///./src/components/settings_modal/tabs/security_tab/mfa_totp.vue?3e9f","webpack:///./src/components/settings_modal/tabs/security_tab/mfa.vue?4581","webpack:///./src/components/settings_modal/tabs/security_tab/security_tab.js","webpack:///./src/components/settings_modal/tabs/security_tab/security_tab.vue?f4d0","webpack:///./src/components/settings_modal/tabs/profile_tab.vue","webpack:///./src/components/image_cropper/image_cropper.vue","webpack:///./src/components/image_cropper/image_cropper.js","webpack:///./src/components/image_cropper/image_cropper.vue?aa5f","webpack:///./src/components/settings_modal/tabs/profile_tab.js","webpack:///./src/components/settings_modal/tabs/profile_tab.vue?650d","webpack:///./src/components/settings_modal/tabs/general_tab.vue","webpack:///./src/components/settings_modal/tabs/general_tab.js","webpack:///./src/components/settings_modal/tabs/general_tab.vue?5ffb","webpack:///./src/components/settings_modal/tabs/version_tab.vue","webpack:///./src/services/version/version.service.js","webpack:///./src/components/settings_modal/tabs/version_tab.js","webpack:///./src/components/settings_modal/tabs/version_tab.vue?2afb","webpack:///./src/components/settings_modal/tabs/theme_tab/theme_tab.vue","webpack:///./src/components/color_input/color_input.vue","webpack:///./src/components/color_input/color_input.vue?602f","webpack:///./src/components/range_input/range_input.vue","webpack:///./src/components/range_input/range_input.vue?4741","webpack:///./src/components/opacity_input/opacity_input.vue","webpack:///./src/components/opacity_input/opacity_input.vue?db4a","webpack:///./src/components/shadow_control/shadow_control.vue","webpack:///./src/components/shadow_control/shadow_control.js","webpack:///./src/components/shadow_control/shadow_control.vue?74ae","webpack:///./src/components/font_control/font_control.vue","webpack:///./src/components/font_control/font_control.js","webpack:///./src/components/font_control/font_control.vue?6c0b","webpack:///./src/components/contrast_ratio/contrast_ratio.vue","webpack:///./src/components/contrast_ratio/contrast_ratio.vue?a879","webpack:///./src/components/settings_modal/tabs/theme_tab/preview.vue","webpack:///./src/components/settings_modal/tabs/theme_tab/preview.vue?166c","webpack:///./src/components/settings_modal/tabs/theme_tab/theme_tab.js","webpack:///./src/components/settings_modal/tabs/theme_tab/theme_tab.vue?0d26","webpack:///./src/components/settings_modal/settings_modal_content.js","webpack:///./src/components/settings_modal/settings_modal_content.vue?5ef5","webpack:///./src/components/settings_modal/settings_modal_content.vue"],"names":["class","library","add","faCircleNotch","faTimes","Importer","props","submitHandler","type","Function","required","submitButtonLabel","String","successMessage","errorMessage","data","file","error","success","submitting","methods","change","this","$refs","input","files","submit","dismiss","then","ref","spin","icon","$t","Exporter","getContent","filename","default","exportButtonLabel","processingMessage","processing","process","content","fileToDownload","document","createElement","setAttribute","encodeURIComponent","style","display","body","appendChild","click","removeChild","setTimeout","size","DataImportExportTab","activeTab","newDomainToMute","created","$store","dispatch","components","Checkbox","computed","mapState","backendInteractor","state","api","user","users","currentUser","getFollowsContent","exportFriends","id","generateExportableUsersContent","getBlocksContent","fetchBlocks","getMutesContent","fetchMutes","importFollows","status","Error","importBlocks","importMutes","map","is_local","screen_name","location","hostname","join","label","submit-handler","success-message","error-message","get-content","export-button-label","query","filter","placeholder","term","timeout","results","resultsVisible","filtered","watch","val","fetchResults","clearTimeout","onInputClick","onClickOutside","length","item","BlockCard","progress","getters","findUser","userId","relationship","blocked","blocking","BasicUserCard","unblockUser","blockUser","disabled","MuteCard","muted","muting","unmuteUser","muteUser","DomainMuteCard","ProgressButton","domainMutes","includes","domain","unmuteDomain","muteDomain","SelectableList","List","items","Array","getKey","selected","allKeys","filteredSelected","key","indexOf","allSelected","noneSelected","someSelected","isSelected","toggle","checked","push","splice","toggleAll","value","slice","model-value","indeterminate","get-key","empty","withSubscription","fetch","select","childPropName","additionalPropNames","WrappedComponent","Object","keys","getComponentProps","v","concat","loading","fetchedData","$props","refresh","isEmpty","fetchData","render","children","$slots","BlockList","get","MuteList","DomainMuteList","MutesAndBlocks","TabSwitcher","Autosuggest","knownDomains","instance","activateTab","tabName","filterUnblockedUsers","userIds","reject","filterUnMutedUsers","queryUserIds","blockUsers","ids","unblockUsers","muteUsers","unmuteUsers","filterUnMutedDomains","urls","url","queryKnownDomains","Promise","resolve","toLowerCase","unmuteDomains","domains","scrollable-tabs","user-id","row","i","header","faWrench","Popover","trigger","aria-label","faServer","ModifiedIndicator","ServerSideIndicator","pathDefault","path","split","firstSegment","rest","$parent","undefined","defaultState","isServerSide","startsWith","isChanged","matchesExpertLevel","expert","expertLevel","update","e","changed","server-side","SharedComputedObject","configDefaultState","defaultConfig","reduce","acc","mergedConfig","set","name","serverSideConfigDefaultState","serverSideConfig","useStreamingApi","console","NotificationsTab","notificationSettings","notification_settings","BooleanSetting","updateNotificationSettings","settings","Select","options","option","Boolean","min","Number","parseInt","target","for","step","FilteringTab","muteWordsStringLocal","muteWords","replyVisibilityOptions","mode","ChoiceSetting","IntegerSetting","muteWordsString","word","notificationVisibility","handler","deep","replyVisibility","streaming","hideFilteredStatuses","backupCodes","inProgress","codes","ready","displayTitle","code","Confirm","confirm","$emit","cancel","currentPassword","deactivate","isActivated","totp","doActivate","cancelDeactivate","doDeactivate","confirmDeactivate","mfaDisableOTP","password","res","Mfa","available","enabled","setupState","setupOTPState","getNewCodes","otpSettings","provisioning_uri","otpConfirmToken","readyInit","RecoveryCodes","VueQrcode","canSetupOTP","setupInProgress","backupCodesPrepared","setupOTPInProgress","completedOTP","prepareOTP","confirmOTP","confirmNewBackupCodes","activateOTP","fetchBackupCodes","generateMfaBackupCodes","getBackupCodes","confirmBackupCodes","cancelBackupCodes","setupOTP","mfaSetupOTP","doConfirmOTP","mfaConfirmOTP","token","completeSetup","fetchSettings","cancelSetup","settingsMFA","result","mounted","backup-codes","width","SecurityTab","newEmail","changeEmailError","changeEmailPassword","changedEmail","deletingAccount","deleteAccountConfirmPasswordInput","deleteAccountError","changePasswordInputs","changedPassword","changePasswordError","pleromaBackend","oauthTokens","tokens","oauthToken","appName","app_name","validUntil","Date","valid_until","toLocaleDateString","localeService","internalToBrowserLocale","$i18n","locale","confirmDelete","deleteAccount","$router","changePassword","params","newPassword","newPasswordConfirmation","logout","changeEmail","email","replace","revokeToken","window","t","autocomplete","ImageCropper","Element","cropperOptions","aspectRatio","autoCropArea","viewMode","movable","zoomable","guides","mimes","saveButtonLabel","saveWithoutCroppingButtonlabel","cancelButtonLabel","cropper","dataUrl","saveText","saveWithoutCroppingText","cancelText","destroy","cropping","pickImage","createCropper","Cropper","img","getTriggerDOM","querySelector","readFile","fileInput","reader","FileReader","onload","readAsDataURL","addEventListener","beforeUnmount","removeEventListener","src","alt","accept","faPlus","ProfileTab","newName","name_unescaped","newBio","unescape","description","newLocked","locked","newFields","fields","field","showRole","show_role","role","bot","pickAvatarBtnVisible","bannerUploading","backgroundUploading","banner","bannerPreview","background","backgroundPreview","emailLanguage","language","ScopeSelector","EmojiInput","InterfaceLanguageSwitcher","emojiUserSuggestor","suggestor","emoji","customEmoji","store","emojiSuggestor","userSuggestor","fieldsLimits","maxFields","defaultAvatar","server","defaultBanner","isDefaultAvatar","baseAvatar","profile_image_url","isDefaultBanner","baseBanner","cover_photo","isDefaultBackground","background_image","avatarImgSrc","profile_image_url_original","bannerImgSrc","updateProfile","note","display_name","fields_attributes","el","internalToBackendLocale","merge","commit","changeVis","visibility","newDefaultScope","addField","deleteField","index","event","$delete","uploadFile","slot","filesize","fileSizeFormatService","fileSizeFormat","allowedsize","messageKey","messageArgs","num","filesizeunit","unit","allowedsizeunit","level","resetAvatar","submitAvatar","resetBanner","submitBanner","resetBackground","submitBackground","that","updateAvatar","avatar","avatarName","updateProfileImages","displayUploadError","getCroppedCanvas","toBlob","message","enable-emoji-picker","suggest","_","hide-emoji-button","prompt-text","set-language","title","$event","serverSide_hideFollowers","serverSide_hideFollows","faGlobe","GeneralTab","subjectLineOptions","conversationDisplayOptions","conversationOtherRepliesButtonOptions","mentionLinkDisplayOptions","thirdColumnModeOptions","loopSilentAvailable","getOwnPropertyDescriptor","HTMLVideoElement","prototype","HTMLMediaElement","postFormats","postContentOptions","format","instanceSpecificPanelPresent","showInstanceSpecificPanel","instanceWallpaperUsed","instanceShoutboxPresent","shoutAvailable","interfaceLanguage","changeDefaultScope","conversationDisplay","hideNsfw","loopVideo","mentionLinkDisplay","show-all","user-default","serverSide_defaultScope","initial-scope","on-scope-change","VersionTab","backendVersion","frontendVersion","frontendVersionLink","backendVersionLink","versionString","matches","match","href","modelValue","fallback","showOptionalTickbox","emits","present","validColor","hex2rgb","transparentColor","computedColor","max","hardMax","hardMin","faChevronDown","faChevronUp","toModel","object","x","y","blur","spread","inset","color","alpha","selectedId","cValue","ColorInput","OpacityInput","del","Math","moveUp","moveDn","beforeUpdate","anyShadows","anyShadowsFallback","currentFallback","moveUpValid","moveDnValid","usingFallback","rgb","boxShadow","getCssShadow","shadow","fixed-width","show-optional-tickbox","scope","keypath","tag","lValue","availableOptions","noInherit","dValue","family","isCustom","preset","faAdjust","faExclamationTriangle","faThumbsUp","large","contrast","hint","levelVal","aaa","aa","context","ratio","text","hint_18pt","laaa","laa","faStar","faRetweet","faReply","v1OnlyNames","themeImporter","newImporter","validator","importValidator","onImport","onImportFailure","themeExporter","newExporter","getExportedObject","exportedTheme","availableStyles","selectedTheme","theme","themeWarning","tempImportFile","engineVersion","previewShadows","previewColors","previewRadii","previewFonts","shadowsInvalid","colorsInvalid","radiiInvalid","keepColor","keepShadows","keepOpacity","keepRoundness","keepFonts","SLOT_INHERITANCE","OPACITIES","shadowSelected","shadowsLocal","fontsLocal","btnRadiusLocal","inputRadiusLocal","checkboxRadiusLocal","panelRadiusLocal","avatarRadiusLocal","avatarAltRadiusLocal","attachmentRadiusLocal","tooltipRadiusLocal","chatMessageRadiusLocal","self","getThemes","promises","all","entries","k","themes","themesComplete","loadThemeFromLocalStorage","shadowsAvailable","themeWarningHelp","pre","origin","themeEngineVersion","noActionsPossible","CURRENT_VERSION","selectedVersion","isArray","currentColors","currentOpacity","currentRadii","btn","checkbox","panel","avatarAlt","tooltip","attachment","chatMessage","preview","composePreset","previewTheme","colors","opacity","radii","shadows","fonts","previewContrast","bg","colorsConverted","ratios","slotIsBaseText","textColor","layer","variant","opacitySlot","getOpacitySlot","textColors","layers","getLayers","textColorKey","newKey","toUpperCase","getContrastRatioLayers","toPrecision","warn","previewRules","rules","values","DEFAULT_SHADOWS","sort","currentShadowOverriden","currentShadow","currentShadowFallback","assign","themeValid","saveEverything","source","_pleroma_theme_version","isActive","tabSwitcher","RangeInput","ContrastRatio","ShadowControl","FontControl","Preview","loadTheme","fileVersion","forceUseSource","dismissWarning","version","snapshotEngineVersion","versionsMatch","sourceSnapshotMismatch","forcedSourceLoad","normalizeLocalState","forceLoadLocalStorage","forceLoad","forceSnapshot","confirmLoadSource","customTheme","customThemeSource","themeData","setCustomTheme","updatePreviewColorsAndShadows","generateColors","generateShadows","mod","importTheme","importData","exportTheme","exportData","parsed","forceSource","clearAll","clearV1","$data","endsWith","forEach","clearRoundness","clearOpacity","clearShadows","clearFonts","colors2to3","fg","fgColorLocal","rgb2hex","textColorLocal","Set","hex","isNaN","shadows2to3","generateRadii","getOwnPropertyNames","generateFonts","fontsInvalid","find","s","log","bgColorLocal","linkColorLocal","cRedColorLocal","cGreenColorLocal","cBlueColorLocal","cOrangeColorLocal","bgOpacityLocal","bgText","accentColorLocal","link","accent","bgLink","fgTextColorLocal","fgText","fgLinkColorLocal","fgLink","bgCRed","bgCBlue","bgCGreen","bgCOrange","postLinkColorLocal","postLink","postGreentextColorLocal","cGreen","postGreentext","alertErrorColorLocal","alertError","alertErrorTextColorLocal","alertErrorText","alertWarningColorLocal","alertWarning","alertWarningTextColorLocal","alertWarningText","alertNeutralColorLocal","alertNeutral","alertNeutralTextColorLocal","alertNeutralText","alertOpacityLocal","alert","badgeNotificationColorLocal","badgeNotification","badgeNotificationTextColorLocal","badgeNotificationText","panelColorLocal","panelOpacityLocal","panelTextColorLocal","panelText","panelLinkColorLocal","panelLink","topBarColorLocal","topBar","topBarTextColorLocal","topBarText","topBarLinkColorLocal","topBarLink","inputColorLocal","inputOpacityLocal","inputTextColorLocal","inputText","btnColorLocal","btnOpacityLocal","btnTextColorLocal","btnText","btnPanelTextColorLocal","btnPanelText","btnTopBarTextColorLocal","btnTopBarText","btnPressedColorLocal","btnPressed","btnPressedTextColorLocal","btnPressedText","btnPressedPanelTextColorLocal","btnPressedPanelText","btnPressedTopBarTextColorLocal","btnPressedTopBarText","btnDisabledColorLocal","btnDisabled","btnDisabledTextColorLocal","btnDisabledText","btnDisabledPanelTextColorLocal","btnDisabledPanelText","btnDisabledTopBarTextColorLocal","btnDisabledTopBarText","btnToggledColorLocal","btnToggled","btnToggledTextColorLocal","btnToggledText","btnToggledPanelTextColorLocal","btnToggledPanelText","btnToggledTopBarTextColorLocal","btnToggledTopBarText","tabColorLocal","tab","tabTextColorLocal","tabText","tabActiveTextColorLocal","tabActiveText","borderColorLocal","border","borderOpacityLocal","faintColorLocal","faint","faintLinkColorLocal","faintLink","panelFaintColorLocal","panelFaint","faintOpacityLocal","underlayColorLocal","underlay","underlayOpacityLocal","wallpaperColorLocal","wallpaper","pollColorLocal","poll","pollTextColorLocal","pollText","iconColorLocal","highlightColorLocal","highlight","highlightTextColorLocal","highlightText","highlightLinkColorLocal","highlightLink","popoverColorLocal","popover","popoverOpacityLocal","popoverTextColorLocal","popoverText","popoverLinkColorLocal","popoverLink","selectedPostColorLocal","selectedPost","selectedPostTextColorLocal","selectedPostText","selectedPostLinkColorLocal","selectedPostLink","selectedMenuColorLocal","selectedMenu","selectedMenuTextColorLocal","selectedMenuText","selectedMenuLinkColorLocal","selectedMenuLink","chatBgColorLocal","chatMessageIncomingBgColorLocal","chatMessageIncomingTextColorLocal","chatMessageIncomingLinkColorLocal","chatMessageIncomingBorderColorLocal","chatMessageOutgoingBgColorLocal","chatMessageOutgoingTextColorLocal","chatMessageOutgoingLinkColorLocal","chatMessageOutgoingBorderColorLocal","hard-min","interface","no-inherit","post","postCode","to","faUser","faFilter","faPaintBrush","faBell","faDownload","faEyeSlash","faInfo","SettingsModalContent","MutesAndBlocksTab","ThemeTab","isLoggedIn","open","settingsModalState","bodyLock","onOpen","targetTab","settingsModalTargetTab","tabIndex","findIndex","elm","setTab","side-tab-bar","body-scroll-lock","data-tab-name","fullHeight"],"mappings":"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","file":"static/js/2.eb2c361cdcbd8c4f7638.js","sourcesContent":["export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./importer.vue?vue&type=style&index=0&id=24f20fa0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./exporter.vue?vue&type=style&index=0&id=6357fe6a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./autosuggest.vue?vue&type=style&index=0&id=105e6799&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./block_card.vue?vue&type=style&index=0&id=0f5ac826&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./mute_card.vue?vue&type=style&index=0&id=5e3199a7&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./domain_mute_card.vue?vue&type=style&index=0&id=0b8ac930&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./selectable_list.vue?vue&type=style&index=0&id=356e33d2&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js!../../../../node_modules/sass-loader/lib/loader.js!./mutes_and_blocks_tab.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js!../../../../node_modules/sass-loader/lib/loader.js!../../../../node_modules/vue-loader/dist/index.js??ref--2!./modified_indicator.vue?vue&type=style&index=0&id=be0aa34e&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js!../../../../node_modules/sass-loader/lib/loader.js!../../../../node_modules/vue-loader/dist/index.js??ref--2!./server_side_indicator.vue?vue&type=style&index=0&id=35bf7f91&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js!../../../../node_modules/sass-loader/lib/loader.js!../../../../node_modules/vue-loader/dist/index.js??ref--2!./choice_setting.vue?vue&type=style&index=0&id=36cf5d2e&lang=scss\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js!../../../../../node_modules/sass-loader/lib/loader.js!../../../../../node_modules/vue-loader/dist/index.js??ref--2!./mfa_backup_codes.vue?vue&type=style&index=0&id=1284fe74&lang=scss\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js!../../../../../node_modules/sass-loader/lib/loader.js!../../../../../node_modules/vue-loader/dist/index.js??ref--2!./mfa.vue?vue&type=style&index=0&id=c62074fa&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./image_cropper.vue?vue&type=style&index=0&id=0bac39f0&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js!../../../../node_modules/sass-loader/lib/loader.js!./profile_tab.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./color_input.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./color_input.vue?vue&type=style&index=1&id=54780100&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./shadow_control.vue?vue&type=style&index=0&id=02a2d813&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./font_control.vue?vue&type=style&index=0&id=ceed00ba&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./contrast_ratio.vue?vue&type=style&index=0&id=6d90b7c4&lang=scss\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js!../../../../../node_modules/sass-loader/lib/loader.js!../../../../../node_modules/vue-loader/dist/index.js??ref--2!./preview.vue?vue&type=style&index=0&id=1d72aedf&lang=scss\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./theme_tab.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./settings_modal_content.scss?vue&type=style&index=0&lang=scss\"","<template>\n  <div\n    :label=\"$t('settings.data_import_export_tab')\"\n  >\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.follow_import') }}</h2>\n      <p>{{ $t('settings.import_followers_from_a_csv_file') }}</p>\n      <Importer\n        :submit-handler=\"importFollows\"\n        :success-message=\"$t('settings.follows_imported')\"\n        :error-message=\"$t('settings.follow_import_error')\"\n      />\n    </div>\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.follow_export') }}</h2>\n      <Exporter\n        :get-content=\"getFollowsContent\"\n        filename=\"friends.csv\"\n        :export-button-label=\"$t('settings.follow_export_button')\"\n      />\n    </div>\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.block_import') }}</h2>\n      <p>{{ $t('settings.import_blocks_from_a_csv_file') }}</p>\n      <Importer\n        :submit-handler=\"importBlocks\"\n        :success-message=\"$t('settings.blocks_imported')\"\n        :error-message=\"$t('settings.block_import_error')\"\n      />\n    </div>\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.block_export') }}</h2>\n      <Exporter\n        :get-content=\"getBlocksContent\"\n        filename=\"blocks.csv\"\n        :export-button-label=\"$t('settings.block_export_button')\"\n      />\n    </div>\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.mute_import') }}</h2>\n      <p>{{ $t('settings.import_mutes_from_a_csv_file') }}</p>\n      <Importer\n        :submit-handler=\"importMutes\"\n        :success-message=\"$t('settings.mutes_imported')\"\n        :error-message=\"$t('settings.mute_import_error')\"\n      />\n    </div>\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.mute_export') }}</h2>\n      <Exporter\n        :get-content=\"getMutesContent\"\n        filename=\"mutes.csv\"\n        :export-button-label=\"$t('settings.mute_export_button')\"\n      />\n    </div>\n  </div>\n</template>\n\n<script src=\"./data_import_export_tab.js\"></script>\n<!-- <style lang=\"scss\" src=\"./profile.scss\"></style> -->\n","<template>\n  <div class=\"importer\">\n    <form>\n      <input\n        ref=\"input\"\n        type=\"file\"\n        @change=\"change\"\n      >\n    </form>\n    <FAIcon\n      v-if=\"submitting\"\n      class=\"importer-uploading\"\n      spin\n      icon=\"circle-notch\"\n    />\n    <button\n      v-else\n      class=\"btn button-default\"\n      @click=\"submit\"\n    >\n      {{ submitButtonLabel || $t('importer.submit') }}\n    </button>\n    <div v-if=\"success\">\n      <button\n        class=\"button-unstyled\"\n        @click=\"dismiss\"\n      >\n        <FAIcon\n          icon=\"times\"\n        />\n      </button>\n      {{ ' ' }}\n      <span>{{ successMessage || $t('importer.success') }}</span>\n    </div>\n    <div v-else-if=\"error\">\n      <button\n        class=\"button-unstyled\"\n        @click=\"dismiss\"\n      >\n        <FAIcon\n          icon=\"times\"\n        />\n      </button>\n      {{ ' ' }}\n      <span>{{ errorMessage || $t('importer.error') }}</span>\n    </div>\n  </div>\n</template>\n\n<script src=\"./importer.js\"></script>\n\n<style lang=\"scss\">\n.importer {\n  &-uploading {\n    font-size: 1.5em;\n    margin: 0.25em;\n  }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faCircleNotch,\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch,\n  faTimes\n)\n\nconst Importer = {\n  props: {\n    submitHandler: {\n      type: Function,\n      required: true\n    },\n    submitButtonLabel: { type: String },\n    successMessage: { type: String },\n    errorMessage: { type: String }\n  },\n  data () {\n    return {\n      file: null,\n      error: false,\n      success: false,\n      submitting: false\n    }\n  },\n  methods: {\n    change () {\n      this.file = this.$refs.input.files[0]\n    },\n    submit () {\n      this.dismiss()\n      this.submitting = true\n      this.submitHandler(this.file)\n        .then(() => { this.success = true })\n        .catch(() => { this.error = true })\n        .finally(() => { this.submitting = false })\n    },\n    dismiss () {\n      this.success = false\n      this.error = false\n    }\n  }\n}\n\nexport default Importer\n","import { render } from \"./importer.vue?vue&type=template&id=24f20fa0\"\nimport script from \"./importer.js?vue&type=script&lang=js\"\nexport * from \"./importer.js?vue&type=script&lang=js\"\n\nimport \"./importer.vue?vue&type=style&index=0&id=24f20fa0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"exporter\">\n    <div v-if=\"processing\">\n      <FAIcon\n        icon=\"circle-notch\"\n        size=\"lg\"\n        spin\n      />\n\n      <span>{{ processingMessage || $t('exporter.processing') }}</span>\n    </div>\n    <button\n      v-else\n      class=\"btn button-default\"\n      @click=\"process\"\n    >\n      {{ exportButtonLabel || $t('exporter.export') }}\n    </button>\n  </div>\n</template>\n\n<script src=\"./exporter.js\"></script>\n\n<style lang=\"scss\">\n.exporter {\n  &-processing {\n    margin: 0.25em;\n  }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch\n)\n\nconst Exporter = {\n  props: {\n    getContent: {\n      type: Function,\n      required: true\n    },\n    filename: {\n      type: String,\n      default: 'export.csv'\n    },\n    exportButtonLabel: { type: String },\n    processingMessage: { type: String }\n  },\n  data () {\n    return {\n      processing: false\n    }\n  },\n  methods: {\n    process () {\n      this.processing = true\n      this.getContent()\n        .then((content) => {\n          const fileToDownload = document.createElement('a')\n          fileToDownload.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(content))\n          fileToDownload.setAttribute('download', this.filename)\n          fileToDownload.style.display = 'none'\n          document.body.appendChild(fileToDownload)\n          fileToDownload.click()\n          document.body.removeChild(fileToDownload)\n          // Add delay before hiding processing state since browser takes some time to handle file download\n          setTimeout(() => { this.processing = false }, 2000)\n        })\n    }\n  }\n}\n\nexport default Exporter\n","import { render } from \"./exporter.vue?vue&type=template&id=6357fe6a\"\nimport script from \"./exporter.js?vue&type=script&lang=js\"\nexport * from \"./exporter.js?vue&type=script&lang=js\"\n\nimport \"./exporter.vue?vue&type=style&index=0&id=6357fe6a&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Importer from 'src/components/importer/importer.vue'\nimport Exporter from 'src/components/exporter/exporter.vue'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\nimport { mapState } from 'vuex'\n\nconst DataImportExportTab = {\n  data () {\n    return {\n      activeTab: 'profile',\n      newDomainToMute: ''\n    }\n  },\n  created () {\n    this.$store.dispatch('fetchTokens')\n  },\n  components: {\n    Importer,\n    Exporter,\n    Checkbox\n  },\n  computed: {\n    ...mapState({\n      backendInteractor: (state) => state.api.backendInteractor,\n      user: (state) => state.users.currentUser\n    })\n  },\n  methods: {\n    getFollowsContent () {\n      return this.backendInteractor.exportFriends({ id: this.user.id })\n        .then(this.generateExportableUsersContent)\n    },\n    getBlocksContent () {\n      return this.backendInteractor.fetchBlocks()\n        .then(this.generateExportableUsersContent)\n    },\n    getMutesContent () {\n      return this.backendInteractor.fetchMutes()\n        .then(this.generateExportableUsersContent)\n    },\n    importFollows (file) {\n      return this.backendInteractor.importFollows({ file })\n        .then((status) => {\n          if (!status) {\n            throw new Error('failed')\n          }\n        })\n    },\n    importBlocks (file) {\n      return this.backendInteractor.importBlocks({ file })\n        .then((status) => {\n          if (!status) {\n            throw new Error('failed')\n          }\n        })\n    },\n    importMutes (file) {\n      return this.backendInteractor.importMutes({ file })\n        .then((status) => {\n          if (!status) {\n            throw new Error('failed')\n          }\n        })\n    },\n    generateExportableUsersContent (users) {\n      // Get addresses\n      return users.map((user) => {\n        // check is it's a local user\n        if (user && user.is_local) {\n          // append the instance address\n          // eslint-disable-next-line no-undef\n          return user.screen_name + '@' + location.hostname\n        }\n        return user.screen_name\n      }).join('\\n')\n    }\n  }\n}\n\nexport default DataImportExportTab\n","import { render } from \"./data_import_export_tab.vue?vue&type=template&id=492b1b68\"\nimport script from \"./data_import_export_tab.js?vue&type=script&lang=js\"\nexport * from \"./data_import_export_tab.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <tab-switcher\n    :scrollable-tabs=\"true\"\n    class=\"mutes-and-blocks-tab\"\n  >\n    <div :label=\"$t('settings.blocks_tab')\">\n      <div class=\"usersearch-wrapper\">\n        <Autosuggest\n          :filter=\"filterUnblockedUsers\"\n          :query=\"queryUserIds\"\n          :placeholder=\"$t('settings.search_user_to_block')\"\n        >\n          <template v-slot=\"row\">\n            <BlockCard\n              :user-id=\"row.item\"\n            />\n          </template>\n        </Autosuggest>\n      </div>\n      <BlockList\n        :refresh=\"true\"\n        :get-key=\"i => i\"\n      >\n        <template v-slot:header=\"{selected}\">\n          <div class=\"bulk-actions\">\n            <ProgressButton\n              v-if=\"selected.length > 0\"\n              class=\"btn button-default bulk-action-button\"\n              :click=\"() => blockUsers(selected)\"\n            >\n              {{ $t('user_card.block') }}\n              <template v-slot:progress>\n                {{ $t('user_card.block_progress') }}\n              </template>\n            </ProgressButton>\n            <ProgressButton\n              v-if=\"selected.length > 0\"\n              class=\"btn button-default\"\n              :click=\"() => unblockUsers(selected)\"\n            >\n              {{ $t('user_card.unblock') }}\n              <template v-slot:progress>\n                {{ $t('user_card.unblock_progress') }}\n              </template>\n            </ProgressButton>\n          </div>\n        </template>\n        <template v-slot:item=\"{item}\">\n          <BlockCard :user-id=\"item\" />\n        </template>\n        <template v-slot:empty>\n          {{ $t('settings.no_blocks') }}\n        </template>\n      </BlockList>\n    </div>\n\n    <div :label=\"$t('settings.mutes_tab')\">\n      <tab-switcher>\n        <div label=\"Users\">\n          <div class=\"usersearch-wrapper\">\n            <Autosuggest\n              :filter=\"filterUnMutedUsers\"\n              :query=\"queryUserIds\"\n              :placeholder=\"$t('settings.search_user_to_mute')\"\n            >\n              <template v-slot=\"row\">\n                <MuteCard\n                  :user-id=\"row.item\"\n                />\n              </template>\n            </Autosuggest>\n          </div>\n          <MuteList\n            :refresh=\"true\"\n            :get-key=\"i => i\"\n          >\n            <template v-slot:header=\"{selected}\">\n              <div class=\"bulk-actions\">\n                <ProgressButton\n                  v-if=\"selected.length > 0\"\n                  class=\"btn button-default\"\n                  :click=\"() => muteUsers(selected)\"\n                >\n                  {{ $t('user_card.mute') }}\n                  <template v-slot:progress>\n                    {{ $t('user_card.mute_progress') }}\n                  </template>\n                </ProgressButton>\n                <ProgressButton\n                  v-if=\"selected.length > 0\"\n                  class=\"btn button-default\"\n                  :click=\"() => unmuteUsers(selected)\"\n                >\n                  {{ $t('user_card.unmute') }}\n                  <template v-slot:progress>\n                    {{ $t('user_card.unmute_progress') }}\n                  </template>\n                </ProgressButton>\n              </div>\n            </template>\n            <template v-slot:item=\"{item}\">\n              <MuteCard :user-id=\"item\" />\n            </template>\n            <template v-slot:empty>\n              {{ $t('settings.no_mutes') }}\n            </template>\n          </MuteList>\n        </div>\n\n        <div :label=\"$t('settings.domain_mutes')\">\n          <div class=\"domain-mute-form\">\n            <Autosuggest\n              :filter=\"filterUnMutedDomains\"\n              :query=\"queryKnownDomains\"\n              :placeholder=\"$t('settings.type_domains_to_mute')\"\n            >\n              <template v-slot=\"row\">\n                <DomainMuteCard\n                  :domain=\"row.item\"\n                />\n              </template>\n            </Autosuggest>\n          </div>\n          <DomainMuteList\n            :refresh=\"true\"\n            :get-key=\"i => i\"\n          >\n            <template v-slot:header=\"{selected}\">\n              <div class=\"bulk-actions\">\n                <ProgressButton\n                  v-if=\"selected.length > 0\"\n                  class=\"btn button-default\"\n                  :click=\"() => unmuteDomains(selected)\"\n                >\n                  {{ $t('domain_mute_card.unmute') }}\n                  <template v-slot:progress>\n                    {{ $t('domain_mute_card.unmute_progress') }}\n                  </template>\n                </ProgressButton>\n              </div>\n            </template>\n            <template v-slot:item=\"{item}\">\n              <DomainMuteCard :domain=\"item\" />\n            </template>\n            <template v-slot:empty>\n              {{ $t('settings.no_mutes') }}\n            </template>\n          </DomainMuteList>\n        </div>\n      </tab-switcher>\n    </div>\n  </tab-switcher>\n</template>\n\n<script src=\"./mutes_and_blocks_tab.js\"></script>\n<style lang=\"scss\" src=\"./mutes_and_blocks_tab.scss\"></style>\n","<template>\n  <div\n    v-click-outside=\"onClickOutside\"\n    class=\"autosuggest\"\n  >\n    <input\n      v-model=\"term\"\n      :placeholder=\"placeholder\"\n      class=\"autosuggest-input\"\n      @click=\"onInputClick\"\n    >\n    <div\n      v-if=\"resultsVisible && filtered.length > 0\"\n      class=\"autosuggest-results\"\n    >\n      <slot\n        v-for=\"item in filtered\"\n        :item=\"item\"\n      />\n    </div>\n  </div>\n</template>\n\n<script src=\"./autosuggest.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.autosuggest {\n  position: relative;\n\n  &-input {\n    display: block;\n    width: 100%;\n  }\n\n  &-results {\n    position: absolute;\n    left: 0;\n    top: 100%;\n    right: 0;\n    max-height: 400px;\n    background-color: $fallback--bg;\n    background-color: var(--bg, $fallback--bg);\n    border-style: solid;\n    border-width: 1px;\n    border-color: $fallback--border;\n    border-color: var(--border, $fallback--border);\n    border-radius: $fallback--inputRadius;\n    border-radius: var(--inputRadius, $fallback--inputRadius);\n    border-top-left-radius: 0;\n    border-top-right-radius: 0;\n    box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.6);\n    box-shadow: var(--panelShadow);\n    overflow-y: auto;\n    z-index: 1;\n  }\n}\n</style>\n","const debounceMilliseconds = 500\n\nexport default {\n  props: {\n    query: { // function to query results and return a promise\n      type: Function,\n      required: true\n    },\n    filter: { // function to filter results in real time\n      type: Function\n    },\n    placeholder: {\n      type: String,\n      default: 'Search...'\n    }\n  },\n  data () {\n    return {\n      term: '',\n      timeout: null,\n      results: [],\n      resultsVisible: false\n    }\n  },\n  computed: {\n    filtered () {\n      return this.filter ? this.filter(this.results) : this.results\n    }\n  },\n  watch: {\n    term (val) {\n      this.fetchResults(val)\n    }\n  },\n  methods: {\n    fetchResults (term) {\n      clearTimeout(this.timeout)\n      this.timeout = setTimeout(() => {\n        this.results = []\n        if (term) {\n          this.query(term).then((results) => { this.results = results })\n        }\n      }, debounceMilliseconds)\n    },\n    onInputClick () {\n      this.resultsVisible = true\n    },\n    onClickOutside () {\n      this.resultsVisible = false\n    }\n  }\n}\n","import { render } from \"./autosuggest.vue?vue&type=template&id=105e6799\"\nimport script from \"./autosuggest.js?vue&type=script&lang=js\"\nexport * from \"./autosuggest.js?vue&type=script&lang=js\"\n\nimport \"./autosuggest.vue?vue&type=style&index=0&id=105e6799&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <basic-user-card :user=\"user\">\n    <div class=\"block-card-content-container\">\n      <button\n        v-if=\"blocked\"\n        class=\"btn button-default\"\n        :disabled=\"progress\"\n        @click=\"unblockUser\"\n      >\n        <template v-if=\"progress\">\n          {{ $t('user_card.unblock_progress') }}\n        </template>\n        <template v-else>\n          {{ $t('user_card.unblock') }}\n        </template>\n      </button>\n      <button\n        v-else\n        class=\"btn button-default\"\n        :disabled=\"progress\"\n        @click=\"blockUser\"\n      >\n        <template v-if=\"progress\">\n          {{ $t('user_card.block_progress') }}\n        </template>\n        <template v-else>\n          {{ $t('user_card.block') }}\n        </template>\n      </button>\n    </div>\n  </basic-user-card>\n</template>\n\n<script src=\"./block_card.js\"></script>\n\n<style lang=\"scss\">\n.block-card-content-container {\n  margin-top: 0.5em;\n  text-align: right;\n  button {\n    width: 10em;\n  }\n}\n</style>\n","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\n\nconst BlockCard = {\n  props: ['userId'],\n  data () {\n    return {\n      progress: false\n    }\n  },\n  computed: {\n    user () {\n      return this.$store.getters.findUser(this.userId)\n    },\n    relationship () {\n      return this.$store.getters.relationship(this.userId)\n    },\n    blocked () {\n      return this.relationship.blocking\n    }\n  },\n  components: {\n    BasicUserCard\n  },\n  methods: {\n    unblockUser () {\n      this.progress = true\n      this.$store.dispatch('unblockUser', this.user.id).then(() => {\n        this.progress = false\n      })\n    },\n    blockUser () {\n      this.progress = true\n      this.$store.dispatch('blockUser', this.user.id).then(() => {\n        this.progress = false\n      })\n    }\n  }\n}\n\nexport default BlockCard\n","import { render } from \"./block_card.vue?vue&type=template&id=0f5ac826\"\nimport script from \"./block_card.js?vue&type=script&lang=js\"\nexport * from \"./block_card.js?vue&type=script&lang=js\"\n\nimport \"./block_card.vue?vue&type=style&index=0&id=0f5ac826&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <basic-user-card :user=\"user\">\n    <div class=\"mute-card-content-container\">\n      <button\n        v-if=\"muted\"\n        class=\"btn button-default\"\n        :disabled=\"progress\"\n        @click=\"unmuteUser\"\n      >\n        <template v-if=\"progress\">\n          {{ $t('user_card.unmute_progress') }}\n        </template>\n        <template v-else>\n          {{ $t('user_card.unmute') }}\n        </template>\n      </button>\n      <button\n        v-else\n        class=\"btn button-default\"\n        :disabled=\"progress\"\n        @click=\"muteUser\"\n      >\n        <template v-if=\"progress\">\n          {{ $t('user_card.mute_progress') }}\n        </template>\n        <template v-else>\n          {{ $t('user_card.mute') }}\n        </template>\n      </button>\n    </div>\n  </basic-user-card>\n</template>\n\n<script src=\"./mute_card.js\"></script>\n\n<style lang=\"scss\">\n.mute-card-content-container {\n  margin-top: 0.5em;\n  text-align: right;\n  button {\n    width: 10em;\n  }\n}\n</style>\n","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\n\nconst MuteCard = {\n  props: ['userId'],\n  data () {\n    return {\n      progress: false\n    }\n  },\n  computed: {\n    user () {\n      return this.$store.getters.findUser(this.userId)\n    },\n    relationship () {\n      return this.$store.getters.relationship(this.userId)\n    },\n    muted () {\n      return this.relationship.muting\n    }\n  },\n  components: {\n    BasicUserCard\n  },\n  methods: {\n    unmuteUser () {\n      this.progress = true\n      this.$store.dispatch('unmuteUser', this.userId).then(() => {\n        this.progress = false\n      })\n    },\n    muteUser () {\n      this.progress = true\n      this.$store.dispatch('muteUser', this.userId).then(() => {\n        this.progress = false\n      })\n    }\n  }\n}\n\nexport default MuteCard\n","import { render } from \"./mute_card.vue?vue&type=template&id=5e3199a7\"\nimport script from \"./mute_card.js?vue&type=script&lang=js\"\nexport * from \"./mute_card.js?vue&type=script&lang=js\"\n\nimport \"./mute_card.vue?vue&type=style&index=0&id=5e3199a7&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"domain-mute-card\">\n    <div class=\"domain-mute-card-domain\">\n      {{ domain }}\n    </div>\n    <ProgressButton\n      v-if=\"muted\"\n      :click=\"unmuteDomain\"\n      class=\"btn button-default\"\n    >\n      {{ $t('domain_mute_card.unmute') }}\n      <template v-slot:progress>\n        {{ $t('domain_mute_card.unmute_progress') }}\n      </template>\n    </ProgressButton>\n    <ProgressButton\n      v-else\n      :click=\"muteDomain\"\n      class=\"btn button-default\"\n    >\n      {{ $t('domain_mute_card.mute') }}\n      <template v-slot:progress>\n        {{ $t('domain_mute_card.mute_progress') }}\n      </template>\n    </ProgressButton>\n  </div>\n</template>\n\n<script src=\"./domain_mute_card.js\"></script>\n\n<style lang=\"scss\">\n.domain-mute-card {\n  flex: 1 0;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  padding: 0.6em 1em 0.6em 0;\n\n  &-domain {\n    margin-right: 1em;\n    overflow: hidden;\n    text-overflow: ellipsis;\n  }\n\n  button {\n    width: 10em;\n  }\n\n  .autosuggest-results & {\n    padding-left: 1em;\n  }\n}\n</style>\n","import ProgressButton from '../progress_button/progress_button.vue'\n\nconst DomainMuteCard = {\n  props: ['domain'],\n  components: {\n    ProgressButton\n  },\n  computed: {\n    user () {\n      return this.$store.state.users.currentUser\n    },\n    muted () {\n      return this.user.domainMutes.includes(this.domain)\n    }\n  },\n  methods: {\n    unmuteDomain () {\n      return this.$store.dispatch('unmuteDomain', this.domain)\n    },\n    muteDomain () {\n      return this.$store.dispatch('muteDomain', this.domain)\n    }\n  }\n}\n\nexport default DomainMuteCard\n","import { render } from \"./domain_mute_card.vue?vue&type=template&id=0b8ac930\"\nimport script from \"./domain_mute_card.js?vue&type=script&lang=js\"\nexport * from \"./domain_mute_card.js?vue&type=script&lang=js\"\n\nimport \"./domain_mute_card.vue?vue&type=style&index=0&id=0b8ac930&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"selectable-list\">\n    <div\n      v-if=\"items.length > 0\"\n      class=\"selectable-list-header\"\n    >\n      <div class=\"selectable-list-checkbox-wrapper\">\n        <Checkbox\n          :model-value=\"allSelected\"\n          :indeterminate=\"someSelected\"\n          @update:model-value=\"toggleAll\"\n        >\n          {{ $t('selectable_list.select_all') }}\n        </Checkbox>\n      </div>\n      <div class=\"selectable-list-header-actions\">\n        <slot\n          name=\"header\"\n          :selected=\"filteredSelected\"\n        />\n      </div>\n    </div>\n    <List\n      :items=\"items\"\n      :get-key=\"getKey\"\n    >\n      <template v-slot:item=\"{item}\">\n        <div\n          class=\"selectable-list-item-inner\"\n          :class=\"{ 'selectable-list-item-selected-inner': isSelected(item) }\"\n        >\n          <div class=\"selectable-list-checkbox-wrapper\">\n            <Checkbox\n              :model-value=\"isSelected(item)\"\n              @update:model-value=\"checked => toggle(checked, item)\"\n            />\n          </div>\n          <slot\n            name=\"item\"\n            :item=\"item\"\n          />\n        </div>\n      </template>\n      <template v-slot:empty>\n        <slot name=\"empty\" />\n      </template>\n    </List>\n  </div>\n</template>\n\n<script src=\"./selectable_list.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.selectable-list {\n  &-item-inner {\n    display: flex;\n    align-items: center;\n\n    > * {\n      min-width: 0;\n    }\n  }\n\n  &-item-selected-inner {\n    background-color: $fallback--lightBg;\n    background-color: var(--selectedMenu, $fallback--lightBg);\n    color: var(--selectedMenuText, $fallback--text);\n    --faint: var(--selectedMenuFaintText, $fallback--faint);\n    --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n    --lightText: var(--selectedMenuLightText, $fallback--lightText);\n    --icon: var(--selectedMenuIcon, $fallback--icon);\n  }\n\n  &-header {\n    display: flex;\n    align-items: center;\n    padding: 0.6em 0;\n    border-bottom: 2px solid;\n    border-bottom-color: $fallback--border;\n    border-bottom-color: var(--border, $fallback--border);\n\n    &-actions {\n      flex: 1;\n    }\n  }\n\n  &-checkbox-wrapper {\n    padding: 0 10px;\n    flex: none;\n  }\n}\n</style>\n","import List from '../list/list.vue'\nimport Checkbox from '../checkbox/checkbox.vue'\n\nconst SelectableList = {\n  components: {\n    List,\n    Checkbox\n  },\n  props: {\n    items: {\n      type: Array,\n      default: () => []\n    },\n    getKey: {\n      type: Function,\n      default: item => item.id\n    }\n  },\n  data () {\n    return {\n      selected: []\n    }\n  },\n  computed: {\n    allKeys () {\n      return this.items.map(this.getKey)\n    },\n    filteredSelected () {\n      return this.allKeys.filter(key => this.selected.indexOf(key) !== -1)\n    },\n    allSelected () {\n      return this.filteredSelected.length === this.items.length\n    },\n    noneSelected () {\n      return this.filteredSelected.length === 0\n    },\n    someSelected () {\n      return !this.allSelected && !this.noneSelected\n    }\n  },\n  methods: {\n    isSelected (item) {\n      return this.filteredSelected.indexOf(this.getKey(item)) !== -1\n    },\n    toggle (checked, item) {\n      const key = this.getKey(item)\n      const oldChecked = this.isSelected(key)\n      if (checked !== oldChecked) {\n        if (checked) {\n          this.selected.push(key)\n        } else {\n          this.selected.splice(this.selected.indexOf(key), 1)\n        }\n      }\n    },\n    toggleAll (value) {\n      if (value) {\n        this.selected = this.allKeys.slice(0)\n      } else {\n        this.selected = []\n      }\n    }\n  }\n}\n\nexport default SelectableList\n","import { render } from \"./selectable_list.vue?vue&type=template&id=356e33d2\"\nimport script from \"./selectable_list.js?vue&type=script&lang=js\"\nexport * from \"./selectable_list.js?vue&type=script&lang=js\"\n\nimport \"./selectable_list.vue?vue&type=style&index=0&id=356e33d2&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// eslint-disable-next-line no-unused\nimport { h } from 'vue'\nimport isEmpty from 'lodash/isEmpty'\nimport { getComponentProps } from '../../services/component_utils/component_utils'\nimport './with_subscription.scss'\n\nimport { FontAwesomeIcon as FAIcon } from '@fortawesome/vue-fontawesome'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch\n)\n\nconst withSubscription = ({\n  fetch, // function to fetch entries and return a promise\n  select, // function to select data from store\n  childPropName = 'content', // name of the prop to be passed into the wrapped component\n  additionalPropNames = [] // additional prop name list of the wrapper component\n}) => (WrappedComponent) => {\n  const originalProps = Object.keys(getComponentProps(WrappedComponent))\n  const props = originalProps.filter(v => v !== childPropName).concat(additionalPropNames)\n\n  return {\n    props: [\n      ...props,\n      'refresh' // boolean saying to force-fetch data whenever created\n    ],\n    data () {\n      return {\n        loading: false,\n        error: false\n      }\n    },\n    computed: {\n      fetchedData () {\n        return select(this.$props, this.$store)\n      }\n    },\n    created () {\n      if (this.refresh || isEmpty(this.fetchedData)) {\n        this.fetchData()\n      }\n    },\n    methods: {\n      fetchData () {\n        if (!this.loading) {\n          this.loading = true\n          this.error = false\n          fetch(this.$props, this.$store)\n            .then(() => {\n              this.loading = false\n            })\n            .catch(() => {\n              this.error = true\n              this.loading = false\n            })\n        }\n      }\n    },\n    render () {\n      if (!this.error && !this.loading) {\n        const props = {\n          ...this.$props,\n          [childPropName]: this.fetchedData\n        }\n        const children = this.$slots\n        return (\n          <div class=\"with-subscription\">\n            <WrappedComponent {...props}>\n              {children}\n            </WrappedComponent>\n          </div>\n        )\n      } else {\n        return (\n          <div class=\"with-subscription-loading\">\n            {this.error\n              ? <a onClick={this.fetchData} class=\"alert error\">{this.$t('general.generic_error')}</a>\n              : <FAIcon spin icon=\"circle-notch\"/>\n            }\n          </div>\n        )\n      }\n    }\n  }\n}\n\nexport default withSubscription\n","import get from 'lodash/get'\nimport map from 'lodash/map'\nimport reject from 'lodash/reject'\nimport Autosuggest from 'src/components/autosuggest/autosuggest.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\nimport BlockCard from 'src/components/block_card/block_card.vue'\nimport MuteCard from 'src/components/mute_card/mute_card.vue'\nimport DomainMuteCard from 'src/components/domain_mute_card/domain_mute_card.vue'\nimport SelectableList from 'src/components/selectable_list/selectable_list.vue'\nimport ProgressButton from 'src/components/progress_button/progress_button.vue'\nimport withSubscription from 'src/components/../hocs/with_subscription/with_subscription'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\n\nconst BlockList = withSubscription({\n  fetch: (props, $store) => $store.dispatch('fetchBlocks'),\n  select: (props, $store) => get($store.state.users.currentUser, 'blockIds', []),\n  childPropName: 'items'\n})(SelectableList)\n\nconst MuteList = withSubscription({\n  fetch: (props, $store) => $store.dispatch('fetchMutes'),\n  select: (props, $store) => get($store.state.users.currentUser, 'muteIds', []),\n  childPropName: 'items'\n})(SelectableList)\n\nconst DomainMuteList = withSubscription({\n  fetch: (props, $store) => $store.dispatch('fetchDomainMutes'),\n  select: (props, $store) => get($store.state.users.currentUser, 'domainMutes', []),\n  childPropName: 'items'\n})(SelectableList)\n\nconst MutesAndBlocks = {\n  data () {\n    return {\n      activeTab: 'profile'\n    }\n  },\n  created () {\n    this.$store.dispatch('fetchTokens')\n    this.$store.dispatch('getKnownDomains')\n  },\n  components: {\n    TabSwitcher,\n    BlockList,\n    MuteList,\n    DomainMuteList,\n    BlockCard,\n    MuteCard,\n    DomainMuteCard,\n    ProgressButton,\n    Autosuggest,\n    Checkbox\n  },\n  computed: {\n    knownDomains () {\n      return this.$store.state.instance.knownDomains\n    },\n    user () {\n      return this.$store.state.users.currentUser\n    }\n  },\n  methods: {\n    importFollows (file) {\n      return this.$store.state.api.backendInteractor.importFollows({ file })\n        .then((status) => {\n          if (!status) {\n            throw new Error('failed')\n          }\n        })\n    },\n    importBlocks (file) {\n      return this.$store.state.api.backendInteractor.importBlocks({ file })\n        .then((status) => {\n          if (!status) {\n            throw new Error('failed')\n          }\n        })\n    },\n    generateExportableUsersContent (users) {\n      // Get addresses\n      return users.map((user) => {\n        // check is it's a local user\n        if (user && user.is_local) {\n          // append the instance address\n          // eslint-disable-next-line no-undef\n          return user.screen_name + '@' + location.hostname\n        }\n        return user.screen_name\n      }).join('\\n')\n    },\n    activateTab (tabName) {\n      this.activeTab = tabName\n    },\n    filterUnblockedUsers (userIds) {\n      return reject(userIds, (userId) => {\n        const relationship = this.$store.getters.relationship(this.userId)\n        return relationship.blocking || userId === this.user.id\n      })\n    },\n    filterUnMutedUsers (userIds) {\n      return reject(userIds, (userId) => {\n        const relationship = this.$store.getters.relationship(this.userId)\n        return relationship.muting || userId === this.user.id\n      })\n    },\n    queryUserIds (query) {\n      return this.$store.dispatch('searchUsers', { query })\n        .then((users) => map(users, 'id'))\n    },\n    blockUsers (ids) {\n      return this.$store.dispatch('blockUsers', ids)\n    },\n    unblockUsers (ids) {\n      return this.$store.dispatch('unblockUsers', ids)\n    },\n    muteUsers (ids) {\n      return this.$store.dispatch('muteUsers', ids)\n    },\n    unmuteUsers (ids) {\n      return this.$store.dispatch('unmuteUsers', ids)\n    },\n    filterUnMutedDomains (urls) {\n      return urls.filter(url => !this.user.domainMutes.includes(url))\n    },\n    queryKnownDomains (query) {\n      return new Promise((resolve, reject) => {\n        resolve(this.knownDomains.filter(url => url.toLowerCase().includes(query)))\n      })\n    },\n    unmuteDomains (domains) {\n      return this.$store.dispatch('unmuteDomains', domains)\n    }\n  }\n}\n\nexport default MutesAndBlocks\n","import { render } from \"./mutes_and_blocks_tab.vue?vue&type=template&id=d98eb706\"\nimport script from \"./mutes_and_blocks_tab.js?vue&type=script&lang=js\"\nexport * from \"./mutes_and_blocks_tab.js?vue&type=script&lang=js\"\n\nimport \"./mutes_and_blocks_tab.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div :label=\"$t('settings.notifications')\">\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.notification_setting_filters') }}</h2>\n      <ul class=\"setting-list\">\n        <li>\n          <BooleanSetting path=\"serverSide_blockNotificationsFromStrangers\">\n            {{ $t('settings.notification_setting_block_from_strangers') }}\n          </BooleanSetting>\n        </li>\n        <li class=\"select-multiple\">\n          <span class=\"label\">{{ $t('settings.notification_visibility') }}</span>\n          <ul class=\"option-list\">\n            <li>\n              <BooleanSetting path=\"notificationVisibility.likes\">\n                {{ $t('settings.notification_visibility_likes') }}\n              </BooleanSetting>\n            </li>\n            <li>\n              <BooleanSetting path=\"notificationVisibility.repeats\">\n                {{ $t('settings.notification_visibility_repeats') }}\n              </BooleanSetting>\n            </li>\n            <li>\n              <BooleanSetting path=\"notificationVisibility.follows\">\n                {{ $t('settings.notification_visibility_follows') }}\n              </BooleanSetting>\n            </li>\n            <li>\n              <BooleanSetting path=\"notificationVisibility.mentions\">\n                {{ $t('settings.notification_visibility_mentions') }}\n              </BooleanSetting>\n            </li>\n            <li>\n              <BooleanSetting path=\"notificationVisibility.moves\">\n                {{ $t('settings.notification_visibility_moves') }}\n              </BooleanSetting>\n            </li>\n            <li>\n              <BooleanSetting path=\"notificationVisibility.emojiReactions\">\n                {{ $t('settings.notification_visibility_emoji_reactions') }}\n              </BooleanSetting>\n            </li>\n            <li>\n              <BooleanSetting path=\"notificationVisibility.polls\">\n                {{ $t('settings.notification_visibility_polls') }}\n              </BooleanSetting>\n            </li>\n          </ul>\n        </li>\n      </ul>\n    </div>\n\n    <div\n      v-if=\"expertLevel > 0\"\n      class=\"setting-item\"\n    >\n      <h2>{{ $t('settings.notification_setting_privacy') }}</h2>\n      <ul class=\"setting-list\">\n        <li>\n          <BooleanSetting\n            path=\"webPushNotifications\"\n            expert=\"1\"\n          >\n            {{ $t('settings.enable_web_push_notifications') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting\n            path=\"serverSide_webPushHideContents\"\n            expert=\"1\"\n          >\n            {{ $t('settings.notification_setting_hide_notification_contents') }}\n          </BooleanSetting>\n        </li>\n      </ul>\n    </div>\n    <div class=\"setting-item\">\n      <p>{{ $t('settings.notification_mutes') }}</p>\n      <p>{{ $t('settings.notification_blocks') }}</p>\n    </div>\n  </div>\n</template>\n\n<script src=\"./notifications_tab.js\"></script>\n<!-- <style lang=\"scss\" src=\"./profile.scss\"></style> -->\n","<template>\n  <label\n    v-if=\"matchesExpertLevel\"\n    class=\"BooleanSetting\"\n  >\n    <Checkbox\n      :model-value=\"state\"\n      :disabled=\"disabled\"\n      @update:modelValue=\"update\"\n    >\n      <span\n        v-if=\"!!$slots.default\"\n        class=\"label\"\n      >\n        <slot />\n      </span>\n      {{ ' ' }}\n      <ModifiedIndicator :changed=\"isChanged\" /><ServerSideIndicator :server-side=\"isServerSide\" /> </Checkbox>\n  </label>\n</template>\n\n<script src=\"./boolean_setting.js\"></script>\n","<template>\n  <span\n    v-if=\"changed\"\n    class=\"ModifiedIndicator\"\n  >\n    <Popover\n      trigger=\"hover\"\n    >\n      <template v-slot:trigger>\n        &nbsp;\n        <FAIcon\n          icon=\"wrench\"\n          :aria-label=\"$t('settings.setting_changed')\"\n        />\n      </template>\n      <template v-slot:content>\n        <div class=\"modified-tooltip\">\n          {{ $t('settings.setting_changed') }}\n        </div>\n      </template>\n    </Popover>\n  </span>\n</template>\n\n<script>\nimport Popover from 'src/components/popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faWrench } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faWrench\n)\n\nexport default {\n  components: { Popover },\n  props: ['changed']\n}\n</script>\n\n<style lang=\"scss\">\n.ModifiedIndicator {\n  display: inline-block;\n  position: relative;\n\n  .modified-tooltip {\n    margin: 0.5em 1em;\n    min-width: 10em;\n    text-align: center;\n  }\n}\n</style>\n","import { render } from \"./modified_indicator.vue?vue&type=template&id=be0aa34e\"\nimport script from \"./modified_indicator.vue?vue&type=script&lang=js\"\nexport * from \"./modified_indicator.vue?vue&type=script&lang=js\"\n\nimport \"./modified_indicator.vue?vue&type=style&index=0&id=be0aa34e&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <span\n    v-if=\"serverSide\"\n    class=\"ServerSideIndicator\"\n  >\n    <Popover\n      trigger=\"hover\"\n    >\n      <template v-slot:trigger>\n        &nbsp;\n        <FAIcon\n          icon=\"server\"\n          :aria-label=\"$t('settings.setting_server_side')\"\n        />\n      </template>\n      <template v-slot:content>\n        <div class=\"serverside-tooltip\">\n          {{ $t('settings.setting_server_side') }}\n        </div>\n      </template>\n    </Popover>\n  </span>\n</template>\n\n<script>\nimport Popover from 'src/components/popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faServer } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faServer\n)\n\nexport default {\n  components: { Popover },\n  props: ['serverSide']\n}\n</script>\n\n<style lang=\"scss\">\n.ServerSideIndicator {\n  display: inline-block;\n  position: relative;\n\n  .serverside-tooltip {\n    margin: 0.5em 1em;\n    min-width: 10em;\n    text-align: center;\n  }\n}\n</style>\n","import { render } from \"./server_side_indicator.vue?vue&type=template&id=35bf7f91\"\nimport script from \"./server_side_indicator.vue?vue&type=script&lang=js\"\nexport * from \"./server_side_indicator.vue?vue&type=script&lang=js\"\n\nimport \"./server_side_indicator.vue?vue&type=style&index=0&id=35bf7f91&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { get, set } from 'lodash'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\nimport ModifiedIndicator from './modified_indicator.vue'\nimport ServerSideIndicator from './server_side_indicator.vue'\nexport default {\n  components: {\n    Checkbox,\n    ModifiedIndicator,\n    ServerSideIndicator\n  },\n  props: [\n    'path',\n    'disabled',\n    'expert'\n  ],\n  computed: {\n    pathDefault () {\n      const [firstSegment, ...rest] = this.path.split('.')\n      return [firstSegment + 'DefaultValue', ...rest].join('.')\n    },\n    state () {\n      const value = get(this.$parent, this.path)\n      if (value === undefined) {\n        return this.defaultState\n      } else {\n        return value\n      }\n    },\n    defaultState () {\n      return get(this.$parent, this.pathDefault)\n    },\n    isServerSide () {\n      return this.path.startsWith('serverSide_')\n    },\n    isChanged () {\n      return !this.path.startsWith('serverSide_') && this.state !== this.defaultState\n    },\n    matchesExpertLevel () {\n      return (this.expert || 0) <= this.$parent.expertLevel\n    }\n  },\n  methods: {\n    update (e) {\n      set(this.$parent, this.path, e)\n    }\n  }\n}\n","import { render } from \"./boolean_setting.vue?vue&type=template&id=12d9142b\"\nimport script from \"./boolean_setting.js?vue&type=script&lang=js\"\nexport * from \"./boolean_setting.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defaultState as configDefaultState } from 'src/modules/config.js'\nimport { defaultState as serverSideConfigDefaultState } from 'src/modules/serverSideConfig.js'\n\nconst SharedComputedObject = () => ({\n  user () {\n    return this.$store.state.users.currentUser\n  },\n  // Getting values for default properties\n  ...Object.keys(configDefaultState)\n    .map(key => [\n      key + 'DefaultValue',\n      function () {\n        return this.$store.getters.defaultConfig[key]\n      }\n    ])\n    .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {}),\n  // Generating computed values for vuex properties\n  ...Object.keys(configDefaultState)\n    .map(key => [key, {\n      get () { return this.$store.getters.mergedConfig[key] },\n      set (value) {\n        this.$store.dispatch('setOption', { name: key, value })\n      }\n    }])\n    .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {}),\n  ...Object.keys(serverSideConfigDefaultState)\n    .map(key => ['serverSide_' + key, {\n      get () { return this.$store.state.serverSideConfig[key] },\n      set (value) {\n        this.$store.dispatch('setServerSideOption', { name: key, value })\n      }\n    }])\n    .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {}),\n  // Special cases (need to transform values or perform actions first)\n  useStreamingApi: {\n    get () { return this.$store.getters.mergedConfig.useStreamingApi },\n    set (value) {\n      const promise = value\n        ? this.$store.dispatch('enableMastoSockets')\n        : this.$store.dispatch('disableMastoSockets')\n\n      promise.then(() => {\n        this.$store.dispatch('setOption', { name: 'useStreamingApi', value })\n      }).catch((e) => {\n        console.error('Failed starting MastoAPI Streaming socket', e)\n        this.$store.dispatch('disableMastoSockets')\n        this.$store.dispatch('setOption', { name: 'useStreamingApi', value: false })\n      })\n    }\n  }\n})\n\nexport default SharedComputedObject\n","import BooleanSetting from '../helpers/boolean_setting.vue'\nimport SharedComputedObject from '../helpers/shared_computed_object.js'\n\nconst NotificationsTab = {\n  data () {\n    return {\n      activeTab: 'profile',\n      notificationSettings: this.$store.state.users.currentUser.notification_settings,\n      newDomainToMute: ''\n    }\n  },\n  components: {\n    BooleanSetting\n  },\n  computed: {\n    user () {\n      return this.$store.state.users.currentUser\n    },\n    ...SharedComputedObject()\n  },\n  methods: {\n    updateNotificationSettings () {\n      this.$store.state.api.backendInteractor\n        .updateNotificationSettings({ settings: this.notificationSettings })\n    }\n  }\n}\n\nexport default NotificationsTab\n","import { render } from \"./notifications_tab.vue?vue&type=template&id=e4b944ee\"\nimport script from \"./notifications_tab.js?vue&type=script&lang=js\"\nexport * from \"./notifications_tab.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div :label=\"$t('settings.filtering')\">\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.posts') }}</h2>\n      <ul class=\"setting-list\">\n        <li>\n          <BooleanSetting path=\"hideFilteredStatuses\">\n            {{ $t('settings.hide_filtered_statuses') }}\n          </BooleanSetting>\n          <ul\n            class=\"setting-list suboptions\"\n            :class=\"[{disabled: !streaming}]\"\n          >\n            <li>\n              <BooleanSetting\n                :disabled=\"hideFilteredStatuses\"\n                path=\"hideWordFilteredPosts\"\n              >\n                {{ $t('settings.hide_wordfiltered_statuses') }}\n              </BooleanSetting>\n            </li>\n            <li>\n              <BooleanSetting\n                v-if=\"user\"\n                :disabled=\"hideFilteredStatuses\"\n                path=\"hideMutedThreads\"\n              >\n                {{ $t('settings.hide_muted_threads') }}\n              </BooleanSetting>\n            </li>\n            <li>\n              <BooleanSetting\n                v-if=\"user\"\n                :disabled=\"hideFilteredStatuses\"\n                path=\"hideMutedPosts\"\n              >\n                {{ $t('settings.hide_muted_posts') }}\n              </BooleanSetting>\n            </li>\n          </ul>\n        </li>\n        <li>\n          <BooleanSetting path=\"muteBotStatuses\">\n            {{ $t('settings.mute_bot_posts') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"hidePostStats\">\n            {{ $t('settings.hide_post_stats') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"hideBotIndication\">\n            {{ $t('settings.hide_bot_indication') }}\n          </BooleanSetting>\n        </li>\n        <ChoiceSetting\n          v-if=\"user\"\n          id=\"replyVisibility\"\n          path=\"replyVisibility\"\n          :options=\"replyVisibilityOptions\"\n        >\n          {{ $t('settings.replies_in_timeline') }}\n        </ChoiceSetting>\n        <li>\n          <h3>{{ $t('settings.wordfilter') }}</h3>\n          <textarea\n            id=\"muteWords\"\n            v-model=\"muteWordsString\"\n            class=\"resize-height\"\n          />\n          <div>{{ $t('settings.filtering_explanation') }}</div>\n        </li>\n        <h3>{{ $t('settings.attachments') }}</h3>\n        <li>\n          <IntegerSetting\n            path=\"maxThumbnails\"\n            expert=\"1\"\n            :min=\"0\"\n          >\n            {{ $t('settings.max_thumbnails') }}\n          </IntegerSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"hideAttachments\">\n            {{ $t('settings.hide_attachments_in_tl') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"hideAttachmentsInConv\">\n            {{ $t('settings.hide_attachments_in_convo') }}\n          </BooleanSetting>\n        </li>\n      </ul>\n    </div>\n    <div\n      v-if=\"expertLevel > 0\"\n      class=\"setting-item\"\n    >\n      <h2>{{ $t('settings.user_profiles') }}</h2>\n      <ul class=\"setting-list\">\n        <li>\n          <BooleanSetting path=\"hideUserStats\">\n            {{ $t('settings.hide_user_stats') }}\n          </BooleanSetting>\n        </li>\n      </ul>\n    </div>\n  </div>\n</template>\n<script src=\"./filtering_tab.js\"></script>\n","<template>\n  <label\n    v-if=\"matchesExpertLevel\"\n    class=\"ChoiceSetting\"\n  >\n    <slot />\n    {{ ' ' }}\n    <Select\n      :model-value=\"state\"\n      :disabled=\"disabled\"\n      @update:modelValue=\"update\"\n    >\n      <option\n        v-for=\"option in options\"\n        :key=\"option.key\"\n        :value=\"option.value\"\n      >\n        {{ option.label }}\n        {{ option.value === defaultState ? $t('settings.instance_default_simple') : '' }}\n      </option>\n    </Select>\n    <ModifiedIndicator :changed=\"isChanged\" />\n    <ServerSideIndicator :server-side=\"isServerSide\" />\n  </label>\n</template>\n\n<script src=\"./choice_setting.js\"></script>\n\n<style lang=\"scss\">\n.ChoiceSetting {\n}\n</style>\n","import { get, set } from 'lodash'\nimport Select from 'src/components/select/select.vue'\nimport ModifiedIndicator from './modified_indicator.vue'\nimport ServerSideIndicator from './server_side_indicator.vue'\nexport default {\n  components: {\n    Select,\n    ModifiedIndicator,\n    ServerSideIndicator\n  },\n  props: [\n    'path',\n    'disabled',\n    'options',\n    'expert'\n  ],\n  computed: {\n    pathDefault () {\n      const [firstSegment, ...rest] = this.path.split('.')\n      return [firstSegment + 'DefaultValue', ...rest].join('.')\n    },\n    state () {\n      const value = get(this.$parent, this.path)\n      if (value === undefined) {\n        return this.defaultState\n      } else {\n        return value\n      }\n    },\n    defaultState () {\n      return get(this.$parent, this.pathDefault)\n    },\n    isServerSide () {\n      return this.path.startsWith('serverSide_')\n    },\n    isChanged () {\n      return !this.path.startsWith('serverSide_') && this.state !== this.defaultState\n    },\n    matchesExpertLevel () {\n      return (this.expert || 0) <= this.$parent.expertLevel\n    }\n  },\n  methods: {\n    update (e) {\n      set(this.$parent, this.path, e)\n    }\n  }\n}\n","import { render } from \"./choice_setting.vue?vue&type=template&id=36cf5d2e\"\nimport script from \"./choice_setting.js?vue&type=script&lang=js\"\nexport * from \"./choice_setting.js?vue&type=script&lang=js\"\n\nimport \"./choice_setting.vue?vue&type=style&index=0&id=36cf5d2e&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <span\n    v-if=\"matchesExpertLevel\"\n    class=\"IntegerSetting\"\n  >\n    <label :for=\"path\">\n      <slot />\n    </label>\n    <input\n      :id=\"path\"\n      class=\"number-input\"\n      type=\"number\"\n      step=\"1\"\n      :disabled=\"disabled\"\n      :min=\"min || 0\"\n      :value=\"state\"\n      @change=\"update\"\n    >\n    {{ ' ' }}\n    <ModifiedIndicator :changed=\"isChanged\" />\n  </span>\n</template>\n\n<script src=\"./integer_setting.js\"></script>\n","import { get, set } from 'lodash'\nimport ModifiedIndicator from './modified_indicator.vue'\nexport default {\n  components: {\n    ModifiedIndicator\n  },\n  props: {\n    path: String,\n    disabled: Boolean,\n    min: Number,\n    expert: [Number, String]\n  },\n  computed: {\n    pathDefault () {\n      const [firstSegment, ...rest] = this.path.split('.')\n      return [firstSegment + 'DefaultValue', ...rest].join('.')\n    },\n    state () {\n      const value = get(this.$parent, this.path)\n      if (value === undefined) {\n        return this.defaultState\n      } else {\n        return value\n      }\n    },\n    defaultState () {\n      return get(this.$parent, this.pathDefault)\n    },\n    isChanged () {\n      return this.state !== this.defaultState\n    },\n    matchesExpertLevel () {\n      return (this.expert || 0) <= this.$parent.expertLevel\n    }\n  },\n  methods: {\n    update (e) {\n      set(this.$parent, this.path, parseInt(e.target.value))\n    }\n  }\n}\n","import { render } from \"./integer_setting.vue?vue&type=template&id=481281d5\"\nimport script from \"./integer_setting.js?vue&type=script&lang=js\"\nexport * from \"./integer_setting.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { filter, trim } from 'lodash'\nimport BooleanSetting from '../helpers/boolean_setting.vue'\nimport ChoiceSetting from '../helpers/choice_setting.vue'\nimport IntegerSetting from '../helpers/integer_setting.vue'\n\nimport SharedComputedObject from '../helpers/shared_computed_object.js'\n\nconst FilteringTab = {\n  data () {\n    return {\n      muteWordsStringLocal: this.$store.getters.mergedConfig.muteWords.join('\\n'),\n      replyVisibilityOptions: ['all', 'following', 'self'].map(mode => ({\n        key: mode,\n        value: mode,\n        label: this.$t(`settings.reply_visibility_${mode}`)\n      }))\n    }\n  },\n  components: {\n    BooleanSetting,\n    ChoiceSetting,\n    IntegerSetting\n  },\n  computed: {\n    ...SharedComputedObject(),\n    muteWordsString: {\n      get () {\n        return this.muteWordsStringLocal\n      },\n      set (value) {\n        this.muteWordsStringLocal = value\n        this.$store.dispatch('setOption', {\n          name: 'muteWords',\n          value: filter(value.split('\\n'), (word) => trim(word).length > 0)\n        })\n      }\n    }\n  },\n  // Updating nested properties\n  watch: {\n    notificationVisibility: {\n      handler (value) {\n        this.$store.dispatch('setOption', {\n          name: 'notificationVisibility',\n          value: this.$store.getters.mergedConfig.notificationVisibility\n        })\n      },\n      deep: true\n    },\n    replyVisibility () {\n      this.$store.dispatch('queueFlushAll')\n    }\n  }\n}\n\nexport default FilteringTab\n","import { render } from \"./filtering_tab.vue?vue&type=template&id=19e8a013\"\nimport script from \"./filtering_tab.js?vue&type=script&lang=js\"\nexport * from \"./filtering_tab.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div :label=\"$t('settings.security_tab')\">\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.change_email') }}</h2>\n      <div>\n        <p>{{ $t('settings.new_email') }}</p>\n        <input\n          v-model=\"newEmail\"\n          type=\"email\"\n          autocomplete=\"email\"\n        >\n      </div>\n      <div>\n        <p>{{ $t('settings.current_password') }}</p>\n        <input\n          v-model=\"changeEmailPassword\"\n          type=\"password\"\n          autocomplete=\"current-password\"\n        >\n      </div>\n      <button\n        class=\"btn button-default\"\n        @click=\"changeEmail\"\n      >\n        {{ $t('settings.save') }}\n      </button>\n      <p v-if=\"changedEmail\">\n        {{ $t('settings.changed_email') }}\n      </p>\n      <template v-if=\"changeEmailError !== false\">\n        <p>{{ $t('settings.change_email_error') }}</p>\n        <p>{{ changeEmailError }}</p>\n      </template>\n    </div>\n\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.change_password') }}</h2>\n      <div>\n        <p>{{ $t('settings.current_password') }}</p>\n        <input\n          v-model=\"changePasswordInputs[0]\"\n          type=\"password\"\n        >\n      </div>\n      <div>\n        <p>{{ $t('settings.new_password') }}</p>\n        <input\n          v-model=\"changePasswordInputs[1]\"\n          type=\"password\"\n        >\n      </div>\n      <div>\n        <p>{{ $t('settings.confirm_new_password') }}</p>\n        <input\n          v-model=\"changePasswordInputs[2]\"\n          type=\"password\"\n        >\n      </div>\n      <button\n        class=\"btn button-default\"\n        @click=\"changePassword\"\n      >\n        {{ $t('settings.save') }}\n      </button>\n      <p v-if=\"changedPassword\">\n        {{ $t('settings.changed_password') }}\n      </p>\n      <p v-else-if=\"changePasswordError !== false\">\n        {{ $t('settings.change_password_error') }}\n      </p>\n      <p v-if=\"changePasswordError\">\n        {{ changePasswordError }}\n      </p>\n    </div>\n\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.oauth_tokens') }}</h2>\n      <table class=\"oauth-tokens\">\n        <thead>\n          <tr>\n            <th>{{ $t('settings.app_name') }}</th>\n            <th>{{ $t('settings.valid_until') }}</th>\n            <th />\n          </tr>\n        </thead>\n        <tbody>\n          <tr\n            v-for=\"oauthToken in oauthTokens\"\n            :key=\"oauthToken.id\"\n          >\n            <td>{{ oauthToken.appName }}</td>\n            <td>{{ oauthToken.validUntil }}</td>\n            <td class=\"actions\">\n              <button\n                class=\"btn button-default\"\n                @click=\"revokeToken(oauthToken.id)\"\n              >\n                {{ $t('settings.revoke_token') }}\n              </button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </div>\n    <mfa />\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.delete_account') }}</h2>\n      <p v-if=\"!deletingAccount\">\n        {{ $t('settings.delete_account_description') }}\n      </p>\n      <div v-if=\"deletingAccount\">\n        <p>{{ $t('settings.delete_account_instructions') }}</p>\n        <p>{{ $t('login.password') }}</p>\n        <input\n          v-model=\"deleteAccountConfirmPasswordInput\"\n          type=\"password\"\n        >\n        <button\n          class=\"btn button-default\"\n          @click=\"deleteAccount\"\n        >\n          {{ $t('settings.delete_account') }}\n        </button>\n      </div>\n      <p v-if=\"deleteAccountError !== false\">\n        {{ $t('settings.delete_account_error') }}\n      </p>\n      <p v-if=\"deleteAccountError\">\n        {{ deleteAccountError }}\n      </p>\n      <button\n        v-if=\"!deletingAccount\"\n        class=\"btn button-default\"\n        @click=\"confirmDelete\"\n      >\n        {{ $t('settings.save') }}\n      </button>\n    </div>\n  </div>\n</template>\n\n<script src=\"./security_tab.js\"></script>\n<!-- <style lang=\"scss\" src=\"./profile.scss\"></style> -->\n","<template>\n  <div\n    v-if=\"readyInit && settings.available\"\n    class=\"setting-item mfa-settings\"\n  >\n    <div class=\"mfa-heading\">\n      <h2>{{ $t('settings.mfa.title') }}</h2>\n    </div>\n\n    <div>\n      <div\n        v-if=\"!setupInProgress\"\n        class=\"setting-item\"\n      >\n        <!-- Enabled methods -->\n        <h3>{{ $t('settings.mfa.authentication_methods') }}</h3>\n        <totp-item\n          :settings=\"settings\"\n          @deactivate=\"fetchSettings\"\n          @activate=\"activateOTP\"\n        />\n        <br>\n\n        <div v-if=\"settings.enabled\">\n          <!-- backup codes block-->\n          <recovery-codes\n            v-if=\"!confirmNewBackupCodes\"\n            :backup-codes=\"backupCodes\"\n          />\n          <button\n            v-if=\"!confirmNewBackupCodes\"\n            class=\"btn button-default\"\n            @click=\"getBackupCodes\"\n          >\n            {{ $t('settings.mfa.generate_new_recovery_codes') }}\n          </button>\n\n          <div v-if=\"confirmNewBackupCodes\">\n            <confirm\n              :disabled=\"backupCodes.inProgress\"\n              @confirm=\"confirmBackupCodes\"\n              @cancel=\"cancelBackupCodes\"\n            >\n              <p class=\"warning\">\n                {{ $t('settings.mfa.warning_of_generate_new_codes') }}\n              </p>\n            </confirm>\n          </div>\n        </div>\n      </div>\n\n      <div v-if=\"setupInProgress\">\n        <!-- setup block-->\n\n        <h3>{{ $t('settings.mfa.setup_otp') }}</h3>\n\n        <recovery-codes\n          v-if=\"!setupOTPInProgress\"\n          :backup-codes=\"backupCodes\"\n        />\n\n        <button\n          v-if=\"canSetupOTP\"\n          class=\"btn button-default\"\n          @click=\"cancelSetup\"\n        >\n          {{ $t('general.cancel') }}\n        </button>\n\n        <button\n          v-if=\"canSetupOTP\"\n          class=\"btn button-default\"\n          @click=\"setupOTP\"\n        >\n          {{ $t('settings.mfa.setup_otp') }}\n        </button>\n\n        <template v-if=\"setupOTPInProgress\">\n          <i v-if=\"prepareOTP\">{{ $t('settings.mfa.wait_pre_setup_otp') }}</i>\n\n          <div v-if=\"confirmOTP\">\n            <div class=\"setup-otp\">\n              <div class=\"qr-code\">\n                <h4>{{ $t('settings.mfa.scan.title') }}</h4>\n                <p>{{ $t('settings.mfa.scan.desc') }}</p>\n                <qrcode\n                  :value=\"otpSettings.provisioning_uri\"\n                  :options=\"{ width: 200 }\"\n                />\n                <p>\n                  {{ $t('settings.mfa.scan.secret_code') }}:\n                  {{ otpSettings.key }}\n                </p>\n              </div>\n\n              <div class=\"verify\">\n                <h4>{{ $t('general.verify') }}</h4>\n                <p>{{ $t('settings.mfa.verify.desc') }}</p>\n                <input\n                  v-model=\"otpConfirmToken\"\n                  type=\"text\"\n                >\n\n                <p>{{ $t('settings.enter_current_password_to_confirm') }}:</p>\n                <input\n                  v-model=\"currentPassword\"\n                  type=\"password\"\n                >\n                <div class=\"confirm-otp-actions\">\n                  <button\n                    class=\"btn button-default\"\n                    @click=\"doConfirmOTP\"\n                  >\n                    {{ $t('settings.mfa.confirm_and_enable') }}\n                  </button>\n                  <button\n                    class=\"btn button-default\"\n                    @click=\"cancelSetup\"\n                  >\n                    {{ $t('general.cancel') }}\n                  </button>\n                </div>\n                <div\n                  v-if=\"error\"\n                  class=\"alert error\"\n                >\n                  {{ error }}\n                </div>\n              </div>\n            </div>\n          </div>\n        </template>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./mfa.js\"></script>\n<style lang=\"scss\">\n@import '../../../../_variables.scss';\n.mfa-settings {\n  .mfa-heading, .method-item {\n    display: flex;\n    flex-wrap: wrap;\n    justify-content: space-between;\n    align-items: baseline;\n  }\n\n  .warning {\n    color: $fallback--cOrange;\n    color: var(--cOrange, $fallback--cOrange);\n  }\n\n  .setup-otp {\n    display: flex;\n    justify-content: center;\n    flex-wrap: wrap;\n    .qr-code {\n      flex: 1;\n      padding-right: 10px;\n    }\n    .verify { flex: 1; }\n    .error { margin: 4px 0 0 0; }\n    .confirm-otp-actions {\n      button {\n        width: 15em;\n        margin-top: 5px;\n      }\n\n    }\n  }\n}\n</style>\n","<template>\n  <div class=\"mfa-backup-codes\">\n    <h4 v-if=\"displayTitle\">\n      {{ $t('settings.mfa.recovery_codes') }}\n    </h4>\n    <i v-if=\"inProgress\">{{ $t('settings.mfa.waiting_a_recovery_codes') }}</i>\n    <template v-if=\"ready\">\n      <p class=\"alert warning\">\n        {{ $t('settings.mfa.recovery_codes_warning') }}\n      </p>\n      <ul class=\"backup-codes\">\n        <li\n          v-for=\"code in backupCodes.codes\"\n          :key=\"code\"\n        >\n          {{ code }}\n        </li>\n      </ul>\n    </template>\n  </div>\n</template>\n<script src=\"./mfa_backup_codes.js\"></script>\n<style lang=\"scss\">\n@import '../../../../_variables.scss';\n\n.mfa-backup-codes {\n  .warning {\n    color: $fallback--cOrange;\n    color: var(--cOrange, $fallback--cOrange);\n  }\n  .backup-codes {\n    font-family: var(--postCodeFont, monospace);\n  }\n}\n</style>\n","export default {\n  props: {\n    backupCodes: {\n      type: Object,\n      default: () => ({\n        inProgress: false,\n        codes: []\n      })\n    }\n  },\n  data: () => ({}),\n  computed: {\n    inProgress () { return this.backupCodes.inProgress },\n    ready () { return this.backupCodes.codes.length > 0 },\n    displayTitle () { return this.inProgress || this.ready }\n  }\n}\n","import { render } from \"./mfa_backup_codes.vue?vue&type=template&id=1284fe74\"\nimport script from \"./mfa_backup_codes.js?vue&type=script&lang=js\"\nexport * from \"./mfa_backup_codes.js?vue&type=script&lang=js\"\n\nimport \"./mfa_backup_codes.vue?vue&type=style&index=0&id=1284fe74&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div>\n    <div class=\"method-item\">\n      <strong>{{ $t('settings.mfa.otp') }}</strong>\n      <button\n        v-if=\"!isActivated\"\n        class=\"btn button-default\"\n        @click=\"doActivate\"\n      >\n        {{ $t('general.enable') }}\n      </button>\n\n      <button\n        v-if=\"isActivated\"\n        class=\"btn button-default\"\n        :disabled=\"deactivate\"\n        @click=\"doDeactivate\"\n      >\n        {{ $t('general.disable') }}\n      </button>\n    </div>\n\n    <confirm\n      v-if=\"deactivate\"\n      :disabled=\"inProgress\"\n      @confirm=\"confirmDeactivate\"\n      @cancel=\"cancelDeactivate\"\n    >\n      {{ $t('settings.enter_current_password_to_confirm') }}:\n      <input\n        v-model=\"currentPassword\"\n        type=\"password\"\n      >\n    </confirm>\n    <div\n      v-if=\"error\"\n      class=\"alert error\"\n    >\n      {{ error }}\n    </div>\n  </div>\n</template>\n<script src=\"./mfa_totp.js\"></script>\n","const Confirm = {\n  props: ['disabled'],\n  data: () => ({}),\n  methods: {\n    confirm () { this.$emit('confirm') },\n    cancel () { this.$emit('cancel') }\n  }\n}\nexport default Confirm\n","import { render } from \"./confirm.vue?vue&type=template&id=232a09eb\"\nimport script from \"./confirm.js?vue&type=script&lang=js\"\nexport * from \"./confirm.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div>\n    <slot />\n    <button\n      class=\"btn button-default\"\n      :disabled=\"disabled\"\n      @click=\"confirm\"\n    >\n      {{ $t('general.confirm') }}\n    </button>\n    <button\n      class=\"btn button-default\"\n      :disabled=\"disabled\"\n      @click=\"cancel\"\n    >\n      {{ $t('general.cancel') }}\n    </button>\n  </div>\n</template>\n\n<script src=\"./confirm.js\">\n</script>\n","import Confirm from './confirm.vue'\nimport { mapState } from 'vuex'\n\nexport default {\n  props: ['settings'],\n  data: () => ({\n    error: false,\n    currentPassword: '',\n    deactivate: false,\n    inProgress: false // progress peform request to disable otp method\n  }),\n  components: {\n    'confirm': Confirm\n  },\n  computed: {\n    isActivated () {\n      return this.settings.totp\n    },\n    ...mapState({\n      backendInteractor: (state) => state.api.backendInteractor\n    })\n  },\n  methods: {\n    doActivate () {\n      this.$emit('activate')\n    },\n    cancelDeactivate () { this.deactivate = false },\n    doDeactivate () {\n      this.error = null\n      this.deactivate = true\n    },\n    confirmDeactivate () { // confirm deactivate TOTP method\n      this.error = null\n      this.inProgress = true\n      this.backendInteractor.mfaDisableOTP({\n        password: this.currentPassword\n      })\n        .then((res) => {\n          this.inProgress = false\n          if (res.error) {\n            this.error = res.error\n            return\n          }\n          this.deactivate = false\n          this.$emit('deactivate')\n        })\n    }\n  }\n}\n","import RecoveryCodes from './mfa_backup_codes.vue'\nimport TOTP from './mfa_totp.vue'\nimport Confirm from './confirm.vue'\nimport VueQrcode from '@chenfengyuan/vue-qrcode'\nimport { mapState } from 'vuex'\n\nconst Mfa = {\n  data: () => ({\n    settings: { // current settings of MFA\n      available: false,\n      enabled: false,\n      totp: false\n    },\n    setupState: { // setup mfa\n      state: '', // state of setup. '' -> 'getBackupCodes' -> 'setupOTP' -> 'complete'\n      setupOTPState: '' // state of setup otp. '' -> 'prepare' -> 'confirm' -> 'complete'\n    },\n    backupCodes: {\n      getNewCodes: false,\n      inProgress: false, //  progress of fetch codes\n      codes: []\n    },\n    otpSettings: { // pre-setup setting of OTP. secret key, qrcode url.\n      provisioning_uri: '',\n      key: ''\n    },\n    currentPassword: null,\n    otpConfirmToken: null,\n    error: null,\n    readyInit: false\n  }),\n  components: {\n    'recovery-codes': RecoveryCodes,\n    'totp-item': TOTP,\n    'qrcode': VueQrcode,\n    'confirm': Confirm\n  },\n  computed: {\n    canSetupOTP () {\n      return (\n        (this.setupInProgress && this.backupCodesPrepared) ||\n          this.settings.enabled\n      ) && !this.settings.totp && !this.setupOTPInProgress\n    },\n    setupInProgress () {\n      return this.setupState.state !== '' && this.setupState.state !== 'complete'\n    },\n    setupOTPInProgress () {\n      return this.setupState.state === 'setupOTP' && !this.completedOTP\n    },\n    prepareOTP () {\n      return this.setupState.setupOTPState === 'prepare'\n    },\n    confirmOTP () {\n      return this.setupState.setupOTPState === 'confirm'\n    },\n    completedOTP () {\n      return this.setupState.setupOTPState === 'completed'\n    },\n    backupCodesPrepared () {\n      return !this.backupCodes.inProgress && this.backupCodes.codes.length > 0\n    },\n    confirmNewBackupCodes () {\n      return this.backupCodes.getNewCodes\n    },\n    ...mapState({\n      backendInteractor: (state) => state.api.backendInteractor\n    })\n  },\n\n  methods: {\n    activateOTP () {\n      if (!this.settings.enabled) {\n        this.setupState.state = 'getBackupcodes'\n        this.fetchBackupCodes()\n      }\n    },\n    fetchBackupCodes () {\n      this.backupCodes.inProgress = true\n      this.backupCodes.codes = []\n\n      return this.backendInteractor.generateMfaBackupCodes()\n        .then((res) => {\n          this.backupCodes.codes = res.codes\n          this.backupCodes.inProgress = false\n        })\n    },\n    getBackupCodes () { // get a new backup codes\n      this.backupCodes.getNewCodes = true\n    },\n    confirmBackupCodes () { // confirm getting new backup codes\n      this.fetchBackupCodes().then((res) => {\n        this.backupCodes.getNewCodes = false\n      })\n    },\n    cancelBackupCodes () { // cancel confirm form of new backup codes\n      this.backupCodes.getNewCodes = false\n    },\n\n    // Setup OTP\n    setupOTP () { // prepare setup OTP\n      this.setupState.state = 'setupOTP'\n      this.setupState.setupOTPState = 'prepare'\n      this.backendInteractor.mfaSetupOTP()\n        .then((res) => {\n          this.otpSettings = res\n          this.setupState.setupOTPState = 'confirm'\n        })\n    },\n    doConfirmOTP () { // handler confirm enable OTP\n      this.error = null\n      this.backendInteractor.mfaConfirmOTP({\n        token: this.otpConfirmToken,\n        password: this.currentPassword\n      })\n        .then((res) => {\n          if (res.error) {\n            this.error = res.error\n            return\n          }\n          this.completeSetup()\n        })\n    },\n\n    completeSetup () {\n      this.setupState.setupOTPState = 'complete'\n      this.setupState.state = 'complete'\n      this.currentPassword = null\n      this.error = null\n      this.fetchSettings()\n    },\n    cancelSetup () { // cancel setup\n      this.setupState.setupOTPState = ''\n      this.setupState.state = ''\n      this.currentPassword = null\n      this.error = null\n    },\n    // end Setup OTP\n\n    // fetch settings from server\n    async fetchSettings () {\n      let result = await this.backendInteractor.settingsMFA()\n      if (result.error) return\n      this.settings = result.settings\n      this.settings.available = true\n      return result\n    }\n  },\n  mounted () {\n    this.fetchSettings().then(() => {\n      this.readyInit = true\n    })\n  }\n}\nexport default Mfa\n","import { render } from \"./mfa_totp.vue?vue&type=template&id=5466d3a1\"\nimport script from \"./mfa_totp.js?vue&type=script&lang=js\"\nexport * from \"./mfa_totp.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./mfa.vue?vue&type=template&id=c62074fa\"\nimport script from \"./mfa.js?vue&type=script&lang=js\"\nexport * from \"./mfa.js?vue&type=script&lang=js\"\n\nimport \"./mfa.vue?vue&type=style&index=0&id=c62074fa&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import ProgressButton from 'src/components/progress_button/progress_button.vue'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\nimport Mfa from './mfa.vue'\nimport localeService from 'src/services/locale/locale.service.js'\n\nconst SecurityTab = {\n  data () {\n    return {\n      newEmail: '',\n      changeEmailError: false,\n      changeEmailPassword: '',\n      changedEmail: false,\n      deletingAccount: false,\n      deleteAccountConfirmPasswordInput: '',\n      deleteAccountError: false,\n      changePasswordInputs: [ '', '', '' ],\n      changedPassword: false,\n      changePasswordError: false\n    }\n  },\n  created () {\n    this.$store.dispatch('fetchTokens')\n  },\n  components: {\n    ProgressButton,\n    Mfa,\n    Checkbox\n  },\n  computed: {\n    user () {\n      return this.$store.state.users.currentUser\n    },\n    pleromaBackend () {\n      return this.$store.state.instance.pleromaBackend\n    },\n    oauthTokens () {\n      return this.$store.state.oauthTokens.tokens.map(oauthToken => {\n        return {\n          id: oauthToken.id,\n          appName: oauthToken.app_name,\n          validUntil: new Date(oauthToken.valid_until).toLocaleDateString(localeService.internalToBrowserLocale(this.$i18n.locale))\n        }\n      })\n    }\n  },\n  methods: {\n    confirmDelete () {\n      this.deletingAccount = true\n    },\n    deleteAccount () {\n      this.$store.state.api.backendInteractor.deleteAccount({ password: this.deleteAccountConfirmPasswordInput })\n        .then((res) => {\n          if (res.status === 'success') {\n            this.$store.dispatch('logout')\n            this.$router.push({ name: 'root' })\n          } else {\n            this.deleteAccountError = res.error\n          }\n        })\n    },\n    changePassword () {\n      const params = {\n        password: this.changePasswordInputs[0],\n        newPassword: this.changePasswordInputs[1],\n        newPasswordConfirmation: this.changePasswordInputs[2]\n      }\n      this.$store.state.api.backendInteractor.changePassword(params)\n        .then((res) => {\n          if (res.status === 'success') {\n            this.changedPassword = true\n            this.changePasswordError = false\n            this.logout()\n          } else {\n            this.changedPassword = false\n            this.changePasswordError = res.error\n          }\n        })\n    },\n    changeEmail () {\n      const params = {\n        email: this.newEmail,\n        password: this.changeEmailPassword\n      }\n      this.$store.state.api.backendInteractor.changeEmail(params)\n        .then((res) => {\n          if (res.status === 'success') {\n            this.changedEmail = true\n            this.changeEmailError = false\n          } else {\n            this.changedEmail = false\n            this.changeEmailError = res.error\n          }\n        })\n    },\n    logout () {\n      this.$store.dispatch('logout')\n      this.$router.replace('/')\n    },\n    revokeToken (id) {\n      if (window.confirm(`${this.$i18n.t('settings.revoke_token')}?`)) {\n        this.$store.dispatch('revokeToken', id)\n      }\n    }\n  }\n}\n\nexport default SecurityTab\n","import { render } from \"./security_tab.vue?vue&type=template&id=dc4ec0ae\"\nimport script from \"./security_tab.js?vue&type=script&lang=js\"\nexport * from \"./security_tab.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"profile-tab\">\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.name_bio') }}</h2>\n      <p>{{ $t('settings.name') }}</p>\n      <EmojiInput\n        v-model=\"newName\"\n        enable-emoji-picker\n        :suggest=\"emojiSuggestor\"\n      >\n        <input\n          id=\"username\"\n          v-model=\"newName\"\n          class=\"name-changer\"\n        >\n      </EmojiInput>\n      <p>{{ $t('settings.bio') }}</p>\n      <EmojiInput\n        v-model=\"newBio\"\n        enable-emoji-picker\n        :suggest=\"emojiUserSuggestor\"\n      >\n        <textarea\n          v-model=\"newBio\"\n          class=\"bio resize-height\"\n        />\n      </EmojiInput>\n      <p v-if=\"role === 'admin' || role === 'moderator'\">\n        <Checkbox v-model=\"showRole\">\n          <template v-if=\"role === 'admin'\">\n            {{ $t('settings.show_admin_badge') }}\n          </template>\n          <template v-if=\"role === 'moderator'\">\n            {{ $t('settings.show_moderator_badge') }}\n          </template>\n        </Checkbox>\n      </p>\n      <div v-if=\"maxFields > 0\">\n        <p>{{ $t('settings.profile_fields.label') }}</p>\n        <div\n          v-for=\"(_, i) in newFields\"\n          :key=\"i\"\n          class=\"profile-fields\"\n        >\n          <EmojiInput\n            v-model=\"newFields[i].name\"\n            enable-emoji-picker\n            hide-emoji-button\n            :suggest=\"userSuggestor\"\n          >\n            <input\n              v-model=\"newFields[i].name\"\n              :placeholder=\"$t('settings.profile_fields.name')\"\n            >\n          </EmojiInput>\n          <EmojiInput\n            v-model=\"newFields[i].value\"\n            enable-emoji-picker\n            hide-emoji-button\n            :suggest=\"userSuggestor\"\n          >\n            <input\n              v-model=\"newFields[i].value\"\n              :placeholder=\"$t('settings.profile_fields.value')\"\n            >\n          </EmojiInput>\n          <button\n            class=\"delete-field button-unstyled -hover-highlight\"\n            @click=\"deleteField(i)\"\n          >\n            <!-- TODO something is wrong with v-show here -->\n            <FAIcon\n              v-if=\"newFields.length > 1\"\n              icon=\"times\"\n            />\n          </button>\n        </div>\n        <button\n          v-if=\"newFields.length < maxFields\"\n          class=\"add-field faint button-unstyled -hover-highlight\"\n          @click=\"addField\"\n        >\n          <FAIcon icon=\"plus\" />\n          {{ $t(\"settings.profile_fields.add_field\") }}\n        </button>\n      </div>\n      <p>\n        <Checkbox v-model=\"bot\">\n          {{ $t('settings.bot') }}\n        </Checkbox>\n      </p>\n      <p>\n        <interface-language-switcher\n          :prompt-text=\"$t('settings.email_language')\"\n          :language=\"emailLanguage\"\n          :set-language=\"val => emailLanguage = val\"\n        />\n      </p>\n      <button\n        :disabled=\"newName && newName.length === 0\"\n        class=\"btn button-default\"\n        @click=\"updateProfile\"\n      >\n        {{ $t('settings.save') }}\n      </button>\n    </div>\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.avatar') }}</h2>\n      <p class=\"visibility-notice\">\n        {{ $t('settings.avatar_size_instruction') }}\n      </p>\n      <div class=\"current-avatar-container\">\n        <img\n          :src=\"user.profile_image_url_original\"\n          class=\"current-avatar\"\n        >\n        <button\n          v-if=\"!isDefaultAvatar && pickAvatarBtnVisible\"\n          :title=\"$t('settings.reset_avatar')\"\n          @click=\"resetAvatar\"\n          class=\"button-unstyled reset-button\"\n        >\n          <FAIcon\n            icon=\"times\"\n            type=\"button\"\n          />\n        </button>\n      </div>\n      <p>{{ $t('settings.set_new_avatar') }}</p>\n      <button\n        v-show=\"pickAvatarBtnVisible\"\n        id=\"pick-avatar\"\n        class=\"button-default btn\"\n        type=\"button\"\n      >\n        {{ $t('settings.upload_a_photo') }}\n      </button>\n      <image-cropper\n        trigger=\"#pick-avatar\"\n        :submit-handler=\"submitAvatar\"\n        @open=\"pickAvatarBtnVisible=false\"\n        @close=\"pickAvatarBtnVisible=true\"\n      />\n    </div>\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.profile_banner') }}</h2>\n      <div class=\"banner-background-preview\">\n        <img :src=\"user.cover_photo\">\n        <button\n          v-if=\"!isDefaultBanner\"\n          class=\"button-unstyled reset-button\"\n          :title=\"$t('settings.reset_profile_banner')\"\n          @click=\"resetBanner\"\n        >\n          <FAIcon\n            icon=\"times\"\n            type=\"button\"\n          />\n        </button>\n      </div>\n      <p>{{ $t('settings.set_new_profile_banner') }}</p>\n      <img\n        v-if=\"bannerPreview\"\n        class=\"banner-background-preview\"\n        :src=\"bannerPreview\"\n      >\n      <div>\n        <input\n          type=\"file\"\n          @change=\"uploadFile('banner', $event)\"\n        >\n      </div>\n      <FAIcon\n        v-if=\"bannerUploading\"\n        class=\"uploading\"\n        spin\n        icon=\"circle-notch\"\n      />\n      <button\n        v-else-if=\"bannerPreview\"\n        class=\"btn button-default\"\n        @click=\"submitBanner(banner)\"\n      >\n        {{ $t('settings.save') }}\n      </button>\n    </div>\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.profile_background') }}</h2>\n      <div class=\"banner-background-preview\">\n        <img :src=\"user.background_image\">\n        <button\n          v-if=\"!isDefaultBackground\"\n          class=\"button-unstyled reset-button\"\n          :title=\"$t('settings.reset_profile_background')\"\n          @click=\"resetBackground\"\n        >\n          <FAIcon\n            icon=\"times\"\n            type=\"button\"\n          />\n        </button>\n      </div>\n      <p>{{ $t('settings.set_new_profile_background') }}</p>\n      <img\n        v-if=\"backgroundPreview\"\n        class=\"banner-background-preview\"\n        :src=\"backgroundPreview\"\n      >\n      <div>\n        <input\n          type=\"file\"\n          @change=\"uploadFile('background', $event)\"\n        >\n      </div>\n      <FAIcon\n        v-if=\"backgroundUploading\"\n        class=\"uploading\"\n        spin\n        icon=\"circle-notch\"\n      />\n      <button\n        v-else-if=\"backgroundPreview\"\n        class=\"btn button-default\"\n        @click=\"submitBackground(background)\"\n      >\n        {{ $t('settings.save') }}\n      </button>\n    </div>\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.account_privacy') }}</h2>\n      <ul class=\"setting-list\">\n        <li>\n          <BooleanSetting path=\"serverSide_locked\">\n            {{ $t('settings.lock_account_description') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"serverSide_discoverable\">\n            {{ $t('settings.discoverable') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"serverSide_allowFollowingMove\">\n            {{ $t('settings.allow_following_move') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"serverSide_hideFavorites\">\n            {{ $t('settings.hide_favorites_description') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"serverSide_hideFollowers\">\n            {{ $t('settings.hide_followers_description') }}\n          </BooleanSetting>\n          <ul\n            class=\"setting-list suboptions\"\n            :class=\"[{disabled: !serverSide_hideFollowers}]\"\n          >\n            <li>\n              <BooleanSetting\n                path=\"serverSide_hideFollowersCount\"\n                :disabled=\"!serverSide_hideFollowers\"\n              >\n                {{ $t('settings.hide_followers_count_description') }}\n              </BooleanSetting>\n            </li>\n          </ul>\n        </li>\n        <li>\n          <BooleanSetting path=\"serverSide_hideFollows\">\n            {{ $t('settings.hide_follows_description') }}\n          </BooleanSetting>\n          <ul\n            class=\"setting-list suboptions\"\n            :class=\"[{disabled: !serverSide_hideFollows}]\"\n          >\n            <li>\n              <BooleanSetting\n                path=\"serverSide_hideFollowsCount\"\n                :disabled=\"!serverSide_hideFollows\"\n              >\n                {{ $t('settings.hide_follows_count_description') }}\n              </BooleanSetting>\n            </li>\n          </ul>\n        </li>\n      </ul>\n    </div>\n  </div>\n</template>\n\n<script src=\"./profile_tab.js\"></script>\n<style lang=\"scss\" src=\"./profile_tab.scss\"></style>\n","<template>\n  <div class=\"image-cropper\">\n    <div v-if=\"dataUrl\">\n      <div class=\"image-cropper-image-container\">\n        <img\n          ref=\"img\"\n          :src=\"dataUrl\"\n          alt=\"\"\n          @load.stop=\"createCropper\"\n        >\n      </div>\n      <div class=\"image-cropper-buttons-wrapper\">\n        <button\n          class=\"button-default btn\"\n          type=\"button\"\n          :disabled=\"submitting\"\n          @click=\"submit()\"\n          v-text=\"saveText\"\n        />\n        <button\n          class=\"button-default btn\"\n          type=\"button\"\n          :disabled=\"submitting\"\n          @click=\"destroy\"\n          v-text=\"cancelText\"\n        />\n        <button\n          class=\"button-default btn\"\n          type=\"button\"\n          :disabled=\"submitting\"\n          @click=\"submit(false)\"\n          v-text=\"saveWithoutCroppingText\"\n        />\n        <FAIcon\n          v-if=\"submitting\"\n          spin\n          icon=\"circle-notch\"\n        />\n      </div>\n    </div>\n    <input\n      ref=\"input\"\n      type=\"file\"\n      class=\"image-cropper-img-input\"\n      :accept=\"mimes\"\n    >\n  </div>\n</template>\n\n<script src=\"./image_cropper.js\"></script>\n\n<style lang=\"scss\">\n.image-cropper {\n  &-img-input {\n    display: none;\n  }\n\n  &-image-container {\n    position: relative;\n\n    img {\n      display: block;\n      max-width: 100%;\n    }\n  }\n\n  &-buttons-wrapper {\n    margin-top: 10px;\n\n    button {\n      margin-top: 5px;\n    }\n  }\n}\n</style>\n","import Cropper from 'cropperjs'\nimport 'cropperjs/dist/cropper.css'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch\n)\n\nconst ImageCropper = {\n  props: {\n    trigger: {\n      type: [String, window.Element],\n      required: true\n    },\n    submitHandler: {\n      type: Function,\n      required: true\n    },\n    cropperOptions: {\n      type: Object,\n      default () {\n        return {\n          aspectRatio: 1,\n          autoCropArea: 1,\n          viewMode: 1,\n          movable: false,\n          zoomable: false,\n          guides: false\n        }\n      }\n    },\n    mimes: {\n      type: String,\n      default: 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon'\n    },\n    saveButtonLabel: {\n      type: String\n    },\n    saveWithoutCroppingButtonlabel: {\n      type: String\n    },\n    cancelButtonLabel: {\n      type: String\n    }\n  },\n  data () {\n    return {\n      cropper: undefined,\n      dataUrl: undefined,\n      filename: undefined,\n      submitting: false\n    }\n  },\n  computed: {\n    saveText () {\n      return this.saveButtonLabel || this.$t('image_cropper.save')\n    },\n    saveWithoutCroppingText () {\n      return this.saveWithoutCroppingButtonlabel || this.$t('image_cropper.save_without_cropping')\n    },\n    cancelText () {\n      return this.cancelButtonLabel || this.$t('image_cropper.cancel')\n    }\n  },\n  methods: {\n    destroy () {\n      if (this.cropper) {\n        this.cropper.destroy()\n      }\n      this.$refs.input.value = ''\n      this.dataUrl = undefined\n      this.$emit('close')\n    },\n    submit (cropping = true) {\n      this.submitting = true\n      this.submitHandler(cropping && this.cropper, this.file)\n        .then(() => this.destroy())\n        .finally(() => {\n          this.submitting = false\n        })\n    },\n    pickImage () {\n      this.$refs.input.click()\n    },\n    createCropper () {\n      this.cropper = new Cropper(this.$refs.img, this.cropperOptions)\n    },\n    getTriggerDOM () {\n      return typeof this.trigger === 'object' ? this.trigger : document.querySelector(this.trigger)\n    },\n    readFile () {\n      const fileInput = this.$refs.input\n      if (fileInput.files != null && fileInput.files[0] != null) {\n        this.file = fileInput.files[0]\n        let reader = new window.FileReader()\n        reader.onload = (e) => {\n          this.dataUrl = e.target.result\n          this.$emit('open')\n        }\n        reader.readAsDataURL(this.file)\n        this.$emit('changed', this.file, reader)\n      }\n    }\n  },\n  mounted () {\n    // listen for click event on trigger\n    const trigger = this.getTriggerDOM()\n    if (!trigger) {\n      this.$emit('error', 'No image make trigger found.', 'user')\n    } else {\n      trigger.addEventListener('click', this.pickImage)\n    }\n    // listen for input file changes\n    const fileInput = this.$refs.input\n    fileInput.addEventListener('change', this.readFile)\n  },\n  beforeUnmount: function () {\n    // remove the event listeners\n    const trigger = this.getTriggerDOM()\n    if (trigger) {\n      trigger.removeEventListener('click', this.pickImage)\n    }\n    const fileInput = this.$refs.input\n    fileInput.removeEventListener('change', this.readFile)\n  }\n}\n\nexport default ImageCropper\n","import { render } from \"./image_cropper.vue?vue&type=template&id=0bac39f0\"\nimport script from \"./image_cropper.js?vue&type=script&lang=js\"\nexport * from \"./image_cropper.js?vue&type=script&lang=js\"\n\nimport \"./image_cropper.vue?vue&type=style&index=0&id=0bac39f0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import unescape from 'lodash/unescape'\nimport merge from 'lodash/merge'\nimport ImageCropper from 'src/components/image_cropper/image_cropper.vue'\nimport ScopeSelector from 'src/components/scope_selector/scope_selector.vue'\nimport fileSizeFormatService from 'src/components/../services/file_size_format/file_size_format.js'\nimport ProgressButton from 'src/components/progress_button/progress_button.vue'\nimport EmojiInput from 'src/components/emoji_input/emoji_input.vue'\nimport suggestor from 'src/components/emoji_input/suggestor.js'\nimport Autosuggest from 'src/components/autosuggest/autosuggest.vue'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\nimport InterfaceLanguageSwitcher from 'src/components/interface_language_switcher/interface_language_switcher.vue'\nimport BooleanSetting from '../helpers/boolean_setting.vue'\nimport SharedComputedObject from '../helpers/shared_computed_object.js'\nimport localeService from 'src/services/locale/locale.service.js'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes,\n  faPlus,\n  faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes,\n  faPlus,\n  faCircleNotch\n)\n\nconst ProfileTab = {\n  data () {\n    return {\n      newName: this.$store.state.users.currentUser.name_unescaped,\n      newBio: unescape(this.$store.state.users.currentUser.description),\n      newLocked: this.$store.state.users.currentUser.locked,\n      newFields: this.$store.state.users.currentUser.fields.map(field => ({ name: field.name, value: field.value })),\n      showRole: this.$store.state.users.currentUser.show_role,\n      role: this.$store.state.users.currentUser.role,\n      bot: this.$store.state.users.currentUser.bot,\n      pickAvatarBtnVisible: true,\n      bannerUploading: false,\n      backgroundUploading: false,\n      banner: null,\n      bannerPreview: null,\n      background: null,\n      backgroundPreview: null,\n      emailLanguage: this.$store.state.users.currentUser.language || ''\n    }\n  },\n  components: {\n    ScopeSelector,\n    ImageCropper,\n    EmojiInput,\n    Autosuggest,\n    ProgressButton,\n    Checkbox,\n    BooleanSetting,\n    InterfaceLanguageSwitcher\n  },\n  computed: {\n    user () {\n      return this.$store.state.users.currentUser\n    },\n    ...SharedComputedObject(),\n    emojiUserSuggestor () {\n      return suggestor({\n        emoji: [\n          ...this.$store.state.instance.emoji,\n          ...this.$store.state.instance.customEmoji\n        ],\n        store: this.$store\n      })\n    },\n    emojiSuggestor () {\n      return suggestor({ emoji: [\n        ...this.$store.state.instance.emoji,\n        ...this.$store.state.instance.customEmoji\n      ] })\n    },\n    userSuggestor () {\n      return suggestor({ store: this.$store })\n    },\n    fieldsLimits () {\n      return this.$store.state.instance.fieldsLimits\n    },\n    maxFields () {\n      return this.fieldsLimits ? this.fieldsLimits.maxFields : 0\n    },\n    defaultAvatar () {\n      return this.$store.state.instance.server + this.$store.state.instance.defaultAvatar\n    },\n    defaultBanner () {\n      return this.$store.state.instance.server + this.$store.state.instance.defaultBanner\n    },\n    isDefaultAvatar () {\n      const baseAvatar = this.$store.state.instance.defaultAvatar\n      return !(this.$store.state.users.currentUser.profile_image_url) ||\n      this.$store.state.users.currentUser.profile_image_url.includes(baseAvatar)\n    },\n    isDefaultBanner () {\n      const baseBanner = this.$store.state.instance.defaultBanner\n      return !(this.$store.state.users.currentUser.cover_photo) ||\n      this.$store.state.users.currentUser.cover_photo.includes(baseBanner)\n    },\n    isDefaultBackground () {\n      return !(this.$store.state.users.currentUser.background_image)\n    },\n    avatarImgSrc () {\n      const src = this.$store.state.users.currentUser.profile_image_url_original\n      return (!src) ? this.defaultAvatar : src\n    },\n    bannerImgSrc () {\n      const src = this.$store.state.users.currentUser.cover_photo\n      return (!src) ? this.defaultBanner : src\n    }\n  },\n  methods: {\n    updateProfile () {\n      const params = {\n        note: this.newBio,\n        locked: this.newLocked,\n        // Backend notation.\n        /* eslint-disable camelcase */\n        display_name: this.newName,\n        fields_attributes: this.newFields.filter(el => el != null),\n        bot: this.bot,\n        show_role: this.showRole\n        /* eslint-enable camelcase */\n      }\n\n      if (this.emailLanguage) {\n        params.language = localeService.internalToBackendLocale(this.emailLanguage)\n      }\n\n      this.$store.state.api.backendInteractor\n        .updateProfile({ params })\n        .then((user) => {\n          this.newFields.splice(user.fields.length)\n          merge(this.newFields, user.fields)\n          this.$store.commit('addNewUsers', [user])\n          this.$store.commit('setCurrentUser', user)\n        })\n    },\n    changeVis (visibility) {\n      this.newDefaultScope = visibility\n    },\n    addField () {\n      if (this.newFields.length < this.maxFields) {\n        this.newFields.push({ name: '', value: '' })\n        return true\n      }\n      return false\n    },\n    deleteField (index, event) {\n      this.$delete(this.newFields, index)\n    },\n    uploadFile (slot, e) {\n      const file = e.target.files[0]\n      if (!file) { return }\n      if (file.size > this.$store.state.instance[slot + 'limit']) {\n        const filesize = fileSizeFormatService.fileSizeFormat(file.size)\n        const allowedsize = fileSizeFormatService.fileSizeFormat(this.$store.state.instance[slot + 'limit'])\n        this.$store.dispatch('pushGlobalNotice', {\n          messageKey: 'upload.error.message',\n          messageArgs: [\n            this.$t('upload.error.file_too_big', {\n              filesize: filesize.num,\n              filesizeunit: filesize.unit,\n              allowedsize: allowedsize.num,\n              allowedsizeunit: allowedsize.unit\n            })\n          ],\n          level: 'error'\n        })\n        return\n      }\n      // eslint-disable-next-line no-undef\n      const reader = new FileReader()\n      reader.onload = ({ target }) => {\n        const img = target.result\n        this[slot + 'Preview'] = img\n        this[slot] = file\n      }\n      reader.readAsDataURL(file)\n    },\n    resetAvatar () {\n      const confirmed = window.confirm(this.$t('settings.reset_avatar_confirm'))\n      if (confirmed) {\n        this.submitAvatar(undefined, '')\n      }\n    },\n    resetBanner () {\n      const confirmed = window.confirm(this.$t('settings.reset_banner_confirm'))\n      if (confirmed) {\n        this.submitBanner('')\n      }\n    },\n    resetBackground () {\n      const confirmed = window.confirm(this.$t('settings.reset_background_confirm'))\n      if (confirmed) {\n        this.submitBackground('')\n      }\n    },\n    submitAvatar (cropper, file) {\n      const that = this\n      return new Promise((resolve, reject) => {\n        function updateAvatar (avatar, avatarName) {\n          that.$store.state.api.backendInteractor.updateProfileImages({ avatar, avatarName })\n            .then((user) => {\n              that.$store.commit('addNewUsers', [user])\n              that.$store.commit('setCurrentUser', user)\n              resolve()\n            })\n            .catch((error) => {\n              that.displayUploadError(error)\n              reject(error)\n            })\n        }\n\n        if (cropper) {\n          cropper.getCroppedCanvas().toBlob((data) => updateAvatar(data, file.name), file.type)\n        } else {\n          updateAvatar(file, file.name)\n        }\n      })\n    },\n    submitBanner (banner) {\n      if (!this.bannerPreview && banner !== '') { return }\n\n      this.bannerUploading = true\n      this.$store.state.api.backendInteractor.updateProfileImages({ banner })\n        .then((user) => {\n          this.$store.commit('addNewUsers', [user])\n          this.$store.commit('setCurrentUser', user)\n          this.bannerPreview = null\n        })\n        .catch(this.displayUploadError)\n        .finally(() => { this.bannerUploading = false })\n    },\n    submitBackground (background) {\n      if (!this.backgroundPreview && background !== '') { return }\n\n      this.backgroundUploading = true\n      this.$store.state.api.backendInteractor.updateProfileImages({ background })\n        .then((data) => {\n          this.$store.commit('addNewUsers', [data])\n          this.$store.commit('setCurrentUser', data)\n          this.backgroundPreview = null\n        })\n        .catch(this.displayUploadError)\n        .finally(() => { this.backgroundUploading = false })\n    },\n    displayUploadError (error) {\n      this.$store.dispatch('pushGlobalNotice', {\n        messageKey: 'upload.error.message',\n        messageArgs: [error.message],\n        level: 'error'\n      })\n    }\n  }\n}\n\nexport default ProfileTab\n","import { render } from \"./profile_tab.vue?vue&type=template&id=d5067dba\"\nimport script from \"./profile_tab.js?vue&type=script&lang=js\"\nexport * from \"./profile_tab.js?vue&type=script&lang=js\"\n\nimport \"./profile_tab.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div :label=\"$t('settings.general')\">\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.interface') }}</h2>\n      <ul class=\"setting-list\">\n        <li>\n          <interface-language-switcher\n            :prompt-text=\"$t('settings.interfaceLanguage')\"\n            :language=\"language\"\n            :set-language=\"val => language = val\"\n          />\n        </li>\n        <li v-if=\"instanceSpecificPanelPresent\">\n          <BooleanSetting path=\"hideISP\">\n            {{ $t('settings.hide_isp') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"sidebarRight\">\n            {{ $t('settings.right_sidebar') }}\n          </BooleanSetting>\n        </li>\n        <li v-if=\"instanceWallpaperUsed\">\n          <BooleanSetting path=\"hideInstanceWallpaper\">\n            {{ $t('settings.hide_wallpaper') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"stopGifs\">\n            {{ $t('settings.stop_gifs') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"streaming\">\n            {{ $t('settings.streaming') }}\n          </BooleanSetting>\n          <ul\n            class=\"setting-list suboptions\"\n            :class=\"[{disabled: !streaming}]\"\n          >\n            <li>\n              <BooleanSetting\n                path=\"pauseOnUnfocused\"\n                :disabled=\"!streaming\"\n              >\n                {{ $t('settings.pause_on_unfocused') }}\n              </BooleanSetting>\n            </li>\n          </ul>\n        </li>\n        <li>\n          <BooleanSetting\n            path=\"useStreamingApi\"\n            expert=\"1\"\n          >\n            {{ $t('settings.useStreamingApi') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting\n            path=\"virtualScrolling\"\n            expert=\"1\"\n          >\n            {{ $t('settings.virtual_scrolling') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"disableStickyHeaders\">\n            {{ $t('settings.disable_sticky_headers') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"showScrollbars\">\n            {{ $t('settings.show_scrollbars') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <ChoiceSetting\n            v-if=\"user\"\n            id=\"thirdColumnMode\"\n            path=\"thirdColumnMode\"\n            :options=\"thirdColumnModeOptions\"\n          >\n            {{ $t('settings.third_column_mode') }}\n          </ChoiceSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"minimalScopesMode\">\n            {{ $t('settings.minimal_scopes_mode') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"sensitiveByDefault\">\n            {{ $t('settings.sensitive_by_default') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"sensitiveIfSubject\">\n            {{ $t('settings.sensitive_if_subject') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"renderMisskeyMarkdown\">\n            {{ $t('settings.render_mfm') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting\n            path=\"alwaysShowNewPostButton\"\n            expert=\"1\"\n          >\n            {{ $t('settings.always_show_post_button') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting\n            path=\"autohideFloatingPostButton\"\n            expert=\"1\"\n          >\n            {{ $t('settings.autohide_floating_post_button') }}\n          </BooleanSetting>\n        </li>\n        <li v-if=\"instanceShoutboxPresent\">\n          <BooleanSetting\n            path=\"hideShoutbox\"\n            expert=\"1\"\n          >\n            {{ $t('settings.hide_shoutbox') }}\n          </BooleanSetting>\n        </li>\n      </ul>\n    </div>\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.post_look_feel') }}</h2>\n      <ul class=\"setting-list\">\n        <li>\n          <ChoiceSetting\n            id=\"conversationDisplay\"\n            path=\"conversationDisplay\"\n            :options=\"conversationDisplayOptions\"\n          >\n            {{ $t('settings.conversation_display') }}\n          </ChoiceSetting>\n        </li>\n        <ul\n          v-if=\"conversationDisplay !== 'linear'\"\n          class=\"setting-list suboptions\"\n        >\n          <li>\n            <BooleanSetting path=\"conversationTreeAdvanced\">\n              {{ $t('settings.tree_advanced') }}\n            </BooleanSetting>\n          </li>\n          <li>\n            <BooleanSetting\n              path=\"conversationTreeFadeAncestors\"\n              :expert=\"1\"\n            >\n              {{ $t('settings.tree_fade_ancestors') }}\n            </BooleanSetting>\n          </li>\n          <li>\n            <IntegerSetting\n              path=\"maxDepthInThread\"\n              :min=\"3\"\n              :expert=\"1\"\n            >\n              {{ $t('settings.max_depth_in_thread') }}\n            </IntegerSetting>\n          </li>\n          <li>\n            <ChoiceSetting\n              id=\"conversationOtherRepliesButton\"\n              path=\"conversationOtherRepliesButton\"\n              :options=\"conversationOtherRepliesButtonOptions\"\n              :expert=\"1\"\n            >\n              {{ $t('settings.conversation_other_replies_button') }}\n            </ChoiceSetting>\n          </li>\n        </ul>\n        <li>\n          <BooleanSetting path=\"collapseMessageWithSubject\">\n            {{ $t('settings.collapse_subject') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting\n            path=\"emojiReactionsOnTimeline\"\n            expert=\"1\"\n          >\n            {{ $t('settings.emoji_reactions_on_timeline') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting\n            v-if=\"user\"\n            path=\"serverSide_stripRichContent\"\n            expert=\"1\"\n          >\n            {{ $t('settings.no_rich_text_description') }}\n          </BooleanSetting>\n        </li>\n        <h3>{{ $t('settings.attachments') }}</h3>\n        <li>\n          <BooleanSetting\n            path=\"useContainFit\"\n            expert=\"1\"\n          >\n            {{ $t('settings.use_contain_fit') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"hideNsfw\">\n            {{ $t('settings.nsfw_clickthrough') }}\n          </BooleanSetting>\n        </li>\n        <ul class=\"setting-list suboptions\">\n          <li>\n            <BooleanSetting\n              path=\"preloadImage\"\n              expert=\"1\"\n              :disabled=\"!hideNsfw\"\n            >\n              {{ $t('settings.preload_images') }}\n            </BooleanSetting>\n          </li>\n          <li>\n            <BooleanSetting\n              path=\"useOneClickNsfw\"\n              expert=\"1\"\n              :disabled=\"!hideNsfw\"\n            >\n              {{ $t('settings.use_one_click_nsfw') }}\n            </BooleanSetting>\n          </li>\n        </ul>\n        <li>\n          <BooleanSetting\n            path=\"loopVideo\"\n            expert=\"1\"\n          >\n            {{ $t('settings.loop_video') }}\n          </BooleanSetting>\n          <ul\n            class=\"setting-list suboptions\"\n            :class=\"[{disabled: !streaming}]\"\n          >\n            <li>\n              <BooleanSetting\n                path=\"loopVideoSilentOnly\"\n                expert=\"1\"\n                :disabled=\"!loopVideo || !loopSilentAvailable\"\n              >\n                {{ $t('settings.loop_video_silent_only') }}\n              </BooleanSetting>\n              <div\n                v-if=\"!loopSilentAvailable\"\n                class=\"unavailable\"\n              >\n                <FAIcon icon=\"globe\" />! {{ $t('settings.limited_availability') }}\n              </div>\n            </li>\n          </ul>\n        </li>\n        <li>\n          <BooleanSetting\n            path=\"playVideosInModal\"\n            expert=\"1\"\n          >\n            {{ $t('settings.play_videos_in_modal') }}\n          </BooleanSetting>\n        </li>\n        <h3>{{ $t('settings.mention_links') }}</h3>\n        <li>\n          <ChoiceSetting\n            id=\"mentionLinkDisplay\"\n            path=\"mentionLinkDisplay\"\n            :options=\"mentionLinkDisplayOptions\"\n          >\n            {{ $t('settings.mention_link_display') }}\n          </ChoiceSetting>\n        </li>\n        <ul\n          class=\"setting-list suboptions\"\n        >\n          <li v-if=\"mentionLinkDisplay === 'short'\">\n            <BooleanSetting\n              path=\"mentionLinkShowTooltip\"\n              expert=\"1\"\n            >\n              {{ $t('settings.mention_link_show_tooltip') }}\n            </BooleanSetting>\n          </li>\n        </ul>\n        <li>\n          <BooleanSetting\n            path=\"useAtIcon\"\n            expert=\"1\"\n          >\n            {{ $t('settings.use_at_icon') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"mentionLinkShowAvatar\">\n            {{ $t('settings.mention_link_show_avatar') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting\n            path=\"mentionLinkFadeDomain\"\n            expert=\"1\"\n          >\n            {{ $t('settings.mention_link_fade_domain') }}\n          </BooleanSetting>\n        </li>\n        <li v-if=\"user\">\n          <BooleanSetting\n            path=\"mentionLinkBoldenYou\"\n            expert=\"1\"\n          >\n            {{ $t('settings.mention_link_bolden_you') }}\n          </BooleanSetting>\n        </li>\n        <h3 v-if=\"expertLevel > 0\">\n          {{ $t('settings.fun') }}\n        </h3>\n        <li>\n          <BooleanSetting\n            path=\"greentext\"\n            expert=\"1\"\n          >\n            {{ $t('settings.greentext') }}\n          </BooleanSetting>\n        </li>\n        <li v-if=\"user\">\n          <BooleanSetting\n            path=\"mentionLinkShowYous\"\n            expert=\"1\"\n          >\n            {{ $t('settings.show_yous') }}\n          </BooleanSetting>\n        </li>\n      </ul>\n    </div>\n\n    <div\n      v-if=\"user\"\n      class=\"setting-item\"\n    >\n      <h2>{{ $t('settings.composing') }}</h2>\n      <ul class=\"setting-list\">\n        <li>\n          <label for=\"default-vis\">\n            {{ $t('settings.default_vis') }} <ServerSideIndicator :server-side=\"true\" />\n            <ScopeSelector\n              class=\"scope-selector\"\n              :show-all=\"true\"\n              :user-default=\"serverSide_defaultScope\"\n              :initial-scope=\"serverSide_defaultScope\"\n              :on-scope-change=\"changeDefaultScope\"\n            />\n          </label>\n        </li>\n        <li>\n          <!-- <BooleanSetting path=\"serverSide_defaultNSFW\"> -->\n          <BooleanSetting path=\"sensitiveByDefault\">\n            {{ $t('settings.sensitive_by_default') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting\n            path=\"scopeCopy\"\n            expert=\"1\"\n          >\n            {{ $t('settings.scope_copy') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting\n            path=\"alwaysShowSubjectInput\"\n            expert=\"1\"\n          >\n            {{ $t('settings.subject_input_always_show') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <ChoiceSetting\n            id=\"subjectLineBehavior\"\n            path=\"subjectLineBehavior\"\n            :options=\"subjectLineOptions\"\n            expert=\"1\"\n          >\n            {{ $t('settings.subject_line_behavior') }}\n          </ChoiceSetting>\n        </li>\n        <li v-if=\"postFormats.length > 0\">\n          <ChoiceSetting\n            id=\"postContentType\"\n            path=\"postContentType\"\n            :options=\"postContentOptions\"\n          >\n            {{ $t('settings.post_status_content_type') }}\n          </ChoiceSetting>\n        </li>\n        <li>\n          <BooleanSetting\n            path=\"minimalScopesMode\"\n            expert=\"1\"\n          >\n            {{ $t('settings.minimal_scopes_mode') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting\n            path=\"alwaysShowNewPostButton\"\n            expert=\"1\"\n          >\n            {{ $t('settings.always_show_post_button') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting\n            path=\"autohideFloatingPostButton\"\n            expert=\"1\"\n          >\n            {{ $t('settings.autohide_floating_post_button') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting\n            path=\"padEmoji\"\n            expert=\"1\"\n          >\n            {{ $t('settings.pad_emoji') }}\n          </BooleanSetting>\n        </li>\n      </ul>\n    </div>\n  </div>\n</template>\n\n<script src=\"./general_tab.js\"></script>\n","import BooleanSetting from '../helpers/boolean_setting.vue'\nimport ChoiceSetting from '../helpers/choice_setting.vue'\nimport ScopeSelector from 'src/components/scope_selector/scope_selector.vue'\nimport IntegerSetting from '../helpers/integer_setting.vue'\nimport InterfaceLanguageSwitcher from 'src/components/interface_language_switcher/interface_language_switcher.vue'\n\nimport SharedComputedObject from '../helpers/shared_computed_object.js'\nimport ServerSideIndicator from '../helpers/server_side_indicator.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faGlobe\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faGlobe\n)\n\nconst GeneralTab = {\n  data () {\n    return {\n      subjectLineOptions: ['email', 'noop', 'masto'].map(mode => ({\n        key: mode,\n        value: mode,\n        label: this.$t(`settings.subject_line_${mode === 'masto' ? 'mastodon' : mode}`)\n      })),\n      conversationDisplayOptions: ['tree', 'linear'].map(mode => ({\n        key: mode,\n        value: mode,\n        label: this.$t(`settings.conversation_display_${mode}`)\n      })),\n      conversationOtherRepliesButtonOptions: ['below', 'inside'].map(mode => ({\n        key: mode,\n        value: mode,\n        label: this.$t(`settings.conversation_other_replies_button_${mode}`)\n      })),\n      mentionLinkDisplayOptions: ['short', 'full_for_remote', 'full'].map(mode => ({\n        key: mode,\n        value: mode,\n        label: this.$t(`settings.mention_link_display_${mode}`)\n      })),\n      thirdColumnModeOptions: ['none', 'notifications', 'postform'].map(mode => ({\n        key: mode,\n        value: mode,\n        label: this.$t(`settings.third_column_mode_${mode}`)\n      })),\n      loopSilentAvailable:\n      // Firefox\n      Object.getOwnPropertyDescriptor(HTMLVideoElement.prototype, 'mozHasAudio') ||\n      // Chrome-likes\n      Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype, 'webkitAudioDecodedByteCount') ||\n      // Future spec, still not supported in Nightly 63 as of 08/2018\n      Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype, 'audioTracks')\n    }\n  },\n  components: {\n    BooleanSetting,\n    ChoiceSetting,\n    IntegerSetting,\n    InterfaceLanguageSwitcher,\n    ScopeSelector,\n    ServerSideIndicator\n  },\n  computed: {\n    postFormats () {\n      return this.$store.state.instance.postFormats || []\n    },\n    postContentOptions () {\n      return this.postFormats.map(format => ({\n        key: format,\n        value: format,\n        label: this.$t(`post_status.content_type[\"${format}\"]`)\n      }))\n    },\n    instanceSpecificPanelPresent () { return this.$store.state.instance.showInstanceSpecificPanel },\n    instanceWallpaperUsed () {\n      return this.$store.state.instance.background &&\n        !this.$store.state.users.currentUser.background_image\n    },\n    instanceShoutboxPresent () { return this.$store.state.instance.shoutAvailable },\n    language: {\n      get: function () { return this.$store.getters.mergedConfig.interfaceLanguage },\n      set: function (val) {\n        this.$store.dispatch('setOption', { name: 'interfaceLanguage', value: val })\n      }\n    },\n    ...SharedComputedObject()\n  },\n  methods: {\n    changeDefaultScope (value) {\n      this.$store.dispatch('setServerSideOption', { name: 'defaultScope', value })\n    }\n  }\n}\n\nexport default GeneralTab\n","import { render } from \"./general_tab.vue?vue&type=template&id=317a4310\"\nimport script from \"./general_tab.js?vue&type=script&lang=js\"\nexport * from \"./general_tab.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div :label=\"$t('settings.version.title')\">\n    <div class=\"setting-item\">\n      <ul class=\"setting-list\">\n        <li>\n          <p>{{ $t('settings.version.backend_version') }}</p>\n          <ul class=\"option-list\">\n            <li>\n              <a\n                :href=\"backendVersionLink\"\n                target=\"_blank\"\n              >{{ backendVersion }}</a>\n            </li>\n          </ul>\n        </li>\n        <li>\n          <p>{{ $t('settings.version.frontend_version') }}</p>\n          <ul class=\"option-list\">\n            <li>\n              <a\n                :href=\"frontendVersionLink\"\n                target=\"_blank\"\n              >{{ frontendVersion }}</a>\n            </li>\n          </ul>\n        </li>\n      </ul>\n    </div>\n  </div>\n</template>\n<script src=\"./version_tab.js\" />\n","\nexport const extractCommit = versionString => {\n  const regex = /-g(\\w+)/i\n  const matches = versionString.match(regex)\n  return matches ? matches[1] : ''\n}\n","import { extractCommit } from 'src/services/version/version.service'\n\nconst pleromaFeCommitUrl = 'https://git.pleroma.social/pleroma/pleroma-fe/commit/'\nconst pleromaBeCommitUrl = 'https://git.pleroma.social/pleroma/pleroma/commit/'\n\nconst VersionTab = {\n  data () {\n    const instance = this.$store.state.instance\n    return {\n      backendVersion: instance.backendVersion,\n      frontendVersion: instance.frontendVersion\n    }\n  },\n  computed: {\n    frontendVersionLink () {\n      return pleromaFeCommitUrl + this.frontendVersion\n    },\n    backendVersionLink () {\n      return pleromaBeCommitUrl + extractCommit(this.backendVersion)\n    }\n  }\n}\n\nexport default VersionTab\n","import { render } from \"./version_tab.vue?vue&type=template&id=1295897c\"\nimport script from \"./version_tab.js?vue&type=script&lang=js\"\nexport * from \"./version_tab.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"theme-tab\">\n    <div class=\"presets-container\">\n      <div class=\"save-load\">\n        <div\n          v-if=\"themeWarning\"\n          class=\"theme-warning\"\n        >\n          <div class=\"alert warning\">\n            {{ themeWarningHelp }}\n          </div>\n          <div class=\"buttons\">\n            <template v-if=\"themeWarning.type === 'snapshot_source_mismatch'\">\n              <button\n                class=\"btn button-default\"\n                @click=\"forceLoad\"\n              >\n                {{ $t('settings.style.switcher.use_source') }}\n              </button>\n              <button\n                class=\"btn button-default\"\n                @click=\"forceSnapshot\"\n              >\n                {{ $t('settings.style.switcher.use_snapshot') }}\n              </button>\n            </template>\n            <template v-else-if=\"themeWarning.noActionsPossible\">\n              <button\n                class=\"btn button-default\"\n                @click=\"dismissWarning\"\n              >\n                {{ $t('general.dismiss') }}\n              </button>\n            </template>\n            <template v-else>\n              <button\n                class=\"btn button-default\"\n                @click=\"forceLoad\"\n              >\n                {{ $t('settings.style.switcher.load_theme') }}\n              </button>\n              <button\n                class=\"btn button-default\"\n                @click=\"dismissWarning\"\n              >\n                {{ $t('settings.style.switcher.keep_as_is') }}\n              </button>\n            </template>\n          </div>\n        </div>\n        <div class=\"top\">\n          <div class=\"presets\">\n            {{ $t('settings.presets') }}\n            <label\n              for=\"preset-switcher\"\n              class=\"select\"\n            >\n              <Select\n                id=\"preset-switcher\"\n                v-model=\"selected\"\n                class=\"preset-switcher\"\n              >\n                <option\n                  v-for=\"style in availableStyles\"\n                  :key=\"style.name\"\n                  :value=\"style.name || style[0]\"\n                  :style=\"{\n                    backgroundColor: style[1] || (style.theme || style.source).colors.bg,\n                    color: style[3] || (style.theme || style.source).colors.text\n                  }\"\n                >\n                  {{ style[0] || style.name }}\n                </option>\n              </Select>\n            </label>\n          </div>\n          <div class=\"export-import\">\n            <button\n              class=\"btn button-default\"\n              @click=\"importTheme\"\n            >\n              {{ $t(&quot;settings.import_theme&quot;) }}\n            </button>\n            <button\n              class=\"btn button-default\"\n              @click=\"exportTheme\"\n            >\n              {{ $t(&quot;settings.export_theme&quot;) }}\n            </button>\n          </div>\n        </div>\n      </div>\n      <div class=\"save-load-options\">\n        <span class=\"keep-option\">\n          <Checkbox v-model=\"keepColor\">\n            {{ $t('settings.style.switcher.keep_color') }}\n          </Checkbox>\n        </span>\n        <span class=\"keep-option\">\n          <Checkbox v-model=\"keepShadows\">\n            {{ $t('settings.style.switcher.keep_shadows') }}\n          </Checkbox>\n        </span>\n        <span class=\"keep-option\">\n          <Checkbox v-model=\"keepOpacity\">\n            {{ $t('settings.style.switcher.keep_opacity') }}\n          </Checkbox>\n        </span>\n        <span class=\"keep-option\">\n          <Checkbox v-model=\"keepRoundness\">\n            {{ $t('settings.style.switcher.keep_roundness') }}\n          </Checkbox>\n        </span>\n        <span class=\"keep-option\">\n          <Checkbox v-model=\"keepFonts\">\n            {{ $t('settings.style.switcher.keep_fonts') }}\n          </Checkbox>\n        </span>\n        <p>{{ $t('settings.style.switcher.save_load_hint') }}</p>\n      </div>\n    </div>\n\n    <preview :style=\"previewRules\" />\n\n    <keep-alive>\n      <tab-switcher key=\"style-tweak\">\n        <div\n          :label=\"$t('settings.style.common_colors._tab_label')\"\n          class=\"color-container\"\n        >\n          <div class=\"tab-header\">\n            <p>{{ $t('settings.theme_help') }}</p>\n            <div class=\"tab-header-buttons\">\n              <button\n                class=\"btn button-default\"\n                @click=\"clearOpacity\"\n              >\n                {{ $t('settings.style.switcher.clear_opacity') }}\n              </button>\n              <button\n                class=\"btn button-default\"\n                @click=\"clearV1\"\n              >\n                {{ $t('settings.style.switcher.clear_all') }}\n              </button>\n            </div>\n          </div>\n          <p>{{ $t('settings.theme_help_v2_1') }}</p>\n          <h4>{{ $t('settings.style.common_colors.main') }}</h4>\n          <div class=\"color-item\">\n            <ColorInput\n              v-model=\"bgColorLocal\"\n              name=\"bgColor\"\n              :label=\"$t('settings.background')\"\n            />\n            <OpacityInput\n              v-model=\"bgOpacityLocal\"\n              name=\"bgOpacity\"\n              :fallback=\"previewTheme.opacity.bg\"\n            />\n            <ColorInput\n              v-model=\"textColorLocal\"\n              name=\"textColor\"\n              :label=\"$t('settings.text')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.bgText\" />\n            <ColorInput\n              v-model=\"accentColorLocal\"\n              name=\"accentColor\"\n              :fallback=\"previewTheme.colors.link\"\n              :label=\"$t('settings.accent')\"\n              :show-optional-tickbox=\"typeof linkColorLocal !== 'undefined'\"\n            />\n            <ColorInput\n              v-model=\"linkColorLocal\"\n              name=\"linkColor\"\n              :fallback=\"previewTheme.colors.accent\"\n              :label=\"$t('settings.links')\"\n              :show-optional-tickbox=\"typeof accentColorLocal !== 'undefined'\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.bgLink\" />\n          </div>\n          <div class=\"color-item\">\n            <ColorInput\n              v-model=\"fgColorLocal\"\n              name=\"fgColor\"\n              :label=\"$t('settings.foreground')\"\n            />\n            <ColorInput\n              v-model=\"fgTextColorLocal\"\n              name=\"fgTextColor\"\n              :label=\"$t('settings.text')\"\n              :fallback=\"previewTheme.colors.fgText\"\n            />\n            <ColorInput\n              v-model=\"fgLinkColorLocal\"\n              name=\"fgLinkColor\"\n              :label=\"$t('settings.links')\"\n              :fallback=\"previewTheme.colors.fgLink\"\n            />\n            <p>{{ $t('settings.style.common_colors.foreground_hint') }}</p>\n          </div>\n          <h4>{{ $t('settings.style.common_colors.rgbo') }}</h4>\n          <div class=\"color-item\">\n            <ColorInput\n              v-model=\"cRedColorLocal\"\n              name=\"cRedColor\"\n              :label=\"$t('settings.cRed')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.bgCRed\" />\n            <ColorInput\n              v-model=\"cBlueColorLocal\"\n              name=\"cBlueColor\"\n              :label=\"$t('settings.cBlue')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.bgCBlue\" />\n          </div>\n          <div class=\"color-item\">\n            <ColorInput\n              v-model=\"cGreenColorLocal\"\n              name=\"cGreenColor\"\n              :label=\"$t('settings.cGreen')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.bgCGreen\" />\n            <ColorInput\n              v-model=\"cOrangeColorLocal\"\n              name=\"cOrangeColor\"\n              :label=\"$t('settings.cOrange')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.bgCOrange\" />\n          </div>\n          <p>{{ $t('settings.theme_help_v2_2') }}</p>\n        </div>\n\n        <div\n          :label=\"$t('settings.style.advanced_colors._tab_label')\"\n          class=\"color-container\"\n        >\n          <div class=\"tab-header\">\n            <p>{{ $t('settings.theme_help') }}</p>\n            <button\n              class=\"btn button-default\"\n              @click=\"clearOpacity\"\n            >\n              {{ $t('settings.style.switcher.clear_opacity') }}\n            </button>\n            <button\n              class=\"btn button-default\"\n              @click=\"clearV1\"\n            >\n              {{ $t('settings.style.switcher.clear_all') }}\n            </button>\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.post') }}</h4>\n            <ColorInput\n              v-model=\"postLinkColorLocal\"\n              name=\"postLinkColor\"\n              :fallback=\"previewTheme.colors.accent\"\n              :label=\"$t('settings.links')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.postLink\" />\n            <ColorInput\n              v-model=\"postGreentextColorLocal\"\n              name=\"postGreentextColor\"\n              :fallback=\"previewTheme.colors.cGreen\"\n              :label=\"$t('settings.greentext')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.postGreentext\" />\n            <h4>{{ $t('settings.style.advanced_colors.alert') }}</h4>\n            <ColorInput\n              v-model=\"alertErrorColorLocal\"\n              name=\"alertError\"\n              :label=\"$t('settings.style.advanced_colors.alert_error')\"\n              :fallback=\"previewTheme.colors.alertError\"\n            />\n            <ColorInput\n              v-model=\"alertErrorTextColorLocal\"\n              name=\"alertErrorText\"\n              :label=\"$t('settings.text')\"\n              :fallback=\"previewTheme.colors.alertErrorText\"\n            />\n            <ContrastRatio\n              :contrast=\"previewContrast.alertErrorText\"\n              large\n            />\n            <ColorInput\n              v-model=\"alertWarningColorLocal\"\n              name=\"alertWarning\"\n              :label=\"$t('settings.style.advanced_colors.alert_warning')\"\n              :fallback=\"previewTheme.colors.alertWarning\"\n            />\n            <ColorInput\n              v-model=\"alertWarningTextColorLocal\"\n              name=\"alertWarningText\"\n              :label=\"$t('settings.text')\"\n              :fallback=\"previewTheme.colors.alertWarningText\"\n            />\n            <ContrastRatio\n              :contrast=\"previewContrast.alertWarningText\"\n              large\n            />\n            <ColorInput\n              v-model=\"alertNeutralColorLocal\"\n              name=\"alertNeutral\"\n              :label=\"$t('settings.style.advanced_colors.alert_neutral')\"\n              :fallback=\"previewTheme.colors.alertNeutral\"\n            />\n            <ColorInput\n              v-model=\"alertNeutralTextColorLocal\"\n              name=\"alertNeutralText\"\n              :label=\"$t('settings.text')\"\n              :fallback=\"previewTheme.colors.alertNeutralText\"\n            />\n            <ContrastRatio\n              :contrast=\"previewContrast.alertNeutralText\"\n              large\n            />\n            <OpacityInput\n              v-model=\"alertOpacityLocal\"\n              name=\"alertOpacity\"\n              :fallback=\"previewTheme.opacity.alert\"\n            />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.badge') }}</h4>\n            <ColorInput\n              v-model=\"badgeNotificationColorLocal\"\n              name=\"badgeNotification\"\n              :label=\"$t('settings.style.advanced_colors.badge_notification')\"\n              :fallback=\"previewTheme.colors.badgeNotification\"\n            />\n            <ColorInput\n              v-model=\"badgeNotificationTextColorLocal\"\n              name=\"badgeNotificationText\"\n              :label=\"$t('settings.text')\"\n              :fallback=\"previewTheme.colors.badgeNotificationText\"\n            />\n            <ContrastRatio\n              :contrast=\"previewContrast.badgeNotificationText\"\n              large\n            />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.panel_header') }}</h4>\n            <ColorInput\n              v-model=\"panelColorLocal\"\n              name=\"panelColor\"\n              :fallback=\"previewTheme.colors.panel\"\n              :label=\"$t('settings.background')\"\n            />\n            <OpacityInput\n              v-model=\"panelOpacityLocal\"\n              name=\"panelOpacity\"\n              :fallback=\"previewTheme.opacity.panel\"\n              :disabled=\"panelColorLocal === 'transparent'\"\n            />\n            <ColorInput\n              v-model=\"panelTextColorLocal\"\n              name=\"panelTextColor\"\n              :fallback=\"previewTheme.colors.panelText\"\n              :label=\"$t('settings.text')\"\n            />\n            <ContrastRatio\n              :contrast=\"previewContrast.panelText\"\n              large\n            />\n            <ColorInput\n              v-model=\"panelLinkColorLocal\"\n              name=\"panelLinkColor\"\n              :fallback=\"previewTheme.colors.panelLink\"\n              :label=\"$t('settings.links')\"\n            />\n            <ContrastRatio\n              :contrast=\"previewContrast.panelLink\"\n              large\n            />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.top_bar') }}</h4>\n            <ColorInput\n              v-model=\"topBarColorLocal\"\n              name=\"topBarColor\"\n              :fallback=\"previewTheme.colors.topBar\"\n              :label=\"$t('settings.background')\"\n            />\n            <ColorInput\n              v-model=\"topBarTextColorLocal\"\n              name=\"topBarTextColor\"\n              :fallback=\"previewTheme.colors.topBarText\"\n              :label=\"$t('settings.text')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.topBarText\" />\n            <ColorInput\n              v-model=\"topBarLinkColorLocal\"\n              name=\"topBarLinkColor\"\n              :fallback=\"previewTheme.colors.topBarLink\"\n              :label=\"$t('settings.links')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.topBarLink\" />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.inputs') }}</h4>\n            <ColorInput\n              v-model=\"inputColorLocal\"\n              name=\"inputColor\"\n              :fallback=\"previewTheme.colors.input\"\n              :label=\"$t('settings.background')\"\n            />\n            <OpacityInput\n              v-model=\"inputOpacityLocal\"\n              name=\"inputOpacity\"\n              :fallback=\"previewTheme.opacity.input\"\n              :disabled=\"inputColorLocal === 'transparent'\"\n            />\n            <ColorInput\n              v-model=\"inputTextColorLocal\"\n              name=\"inputTextColor\"\n              :fallback=\"previewTheme.colors.inputText\"\n              :label=\"$t('settings.text')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.inputText\" />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.buttons') }}</h4>\n            <ColorInput\n              v-model=\"btnColorLocal\"\n              name=\"btnColor\"\n              :fallback=\"previewTheme.colors.btn\"\n              :label=\"$t('settings.background')\"\n            />\n            <OpacityInput\n              v-model=\"btnOpacityLocal\"\n              name=\"btnOpacity\"\n              :fallback=\"previewTheme.opacity.btn\"\n              :disabled=\"btnColorLocal === 'transparent'\"\n            />\n            <ColorInput\n              v-model=\"btnTextColorLocal\"\n              name=\"btnTextColor\"\n              :fallback=\"previewTheme.colors.btnText\"\n              :label=\"$t('settings.text')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.btnText\" />\n            <ColorInput\n              v-model=\"btnPanelTextColorLocal\"\n              name=\"btnPanelTextColor\"\n              :fallback=\"previewTheme.colors.btnPanelText\"\n              :label=\"$t('settings.style.advanced_colors.panel_header')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.btnPanelText\" />\n            <ColorInput\n              v-model=\"btnTopBarTextColorLocal\"\n              name=\"btnTopBarTextColor\"\n              :fallback=\"previewTheme.colors.btnTopBarText\"\n              :label=\"$t('settings.style.advanced_colors.top_bar')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.btnTopBarText\" />\n            <h5>{{ $t('settings.style.advanced_colors.pressed') }}</h5>\n            <ColorInput\n              v-model=\"btnPressedColorLocal\"\n              name=\"btnPressedColor\"\n              :fallback=\"previewTheme.colors.btnPressed\"\n              :label=\"$t('settings.background')\"\n            />\n            <ColorInput\n              v-model=\"btnPressedTextColorLocal\"\n              name=\"btnPressedTextColor\"\n              :fallback=\"previewTheme.colors.btnPressedText\"\n              :label=\"$t('settings.text')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.btnPressedText\" />\n            <ColorInput\n              v-model=\"btnPressedPanelTextColorLocal\"\n              name=\"btnPressedPanelTextColor\"\n              :fallback=\"previewTheme.colors.btnPressedPanelText\"\n              :label=\"$t('settings.style.advanced_colors.panel_header')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.btnPressedPanelText\" />\n            <ColorInput\n              v-model=\"btnPressedTopBarTextColorLocal\"\n              name=\"btnPressedTopBarTextColor\"\n              :fallback=\"previewTheme.colors.btnPressedTopBarText\"\n              :label=\"$t('settings.style.advanced_colors.top_bar')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.btnPressedTopBarText\" />\n            <h5>{{ $t('settings.style.advanced_colors.disabled') }}</h5>\n            <ColorInput\n              v-model=\"btnDisabledColorLocal\"\n              name=\"btnDisabledColor\"\n              :fallback=\"previewTheme.colors.btnDisabled\"\n              :label=\"$t('settings.background')\"\n            />\n            <ColorInput\n              v-model=\"btnDisabledTextColorLocal\"\n              name=\"btnDisabledTextColor\"\n              :fallback=\"previewTheme.colors.btnDisabledText\"\n              :label=\"$t('settings.text')\"\n            />\n            <ColorInput\n              v-model=\"btnDisabledPanelTextColorLocal\"\n              name=\"btnDisabledPanelTextColor\"\n              :fallback=\"previewTheme.colors.btnDisabledPanelText\"\n              :label=\"$t('settings.style.advanced_colors.panel_header')\"\n            />\n            <ColorInput\n              v-model=\"btnDisabledTopBarTextColorLocal\"\n              name=\"btnDisabledTopBarTextColor\"\n              :fallback=\"previewTheme.colors.btnDisabledTopBarText\"\n              :label=\"$t('settings.style.advanced_colors.top_bar')\"\n            />\n            <h5>{{ $t('settings.style.advanced_colors.toggled') }}</h5>\n            <ColorInput\n              v-model=\"btnToggledColorLocal\"\n              name=\"btnToggledColor\"\n              :fallback=\"previewTheme.colors.btnToggled\"\n              :label=\"$t('settings.background')\"\n            />\n            <ColorInput\n              v-model=\"btnToggledTextColorLocal\"\n              name=\"btnToggledTextColor\"\n              :fallback=\"previewTheme.colors.btnToggledText\"\n              :label=\"$t('settings.text')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.btnToggledText\" />\n            <ColorInput\n              v-model=\"btnToggledPanelTextColorLocal\"\n              name=\"btnToggledPanelTextColor\"\n              :fallback=\"previewTheme.colors.btnToggledPanelText\"\n              :label=\"$t('settings.style.advanced_colors.panel_header')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.btnToggledPanelText\" />\n            <ColorInput\n              v-model=\"btnToggledTopBarTextColorLocal\"\n              name=\"btnToggledTopBarTextColor\"\n              :fallback=\"previewTheme.colors.btnToggledTopBarText\"\n              :label=\"$t('settings.style.advanced_colors.top_bar')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.btnToggledTopBarText\" />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.tabs') }}</h4>\n            <ColorInput\n              v-model=\"tabColorLocal\"\n              name=\"tabColor\"\n              :fallback=\"previewTheme.colors.tab\"\n              :label=\"$t('settings.background')\"\n            />\n            <ColorInput\n              v-model=\"tabTextColorLocal\"\n              name=\"tabTextColor\"\n              :fallback=\"previewTheme.colors.tabText\"\n              :label=\"$t('settings.text')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.tabText\" />\n            <ColorInput\n              v-model=\"tabActiveTextColorLocal\"\n              name=\"tabActiveTextColor\"\n              :fallback=\"previewTheme.colors.tabActiveText\"\n              :label=\"$t('settings.text')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.tabActiveText\" />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.borders') }}</h4>\n            <ColorInput\n              v-model=\"borderColorLocal\"\n              name=\"borderColor\"\n              :fallback=\"previewTheme.colors.border\"\n              :label=\"$t('settings.style.common.color')\"\n            />\n            <OpacityInput\n              v-model=\"borderOpacityLocal\"\n              name=\"borderOpacity\"\n              :fallback=\"previewTheme.opacity.border\"\n              :disabled=\"borderColorLocal === 'transparent'\"\n            />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.faint_text') }}</h4>\n            <ColorInput\n              v-model=\"faintColorLocal\"\n              name=\"faintColor\"\n              :fallback=\"previewTheme.colors.faint\"\n              :label=\"$t('settings.text')\"\n            />\n            <ColorInput\n              v-model=\"faintLinkColorLocal\"\n              name=\"faintLinkColor\"\n              :fallback=\"previewTheme.colors.faintLink\"\n              :label=\"$t('settings.links')\"\n            />\n            <ColorInput\n              v-model=\"panelFaintColorLocal\"\n              name=\"panelFaintColor\"\n              :fallback=\"previewTheme.colors.panelFaint\"\n              :label=\"$t('settings.style.advanced_colors.panel_header')\"\n            />\n            <OpacityInput\n              v-model=\"faintOpacityLocal\"\n              name=\"faintOpacity\"\n              :fallback=\"previewTheme.opacity.faint\"\n            />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.underlay') }}</h4>\n            <ColorInput\n              v-model=\"underlayColorLocal\"\n              name=\"underlay\"\n              :label=\"$t('settings.style.advanced_colors.underlay')\"\n              :fallback=\"previewTheme.colors.underlay\"\n            />\n            <OpacityInput\n              v-model=\"underlayOpacityLocal\"\n              name=\"underlayOpacity\"\n              :fallback=\"previewTheme.opacity.underlay\"\n              :disabled=\"underlayOpacityLocal === 'transparent'\"\n            />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.wallpaper') }}</h4>\n            <ColorInput\n              v-model=\"wallpaperColorLocal\"\n              name=\"wallpaper\"\n              :label=\"$t('settings.style.advanced_colors.wallpaper')\"\n              :fallback=\"previewTheme.colors.wallpaper\"\n            />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.poll') }}</h4>\n            <ColorInput\n              v-model=\"pollColorLocal\"\n              name=\"poll\"\n              :label=\"$t('settings.background')\"\n              :fallback=\"previewTheme.colors.poll\"\n            />\n            <ColorInput\n              v-model=\"pollTextColorLocal\"\n              name=\"pollText\"\n              :label=\"$t('settings.text')\"\n              :fallback=\"previewTheme.colors.pollText\"\n            />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.icons') }}</h4>\n            <ColorInput\n              v-model=\"iconColorLocal\"\n              name=\"icon\"\n              :label=\"$t('settings.style.advanced_colors.icons')\"\n              :fallback=\"previewTheme.colors.icon\"\n            />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.highlight') }}</h4>\n            <ColorInput\n              v-model=\"highlightColorLocal\"\n              name=\"highlight\"\n              :label=\"$t('settings.background')\"\n              :fallback=\"previewTheme.colors.highlight\"\n            />\n            <ColorInput\n              v-model=\"highlightTextColorLocal\"\n              name=\"highlightText\"\n              :label=\"$t('settings.text')\"\n              :fallback=\"previewTheme.colors.highlightText\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.highlightText\" />\n            <ColorInput\n              v-model=\"highlightLinkColorLocal\"\n              name=\"highlightLink\"\n              :label=\"$t('settings.links')\"\n              :fallback=\"previewTheme.colors.highlightLink\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.highlightLink\" />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.popover') }}</h4>\n            <ColorInput\n              v-model=\"popoverColorLocal\"\n              name=\"popover\"\n              :label=\"$t('settings.background')\"\n              :fallback=\"previewTheme.colors.popover\"\n            />\n            <OpacityInput\n              v-model=\"popoverOpacityLocal\"\n              name=\"popoverOpacity\"\n              :fallback=\"previewTheme.opacity.popover\"\n              :disabled=\"popoverOpacityLocal === 'transparent'\"\n            />\n            <ColorInput\n              v-model=\"popoverTextColorLocal\"\n              name=\"popoverText\"\n              :label=\"$t('settings.text')\"\n              :fallback=\"previewTheme.colors.popoverText\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.popoverText\" />\n            <ColorInput\n              v-model=\"popoverLinkColorLocal\"\n              name=\"popoverLink\"\n              :label=\"$t('settings.links')\"\n              :fallback=\"previewTheme.colors.popoverLink\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.popoverLink\" />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.selectedPost') }}</h4>\n            <ColorInput\n              v-model=\"selectedPostColorLocal\"\n              name=\"selectedPost\"\n              :label=\"$t('settings.background')\"\n              :fallback=\"previewTheme.colors.selectedPost\"\n            />\n            <ColorInput\n              v-model=\"selectedPostTextColorLocal\"\n              name=\"selectedPostText\"\n              :label=\"$t('settings.text')\"\n              :fallback=\"previewTheme.colors.selectedPostText\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.selectedPostText\" />\n            <ColorInput\n              v-model=\"selectedPostLinkColorLocal\"\n              name=\"selectedPostLink\"\n              :label=\"$t('settings.links')\"\n              :fallback=\"previewTheme.colors.selectedPostLink\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.selectedPostLink\" />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.selectedMenu') }}</h4>\n            <ColorInput\n              v-model=\"selectedMenuColorLocal\"\n              name=\"selectedMenu\"\n              :label=\"$t('settings.background')\"\n              :fallback=\"previewTheme.colors.selectedMenu\"\n            />\n            <ColorInput\n              v-model=\"selectedMenuTextColorLocal\"\n              name=\"selectedMenuText\"\n              :label=\"$t('settings.text')\"\n              :fallback=\"previewTheme.colors.selectedMenuText\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.selectedMenuText\" />\n            <ColorInput\n              v-model=\"selectedMenuLinkColorLocal\"\n              name=\"selectedMenuLink\"\n              :label=\"$t('settings.links')\"\n              :fallback=\"previewTheme.colors.selectedMenuLink\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.selectedMenuLink\" />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('chats.chats') }}</h4>\n            <ColorInput\n              v-model=\"chatBgColorLocal\"\n              name=\"chatBgColor\"\n              :fallback=\"previewTheme.colors.bg\"\n              :label=\"$t('settings.background')\"\n            />\n            <h5>{{ $t('settings.style.advanced_colors.chat.incoming') }}</h5>\n            <ColorInput\n              v-model=\"chatMessageIncomingBgColorLocal\"\n              name=\"chatMessageIncomingBgColor\"\n              :fallback=\"previewTheme.colors.bg\"\n              :label=\"$t('settings.background')\"\n            />\n            <ColorInput\n              v-model=\"chatMessageIncomingTextColorLocal\"\n              name=\"chatMessageIncomingTextColor\"\n              :fallback=\"previewTheme.colors.text\"\n              :label=\"$t('settings.text')\"\n            />\n            <ColorInput\n              v-model=\"chatMessageIncomingLinkColorLocal\"\n              name=\"chatMessageIncomingLinkColor\"\n              :fallback=\"previewTheme.colors.link\"\n              :label=\"$t('settings.links')\"\n            />\n            <ColorInput\n              v-model=\"chatMessageIncomingBorderColorLocal\"\n              name=\"chatMessageIncomingBorderLinkColor\"\n              :fallback=\"previewTheme.colors.fg\"\n              :label=\"$t('settings.style.advanced_colors.chat.border')\"\n            />\n            <h5>{{ $t('settings.style.advanced_colors.chat.outgoing') }}</h5>\n            <ColorInput\n              v-model=\"chatMessageOutgoingBgColorLocal\"\n              name=\"chatMessageOutgoingBgColor\"\n              :fallback=\"previewTheme.colors.bg\"\n              :label=\"$t('settings.background')\"\n            />\n            <ColorInput\n              v-model=\"chatMessageOutgoingTextColorLocal\"\n              name=\"chatMessageOutgoingTextColor\"\n              :fallback=\"previewTheme.colors.text\"\n              :label=\"$t('settings.text')\"\n            />\n            <ColorInput\n              v-model=\"chatMessageOutgoingLinkColorLocal\"\n              name=\"chatMessageOutgoingLinkColor\"\n              :fallback=\"previewTheme.colors.link\"\n              :label=\"$t('settings.links')\"\n            />\n            <ColorInput\n              v-model=\"chatMessageOutgoingBorderColorLocal\"\n              name=\"chatMessageOutgoingBorderLinkColor\"\n              :fallback=\"previewTheme.colors.bg\"\n              :label=\"$t('settings.style.advanced_colors.chat.border')\"\n            />\n          </div>\n        </div>\n\n        <div\n          :label=\"$t('settings.style.radii._tab_label')\"\n          class=\"radius-container\"\n        >\n          <div class=\"tab-header\">\n            <p>{{ $t('settings.radii_help') }}</p>\n            <button\n              class=\"btn button-default\"\n              @click=\"clearRoundness\"\n            >\n              {{ $t('settings.style.switcher.clear_all') }}\n            </button>\n          </div>\n          <RangeInput\n            v-model=\"btnRadiusLocal\"\n            name=\"btnRadius\"\n            :label=\"$t('settings.btnRadius')\"\n            :fallback=\"previewTheme.radii.btn\"\n            max=\"16\"\n            hard-min=\"0\"\n          />\n          <RangeInput\n            v-model=\"inputRadiusLocal\"\n            name=\"inputRadius\"\n            :label=\"$t('settings.inputRadius')\"\n            :fallback=\"previewTheme.radii.input\"\n            max=\"9\"\n            hard-min=\"0\"\n          />\n          <RangeInput\n            v-model=\"checkboxRadiusLocal\"\n            name=\"checkboxRadius\"\n            :label=\"$t('settings.checkboxRadius')\"\n            :fallback=\"previewTheme.radii.checkbox\"\n            max=\"16\"\n            hard-min=\"0\"\n          />\n          <RangeInput\n            v-model=\"panelRadiusLocal\"\n            name=\"panelRadius\"\n            :label=\"$t('settings.panelRadius')\"\n            :fallback=\"previewTheme.radii.panel\"\n            max=\"50\"\n            hard-min=\"0\"\n          />\n          <RangeInput\n            v-model=\"avatarRadiusLocal\"\n            name=\"avatarRadius\"\n            :label=\"$t('settings.avatarRadius')\"\n            :fallback=\"previewTheme.radii.avatar\"\n            max=\"28\"\n            hard-min=\"0\"\n          />\n          <RangeInput\n            v-model=\"avatarAltRadiusLocal\"\n            name=\"avatarAltRadius\"\n            :label=\"$t('settings.avatarAltRadius')\"\n            :fallback=\"previewTheme.radii.avatarAlt\"\n            max=\"28\"\n            hard-min=\"0\"\n          />\n          <RangeInput\n            v-model=\"attachmentRadiusLocal\"\n            name=\"attachmentRadius\"\n            :label=\"$t('settings.attachmentRadius')\"\n            :fallback=\"previewTheme.radii.attachment\"\n            max=\"50\"\n            hard-min=\"0\"\n          />\n          <RangeInput\n            v-model=\"tooltipRadiusLocal\"\n            name=\"tooltipRadius\"\n            :label=\"$t('settings.tooltipRadius')\"\n            :fallback=\"previewTheme.radii.tooltip\"\n            max=\"50\"\n            hard-min=\"0\"\n          />\n          <RangeInput\n            v-model=\"chatMessageRadiusLocal\"\n            name=\"chatMessageRadius\"\n            :label=\"$t('settings.chatMessageRadius')\"\n            :fallback=\"previewTheme.radii.chatMessage || 2\"\n            max=\"50\"\n            hard-min=\"0\"\n          />\n        </div>\n\n        <div\n          :label=\"$t('settings.style.shadows._tab_label')\"\n          class=\"shadow-container\"\n        >\n          <div class=\"tab-header shadow-selector\">\n            <div class=\"select-container\">\n              {{ $t('settings.style.shadows.component') }}\n              {{ ' ' }}\n              <Select\n                id=\"shadow-switcher\"\n                v-model=\"shadowSelected\"\n                class=\"shadow-switcher\"\n              >\n                <option\n                  v-for=\"shadow in shadowsAvailable\"\n                  :key=\"shadow\"\n                  :value=\"shadow\"\n                >\n                  {{ $t('settings.style.shadows.components.' + shadow) }}\n                </option>\n              </Select>\n            </div>\n            <div class=\"override\">\n              <label\n                for=\"override\"\n                class=\"label\"\n              >\n                {{ $t('settings.style.shadows.override') }}\n              </label>\n              {{ ' ' }}\n              <input\n                id=\"override\"\n                v-model=\"currentShadowOverriden\"\n                name=\"override\"\n                class=\"input-override\"\n                type=\"checkbox\"\n              >\n              <label\n                class=\"checkbox-label\"\n                for=\"override\"\n              />\n            </div>\n            <button\n              class=\"btn button-default\"\n              @click=\"clearShadows\"\n            >\n              {{ $t('settings.style.switcher.clear_all') }}\n            </button>\n          </div>\n          <ShadowControl\n            v-model=\"currentShadow\"\n            :ready=\"!!currentShadowFallback\"\n            :fallback=\"currentShadowFallback\"\n          />\n          <div v-if=\"shadowSelected === 'avatar' || shadowSelected === 'avatarStatus'\">\n            <i18n-t\n              scope=\"global\"\n              keypath=\"settings.style.shadows.filter_hint.always_drop_shadow\"\n              tag=\"p\"\n            >\n              <code>filter: drop-shadow()</code>\n            </i18n-t>\n            <p>{{ $t('settings.style.shadows.filter_hint.avatar_inset') }}</p>\n            <i18n-t\n              scope=\"global\"\n              keypath=\"settings.style.shadows.filter_hint.drop_shadow_syntax\"\n              tag=\"p\"\n            >\n              <code>drop-shadow</code>\n              <code>spread-radius</code>\n              <code>inset</code>\n            </i18n-t>\n            <i18n-t\n              scope=\"global\"\n              keypath=\"settings.style.shadows.filter_hint.inset_classic\"\n              tag=\"p\"\n            >\n              <code>box-shadow</code>\n            </i18n-t>\n            <p>{{ $t('settings.style.shadows.filter_hint.spread_zero') }}</p>\n          </div>\n        </div>\n\n        <div\n          :label=\"$t('settings.style.fonts._tab_label')\"\n          class=\"fonts-container\"\n        >\n          <div class=\"tab-header\">\n            <p>{{ $t('settings.style.fonts.help') }}</p>\n            <button\n              class=\"btn button-default\"\n              @click=\"clearFonts\"\n            >\n              {{ $t('settings.style.switcher.clear_all') }}\n            </button>\n          </div>\n          <FontControl\n            v-model=\"fontsLocal.interface\"\n            name=\"ui\"\n            :label=\"$t('settings.style.fonts.components.interface')\"\n            :fallback=\"previewTheme.fonts.interface\"\n            no-inherit=\"1\"\n          />\n          <FontControl\n            v-model=\"fontsLocal.input\"\n            name=\"input\"\n            :label=\"$t('settings.style.fonts.components.input')\"\n            :fallback=\"previewTheme.fonts.input\"\n          />\n          <FontControl\n            v-model=\"fontsLocal.post\"\n            name=\"post\"\n            :label=\"$t('settings.style.fonts.components.post')\"\n            :fallback=\"previewTheme.fonts.post\"\n          />\n          <FontControl\n            v-model=\"fontsLocal.postCode\"\n            name=\"postCode\"\n            :label=\"$t('settings.style.fonts.components.postCode')\"\n            :fallback=\"previewTheme.fonts.postCode\"\n          />\n        </div>\n      </tab-switcher>\n    </keep-alive>\n\n    <teleport\n      v-if=\"isActive\"\n      to=\"#unscrolled-content\"\n    >\n      <div class=\"apply-container\">\n        <button\n          class=\"btn button-default submit\"\n          :disabled=\"!themeValid\"\n          @click=\"setCustomTheme\"\n        >\n          {{ $t('general.apply') }}\n        </button>\n        <button\n          class=\"btn button-default\"\n          @click=\"clearAll\"\n        >\n          {{ $t('settings.style.switcher.reset') }}\n        </button>\n      </div>\n    </teleport>\n  </div>\n</template>\n\n<script src=\"./theme_tab.js\"></script>\n\n<style src=\"./theme_tab.scss\" lang=\"scss\"></style>\n","<template>\n  <div\n    class=\"color-input style-control\"\n    :class=\"{ disabled: !present || disabled }\"\n  >\n    <label\n      :for=\"name\"\n      class=\"label\"\n    >\n      {{ label }}\n    </label>\n    <Checkbox\n      v-if=\"typeof fallback !== 'undefined' && showOptionalTickbox\"\n      :model-value=\"present\"\n      :disabled=\"disabled\"\n      class=\"opt\"\n      @update:modelValue=\"$emit('update:modelValue', typeof modelValue === 'undefined' ? fallback : undefined)\"\n    />\n    <div class=\"input color-input-field\">\n      <input\n        :id=\"name + '-t'\"\n        class=\"textColor unstyled\"\n        type=\"text\"\n        :value=\"modelValue || fallback\"\n        :disabled=\"!present || disabled\"\n        @input=\"$emit('update:modelValue', $event.target.value)\"\n      >\n      <input\n        v-if=\"validColor\"\n        :id=\"name\"\n        class=\"nativeColor unstyled\"\n        type=\"color\"\n        :value=\"modelValue || fallback\"\n        :disabled=\"!present || disabled\"\n        @input=\"$emit('update:modelValue', $event.target.value)\"\n      >\n      <div\n        v-if=\"transparentColor\"\n        class=\"transparentIndicator\"\n      />\n      <div\n        v-if=\"computedColor\"\n        class=\"computedIndicator\"\n        :style=\"{backgroundColor: fallback}\"\n      />\n    </div>\n  </div>\n</template>\n<style lang=\"scss\" src=\"./color_input.scss\"></style>\n<script>\nimport Checkbox from '../checkbox/checkbox.vue'\nimport { hex2rgb } from '../../services/color_convert/color_convert.js'\nexport default {\n  components: {\n    Checkbox\n  },\n  props: {\n    // Name of color, used for identifying\n    name: {\n      required: true,\n      type: String\n    },\n    // Readable label\n    label: {\n      required: true,\n      type: String\n    },\n    // Color value, should be required but vue cannot tell the difference\n    // between \"property missing\" and \"property set to undefined\"\n    modelValue: {\n      required: false,\n      type: String,\n      default: undefined\n    },\n    // Color fallback to use when value is not defeind\n    fallback: {\n      required: false,\n      type: String,\n      default: undefined\n    },\n    // Disable the control\n    disabled: {\n      required: false,\n      type: Boolean,\n      default: false\n    },\n    // Show \"optional\" tickbox, for when value might become mandatory\n    showOptionalTickbox: {\n      required: false,\n      type: Boolean,\n      default: true\n    }\n  },\n  emits: ['update:modelValue'],\n  computed: {\n    present () {\n      return typeof this.modelValue !== 'undefined'\n    },\n    validColor () {\n      return hex2rgb(this.modelValue || this.fallback)\n    },\n    transparentColor () {\n      return this.modelValue === 'transparent'\n    },\n    computedColor () {\n      return this.modelValue && this.modelValue.startsWith('--')\n    }\n  }\n}\n</script>\n\n<style lang=\"scss\">\n.color-control {\n  input.text-input {\n    max-width: 7em;\n    flex: 1;\n  }\n}\n</style>\n","import { render } from \"./color_input.vue?vue&type=template&id=54780100\"\nimport script from \"./color_input.vue?vue&type=script&lang=js\"\nexport * from \"./color_input.vue?vue&type=script&lang=js\"\n\nimport \"./color_input.scss?vue&type=style&index=0&lang=scss\"\nimport \"./color_input.vue?vue&type=style&index=1&id=54780100&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    class=\"range-control style-control\"\n    :class=\"{ disabled: !present || disabled }\"\n  >\n    <label\n      :for=\"name\"\n      class=\"label\"\n    >\n      {{ label }}\n    </label>\n    <input\n      v-if=\"typeof fallback !== 'undefined'\"\n      :id=\"name + '-o'\"\n      class=\"opt\"\n      type=\"checkbox\"\n      :checked=\"present\"\n      @change=\"$emit('update:modelValue', !present ? fallback : undefined)\"\n    >\n    <label\n      v-if=\"typeof fallback !== 'undefined'\"\n      class=\"opt-l\"\n      :for=\"name + '-o'\"\n    />\n    <input\n      :id=\"name\"\n      class=\"input-number\"\n      type=\"range\"\n      :value=\"modelValue || fallback\"\n      :disabled=\"!present || disabled\"\n      :max=\"max || hardMax || 100\"\n      :min=\"min || hardMin || 0\"\n      :step=\"step || 1\"\n      @input=\"$emit('update:modelValue', $event.target.value)\"\n    >\n    <input\n      :id=\"name\"\n      class=\"input-number\"\n      type=\"number\"\n      :value=\"modelValue || fallback\"\n      :disabled=\"!present || disabled\"\n      :max=\"hardMax\"\n      :min=\"hardMin\"\n      :step=\"step || 1\"\n      @input=\"$emit('update:modelValue', $event.target.value)\"\n    >\n  </div>\n</template>\n\n<script>\nexport default {\n  props: [\n    'name', 'modelValue', 'fallback', 'disabled', 'label', 'max', 'min', 'step', 'hardMin', 'hardMax'\n  ],\n  emits: ['update:modelValue'],\n  computed: {\n    present () {\n      return typeof this.modelValue !== 'undefined'\n    }\n  }\n}\n</script>\n","import { render } from \"./range_input.vue?vue&type=template&id=7ecff9e8\"\nimport script from \"./range_input.vue?vue&type=script&lang=js\"\nexport * from \"./range_input.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    class=\"opacity-control style-control\"\n    :class=\"{ disabled: !present || disabled }\"\n  >\n    <label\n      :for=\"name\"\n      class=\"label\"\n    >\n      {{ $t('settings.style.common.opacity') }}\n    </label>\n    <Checkbox\n      v-if=\"typeof fallback !== 'undefined'\"\n      :model-value=\"present\"\n      :disabled=\"disabled\"\n      class=\"opt\"\n      @update:modelValue=\"$emit('update:modelValue', !present ? fallback : undefined)\"\n    />\n    <input\n      :id=\"name\"\n      class=\"input-number\"\n      type=\"number\"\n      :value=\"modelValue || fallback\"\n      :disabled=\"!present || disabled\"\n      max=\"1\"\n      min=\"0\"\n      step=\".05\"\n      @input=\"$emit('update:modelValue', $event.target.value)\"\n    >\n  </div>\n</template>\n\n<script>\nimport Checkbox from '../checkbox/checkbox.vue'\nexport default {\n  components: {\n    Checkbox\n  },\n  props: [\n    'name', 'modelValue', 'fallback', 'disabled'\n  ],\n  emits: ['update:modelValue'],\n  computed: {\n    present () {\n      return typeof this.modelValue !== 'undefined'\n    }\n  }\n}\n</script>\n","import { render } from \"./opacity_input.vue?vue&type=template&id=69949f84\"\nimport script from \"./opacity_input.vue?vue&type=script&lang=js\"\nexport * from \"./opacity_input.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    class=\"shadow-control\"\n    :class=\"{ disabled: !present }\"\n  >\n    <div class=\"shadow-preview-container\">\n      <div\n        :disabled=\"!present\"\n        class=\"y-shift-control\"\n      >\n        <input\n          v-model=\"selected.y\"\n          :disabled=\"!present\"\n          class=\"input-number\"\n          type=\"number\"\n        >\n        <div class=\"wrap\">\n          <input\n            v-model=\"selected.y\"\n            :disabled=\"!present\"\n            class=\"input-range\"\n            type=\"range\"\n            max=\"20\"\n            min=\"-20\"\n          >\n        </div>\n      </div>\n      <div class=\"preview-window\">\n        <div\n          class=\"preview-block\"\n          :style=\"style\"\n        />\n      </div>\n      <div\n        :disabled=\"!present\"\n        class=\"x-shift-control\"\n      >\n        <input\n          v-model=\"selected.x\"\n          :disabled=\"!present\"\n          class=\"input-number\"\n          type=\"number\"\n        >\n        <div class=\"wrap\">\n          <input\n            v-model=\"selected.x\"\n            :disabled=\"!present\"\n            class=\"input-range\"\n            type=\"range\"\n            max=\"20\"\n            min=\"-20\"\n          >\n        </div>\n      </div>\n    </div>\n\n    <div class=\"shadow-tweak\">\n      <div\n        :disabled=\"usingFallback\"\n        class=\"id-control style-control\"\n      >\n        <Select\n          id=\"shadow-switcher\"\n          v-model=\"selectedId\"\n          class=\"shadow-switcher\"\n          :disabled=\"!ready || usingFallback\"\n        >\n          <option\n            v-for=\"(shadow, index) in cValue\"\n            :key=\"index\"\n            :value=\"index\"\n          >\n            {{ $t('settings.style.shadows.shadow_id', { value: index }) }}\n          </option>\n        </Select>\n        <button\n          class=\"btn button-default\"\n          :disabled=\"!ready || !present\"\n          @click=\"del\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"times\"\n          />\n        </button>\n        <button\n          class=\"btn button-default\"\n          :disabled=\"!moveUpValid\"\n          @click=\"moveUp\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"chevron-up\"\n          />\n        </button>\n        <button\n          class=\"btn button-default\"\n          :disabled=\"!moveDnValid\"\n          @click=\"moveDn\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"chevron-down\"\n          />\n        </button>\n        <button\n          class=\"btn button-default\"\n          :disabled=\"usingFallback\"\n          @click=\"add\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"plus\"\n          />\n        </button>\n      </div>\n      <div\n        :disabled=\"!present\"\n        class=\"inset-control style-control\"\n      >\n        <label\n          for=\"inset\"\n          class=\"label\"\n        >\n          {{ $t('settings.style.shadows.inset') }}\n        </label>\n        <input\n          id=\"inset\"\n          v-model=\"selected.inset\"\n          :disabled=\"!present\"\n          name=\"inset\"\n          class=\"input-inset\"\n          type=\"checkbox\"\n        >\n        <label\n          class=\"checkbox-label\"\n          for=\"inset\"\n        />\n      </div>\n      <div\n        :disabled=\"!present\"\n        class=\"blur-control style-control\"\n      >\n        <label\n          for=\"spread\"\n          class=\"label\"\n        >\n          {{ $t('settings.style.shadows.blur') }}\n        </label>\n        <input\n          id=\"blur\"\n          v-model=\"selected.blur\"\n          :disabled=\"!present\"\n          name=\"blur\"\n          class=\"input-range\"\n          type=\"range\"\n          max=\"20\"\n          min=\"0\"\n        >\n        <input\n          v-model=\"selected.blur\"\n          :disabled=\"!present\"\n          class=\"input-number\"\n          type=\"number\"\n          min=\"0\"\n        >\n      </div>\n      <div\n        :disabled=\"!present\"\n        class=\"spread-control style-control\"\n      >\n        <label\n          for=\"spread\"\n          class=\"label\"\n        >\n          {{ $t('settings.style.shadows.spread') }}\n        </label>\n        <input\n          id=\"spread\"\n          v-model=\"selected.spread\"\n          :disabled=\"!present\"\n          name=\"spread\"\n          class=\"input-range\"\n          type=\"range\"\n          max=\"20\"\n          min=\"-20\"\n        >\n        <input\n          v-model=\"selected.spread\"\n          :disabled=\"!present\"\n          class=\"input-number\"\n          type=\"number\"\n        >\n      </div>\n      <ColorInput\n        v-model=\"selected.color\"\n        :disabled=\"!present\"\n        :label=\"$t('settings.style.common.color')\"\n        :fallback=\"currentFallback.color\"\n        :show-optional-tickbox=\"false\"\n        name=\"shadow\"\n      />\n      <OpacityInput\n        v-model=\"selected.alpha\"\n        :disabled=\"!present\"\n      />\n      <i18n-t\n        scope=\"global\"\n        keypath=\"settings.style.shadows.hintV3\"\n        tag=\"p\"\n      >\n        <code>--variable,mod</code>\n      </i18n-t>\n    </div>\n  </div>\n</template>\n\n<script src=\"./shadow_control.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n.shadow-control {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: center;\n  margin-bottom: 1em;\n\n  .shadow-preview-container,\n  .shadow-tweak {\n    margin: 5px 6px 0 0;\n  }\n  .shadow-preview-container {\n    flex: 0;\n    display: flex;\n    flex-wrap: wrap;\n\n    $side: 15em;\n\n    input[type=number] {\n      width: 5em;\n      min-width: 2em;\n    }\n    .x-shift-control,\n    .y-shift-control {\n      display: flex;\n      flex: 0;\n\n      &[disabled=disabled] *{\n        opacity: .5\n      }\n\n    }\n\n    .x-shift-control {\n      align-items: flex-start;\n    }\n\n    .x-shift-control .wrap,\n    input[type=range] {\n      margin: 0;\n      width: $side;\n      height: 2em;\n    }\n    .y-shift-control {\n      flex-direction: column;\n      align-items: flex-end;\n      .wrap {\n        width: 2em;\n        height: $side;\n      }\n      input[type=range] {\n        transform-origin: 1em 1em;\n        transform: rotate(90deg);\n      }\n    }\n    .preview-window {\n      flex: 1;\n      background-color: #999999;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      background-image:\n      linear-gradient(45deg, #666666 25%, transparent 25%),\n      linear-gradient(-45deg, #666666 25%, transparent 25%),\n      linear-gradient(45deg, transparent 75%, #666666 75%),\n      linear-gradient(-45deg, transparent 75%, #666666 75%);\n      background-size: 20px 20px;\n      background-position:0 0, 0 10px, 10px -10px, -10px 0;\n\n      border-radius: $fallback--inputRadius;\n      border-radius: var(--inputRadius, $fallback--inputRadius);\n\n      .preview-block {\n        width: 33%;\n        height: 33%;\n        background-color: $fallback--bg;\n        background-color: var(--bg, $fallback--bg);\n        border-radius: $fallback--panelRadius;\n        border-radius: var(--panelRadius, $fallback--panelRadius);\n      }\n    }\n  }\n\n  .shadow-tweak {\n    flex: 1;\n    min-width: 280px;\n\n    .id-control {\n      align-items: stretch;\n\n      .shadow-switcher {\n        flex: 1;\n      }\n\n      .shadow-switcher, .btn {\n        min-width: 1px;\n        margin-right: 5px;\n      }\n\n      .btn {\n        padding: 0 .4em;\n        margin: 0 .1em;\n      }\n    }\n  }\n}\n</style>\n","import ColorInput from '../color_input/color_input.vue'\nimport OpacityInput from '../opacity_input/opacity_input.vue'\nimport Select from '../select/select.vue'\nimport { getCssShadow } from '../../services/style_setter/style_setter.js'\nimport { hex2rgb } from '../../services/color_convert/color_convert.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes,\n  faChevronDown,\n  faChevronUp,\n  faPlus\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faChevronDown,\n  faChevronUp,\n  faTimes,\n  faPlus\n)\n\nconst toModel = (object = {}) => ({\n  x: 0,\n  y: 0,\n  blur: 0,\n  spread: 0,\n  inset: false,\n  color: '#000000',\n  alpha: 1,\n  ...object\n})\n\nexport default {\n  // 'modelValue' and 'Fallback' can be undefined, but if they are\n  // initially vue won't detect it when they become something else\n  // therefore i'm using \"ready\" which should be passed as true when\n  // data becomes available\n  props: [\n    'modelValue', 'fallback', 'ready'\n  ],\n  emits: ['update:modelValue'],\n  data () {\n    return {\n      selectedId: 0,\n      // TODO there are some bugs regarding display of array (it's not getting updated when deleting for some reason)\n      cValue: (this.modelValue || this.fallback || []).map(toModel)\n    }\n  },\n  components: {\n    ColorInput,\n    OpacityInput,\n    Select\n  },\n  methods: {\n    add () {\n      this.cValue.push(toModel(this.selected))\n      this.selectedId = this.cValue.length - 1\n    },\n    del () {\n      this.cValue.splice(this.selectedId, 1)\n      this.selectedId = this.cValue.length === 0 ? undefined : Math.max(this.selectedId - 1, 0)\n    },\n    moveUp () {\n      const movable = this.cValue.splice(this.selectedId, 1)[0]\n      this.cValue.splice(this.selectedId - 1, 0, movable)\n      this.selectedId -= 1\n    },\n    moveDn () {\n      const movable = this.cValue.splice(this.selectedId, 1)[0]\n      this.cValue.splice(this.selectedId + 1, 0, movable)\n      this.selectedId += 1\n    }\n  },\n  beforeUpdate () {\n    this.cValue = this.modelValue || this.fallback\n  },\n  computed: {\n    anyShadows () {\n      return this.cValue.length > 0\n    },\n    anyShadowsFallback () {\n      return this.fallback.length > 0\n    },\n    selected () {\n      if (this.ready && this.anyShadows) {\n        return this.cValue[this.selectedId]\n      } else {\n        return toModel({})\n      }\n    },\n    currentFallback () {\n      if (this.ready && this.anyShadowsFallback) {\n        return this.fallback[this.selectedId]\n      } else {\n        return toModel({})\n      }\n    },\n    moveUpValid () {\n      return this.ready && this.selectedId > 0\n    },\n    moveDnValid () {\n      return this.ready && this.selectedId < this.cValue.length - 1\n    },\n    present () {\n      return this.ready &&\n        typeof this.cValue[this.selectedId] !== 'undefined' &&\n        !this.usingFallback\n    },\n    usingFallback () {\n      return typeof this.modelValue === 'undefined'\n    },\n    rgb () {\n      return hex2rgb(this.selected.color)\n    },\n    style () {\n      return this.ready ? {\n        boxShadow: getCssShadow(this.fallback)\n      } : {}\n    }\n  }\n}\n","import { render } from \"./shadow_control.vue?vue&type=template&id=02a2d813\"\nimport script from \"./shadow_control.js?vue&type=script&lang=js\"\nexport * from \"./shadow_control.js?vue&type=script&lang=js\"\n\nimport \"./shadow_control.vue?vue&type=style&index=0&id=02a2d813&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    class=\"font-control style-control\"\n    :class=\"{ custom: isCustom }\"\n  >\n    <label\n      :for=\"preset === 'custom' ? name : name + '-font-switcher'\"\n      class=\"label\"\n    >\n      {{ label }}\n    </label>\n    <input\n      v-if=\"typeof fallback !== 'undefined'\"\n      :id=\"name + '-o'\"\n      class=\"opt exlcude-disabled\"\n      type=\"checkbox\"\n      :checked=\"present\"\n      @change=\"$emit('update:modelValue', typeof modelValue === 'undefined' ? fallback : undefined)\"\n    >\n    <label\n      v-if=\"typeof fallback !== 'undefined'\"\n      class=\"opt-l\"\n      :for=\"name + '-o'\"\n    />\n    {{ ' ' }}\n    <Select\n      :id=\"name + '-font-switcher'\"\n      v-model=\"preset\"\n      :disabled=\"!present\"\n      class=\"font-switcher\"\n    >\n      <option\n        v-for=\"option in availableOptions\"\n        :key=\"option\"\n        :value=\"option\"\n      >\n        {{ option === 'custom' ? $t('settings.style.fonts.custom') : option }}\n      </option>\n    </Select>\n    <input\n      v-if=\"isCustom\"\n      :id=\"name\"\n      v-model=\"family\"\n      class=\"custom-font\"\n      type=\"text\"\n    >\n  </div>\n</template>\n\n<script src=\"./font_control.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n.font-control {\n  input.custom-font {\n    min-width: 10em;\n  }\n  &.custom {\n    /* TODO Should make proper joiners... */\n    .font-switcher {\n      border-top-right-radius: 0;\n      border-bottom-right-radius: 0;\n    }\n    .custom-font {\n      border-top-left-radius: 0;\n      border-bottom-left-radius: 0;\n    }\n  }\n}\n</style>\n","import { set } from 'lodash'\nimport Select from '../select/select.vue'\n\nexport default {\n  components: {\n    Select\n  },\n  props: [\n    'name', 'label', 'modelValue', 'fallback', 'options', 'no-inherit'\n  ],\n  emits: ['update:modelValue'],\n  data () {\n    return {\n      lValue: this.modelValue,\n      availableOptions: [\n        this.noInherit ? '' : 'inherit',\n        'custom',\n        ...(this.options || []),\n        'serif',\n        'monospace',\n        'sans-serif'\n      ].filter(_ => _)\n    }\n  },\n  beforeUpdate () {\n    this.lValue = this.modelValue\n  },\n  computed: {\n    present () {\n      return typeof this.lValue !== 'undefined'\n    },\n    dValue () {\n      return this.lValue || this.fallback || {}\n    },\n    family: {\n      get () {\n        return this.dValue.family\n      },\n      set (v) {\n        set(this.lValue, 'family', v)\n        this.$emit('update:modelValue', this.lValue)\n      }\n    },\n    isCustom () {\n      return this.preset === 'custom'\n    },\n    preset: {\n      get () {\n        if (this.family === 'serif' ||\n            this.family === 'sans-serif' ||\n            this.family === 'monospace' ||\n            this.family === 'inherit') {\n          return this.family\n        } else {\n          return 'custom'\n        }\n      },\n      set (v) {\n        this.family = v === 'custom' ? '' : v\n      }\n    }\n  }\n}\n","import { render } from \"./font_control.vue?vue&type=template&id=ceed00ba\"\nimport script from \"./font_control.js?vue&type=script&lang=js\"\nexport * from \"./font_control.js?vue&type=script&lang=js\"\n\nimport \"./font_control.vue?vue&type=style&index=0&id=ceed00ba&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <span\n    v-if=\"contrast\"\n    class=\"contrast-ratio\"\n  >\n    <span\n      :title=\"hint\"\n      class=\"rating\"\n    >\n      <span v-if=\"contrast.aaa\">\n        <FAIcon icon=\"thumbs-up\" />\n      </span>\n      <span v-if=\"!contrast.aaa && contrast.aa\">\n        <FAIcon icon=\"adjust\" />\n      </span>\n      <span v-if=\"!contrast.aaa && !contrast.aa\">\n        <FAIcon icon=\"exclamation-triangle\" />\n      </span>\n    </span>\n    <span\n      v-if=\"contrast && large\"\n      class=\"rating\"\n      :title=\"hint_18pt\"\n    >\n      <span v-if=\"contrast.laaa\">\n        <FAIcon icon=\"thumbs-up\" />\n      </span>\n      <span v-if=\"!contrast.laaa && contrast.laa\">\n        <FAIcon icon=\"adjust\" />\n      </span>\n      <span v-if=\"!contrast.laaa && !contrast.laa\">\n        <FAIcon icon=\"exclamation-triangle\" />\n      </span>\n    </span>\n  </span>\n</template>\n\n<script>\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faAdjust,\n  faExclamationTriangle,\n  faThumbsUp\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faAdjust,\n  faExclamationTriangle,\n  faThumbsUp\n)\n\nexport default {\n  props: {\n    large: {\n      required: false,\n      type: Boolean,\n      default: false\n    },\n    // TODO: Make theme switcher compute theme initially so that contrast\n    // component won't be called without contrast data\n    contrast: {\n      required: false,\n      type: Object,\n      default: () => ({})\n    }\n  },\n  computed: {\n    hint () {\n      const levelVal = this.contrast.aaa ? 'aaa' : (this.contrast.aa ? 'aa' : 'bad')\n      const level = this.$t(`settings.style.common.contrast.level.${levelVal}`)\n      const context = this.$t('settings.style.common.contrast.context.text')\n      const ratio = this.contrast.text\n      return this.$t('settings.style.common.contrast.hint', { level, context, ratio })\n    },\n    hint_18pt () {\n      const levelVal = this.contrast.laaa ? 'aaa' : (this.contrast.laa ? 'aa' : 'bad')\n      const level = this.$t(`settings.style.common.contrast.level.${levelVal}`)\n      const context = this.$t('settings.style.common.contrast.context.18pt')\n      const ratio = this.contrast.text\n      return this.$t('settings.style.common.contrast.hint', { level, context, ratio })\n    }\n  }\n}\n</script>\n\n<style lang=\"scss\">\n.contrast-ratio {\n  display: flex;\n  justify-content: flex-end;\n\n  margin-top: -4px;\n  margin-bottom: 5px;\n\n  .label {\n    margin-right: 1em;\n  }\n\n  .rating {\n    display: inline-block;\n    text-align: center;\n    margin-left: 0.5em;\n  }\n}\n</style>\n","import { render } from \"./contrast_ratio.vue?vue&type=template&id=6d90b7c4\"\nimport script from \"./contrast_ratio.vue?vue&type=script&lang=js\"\nexport * from \"./contrast_ratio.vue?vue&type=script&lang=js\"\n\nimport \"./contrast_ratio.vue?vue&type=style&index=0&id=6d90b7c4&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"preview-container\">\n    <div class=\"underlay underlay-preview\" />\n    <div class=\"panel dummy\">\n      <div class=\"panel-heading\">\n        <div class=\"title\">\n          {{ $t('settings.style.preview.header') }}\n          <span class=\"badge badge-notification\">\n            99\n          </span>\n        </div>\n        <span class=\"faint\">\n          {{ $t('settings.style.preview.header_faint') }}\n        </span>\n        <span class=\"alert error\">\n          {{ $t('settings.style.preview.error') }}\n        </span>\n        <button class=\"btn button-default\">\n          {{ $t('settings.style.preview.button') }}\n        </button>\n      </div>\n      <div class=\"panel-body theme-preview-content\">\n        <div class=\"post\">\n          <div class=\"avatar still-image\">\n            ( ͡° ͜ʖ ͡°)\n          </div>\n          <div class=\"content\">\n            <h4>\n              {{ $t('settings.style.preview.content') }}\n            </h4>\n\n            <i18n-t scope=\"global\" keypath=\"settings.style.preview.text\">\n              <code style=\"font-family: var(--postCodeFont)\">\n                {{ $t('settings.style.preview.mono') }}\n              </code>\n              <a style=\"color: var(--link)\">\n                {{ $t('settings.style.preview.link') }}\n              </a>\n            </i18n-t>\n\n            <div class=\"icons\">\n              <FAIcon\n                fixed-width\n                style=\"color: var(--cBlue)\"\n                class=\"fa-scale-110 fa-old-padding\"\n                icon=\"reply\"\n              />\n              <FAIcon\n                fixed-width\n                style=\"color: var(--cGreen)\"\n                class=\"fa-scale-110 fa-old-padding\"\n                icon=\"retweet\"\n              />\n              <FAIcon\n                fixed-width\n                style=\"color: var(--cOrange)\"\n                class=\"fa-scale-110 fa-old-padding\"\n                icon=\"star\"\n              />\n              <FAIcon\n                fixed-width\n                style=\"color: var(--cRed)\"\n                class=\"fa-scale-110 fa-old-padding\"\n                icon=\"times\"\n              />\n            </div>\n          </div>\n        </div>\n\n        <div class=\"after-post\">\n          <div class=\"avatar-alt\">\n            :^)\n          </div>\n          <div class=\"content\">\n            <i18n-t\n              keypath=\"settings.style.preview.fine_print\"\n              tag=\"span\"\n              class=\"faint\"\n              scope=\"global\"\n            >\n              <a style=\"color: var(--faintLink)\">\n                {{ $t('settings.style.preview.faint_link') }}\n              </a>\n            </i18n-t>\n          </div>\n        </div>\n        <div class=\"separator\" />\n\n        <span class=\"alert error\">\n          {{ $t('settings.style.preview.error') }}\n        </span>\n        <input\n          :value=\"$t('settings.style.preview.input')\"\n          type=\"text\"\n        >\n\n        <div class=\"actions\">\n          <span class=\"checkbox\">\n            <input\n              id=\"preview_checkbox\"\n              checked=\"very yes\"\n              type=\"checkbox\"\n            >\n            <label for=\"preview_checkbox\">{{ $t('settings.style.preview.checkbox') }}</label>\n          </span>\n          <button class=\"btn button-default\">\n            {{ $t('settings.style.preview.button') }}\n          </button>\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes,\n  faStar,\n  faRetweet,\n  faReply\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes,\n  faStar,\n  faRetweet,\n  faReply\n)\n\nexport default {}\n</script>\n\n<style lang=\"scss\">\n.preview-container {\n  position: relative;\n}\n.underlay-preview {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 10px;\n  right: 10px;\n}\n</style>\n","import { render } from \"./preview.vue?vue&type=template&id=1d72aedf\"\nimport script from \"./preview.vue?vue&type=script&lang=js\"\nexport * from \"./preview.vue?vue&type=script&lang=js\"\n\nimport \"./preview.vue?vue&type=style&index=0&id=1d72aedf&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import {\n  rgb2hex,\n  hex2rgb,\n  getContrastRatioLayers\n} from 'src/services/color_convert/color_convert.js'\nimport {\n  DEFAULT_SHADOWS,\n  generateColors,\n  generateShadows,\n  generateRadii,\n  generateFonts,\n  composePreset,\n  getThemes,\n  shadows2to3,\n  colors2to3\n} from 'src/services/style_setter/style_setter.js'\nimport {\n  newImporter,\n  newExporter\n} from 'src/services/export_import/export_import.js'\nimport {\n  SLOT_INHERITANCE\n} from 'src/services/theme_data/pleromafe.js'\nimport {\n  CURRENT_VERSION,\n  OPACITIES,\n  getLayers,\n  getOpacitySlot\n} from 'src/services/theme_data/theme_data.service.js'\nimport ColorInput from 'src/components/color_input/color_input.vue'\nimport RangeInput from 'src/components/range_input/range_input.vue'\nimport OpacityInput from 'src/components/opacity_input/opacity_input.vue'\nimport ShadowControl from 'src/components/shadow_control/shadow_control.vue'\nimport FontControl from 'src/components/font_control/font_control.vue'\nimport ContrastRatio from 'src/components/contrast_ratio/contrast_ratio.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\nimport Select from 'src/components/select/select.vue'\n\nimport Preview from './preview.vue'\n\n// List of color values used in v1\nconst v1OnlyNames = [\n  'bg',\n  'fg',\n  'text',\n  'link',\n  'cRed',\n  'cGreen',\n  'cBlue',\n  'cOrange'\n].map(_ => _ + 'ColorLocal')\n\nconst colorConvert = (color) => {\n  if (color.startsWith('--') || color === 'transparent') {\n    return color\n  } else {\n    return hex2rgb(color)\n  }\n}\n\nexport default {\n  data () {\n    return {\n      themeImporter: newImporter({\n        validator: this.importValidator,\n        onImport: this.onImport,\n        onImportFailure: this.onImportFailure\n      }),\n      themeExporter: newExporter({\n        filename: 'pleroma_theme',\n        getExportedObject: () => this.exportedTheme\n      }),\n      availableStyles: [],\n      selected: '',\n      selectedTheme: this.$store.getters.mergedConfig.theme,\n      themeWarning: undefined,\n      tempImportFile: undefined,\n      engineVersion: 0,\n\n      previewShadows: {},\n      previewColors: {},\n      previewRadii: {},\n      previewFonts: {},\n\n      shadowsInvalid: true,\n      colorsInvalid: true,\n      radiiInvalid: true,\n\n      keepColor: false,\n      keepShadows: false,\n      keepOpacity: false,\n      keepRoundness: false,\n      keepFonts: false,\n\n      ...Object.keys(SLOT_INHERITANCE)\n        .map(key => [key, ''])\n        .reduce((acc, [key, val]) => ({ ...acc, [ key + 'ColorLocal' ]: val }), {}),\n\n      ...Object.keys(OPACITIES)\n        .map(key => [key, ''])\n        .reduce((acc, [key, val]) => ({ ...acc, [ key + 'OpacityLocal' ]: val }), {}),\n\n      shadowSelected: undefined,\n      shadowsLocal: {},\n      fontsLocal: {},\n\n      btnRadiusLocal: '',\n      inputRadiusLocal: '',\n      checkboxRadiusLocal: '',\n      panelRadiusLocal: '',\n      avatarRadiusLocal: '',\n      avatarAltRadiusLocal: '',\n      attachmentRadiusLocal: '',\n      tooltipRadiusLocal: '',\n      chatMessageRadiusLocal: ''\n    }\n  },\n  created () {\n    const self = this\n\n    getThemes()\n      .then((promises) => {\n        return Promise.all(\n          Object.entries(promises)\n            .map(([k, v]) => v.then(res => [k, res]))\n        )\n      })\n      .then(themes => themes.reduce((acc, [k, v]) => {\n        if (v) {\n          return {\n            ...acc,\n            [k]: v\n          }\n        } else {\n          return acc\n        }\n      }, {}))\n      .then((themesComplete) => {\n        self.availableStyles = themesComplete\n      })\n  },\n  mounted () {\n    this.loadThemeFromLocalStorage()\n    if (typeof this.shadowSelected === 'undefined') {\n      this.shadowSelected = this.shadowsAvailable[0]\n    }\n  },\n  computed: {\n    themeWarningHelp () {\n      if (!this.themeWarning) return\n      const t = this.$t\n      const pre = 'settings.style.switcher.help.'\n      const {\n        origin,\n        themeEngineVersion,\n        type,\n        noActionsPossible\n      } = this.themeWarning\n      if (origin === 'file') {\n        // Loaded v2 theme from file\n        if (themeEngineVersion === 2 && type === 'wrong_version') {\n          return t(pre + 'v2_imported')\n        }\n        if (themeEngineVersion > CURRENT_VERSION) {\n          return t(pre + 'future_version_imported') + ' ' +\n            (\n              noActionsPossible\n                ? t(pre + 'snapshot_missing')\n                : t(pre + 'snapshot_present')\n            )\n        }\n        if (themeEngineVersion < CURRENT_VERSION) {\n          return t(pre + 'future_version_imported') + ' ' +\n            (\n              noActionsPossible\n                ? t(pre + 'snapshot_missing')\n                : t(pre + 'snapshot_present')\n            )\n        }\n      } else if (origin === 'localStorage') {\n        if (type === 'snapshot_source_mismatch') {\n          return t(pre + 'snapshot_source_mismatch')\n        }\n        // FE upgraded from v2\n        if (themeEngineVersion === 2) {\n          return t(pre + 'upgraded_from_v2')\n        }\n        // Admin downgraded FE\n        if (themeEngineVersion > CURRENT_VERSION) {\n          return t(pre + 'fe_downgraded') + ' ' +\n            (\n              noActionsPossible\n                ? t(pre + 'migration_snapshot_ok')\n                : t(pre + 'migration_snapshot_gone')\n            )\n        }\n        // Admin upgraded FE\n        if (themeEngineVersion < CURRENT_VERSION) {\n          return t(pre + 'fe_upgraded') + ' ' +\n            (\n              noActionsPossible\n                ? t(pre + 'migration_snapshot_ok')\n                : t(pre + 'migration_snapshot_gone')\n            )\n        }\n      }\n    },\n    selectedVersion () {\n      return Array.isArray(this.selectedTheme) ? 1 : 2\n    },\n    currentColors () {\n      return Object.keys(SLOT_INHERITANCE)\n        .map(key => [key, this[key + 'ColorLocal']])\n        .reduce((acc, [key, val]) => ({ ...acc, [ key ]: val }), {})\n    },\n    currentOpacity () {\n      return Object.keys(OPACITIES)\n        .map(key => [key, this[key + 'OpacityLocal']])\n        .reduce((acc, [key, val]) => ({ ...acc, [ key ]: val }), {})\n    },\n    currentRadii () {\n      return {\n        btn: this.btnRadiusLocal,\n        input: this.inputRadiusLocal,\n        checkbox: this.checkboxRadiusLocal,\n        panel: this.panelRadiusLocal,\n        avatar: this.avatarRadiusLocal,\n        avatarAlt: this.avatarAltRadiusLocal,\n        tooltip: this.tooltipRadiusLocal,\n        attachment: this.attachmentRadiusLocal,\n        chatMessage: this.chatMessageRadiusLocal\n      }\n    },\n    preview () {\n      return composePreset(this.previewColors, this.previewRadii, this.previewShadows, this.previewFonts)\n    },\n    previewTheme () {\n      if (!this.preview.theme.colors) return { colors: {}, opacity: {}, radii: {}, shadows: {}, fonts: {} }\n      return this.preview.theme\n    },\n    // This needs optimization maybe\n    previewContrast () {\n      try {\n        if (!this.previewTheme.colors.bg) return {}\n        const colors = this.previewTheme.colors\n        const opacity = this.previewTheme.opacity\n        if (!colors.bg) return {}\n        const hints = (ratio) => ({\n          text: ratio.toPrecision(3) + ':1',\n          // AA level, AAA level\n          aa: ratio >= 4.5,\n          aaa: ratio >= 7,\n          // same but for 18pt+ texts\n          laa: ratio >= 3,\n          laaa: ratio >= 4.5\n        })\n        const colorsConverted = Object.entries(colors).reduce((acc, [key, value]) => ({ ...acc, [key]: colorConvert(value) }), {})\n\n        const ratios = Object.entries(SLOT_INHERITANCE).reduce((acc, [key, value]) => {\n          const slotIsBaseText = key === 'text' || key === 'link'\n          const slotIsText = slotIsBaseText || (\n            typeof value === 'object' && value !== null && value.textColor\n          )\n          if (!slotIsText) return acc\n          const { layer, variant } = slotIsBaseText ? { layer: 'bg' } : value\n          const background = variant || layer\n          const opacitySlot = getOpacitySlot(background)\n          const textColors = [\n            key,\n            ...(background === 'bg' ? ['cRed', 'cGreen', 'cBlue', 'cOrange'] : [])\n          ]\n\n          const layers = getLayers(\n            layer,\n            variant || layer,\n            opacitySlot,\n            colorsConverted,\n            opacity\n          )\n\n          return {\n            ...acc,\n            ...textColors.reduce((acc, textColorKey) => {\n              const newKey = slotIsBaseText\n                ? 'bg' + textColorKey[0].toUpperCase() + textColorKey.slice(1)\n                : textColorKey\n              return {\n                ...acc,\n                [newKey]: getContrastRatioLayers(\n                  colorsConverted[textColorKey],\n                  layers,\n                  colorsConverted[textColorKey]\n                )\n              }\n            }, {})\n          }\n        }, {})\n\n        return Object.entries(ratios).reduce((acc, [k, v]) => { acc[k] = hints(v); return acc }, {})\n      } catch (e) {\n        console.warn('Failure computing contrasts', e)\n      }\n    },\n    previewRules () {\n      if (!this.preview.rules) return ''\n      return [\n        ...Object.values(this.preview.rules),\n        'color: var(--text)',\n        'font-family: var(--interfaceFont, sans-serif)'\n      ].join(';')\n    },\n    shadowsAvailable () {\n      return Object.keys(DEFAULT_SHADOWS).sort()\n    },\n    currentShadowOverriden: {\n      get () {\n        return !!this.currentShadow\n      },\n      set (val) {\n        if (val) {\n          this.shadowsLocal[this.shadowSelected] = this.currentShadowFallback.map(_ => Object.assign({}, _))\n        } else {\n          delete this.shadowsLocal[this.shadowSelected]\n        }\n      }\n    },\n    currentShadowFallback () {\n      return (this.previewTheme.shadows || {})[this.shadowSelected]\n    },\n    currentShadow: {\n      get () {\n        return this.shadowsLocal[this.shadowSelected]\n      },\n      set (v) {\n        this.shadowsLocal[this.shadowSelected] = v\n      }\n    },\n    themeValid () {\n      return !this.shadowsInvalid && !this.colorsInvalid && !this.radiiInvalid\n    },\n    exportedTheme () {\n      const saveEverything = (\n        !this.keepFonts &&\n        !this.keepShadows &&\n        !this.keepOpacity &&\n        !this.keepRoundness &&\n        !this.keepColor\n      )\n\n      const source = {\n        themeEngineVersion: CURRENT_VERSION\n      }\n\n      if (this.keepFonts || saveEverything) {\n        source.fonts = this.fontsLocal\n      }\n      if (this.keepShadows || saveEverything) {\n        source.shadows = this.shadowsLocal\n      }\n      if (this.keepOpacity || saveEverything) {\n        source.opacity = this.currentOpacity\n      }\n      if (this.keepColor || saveEverything) {\n        source.colors = this.currentColors\n      }\n      if (this.keepRoundness || saveEverything) {\n        source.radii = this.currentRadii\n      }\n\n      const theme = {\n        themeEngineVersion: CURRENT_VERSION,\n        ...this.previewTheme\n      }\n\n      return {\n        // To separate from other random JSON files and possible future source formats\n        _pleroma_theme_version: 2, theme, source\n      }\n    },\n    isActive () {\n      const tabSwitcher = this.$parent\n      return tabSwitcher ? tabSwitcher.isActive('theme') : false\n    }\n  },\n  components: {\n    ColorInput,\n    OpacityInput,\n    RangeInput,\n    ContrastRatio,\n    ShadowControl,\n    FontControl,\n    TabSwitcher,\n    Preview,\n    Checkbox,\n    Select\n  },\n  methods: {\n    loadTheme (\n      {\n        theme,\n        source,\n        _pleroma_theme_version: fileVersion\n      },\n      origin,\n      forceUseSource = false\n    ) {\n      this.dismissWarning()\n      if (!source && !theme) {\n        throw new Error('Can\\'t load theme: empty')\n      }\n      const version = (origin === 'localStorage' && !theme.colors)\n        ? 'l1'\n        : fileVersion\n      const snapshotEngineVersion = (theme || {}).themeEngineVersion\n      const themeEngineVersion = (source || {}).themeEngineVersion || 2\n      const versionsMatch = themeEngineVersion === CURRENT_VERSION\n      const sourceSnapshotMismatch = (\n        theme !== undefined &&\n          source !== undefined &&\n          themeEngineVersion !== snapshotEngineVersion\n      )\n      // Force loading of source if user requested it or if snapshot\n      // is unavailable\n      const forcedSourceLoad = (source && forceUseSource) || !theme\n      if (!(versionsMatch && !sourceSnapshotMismatch) &&\n          !forcedSourceLoad &&\n          version !== 'l1' &&\n          origin !== 'defaults'\n      ) {\n        if (sourceSnapshotMismatch && origin === 'localStorage') {\n          this.themeWarning = {\n            origin,\n            themeEngineVersion,\n            type: 'snapshot_source_mismatch'\n          }\n        } else if (!theme) {\n          this.themeWarning = {\n            origin,\n            noActionsPossible: true,\n            themeEngineVersion,\n            type: 'no_snapshot_old_version'\n          }\n        } else if (!versionsMatch) {\n          this.themeWarning = {\n            origin,\n            noActionsPossible: !source,\n            themeEngineVersion,\n            type: 'wrong_version'\n          }\n        }\n      }\n      this.normalizeLocalState(theme, version, source, forcedSourceLoad)\n    },\n    forceLoadLocalStorage () {\n      this.loadThemeFromLocalStorage(true)\n    },\n    dismissWarning () {\n      this.themeWarning = undefined\n      this.tempImportFile = undefined\n    },\n    forceLoad () {\n      const { origin } = this.themeWarning\n      switch (origin) {\n        case 'localStorage':\n          this.loadThemeFromLocalStorage(true)\n          break\n        case 'file':\n          this.onImport(this.tempImportFile, true)\n          break\n      }\n      this.dismissWarning()\n    },\n    forceSnapshot () {\n      const { origin } = this.themeWarning\n      switch (origin) {\n        case 'localStorage':\n          this.loadThemeFromLocalStorage(false, true)\n          break\n        case 'file':\n          console.error('Forcing snapshot from file is not supported yet')\n          break\n      }\n      this.dismissWarning()\n    },\n    loadThemeFromLocalStorage (confirmLoadSource = false, forceSnapshot = false) {\n      const {\n        customTheme: theme,\n        customThemeSource: source\n      } = this.$store.getters.mergedConfig\n      if (!theme && !source) {\n        // Anon user or never touched themes\n        this.loadTheme(\n          this.$store.state.instance.themeData,\n          'defaults',\n          confirmLoadSource\n        )\n      } else {\n        this.loadTheme(\n          {\n            theme,\n            source: forceSnapshot ? theme : source\n          },\n          'localStorage',\n          confirmLoadSource\n        )\n      }\n    },\n    setCustomTheme () {\n      this.$store.dispatch('setOption', {\n        name: 'customTheme',\n        value: {\n          themeEngineVersion: CURRENT_VERSION,\n          ...this.previewTheme\n        }\n      })\n      this.$store.dispatch('setOption', {\n        name: 'customThemeSource',\n        value: {\n          themeEngineVersion: CURRENT_VERSION,\n          shadows: this.shadowsLocal,\n          fonts: this.fontsLocal,\n          opacity: this.currentOpacity,\n          colors: this.currentColors,\n          radii: this.currentRadii\n        }\n      })\n    },\n    updatePreviewColorsAndShadows () {\n      this.previewColors = generateColors({\n        opacity: this.currentOpacity,\n        colors: this.currentColors\n      })\n      this.previewShadows = generateShadows(\n        { shadows: this.shadowsLocal, opacity: this.previewTheme.opacity, themeEngineVersion: this.engineVersion },\n        this.previewColors.theme.colors,\n        this.previewColors.mod\n      )\n    },\n    importTheme () { this.themeImporter.importData() },\n    exportTheme () { this.themeExporter.exportData() },\n    onImport (parsed, forceSource = false) {\n      this.tempImportFile = parsed\n      this.loadTheme(parsed, 'file', forceSource)\n    },\n    onImportFailure (result) {\n      this.$store.dispatch('pushGlobalNotice', { messageKey: 'settings.invalid_theme_imported', level: 'error' })\n    },\n    importValidator (parsed) {\n      const version = parsed._pleroma_theme_version\n      return version >= 1 || version <= 2\n    },\n    clearAll () {\n      this.loadThemeFromLocalStorage()\n    },\n\n    // Clears all the extra stuff when loading V1 theme\n    clearV1 () {\n      Object.keys(this.$data)\n        .filter(_ => _.endsWith('ColorLocal') || _.endsWith('OpacityLocal'))\n        .filter(_ => !v1OnlyNames.includes(_))\n        .forEach(key => {\n          this.$data[key] = undefined\n        })\n    },\n\n    clearRoundness () {\n      Object.keys(this.$data)\n        .filter(_ => _.endsWith('RadiusLocal'))\n        .forEach(key => {\n          this.$data[key] = undefined\n        })\n    },\n\n    clearOpacity () {\n      Object.keys(this.$data)\n        .filter(_ => _.endsWith('OpacityLocal'))\n        .forEach(key => {\n          this.$data[key] = undefined\n        })\n    },\n\n    clearShadows () {\n      this.shadowsLocal = {}\n    },\n\n    clearFonts () {\n      this.fontsLocal = {}\n    },\n\n    /**\n     * This applies stored theme data onto form. Supports three versions of data:\n     * v3 (version >= 3) - newest version of themes which supports snapshots for better compatiblity\n     * v2 (version = 2) - newer version of themes.\n     * v1 (version = 1) - older version of themes (import from file)\n     * v1l (version = l1) - older version of theme (load from local storage)\n     * v1 and v1l differ because of way themes were stored/exported.\n     * @param {Object} theme - theme data (snapshot)\n     * @param {Number} version - version of data. 0 means try to guess based on data. \"l1\" means v1, locastorage type\n     * @param {Object} source - theme source - this will be used if compatible\n     * @param {Boolean} source - by default source won't be used if version doesn't match since it might render differently\n     *                           this allows importing source anyway\n     */\n    normalizeLocalState (theme, version = 0, source, forceSource = false) {\n      let input\n      if (typeof source !== 'undefined') {\n        if (forceSource || source.themeEngineVersion === CURRENT_VERSION) {\n          input = source\n          version = source.themeEngineVersion\n        } else {\n          input = theme\n        }\n      } else {\n        input = theme\n      }\n\n      const radii = input.radii || input\n      const opacity = input.opacity\n      const shadows = input.shadows || {}\n      const fonts = input.fonts || {}\n      const colors = !input.themeEngineVersion\n        ? colors2to3(input.colors || input)\n        : input.colors || input\n\n      if (version === 0) {\n        if (input.version) version = input.version\n        // Old v1 naming: fg is text, btn is foreground\n        if (typeof colors.text === 'undefined' && typeof colors.fg !== 'undefined') {\n          version = 1\n        }\n        // New v2 naming: text is text, fg is foreground\n        if (typeof colors.text !== 'undefined' && typeof colors.fg !== 'undefined') {\n          version = 2\n        }\n      }\n\n      this.engineVersion = version\n\n      // Stuff that differs between V1 and V2\n      if (version === 1) {\n        this.fgColorLocal = rgb2hex(colors.btn)\n        this.textColorLocal = rgb2hex(colors.fg)\n      }\n\n      if (!this.keepColor) {\n        this.clearV1()\n        const keys = new Set(version !== 1 ? Object.keys(SLOT_INHERITANCE) : [])\n        if (version === 1 || version === 'l1') {\n          keys\n            .add('bg')\n            .add('link')\n            .add('cRed')\n            .add('cBlue')\n            .add('cGreen')\n            .add('cOrange')\n        }\n\n        keys.forEach(key => {\n          const color = colors[key]\n          const hex = rgb2hex(colors[key])\n          this[key + 'ColorLocal'] = hex === '#aN' ? color : hex\n        })\n      }\n\n      if (opacity && !this.keepOpacity) {\n        this.clearOpacity()\n        Object.entries(opacity).forEach(([k, v]) => {\n          if (typeof v === 'undefined' || v === null || Number.isNaN(v)) return\n          this[k + 'OpacityLocal'] = v\n        })\n      }\n\n      if (!this.keepRoundness) {\n        this.clearRoundness()\n        Object.entries(radii).forEach(([k, v]) => {\n          // 'Radius' is kept mostly for v1->v2 localstorage transition\n          const key = k.endsWith('Radius') ? k.split('Radius')[0] : k\n          this[key + 'RadiusLocal'] = v\n        })\n      }\n\n      if (!this.keepShadows) {\n        this.clearShadows()\n        if (version === 2) {\n          this.shadowsLocal = shadows2to3(shadows, this.previewTheme.opacity)\n        } else {\n          this.shadowsLocal = shadows\n        }\n        this.shadowSelected = this.shadowsAvailable[0]\n      }\n\n      if (!this.keepFonts) {\n        this.clearFonts()\n        this.fontsLocal = fonts\n      }\n    }\n  },\n  watch: {\n    currentRadii () {\n      try {\n        this.previewRadii = generateRadii({ radii: this.currentRadii })\n        this.radiiInvalid = false\n      } catch (e) {\n        this.radiiInvalid = true\n        console.warn(e)\n      }\n    },\n    shadowsLocal: {\n      handler () {\n        if (Object.getOwnPropertyNames(this.previewColors).length === 1) return\n        try {\n          this.updatePreviewColorsAndShadows()\n          this.shadowsInvalid = false\n        } catch (e) {\n          this.shadowsInvalid = true\n          console.warn(e)\n        }\n      },\n      deep: true\n    },\n    fontsLocal: {\n      handler () {\n        try {\n          this.previewFonts = generateFonts({ fonts: this.fontsLocal })\n          this.fontsInvalid = false\n        } catch (e) {\n          this.fontsInvalid = true\n          console.warn(e)\n        }\n      },\n      deep: true\n    },\n    currentColors () {\n      try {\n        this.updatePreviewColorsAndShadows()\n        this.colorsInvalid = false\n        this.shadowsInvalid = false\n      } catch (e) {\n        this.colorsInvalid = true\n        this.shadowsInvalid = true\n        console.warn(e)\n      }\n    },\n    currentOpacity () {\n      try {\n        this.updatePreviewColorsAndShadows()\n      } catch (e) {\n        console.warn(e)\n      }\n    },\n    selected () {\n      this.selectedTheme = Object.entries(this.availableStyles).find(([k, s]) => {\n        if (Array.isArray(s)) {\n          console.log(s[0] === this.selected, this.selected)\n          return s[0] === this.selected\n        } else {\n          return s.name === this.selected\n        }\n      })[1]\n    },\n    selectedTheme () {\n      this.dismissWarning()\n      if (this.selectedVersion === 1) {\n        if (!this.keepRoundness) {\n          this.clearRoundness()\n        }\n\n        if (!this.keepShadows) {\n          this.clearShadows()\n        }\n\n        if (!this.keepOpacity) {\n          this.clearOpacity()\n        }\n\n        if (!this.keepColor) {\n          this.clearV1()\n\n          this.bgColorLocal = this.selectedTheme[1]\n          this.fgColorLocal = this.selectedTheme[2]\n          this.textColorLocal = this.selectedTheme[3]\n          this.linkColorLocal = this.selectedTheme[4]\n          this.cRedColorLocal = this.selectedTheme[5]\n          this.cGreenColorLocal = this.selectedTheme[6]\n          this.cBlueColorLocal = this.selectedTheme[7]\n          this.cOrangeColorLocal = this.selectedTheme[8]\n        }\n      } else if (this.selectedVersion >= 2) {\n        this.normalizeLocalState(this.selectedTheme.theme, 2, this.selectedTheme.source)\n      }\n    }\n  }\n}\n","import { render } from \"./theme_tab.vue?vue&type=template&id=1128449a\"\nimport script from \"./theme_tab.js?vue&type=script&lang=js\"\nexport * from \"./theme_tab.js?vue&type=script&lang=js\"\n\nimport \"./theme_tab.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\n\nimport DataImportExportTab from './tabs/data_import_export_tab.vue'\nimport MutesAndBlocksTab from './tabs/mutes_and_blocks_tab.vue'\nimport NotificationsTab from './tabs/notifications_tab.vue'\nimport FilteringTab from './tabs/filtering_tab.vue'\nimport SecurityTab from './tabs/security_tab/security_tab.vue'\nimport ProfileTab from './tabs/profile_tab.vue'\nimport GeneralTab from './tabs/general_tab.vue'\nimport VersionTab from './tabs/version_tab.vue'\nimport ThemeTab from './tabs/theme_tab/theme_tab.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faWrench,\n  faUser,\n  faFilter,\n  faPaintBrush,\n  faBell,\n  faDownload,\n  faEyeSlash,\n  faInfo\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faWrench,\n  faUser,\n  faFilter,\n  faPaintBrush,\n  faBell,\n  faDownload,\n  faEyeSlash,\n  faInfo\n)\n\nconst SettingsModalContent = {\n  components: {\n    TabSwitcher,\n\n    DataImportExportTab,\n    MutesAndBlocksTab,\n    NotificationsTab,\n    FilteringTab,\n    SecurityTab,\n    ProfileTab,\n    GeneralTab,\n    VersionTab,\n    ThemeTab\n  },\n  computed: {\n    isLoggedIn () {\n      return !!this.$store.state.users.currentUser\n    },\n    open () {\n      return this.$store.state.interface.settingsModalState !== 'hidden'\n    },\n    bodyLock () {\n      return this.$store.state.interface.settingsModalState === 'visible'\n    }\n  },\n  methods: {\n    onOpen () {\n      const targetTab = this.$store.state.interface.settingsModalTargetTab\n      // We're being told to open in specific tab\n      if (targetTab) {\n        const tabIndex = this.$refs.tabSwitcher.$slots.default().findIndex(elm => {\n          return elm.props && elm.props['data-tab-name'] === targetTab\n        })\n        if (tabIndex >= 0) {\n          this.$refs.tabSwitcher.setTab(tabIndex)\n        }\n      }\n      // Clear the state of target tab, so that next time settings is opened\n      // it doesn't force it.\n      this.$store.dispatch('clearSettingsModalTargetTab')\n    }\n  },\n  mounted () {\n    this.onOpen()\n  },\n  watch: {\n    open: function (value) {\n      if (value) this.onOpen()\n    }\n  }\n}\n\nexport default SettingsModalContent\n","import { render } from \"./settings_modal_content.vue?vue&type=template&id=6191ca84\"\nimport script from \"./settings_modal_content.js?vue&type=script&lang=js\"\nexport * from \"./settings_modal_content.js?vue&type=script&lang=js\"\n\nimport \"./settings_modal_content.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <tab-switcher\n    ref=\"tabSwitcher\"\n    class=\"settings_tab-switcher\"\n    :side-tab-bar=\"true\"\n    :scrollable-tabs=\"true\"\n    :body-scroll-lock=\"bodyLock\"\n  >\n    <div\n      :label=\"$t('settings.general')\"\n      icon=\"wrench\"\n      data-tab-name=\"general\"\n    >\n      <GeneralTab />\n    </div>\n    <div\n      v-if=\"isLoggedIn\"\n      :label=\"$t('settings.profile_tab')\"\n      icon=\"user\"\n      data-tab-name=\"profile\"\n    >\n      <ProfileTab />\n    </div>\n    <div\n      v-if=\"isLoggedIn\"\n      :label=\"$t('settings.security_tab')\"\n      icon=\"lock\"\n      data-tab-name=\"security\"\n    >\n      <SecurityTab />\n    </div>\n    <div\n      :label=\"$t('settings.filtering')\"\n      icon=\"filter\"\n      data-tab-name=\"filtering\"\n    >\n      <FilteringTab />\n    </div>\n    <div\n      :label=\"$t('settings.theme')\"\n      icon=\"paint-brush\"\n      data-tab-name=\"theme\"\n    >\n      <ThemeTab />\n    </div>\n    <div\n      v-if=\"isLoggedIn\"\n      :label=\"$t('settings.notifications')\"\n      icon=\"bell\"\n      data-tab-name=\"notifications\"\n    >\n      <NotificationsTab />\n    </div>\n    <div\n      v-if=\"isLoggedIn\"\n      :label=\"$t('settings.data_import_export_tab')\"\n      icon=\"download\"\n      data-tab-name=\"dataImportExport\"\n    >\n      <DataImportExportTab />\n    </div>\n    <div\n      v-if=\"isLoggedIn\"\n      :label=\"$t('settings.mutes_and_blocks')\"\n      :fullHeight=\"true\"\n      icon=\"eye-slash\"\n      data-tab-name=\"mutesAndBlocks\"\n    >\n      <MutesAndBlocksTab />\n    </div>\n    <div\n      :label=\"$t('settings.version.title')\"\n      icon=\"info\"\n      data-tab-name=\"version\"\n    >\n      <VersionTab />\n    </div>\n  </tab-switcher>\n</template>\n\n<script src=\"./settings_modal_content.js\"></script>\n\n<style src=\"./settings_modal_content.scss\" lang=\"scss\"></style>\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///./src/components/importer/importer.vue?d395","webpack:///./src/components/exporter/exporter.vue?537f","webpack:///./src/components/autosuggest/autosuggest.vue?8acb","webpack:///./src/components/block_card/block_card.vue?a8c3","webpack:///./src/components/mute_card/mute_card.vue?336c","webpack:///./src/components/domain_mute_card/domain_mute_card.vue?e2f9","webpack:///./src/components/selectable_list/selectable_list.vue?793a","webpack:///./src/components/settings_modal/tabs/mutes_and_blocks_tab.scss?8059","webpack:///./src/components/settings_modal/helpers/modified_indicator.vue?669b","webpack:///./src/components/settings_modal/helpers/server_side_indicator.vue?f8f8","webpack:///./src/components/settings_modal/helpers/choice_setting.vue?2690","webpack:///./src/components/settings_modal/tabs/security_tab/mfa_backup_codes.vue?e13c","webpack:///./src/components/settings_modal/tabs/security_tab/mfa.vue?6215","webpack:///./src/components/image_cropper/image_cropper.vue?75b0","webpack:///./src/components/settings_modal/tabs/profile_tab.scss?3d82","webpack:///./src/components/color_input/color_input.scss?2d00","webpack:///./src/components/color_input/color_input.vue?c3ff","webpack:///./src/components/shadow_control/shadow_control.vue?4f4d","webpack:///./src/components/font_control/font_control.vue?a4dd","webpack:///./src/components/contrast_ratio/contrast_ratio.vue?232d","webpack:///./src/components/settings_modal/tabs/theme_tab/preview.vue?5bb1","webpack:///./src/components/settings_modal/tabs/theme_tab/theme_tab.scss?36c1","webpack:///./src/components/settings_modal/settings_modal_content.scss?5d58","webpack:///./src/components/settings_modal/tabs/data_import_export_tab.vue","webpack:///./src/components/importer/importer.vue","webpack:///./src/components/importer/importer.js","webpack:///./src/components/importer/importer.vue?12a4","webpack:///./src/components/exporter/exporter.vue","webpack:///./src/components/exporter/exporter.js","webpack:///./src/components/exporter/exporter.vue?bc56","webpack:///./src/components/settings_modal/tabs/data_import_export_tab.js","webpack:///./src/components/settings_modal/tabs/data_import_export_tab.vue?1279","webpack:///./src/components/settings_modal/tabs/mutes_and_blocks_tab.vue","webpack:///./src/components/autosuggest/autosuggest.vue","webpack:///./src/components/autosuggest/autosuggest.js","webpack:///./src/components/autosuggest/autosuggest.vue?c3ac","webpack:///./src/components/block_card/block_card.vue","webpack:///./src/components/block_card/block_card.js","webpack:///./src/components/block_card/block_card.vue?2c3e","webpack:///./src/components/mute_card/mute_card.vue","webpack:///./src/components/mute_card/mute_card.js","webpack:///./src/components/mute_card/mute_card.vue?640c","webpack:///./src/components/domain_mute_card/domain_mute_card.vue","webpack:///./src/components/domain_mute_card/domain_mute_card.js","webpack:///./src/components/domain_mute_card/domain_mute_card.vue?4954","webpack:///./src/components/selectable_list/selectable_list.vue","webpack:///./src/components/selectable_list/selectable_list.js","webpack:///./src/components/selectable_list/selectable_list.vue?e339","webpack:///./src/hocs/with_subscription/with_subscription.jsx","webpack:///./src/components/settings_modal/tabs/mutes_and_blocks_tab.js","webpack:///./src/components/settings_modal/tabs/mutes_and_blocks_tab.vue?0036","webpack:///./src/components/settings_modal/tabs/notifications_tab.vue","webpack:///./src/components/settings_modal/helpers/boolean_setting.vue","webpack:///./src/components/settings_modal/helpers/modified_indicator.vue","webpack:///./src/components/settings_modal/helpers/modified_indicator.vue?185b","webpack:///./src/components/settings_modal/helpers/server_side_indicator.vue","webpack:///./src/components/settings_modal/helpers/server_side_indicator.vue?5efa","webpack:///./src/components/settings_modal/helpers/boolean_setting.js","webpack:///./src/components/settings_modal/helpers/boolean_setting.vue?de4a","webpack:///./src/components/settings_modal/helpers/shared_computed_object.js","webpack:///./src/components/settings_modal/tabs/notifications_tab.js","webpack:///./src/components/settings_modal/tabs/notifications_tab.vue?656b","webpack:///./src/components/settings_modal/tabs/filtering_tab.vue","webpack:///./src/components/settings_modal/helpers/choice_setting.vue","webpack:///./src/components/settings_modal/helpers/choice_setting.js","webpack:///./src/components/settings_modal/helpers/choice_setting.vue?4d79","webpack:///./src/components/settings_modal/helpers/integer_setting.vue","webpack:///./src/components/settings_modal/helpers/integer_setting.js","webpack:///./src/components/settings_modal/helpers/integer_setting.vue?11fa","webpack:///./src/components/settings_modal/tabs/filtering_tab.js","webpack:///./src/components/settings_modal/tabs/filtering_tab.vue?75c6","webpack:///./src/components/settings_modal/tabs/security_tab/security_tab.vue","webpack:///./src/components/settings_modal/tabs/security_tab/mfa.vue","webpack:///./src/components/settings_modal/tabs/security_tab/mfa_backup_codes.vue","webpack:///./src/components/settings_modal/tabs/security_tab/mfa_backup_codes.js","webpack:///./src/components/settings_modal/tabs/security_tab/mfa_backup_codes.vue?02be","webpack:///./src/components/settings_modal/tabs/security_tab/mfa_totp.vue","webpack:///./src/components/settings_modal/tabs/security_tab/confirm.js","webpack:///./src/components/settings_modal/tabs/security_tab/confirm.vue?7300","webpack:///./src/components/settings_modal/tabs/security_tab/confirm.vue","webpack:///./src/components/settings_modal/tabs/security_tab/mfa_totp.js","webpack:///./src/components/settings_modal/tabs/security_tab/mfa.js","webpack:///./src/components/settings_modal/tabs/security_tab/mfa_totp.vue?3e9f","webpack:///./src/components/settings_modal/tabs/security_tab/mfa.vue?4581","webpack:///./src/components/settings_modal/tabs/security_tab/security_tab.js","webpack:///./src/components/settings_modal/tabs/security_tab/security_tab.vue?f4d0","webpack:///./src/components/settings_modal/tabs/profile_tab.vue","webpack:///./src/components/image_cropper/image_cropper.vue","webpack:///./src/components/image_cropper/image_cropper.js","webpack:///./src/components/image_cropper/image_cropper.vue?aa5f","webpack:///./src/components/settings_modal/tabs/profile_tab.js","webpack:///./src/components/settings_modal/tabs/profile_tab.vue?650d","webpack:///./src/components/settings_modal/tabs/general_tab.vue","webpack:///./src/components/settings_modal/tabs/general_tab.js","webpack:///./src/components/settings_modal/tabs/general_tab.vue?5ffb","webpack:///./src/components/settings_modal/tabs/version_tab.vue","webpack:///./src/services/version/version.service.js","webpack:///./src/components/settings_modal/tabs/version_tab.js","webpack:///./src/components/settings_modal/tabs/version_tab.vue?2afb","webpack:///./src/components/settings_modal/tabs/theme_tab/theme_tab.vue","webpack:///./src/components/color_input/color_input.vue","webpack:///./src/components/color_input/color_input.vue?602f","webpack:///./src/components/range_input/range_input.vue","webpack:///./src/components/range_input/range_input.vue?4741","webpack:///./src/components/opacity_input/opacity_input.vue","webpack:///./src/components/opacity_input/opacity_input.vue?db4a","webpack:///./src/components/shadow_control/shadow_control.vue","webpack:///./src/components/shadow_control/shadow_control.js","webpack:///./src/components/shadow_control/shadow_control.vue?74ae","webpack:///./src/components/font_control/font_control.vue","webpack:///./src/components/font_control/font_control.js","webpack:///./src/components/font_control/font_control.vue?6c0b","webpack:///./src/components/contrast_ratio/contrast_ratio.vue","webpack:///./src/components/contrast_ratio/contrast_ratio.vue?a879","webpack:///./src/components/settings_modal/tabs/theme_tab/preview.vue","webpack:///./src/components/settings_modal/tabs/theme_tab/preview.vue?166c","webpack:///./src/components/settings_modal/tabs/theme_tab/theme_tab.js","webpack:///./src/components/settings_modal/tabs/theme_tab/theme_tab.vue?0d26","webpack:///./src/components/settings_modal/settings_modal_content.js","webpack:///./src/components/settings_modal/settings_modal_content.vue?5ef5","webpack:///./src/components/settings_modal/settings_modal_content.vue"],"names":["class","library","add","faCircleNotch","faTimes","Importer","props","submitHandler","type","Function","required","submitButtonLabel","String","successMessage","errorMessage","data","file","error","success","submitting","methods","change","this","$refs","input","files","submit","dismiss","then","ref","spin","icon","$t","Exporter","getContent","filename","default","exportButtonLabel","processingMessage","processing","process","content","fileToDownload","document","createElement","setAttribute","encodeURIComponent","style","display","body","appendChild","click","removeChild","setTimeout","size","DataImportExportTab","activeTab","newDomainToMute","created","$store","dispatch","components","Checkbox","computed","mapState","backendInteractor","state","api","user","users","currentUser","getFollowsContent","exportFriends","id","generateExportableUsersContent","getBlocksContent","fetchBlocks","getMutesContent","fetchMutes","importFollows","status","Error","importBlocks","importMutes","map","is_local","screen_name","location","hostname","join","label","submit-handler","success-message","error-message","get-content","export-button-label","query","filter","placeholder","term","timeout","results","resultsVisible","filtered","watch","val","fetchResults","clearTimeout","onInputClick","onClickOutside","length","item","BlockCard","progress","getters","findUser","userId","relationship","blocked","blocking","BasicUserCard","unblockUser","blockUser","disabled","MuteCard","muted","muting","unmuteUser","muteUser","DomainMuteCard","ProgressButton","domainMutes","includes","domain","unmuteDomain","muteDomain","SelectableList","List","items","Array","getKey","selected","allKeys","filteredSelected","key","indexOf","allSelected","noneSelected","someSelected","isSelected","toggle","checked","push","splice","toggleAll","value","slice","model-value","indeterminate","get-key","empty","withSubscription","fetch","select","childPropName","additionalPropNames","WrappedComponent","Object","keys","getComponentProps","v","concat","loading","fetchedData","$props","refresh","isEmpty","fetchData","render","children","$slots","BlockList","get","MuteList","DomainMuteList","MutesAndBlocks","TabSwitcher","Autosuggest","knownDomains","instance","activateTab","tabName","filterUnblockedUsers","userIds","reject","filterUnMutedUsers","queryUserIds","blockUsers","ids","unblockUsers","muteUsers","unmuteUsers","filterUnMutedDomains","urls","url","queryKnownDomains","Promise","resolve","toLowerCase","unmuteDomains","domains","scrollable-tabs","user-id","row","i","header","faWrench","Popover","trigger","aria-label","faServer","ModifiedIndicator","ServerSideIndicator","pathDefault","path","split","firstSegment","rest","$parent","undefined","defaultState","isServerSide","startsWith","isChanged","matchesExpertLevel","expert","expertLevel","update","e","changed","server-side","SharedComputedObject","configDefaultState","defaultConfig","reduce","acc","mergedConfig","set","name","serverSideConfigDefaultState","serverSideConfig","useStreamingApi","console","NotificationsTab","notificationSettings","notification_settings","BooleanSetting","updateNotificationSettings","settings","Select","options","option","Boolean","min","Number","parseInt","target","for","step","FilteringTab","muteWordsStringLocal","muteWords","replyVisibilityOptions","mode","ChoiceSetting","IntegerSetting","muteWordsString","word","notificationVisibility","handler","deep","replyVisibility","streaming","hideFilteredStatuses","backupCodes","inProgress","codes","ready","displayTitle","code","Confirm","confirm","$emit","cancel","currentPassword","deactivate","isActivated","totp","doActivate","cancelDeactivate","doDeactivate","confirmDeactivate","mfaDisableOTP","password","res","Mfa","available","enabled","setupState","setupOTPState","getNewCodes","otpSettings","provisioning_uri","otpConfirmToken","readyInit","RecoveryCodes","VueQrcode","canSetupOTP","setupInProgress","backupCodesPrepared","setupOTPInProgress","completedOTP","prepareOTP","confirmOTP","confirmNewBackupCodes","activateOTP","fetchBackupCodes","generateMfaBackupCodes","getBackupCodes","confirmBackupCodes","cancelBackupCodes","setupOTP","mfaSetupOTP","doConfirmOTP","mfaConfirmOTP","token","completeSetup","fetchSettings","cancelSetup","settingsMFA","result","mounted","backup-codes","width","SecurityTab","newEmail","changeEmailError","changeEmailPassword","changedEmail","deletingAccount","deleteAccountConfirmPasswordInput","deleteAccountError","changePasswordInputs","changedPassword","changePasswordError","pleromaBackend","oauthTokens","tokens","oauthToken","appName","app_name","validUntil","Date","valid_until","toLocaleDateString","localeService","internalToBrowserLocale","$i18n","locale","confirmDelete","deleteAccount","$router","changePassword","params","newPassword","newPasswordConfirmation","logout","changeEmail","email","replace","revokeToken","window","t","autocomplete","ImageCropper","Element","cropperOptions","aspectRatio","autoCropArea","viewMode","movable","zoomable","guides","mimes","saveButtonLabel","saveWithoutCroppingButtonlabel","cancelButtonLabel","cropper","dataUrl","saveText","saveWithoutCroppingText","cancelText","destroy","cropping","pickImage","createCropper","Cropper","img","getTriggerDOM","querySelector","readFile","fileInput","reader","FileReader","onload","readAsDataURL","addEventListener","beforeUnmount","removeEventListener","src","alt","accept","faPlus","ProfileTab","newName","name_unescaped","newBio","unescape","description","newLocked","locked","newFields","fields","field","showRole","show_role","role","bot","pickAvatarBtnVisible","bannerUploading","backgroundUploading","banner","bannerPreview","background","backgroundPreview","emailLanguage","language","ScopeSelector","EmojiInput","InterfaceLanguageSwitcher","emojiUserSuggestor","suggestor","emoji","customEmoji","store","emojiSuggestor","userSuggestor","fieldsLimits","maxFields","defaultAvatar","server","defaultBanner","isDefaultAvatar","baseAvatar","profile_image_url","isDefaultBanner","baseBanner","cover_photo","isDefaultBackground","background_image","avatarImgSrc","profile_image_url_original","bannerImgSrc","updateProfile","note","display_name","fields_attributes","el","internalToBackendLocale","merge","commit","changeVis","visibility","newDefaultScope","addField","deleteField","index","event","$delete","uploadFile","slot","filesize","fileSizeFormatService","fileSizeFormat","allowedsize","messageKey","messageArgs","num","filesizeunit","unit","allowedsizeunit","level","resetAvatar","submitAvatar","resetBanner","submitBanner","resetBackground","submitBackground","that","updateAvatar","avatar","avatarName","updateProfileImages","displayUploadError","getCroppedCanvas","toBlob","message","enable-emoji-picker","suggest","_","hide-emoji-button","prompt-text","set-language","title","$event","serverSide_hideFollowers","serverSide_hideFollows","faGlobe","GeneralTab","subjectLineOptions","conversationDisplayOptions","conversationOtherRepliesButtonOptions","mentionLinkDisplayOptions","thirdColumnModeOptions","loopSilentAvailable","getOwnPropertyDescriptor","HTMLVideoElement","prototype","HTMLMediaElement","postFormats","postContentOptions","format","instanceSpecificPanelPresent","showInstanceSpecificPanel","instanceWallpaperUsed","instanceShoutboxPresent","shoutAvailable","interfaceLanguage","changeDefaultScope","conversationDisplay","hideNsfw","loopVideo","mentionLinkDisplay","show-all","user-default","serverSide_defaultScope","initial-scope","on-scope-change","VersionTab","backendVersion","frontendVersion","frontendVersionLink","backendVersionLink","versionString","matches","match","href","modelValue","fallback","showOptionalTickbox","emits","present","validColor","hex2rgb","transparentColor","computedColor","max","hardMax","hardMin","faChevronDown","faChevronUp","toModel","object","x","y","blur","spread","inset","color","alpha","selectedId","cValue","ColorInput","OpacityInput","del","Math","moveUp","moveDn","beforeUpdate","anyShadows","anyShadowsFallback","currentFallback","moveUpValid","moveDnValid","usingFallback","rgb","boxShadow","getCssShadow","shadow","fixed-width","show-optional-tickbox","scope","keypath","tag","lValue","availableOptions","noInherit","dValue","family","isCustom","preset","faAdjust","faExclamationTriangle","faThumbsUp","large","contrast","hint","levelVal","aaa","aa","context","ratio","text","hint_18pt","laaa","laa","faStar","faRetweet","faReply","v1OnlyNames","themeImporter","newImporter","validator","importValidator","onImport","onImportFailure","themeExporter","newExporter","getExportedObject","exportedTheme","availableStyles","selectedTheme","theme","themeWarning","tempImportFile","engineVersion","previewShadows","previewColors","previewRadii","previewFonts","shadowsInvalid","colorsInvalid","radiiInvalid","keepColor","keepShadows","keepOpacity","keepRoundness","keepFonts","SLOT_INHERITANCE","OPACITIES","shadowSelected","shadowsLocal","fontsLocal","btnRadiusLocal","inputRadiusLocal","checkboxRadiusLocal","panelRadiusLocal","avatarRadiusLocal","avatarAltRadiusLocal","attachmentRadiusLocal","tooltipRadiusLocal","chatMessageRadiusLocal","self","getThemes","promises","all","entries","k","themes","themesComplete","loadThemeFromLocalStorage","shadowsAvailable","themeWarningHelp","pre","origin","themeEngineVersion","noActionsPossible","CURRENT_VERSION","selectedVersion","isArray","currentColors","currentOpacity","currentRadii","btn","checkbox","panel","avatarAlt","tooltip","attachment","chatMessage","preview","composePreset","previewTheme","colors","opacity","radii","shadows","fonts","previewContrast","bg","colorsConverted","ratios","slotIsBaseText","textColor","layer","variant","opacitySlot","getOpacitySlot","textColors","layers","getLayers","textColorKey","newKey","toUpperCase","getContrastRatioLayers","toPrecision","warn","previewRules","rules","values","DEFAULT_SHADOWS","sort","currentShadowOverriden","currentShadow","currentShadowFallback","assign","themeValid","saveEverything","source","_pleroma_theme_version","isActive","tabSwitcher","RangeInput","ContrastRatio","ShadowControl","FontControl","Preview","loadTheme","fileVersion","forceUseSource","dismissWarning","version","snapshotEngineVersion","versionsMatch","sourceSnapshotMismatch","forcedSourceLoad","normalizeLocalState","forceLoadLocalStorage","forceLoad","forceSnapshot","confirmLoadSource","customTheme","customThemeSource","themeData","setCustomTheme","updatePreviewColorsAndShadows","generateColors","generateShadows","mod","importTheme","importData","exportTheme","exportData","parsed","forceSource","clearAll","clearV1","$data","endsWith","forEach","clearRoundness","clearOpacity","clearShadows","clearFonts","colors2to3","fg","fgColorLocal","rgb2hex","textColorLocal","Set","hex","isNaN","shadows2to3","generateRadii","getOwnPropertyNames","generateFonts","fontsInvalid","find","s","log","bgColorLocal","linkColorLocal","cRedColorLocal","cGreenColorLocal","cBlueColorLocal","cOrangeColorLocal","bgOpacityLocal","bgText","accentColorLocal","link","accent","bgLink","fgTextColorLocal","fgText","fgLinkColorLocal","fgLink","bgCRed","bgCBlue","bgCGreen","bgCOrange","postLinkColorLocal","postLink","postGreentextColorLocal","cGreen","postGreentext","alertErrorColorLocal","alertError","alertErrorTextColorLocal","alertErrorText","alertWarningColorLocal","alertWarning","alertWarningTextColorLocal","alertWarningText","alertNeutralColorLocal","alertNeutral","alertNeutralTextColorLocal","alertNeutralText","alertOpacityLocal","alert","badgeNotificationColorLocal","badgeNotification","badgeNotificationTextColorLocal","badgeNotificationText","panelColorLocal","panelOpacityLocal","panelTextColorLocal","panelText","panelLinkColorLocal","panelLink","topBarColorLocal","topBar","topBarTextColorLocal","topBarText","topBarLinkColorLocal","topBarLink","inputColorLocal","inputOpacityLocal","inputTextColorLocal","inputText","btnColorLocal","btnOpacityLocal","btnTextColorLocal","btnText","btnPanelTextColorLocal","btnPanelText","btnTopBarTextColorLocal","btnTopBarText","btnPressedColorLocal","btnPressed","btnPressedTextColorLocal","btnPressedText","btnPressedPanelTextColorLocal","btnPressedPanelText","btnPressedTopBarTextColorLocal","btnPressedTopBarText","btnDisabledColorLocal","btnDisabled","btnDisabledTextColorLocal","btnDisabledText","btnDisabledPanelTextColorLocal","btnDisabledPanelText","btnDisabledTopBarTextColorLocal","btnDisabledTopBarText","btnToggledColorLocal","btnToggled","btnToggledTextColorLocal","btnToggledText","btnToggledPanelTextColorLocal","btnToggledPanelText","btnToggledTopBarTextColorLocal","btnToggledTopBarText","tabColorLocal","tab","tabTextColorLocal","tabText","tabActiveTextColorLocal","tabActiveText","borderColorLocal","border","borderOpacityLocal","faintColorLocal","faint","faintLinkColorLocal","faintLink","panelFaintColorLocal","panelFaint","faintOpacityLocal","underlayColorLocal","underlay","underlayOpacityLocal","wallpaperColorLocal","wallpaper","pollColorLocal","poll","pollTextColorLocal","pollText","iconColorLocal","highlightColorLocal","highlight","highlightTextColorLocal","highlightText","highlightLinkColorLocal","highlightLink","popoverColorLocal","popover","popoverOpacityLocal","popoverTextColorLocal","popoverText","popoverLinkColorLocal","popoverLink","selectedPostColorLocal","selectedPost","selectedPostTextColorLocal","selectedPostText","selectedPostLinkColorLocal","selectedPostLink","selectedMenuColorLocal","selectedMenu","selectedMenuTextColorLocal","selectedMenuText","selectedMenuLinkColorLocal","selectedMenuLink","chatBgColorLocal","chatMessageIncomingBgColorLocal","chatMessageIncomingTextColorLocal","chatMessageIncomingLinkColorLocal","chatMessageIncomingBorderColorLocal","chatMessageOutgoingBgColorLocal","chatMessageOutgoingTextColorLocal","chatMessageOutgoingLinkColorLocal","chatMessageOutgoingBorderColorLocal","hard-min","interface","no-inherit","post","postCode","to","faUser","faFilter","faPaintBrush","faBell","faDownload","faEyeSlash","faInfo","SettingsModalContent","MutesAndBlocksTab","ThemeTab","isLoggedIn","open","settingsModalState","bodyLock","onOpen","targetTab","settingsModalTargetTab","tabIndex","findIndex","elm","setTab","side-tab-bar","body-scroll-lock","data-tab-name","fullHeight"],"mappings":"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","file":"static/js/2.55d5f2926c7b22177236.js","sourcesContent":["export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./importer.vue?vue&type=style&index=0&id=24f20fa0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./exporter.vue?vue&type=style&index=0&id=6357fe6a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./autosuggest.vue?vue&type=style&index=0&id=105e6799&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./block_card.vue?vue&type=style&index=0&id=0f5ac826&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./mute_card.vue?vue&type=style&index=0&id=5e3199a7&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./domain_mute_card.vue?vue&type=style&index=0&id=0b8ac930&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./selectable_list.vue?vue&type=style&index=0&id=356e33d2&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js!../../../../node_modules/sass-loader/lib/loader.js!./mutes_and_blocks_tab.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js!../../../../node_modules/sass-loader/lib/loader.js!../../../../node_modules/vue-loader/dist/index.js??ref--2!./modified_indicator.vue?vue&type=style&index=0&id=be0aa34e&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js!../../../../node_modules/sass-loader/lib/loader.js!../../../../node_modules/vue-loader/dist/index.js??ref--2!./server_side_indicator.vue?vue&type=style&index=0&id=35bf7f91&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js!../../../../node_modules/sass-loader/lib/loader.js!../../../../node_modules/vue-loader/dist/index.js??ref--2!./choice_setting.vue?vue&type=style&index=0&id=36cf5d2e&lang=scss\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js!../../../../../node_modules/sass-loader/lib/loader.js!../../../../../node_modules/vue-loader/dist/index.js??ref--2!./mfa_backup_codes.vue?vue&type=style&index=0&id=1284fe74&lang=scss\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js!../../../../../node_modules/sass-loader/lib/loader.js!../../../../../node_modules/vue-loader/dist/index.js??ref--2!./mfa.vue?vue&type=style&index=0&id=c62074fa&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./image_cropper.vue?vue&type=style&index=0&id=0bac39f0&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js!../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js!../../../../node_modules/sass-loader/lib/loader.js!./profile_tab.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./color_input.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./color_input.vue?vue&type=style&index=1&id=54780100&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./shadow_control.vue?vue&type=style&index=0&id=02a2d813&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./font_control.vue?vue&type=style&index=0&id=ceed00ba&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./contrast_ratio.vue?vue&type=style&index=0&id=6d90b7c4&lang=scss\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js!../../../../../node_modules/sass-loader/lib/loader.js!../../../../../node_modules/vue-loader/dist/index.js??ref--2!./preview.vue?vue&type=style&index=0&id=1d72aedf&lang=scss\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/index.js!../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js!../../../../../node_modules/sass-loader/lib/loader.js!./theme_tab.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./settings_modal_content.scss?vue&type=style&index=0&lang=scss\"","<template>\n  <div\n    :label=\"$t('settings.data_import_export_tab')\"\n  >\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.follow_import') }}</h2>\n      <p>{{ $t('settings.import_followers_from_a_csv_file') }}</p>\n      <Importer\n        :submit-handler=\"importFollows\"\n        :success-message=\"$t('settings.follows_imported')\"\n        :error-message=\"$t('settings.follow_import_error')\"\n      />\n    </div>\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.follow_export') }}</h2>\n      <Exporter\n        :get-content=\"getFollowsContent\"\n        filename=\"friends.csv\"\n        :export-button-label=\"$t('settings.follow_export_button')\"\n      />\n    </div>\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.block_import') }}</h2>\n      <p>{{ $t('settings.import_blocks_from_a_csv_file') }}</p>\n      <Importer\n        :submit-handler=\"importBlocks\"\n        :success-message=\"$t('settings.blocks_imported')\"\n        :error-message=\"$t('settings.block_import_error')\"\n      />\n    </div>\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.block_export') }}</h2>\n      <Exporter\n        :get-content=\"getBlocksContent\"\n        filename=\"blocks.csv\"\n        :export-button-label=\"$t('settings.block_export_button')\"\n      />\n    </div>\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.mute_import') }}</h2>\n      <p>{{ $t('settings.import_mutes_from_a_csv_file') }}</p>\n      <Importer\n        :submit-handler=\"importMutes\"\n        :success-message=\"$t('settings.mutes_imported')\"\n        :error-message=\"$t('settings.mute_import_error')\"\n      />\n    </div>\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.mute_export') }}</h2>\n      <Exporter\n        :get-content=\"getMutesContent\"\n        filename=\"mutes.csv\"\n        :export-button-label=\"$t('settings.mute_export_button')\"\n      />\n    </div>\n  </div>\n</template>\n\n<script src=\"./data_import_export_tab.js\"></script>\n<!-- <style lang=\"scss\" src=\"./profile.scss\"></style> -->\n","<template>\n  <div class=\"importer\">\n    <form>\n      <input\n        ref=\"input\"\n        type=\"file\"\n        @change=\"change\"\n      >\n    </form>\n    <FAIcon\n      v-if=\"submitting\"\n      class=\"importer-uploading\"\n      spin\n      icon=\"circle-notch\"\n    />\n    <button\n      v-else\n      class=\"btn button-default\"\n      @click=\"submit\"\n    >\n      {{ submitButtonLabel || $t('importer.submit') }}\n    </button>\n    <div v-if=\"success\">\n      <button\n        class=\"button-unstyled\"\n        @click=\"dismiss\"\n      >\n        <FAIcon\n          icon=\"times\"\n        />\n      </button>\n      {{ ' ' }}\n      <span>{{ successMessage || $t('importer.success') }}</span>\n    </div>\n    <div v-else-if=\"error\">\n      <button\n        class=\"button-unstyled\"\n        @click=\"dismiss\"\n      >\n        <FAIcon\n          icon=\"times\"\n        />\n      </button>\n      {{ ' ' }}\n      <span>{{ errorMessage || $t('importer.error') }}</span>\n    </div>\n  </div>\n</template>\n\n<script src=\"./importer.js\"></script>\n\n<style lang=\"scss\">\n.importer {\n  &-uploading {\n    font-size: 1.5em;\n    margin: 0.25em;\n  }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faCircleNotch,\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch,\n  faTimes\n)\n\nconst Importer = {\n  props: {\n    submitHandler: {\n      type: Function,\n      required: true\n    },\n    submitButtonLabel: { type: String },\n    successMessage: { type: String },\n    errorMessage: { type: String }\n  },\n  data () {\n    return {\n      file: null,\n      error: false,\n      success: false,\n      submitting: false\n    }\n  },\n  methods: {\n    change () {\n      this.file = this.$refs.input.files[0]\n    },\n    submit () {\n      this.dismiss()\n      this.submitting = true\n      this.submitHandler(this.file)\n        .then(() => { this.success = true })\n        .catch(() => { this.error = true })\n        .finally(() => { this.submitting = false })\n    },\n    dismiss () {\n      this.success = false\n      this.error = false\n    }\n  }\n}\n\nexport default Importer\n","import { render } from \"./importer.vue?vue&type=template&id=24f20fa0\"\nimport script from \"./importer.js?vue&type=script&lang=js\"\nexport * from \"./importer.js?vue&type=script&lang=js\"\n\nimport \"./importer.vue?vue&type=style&index=0&id=24f20fa0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"exporter\">\n    <div v-if=\"processing\">\n      <FAIcon\n        icon=\"circle-notch\"\n        size=\"lg\"\n        spin\n      />\n\n      <span>{{ processingMessage || $t('exporter.processing') }}</span>\n    </div>\n    <button\n      v-else\n      class=\"btn button-default\"\n      @click=\"process\"\n    >\n      {{ exportButtonLabel || $t('exporter.export') }}\n    </button>\n  </div>\n</template>\n\n<script src=\"./exporter.js\"></script>\n\n<style lang=\"scss\">\n.exporter {\n  &-processing {\n    margin: 0.25em;\n  }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch\n)\n\nconst Exporter = {\n  props: {\n    getContent: {\n      type: Function,\n      required: true\n    },\n    filename: {\n      type: String,\n      default: 'export.csv'\n    },\n    exportButtonLabel: { type: String },\n    processingMessage: { type: String }\n  },\n  data () {\n    return {\n      processing: false\n    }\n  },\n  methods: {\n    process () {\n      this.processing = true\n      this.getContent()\n        .then((content) => {\n          const fileToDownload = document.createElement('a')\n          fileToDownload.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(content))\n          fileToDownload.setAttribute('download', this.filename)\n          fileToDownload.style.display = 'none'\n          document.body.appendChild(fileToDownload)\n          fileToDownload.click()\n          document.body.removeChild(fileToDownload)\n          // Add delay before hiding processing state since browser takes some time to handle file download\n          setTimeout(() => { this.processing = false }, 2000)\n        })\n    }\n  }\n}\n\nexport default Exporter\n","import { render } from \"./exporter.vue?vue&type=template&id=6357fe6a\"\nimport script from \"./exporter.js?vue&type=script&lang=js\"\nexport * from \"./exporter.js?vue&type=script&lang=js\"\n\nimport \"./exporter.vue?vue&type=style&index=0&id=6357fe6a&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Importer from 'src/components/importer/importer.vue'\nimport Exporter from 'src/components/exporter/exporter.vue'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\nimport { mapState } from 'vuex'\n\nconst DataImportExportTab = {\n  data () {\n    return {\n      activeTab: 'profile',\n      newDomainToMute: ''\n    }\n  },\n  created () {\n    this.$store.dispatch('fetchTokens')\n  },\n  components: {\n    Importer,\n    Exporter,\n    Checkbox\n  },\n  computed: {\n    ...mapState({\n      backendInteractor: (state) => state.api.backendInteractor,\n      user: (state) => state.users.currentUser\n    })\n  },\n  methods: {\n    getFollowsContent () {\n      return this.backendInteractor.exportFriends({ id: this.user.id })\n        .then(this.generateExportableUsersContent)\n    },\n    getBlocksContent () {\n      return this.backendInteractor.fetchBlocks()\n        .then(this.generateExportableUsersContent)\n    },\n    getMutesContent () {\n      return this.backendInteractor.fetchMutes()\n        .then(this.generateExportableUsersContent)\n    },\n    importFollows (file) {\n      return this.backendInteractor.importFollows({ file })\n        .then((status) => {\n          if (!status) {\n            throw new Error('failed')\n          }\n        })\n    },\n    importBlocks (file) {\n      return this.backendInteractor.importBlocks({ file })\n        .then((status) => {\n          if (!status) {\n            throw new Error('failed')\n          }\n        })\n    },\n    importMutes (file) {\n      return this.backendInteractor.importMutes({ file })\n        .then((status) => {\n          if (!status) {\n            throw new Error('failed')\n          }\n        })\n    },\n    generateExportableUsersContent (users) {\n      // Get addresses\n      return users.map((user) => {\n        // check is it's a local user\n        if (user && user.is_local) {\n          // append the instance address\n          // eslint-disable-next-line no-undef\n          return user.screen_name + '@' + location.hostname\n        }\n        return user.screen_name\n      }).join('\\n')\n    }\n  }\n}\n\nexport default DataImportExportTab\n","import { render } from \"./data_import_export_tab.vue?vue&type=template&id=492b1b68\"\nimport script from \"./data_import_export_tab.js?vue&type=script&lang=js\"\nexport * from \"./data_import_export_tab.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <tab-switcher\n    :scrollable-tabs=\"true\"\n    class=\"mutes-and-blocks-tab\"\n  >\n    <div :label=\"$t('settings.blocks_tab')\">\n      <div class=\"usersearch-wrapper\">\n        <Autosuggest\n          :filter=\"filterUnblockedUsers\"\n          :query=\"queryUserIds\"\n          :placeholder=\"$t('settings.search_user_to_block')\"\n        >\n          <template v-slot=\"row\">\n            <BlockCard\n              :user-id=\"row.item\"\n            />\n          </template>\n        </Autosuggest>\n      </div>\n      <BlockList\n        :refresh=\"true\"\n        :get-key=\"i => i\"\n      >\n        <template v-slot:header=\"{selected}\">\n          <div class=\"bulk-actions\">\n            <ProgressButton\n              v-if=\"selected.length > 0\"\n              class=\"btn button-default bulk-action-button\"\n              :click=\"() => blockUsers(selected)\"\n            >\n              {{ $t('user_card.block') }}\n              <template v-slot:progress>\n                {{ $t('user_card.block_progress') }}\n              </template>\n            </ProgressButton>\n            <ProgressButton\n              v-if=\"selected.length > 0\"\n              class=\"btn button-default\"\n              :click=\"() => unblockUsers(selected)\"\n            >\n              {{ $t('user_card.unblock') }}\n              <template v-slot:progress>\n                {{ $t('user_card.unblock_progress') }}\n              </template>\n            </ProgressButton>\n          </div>\n        </template>\n        <template v-slot:item=\"{item}\">\n          <BlockCard :user-id=\"item\" />\n        </template>\n        <template v-slot:empty>\n          {{ $t('settings.no_blocks') }}\n        </template>\n      </BlockList>\n    </div>\n\n    <div :label=\"$t('settings.mutes_tab')\">\n      <tab-switcher>\n        <div label=\"Users\">\n          <div class=\"usersearch-wrapper\">\n            <Autosuggest\n              :filter=\"filterUnMutedUsers\"\n              :query=\"queryUserIds\"\n              :placeholder=\"$t('settings.search_user_to_mute')\"\n            >\n              <template v-slot=\"row\">\n                <MuteCard\n                  :user-id=\"row.item\"\n                />\n              </template>\n            </Autosuggest>\n          </div>\n          <MuteList\n            :refresh=\"true\"\n            :get-key=\"i => i\"\n          >\n            <template v-slot:header=\"{selected}\">\n              <div class=\"bulk-actions\">\n                <ProgressButton\n                  v-if=\"selected.length > 0\"\n                  class=\"btn button-default\"\n                  :click=\"() => muteUsers(selected)\"\n                >\n                  {{ $t('user_card.mute') }}\n                  <template v-slot:progress>\n                    {{ $t('user_card.mute_progress') }}\n                  </template>\n                </ProgressButton>\n                <ProgressButton\n                  v-if=\"selected.length > 0\"\n                  class=\"btn button-default\"\n                  :click=\"() => unmuteUsers(selected)\"\n                >\n                  {{ $t('user_card.unmute') }}\n                  <template v-slot:progress>\n                    {{ $t('user_card.unmute_progress') }}\n                  </template>\n                </ProgressButton>\n              </div>\n            </template>\n            <template v-slot:item=\"{item}\">\n              <MuteCard :user-id=\"item\" />\n            </template>\n            <template v-slot:empty>\n              {{ $t('settings.no_mutes') }}\n            </template>\n          </MuteList>\n        </div>\n\n        <div :label=\"$t('settings.domain_mutes')\">\n          <div class=\"domain-mute-form\">\n            <Autosuggest\n              :filter=\"filterUnMutedDomains\"\n              :query=\"queryKnownDomains\"\n              :placeholder=\"$t('settings.type_domains_to_mute')\"\n            >\n              <template v-slot=\"row\">\n                <DomainMuteCard\n                  :domain=\"row.item\"\n                />\n              </template>\n            </Autosuggest>\n          </div>\n          <DomainMuteList\n            :refresh=\"true\"\n            :get-key=\"i => i\"\n          >\n            <template v-slot:header=\"{selected}\">\n              <div class=\"bulk-actions\">\n                <ProgressButton\n                  v-if=\"selected.length > 0\"\n                  class=\"btn button-default\"\n                  :click=\"() => unmuteDomains(selected)\"\n                >\n                  {{ $t('domain_mute_card.unmute') }}\n                  <template v-slot:progress>\n                    {{ $t('domain_mute_card.unmute_progress') }}\n                  </template>\n                </ProgressButton>\n              </div>\n            </template>\n            <template v-slot:item=\"{item}\">\n              <DomainMuteCard :domain=\"item\" />\n            </template>\n            <template v-slot:empty>\n              {{ $t('settings.no_mutes') }}\n            </template>\n          </DomainMuteList>\n        </div>\n      </tab-switcher>\n    </div>\n  </tab-switcher>\n</template>\n\n<script src=\"./mutes_and_blocks_tab.js\"></script>\n<style lang=\"scss\" src=\"./mutes_and_blocks_tab.scss\"></style>\n","<template>\n  <div\n    v-click-outside=\"onClickOutside\"\n    class=\"autosuggest\"\n  >\n    <input\n      v-model=\"term\"\n      :placeholder=\"placeholder\"\n      class=\"autosuggest-input\"\n      @click=\"onInputClick\"\n    >\n    <div\n      v-if=\"resultsVisible && filtered.length > 0\"\n      class=\"autosuggest-results\"\n    >\n      <slot\n        v-for=\"item in filtered\"\n        :item=\"item\"\n      />\n    </div>\n  </div>\n</template>\n\n<script src=\"./autosuggest.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.autosuggest {\n  position: relative;\n\n  &-input {\n    display: block;\n    width: 100%;\n  }\n\n  &-results {\n    position: absolute;\n    left: 0;\n    top: 100%;\n    right: 0;\n    max-height: 400px;\n    background-color: $fallback--bg;\n    background-color: var(--bg, $fallback--bg);\n    border-style: solid;\n    border-width: 1px;\n    border-color: $fallback--border;\n    border-color: var(--border, $fallback--border);\n    border-radius: $fallback--inputRadius;\n    border-radius: var(--inputRadius, $fallback--inputRadius);\n    border-top-left-radius: 0;\n    border-top-right-radius: 0;\n    box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.6);\n    box-shadow: var(--panelShadow);\n    overflow-y: auto;\n    z-index: 1;\n  }\n}\n</style>\n","const debounceMilliseconds = 500\n\nexport default {\n  props: {\n    query: { // function to query results and return a promise\n      type: Function,\n      required: true\n    },\n    filter: { // function to filter results in real time\n      type: Function\n    },\n    placeholder: {\n      type: String,\n      default: 'Search...'\n    }\n  },\n  data () {\n    return {\n      term: '',\n      timeout: null,\n      results: [],\n      resultsVisible: false\n    }\n  },\n  computed: {\n    filtered () {\n      return this.filter ? this.filter(this.results) : this.results\n    }\n  },\n  watch: {\n    term (val) {\n      this.fetchResults(val)\n    }\n  },\n  methods: {\n    fetchResults (term) {\n      clearTimeout(this.timeout)\n      this.timeout = setTimeout(() => {\n        this.results = []\n        if (term) {\n          this.query(term).then((results) => { this.results = results })\n        }\n      }, debounceMilliseconds)\n    },\n    onInputClick () {\n      this.resultsVisible = true\n    },\n    onClickOutside () {\n      this.resultsVisible = false\n    }\n  }\n}\n","import { render } from \"./autosuggest.vue?vue&type=template&id=105e6799\"\nimport script from \"./autosuggest.js?vue&type=script&lang=js\"\nexport * from \"./autosuggest.js?vue&type=script&lang=js\"\n\nimport \"./autosuggest.vue?vue&type=style&index=0&id=105e6799&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <basic-user-card :user=\"user\">\n    <div class=\"block-card-content-container\">\n      <button\n        v-if=\"blocked\"\n        class=\"btn button-default\"\n        :disabled=\"progress\"\n        @click=\"unblockUser\"\n      >\n        <template v-if=\"progress\">\n          {{ $t('user_card.unblock_progress') }}\n        </template>\n        <template v-else>\n          {{ $t('user_card.unblock') }}\n        </template>\n      </button>\n      <button\n        v-else\n        class=\"btn button-default\"\n        :disabled=\"progress\"\n        @click=\"blockUser\"\n      >\n        <template v-if=\"progress\">\n          {{ $t('user_card.block_progress') }}\n        </template>\n        <template v-else>\n          {{ $t('user_card.block') }}\n        </template>\n      </button>\n    </div>\n  </basic-user-card>\n</template>\n\n<script src=\"./block_card.js\"></script>\n\n<style lang=\"scss\">\n.block-card-content-container {\n  margin-top: 0.5em;\n  text-align: right;\n  button {\n    width: 10em;\n  }\n}\n</style>\n","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\n\nconst BlockCard = {\n  props: ['userId'],\n  data () {\n    return {\n      progress: false\n    }\n  },\n  computed: {\n    user () {\n      return this.$store.getters.findUser(this.userId)\n    },\n    relationship () {\n      return this.$store.getters.relationship(this.userId)\n    },\n    blocked () {\n      return this.relationship.blocking\n    }\n  },\n  components: {\n    BasicUserCard\n  },\n  methods: {\n    unblockUser () {\n      this.progress = true\n      this.$store.dispatch('unblockUser', this.user.id).then(() => {\n        this.progress = false\n      })\n    },\n    blockUser () {\n      this.progress = true\n      this.$store.dispatch('blockUser', this.user.id).then(() => {\n        this.progress = false\n      })\n    }\n  }\n}\n\nexport default BlockCard\n","import { render } from \"./block_card.vue?vue&type=template&id=0f5ac826\"\nimport script from \"./block_card.js?vue&type=script&lang=js\"\nexport * from \"./block_card.js?vue&type=script&lang=js\"\n\nimport \"./block_card.vue?vue&type=style&index=0&id=0f5ac826&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <basic-user-card :user=\"user\">\n    <div class=\"mute-card-content-container\">\n      <button\n        v-if=\"muted\"\n        class=\"btn button-default\"\n        :disabled=\"progress\"\n        @click=\"unmuteUser\"\n      >\n        <template v-if=\"progress\">\n          {{ $t('user_card.unmute_progress') }}\n        </template>\n        <template v-else>\n          {{ $t('user_card.unmute') }}\n        </template>\n      </button>\n      <button\n        v-else\n        class=\"btn button-default\"\n        :disabled=\"progress\"\n        @click=\"muteUser\"\n      >\n        <template v-if=\"progress\">\n          {{ $t('user_card.mute_progress') }}\n        </template>\n        <template v-else>\n          {{ $t('user_card.mute') }}\n        </template>\n      </button>\n    </div>\n  </basic-user-card>\n</template>\n\n<script src=\"./mute_card.js\"></script>\n\n<style lang=\"scss\">\n.mute-card-content-container {\n  margin-top: 0.5em;\n  text-align: right;\n  button {\n    width: 10em;\n  }\n}\n</style>\n","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\n\nconst MuteCard = {\n  props: ['userId'],\n  data () {\n    return {\n      progress: false\n    }\n  },\n  computed: {\n    user () {\n      return this.$store.getters.findUser(this.userId)\n    },\n    relationship () {\n      return this.$store.getters.relationship(this.userId)\n    },\n    muted () {\n      return this.relationship.muting\n    }\n  },\n  components: {\n    BasicUserCard\n  },\n  methods: {\n    unmuteUser () {\n      this.progress = true\n      this.$store.dispatch('unmuteUser', this.userId).then(() => {\n        this.progress = false\n      })\n    },\n    muteUser () {\n      this.progress = true\n      this.$store.dispatch('muteUser', this.userId).then(() => {\n        this.progress = false\n      })\n    }\n  }\n}\n\nexport default MuteCard\n","import { render } from \"./mute_card.vue?vue&type=template&id=5e3199a7\"\nimport script from \"./mute_card.js?vue&type=script&lang=js\"\nexport * from \"./mute_card.js?vue&type=script&lang=js\"\n\nimport \"./mute_card.vue?vue&type=style&index=0&id=5e3199a7&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"domain-mute-card\">\n    <div class=\"domain-mute-card-domain\">\n      {{ domain }}\n    </div>\n    <ProgressButton\n      v-if=\"muted\"\n      :click=\"unmuteDomain\"\n      class=\"btn button-default\"\n    >\n      {{ $t('domain_mute_card.unmute') }}\n      <template v-slot:progress>\n        {{ $t('domain_mute_card.unmute_progress') }}\n      </template>\n    </ProgressButton>\n    <ProgressButton\n      v-else\n      :click=\"muteDomain\"\n      class=\"btn button-default\"\n    >\n      {{ $t('domain_mute_card.mute') }}\n      <template v-slot:progress>\n        {{ $t('domain_mute_card.mute_progress') }}\n      </template>\n    </ProgressButton>\n  </div>\n</template>\n\n<script src=\"./domain_mute_card.js\"></script>\n\n<style lang=\"scss\">\n.domain-mute-card {\n  flex: 1 0;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  padding: 0.6em 1em 0.6em 0;\n\n  &-domain {\n    margin-right: 1em;\n    overflow: hidden;\n    text-overflow: ellipsis;\n  }\n\n  button {\n    width: 10em;\n  }\n\n  .autosuggest-results & {\n    padding-left: 1em;\n  }\n}\n</style>\n","import ProgressButton from '../progress_button/progress_button.vue'\n\nconst DomainMuteCard = {\n  props: ['domain'],\n  components: {\n    ProgressButton\n  },\n  computed: {\n    user () {\n      return this.$store.state.users.currentUser\n    },\n    muted () {\n      return this.user.domainMutes.includes(this.domain)\n    }\n  },\n  methods: {\n    unmuteDomain () {\n      return this.$store.dispatch('unmuteDomain', this.domain)\n    },\n    muteDomain () {\n      return this.$store.dispatch('muteDomain', this.domain)\n    }\n  }\n}\n\nexport default DomainMuteCard\n","import { render } from \"./domain_mute_card.vue?vue&type=template&id=0b8ac930\"\nimport script from \"./domain_mute_card.js?vue&type=script&lang=js\"\nexport * from \"./domain_mute_card.js?vue&type=script&lang=js\"\n\nimport \"./domain_mute_card.vue?vue&type=style&index=0&id=0b8ac930&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"selectable-list\">\n    <div\n      v-if=\"items.length > 0\"\n      class=\"selectable-list-header\"\n    >\n      <div class=\"selectable-list-checkbox-wrapper\">\n        <Checkbox\n          :model-value=\"allSelected\"\n          :indeterminate=\"someSelected\"\n          @update:model-value=\"toggleAll\"\n        >\n          {{ $t('selectable_list.select_all') }}\n        </Checkbox>\n      </div>\n      <div class=\"selectable-list-header-actions\">\n        <slot\n          name=\"header\"\n          :selected=\"filteredSelected\"\n        />\n      </div>\n    </div>\n    <List\n      :items=\"items\"\n      :get-key=\"getKey\"\n    >\n      <template v-slot:item=\"{item}\">\n        <div\n          class=\"selectable-list-item-inner\"\n          :class=\"{ 'selectable-list-item-selected-inner': isSelected(item) }\"\n        >\n          <div class=\"selectable-list-checkbox-wrapper\">\n            <Checkbox\n              :model-value=\"isSelected(item)\"\n              @update:model-value=\"checked => toggle(checked, item)\"\n            />\n          </div>\n          <slot\n            name=\"item\"\n            :item=\"item\"\n          />\n        </div>\n      </template>\n      <template v-slot:empty>\n        <slot name=\"empty\" />\n      </template>\n    </List>\n  </div>\n</template>\n\n<script src=\"./selectable_list.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.selectable-list {\n  &-item-inner {\n    display: flex;\n    align-items: center;\n\n    > * {\n      min-width: 0;\n    }\n  }\n\n  &-item-selected-inner {\n    background-color: $fallback--lightBg;\n    background-color: var(--selectedMenu, $fallback--lightBg);\n    color: var(--selectedMenuText, $fallback--text);\n    --faint: var(--selectedMenuFaintText, $fallback--faint);\n    --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n    --lightText: var(--selectedMenuLightText, $fallback--lightText);\n    --icon: var(--selectedMenuIcon, $fallback--icon);\n  }\n\n  &-header {\n    display: flex;\n    align-items: center;\n    padding: 0.6em 0;\n    border-bottom: 2px solid;\n    border-bottom-color: $fallback--border;\n    border-bottom-color: var(--border, $fallback--border);\n\n    &-actions {\n      flex: 1;\n    }\n  }\n\n  &-checkbox-wrapper {\n    padding: 0 10px;\n    flex: none;\n  }\n}\n</style>\n","import List from '../list/list.vue'\nimport Checkbox from '../checkbox/checkbox.vue'\n\nconst SelectableList = {\n  components: {\n    List,\n    Checkbox\n  },\n  props: {\n    items: {\n      type: Array,\n      default: () => []\n    },\n    getKey: {\n      type: Function,\n      default: item => item.id\n    }\n  },\n  data () {\n    return {\n      selected: []\n    }\n  },\n  computed: {\n    allKeys () {\n      return this.items.map(this.getKey)\n    },\n    filteredSelected () {\n      return this.allKeys.filter(key => this.selected.indexOf(key) !== -1)\n    },\n    allSelected () {\n      return this.filteredSelected.length === this.items.length\n    },\n    noneSelected () {\n      return this.filteredSelected.length === 0\n    },\n    someSelected () {\n      return !this.allSelected && !this.noneSelected\n    }\n  },\n  methods: {\n    isSelected (item) {\n      return this.filteredSelected.indexOf(this.getKey(item)) !== -1\n    },\n    toggle (checked, item) {\n      const key = this.getKey(item)\n      const oldChecked = this.isSelected(key)\n      if (checked !== oldChecked) {\n        if (checked) {\n          this.selected.push(key)\n        } else {\n          this.selected.splice(this.selected.indexOf(key), 1)\n        }\n      }\n    },\n    toggleAll (value) {\n      if (value) {\n        this.selected = this.allKeys.slice(0)\n      } else {\n        this.selected = []\n      }\n    }\n  }\n}\n\nexport default SelectableList\n","import { render } from \"./selectable_list.vue?vue&type=template&id=356e33d2\"\nimport script from \"./selectable_list.js?vue&type=script&lang=js\"\nexport * from \"./selectable_list.js?vue&type=script&lang=js\"\n\nimport \"./selectable_list.vue?vue&type=style&index=0&id=356e33d2&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// eslint-disable-next-line no-unused\nimport { h } from 'vue'\nimport isEmpty from 'lodash/isEmpty'\nimport { getComponentProps } from '../../services/component_utils/component_utils'\nimport './with_subscription.scss'\n\nimport { FontAwesomeIcon as FAIcon } from '@fortawesome/vue-fontawesome'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch\n)\n\nconst withSubscription = ({\n  fetch, // function to fetch entries and return a promise\n  select, // function to select data from store\n  childPropName = 'content', // name of the prop to be passed into the wrapped component\n  additionalPropNames = [] // additional prop name list of the wrapper component\n}) => (WrappedComponent) => {\n  const originalProps = Object.keys(getComponentProps(WrappedComponent))\n  const props = originalProps.filter(v => v !== childPropName).concat(additionalPropNames)\n\n  return {\n    props: [\n      ...props,\n      'refresh' // boolean saying to force-fetch data whenever created\n    ],\n    data () {\n      return {\n        loading: false,\n        error: false\n      }\n    },\n    computed: {\n      fetchedData () {\n        return select(this.$props, this.$store)\n      }\n    },\n    created () {\n      if (this.refresh || isEmpty(this.fetchedData)) {\n        this.fetchData()\n      }\n    },\n    methods: {\n      fetchData () {\n        if (!this.loading) {\n          this.loading = true\n          this.error = false\n          fetch(this.$props, this.$store)\n            .then(() => {\n              this.loading = false\n            })\n            .catch(() => {\n              this.error = true\n              this.loading = false\n            })\n        }\n      }\n    },\n    render () {\n      if (!this.error && !this.loading) {\n        const props = {\n          ...this.$props,\n          [childPropName]: this.fetchedData\n        }\n        const children = this.$slots\n        return (\n          <div class=\"with-subscription\">\n            <WrappedComponent {...props}>\n              {children}\n            </WrappedComponent>\n          </div>\n        )\n      } else {\n        return (\n          <div class=\"with-subscription-loading\">\n            {this.error\n              ? <a onClick={this.fetchData} class=\"alert error\">{this.$t('general.generic_error')}</a>\n              : <FAIcon spin icon=\"circle-notch\"/>\n            }\n          </div>\n        )\n      }\n    }\n  }\n}\n\nexport default withSubscription\n","import get from 'lodash/get'\nimport map from 'lodash/map'\nimport reject from 'lodash/reject'\nimport Autosuggest from 'src/components/autosuggest/autosuggest.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\nimport BlockCard from 'src/components/block_card/block_card.vue'\nimport MuteCard from 'src/components/mute_card/mute_card.vue'\nimport DomainMuteCard from 'src/components/domain_mute_card/domain_mute_card.vue'\nimport SelectableList from 'src/components/selectable_list/selectable_list.vue'\nimport ProgressButton from 'src/components/progress_button/progress_button.vue'\nimport withSubscription from 'src/components/../hocs/with_subscription/with_subscription'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\n\nconst BlockList = withSubscription({\n  fetch: (props, $store) => $store.dispatch('fetchBlocks'),\n  select: (props, $store) => get($store.state.users.currentUser, 'blockIds', []),\n  childPropName: 'items'\n})(SelectableList)\n\nconst MuteList = withSubscription({\n  fetch: (props, $store) => $store.dispatch('fetchMutes'),\n  select: (props, $store) => get($store.state.users.currentUser, 'muteIds', []),\n  childPropName: 'items'\n})(SelectableList)\n\nconst DomainMuteList = withSubscription({\n  fetch: (props, $store) => $store.dispatch('fetchDomainMutes'),\n  select: (props, $store) => get($store.state.users.currentUser, 'domainMutes', []),\n  childPropName: 'items'\n})(SelectableList)\n\nconst MutesAndBlocks = {\n  data () {\n    return {\n      activeTab: 'profile'\n    }\n  },\n  created () {\n    this.$store.dispatch('fetchTokens')\n    this.$store.dispatch('getKnownDomains')\n  },\n  components: {\n    TabSwitcher,\n    BlockList,\n    MuteList,\n    DomainMuteList,\n    BlockCard,\n    MuteCard,\n    DomainMuteCard,\n    ProgressButton,\n    Autosuggest,\n    Checkbox\n  },\n  computed: {\n    knownDomains () {\n      return this.$store.state.instance.knownDomains\n    },\n    user () {\n      return this.$store.state.users.currentUser\n    }\n  },\n  methods: {\n    importFollows (file) {\n      return this.$store.state.api.backendInteractor.importFollows({ file })\n        .then((status) => {\n          if (!status) {\n            throw new Error('failed')\n          }\n        })\n    },\n    importBlocks (file) {\n      return this.$store.state.api.backendInteractor.importBlocks({ file })\n        .then((status) => {\n          if (!status) {\n            throw new Error('failed')\n          }\n        })\n    },\n    generateExportableUsersContent (users) {\n      // Get addresses\n      return users.map((user) => {\n        // check is it's a local user\n        if (user && user.is_local) {\n          // append the instance address\n          // eslint-disable-next-line no-undef\n          return user.screen_name + '@' + location.hostname\n        }\n        return user.screen_name\n      }).join('\\n')\n    },\n    activateTab (tabName) {\n      this.activeTab = tabName\n    },\n    filterUnblockedUsers (userIds) {\n      return reject(userIds, (userId) => {\n        const relationship = this.$store.getters.relationship(this.userId)\n        return relationship.blocking || userId === this.user.id\n      })\n    },\n    filterUnMutedUsers (userIds) {\n      return reject(userIds, (userId) => {\n        const relationship = this.$store.getters.relationship(this.userId)\n        return relationship.muting || userId === this.user.id\n      })\n    },\n    queryUserIds (query) {\n      return this.$store.dispatch('searchUsers', { query })\n        .then((users) => map(users, 'id'))\n    },\n    blockUsers (ids) {\n      return this.$store.dispatch('blockUsers', ids)\n    },\n    unblockUsers (ids) {\n      return this.$store.dispatch('unblockUsers', ids)\n    },\n    muteUsers (ids) {\n      return this.$store.dispatch('muteUsers', ids)\n    },\n    unmuteUsers (ids) {\n      return this.$store.dispatch('unmuteUsers', ids)\n    },\n    filterUnMutedDomains (urls) {\n      return urls.filter(url => !this.user.domainMutes.includes(url))\n    },\n    queryKnownDomains (query) {\n      return new Promise((resolve, reject) => {\n        resolve(this.knownDomains.filter(url => url.toLowerCase().includes(query)))\n      })\n    },\n    unmuteDomains (domains) {\n      return this.$store.dispatch('unmuteDomains', domains)\n    }\n  }\n}\n\nexport default MutesAndBlocks\n","import { render } from \"./mutes_and_blocks_tab.vue?vue&type=template&id=d98eb706\"\nimport script from \"./mutes_and_blocks_tab.js?vue&type=script&lang=js\"\nexport * from \"./mutes_and_blocks_tab.js?vue&type=script&lang=js\"\n\nimport \"./mutes_and_blocks_tab.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div :label=\"$t('settings.notifications')\">\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.notification_setting_filters') }}</h2>\n      <ul class=\"setting-list\">\n        <li>\n          <BooleanSetting path=\"serverSide_blockNotificationsFromStrangers\">\n            {{ $t('settings.notification_setting_block_from_strangers') }}\n          </BooleanSetting>\n        </li>\n        <li class=\"select-multiple\">\n          <span class=\"label\">{{ $t('settings.notification_visibility') }}</span>\n          <ul class=\"option-list\">\n            <li>\n              <BooleanSetting path=\"notificationVisibility.likes\">\n                {{ $t('settings.notification_visibility_likes') }}\n              </BooleanSetting>\n            </li>\n            <li>\n              <BooleanSetting path=\"notificationVisibility.repeats\">\n                {{ $t('settings.notification_visibility_repeats') }}\n              </BooleanSetting>\n            </li>\n            <li>\n              <BooleanSetting path=\"notificationVisibility.follows\">\n                {{ $t('settings.notification_visibility_follows') }}\n              </BooleanSetting>\n            </li>\n            <li>\n              <BooleanSetting path=\"notificationVisibility.mentions\">\n                {{ $t('settings.notification_visibility_mentions') }}\n              </BooleanSetting>\n            </li>\n            <li>\n              <BooleanSetting path=\"notificationVisibility.moves\">\n                {{ $t('settings.notification_visibility_moves') }}\n              </BooleanSetting>\n            </li>\n            <li>\n              <BooleanSetting path=\"notificationVisibility.emojiReactions\">\n                {{ $t('settings.notification_visibility_emoji_reactions') }}\n              </BooleanSetting>\n            </li>\n            <li>\n              <BooleanSetting path=\"notificationVisibility.polls\">\n                {{ $t('settings.notification_visibility_polls') }}\n              </BooleanSetting>\n            </li>\n          </ul>\n        </li>\n      </ul>\n    </div>\n\n    <div\n      v-if=\"expertLevel > 0\"\n      class=\"setting-item\"\n    >\n      <h2>{{ $t('settings.notification_setting_privacy') }}</h2>\n      <ul class=\"setting-list\">\n        <li>\n          <BooleanSetting\n            path=\"webPushNotifications\"\n            expert=\"1\"\n          >\n            {{ $t('settings.enable_web_push_notifications') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting\n            path=\"serverSide_webPushHideContents\"\n            expert=\"1\"\n          >\n            {{ $t('settings.notification_setting_hide_notification_contents') }}\n          </BooleanSetting>\n        </li>\n      </ul>\n    </div>\n    <div class=\"setting-item\">\n      <p>{{ $t('settings.notification_mutes') }}</p>\n      <p>{{ $t('settings.notification_blocks') }}</p>\n    </div>\n  </div>\n</template>\n\n<script src=\"./notifications_tab.js\"></script>\n<!-- <style lang=\"scss\" src=\"./profile.scss\"></style> -->\n","<template>\n  <label\n    v-if=\"matchesExpertLevel\"\n    class=\"BooleanSetting\"\n  >\n    <Checkbox\n      :model-value=\"state\"\n      :disabled=\"disabled\"\n      @update:modelValue=\"update\"\n    >\n      <span\n        v-if=\"!!$slots.default\"\n        class=\"label\"\n      >\n        <slot />\n      </span>\n      {{ ' ' }}\n      <ModifiedIndicator :changed=\"isChanged\" /><ServerSideIndicator :server-side=\"isServerSide\" /> </Checkbox>\n  </label>\n</template>\n\n<script src=\"./boolean_setting.js\"></script>\n","<template>\n  <span\n    v-if=\"changed\"\n    class=\"ModifiedIndicator\"\n  >\n    <Popover\n      trigger=\"hover\"\n    >\n      <template v-slot:trigger>\n        &nbsp;\n        <FAIcon\n          icon=\"wrench\"\n          :aria-label=\"$t('settings.setting_changed')\"\n        />\n      </template>\n      <template v-slot:content>\n        <div class=\"modified-tooltip\">\n          {{ $t('settings.setting_changed') }}\n        </div>\n      </template>\n    </Popover>\n  </span>\n</template>\n\n<script>\nimport Popover from 'src/components/popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faWrench } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faWrench\n)\n\nexport default {\n  components: { Popover },\n  props: ['changed']\n}\n</script>\n\n<style lang=\"scss\">\n.ModifiedIndicator {\n  display: inline-block;\n  position: relative;\n\n  .modified-tooltip {\n    margin: 0.5em 1em;\n    min-width: 10em;\n    text-align: center;\n  }\n}\n</style>\n","import { render } from \"./modified_indicator.vue?vue&type=template&id=be0aa34e\"\nimport script from \"./modified_indicator.vue?vue&type=script&lang=js\"\nexport * from \"./modified_indicator.vue?vue&type=script&lang=js\"\n\nimport \"./modified_indicator.vue?vue&type=style&index=0&id=be0aa34e&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <span\n    v-if=\"serverSide\"\n    class=\"ServerSideIndicator\"\n  >\n    <Popover\n      trigger=\"hover\"\n    >\n      <template v-slot:trigger>\n        &nbsp;\n        <FAIcon\n          icon=\"server\"\n          :aria-label=\"$t('settings.setting_server_side')\"\n        />\n      </template>\n      <template v-slot:content>\n        <div class=\"serverside-tooltip\">\n          {{ $t('settings.setting_server_side') }}\n        </div>\n      </template>\n    </Popover>\n  </span>\n</template>\n\n<script>\nimport Popover from 'src/components/popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faServer } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faServer\n)\n\nexport default {\n  components: { Popover },\n  props: ['serverSide']\n}\n</script>\n\n<style lang=\"scss\">\n.ServerSideIndicator {\n  display: inline-block;\n  position: relative;\n\n  .serverside-tooltip {\n    margin: 0.5em 1em;\n    min-width: 10em;\n    text-align: center;\n  }\n}\n</style>\n","import { render } from \"./server_side_indicator.vue?vue&type=template&id=35bf7f91\"\nimport script from \"./server_side_indicator.vue?vue&type=script&lang=js\"\nexport * from \"./server_side_indicator.vue?vue&type=script&lang=js\"\n\nimport \"./server_side_indicator.vue?vue&type=style&index=0&id=35bf7f91&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { get, set } from 'lodash'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\nimport ModifiedIndicator from './modified_indicator.vue'\nimport ServerSideIndicator from './server_side_indicator.vue'\nexport default {\n  components: {\n    Checkbox,\n    ModifiedIndicator,\n    ServerSideIndicator\n  },\n  props: [\n    'path',\n    'disabled',\n    'expert'\n  ],\n  computed: {\n    pathDefault () {\n      const [firstSegment, ...rest] = this.path.split('.')\n      return [firstSegment + 'DefaultValue', ...rest].join('.')\n    },\n    state () {\n      const value = get(this.$parent, this.path)\n      if (value === undefined) {\n        return this.defaultState\n      } else {\n        return value\n      }\n    },\n    defaultState () {\n      return get(this.$parent, this.pathDefault)\n    },\n    isServerSide () {\n      return this.path.startsWith('serverSide_')\n    },\n    isChanged () {\n      return !this.path.startsWith('serverSide_') && this.state !== this.defaultState\n    },\n    matchesExpertLevel () {\n      return (this.expert || 0) <= this.$parent.expertLevel\n    }\n  },\n  methods: {\n    update (e) {\n      set(this.$parent, this.path, e)\n    }\n  }\n}\n","import { render } from \"./boolean_setting.vue?vue&type=template&id=12d9142b\"\nimport script from \"./boolean_setting.js?vue&type=script&lang=js\"\nexport * from \"./boolean_setting.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defaultState as configDefaultState } from 'src/modules/config.js'\nimport { defaultState as serverSideConfigDefaultState } from 'src/modules/serverSideConfig.js'\n\nconst SharedComputedObject = () => ({\n  user () {\n    return this.$store.state.users.currentUser\n  },\n  // Getting values for default properties\n  ...Object.keys(configDefaultState)\n    .map(key => [\n      key + 'DefaultValue',\n      function () {\n        return this.$store.getters.defaultConfig[key]\n      }\n    ])\n    .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {}),\n  // Generating computed values for vuex properties\n  ...Object.keys(configDefaultState)\n    .map(key => [key, {\n      get () { return this.$store.getters.mergedConfig[key] },\n      set (value) {\n        this.$store.dispatch('setOption', { name: key, value })\n      }\n    }])\n    .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {}),\n  ...Object.keys(serverSideConfigDefaultState)\n    .map(key => ['serverSide_' + key, {\n      get () { return this.$store.state.serverSideConfig[key] },\n      set (value) {\n        this.$store.dispatch('setServerSideOption', { name: key, value })\n      }\n    }])\n    .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {}),\n  // Special cases (need to transform values or perform actions first)\n  useStreamingApi: {\n    get () { return this.$store.getters.mergedConfig.useStreamingApi },\n    set (value) {\n      const promise = value\n        ? this.$store.dispatch('enableMastoSockets')\n        : this.$store.dispatch('disableMastoSockets')\n\n      promise.then(() => {\n        this.$store.dispatch('setOption', { name: 'useStreamingApi', value })\n      }).catch((e) => {\n        console.error('Failed starting MastoAPI Streaming socket', e)\n        this.$store.dispatch('disableMastoSockets')\n        this.$store.dispatch('setOption', { name: 'useStreamingApi', value: false })\n      })\n    }\n  }\n})\n\nexport default SharedComputedObject\n","import BooleanSetting from '../helpers/boolean_setting.vue'\nimport SharedComputedObject from '../helpers/shared_computed_object.js'\n\nconst NotificationsTab = {\n  data () {\n    return {\n      activeTab: 'profile',\n      notificationSettings: this.$store.state.users.currentUser.notification_settings,\n      newDomainToMute: ''\n    }\n  },\n  components: {\n    BooleanSetting\n  },\n  computed: {\n    user () {\n      return this.$store.state.users.currentUser\n    },\n    ...SharedComputedObject()\n  },\n  methods: {\n    updateNotificationSettings () {\n      this.$store.state.api.backendInteractor\n        .updateNotificationSettings({ settings: this.notificationSettings })\n    }\n  }\n}\n\nexport default NotificationsTab\n","import { render } from \"./notifications_tab.vue?vue&type=template&id=e4b944ee\"\nimport script from \"./notifications_tab.js?vue&type=script&lang=js\"\nexport * from \"./notifications_tab.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div :label=\"$t('settings.filtering')\">\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.posts') }}</h2>\n      <ul class=\"setting-list\">\n        <li>\n          <BooleanSetting path=\"hideFilteredStatuses\">\n            {{ $t('settings.hide_filtered_statuses') }}\n          </BooleanSetting>\n          <ul\n            class=\"setting-list suboptions\"\n            :class=\"[{disabled: !streaming}]\"\n          >\n            <li>\n              <BooleanSetting\n                :disabled=\"hideFilteredStatuses\"\n                path=\"hideWordFilteredPosts\"\n              >\n                {{ $t('settings.hide_wordfiltered_statuses') }}\n              </BooleanSetting>\n            </li>\n            <li>\n              <BooleanSetting\n                v-if=\"user\"\n                :disabled=\"hideFilteredStatuses\"\n                path=\"hideMutedThreads\"\n              >\n                {{ $t('settings.hide_muted_threads') }}\n              </BooleanSetting>\n            </li>\n            <li>\n              <BooleanSetting\n                v-if=\"user\"\n                :disabled=\"hideFilteredStatuses\"\n                path=\"hideMutedPosts\"\n              >\n                {{ $t('settings.hide_muted_posts') }}\n              </BooleanSetting>\n            </li>\n          </ul>\n        </li>\n        <li>\n          <BooleanSetting path=\"muteBotStatuses\">\n            {{ $t('settings.mute_bot_posts') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"hidePostStats\">\n            {{ $t('settings.hide_post_stats') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"hideBotIndication\">\n            {{ $t('settings.hide_bot_indication') }}\n          </BooleanSetting>\n        </li>\n        <ChoiceSetting\n          v-if=\"user\"\n          id=\"replyVisibility\"\n          path=\"replyVisibility\"\n          :options=\"replyVisibilityOptions\"\n        >\n          {{ $t('settings.replies_in_timeline') }}\n        </ChoiceSetting>\n        <li>\n          <h3>{{ $t('settings.wordfilter') }}</h3>\n          <textarea\n            id=\"muteWords\"\n            v-model=\"muteWordsString\"\n            class=\"resize-height\"\n          />\n          <div>{{ $t('settings.filtering_explanation') }}</div>\n        </li>\n        <h3>{{ $t('settings.attachments') }}</h3>\n        <li>\n          <IntegerSetting\n            path=\"maxThumbnails\"\n            expert=\"1\"\n            :min=\"0\"\n          >\n            {{ $t('settings.max_thumbnails') }}\n          </IntegerSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"hideAttachments\">\n            {{ $t('settings.hide_attachments_in_tl') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"hideAttachmentsInConv\">\n            {{ $t('settings.hide_attachments_in_convo') }}\n          </BooleanSetting>\n        </li>\n      </ul>\n    </div>\n    <div\n      v-if=\"expertLevel > 0\"\n      class=\"setting-item\"\n    >\n      <h2>{{ $t('settings.user_profiles') }}</h2>\n      <ul class=\"setting-list\">\n        <li>\n          <BooleanSetting path=\"hideUserStats\">\n            {{ $t('settings.hide_user_stats') }}\n          </BooleanSetting>\n        </li>\n      </ul>\n    </div>\n  </div>\n</template>\n<script src=\"./filtering_tab.js\"></script>\n","<template>\n  <label\n    v-if=\"matchesExpertLevel\"\n    class=\"ChoiceSetting\"\n  >\n    <slot />\n    {{ ' ' }}\n    <Select\n      :model-value=\"state\"\n      :disabled=\"disabled\"\n      @update:modelValue=\"update\"\n    >\n      <option\n        v-for=\"option in options\"\n        :key=\"option.key\"\n        :value=\"option.value\"\n      >\n        {{ option.label }}\n        {{ option.value === defaultState ? $t('settings.instance_default_simple') : '' }}\n      </option>\n    </Select>\n    <ModifiedIndicator :changed=\"isChanged\" />\n    <ServerSideIndicator :server-side=\"isServerSide\" />\n  </label>\n</template>\n\n<script src=\"./choice_setting.js\"></script>\n\n<style lang=\"scss\">\n.ChoiceSetting {\n}\n</style>\n","import { get, set } from 'lodash'\nimport Select from 'src/components/select/select.vue'\nimport ModifiedIndicator from './modified_indicator.vue'\nimport ServerSideIndicator from './server_side_indicator.vue'\nexport default {\n  components: {\n    Select,\n    ModifiedIndicator,\n    ServerSideIndicator\n  },\n  props: [\n    'path',\n    'disabled',\n    'options',\n    'expert'\n  ],\n  computed: {\n    pathDefault () {\n      const [firstSegment, ...rest] = this.path.split('.')\n      return [firstSegment + 'DefaultValue', ...rest].join('.')\n    },\n    state () {\n      const value = get(this.$parent, this.path)\n      if (value === undefined) {\n        return this.defaultState\n      } else {\n        return value\n      }\n    },\n    defaultState () {\n      return get(this.$parent, this.pathDefault)\n    },\n    isServerSide () {\n      return this.path.startsWith('serverSide_')\n    },\n    isChanged () {\n      return !this.path.startsWith('serverSide_') && this.state !== this.defaultState\n    },\n    matchesExpertLevel () {\n      return (this.expert || 0) <= this.$parent.expertLevel\n    }\n  },\n  methods: {\n    update (e) {\n      set(this.$parent, this.path, e)\n    }\n  }\n}\n","import { render } from \"./choice_setting.vue?vue&type=template&id=36cf5d2e\"\nimport script from \"./choice_setting.js?vue&type=script&lang=js\"\nexport * from \"./choice_setting.js?vue&type=script&lang=js\"\n\nimport \"./choice_setting.vue?vue&type=style&index=0&id=36cf5d2e&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <span\n    v-if=\"matchesExpertLevel\"\n    class=\"IntegerSetting\"\n  >\n    <label :for=\"path\">\n      <slot />\n    </label>\n    <input\n      :id=\"path\"\n      class=\"number-input\"\n      type=\"number\"\n      step=\"1\"\n      :disabled=\"disabled\"\n      :min=\"min || 0\"\n      :value=\"state\"\n      @change=\"update\"\n    >\n    {{ ' ' }}\n    <ModifiedIndicator :changed=\"isChanged\" />\n  </span>\n</template>\n\n<script src=\"./integer_setting.js\"></script>\n","import { get, set } from 'lodash'\nimport ModifiedIndicator from './modified_indicator.vue'\nexport default {\n  components: {\n    ModifiedIndicator\n  },\n  props: {\n    path: String,\n    disabled: Boolean,\n    min: Number,\n    expert: [Number, String]\n  },\n  computed: {\n    pathDefault () {\n      const [firstSegment, ...rest] = this.path.split('.')\n      return [firstSegment + 'DefaultValue', ...rest].join('.')\n    },\n    state () {\n      const value = get(this.$parent, this.path)\n      if (value === undefined) {\n        return this.defaultState\n      } else {\n        return value\n      }\n    },\n    defaultState () {\n      return get(this.$parent, this.pathDefault)\n    },\n    isChanged () {\n      return this.state !== this.defaultState\n    },\n    matchesExpertLevel () {\n      return (this.expert || 0) <= this.$parent.expertLevel\n    }\n  },\n  methods: {\n    update (e) {\n      set(this.$parent, this.path, parseInt(e.target.value))\n    }\n  }\n}\n","import { render } from \"./integer_setting.vue?vue&type=template&id=481281d5\"\nimport script from \"./integer_setting.js?vue&type=script&lang=js\"\nexport * from \"./integer_setting.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { filter, trim } from 'lodash'\nimport BooleanSetting from '../helpers/boolean_setting.vue'\nimport ChoiceSetting from '../helpers/choice_setting.vue'\nimport IntegerSetting from '../helpers/integer_setting.vue'\n\nimport SharedComputedObject from '../helpers/shared_computed_object.js'\n\nconst FilteringTab = {\n  data () {\n    return {\n      muteWordsStringLocal: this.$store.getters.mergedConfig.muteWords.join('\\n'),\n      replyVisibilityOptions: ['all', 'following', 'self'].map(mode => ({\n        key: mode,\n        value: mode,\n        label: this.$t(`settings.reply_visibility_${mode}`)\n      }))\n    }\n  },\n  components: {\n    BooleanSetting,\n    ChoiceSetting,\n    IntegerSetting\n  },\n  computed: {\n    ...SharedComputedObject(),\n    muteWordsString: {\n      get () {\n        return this.muteWordsStringLocal\n      },\n      set (value) {\n        this.muteWordsStringLocal = value\n        this.$store.dispatch('setOption', {\n          name: 'muteWords',\n          value: filter(value.split('\\n'), (word) => trim(word).length > 0)\n        })\n      }\n    }\n  },\n  // Updating nested properties\n  watch: {\n    notificationVisibility: {\n      handler (value) {\n        this.$store.dispatch('setOption', {\n          name: 'notificationVisibility',\n          value: this.$store.getters.mergedConfig.notificationVisibility\n        })\n      },\n      deep: true\n    },\n    replyVisibility () {\n      this.$store.dispatch('queueFlushAll')\n    }\n  }\n}\n\nexport default FilteringTab\n","import { render } from \"./filtering_tab.vue?vue&type=template&id=19e8a013\"\nimport script from \"./filtering_tab.js?vue&type=script&lang=js\"\nexport * from \"./filtering_tab.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div :label=\"$t('settings.security_tab')\">\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.change_email') }}</h2>\n      <div>\n        <p>{{ $t('settings.new_email') }}</p>\n        <input\n          v-model=\"newEmail\"\n          type=\"email\"\n          autocomplete=\"email\"\n        >\n      </div>\n      <div>\n        <p>{{ $t('settings.current_password') }}</p>\n        <input\n          v-model=\"changeEmailPassword\"\n          type=\"password\"\n          autocomplete=\"current-password\"\n        >\n      </div>\n      <button\n        class=\"btn button-default\"\n        @click=\"changeEmail\"\n      >\n        {{ $t('settings.save') }}\n      </button>\n      <p v-if=\"changedEmail\">\n        {{ $t('settings.changed_email') }}\n      </p>\n      <template v-if=\"changeEmailError !== false\">\n        <p>{{ $t('settings.change_email_error') }}</p>\n        <p>{{ changeEmailError }}</p>\n      </template>\n    </div>\n\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.change_password') }}</h2>\n      <div>\n        <p>{{ $t('settings.current_password') }}</p>\n        <input\n          v-model=\"changePasswordInputs[0]\"\n          type=\"password\"\n        >\n      </div>\n      <div>\n        <p>{{ $t('settings.new_password') }}</p>\n        <input\n          v-model=\"changePasswordInputs[1]\"\n          type=\"password\"\n        >\n      </div>\n      <div>\n        <p>{{ $t('settings.confirm_new_password') }}</p>\n        <input\n          v-model=\"changePasswordInputs[2]\"\n          type=\"password\"\n        >\n      </div>\n      <button\n        class=\"btn button-default\"\n        @click=\"changePassword\"\n      >\n        {{ $t('settings.save') }}\n      </button>\n      <p v-if=\"changedPassword\">\n        {{ $t('settings.changed_password') }}\n      </p>\n      <p v-else-if=\"changePasswordError !== false\">\n        {{ $t('settings.change_password_error') }}\n      </p>\n      <p v-if=\"changePasswordError\">\n        {{ changePasswordError }}\n      </p>\n    </div>\n\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.oauth_tokens') }}</h2>\n      <table class=\"oauth-tokens\">\n        <thead>\n          <tr>\n            <th>{{ $t('settings.app_name') }}</th>\n            <th>{{ $t('settings.valid_until') }}</th>\n            <th />\n          </tr>\n        </thead>\n        <tbody>\n          <tr\n            v-for=\"oauthToken in oauthTokens\"\n            :key=\"oauthToken.id\"\n          >\n            <td>{{ oauthToken.appName }}</td>\n            <td>{{ oauthToken.validUntil }}</td>\n            <td class=\"actions\">\n              <button\n                class=\"btn button-default\"\n                @click=\"revokeToken(oauthToken.id)\"\n              >\n                {{ $t('settings.revoke_token') }}\n              </button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </div>\n    <mfa />\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.delete_account') }}</h2>\n      <p v-if=\"!deletingAccount\">\n        {{ $t('settings.delete_account_description') }}\n      </p>\n      <div v-if=\"deletingAccount\">\n        <p>{{ $t('settings.delete_account_instructions') }}</p>\n        <p>{{ $t('login.password') }}</p>\n        <input\n          v-model=\"deleteAccountConfirmPasswordInput\"\n          type=\"password\"\n        >\n        <button\n          class=\"btn button-default\"\n          @click=\"deleteAccount\"\n        >\n          {{ $t('settings.delete_account') }}\n        </button>\n      </div>\n      <p v-if=\"deleteAccountError !== false\">\n        {{ $t('settings.delete_account_error') }}\n      </p>\n      <p v-if=\"deleteAccountError\">\n        {{ deleteAccountError }}\n      </p>\n      <button\n        v-if=\"!deletingAccount\"\n        class=\"btn button-default\"\n        @click=\"confirmDelete\"\n      >\n        {{ $t('settings.save') }}\n      </button>\n    </div>\n  </div>\n</template>\n\n<script src=\"./security_tab.js\"></script>\n<!-- <style lang=\"scss\" src=\"./profile.scss\"></style> -->\n","<template>\n  <div\n    v-if=\"readyInit && settings.available\"\n    class=\"setting-item mfa-settings\"\n  >\n    <div class=\"mfa-heading\">\n      <h2>{{ $t('settings.mfa.title') }}</h2>\n    </div>\n\n    <div>\n      <div\n        v-if=\"!setupInProgress\"\n        class=\"setting-item\"\n      >\n        <!-- Enabled methods -->\n        <h3>{{ $t('settings.mfa.authentication_methods') }}</h3>\n        <totp-item\n          :settings=\"settings\"\n          @deactivate=\"fetchSettings\"\n          @activate=\"activateOTP\"\n        />\n        <br>\n\n        <div v-if=\"settings.enabled\">\n          <!-- backup codes block-->\n          <recovery-codes\n            v-if=\"!confirmNewBackupCodes\"\n            :backup-codes=\"backupCodes\"\n          />\n          <button\n            v-if=\"!confirmNewBackupCodes\"\n            class=\"btn button-default\"\n            @click=\"getBackupCodes\"\n          >\n            {{ $t('settings.mfa.generate_new_recovery_codes') }}\n          </button>\n\n          <div v-if=\"confirmNewBackupCodes\">\n            <confirm\n              :disabled=\"backupCodes.inProgress\"\n              @confirm=\"confirmBackupCodes\"\n              @cancel=\"cancelBackupCodes\"\n            >\n              <p class=\"warning\">\n                {{ $t('settings.mfa.warning_of_generate_new_codes') }}\n              </p>\n            </confirm>\n          </div>\n        </div>\n      </div>\n\n      <div v-if=\"setupInProgress\">\n        <!-- setup block-->\n\n        <h3>{{ $t('settings.mfa.setup_otp') }}</h3>\n\n        <recovery-codes\n          v-if=\"!setupOTPInProgress\"\n          :backup-codes=\"backupCodes\"\n        />\n\n        <button\n          v-if=\"canSetupOTP\"\n          class=\"btn button-default\"\n          @click=\"cancelSetup\"\n        >\n          {{ $t('general.cancel') }}\n        </button>\n\n        <button\n          v-if=\"canSetupOTP\"\n          class=\"btn button-default\"\n          @click=\"setupOTP\"\n        >\n          {{ $t('settings.mfa.setup_otp') }}\n        </button>\n\n        <template v-if=\"setupOTPInProgress\">\n          <i v-if=\"prepareOTP\">{{ $t('settings.mfa.wait_pre_setup_otp') }}</i>\n\n          <div v-if=\"confirmOTP\">\n            <div class=\"setup-otp\">\n              <div class=\"qr-code\">\n                <h4>{{ $t('settings.mfa.scan.title') }}</h4>\n                <p>{{ $t('settings.mfa.scan.desc') }}</p>\n                <qrcode\n                  :value=\"otpSettings.provisioning_uri\"\n                  :options=\"{ width: 200 }\"\n                />\n                <p>\n                  {{ $t('settings.mfa.scan.secret_code') }}:\n                  {{ otpSettings.key }}\n                </p>\n              </div>\n\n              <div class=\"verify\">\n                <h4>{{ $t('general.verify') }}</h4>\n                <p>{{ $t('settings.mfa.verify.desc') }}</p>\n                <input\n                  v-model=\"otpConfirmToken\"\n                  type=\"text\"\n                >\n\n                <p>{{ $t('settings.enter_current_password_to_confirm') }}:</p>\n                <input\n                  v-model=\"currentPassword\"\n                  type=\"password\"\n                >\n                <div class=\"confirm-otp-actions\">\n                  <button\n                    class=\"btn button-default\"\n                    @click=\"doConfirmOTP\"\n                  >\n                    {{ $t('settings.mfa.confirm_and_enable') }}\n                  </button>\n                  <button\n                    class=\"btn button-default\"\n                    @click=\"cancelSetup\"\n                  >\n                    {{ $t('general.cancel') }}\n                  </button>\n                </div>\n                <div\n                  v-if=\"error\"\n                  class=\"alert error\"\n                >\n                  {{ error }}\n                </div>\n              </div>\n            </div>\n          </div>\n        </template>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./mfa.js\"></script>\n<style lang=\"scss\">\n@import '../../../../_variables.scss';\n.mfa-settings {\n  .mfa-heading, .method-item {\n    display: flex;\n    flex-wrap: wrap;\n    justify-content: space-between;\n    align-items: baseline;\n  }\n\n  .warning {\n    color: $fallback--cOrange;\n    color: var(--cOrange, $fallback--cOrange);\n  }\n\n  .setup-otp {\n    display: flex;\n    justify-content: center;\n    flex-wrap: wrap;\n    .qr-code {\n      flex: 1;\n      padding-right: 10px;\n    }\n    .verify { flex: 1; }\n    .error { margin: 4px 0 0 0; }\n    .confirm-otp-actions {\n      button {\n        width: 15em;\n        margin-top: 5px;\n      }\n\n    }\n  }\n}\n</style>\n","<template>\n  <div class=\"mfa-backup-codes\">\n    <h4 v-if=\"displayTitle\">\n      {{ $t('settings.mfa.recovery_codes') }}\n    </h4>\n    <i v-if=\"inProgress\">{{ $t('settings.mfa.waiting_a_recovery_codes') }}</i>\n    <template v-if=\"ready\">\n      <p class=\"alert warning\">\n        {{ $t('settings.mfa.recovery_codes_warning') }}\n      </p>\n      <ul class=\"backup-codes\">\n        <li\n          v-for=\"code in backupCodes.codes\"\n          :key=\"code\"\n        >\n          {{ code }}\n        </li>\n      </ul>\n    </template>\n  </div>\n</template>\n<script src=\"./mfa_backup_codes.js\"></script>\n<style lang=\"scss\">\n@import '../../../../_variables.scss';\n\n.mfa-backup-codes {\n  .warning {\n    color: $fallback--cOrange;\n    color: var(--cOrange, $fallback--cOrange);\n  }\n  .backup-codes {\n    font-family: var(--postCodeFont, monospace);\n  }\n}\n</style>\n","export default {\n  props: {\n    backupCodes: {\n      type: Object,\n      default: () => ({\n        inProgress: false,\n        codes: []\n      })\n    }\n  },\n  data: () => ({}),\n  computed: {\n    inProgress () { return this.backupCodes.inProgress },\n    ready () { return this.backupCodes.codes.length > 0 },\n    displayTitle () { return this.inProgress || this.ready }\n  }\n}\n","import { render } from \"./mfa_backup_codes.vue?vue&type=template&id=1284fe74\"\nimport script from \"./mfa_backup_codes.js?vue&type=script&lang=js\"\nexport * from \"./mfa_backup_codes.js?vue&type=script&lang=js\"\n\nimport \"./mfa_backup_codes.vue?vue&type=style&index=0&id=1284fe74&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div>\n    <div class=\"method-item\">\n      <strong>{{ $t('settings.mfa.otp') }}</strong>\n      <button\n        v-if=\"!isActivated\"\n        class=\"btn button-default\"\n        @click=\"doActivate\"\n      >\n        {{ $t('general.enable') }}\n      </button>\n\n      <button\n        v-if=\"isActivated\"\n        class=\"btn button-default\"\n        :disabled=\"deactivate\"\n        @click=\"doDeactivate\"\n      >\n        {{ $t('general.disable') }}\n      </button>\n    </div>\n\n    <confirm\n      v-if=\"deactivate\"\n      :disabled=\"inProgress\"\n      @confirm=\"confirmDeactivate\"\n      @cancel=\"cancelDeactivate\"\n    >\n      {{ $t('settings.enter_current_password_to_confirm') }}:\n      <input\n        v-model=\"currentPassword\"\n        type=\"password\"\n      >\n    </confirm>\n    <div\n      v-if=\"error\"\n      class=\"alert error\"\n    >\n      {{ error }}\n    </div>\n  </div>\n</template>\n<script src=\"./mfa_totp.js\"></script>\n","const Confirm = {\n  props: ['disabled'],\n  data: () => ({}),\n  methods: {\n    confirm () { this.$emit('confirm') },\n    cancel () { this.$emit('cancel') }\n  }\n}\nexport default Confirm\n","import { render } from \"./confirm.vue?vue&type=template&id=232a09eb\"\nimport script from \"./confirm.js?vue&type=script&lang=js\"\nexport * from \"./confirm.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div>\n    <slot />\n    <button\n      class=\"btn button-default\"\n      :disabled=\"disabled\"\n      @click=\"confirm\"\n    >\n      {{ $t('general.confirm') }}\n    </button>\n    <button\n      class=\"btn button-default\"\n      :disabled=\"disabled\"\n      @click=\"cancel\"\n    >\n      {{ $t('general.cancel') }}\n    </button>\n  </div>\n</template>\n\n<script src=\"./confirm.js\">\n</script>\n","import Confirm from './confirm.vue'\nimport { mapState } from 'vuex'\n\nexport default {\n  props: ['settings'],\n  data: () => ({\n    error: false,\n    currentPassword: '',\n    deactivate: false,\n    inProgress: false // progress peform request to disable otp method\n  }),\n  components: {\n    'confirm': Confirm\n  },\n  computed: {\n    isActivated () {\n      return this.settings.totp\n    },\n    ...mapState({\n      backendInteractor: (state) => state.api.backendInteractor\n    })\n  },\n  methods: {\n    doActivate () {\n      this.$emit('activate')\n    },\n    cancelDeactivate () { this.deactivate = false },\n    doDeactivate () {\n      this.error = null\n      this.deactivate = true\n    },\n    confirmDeactivate () { // confirm deactivate TOTP method\n      this.error = null\n      this.inProgress = true\n      this.backendInteractor.mfaDisableOTP({\n        password: this.currentPassword\n      })\n        .then((res) => {\n          this.inProgress = false\n          if (res.error) {\n            this.error = res.error\n            return\n          }\n          this.deactivate = false\n          this.$emit('deactivate')\n        })\n    }\n  }\n}\n","import RecoveryCodes from './mfa_backup_codes.vue'\nimport TOTP from './mfa_totp.vue'\nimport Confirm from './confirm.vue'\nimport VueQrcode from '@chenfengyuan/vue-qrcode'\nimport { mapState } from 'vuex'\n\nconst Mfa = {\n  data: () => ({\n    settings: { // current settings of MFA\n      available: false,\n      enabled: false,\n      totp: false\n    },\n    setupState: { // setup mfa\n      state: '', // state of setup. '' -> 'getBackupCodes' -> 'setupOTP' -> 'complete'\n      setupOTPState: '' // state of setup otp. '' -> 'prepare' -> 'confirm' -> 'complete'\n    },\n    backupCodes: {\n      getNewCodes: false,\n      inProgress: false, //  progress of fetch codes\n      codes: []\n    },\n    otpSettings: { // pre-setup setting of OTP. secret key, qrcode url.\n      provisioning_uri: '',\n      key: ''\n    },\n    currentPassword: null,\n    otpConfirmToken: null,\n    error: null,\n    readyInit: false\n  }),\n  components: {\n    'recovery-codes': RecoveryCodes,\n    'totp-item': TOTP,\n    'qrcode': VueQrcode,\n    'confirm': Confirm\n  },\n  computed: {\n    canSetupOTP () {\n      return (\n        (this.setupInProgress && this.backupCodesPrepared) ||\n          this.settings.enabled\n      ) && !this.settings.totp && !this.setupOTPInProgress\n    },\n    setupInProgress () {\n      return this.setupState.state !== '' && this.setupState.state !== 'complete'\n    },\n    setupOTPInProgress () {\n      return this.setupState.state === 'setupOTP' && !this.completedOTP\n    },\n    prepareOTP () {\n      return this.setupState.setupOTPState === 'prepare'\n    },\n    confirmOTP () {\n      return this.setupState.setupOTPState === 'confirm'\n    },\n    completedOTP () {\n      return this.setupState.setupOTPState === 'completed'\n    },\n    backupCodesPrepared () {\n      return !this.backupCodes.inProgress && this.backupCodes.codes.length > 0\n    },\n    confirmNewBackupCodes () {\n      return this.backupCodes.getNewCodes\n    },\n    ...mapState({\n      backendInteractor: (state) => state.api.backendInteractor\n    })\n  },\n\n  methods: {\n    activateOTP () {\n      if (!this.settings.enabled) {\n        this.setupState.state = 'getBackupcodes'\n        this.fetchBackupCodes()\n      }\n    },\n    fetchBackupCodes () {\n      this.backupCodes.inProgress = true\n      this.backupCodes.codes = []\n\n      return this.backendInteractor.generateMfaBackupCodes()\n        .then((res) => {\n          this.backupCodes.codes = res.codes\n          this.backupCodes.inProgress = false\n        })\n    },\n    getBackupCodes () { // get a new backup codes\n      this.backupCodes.getNewCodes = true\n    },\n    confirmBackupCodes () { // confirm getting new backup codes\n      this.fetchBackupCodes().then((res) => {\n        this.backupCodes.getNewCodes = false\n      })\n    },\n    cancelBackupCodes () { // cancel confirm form of new backup codes\n      this.backupCodes.getNewCodes = false\n    },\n\n    // Setup OTP\n    setupOTP () { // prepare setup OTP\n      this.setupState.state = 'setupOTP'\n      this.setupState.setupOTPState = 'prepare'\n      this.backendInteractor.mfaSetupOTP()\n        .then((res) => {\n          this.otpSettings = res\n          this.setupState.setupOTPState = 'confirm'\n        })\n    },\n    doConfirmOTP () { // handler confirm enable OTP\n      this.error = null\n      this.backendInteractor.mfaConfirmOTP({\n        token: this.otpConfirmToken,\n        password: this.currentPassword\n      })\n        .then((res) => {\n          if (res.error) {\n            this.error = res.error\n            return\n          }\n          this.completeSetup()\n        })\n    },\n\n    completeSetup () {\n      this.setupState.setupOTPState = 'complete'\n      this.setupState.state = 'complete'\n      this.currentPassword = null\n      this.error = null\n      this.fetchSettings()\n    },\n    cancelSetup () { // cancel setup\n      this.setupState.setupOTPState = ''\n      this.setupState.state = ''\n      this.currentPassword = null\n      this.error = null\n    },\n    // end Setup OTP\n\n    // fetch settings from server\n    async fetchSettings () {\n      let result = await this.backendInteractor.settingsMFA()\n      if (result.error) return\n      this.settings = result.settings\n      this.settings.available = true\n      return result\n    }\n  },\n  mounted () {\n    this.fetchSettings().then(() => {\n      this.readyInit = true\n    })\n  }\n}\nexport default Mfa\n","import { render } from \"./mfa_totp.vue?vue&type=template&id=5466d3a1\"\nimport script from \"./mfa_totp.js?vue&type=script&lang=js\"\nexport * from \"./mfa_totp.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./mfa.vue?vue&type=template&id=c62074fa\"\nimport script from \"./mfa.js?vue&type=script&lang=js\"\nexport * from \"./mfa.js?vue&type=script&lang=js\"\n\nimport \"./mfa.vue?vue&type=style&index=0&id=c62074fa&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import ProgressButton from 'src/components/progress_button/progress_button.vue'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\nimport Mfa from './mfa.vue'\nimport localeService from 'src/services/locale/locale.service.js'\n\nconst SecurityTab = {\n  data () {\n    return {\n      newEmail: '',\n      changeEmailError: false,\n      changeEmailPassword: '',\n      changedEmail: false,\n      deletingAccount: false,\n      deleteAccountConfirmPasswordInput: '',\n      deleteAccountError: false,\n      changePasswordInputs: [ '', '', '' ],\n      changedPassword: false,\n      changePasswordError: false\n    }\n  },\n  created () {\n    this.$store.dispatch('fetchTokens')\n  },\n  components: {\n    ProgressButton,\n    Mfa,\n    Checkbox\n  },\n  computed: {\n    user () {\n      return this.$store.state.users.currentUser\n    },\n    pleromaBackend () {\n      return this.$store.state.instance.pleromaBackend\n    },\n    oauthTokens () {\n      return this.$store.state.oauthTokens.tokens.map(oauthToken => {\n        return {\n          id: oauthToken.id,\n          appName: oauthToken.app_name,\n          validUntil: new Date(oauthToken.valid_until).toLocaleDateString(localeService.internalToBrowserLocale(this.$i18n.locale))\n        }\n      })\n    }\n  },\n  methods: {\n    confirmDelete () {\n      this.deletingAccount = true\n    },\n    deleteAccount () {\n      this.$store.state.api.backendInteractor.deleteAccount({ password: this.deleteAccountConfirmPasswordInput })\n        .then((res) => {\n          if (res.status === 'success') {\n            this.$store.dispatch('logout')\n            this.$router.push({ name: 'root' })\n          } else {\n            this.deleteAccountError = res.error\n          }\n        })\n    },\n    changePassword () {\n      const params = {\n        password: this.changePasswordInputs[0],\n        newPassword: this.changePasswordInputs[1],\n        newPasswordConfirmation: this.changePasswordInputs[2]\n      }\n      this.$store.state.api.backendInteractor.changePassword(params)\n        .then((res) => {\n          if (res.status === 'success') {\n            this.changedPassword = true\n            this.changePasswordError = false\n            this.logout()\n          } else {\n            this.changedPassword = false\n            this.changePasswordError = res.error\n          }\n        })\n    },\n    changeEmail () {\n      const params = {\n        email: this.newEmail,\n        password: this.changeEmailPassword\n      }\n      this.$store.state.api.backendInteractor.changeEmail(params)\n        .then((res) => {\n          if (res.status === 'success') {\n            this.changedEmail = true\n            this.changeEmailError = false\n          } else {\n            this.changedEmail = false\n            this.changeEmailError = res.error\n          }\n        })\n    },\n    logout () {\n      this.$store.dispatch('logout')\n      this.$router.replace('/')\n    },\n    revokeToken (id) {\n      if (window.confirm(`${this.$i18n.t('settings.revoke_token')}?`)) {\n        this.$store.dispatch('revokeToken', id)\n      }\n    }\n  }\n}\n\nexport default SecurityTab\n","import { render } from \"./security_tab.vue?vue&type=template&id=dc4ec0ae\"\nimport script from \"./security_tab.js?vue&type=script&lang=js\"\nexport * from \"./security_tab.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"profile-tab\">\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.name_bio') }}</h2>\n      <p>{{ $t('settings.name') }}</p>\n      <EmojiInput\n        v-model=\"newName\"\n        enable-emoji-picker\n        :suggest=\"emojiSuggestor\"\n      >\n        <input\n          id=\"username\"\n          v-model=\"newName\"\n          class=\"name-changer\"\n        >\n      </EmojiInput>\n      <p>{{ $t('settings.bio') }}</p>\n      <EmojiInput\n        v-model=\"newBio\"\n        enable-emoji-picker\n        :suggest=\"emojiUserSuggestor\"\n      >\n        <textarea\n          v-model=\"newBio\"\n          class=\"bio resize-height\"\n        />\n      </EmojiInput>\n      <p v-if=\"role === 'admin' || role === 'moderator'\">\n        <Checkbox v-model=\"showRole\">\n          <template v-if=\"role === 'admin'\">\n            {{ $t('settings.show_admin_badge') }}\n          </template>\n          <template v-if=\"role === 'moderator'\">\n            {{ $t('settings.show_moderator_badge') }}\n          </template>\n        </Checkbox>\n      </p>\n      <div v-if=\"maxFields > 0\">\n        <p>{{ $t('settings.profile_fields.label') }}</p>\n        <div\n          v-for=\"(_, i) in newFields\"\n          :key=\"i\"\n          class=\"profile-fields\"\n        >\n          <EmojiInput\n            v-model=\"newFields[i].name\"\n            enable-emoji-picker\n            hide-emoji-button\n            :suggest=\"userSuggestor\"\n          >\n            <input\n              v-model=\"newFields[i].name\"\n              :placeholder=\"$t('settings.profile_fields.name')\"\n            >\n          </EmojiInput>\n          <EmojiInput\n            v-model=\"newFields[i].value\"\n            enable-emoji-picker\n            hide-emoji-button\n            :suggest=\"userSuggestor\"\n          >\n            <input\n              v-model=\"newFields[i].value\"\n              :placeholder=\"$t('settings.profile_fields.value')\"\n            >\n          </EmojiInput>\n          <button\n            class=\"delete-field button-unstyled -hover-highlight\"\n            @click=\"deleteField(i)\"\n          >\n            <!-- TODO something is wrong with v-show here -->\n            <FAIcon\n              v-if=\"newFields.length > 1\"\n              icon=\"times\"\n            />\n          </button>\n        </div>\n        <button\n          v-if=\"newFields.length < maxFields\"\n          class=\"add-field faint button-unstyled -hover-highlight\"\n          @click=\"addField\"\n        >\n          <FAIcon icon=\"plus\" />\n          {{ $t(\"settings.profile_fields.add_field\") }}\n        </button>\n      </div>\n      <p>\n        <Checkbox v-model=\"bot\">\n          {{ $t('settings.bot') }}\n        </Checkbox>\n      </p>\n      <p>\n        <interface-language-switcher\n          :prompt-text=\"$t('settings.email_language')\"\n          :language=\"emailLanguage\"\n          :set-language=\"val => emailLanguage = val\"\n        />\n      </p>\n      <button\n        :disabled=\"newName && newName.length === 0\"\n        class=\"btn button-default\"\n        @click=\"updateProfile\"\n      >\n        {{ $t('settings.save') }}\n      </button>\n    </div>\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.avatar') }}</h2>\n      <p class=\"visibility-notice\">\n        {{ $t('settings.avatar_size_instruction') }}\n      </p>\n      <div class=\"current-avatar-container\">\n        <img\n          :src=\"user.profile_image_url_original\"\n          class=\"current-avatar\"\n        >\n        <button\n          v-if=\"!isDefaultAvatar && pickAvatarBtnVisible\"\n          :title=\"$t('settings.reset_avatar')\"\n          @click=\"resetAvatar\"\n          class=\"button-unstyled reset-button\"\n        >\n          <FAIcon\n            icon=\"times\"\n            type=\"button\"\n          />\n        </button>\n      </div>\n      <p>{{ $t('settings.set_new_avatar') }}</p>\n      <button\n        v-show=\"pickAvatarBtnVisible\"\n        id=\"pick-avatar\"\n        class=\"button-default btn\"\n        type=\"button\"\n      >\n        {{ $t('settings.upload_a_photo') }}\n      </button>\n      <image-cropper\n        trigger=\"#pick-avatar\"\n        :submit-handler=\"submitAvatar\"\n        @open=\"pickAvatarBtnVisible=false\"\n        @close=\"pickAvatarBtnVisible=true\"\n      />\n    </div>\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.profile_banner') }}</h2>\n      <div class=\"banner-background-preview\">\n        <img :src=\"user.cover_photo\">\n        <button\n          v-if=\"!isDefaultBanner\"\n          class=\"button-unstyled reset-button\"\n          :title=\"$t('settings.reset_profile_banner')\"\n          @click=\"resetBanner\"\n        >\n          <FAIcon\n            icon=\"times\"\n            type=\"button\"\n          />\n        </button>\n      </div>\n      <p>{{ $t('settings.set_new_profile_banner') }}</p>\n      <img\n        v-if=\"bannerPreview\"\n        class=\"banner-background-preview\"\n        :src=\"bannerPreview\"\n      >\n      <div>\n        <input\n          type=\"file\"\n          @change=\"uploadFile('banner', $event)\"\n        >\n      </div>\n      <FAIcon\n        v-if=\"bannerUploading\"\n        class=\"uploading\"\n        spin\n        icon=\"circle-notch\"\n      />\n      <button\n        v-else-if=\"bannerPreview\"\n        class=\"btn button-default\"\n        @click=\"submitBanner(banner)\"\n      >\n        {{ $t('settings.save') }}\n      </button>\n    </div>\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.profile_background') }}</h2>\n      <div class=\"banner-background-preview\">\n        <img :src=\"user.background_image\">\n        <button\n          v-if=\"!isDefaultBackground\"\n          class=\"button-unstyled reset-button\"\n          :title=\"$t('settings.reset_profile_background')\"\n          @click=\"resetBackground\"\n        >\n          <FAIcon\n            icon=\"times\"\n            type=\"button\"\n          />\n        </button>\n      </div>\n      <p>{{ $t('settings.set_new_profile_background') }}</p>\n      <img\n        v-if=\"backgroundPreview\"\n        class=\"banner-background-preview\"\n        :src=\"backgroundPreview\"\n      >\n      <div>\n        <input\n          type=\"file\"\n          @change=\"uploadFile('background', $event)\"\n        >\n      </div>\n      <FAIcon\n        v-if=\"backgroundUploading\"\n        class=\"uploading\"\n        spin\n        icon=\"circle-notch\"\n      />\n      <button\n        v-else-if=\"backgroundPreview\"\n        class=\"btn button-default\"\n        @click=\"submitBackground(background)\"\n      >\n        {{ $t('settings.save') }}\n      </button>\n    </div>\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.account_privacy') }}</h2>\n      <ul class=\"setting-list\">\n        <li>\n          <BooleanSetting path=\"serverSide_locked\">\n            {{ $t('settings.lock_account_description') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"serverSide_discoverable\">\n            {{ $t('settings.discoverable') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"serverSide_allowFollowingMove\">\n            {{ $t('settings.allow_following_move') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"serverSide_hideFavorites\">\n            {{ $t('settings.hide_favorites_description') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"serverSide_hideFollowers\">\n            {{ $t('settings.hide_followers_description') }}\n          </BooleanSetting>\n          <ul\n            class=\"setting-list suboptions\"\n            :class=\"[{disabled: !serverSide_hideFollowers}]\"\n          >\n            <li>\n              <BooleanSetting\n                path=\"serverSide_hideFollowersCount\"\n                :disabled=\"!serverSide_hideFollowers\"\n              >\n                {{ $t('settings.hide_followers_count_description') }}\n              </BooleanSetting>\n            </li>\n          </ul>\n        </li>\n        <li>\n          <BooleanSetting path=\"serverSide_hideFollows\">\n            {{ $t('settings.hide_follows_description') }}\n          </BooleanSetting>\n          <ul\n            class=\"setting-list suboptions\"\n            :class=\"[{disabled: !serverSide_hideFollows}]\"\n          >\n            <li>\n              <BooleanSetting\n                path=\"serverSide_hideFollowsCount\"\n                :disabled=\"!serverSide_hideFollows\"\n              >\n                {{ $t('settings.hide_follows_count_description') }}\n              </BooleanSetting>\n            </li>\n          </ul>\n        </li>\n      </ul>\n    </div>\n  </div>\n</template>\n\n<script src=\"./profile_tab.js\"></script>\n<style lang=\"scss\" src=\"./profile_tab.scss\"></style>\n","<template>\n  <div class=\"image-cropper\">\n    <div v-if=\"dataUrl\">\n      <div class=\"image-cropper-image-container\">\n        <img\n          ref=\"img\"\n          :src=\"dataUrl\"\n          alt=\"\"\n          @load.stop=\"createCropper\"\n        >\n      </div>\n      <div class=\"image-cropper-buttons-wrapper\">\n        <button\n          class=\"button-default btn\"\n          type=\"button\"\n          :disabled=\"submitting\"\n          @click=\"submit()\"\n          v-text=\"saveText\"\n        />\n        <button\n          class=\"button-default btn\"\n          type=\"button\"\n          :disabled=\"submitting\"\n          @click=\"destroy\"\n          v-text=\"cancelText\"\n        />\n        <button\n          class=\"button-default btn\"\n          type=\"button\"\n          :disabled=\"submitting\"\n          @click=\"submit(false)\"\n          v-text=\"saveWithoutCroppingText\"\n        />\n        <FAIcon\n          v-if=\"submitting\"\n          spin\n          icon=\"circle-notch\"\n        />\n      </div>\n    </div>\n    <input\n      ref=\"input\"\n      type=\"file\"\n      class=\"image-cropper-img-input\"\n      :accept=\"mimes\"\n    >\n  </div>\n</template>\n\n<script src=\"./image_cropper.js\"></script>\n\n<style lang=\"scss\">\n.image-cropper {\n  &-img-input {\n    display: none;\n  }\n\n  &-image-container {\n    position: relative;\n\n    img {\n      display: block;\n      max-width: 100%;\n    }\n  }\n\n  &-buttons-wrapper {\n    margin-top: 10px;\n\n    button {\n      margin-top: 5px;\n    }\n  }\n}\n</style>\n","import Cropper from 'cropperjs'\nimport 'cropperjs/dist/cropper.css'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch\n)\n\nconst ImageCropper = {\n  props: {\n    trigger: {\n      type: [String, window.Element],\n      required: true\n    },\n    submitHandler: {\n      type: Function,\n      required: true\n    },\n    cropperOptions: {\n      type: Object,\n      default () {\n        return {\n          aspectRatio: 1,\n          autoCropArea: 1,\n          viewMode: 1,\n          movable: false,\n          zoomable: false,\n          guides: false\n        }\n      }\n    },\n    mimes: {\n      type: String,\n      default: 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon'\n    },\n    saveButtonLabel: {\n      type: String\n    },\n    saveWithoutCroppingButtonlabel: {\n      type: String\n    },\n    cancelButtonLabel: {\n      type: String\n    }\n  },\n  data () {\n    return {\n      cropper: undefined,\n      dataUrl: undefined,\n      filename: undefined,\n      submitting: false\n    }\n  },\n  computed: {\n    saveText () {\n      return this.saveButtonLabel || this.$t('image_cropper.save')\n    },\n    saveWithoutCroppingText () {\n      return this.saveWithoutCroppingButtonlabel || this.$t('image_cropper.save_without_cropping')\n    },\n    cancelText () {\n      return this.cancelButtonLabel || this.$t('image_cropper.cancel')\n    }\n  },\n  methods: {\n    destroy () {\n      if (this.cropper) {\n        this.cropper.destroy()\n      }\n      this.$refs.input.value = ''\n      this.dataUrl = undefined\n      this.$emit('close')\n    },\n    submit (cropping = true) {\n      this.submitting = true\n      this.submitHandler(cropping && this.cropper, this.file)\n        .then(() => this.destroy())\n        .finally(() => {\n          this.submitting = false\n        })\n    },\n    pickImage () {\n      this.$refs.input.click()\n    },\n    createCropper () {\n      this.cropper = new Cropper(this.$refs.img, this.cropperOptions)\n    },\n    getTriggerDOM () {\n      return typeof this.trigger === 'object' ? this.trigger : document.querySelector(this.trigger)\n    },\n    readFile () {\n      const fileInput = this.$refs.input\n      if (fileInput.files != null && fileInput.files[0] != null) {\n        this.file = fileInput.files[0]\n        let reader = new window.FileReader()\n        reader.onload = (e) => {\n          this.dataUrl = e.target.result\n          this.$emit('open')\n        }\n        reader.readAsDataURL(this.file)\n        this.$emit('changed', this.file, reader)\n      }\n    }\n  },\n  mounted () {\n    // listen for click event on trigger\n    const trigger = this.getTriggerDOM()\n    if (!trigger) {\n      this.$emit('error', 'No image make trigger found.', 'user')\n    } else {\n      trigger.addEventListener('click', this.pickImage)\n    }\n    // listen for input file changes\n    const fileInput = this.$refs.input\n    fileInput.addEventListener('change', this.readFile)\n  },\n  beforeUnmount: function () {\n    // remove the event listeners\n    const trigger = this.getTriggerDOM()\n    if (trigger) {\n      trigger.removeEventListener('click', this.pickImage)\n    }\n    const fileInput = this.$refs.input\n    fileInput.removeEventListener('change', this.readFile)\n  }\n}\n\nexport default ImageCropper\n","import { render } from \"./image_cropper.vue?vue&type=template&id=0bac39f0\"\nimport script from \"./image_cropper.js?vue&type=script&lang=js\"\nexport * from \"./image_cropper.js?vue&type=script&lang=js\"\n\nimport \"./image_cropper.vue?vue&type=style&index=0&id=0bac39f0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import unescape from 'lodash/unescape'\nimport merge from 'lodash/merge'\nimport ImageCropper from 'src/components/image_cropper/image_cropper.vue'\nimport ScopeSelector from 'src/components/scope_selector/scope_selector.vue'\nimport fileSizeFormatService from 'src/components/../services/file_size_format/file_size_format.js'\nimport ProgressButton from 'src/components/progress_button/progress_button.vue'\nimport EmojiInput from 'src/components/emoji_input/emoji_input.vue'\nimport suggestor from 'src/components/emoji_input/suggestor.js'\nimport Autosuggest from 'src/components/autosuggest/autosuggest.vue'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\nimport InterfaceLanguageSwitcher from 'src/components/interface_language_switcher/interface_language_switcher.vue'\nimport BooleanSetting from '../helpers/boolean_setting.vue'\nimport SharedComputedObject from '../helpers/shared_computed_object.js'\nimport localeService from 'src/services/locale/locale.service.js'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes,\n  faPlus,\n  faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes,\n  faPlus,\n  faCircleNotch\n)\n\nconst ProfileTab = {\n  data () {\n    return {\n      newName: this.$store.state.users.currentUser.name_unescaped,\n      newBio: unescape(this.$store.state.users.currentUser.description),\n      newLocked: this.$store.state.users.currentUser.locked,\n      newFields: this.$store.state.users.currentUser.fields.map(field => ({ name: field.name, value: field.value })),\n      showRole: this.$store.state.users.currentUser.show_role,\n      role: this.$store.state.users.currentUser.role,\n      bot: this.$store.state.users.currentUser.bot,\n      pickAvatarBtnVisible: true,\n      bannerUploading: false,\n      backgroundUploading: false,\n      banner: null,\n      bannerPreview: null,\n      background: null,\n      backgroundPreview: null,\n      emailLanguage: this.$store.state.users.currentUser.language || ''\n    }\n  },\n  components: {\n    ScopeSelector,\n    ImageCropper,\n    EmojiInput,\n    Autosuggest,\n    ProgressButton,\n    Checkbox,\n    BooleanSetting,\n    InterfaceLanguageSwitcher\n  },\n  computed: {\n    user () {\n      return this.$store.state.users.currentUser\n    },\n    ...SharedComputedObject(),\n    emojiUserSuggestor () {\n      return suggestor({\n        emoji: [\n          ...this.$store.state.instance.emoji,\n          ...this.$store.state.instance.customEmoji\n        ],\n        store: this.$store\n      })\n    },\n    emojiSuggestor () {\n      return suggestor({ emoji: [\n        ...this.$store.state.instance.emoji,\n        ...this.$store.state.instance.customEmoji\n      ] })\n    },\n    userSuggestor () {\n      return suggestor({ store: this.$store })\n    },\n    fieldsLimits () {\n      return this.$store.state.instance.fieldsLimits\n    },\n    maxFields () {\n      return this.fieldsLimits ? this.fieldsLimits.maxFields : 0\n    },\n    defaultAvatar () {\n      return this.$store.state.instance.server + this.$store.state.instance.defaultAvatar\n    },\n    defaultBanner () {\n      return this.$store.state.instance.server + this.$store.state.instance.defaultBanner\n    },\n    isDefaultAvatar () {\n      const baseAvatar = this.$store.state.instance.defaultAvatar\n      return !(this.$store.state.users.currentUser.profile_image_url) ||\n      this.$store.state.users.currentUser.profile_image_url.includes(baseAvatar)\n    },\n    isDefaultBanner () {\n      const baseBanner = this.$store.state.instance.defaultBanner\n      return !(this.$store.state.users.currentUser.cover_photo) ||\n      this.$store.state.users.currentUser.cover_photo.includes(baseBanner)\n    },\n    isDefaultBackground () {\n      return !(this.$store.state.users.currentUser.background_image)\n    },\n    avatarImgSrc () {\n      const src = this.$store.state.users.currentUser.profile_image_url_original\n      return (!src) ? this.defaultAvatar : src\n    },\n    bannerImgSrc () {\n      const src = this.$store.state.users.currentUser.cover_photo\n      return (!src) ? this.defaultBanner : src\n    }\n  },\n  methods: {\n    updateProfile () {\n      const params = {\n        note: this.newBio,\n        locked: this.newLocked,\n        // Backend notation.\n        /* eslint-disable camelcase */\n        display_name: this.newName,\n        fields_attributes: this.newFields.filter(el => el != null),\n        bot: this.bot,\n        show_role: this.showRole\n        /* eslint-enable camelcase */\n      }\n\n      if (this.emailLanguage) {\n        params.language = localeService.internalToBackendLocale(this.emailLanguage)\n      }\n\n      this.$store.state.api.backendInteractor\n        .updateProfile({ params })\n        .then((user) => {\n          this.newFields.splice(user.fields.length)\n          merge(this.newFields, user.fields)\n          this.$store.commit('addNewUsers', [user])\n          this.$store.commit('setCurrentUser', user)\n        })\n    },\n    changeVis (visibility) {\n      this.newDefaultScope = visibility\n    },\n    addField () {\n      if (this.newFields.length < this.maxFields) {\n        this.newFields.push({ name: '', value: '' })\n        return true\n      }\n      return false\n    },\n    deleteField (index, event) {\n      this.$delete(this.newFields, index)\n    },\n    uploadFile (slot, e) {\n      const file = e.target.files[0]\n      if (!file) { return }\n      if (file.size > this.$store.state.instance[slot + 'limit']) {\n        const filesize = fileSizeFormatService.fileSizeFormat(file.size)\n        const allowedsize = fileSizeFormatService.fileSizeFormat(this.$store.state.instance[slot + 'limit'])\n        this.$store.dispatch('pushGlobalNotice', {\n          messageKey: 'upload.error.message',\n          messageArgs: [\n            this.$t('upload.error.file_too_big', {\n              filesize: filesize.num,\n              filesizeunit: filesize.unit,\n              allowedsize: allowedsize.num,\n              allowedsizeunit: allowedsize.unit\n            })\n          ],\n          level: 'error'\n        })\n        return\n      }\n      // eslint-disable-next-line no-undef\n      const reader = new FileReader()\n      reader.onload = ({ target }) => {\n        const img = target.result\n        this[slot + 'Preview'] = img\n        this[slot] = file\n      }\n      reader.readAsDataURL(file)\n    },\n    resetAvatar () {\n      const confirmed = window.confirm(this.$t('settings.reset_avatar_confirm'))\n      if (confirmed) {\n        this.submitAvatar(undefined, '')\n      }\n    },\n    resetBanner () {\n      const confirmed = window.confirm(this.$t('settings.reset_banner_confirm'))\n      if (confirmed) {\n        this.submitBanner('')\n      }\n    },\n    resetBackground () {\n      const confirmed = window.confirm(this.$t('settings.reset_background_confirm'))\n      if (confirmed) {\n        this.submitBackground('')\n      }\n    },\n    submitAvatar (cropper, file) {\n      const that = this\n      return new Promise((resolve, reject) => {\n        function updateAvatar (avatar, avatarName) {\n          that.$store.state.api.backendInteractor.updateProfileImages({ avatar, avatarName })\n            .then((user) => {\n              that.$store.commit('addNewUsers', [user])\n              that.$store.commit('setCurrentUser', user)\n              resolve()\n            })\n            .catch((error) => {\n              that.displayUploadError(error)\n              reject(error)\n            })\n        }\n\n        if (cropper) {\n          cropper.getCroppedCanvas().toBlob((data) => updateAvatar(data, file.name), file.type)\n        } else {\n          updateAvatar(file, file.name)\n        }\n      })\n    },\n    submitBanner (banner) {\n      if (!this.bannerPreview && banner !== '') { return }\n\n      this.bannerUploading = true\n      this.$store.state.api.backendInteractor.updateProfileImages({ banner })\n        .then((user) => {\n          this.$store.commit('addNewUsers', [user])\n          this.$store.commit('setCurrentUser', user)\n          this.bannerPreview = null\n        })\n        .catch(this.displayUploadError)\n        .finally(() => { this.bannerUploading = false })\n    },\n    submitBackground (background) {\n      if (!this.backgroundPreview && background !== '') { return }\n\n      this.backgroundUploading = true\n      this.$store.state.api.backendInteractor.updateProfileImages({ background })\n        .then((data) => {\n          this.$store.commit('addNewUsers', [data])\n          this.$store.commit('setCurrentUser', data)\n          this.backgroundPreview = null\n        })\n        .catch(this.displayUploadError)\n        .finally(() => { this.backgroundUploading = false })\n    },\n    displayUploadError (error) {\n      this.$store.dispatch('pushGlobalNotice', {\n        messageKey: 'upload.error.message',\n        messageArgs: [error.message],\n        level: 'error'\n      })\n    }\n  }\n}\n\nexport default ProfileTab\n","import { render } from \"./profile_tab.vue?vue&type=template&id=d5067dba\"\nimport script from \"./profile_tab.js?vue&type=script&lang=js\"\nexport * from \"./profile_tab.js?vue&type=script&lang=js\"\n\nimport \"./profile_tab.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div :label=\"$t('settings.general')\">\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.interface') }}</h2>\n      <ul class=\"setting-list\">\n        <li>\n          <interface-language-switcher\n            :prompt-text=\"$t('settings.interfaceLanguage')\"\n            :language=\"language\"\n            :set-language=\"val => language = val\"\n          />\n        </li>\n        <li v-if=\"instanceSpecificPanelPresent\">\n          <BooleanSetting path=\"hideISP\">\n            {{ $t('settings.hide_isp') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"sidebarRight\">\n            {{ $t('settings.right_sidebar') }}\n          </BooleanSetting>\n        </li>\n        <li v-if=\"instanceWallpaperUsed\">\n          <BooleanSetting path=\"hideInstanceWallpaper\">\n            {{ $t('settings.hide_wallpaper') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"stopGifs\">\n            {{ $t('settings.stop_gifs') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"streaming\">\n            {{ $t('settings.streaming') }}\n          </BooleanSetting>\n          <ul\n            class=\"setting-list suboptions\"\n            :class=\"[{disabled: !streaming}]\"\n          >\n            <li>\n              <BooleanSetting\n                path=\"pauseOnUnfocused\"\n                :disabled=\"!streaming\"\n              >\n                {{ $t('settings.pause_on_unfocused') }}\n              </BooleanSetting>\n            </li>\n          </ul>\n        </li>\n        <li>\n          <BooleanSetting\n            path=\"useStreamingApi\"\n            expert=\"1\"\n          >\n            {{ $t('settings.useStreamingApi') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting\n            path=\"virtualScrolling\"\n            expert=\"1\"\n          >\n            {{ $t('settings.virtual_scrolling') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"disableStickyHeaders\">\n            {{ $t('settings.disable_sticky_headers') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"showScrollbars\">\n            {{ $t('settings.show_scrollbars') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <ChoiceSetting\n            v-if=\"user\"\n            id=\"thirdColumnMode\"\n            path=\"thirdColumnMode\"\n            :options=\"thirdColumnModeOptions\"\n          >\n            {{ $t('settings.third_column_mode') }}\n          </ChoiceSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"minimalScopesMode\">\n            {{ $t('settings.minimal_scopes_mode') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"sensitiveByDefault\">\n            {{ $t('settings.sensitive_by_default') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"sensitiveIfSubject\">\n            {{ $t('settings.sensitive_if_subject') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"renderMisskeyMarkdown\">\n            {{ $t('settings.render_mfm') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting\n            path=\"alwaysShowNewPostButton\"\n            expert=\"1\"\n          >\n            {{ $t('settings.always_show_post_button') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting\n            path=\"autohideFloatingPostButton\"\n            expert=\"1\"\n          >\n            {{ $t('settings.autohide_floating_post_button') }}\n          </BooleanSetting>\n        </li>\n        <li v-if=\"instanceShoutboxPresent\">\n          <BooleanSetting\n            path=\"hideShoutbox\"\n            expert=\"1\"\n          >\n            {{ $t('settings.hide_shoutbox') }}\n          </BooleanSetting>\n        </li>\n      </ul>\n    </div>\n    <div class=\"setting-item\">\n      <h2>{{ $t('settings.post_look_feel') }}</h2>\n      <ul class=\"setting-list\">\n        <li>\n          <ChoiceSetting\n            id=\"conversationDisplay\"\n            path=\"conversationDisplay\"\n            :options=\"conversationDisplayOptions\"\n          >\n            {{ $t('settings.conversation_display') }}\n          </ChoiceSetting>\n        </li>\n        <ul\n          v-if=\"conversationDisplay !== 'linear'\"\n          class=\"setting-list suboptions\"\n        >\n          <li>\n            <BooleanSetting path=\"conversationTreeAdvanced\">\n              {{ $t('settings.tree_advanced') }}\n            </BooleanSetting>\n          </li>\n          <li>\n            <BooleanSetting\n              path=\"conversationTreeFadeAncestors\"\n              :expert=\"1\"\n            >\n              {{ $t('settings.tree_fade_ancestors') }}\n            </BooleanSetting>\n          </li>\n          <li>\n            <IntegerSetting\n              path=\"maxDepthInThread\"\n              :min=\"3\"\n              :expert=\"1\"\n            >\n              {{ $t('settings.max_depth_in_thread') }}\n            </IntegerSetting>\n          </li>\n          <li>\n            <ChoiceSetting\n              id=\"conversationOtherRepliesButton\"\n              path=\"conversationOtherRepliesButton\"\n              :options=\"conversationOtherRepliesButtonOptions\"\n              :expert=\"1\"\n            >\n              {{ $t('settings.conversation_other_replies_button') }}\n            </ChoiceSetting>\n          </li>\n        </ul>\n        <li>\n          <BooleanSetting path=\"collapseMessageWithSubject\">\n            {{ $t('settings.collapse_subject') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting\n            path=\"emojiReactionsOnTimeline\"\n            expert=\"1\"\n          >\n            {{ $t('settings.emoji_reactions_on_timeline') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting\n            v-if=\"user\"\n            path=\"serverSide_stripRichContent\"\n            expert=\"1\"\n          >\n            {{ $t('settings.no_rich_text_description') }}\n          </BooleanSetting>\n        </li>\n        <h3>{{ $t('settings.attachments') }}</h3>\n        <li>\n          <BooleanSetting\n            path=\"useContainFit\"\n            expert=\"1\"\n          >\n            {{ $t('settings.use_contain_fit') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"hideNsfw\">\n            {{ $t('settings.nsfw_clickthrough') }}\n          </BooleanSetting>\n        </li>\n        <ul class=\"setting-list suboptions\">\n          <li>\n            <BooleanSetting\n              path=\"preloadImage\"\n              expert=\"1\"\n              :disabled=\"!hideNsfw\"\n            >\n              {{ $t('settings.preload_images') }}\n            </BooleanSetting>\n          </li>\n          <li>\n            <BooleanSetting\n              path=\"useOneClickNsfw\"\n              expert=\"1\"\n              :disabled=\"!hideNsfw\"\n            >\n              {{ $t('settings.use_one_click_nsfw') }}\n            </BooleanSetting>\n          </li>\n        </ul>\n        <li>\n          <BooleanSetting\n            path=\"loopVideo\"\n            expert=\"1\"\n          >\n            {{ $t('settings.loop_video') }}\n          </BooleanSetting>\n          <ul\n            class=\"setting-list suboptions\"\n            :class=\"[{disabled: !streaming}]\"\n          >\n            <li>\n              <BooleanSetting\n                path=\"loopVideoSilentOnly\"\n                expert=\"1\"\n                :disabled=\"!loopVideo || !loopSilentAvailable\"\n              >\n                {{ $t('settings.loop_video_silent_only') }}\n              </BooleanSetting>\n              <div\n                v-if=\"!loopSilentAvailable\"\n                class=\"unavailable\"\n              >\n                <FAIcon icon=\"globe\" />! {{ $t('settings.limited_availability') }}\n              </div>\n            </li>\n          </ul>\n        </li>\n        <li>\n          <BooleanSetting\n            path=\"playVideosInModal\"\n            expert=\"1\"\n          >\n            {{ $t('settings.play_videos_in_modal') }}\n          </BooleanSetting>\n        </li>\n        <h3>{{ $t('settings.mention_links') }}</h3>\n        <li>\n          <ChoiceSetting\n            id=\"mentionLinkDisplay\"\n            path=\"mentionLinkDisplay\"\n            :options=\"mentionLinkDisplayOptions\"\n          >\n            {{ $t('settings.mention_link_display') }}\n          </ChoiceSetting>\n        </li>\n        <ul\n          class=\"setting-list suboptions\"\n        >\n          <li v-if=\"mentionLinkDisplay === 'short'\">\n            <BooleanSetting\n              path=\"mentionLinkShowTooltip\"\n              expert=\"1\"\n            >\n              {{ $t('settings.mention_link_show_tooltip') }}\n            </BooleanSetting>\n          </li>\n        </ul>\n        <li>\n          <BooleanSetting\n            path=\"useAtIcon\"\n            expert=\"1\"\n          >\n            {{ $t('settings.use_at_icon') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting path=\"mentionLinkShowAvatar\">\n            {{ $t('settings.mention_link_show_avatar') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting\n            path=\"mentionLinkFadeDomain\"\n            expert=\"1\"\n          >\n            {{ $t('settings.mention_link_fade_domain') }}\n          </BooleanSetting>\n        </li>\n        <li v-if=\"user\">\n          <BooleanSetting\n            path=\"mentionLinkBoldenYou\"\n            expert=\"1\"\n          >\n            {{ $t('settings.mention_link_bolden_you') }}\n          </BooleanSetting>\n        </li>\n        <h3 v-if=\"expertLevel > 0\">\n          {{ $t('settings.fun') }}\n        </h3>\n        <li>\n          <BooleanSetting\n            path=\"greentext\"\n            expert=\"1\"\n          >\n            {{ $t('settings.greentext') }}\n          </BooleanSetting>\n        </li>\n        <li v-if=\"user\">\n          <BooleanSetting\n            path=\"mentionLinkShowYous\"\n            expert=\"1\"\n          >\n            {{ $t('settings.show_yous') }}\n          </BooleanSetting>\n        </li>\n      </ul>\n    </div>\n\n    <div\n      v-if=\"user\"\n      class=\"setting-item\"\n    >\n      <h2>{{ $t('settings.composing') }}</h2>\n      <ul class=\"setting-list\">\n        <li>\n          <label for=\"default-vis\">\n            {{ $t('settings.default_vis') }} <ServerSideIndicator :server-side=\"true\" />\n            <ScopeSelector\n              class=\"scope-selector\"\n              :show-all=\"true\"\n              :user-default=\"serverSide_defaultScope\"\n              :initial-scope=\"serverSide_defaultScope\"\n              :on-scope-change=\"changeDefaultScope\"\n            />\n          </label>\n        </li>\n        <li>\n          <!-- <BooleanSetting path=\"serverSide_defaultNSFW\"> -->\n          <BooleanSetting path=\"sensitiveByDefault\">\n            {{ $t('settings.sensitive_by_default') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting\n            path=\"scopeCopy\"\n            expert=\"1\"\n          >\n            {{ $t('settings.scope_copy') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting\n            path=\"alwaysShowSubjectInput\"\n            expert=\"1\"\n          >\n            {{ $t('settings.subject_input_always_show') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <ChoiceSetting\n            id=\"subjectLineBehavior\"\n            path=\"subjectLineBehavior\"\n            :options=\"subjectLineOptions\"\n            expert=\"1\"\n          >\n            {{ $t('settings.subject_line_behavior') }}\n          </ChoiceSetting>\n        </li>\n        <li v-if=\"postFormats.length > 0\">\n          <ChoiceSetting\n            id=\"postContentType\"\n            path=\"postContentType\"\n            :options=\"postContentOptions\"\n          >\n            {{ $t('settings.post_status_content_type') }}\n          </ChoiceSetting>\n        </li>\n        <li>\n          <BooleanSetting\n            path=\"minimalScopesMode\"\n            expert=\"1\"\n          >\n            {{ $t('settings.minimal_scopes_mode') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting\n            path=\"alwaysShowNewPostButton\"\n            expert=\"1\"\n          >\n            {{ $t('settings.always_show_post_button') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting\n            path=\"autohideFloatingPostButton\"\n            expert=\"1\"\n          >\n            {{ $t('settings.autohide_floating_post_button') }}\n          </BooleanSetting>\n        </li>\n        <li>\n          <BooleanSetting\n            path=\"padEmoji\"\n            expert=\"1\"\n          >\n            {{ $t('settings.pad_emoji') }}\n          </BooleanSetting>\n        </li>\n      </ul>\n    </div>\n  </div>\n</template>\n\n<script src=\"./general_tab.js\"></script>\n","import BooleanSetting from '../helpers/boolean_setting.vue'\nimport ChoiceSetting from '../helpers/choice_setting.vue'\nimport ScopeSelector from 'src/components/scope_selector/scope_selector.vue'\nimport IntegerSetting from '../helpers/integer_setting.vue'\nimport InterfaceLanguageSwitcher from 'src/components/interface_language_switcher/interface_language_switcher.vue'\n\nimport SharedComputedObject from '../helpers/shared_computed_object.js'\nimport ServerSideIndicator from '../helpers/server_side_indicator.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faGlobe\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faGlobe\n)\n\nconst GeneralTab = {\n  data () {\n    return {\n      subjectLineOptions: ['email', 'noop', 'masto'].map(mode => ({\n        key: mode,\n        value: mode,\n        label: this.$t(`settings.subject_line_${mode === 'masto' ? 'mastodon' : mode}`)\n      })),\n      conversationDisplayOptions: ['tree', 'linear'].map(mode => ({\n        key: mode,\n        value: mode,\n        label: this.$t(`settings.conversation_display_${mode}`)\n      })),\n      conversationOtherRepliesButtonOptions: ['below', 'inside'].map(mode => ({\n        key: mode,\n        value: mode,\n        label: this.$t(`settings.conversation_other_replies_button_${mode}`)\n      })),\n      mentionLinkDisplayOptions: ['short', 'full_for_remote', 'full'].map(mode => ({\n        key: mode,\n        value: mode,\n        label: this.$t(`settings.mention_link_display_${mode}`)\n      })),\n      thirdColumnModeOptions: ['none', 'notifications', 'postform'].map(mode => ({\n        key: mode,\n        value: mode,\n        label: this.$t(`settings.third_column_mode_${mode}`)\n      })),\n      loopSilentAvailable:\n      // Firefox\n      Object.getOwnPropertyDescriptor(HTMLVideoElement.prototype, 'mozHasAudio') ||\n      // Chrome-likes\n      Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype, 'webkitAudioDecodedByteCount') ||\n      // Future spec, still not supported in Nightly 63 as of 08/2018\n      Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype, 'audioTracks')\n    }\n  },\n  components: {\n    BooleanSetting,\n    ChoiceSetting,\n    IntegerSetting,\n    InterfaceLanguageSwitcher,\n    ScopeSelector,\n    ServerSideIndicator\n  },\n  computed: {\n    postFormats () {\n      return this.$store.state.instance.postFormats || []\n    },\n    postContentOptions () {\n      return this.postFormats.map(format => ({\n        key: format,\n        value: format,\n        label: this.$t(`post_status.content_type[\"${format}\"]`)\n      }))\n    },\n    instanceSpecificPanelPresent () { return this.$store.state.instance.showInstanceSpecificPanel },\n    instanceWallpaperUsed () {\n      return this.$store.state.instance.background &&\n        !this.$store.state.users.currentUser.background_image\n    },\n    instanceShoutboxPresent () { return this.$store.state.instance.shoutAvailable },\n    language: {\n      get: function () { return this.$store.getters.mergedConfig.interfaceLanguage },\n      set: function (val) {\n        this.$store.dispatch('setOption', { name: 'interfaceLanguage', value: val })\n      }\n    },\n    ...SharedComputedObject()\n  },\n  methods: {\n    changeDefaultScope (value) {\n      this.$store.dispatch('setServerSideOption', { name: 'defaultScope', value })\n    }\n  }\n}\n\nexport default GeneralTab\n","import { render } from \"./general_tab.vue?vue&type=template&id=317a4310\"\nimport script from \"./general_tab.js?vue&type=script&lang=js\"\nexport * from \"./general_tab.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div :label=\"$t('settings.version.title')\">\n    <div class=\"setting-item\">\n      <ul class=\"setting-list\">\n        <li>\n          <p>{{ $t('settings.version.backend_version') }}</p>\n          <ul class=\"option-list\">\n            <li>\n              <a\n                :href=\"backendVersionLink\"\n                target=\"_blank\"\n              >{{ backendVersion }}</a>\n            </li>\n          </ul>\n        </li>\n        <li>\n          <p>{{ $t('settings.version.frontend_version') }}</p>\n          <ul class=\"option-list\">\n            <li>\n              <a\n                :href=\"frontendVersionLink\"\n                target=\"_blank\"\n              >{{ frontendVersion }}</a>\n            </li>\n          </ul>\n        </li>\n      </ul>\n    </div>\n  </div>\n</template>\n<script src=\"./version_tab.js\" />\n","\nexport const extractCommit = versionString => {\n  const regex = /-g(\\w+)/i\n  const matches = versionString.match(regex)\n  return matches ? matches[1] : ''\n}\n","import { extractCommit } from 'src/services/version/version.service'\n\nconst pleromaFeCommitUrl = 'https://akkoma.dev/AkkomaGang/pleroma-fe/commit/'\nconst pleromaBeCommitUrl = 'https://akkoma.dev/AkkomaGang/akkoma/commit/'\n\nconst VersionTab = {\n  data () {\n    const instance = this.$store.state.instance\n    return {\n      backendVersion: instance.backendVersion,\n      frontendVersion: instance.frontendVersion\n    }\n  },\n  computed: {\n    frontendVersionLink () {\n      return pleromaFeCommitUrl + this.frontendVersion\n    },\n    backendVersionLink () {\n      return pleromaBeCommitUrl + extractCommit(this.backendVersion)\n    }\n  }\n}\n\nexport default VersionTab\n","import { render } from \"./version_tab.vue?vue&type=template&id=1295897c\"\nimport script from \"./version_tab.js?vue&type=script&lang=js\"\nexport * from \"./version_tab.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"theme-tab\">\n    <div class=\"presets-container\">\n      <div class=\"save-load\">\n        <div\n          v-if=\"themeWarning\"\n          class=\"theme-warning\"\n        >\n          <div class=\"alert warning\">\n            {{ themeWarningHelp }}\n          </div>\n          <div class=\"buttons\">\n            <template v-if=\"themeWarning.type === 'snapshot_source_mismatch'\">\n              <button\n                class=\"btn button-default\"\n                @click=\"forceLoad\"\n              >\n                {{ $t('settings.style.switcher.use_source') }}\n              </button>\n              <button\n                class=\"btn button-default\"\n                @click=\"forceSnapshot\"\n              >\n                {{ $t('settings.style.switcher.use_snapshot') }}\n              </button>\n            </template>\n            <template v-else-if=\"themeWarning.noActionsPossible\">\n              <button\n                class=\"btn button-default\"\n                @click=\"dismissWarning\"\n              >\n                {{ $t('general.dismiss') }}\n              </button>\n            </template>\n            <template v-else>\n              <button\n                class=\"btn button-default\"\n                @click=\"forceLoad\"\n              >\n                {{ $t('settings.style.switcher.load_theme') }}\n              </button>\n              <button\n                class=\"btn button-default\"\n                @click=\"dismissWarning\"\n              >\n                {{ $t('settings.style.switcher.keep_as_is') }}\n              </button>\n            </template>\n          </div>\n        </div>\n        <div class=\"top\">\n          <div class=\"presets\">\n            {{ $t('settings.presets') }}\n            <label\n              for=\"preset-switcher\"\n              class=\"select\"\n            >\n              <Select\n                id=\"preset-switcher\"\n                v-model=\"selected\"\n                class=\"preset-switcher\"\n              >\n                <option\n                  v-for=\"style in availableStyles\"\n                  :key=\"style.name\"\n                  :value=\"style.name || style[0]\"\n                  :style=\"{\n                    backgroundColor: style[1] || (style.theme || style.source).colors.bg,\n                    color: style[3] || (style.theme || style.source).colors.text\n                  }\"\n                >\n                  {{ style[0] || style.name }}\n                </option>\n              </Select>\n            </label>\n          </div>\n          <div class=\"export-import\">\n            <button\n              class=\"btn button-default\"\n              @click=\"importTheme\"\n            >\n              {{ $t(&quot;settings.import_theme&quot;) }}\n            </button>\n            <button\n              class=\"btn button-default\"\n              @click=\"exportTheme\"\n            >\n              {{ $t(&quot;settings.export_theme&quot;) }}\n            </button>\n          </div>\n        </div>\n      </div>\n      <div class=\"save-load-options\">\n        <span class=\"keep-option\">\n          <Checkbox v-model=\"keepColor\">\n            {{ $t('settings.style.switcher.keep_color') }}\n          </Checkbox>\n        </span>\n        <span class=\"keep-option\">\n          <Checkbox v-model=\"keepShadows\">\n            {{ $t('settings.style.switcher.keep_shadows') }}\n          </Checkbox>\n        </span>\n        <span class=\"keep-option\">\n          <Checkbox v-model=\"keepOpacity\">\n            {{ $t('settings.style.switcher.keep_opacity') }}\n          </Checkbox>\n        </span>\n        <span class=\"keep-option\">\n          <Checkbox v-model=\"keepRoundness\">\n            {{ $t('settings.style.switcher.keep_roundness') }}\n          </Checkbox>\n        </span>\n        <span class=\"keep-option\">\n          <Checkbox v-model=\"keepFonts\">\n            {{ $t('settings.style.switcher.keep_fonts') }}\n          </Checkbox>\n        </span>\n        <p>{{ $t('settings.style.switcher.save_load_hint') }}</p>\n      </div>\n    </div>\n\n    <preview :style=\"previewRules\" />\n\n    <keep-alive>\n      <tab-switcher key=\"style-tweak\">\n        <div\n          :label=\"$t('settings.style.common_colors._tab_label')\"\n          class=\"color-container\"\n        >\n          <div class=\"tab-header\">\n            <p>{{ $t('settings.theme_help') }}</p>\n            <div class=\"tab-header-buttons\">\n              <button\n                class=\"btn button-default\"\n                @click=\"clearOpacity\"\n              >\n                {{ $t('settings.style.switcher.clear_opacity') }}\n              </button>\n              <button\n                class=\"btn button-default\"\n                @click=\"clearV1\"\n              >\n                {{ $t('settings.style.switcher.clear_all') }}\n              </button>\n            </div>\n          </div>\n          <p>{{ $t('settings.theme_help_v2_1') }}</p>\n          <h4>{{ $t('settings.style.common_colors.main') }}</h4>\n          <div class=\"color-item\">\n            <ColorInput\n              v-model=\"bgColorLocal\"\n              name=\"bgColor\"\n              :label=\"$t('settings.background')\"\n            />\n            <OpacityInput\n              v-model=\"bgOpacityLocal\"\n              name=\"bgOpacity\"\n              :fallback=\"previewTheme.opacity.bg\"\n            />\n            <ColorInput\n              v-model=\"textColorLocal\"\n              name=\"textColor\"\n              :label=\"$t('settings.text')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.bgText\" />\n            <ColorInput\n              v-model=\"accentColorLocal\"\n              name=\"accentColor\"\n              :fallback=\"previewTheme.colors.link\"\n              :label=\"$t('settings.accent')\"\n              :show-optional-tickbox=\"typeof linkColorLocal !== 'undefined'\"\n            />\n            <ColorInput\n              v-model=\"linkColorLocal\"\n              name=\"linkColor\"\n              :fallback=\"previewTheme.colors.accent\"\n              :label=\"$t('settings.links')\"\n              :show-optional-tickbox=\"typeof accentColorLocal !== 'undefined'\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.bgLink\" />\n          </div>\n          <div class=\"color-item\">\n            <ColorInput\n              v-model=\"fgColorLocal\"\n              name=\"fgColor\"\n              :label=\"$t('settings.foreground')\"\n            />\n            <ColorInput\n              v-model=\"fgTextColorLocal\"\n              name=\"fgTextColor\"\n              :label=\"$t('settings.text')\"\n              :fallback=\"previewTheme.colors.fgText\"\n            />\n            <ColorInput\n              v-model=\"fgLinkColorLocal\"\n              name=\"fgLinkColor\"\n              :label=\"$t('settings.links')\"\n              :fallback=\"previewTheme.colors.fgLink\"\n            />\n            <p>{{ $t('settings.style.common_colors.foreground_hint') }}</p>\n          </div>\n          <h4>{{ $t('settings.style.common_colors.rgbo') }}</h4>\n          <div class=\"color-item\">\n            <ColorInput\n              v-model=\"cRedColorLocal\"\n              name=\"cRedColor\"\n              :label=\"$t('settings.cRed')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.bgCRed\" />\n            <ColorInput\n              v-model=\"cBlueColorLocal\"\n              name=\"cBlueColor\"\n              :label=\"$t('settings.cBlue')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.bgCBlue\" />\n          </div>\n          <div class=\"color-item\">\n            <ColorInput\n              v-model=\"cGreenColorLocal\"\n              name=\"cGreenColor\"\n              :label=\"$t('settings.cGreen')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.bgCGreen\" />\n            <ColorInput\n              v-model=\"cOrangeColorLocal\"\n              name=\"cOrangeColor\"\n              :label=\"$t('settings.cOrange')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.bgCOrange\" />\n          </div>\n          <p>{{ $t('settings.theme_help_v2_2') }}</p>\n        </div>\n\n        <div\n          :label=\"$t('settings.style.advanced_colors._tab_label')\"\n          class=\"color-container\"\n        >\n          <div class=\"tab-header\">\n            <p>{{ $t('settings.theme_help') }}</p>\n            <button\n              class=\"btn button-default\"\n              @click=\"clearOpacity\"\n            >\n              {{ $t('settings.style.switcher.clear_opacity') }}\n            </button>\n            <button\n              class=\"btn button-default\"\n              @click=\"clearV1\"\n            >\n              {{ $t('settings.style.switcher.clear_all') }}\n            </button>\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.post') }}</h4>\n            <ColorInput\n              v-model=\"postLinkColorLocal\"\n              name=\"postLinkColor\"\n              :fallback=\"previewTheme.colors.accent\"\n              :label=\"$t('settings.links')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.postLink\" />\n            <ColorInput\n              v-model=\"postGreentextColorLocal\"\n              name=\"postGreentextColor\"\n              :fallback=\"previewTheme.colors.cGreen\"\n              :label=\"$t('settings.greentext')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.postGreentext\" />\n            <h4>{{ $t('settings.style.advanced_colors.alert') }}</h4>\n            <ColorInput\n              v-model=\"alertErrorColorLocal\"\n              name=\"alertError\"\n              :label=\"$t('settings.style.advanced_colors.alert_error')\"\n              :fallback=\"previewTheme.colors.alertError\"\n            />\n            <ColorInput\n              v-model=\"alertErrorTextColorLocal\"\n              name=\"alertErrorText\"\n              :label=\"$t('settings.text')\"\n              :fallback=\"previewTheme.colors.alertErrorText\"\n            />\n            <ContrastRatio\n              :contrast=\"previewContrast.alertErrorText\"\n              large\n            />\n            <ColorInput\n              v-model=\"alertWarningColorLocal\"\n              name=\"alertWarning\"\n              :label=\"$t('settings.style.advanced_colors.alert_warning')\"\n              :fallback=\"previewTheme.colors.alertWarning\"\n            />\n            <ColorInput\n              v-model=\"alertWarningTextColorLocal\"\n              name=\"alertWarningText\"\n              :label=\"$t('settings.text')\"\n              :fallback=\"previewTheme.colors.alertWarningText\"\n            />\n            <ContrastRatio\n              :contrast=\"previewContrast.alertWarningText\"\n              large\n            />\n            <ColorInput\n              v-model=\"alertNeutralColorLocal\"\n              name=\"alertNeutral\"\n              :label=\"$t('settings.style.advanced_colors.alert_neutral')\"\n              :fallback=\"previewTheme.colors.alertNeutral\"\n            />\n            <ColorInput\n              v-model=\"alertNeutralTextColorLocal\"\n              name=\"alertNeutralText\"\n              :label=\"$t('settings.text')\"\n              :fallback=\"previewTheme.colors.alertNeutralText\"\n            />\n            <ContrastRatio\n              :contrast=\"previewContrast.alertNeutralText\"\n              large\n            />\n            <OpacityInput\n              v-model=\"alertOpacityLocal\"\n              name=\"alertOpacity\"\n              :fallback=\"previewTheme.opacity.alert\"\n            />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.badge') }}</h4>\n            <ColorInput\n              v-model=\"badgeNotificationColorLocal\"\n              name=\"badgeNotification\"\n              :label=\"$t('settings.style.advanced_colors.badge_notification')\"\n              :fallback=\"previewTheme.colors.badgeNotification\"\n            />\n            <ColorInput\n              v-model=\"badgeNotificationTextColorLocal\"\n              name=\"badgeNotificationText\"\n              :label=\"$t('settings.text')\"\n              :fallback=\"previewTheme.colors.badgeNotificationText\"\n            />\n            <ContrastRatio\n              :contrast=\"previewContrast.badgeNotificationText\"\n              large\n            />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.panel_header') }}</h4>\n            <ColorInput\n              v-model=\"panelColorLocal\"\n              name=\"panelColor\"\n              :fallback=\"previewTheme.colors.panel\"\n              :label=\"$t('settings.background')\"\n            />\n            <OpacityInput\n              v-model=\"panelOpacityLocal\"\n              name=\"panelOpacity\"\n              :fallback=\"previewTheme.opacity.panel\"\n              :disabled=\"panelColorLocal === 'transparent'\"\n            />\n            <ColorInput\n              v-model=\"panelTextColorLocal\"\n              name=\"panelTextColor\"\n              :fallback=\"previewTheme.colors.panelText\"\n              :label=\"$t('settings.text')\"\n            />\n            <ContrastRatio\n              :contrast=\"previewContrast.panelText\"\n              large\n            />\n            <ColorInput\n              v-model=\"panelLinkColorLocal\"\n              name=\"panelLinkColor\"\n              :fallback=\"previewTheme.colors.panelLink\"\n              :label=\"$t('settings.links')\"\n            />\n            <ContrastRatio\n              :contrast=\"previewContrast.panelLink\"\n              large\n            />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.top_bar') }}</h4>\n            <ColorInput\n              v-model=\"topBarColorLocal\"\n              name=\"topBarColor\"\n              :fallback=\"previewTheme.colors.topBar\"\n              :label=\"$t('settings.background')\"\n            />\n            <ColorInput\n              v-model=\"topBarTextColorLocal\"\n              name=\"topBarTextColor\"\n              :fallback=\"previewTheme.colors.topBarText\"\n              :label=\"$t('settings.text')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.topBarText\" />\n            <ColorInput\n              v-model=\"topBarLinkColorLocal\"\n              name=\"topBarLinkColor\"\n              :fallback=\"previewTheme.colors.topBarLink\"\n              :label=\"$t('settings.links')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.topBarLink\" />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.inputs') }}</h4>\n            <ColorInput\n              v-model=\"inputColorLocal\"\n              name=\"inputColor\"\n              :fallback=\"previewTheme.colors.input\"\n              :label=\"$t('settings.background')\"\n            />\n            <OpacityInput\n              v-model=\"inputOpacityLocal\"\n              name=\"inputOpacity\"\n              :fallback=\"previewTheme.opacity.input\"\n              :disabled=\"inputColorLocal === 'transparent'\"\n            />\n            <ColorInput\n              v-model=\"inputTextColorLocal\"\n              name=\"inputTextColor\"\n              :fallback=\"previewTheme.colors.inputText\"\n              :label=\"$t('settings.text')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.inputText\" />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.buttons') }}</h4>\n            <ColorInput\n              v-model=\"btnColorLocal\"\n              name=\"btnColor\"\n              :fallback=\"previewTheme.colors.btn\"\n              :label=\"$t('settings.background')\"\n            />\n            <OpacityInput\n              v-model=\"btnOpacityLocal\"\n              name=\"btnOpacity\"\n              :fallback=\"previewTheme.opacity.btn\"\n              :disabled=\"btnColorLocal === 'transparent'\"\n            />\n            <ColorInput\n              v-model=\"btnTextColorLocal\"\n              name=\"btnTextColor\"\n              :fallback=\"previewTheme.colors.btnText\"\n              :label=\"$t('settings.text')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.btnText\" />\n            <ColorInput\n              v-model=\"btnPanelTextColorLocal\"\n              name=\"btnPanelTextColor\"\n              :fallback=\"previewTheme.colors.btnPanelText\"\n              :label=\"$t('settings.style.advanced_colors.panel_header')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.btnPanelText\" />\n            <ColorInput\n              v-model=\"btnTopBarTextColorLocal\"\n              name=\"btnTopBarTextColor\"\n              :fallback=\"previewTheme.colors.btnTopBarText\"\n              :label=\"$t('settings.style.advanced_colors.top_bar')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.btnTopBarText\" />\n            <h5>{{ $t('settings.style.advanced_colors.pressed') }}</h5>\n            <ColorInput\n              v-model=\"btnPressedColorLocal\"\n              name=\"btnPressedColor\"\n              :fallback=\"previewTheme.colors.btnPressed\"\n              :label=\"$t('settings.background')\"\n            />\n            <ColorInput\n              v-model=\"btnPressedTextColorLocal\"\n              name=\"btnPressedTextColor\"\n              :fallback=\"previewTheme.colors.btnPressedText\"\n              :label=\"$t('settings.text')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.btnPressedText\" />\n            <ColorInput\n              v-model=\"btnPressedPanelTextColorLocal\"\n              name=\"btnPressedPanelTextColor\"\n              :fallback=\"previewTheme.colors.btnPressedPanelText\"\n              :label=\"$t('settings.style.advanced_colors.panel_header')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.btnPressedPanelText\" />\n            <ColorInput\n              v-model=\"btnPressedTopBarTextColorLocal\"\n              name=\"btnPressedTopBarTextColor\"\n              :fallback=\"previewTheme.colors.btnPressedTopBarText\"\n              :label=\"$t('settings.style.advanced_colors.top_bar')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.btnPressedTopBarText\" />\n            <h5>{{ $t('settings.style.advanced_colors.disabled') }}</h5>\n            <ColorInput\n              v-model=\"btnDisabledColorLocal\"\n              name=\"btnDisabledColor\"\n              :fallback=\"previewTheme.colors.btnDisabled\"\n              :label=\"$t('settings.background')\"\n            />\n            <ColorInput\n              v-model=\"btnDisabledTextColorLocal\"\n              name=\"btnDisabledTextColor\"\n              :fallback=\"previewTheme.colors.btnDisabledText\"\n              :label=\"$t('settings.text')\"\n            />\n            <ColorInput\n              v-model=\"btnDisabledPanelTextColorLocal\"\n              name=\"btnDisabledPanelTextColor\"\n              :fallback=\"previewTheme.colors.btnDisabledPanelText\"\n              :label=\"$t('settings.style.advanced_colors.panel_header')\"\n            />\n            <ColorInput\n              v-model=\"btnDisabledTopBarTextColorLocal\"\n              name=\"btnDisabledTopBarTextColor\"\n              :fallback=\"previewTheme.colors.btnDisabledTopBarText\"\n              :label=\"$t('settings.style.advanced_colors.top_bar')\"\n            />\n            <h5>{{ $t('settings.style.advanced_colors.toggled') }}</h5>\n            <ColorInput\n              v-model=\"btnToggledColorLocal\"\n              name=\"btnToggledColor\"\n              :fallback=\"previewTheme.colors.btnToggled\"\n              :label=\"$t('settings.background')\"\n            />\n            <ColorInput\n              v-model=\"btnToggledTextColorLocal\"\n              name=\"btnToggledTextColor\"\n              :fallback=\"previewTheme.colors.btnToggledText\"\n              :label=\"$t('settings.text')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.btnToggledText\" />\n            <ColorInput\n              v-model=\"btnToggledPanelTextColorLocal\"\n              name=\"btnToggledPanelTextColor\"\n              :fallback=\"previewTheme.colors.btnToggledPanelText\"\n              :label=\"$t('settings.style.advanced_colors.panel_header')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.btnToggledPanelText\" />\n            <ColorInput\n              v-model=\"btnToggledTopBarTextColorLocal\"\n              name=\"btnToggledTopBarTextColor\"\n              :fallback=\"previewTheme.colors.btnToggledTopBarText\"\n              :label=\"$t('settings.style.advanced_colors.top_bar')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.btnToggledTopBarText\" />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.tabs') }}</h4>\n            <ColorInput\n              v-model=\"tabColorLocal\"\n              name=\"tabColor\"\n              :fallback=\"previewTheme.colors.tab\"\n              :label=\"$t('settings.background')\"\n            />\n            <ColorInput\n              v-model=\"tabTextColorLocal\"\n              name=\"tabTextColor\"\n              :fallback=\"previewTheme.colors.tabText\"\n              :label=\"$t('settings.text')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.tabText\" />\n            <ColorInput\n              v-model=\"tabActiveTextColorLocal\"\n              name=\"tabActiveTextColor\"\n              :fallback=\"previewTheme.colors.tabActiveText\"\n              :label=\"$t('settings.text')\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.tabActiveText\" />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.borders') }}</h4>\n            <ColorInput\n              v-model=\"borderColorLocal\"\n              name=\"borderColor\"\n              :fallback=\"previewTheme.colors.border\"\n              :label=\"$t('settings.style.common.color')\"\n            />\n            <OpacityInput\n              v-model=\"borderOpacityLocal\"\n              name=\"borderOpacity\"\n              :fallback=\"previewTheme.opacity.border\"\n              :disabled=\"borderColorLocal === 'transparent'\"\n            />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.faint_text') }}</h4>\n            <ColorInput\n              v-model=\"faintColorLocal\"\n              name=\"faintColor\"\n              :fallback=\"previewTheme.colors.faint\"\n              :label=\"$t('settings.text')\"\n            />\n            <ColorInput\n              v-model=\"faintLinkColorLocal\"\n              name=\"faintLinkColor\"\n              :fallback=\"previewTheme.colors.faintLink\"\n              :label=\"$t('settings.links')\"\n            />\n            <ColorInput\n              v-model=\"panelFaintColorLocal\"\n              name=\"panelFaintColor\"\n              :fallback=\"previewTheme.colors.panelFaint\"\n              :label=\"$t('settings.style.advanced_colors.panel_header')\"\n            />\n            <OpacityInput\n              v-model=\"faintOpacityLocal\"\n              name=\"faintOpacity\"\n              :fallback=\"previewTheme.opacity.faint\"\n            />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.underlay') }}</h4>\n            <ColorInput\n              v-model=\"underlayColorLocal\"\n              name=\"underlay\"\n              :label=\"$t('settings.style.advanced_colors.underlay')\"\n              :fallback=\"previewTheme.colors.underlay\"\n            />\n            <OpacityInput\n              v-model=\"underlayOpacityLocal\"\n              name=\"underlayOpacity\"\n              :fallback=\"previewTheme.opacity.underlay\"\n              :disabled=\"underlayOpacityLocal === 'transparent'\"\n            />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.wallpaper') }}</h4>\n            <ColorInput\n              v-model=\"wallpaperColorLocal\"\n              name=\"wallpaper\"\n              :label=\"$t('settings.style.advanced_colors.wallpaper')\"\n              :fallback=\"previewTheme.colors.wallpaper\"\n            />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.poll') }}</h4>\n            <ColorInput\n              v-model=\"pollColorLocal\"\n              name=\"poll\"\n              :label=\"$t('settings.background')\"\n              :fallback=\"previewTheme.colors.poll\"\n            />\n            <ColorInput\n              v-model=\"pollTextColorLocal\"\n              name=\"pollText\"\n              :label=\"$t('settings.text')\"\n              :fallback=\"previewTheme.colors.pollText\"\n            />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.icons') }}</h4>\n            <ColorInput\n              v-model=\"iconColorLocal\"\n              name=\"icon\"\n              :label=\"$t('settings.style.advanced_colors.icons')\"\n              :fallback=\"previewTheme.colors.icon\"\n            />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.highlight') }}</h4>\n            <ColorInput\n              v-model=\"highlightColorLocal\"\n              name=\"highlight\"\n              :label=\"$t('settings.background')\"\n              :fallback=\"previewTheme.colors.highlight\"\n            />\n            <ColorInput\n              v-model=\"highlightTextColorLocal\"\n              name=\"highlightText\"\n              :label=\"$t('settings.text')\"\n              :fallback=\"previewTheme.colors.highlightText\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.highlightText\" />\n            <ColorInput\n              v-model=\"highlightLinkColorLocal\"\n              name=\"highlightLink\"\n              :label=\"$t('settings.links')\"\n              :fallback=\"previewTheme.colors.highlightLink\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.highlightLink\" />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.popover') }}</h4>\n            <ColorInput\n              v-model=\"popoverColorLocal\"\n              name=\"popover\"\n              :label=\"$t('settings.background')\"\n              :fallback=\"previewTheme.colors.popover\"\n            />\n            <OpacityInput\n              v-model=\"popoverOpacityLocal\"\n              name=\"popoverOpacity\"\n              :fallback=\"previewTheme.opacity.popover\"\n              :disabled=\"popoverOpacityLocal === 'transparent'\"\n            />\n            <ColorInput\n              v-model=\"popoverTextColorLocal\"\n              name=\"popoverText\"\n              :label=\"$t('settings.text')\"\n              :fallback=\"previewTheme.colors.popoverText\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.popoverText\" />\n            <ColorInput\n              v-model=\"popoverLinkColorLocal\"\n              name=\"popoverLink\"\n              :label=\"$t('settings.links')\"\n              :fallback=\"previewTheme.colors.popoverLink\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.popoverLink\" />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.selectedPost') }}</h4>\n            <ColorInput\n              v-model=\"selectedPostColorLocal\"\n              name=\"selectedPost\"\n              :label=\"$t('settings.background')\"\n              :fallback=\"previewTheme.colors.selectedPost\"\n            />\n            <ColorInput\n              v-model=\"selectedPostTextColorLocal\"\n              name=\"selectedPostText\"\n              :label=\"$t('settings.text')\"\n              :fallback=\"previewTheme.colors.selectedPostText\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.selectedPostText\" />\n            <ColorInput\n              v-model=\"selectedPostLinkColorLocal\"\n              name=\"selectedPostLink\"\n              :label=\"$t('settings.links')\"\n              :fallback=\"previewTheme.colors.selectedPostLink\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.selectedPostLink\" />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('settings.style.advanced_colors.selectedMenu') }}</h4>\n            <ColorInput\n              v-model=\"selectedMenuColorLocal\"\n              name=\"selectedMenu\"\n              :label=\"$t('settings.background')\"\n              :fallback=\"previewTheme.colors.selectedMenu\"\n            />\n            <ColorInput\n              v-model=\"selectedMenuTextColorLocal\"\n              name=\"selectedMenuText\"\n              :label=\"$t('settings.text')\"\n              :fallback=\"previewTheme.colors.selectedMenuText\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.selectedMenuText\" />\n            <ColorInput\n              v-model=\"selectedMenuLinkColorLocal\"\n              name=\"selectedMenuLink\"\n              :label=\"$t('settings.links')\"\n              :fallback=\"previewTheme.colors.selectedMenuLink\"\n            />\n            <ContrastRatio :contrast=\"previewContrast.selectedMenuLink\" />\n          </div>\n          <div class=\"color-item\">\n            <h4>{{ $t('chats.chats') }}</h4>\n            <ColorInput\n              v-model=\"chatBgColorLocal\"\n              name=\"chatBgColor\"\n              :fallback=\"previewTheme.colors.bg\"\n              :label=\"$t('settings.background')\"\n            />\n            <h5>{{ $t('settings.style.advanced_colors.chat.incoming') }}</h5>\n            <ColorInput\n              v-model=\"chatMessageIncomingBgColorLocal\"\n              name=\"chatMessageIncomingBgColor\"\n              :fallback=\"previewTheme.colors.bg\"\n              :label=\"$t('settings.background')\"\n            />\n            <ColorInput\n              v-model=\"chatMessageIncomingTextColorLocal\"\n              name=\"chatMessageIncomingTextColor\"\n              :fallback=\"previewTheme.colors.text\"\n              :label=\"$t('settings.text')\"\n            />\n            <ColorInput\n              v-model=\"chatMessageIncomingLinkColorLocal\"\n              name=\"chatMessageIncomingLinkColor\"\n              :fallback=\"previewTheme.colors.link\"\n              :label=\"$t('settings.links')\"\n            />\n            <ColorInput\n              v-model=\"chatMessageIncomingBorderColorLocal\"\n              name=\"chatMessageIncomingBorderLinkColor\"\n              :fallback=\"previewTheme.colors.fg\"\n              :label=\"$t('settings.style.advanced_colors.chat.border')\"\n            />\n            <h5>{{ $t('settings.style.advanced_colors.chat.outgoing') }}</h5>\n            <ColorInput\n              v-model=\"chatMessageOutgoingBgColorLocal\"\n              name=\"chatMessageOutgoingBgColor\"\n              :fallback=\"previewTheme.colors.bg\"\n              :label=\"$t('settings.background')\"\n            />\n            <ColorInput\n              v-model=\"chatMessageOutgoingTextColorLocal\"\n              name=\"chatMessageOutgoingTextColor\"\n              :fallback=\"previewTheme.colors.text\"\n              :label=\"$t('settings.text')\"\n            />\n            <ColorInput\n              v-model=\"chatMessageOutgoingLinkColorLocal\"\n              name=\"chatMessageOutgoingLinkColor\"\n              :fallback=\"previewTheme.colors.link\"\n              :label=\"$t('settings.links')\"\n            />\n            <ColorInput\n              v-model=\"chatMessageOutgoingBorderColorLocal\"\n              name=\"chatMessageOutgoingBorderLinkColor\"\n              :fallback=\"previewTheme.colors.bg\"\n              :label=\"$t('settings.style.advanced_colors.chat.border')\"\n            />\n          </div>\n        </div>\n\n        <div\n          :label=\"$t('settings.style.radii._tab_label')\"\n          class=\"radius-container\"\n        >\n          <div class=\"tab-header\">\n            <p>{{ $t('settings.radii_help') }}</p>\n            <button\n              class=\"btn button-default\"\n              @click=\"clearRoundness\"\n            >\n              {{ $t('settings.style.switcher.clear_all') }}\n            </button>\n          </div>\n          <RangeInput\n            v-model=\"btnRadiusLocal\"\n            name=\"btnRadius\"\n            :label=\"$t('settings.btnRadius')\"\n            :fallback=\"previewTheme.radii.btn\"\n            max=\"16\"\n            hard-min=\"0\"\n          />\n          <RangeInput\n            v-model=\"inputRadiusLocal\"\n            name=\"inputRadius\"\n            :label=\"$t('settings.inputRadius')\"\n            :fallback=\"previewTheme.radii.input\"\n            max=\"9\"\n            hard-min=\"0\"\n          />\n          <RangeInput\n            v-model=\"checkboxRadiusLocal\"\n            name=\"checkboxRadius\"\n            :label=\"$t('settings.checkboxRadius')\"\n            :fallback=\"previewTheme.radii.checkbox\"\n            max=\"16\"\n            hard-min=\"0\"\n          />\n          <RangeInput\n            v-model=\"panelRadiusLocal\"\n            name=\"panelRadius\"\n            :label=\"$t('settings.panelRadius')\"\n            :fallback=\"previewTheme.radii.panel\"\n            max=\"50\"\n            hard-min=\"0\"\n          />\n          <RangeInput\n            v-model=\"avatarRadiusLocal\"\n            name=\"avatarRadius\"\n            :label=\"$t('settings.avatarRadius')\"\n            :fallback=\"previewTheme.radii.avatar\"\n            max=\"28\"\n            hard-min=\"0\"\n          />\n          <RangeInput\n            v-model=\"avatarAltRadiusLocal\"\n            name=\"avatarAltRadius\"\n            :label=\"$t('settings.avatarAltRadius')\"\n            :fallback=\"previewTheme.radii.avatarAlt\"\n            max=\"28\"\n            hard-min=\"0\"\n          />\n          <RangeInput\n            v-model=\"attachmentRadiusLocal\"\n            name=\"attachmentRadius\"\n            :label=\"$t('settings.attachmentRadius')\"\n            :fallback=\"previewTheme.radii.attachment\"\n            max=\"50\"\n            hard-min=\"0\"\n          />\n          <RangeInput\n            v-model=\"tooltipRadiusLocal\"\n            name=\"tooltipRadius\"\n            :label=\"$t('settings.tooltipRadius')\"\n            :fallback=\"previewTheme.radii.tooltip\"\n            max=\"50\"\n            hard-min=\"0\"\n          />\n          <RangeInput\n            v-model=\"chatMessageRadiusLocal\"\n            name=\"chatMessageRadius\"\n            :label=\"$t('settings.chatMessageRadius')\"\n            :fallback=\"previewTheme.radii.chatMessage || 2\"\n            max=\"50\"\n            hard-min=\"0\"\n          />\n        </div>\n\n        <div\n          :label=\"$t('settings.style.shadows._tab_label')\"\n          class=\"shadow-container\"\n        >\n          <div class=\"tab-header shadow-selector\">\n            <div class=\"select-container\">\n              {{ $t('settings.style.shadows.component') }}\n              {{ ' ' }}\n              <Select\n                id=\"shadow-switcher\"\n                v-model=\"shadowSelected\"\n                class=\"shadow-switcher\"\n              >\n                <option\n                  v-for=\"shadow in shadowsAvailable\"\n                  :key=\"shadow\"\n                  :value=\"shadow\"\n                >\n                  {{ $t('settings.style.shadows.components.' + shadow) }}\n                </option>\n              </Select>\n            </div>\n            <div class=\"override\">\n              <label\n                for=\"override\"\n                class=\"label\"\n              >\n                {{ $t('settings.style.shadows.override') }}\n              </label>\n              {{ ' ' }}\n              <input\n                id=\"override\"\n                v-model=\"currentShadowOverriden\"\n                name=\"override\"\n                class=\"input-override\"\n                type=\"checkbox\"\n              >\n              <label\n                class=\"checkbox-label\"\n                for=\"override\"\n              />\n            </div>\n            <button\n              class=\"btn button-default\"\n              @click=\"clearShadows\"\n            >\n              {{ $t('settings.style.switcher.clear_all') }}\n            </button>\n          </div>\n          <ShadowControl\n            v-model=\"currentShadow\"\n            :ready=\"!!currentShadowFallback\"\n            :fallback=\"currentShadowFallback\"\n          />\n          <div v-if=\"shadowSelected === 'avatar' || shadowSelected === 'avatarStatus'\">\n            <i18n-t\n              scope=\"global\"\n              keypath=\"settings.style.shadows.filter_hint.always_drop_shadow\"\n              tag=\"p\"\n            >\n              <code>filter: drop-shadow()</code>\n            </i18n-t>\n            <p>{{ $t('settings.style.shadows.filter_hint.avatar_inset') }}</p>\n            <i18n-t\n              scope=\"global\"\n              keypath=\"settings.style.shadows.filter_hint.drop_shadow_syntax\"\n              tag=\"p\"\n            >\n              <code>drop-shadow</code>\n              <code>spread-radius</code>\n              <code>inset</code>\n            </i18n-t>\n            <i18n-t\n              scope=\"global\"\n              keypath=\"settings.style.shadows.filter_hint.inset_classic\"\n              tag=\"p\"\n            >\n              <code>box-shadow</code>\n            </i18n-t>\n            <p>{{ $t('settings.style.shadows.filter_hint.spread_zero') }}</p>\n          </div>\n        </div>\n\n        <div\n          :label=\"$t('settings.style.fonts._tab_label')\"\n          class=\"fonts-container\"\n        >\n          <div class=\"tab-header\">\n            <p>{{ $t('settings.style.fonts.help') }}</p>\n            <button\n              class=\"btn button-default\"\n              @click=\"clearFonts\"\n            >\n              {{ $t('settings.style.switcher.clear_all') }}\n            </button>\n          </div>\n          <FontControl\n            v-model=\"fontsLocal.interface\"\n            name=\"ui\"\n            :label=\"$t('settings.style.fonts.components.interface')\"\n            :fallback=\"previewTheme.fonts.interface\"\n            no-inherit=\"1\"\n          />\n          <FontControl\n            v-model=\"fontsLocal.input\"\n            name=\"input\"\n            :label=\"$t('settings.style.fonts.components.input')\"\n            :fallback=\"previewTheme.fonts.input\"\n          />\n          <FontControl\n            v-model=\"fontsLocal.post\"\n            name=\"post\"\n            :label=\"$t('settings.style.fonts.components.post')\"\n            :fallback=\"previewTheme.fonts.post\"\n          />\n          <FontControl\n            v-model=\"fontsLocal.postCode\"\n            name=\"postCode\"\n            :label=\"$t('settings.style.fonts.components.postCode')\"\n            :fallback=\"previewTheme.fonts.postCode\"\n          />\n        </div>\n      </tab-switcher>\n    </keep-alive>\n\n    <teleport\n      v-if=\"isActive\"\n      to=\"#unscrolled-content\"\n    >\n      <div class=\"apply-container\">\n        <button\n          class=\"btn button-default submit\"\n          :disabled=\"!themeValid\"\n          @click=\"setCustomTheme\"\n        >\n          {{ $t('general.apply') }}\n        </button>\n        <button\n          class=\"btn button-default\"\n          @click=\"clearAll\"\n        >\n          {{ $t('settings.style.switcher.reset') }}\n        </button>\n      </div>\n    </teleport>\n  </div>\n</template>\n\n<script src=\"./theme_tab.js\"></script>\n\n<style src=\"./theme_tab.scss\" lang=\"scss\"></style>\n","<template>\n  <div\n    class=\"color-input style-control\"\n    :class=\"{ disabled: !present || disabled }\"\n  >\n    <label\n      :for=\"name\"\n      class=\"label\"\n    >\n      {{ label }}\n    </label>\n    <Checkbox\n      v-if=\"typeof fallback !== 'undefined' && showOptionalTickbox\"\n      :model-value=\"present\"\n      :disabled=\"disabled\"\n      class=\"opt\"\n      @update:modelValue=\"$emit('update:modelValue', typeof modelValue === 'undefined' ? fallback : undefined)\"\n    />\n    <div class=\"input color-input-field\">\n      <input\n        :id=\"name + '-t'\"\n        class=\"textColor unstyled\"\n        type=\"text\"\n        :value=\"modelValue || fallback\"\n        :disabled=\"!present || disabled\"\n        @input=\"$emit('update:modelValue', $event.target.value)\"\n      >\n      <input\n        v-if=\"validColor\"\n        :id=\"name\"\n        class=\"nativeColor unstyled\"\n        type=\"color\"\n        :value=\"modelValue || fallback\"\n        :disabled=\"!present || disabled\"\n        @input=\"$emit('update:modelValue', $event.target.value)\"\n      >\n      <div\n        v-if=\"transparentColor\"\n        class=\"transparentIndicator\"\n      />\n      <div\n        v-if=\"computedColor\"\n        class=\"computedIndicator\"\n        :style=\"{backgroundColor: fallback}\"\n      />\n    </div>\n  </div>\n</template>\n<style lang=\"scss\" src=\"./color_input.scss\"></style>\n<script>\nimport Checkbox from '../checkbox/checkbox.vue'\nimport { hex2rgb } from '../../services/color_convert/color_convert.js'\nexport default {\n  components: {\n    Checkbox\n  },\n  props: {\n    // Name of color, used for identifying\n    name: {\n      required: true,\n      type: String\n    },\n    // Readable label\n    label: {\n      required: true,\n      type: String\n    },\n    // Color value, should be required but vue cannot tell the difference\n    // between \"property missing\" and \"property set to undefined\"\n    modelValue: {\n      required: false,\n      type: String,\n      default: undefined\n    },\n    // Color fallback to use when value is not defeind\n    fallback: {\n      required: false,\n      type: String,\n      default: undefined\n    },\n    // Disable the control\n    disabled: {\n      required: false,\n      type: Boolean,\n      default: false\n    },\n    // Show \"optional\" tickbox, for when value might become mandatory\n    showOptionalTickbox: {\n      required: false,\n      type: Boolean,\n      default: true\n    }\n  },\n  emits: ['update:modelValue'],\n  computed: {\n    present () {\n      return typeof this.modelValue !== 'undefined'\n    },\n    validColor () {\n      return hex2rgb(this.modelValue || this.fallback)\n    },\n    transparentColor () {\n      return this.modelValue === 'transparent'\n    },\n    computedColor () {\n      return this.modelValue && this.modelValue.startsWith('--')\n    }\n  }\n}\n</script>\n\n<style lang=\"scss\">\n.color-control {\n  input.text-input {\n    max-width: 7em;\n    flex: 1;\n  }\n}\n</style>\n","import { render } from \"./color_input.vue?vue&type=template&id=54780100\"\nimport script from \"./color_input.vue?vue&type=script&lang=js\"\nexport * from \"./color_input.vue?vue&type=script&lang=js\"\n\nimport \"./color_input.scss?vue&type=style&index=0&lang=scss\"\nimport \"./color_input.vue?vue&type=style&index=1&id=54780100&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    class=\"range-control style-control\"\n    :class=\"{ disabled: !present || disabled }\"\n  >\n    <label\n      :for=\"name\"\n      class=\"label\"\n    >\n      {{ label }}\n    </label>\n    <input\n      v-if=\"typeof fallback !== 'undefined'\"\n      :id=\"name + '-o'\"\n      class=\"opt\"\n      type=\"checkbox\"\n      :checked=\"present\"\n      @change=\"$emit('update:modelValue', !present ? fallback : undefined)\"\n    >\n    <label\n      v-if=\"typeof fallback !== 'undefined'\"\n      class=\"opt-l\"\n      :for=\"name + '-o'\"\n    />\n    <input\n      :id=\"name\"\n      class=\"input-number\"\n      type=\"range\"\n      :value=\"modelValue || fallback\"\n      :disabled=\"!present || disabled\"\n      :max=\"max || hardMax || 100\"\n      :min=\"min || hardMin || 0\"\n      :step=\"step || 1\"\n      @input=\"$emit('update:modelValue', $event.target.value)\"\n    >\n    <input\n      :id=\"name\"\n      class=\"input-number\"\n      type=\"number\"\n      :value=\"modelValue || fallback\"\n      :disabled=\"!present || disabled\"\n      :max=\"hardMax\"\n      :min=\"hardMin\"\n      :step=\"step || 1\"\n      @input=\"$emit('update:modelValue', $event.target.value)\"\n    >\n  </div>\n</template>\n\n<script>\nexport default {\n  props: [\n    'name', 'modelValue', 'fallback', 'disabled', 'label', 'max', 'min', 'step', 'hardMin', 'hardMax'\n  ],\n  emits: ['update:modelValue'],\n  computed: {\n    present () {\n      return typeof this.modelValue !== 'undefined'\n    }\n  }\n}\n</script>\n","import { render } from \"./range_input.vue?vue&type=template&id=7ecff9e8\"\nimport script from \"./range_input.vue?vue&type=script&lang=js\"\nexport * from \"./range_input.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    class=\"opacity-control style-control\"\n    :class=\"{ disabled: !present || disabled }\"\n  >\n    <label\n      :for=\"name\"\n      class=\"label\"\n    >\n      {{ $t('settings.style.common.opacity') }}\n    </label>\n    <Checkbox\n      v-if=\"typeof fallback !== 'undefined'\"\n      :model-value=\"present\"\n      :disabled=\"disabled\"\n      class=\"opt\"\n      @update:modelValue=\"$emit('update:modelValue', !present ? fallback : undefined)\"\n    />\n    <input\n      :id=\"name\"\n      class=\"input-number\"\n      type=\"number\"\n      :value=\"modelValue || fallback\"\n      :disabled=\"!present || disabled\"\n      max=\"1\"\n      min=\"0\"\n      step=\".05\"\n      @input=\"$emit('update:modelValue', $event.target.value)\"\n    >\n  </div>\n</template>\n\n<script>\nimport Checkbox from '../checkbox/checkbox.vue'\nexport default {\n  components: {\n    Checkbox\n  },\n  props: [\n    'name', 'modelValue', 'fallback', 'disabled'\n  ],\n  emits: ['update:modelValue'],\n  computed: {\n    present () {\n      return typeof this.modelValue !== 'undefined'\n    }\n  }\n}\n</script>\n","import { render } from \"./opacity_input.vue?vue&type=template&id=69949f84\"\nimport script from \"./opacity_input.vue?vue&type=script&lang=js\"\nexport * from \"./opacity_input.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    class=\"shadow-control\"\n    :class=\"{ disabled: !present }\"\n  >\n    <div class=\"shadow-preview-container\">\n      <div\n        :disabled=\"!present\"\n        class=\"y-shift-control\"\n      >\n        <input\n          v-model=\"selected.y\"\n          :disabled=\"!present\"\n          class=\"input-number\"\n          type=\"number\"\n        >\n        <div class=\"wrap\">\n          <input\n            v-model=\"selected.y\"\n            :disabled=\"!present\"\n            class=\"input-range\"\n            type=\"range\"\n            max=\"20\"\n            min=\"-20\"\n          >\n        </div>\n      </div>\n      <div class=\"preview-window\">\n        <div\n          class=\"preview-block\"\n          :style=\"style\"\n        />\n      </div>\n      <div\n        :disabled=\"!present\"\n        class=\"x-shift-control\"\n      >\n        <input\n          v-model=\"selected.x\"\n          :disabled=\"!present\"\n          class=\"input-number\"\n          type=\"number\"\n        >\n        <div class=\"wrap\">\n          <input\n            v-model=\"selected.x\"\n            :disabled=\"!present\"\n            class=\"input-range\"\n            type=\"range\"\n            max=\"20\"\n            min=\"-20\"\n          >\n        </div>\n      </div>\n    </div>\n\n    <div class=\"shadow-tweak\">\n      <div\n        :disabled=\"usingFallback\"\n        class=\"id-control style-control\"\n      >\n        <Select\n          id=\"shadow-switcher\"\n          v-model=\"selectedId\"\n          class=\"shadow-switcher\"\n          :disabled=\"!ready || usingFallback\"\n        >\n          <option\n            v-for=\"(shadow, index) in cValue\"\n            :key=\"index\"\n            :value=\"index\"\n          >\n            {{ $t('settings.style.shadows.shadow_id', { value: index }) }}\n          </option>\n        </Select>\n        <button\n          class=\"btn button-default\"\n          :disabled=\"!ready || !present\"\n          @click=\"del\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"times\"\n          />\n        </button>\n        <button\n          class=\"btn button-default\"\n          :disabled=\"!moveUpValid\"\n          @click=\"moveUp\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"chevron-up\"\n          />\n        </button>\n        <button\n          class=\"btn button-default\"\n          :disabled=\"!moveDnValid\"\n          @click=\"moveDn\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"chevron-down\"\n          />\n        </button>\n        <button\n          class=\"btn button-default\"\n          :disabled=\"usingFallback\"\n          @click=\"add\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"plus\"\n          />\n        </button>\n      </div>\n      <div\n        :disabled=\"!present\"\n        class=\"inset-control style-control\"\n      >\n        <label\n          for=\"inset\"\n          class=\"label\"\n        >\n          {{ $t('settings.style.shadows.inset') }}\n        </label>\n        <input\n          id=\"inset\"\n          v-model=\"selected.inset\"\n          :disabled=\"!present\"\n          name=\"inset\"\n          class=\"input-inset\"\n          type=\"checkbox\"\n        >\n        <label\n          class=\"checkbox-label\"\n          for=\"inset\"\n        />\n      </div>\n      <div\n        :disabled=\"!present\"\n        class=\"blur-control style-control\"\n      >\n        <label\n          for=\"spread\"\n          class=\"label\"\n        >\n          {{ $t('settings.style.shadows.blur') }}\n        </label>\n        <input\n          id=\"blur\"\n          v-model=\"selected.blur\"\n          :disabled=\"!present\"\n          name=\"blur\"\n          class=\"input-range\"\n          type=\"range\"\n          max=\"20\"\n          min=\"0\"\n        >\n        <input\n          v-model=\"selected.blur\"\n          :disabled=\"!present\"\n          class=\"input-number\"\n          type=\"number\"\n          min=\"0\"\n        >\n      </div>\n      <div\n        :disabled=\"!present\"\n        class=\"spread-control style-control\"\n      >\n        <label\n          for=\"spread\"\n          class=\"label\"\n        >\n          {{ $t('settings.style.shadows.spread') }}\n        </label>\n        <input\n          id=\"spread\"\n          v-model=\"selected.spread\"\n          :disabled=\"!present\"\n          name=\"spread\"\n          class=\"input-range\"\n          type=\"range\"\n          max=\"20\"\n          min=\"-20\"\n        >\n        <input\n          v-model=\"selected.spread\"\n          :disabled=\"!present\"\n          class=\"input-number\"\n          type=\"number\"\n        >\n      </div>\n      <ColorInput\n        v-model=\"selected.color\"\n        :disabled=\"!present\"\n        :label=\"$t('settings.style.common.color')\"\n        :fallback=\"currentFallback.color\"\n        :show-optional-tickbox=\"false\"\n        name=\"shadow\"\n      />\n      <OpacityInput\n        v-model=\"selected.alpha\"\n        :disabled=\"!present\"\n      />\n      <i18n-t\n        scope=\"global\"\n        keypath=\"settings.style.shadows.hintV3\"\n        tag=\"p\"\n      >\n        <code>--variable,mod</code>\n      </i18n-t>\n    </div>\n  </div>\n</template>\n\n<script src=\"./shadow_control.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n.shadow-control {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: center;\n  margin-bottom: 1em;\n\n  .shadow-preview-container,\n  .shadow-tweak {\n    margin: 5px 6px 0 0;\n  }\n  .shadow-preview-container {\n    flex: 0;\n    display: flex;\n    flex-wrap: wrap;\n\n    $side: 15em;\n\n    input[type=number] {\n      width: 5em;\n      min-width: 2em;\n    }\n    .x-shift-control,\n    .y-shift-control {\n      display: flex;\n      flex: 0;\n\n      &[disabled=disabled] *{\n        opacity: .5\n      }\n\n    }\n\n    .x-shift-control {\n      align-items: flex-start;\n    }\n\n    .x-shift-control .wrap,\n    input[type=range] {\n      margin: 0;\n      width: $side;\n      height: 2em;\n    }\n    .y-shift-control {\n      flex-direction: column;\n      align-items: flex-end;\n      .wrap {\n        width: 2em;\n        height: $side;\n      }\n      input[type=range] {\n        transform-origin: 1em 1em;\n        transform: rotate(90deg);\n      }\n    }\n    .preview-window {\n      flex: 1;\n      background-color: #999999;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      background-image:\n      linear-gradient(45deg, #666666 25%, transparent 25%),\n      linear-gradient(-45deg, #666666 25%, transparent 25%),\n      linear-gradient(45deg, transparent 75%, #666666 75%),\n      linear-gradient(-45deg, transparent 75%, #666666 75%);\n      background-size: 20px 20px;\n      background-position:0 0, 0 10px, 10px -10px, -10px 0;\n\n      border-radius: $fallback--inputRadius;\n      border-radius: var(--inputRadius, $fallback--inputRadius);\n\n      .preview-block {\n        width: 33%;\n        height: 33%;\n        background-color: $fallback--bg;\n        background-color: var(--bg, $fallback--bg);\n        border-radius: $fallback--panelRadius;\n        border-radius: var(--panelRadius, $fallback--panelRadius);\n      }\n    }\n  }\n\n  .shadow-tweak {\n    flex: 1;\n    min-width: 280px;\n\n    .id-control {\n      align-items: stretch;\n\n      .shadow-switcher {\n        flex: 1;\n      }\n\n      .shadow-switcher, .btn {\n        min-width: 1px;\n        margin-right: 5px;\n      }\n\n      .btn {\n        padding: 0 .4em;\n        margin: 0 .1em;\n      }\n    }\n  }\n}\n</style>\n","import ColorInput from '../color_input/color_input.vue'\nimport OpacityInput from '../opacity_input/opacity_input.vue'\nimport Select from '../select/select.vue'\nimport { getCssShadow } from '../../services/style_setter/style_setter.js'\nimport { hex2rgb } from '../../services/color_convert/color_convert.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes,\n  faChevronDown,\n  faChevronUp,\n  faPlus\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faChevronDown,\n  faChevronUp,\n  faTimes,\n  faPlus\n)\n\nconst toModel = (object = {}) => ({\n  x: 0,\n  y: 0,\n  blur: 0,\n  spread: 0,\n  inset: false,\n  color: '#000000',\n  alpha: 1,\n  ...object\n})\n\nexport default {\n  // 'modelValue' and 'Fallback' can be undefined, but if they are\n  // initially vue won't detect it when they become something else\n  // therefore i'm using \"ready\" which should be passed as true when\n  // data becomes available\n  props: [\n    'modelValue', 'fallback', 'ready'\n  ],\n  emits: ['update:modelValue'],\n  data () {\n    return {\n      selectedId: 0,\n      // TODO there are some bugs regarding display of array (it's not getting updated when deleting for some reason)\n      cValue: (this.modelValue || this.fallback || []).map(toModel)\n    }\n  },\n  components: {\n    ColorInput,\n    OpacityInput,\n    Select\n  },\n  methods: {\n    add () {\n      this.cValue.push(toModel(this.selected))\n      this.selectedId = this.cValue.length - 1\n    },\n    del () {\n      this.cValue.splice(this.selectedId, 1)\n      this.selectedId = this.cValue.length === 0 ? undefined : Math.max(this.selectedId - 1, 0)\n    },\n    moveUp () {\n      const movable = this.cValue.splice(this.selectedId, 1)[0]\n      this.cValue.splice(this.selectedId - 1, 0, movable)\n      this.selectedId -= 1\n    },\n    moveDn () {\n      const movable = this.cValue.splice(this.selectedId, 1)[0]\n      this.cValue.splice(this.selectedId + 1, 0, movable)\n      this.selectedId += 1\n    }\n  },\n  beforeUpdate () {\n    this.cValue = this.modelValue || this.fallback\n  },\n  computed: {\n    anyShadows () {\n      return this.cValue.length > 0\n    },\n    anyShadowsFallback () {\n      return this.fallback.length > 0\n    },\n    selected () {\n      if (this.ready && this.anyShadows) {\n        return this.cValue[this.selectedId]\n      } else {\n        return toModel({})\n      }\n    },\n    currentFallback () {\n      if (this.ready && this.anyShadowsFallback) {\n        return this.fallback[this.selectedId]\n      } else {\n        return toModel({})\n      }\n    },\n    moveUpValid () {\n      return this.ready && this.selectedId > 0\n    },\n    moveDnValid () {\n      return this.ready && this.selectedId < this.cValue.length - 1\n    },\n    present () {\n      return this.ready &&\n        typeof this.cValue[this.selectedId] !== 'undefined' &&\n        !this.usingFallback\n    },\n    usingFallback () {\n      return typeof this.modelValue === 'undefined'\n    },\n    rgb () {\n      return hex2rgb(this.selected.color)\n    },\n    style () {\n      return this.ready ? {\n        boxShadow: getCssShadow(this.fallback)\n      } : {}\n    }\n  }\n}\n","import { render } from \"./shadow_control.vue?vue&type=template&id=02a2d813\"\nimport script from \"./shadow_control.js?vue&type=script&lang=js\"\nexport * from \"./shadow_control.js?vue&type=script&lang=js\"\n\nimport \"./shadow_control.vue?vue&type=style&index=0&id=02a2d813&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    class=\"font-control style-control\"\n    :class=\"{ custom: isCustom }\"\n  >\n    <label\n      :for=\"preset === 'custom' ? name : name + '-font-switcher'\"\n      class=\"label\"\n    >\n      {{ label }}\n    </label>\n    <input\n      v-if=\"typeof fallback !== 'undefined'\"\n      :id=\"name + '-o'\"\n      class=\"opt exlcude-disabled\"\n      type=\"checkbox\"\n      :checked=\"present\"\n      @change=\"$emit('update:modelValue', typeof modelValue === 'undefined' ? fallback : undefined)\"\n    >\n    <label\n      v-if=\"typeof fallback !== 'undefined'\"\n      class=\"opt-l\"\n      :for=\"name + '-o'\"\n    />\n    {{ ' ' }}\n    <Select\n      :id=\"name + '-font-switcher'\"\n      v-model=\"preset\"\n      :disabled=\"!present\"\n      class=\"font-switcher\"\n    >\n      <option\n        v-for=\"option in availableOptions\"\n        :key=\"option\"\n        :value=\"option\"\n      >\n        {{ option === 'custom' ? $t('settings.style.fonts.custom') : option }}\n      </option>\n    </Select>\n    <input\n      v-if=\"isCustom\"\n      :id=\"name\"\n      v-model=\"family\"\n      class=\"custom-font\"\n      type=\"text\"\n    >\n  </div>\n</template>\n\n<script src=\"./font_control.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n.font-control {\n  input.custom-font {\n    min-width: 10em;\n  }\n  &.custom {\n    /* TODO Should make proper joiners... */\n    .font-switcher {\n      border-top-right-radius: 0;\n      border-bottom-right-radius: 0;\n    }\n    .custom-font {\n      border-top-left-radius: 0;\n      border-bottom-left-radius: 0;\n    }\n  }\n}\n</style>\n","import { set } from 'lodash'\nimport Select from '../select/select.vue'\n\nexport default {\n  components: {\n    Select\n  },\n  props: [\n    'name', 'label', 'modelValue', 'fallback', 'options', 'no-inherit'\n  ],\n  emits: ['update:modelValue'],\n  data () {\n    return {\n      lValue: this.modelValue,\n      availableOptions: [\n        this.noInherit ? '' : 'inherit',\n        'custom',\n        ...(this.options || []),\n        'serif',\n        'monospace',\n        'sans-serif'\n      ].filter(_ => _)\n    }\n  },\n  beforeUpdate () {\n    this.lValue = this.modelValue\n  },\n  computed: {\n    present () {\n      return typeof this.lValue !== 'undefined'\n    },\n    dValue () {\n      return this.lValue || this.fallback || {}\n    },\n    family: {\n      get () {\n        return this.dValue.family\n      },\n      set (v) {\n        set(this.lValue, 'family', v)\n        this.$emit('update:modelValue', this.lValue)\n      }\n    },\n    isCustom () {\n      return this.preset === 'custom'\n    },\n    preset: {\n      get () {\n        if (this.family === 'serif' ||\n            this.family === 'sans-serif' ||\n            this.family === 'monospace' ||\n            this.family === 'inherit') {\n          return this.family\n        } else {\n          return 'custom'\n        }\n      },\n      set (v) {\n        this.family = v === 'custom' ? '' : v\n      }\n    }\n  }\n}\n","import { render } from \"./font_control.vue?vue&type=template&id=ceed00ba\"\nimport script from \"./font_control.js?vue&type=script&lang=js\"\nexport * from \"./font_control.js?vue&type=script&lang=js\"\n\nimport \"./font_control.vue?vue&type=style&index=0&id=ceed00ba&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <span\n    v-if=\"contrast\"\n    class=\"contrast-ratio\"\n  >\n    <span\n      :title=\"hint\"\n      class=\"rating\"\n    >\n      <span v-if=\"contrast.aaa\">\n        <FAIcon icon=\"thumbs-up\" />\n      </span>\n      <span v-if=\"!contrast.aaa && contrast.aa\">\n        <FAIcon icon=\"adjust\" />\n      </span>\n      <span v-if=\"!contrast.aaa && !contrast.aa\">\n        <FAIcon icon=\"exclamation-triangle\" />\n      </span>\n    </span>\n    <span\n      v-if=\"contrast && large\"\n      class=\"rating\"\n      :title=\"hint_18pt\"\n    >\n      <span v-if=\"contrast.laaa\">\n        <FAIcon icon=\"thumbs-up\" />\n      </span>\n      <span v-if=\"!contrast.laaa && contrast.laa\">\n        <FAIcon icon=\"adjust\" />\n      </span>\n      <span v-if=\"!contrast.laaa && !contrast.laa\">\n        <FAIcon icon=\"exclamation-triangle\" />\n      </span>\n    </span>\n  </span>\n</template>\n\n<script>\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faAdjust,\n  faExclamationTriangle,\n  faThumbsUp\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faAdjust,\n  faExclamationTriangle,\n  faThumbsUp\n)\n\nexport default {\n  props: {\n    large: {\n      required: false,\n      type: Boolean,\n      default: false\n    },\n    // TODO: Make theme switcher compute theme initially so that contrast\n    // component won't be called without contrast data\n    contrast: {\n      required: false,\n      type: Object,\n      default: () => ({})\n    }\n  },\n  computed: {\n    hint () {\n      const levelVal = this.contrast.aaa ? 'aaa' : (this.contrast.aa ? 'aa' : 'bad')\n      const level = this.$t(`settings.style.common.contrast.level.${levelVal}`)\n      const context = this.$t('settings.style.common.contrast.context.text')\n      const ratio = this.contrast.text\n      return this.$t('settings.style.common.contrast.hint', { level, context, ratio })\n    },\n    hint_18pt () {\n      const levelVal = this.contrast.laaa ? 'aaa' : (this.contrast.laa ? 'aa' : 'bad')\n      const level = this.$t(`settings.style.common.contrast.level.${levelVal}`)\n      const context = this.$t('settings.style.common.contrast.context.18pt')\n      const ratio = this.contrast.text\n      return this.$t('settings.style.common.contrast.hint', { level, context, ratio })\n    }\n  }\n}\n</script>\n\n<style lang=\"scss\">\n.contrast-ratio {\n  display: flex;\n  justify-content: flex-end;\n\n  margin-top: -4px;\n  margin-bottom: 5px;\n\n  .label {\n    margin-right: 1em;\n  }\n\n  .rating {\n    display: inline-block;\n    text-align: center;\n    margin-left: 0.5em;\n  }\n}\n</style>\n","import { render } from \"./contrast_ratio.vue?vue&type=template&id=6d90b7c4\"\nimport script from \"./contrast_ratio.vue?vue&type=script&lang=js\"\nexport * from \"./contrast_ratio.vue?vue&type=script&lang=js\"\n\nimport \"./contrast_ratio.vue?vue&type=style&index=0&id=6d90b7c4&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"preview-container\">\n    <div class=\"underlay underlay-preview\" />\n    <div class=\"panel dummy\">\n      <div class=\"panel-heading\">\n        <div class=\"title\">\n          {{ $t('settings.style.preview.header') }}\n          <span class=\"badge badge-notification\">\n            99\n          </span>\n        </div>\n        <span class=\"faint\">\n          {{ $t('settings.style.preview.header_faint') }}\n        </span>\n        <span class=\"alert error\">\n          {{ $t('settings.style.preview.error') }}\n        </span>\n        <button class=\"btn button-default\">\n          {{ $t('settings.style.preview.button') }}\n        </button>\n      </div>\n      <div class=\"panel-body theme-preview-content\">\n        <div class=\"post\">\n          <div class=\"avatar still-image\">\n            ( ͡° ͜ʖ ͡°)\n          </div>\n          <div class=\"content\">\n            <h4>\n              {{ $t('settings.style.preview.content') }}\n            </h4>\n\n            <i18n-t scope=\"global\" keypath=\"settings.style.preview.text\">\n              <code style=\"font-family: var(--postCodeFont)\">\n                {{ $t('settings.style.preview.mono') }}\n              </code>\n              <a style=\"color: var(--link)\">\n                {{ $t('settings.style.preview.link') }}\n              </a>\n            </i18n-t>\n\n            <div class=\"icons\">\n              <FAIcon\n                fixed-width\n                style=\"color: var(--cBlue)\"\n                class=\"fa-scale-110 fa-old-padding\"\n                icon=\"reply\"\n              />\n              <FAIcon\n                fixed-width\n                style=\"color: var(--cGreen)\"\n                class=\"fa-scale-110 fa-old-padding\"\n                icon=\"retweet\"\n              />\n              <FAIcon\n                fixed-width\n                style=\"color: var(--cOrange)\"\n                class=\"fa-scale-110 fa-old-padding\"\n                icon=\"star\"\n              />\n              <FAIcon\n                fixed-width\n                style=\"color: var(--cRed)\"\n                class=\"fa-scale-110 fa-old-padding\"\n                icon=\"times\"\n              />\n            </div>\n          </div>\n        </div>\n\n        <div class=\"after-post\">\n          <div class=\"avatar-alt\">\n            :^)\n          </div>\n          <div class=\"content\">\n            <i18n-t\n              keypath=\"settings.style.preview.fine_print\"\n              tag=\"span\"\n              class=\"faint\"\n              scope=\"global\"\n            >\n              <a style=\"color: var(--faintLink)\">\n                {{ $t('settings.style.preview.faint_link') }}\n              </a>\n            </i18n-t>\n          </div>\n        </div>\n        <div class=\"separator\" />\n\n        <span class=\"alert error\">\n          {{ $t('settings.style.preview.error') }}\n        </span>\n        <input\n          :value=\"$t('settings.style.preview.input')\"\n          type=\"text\"\n        >\n\n        <div class=\"actions\">\n          <span class=\"checkbox\">\n            <input\n              id=\"preview_checkbox\"\n              checked=\"very yes\"\n              type=\"checkbox\"\n            >\n            <label for=\"preview_checkbox\">{{ $t('settings.style.preview.checkbox') }}</label>\n          </span>\n          <button class=\"btn button-default\">\n            {{ $t('settings.style.preview.button') }}\n          </button>\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes,\n  faStar,\n  faRetweet,\n  faReply\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes,\n  faStar,\n  faRetweet,\n  faReply\n)\n\nexport default {}\n</script>\n\n<style lang=\"scss\">\n.preview-container {\n  position: relative;\n}\n.underlay-preview {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 10px;\n  right: 10px;\n}\n</style>\n","import { render } from \"./preview.vue?vue&type=template&id=1d72aedf\"\nimport script from \"./preview.vue?vue&type=script&lang=js\"\nexport * from \"./preview.vue?vue&type=script&lang=js\"\n\nimport \"./preview.vue?vue&type=style&index=0&id=1d72aedf&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import {\n  rgb2hex,\n  hex2rgb,\n  getContrastRatioLayers\n} from 'src/services/color_convert/color_convert.js'\nimport {\n  DEFAULT_SHADOWS,\n  generateColors,\n  generateShadows,\n  generateRadii,\n  generateFonts,\n  composePreset,\n  getThemes,\n  shadows2to3,\n  colors2to3\n} from 'src/services/style_setter/style_setter.js'\nimport {\n  newImporter,\n  newExporter\n} from 'src/services/export_import/export_import.js'\nimport {\n  SLOT_INHERITANCE\n} from 'src/services/theme_data/pleromafe.js'\nimport {\n  CURRENT_VERSION,\n  OPACITIES,\n  getLayers,\n  getOpacitySlot\n} from 'src/services/theme_data/theme_data.service.js'\nimport ColorInput from 'src/components/color_input/color_input.vue'\nimport RangeInput from 'src/components/range_input/range_input.vue'\nimport OpacityInput from 'src/components/opacity_input/opacity_input.vue'\nimport ShadowControl from 'src/components/shadow_control/shadow_control.vue'\nimport FontControl from 'src/components/font_control/font_control.vue'\nimport ContrastRatio from 'src/components/contrast_ratio/contrast_ratio.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\nimport Select from 'src/components/select/select.vue'\n\nimport Preview from './preview.vue'\n\n// List of color values used in v1\nconst v1OnlyNames = [\n  'bg',\n  'fg',\n  'text',\n  'link',\n  'cRed',\n  'cGreen',\n  'cBlue',\n  'cOrange'\n].map(_ => _ + 'ColorLocal')\n\nconst colorConvert = (color) => {\n  if (color.startsWith('--') || color === 'transparent') {\n    return color\n  } else {\n    return hex2rgb(color)\n  }\n}\n\nexport default {\n  data () {\n    return {\n      themeImporter: newImporter({\n        validator: this.importValidator,\n        onImport: this.onImport,\n        onImportFailure: this.onImportFailure\n      }),\n      themeExporter: newExporter({\n        filename: 'pleroma_theme',\n        getExportedObject: () => this.exportedTheme\n      }),\n      availableStyles: [],\n      selected: '',\n      selectedTheme: this.$store.getters.mergedConfig.theme,\n      themeWarning: undefined,\n      tempImportFile: undefined,\n      engineVersion: 0,\n\n      previewShadows: {},\n      previewColors: {},\n      previewRadii: {},\n      previewFonts: {},\n\n      shadowsInvalid: true,\n      colorsInvalid: true,\n      radiiInvalid: true,\n\n      keepColor: false,\n      keepShadows: false,\n      keepOpacity: false,\n      keepRoundness: false,\n      keepFonts: false,\n\n      ...Object.keys(SLOT_INHERITANCE)\n        .map(key => [key, ''])\n        .reduce((acc, [key, val]) => ({ ...acc, [ key + 'ColorLocal' ]: val }), {}),\n\n      ...Object.keys(OPACITIES)\n        .map(key => [key, ''])\n        .reduce((acc, [key, val]) => ({ ...acc, [ key + 'OpacityLocal' ]: val }), {}),\n\n      shadowSelected: undefined,\n      shadowsLocal: {},\n      fontsLocal: {},\n\n      btnRadiusLocal: '',\n      inputRadiusLocal: '',\n      checkboxRadiusLocal: '',\n      panelRadiusLocal: '',\n      avatarRadiusLocal: '',\n      avatarAltRadiusLocal: '',\n      attachmentRadiusLocal: '',\n      tooltipRadiusLocal: '',\n      chatMessageRadiusLocal: ''\n    }\n  },\n  created () {\n    const self = this\n\n    getThemes()\n      .then((promises) => {\n        return Promise.all(\n          Object.entries(promises)\n            .map(([k, v]) => v.then(res => [k, res]))\n        )\n      })\n      .then(themes => themes.reduce((acc, [k, v]) => {\n        if (v) {\n          return {\n            ...acc,\n            [k]: v\n          }\n        } else {\n          return acc\n        }\n      }, {}))\n      .then((themesComplete) => {\n        self.availableStyles = themesComplete\n      })\n  },\n  mounted () {\n    this.loadThemeFromLocalStorage()\n    if (typeof this.shadowSelected === 'undefined') {\n      this.shadowSelected = this.shadowsAvailable[0]\n    }\n  },\n  computed: {\n    themeWarningHelp () {\n      if (!this.themeWarning) return\n      const t = this.$t\n      const pre = 'settings.style.switcher.help.'\n      const {\n        origin,\n        themeEngineVersion,\n        type,\n        noActionsPossible\n      } = this.themeWarning\n      if (origin === 'file') {\n        // Loaded v2 theme from file\n        if (themeEngineVersion === 2 && type === 'wrong_version') {\n          return t(pre + 'v2_imported')\n        }\n        if (themeEngineVersion > CURRENT_VERSION) {\n          return t(pre + 'future_version_imported') + ' ' +\n            (\n              noActionsPossible\n                ? t(pre + 'snapshot_missing')\n                : t(pre + 'snapshot_present')\n            )\n        }\n        if (themeEngineVersion < CURRENT_VERSION) {\n          return t(pre + 'future_version_imported') + ' ' +\n            (\n              noActionsPossible\n                ? t(pre + 'snapshot_missing')\n                : t(pre + 'snapshot_present')\n            )\n        }\n      } else if (origin === 'localStorage') {\n        if (type === 'snapshot_source_mismatch') {\n          return t(pre + 'snapshot_source_mismatch')\n        }\n        // FE upgraded from v2\n        if (themeEngineVersion === 2) {\n          return t(pre + 'upgraded_from_v2')\n        }\n        // Admin downgraded FE\n        if (themeEngineVersion > CURRENT_VERSION) {\n          return t(pre + 'fe_downgraded') + ' ' +\n            (\n              noActionsPossible\n                ? t(pre + 'migration_snapshot_ok')\n                : t(pre + 'migration_snapshot_gone')\n            )\n        }\n        // Admin upgraded FE\n        if (themeEngineVersion < CURRENT_VERSION) {\n          return t(pre + 'fe_upgraded') + ' ' +\n            (\n              noActionsPossible\n                ? t(pre + 'migration_snapshot_ok')\n                : t(pre + 'migration_snapshot_gone')\n            )\n        }\n      }\n    },\n    selectedVersion () {\n      return Array.isArray(this.selectedTheme) ? 1 : 2\n    },\n    currentColors () {\n      return Object.keys(SLOT_INHERITANCE)\n        .map(key => [key, this[key + 'ColorLocal']])\n        .reduce((acc, [key, val]) => ({ ...acc, [ key ]: val }), {})\n    },\n    currentOpacity () {\n      return Object.keys(OPACITIES)\n        .map(key => [key, this[key + 'OpacityLocal']])\n        .reduce((acc, [key, val]) => ({ ...acc, [ key ]: val }), {})\n    },\n    currentRadii () {\n      return {\n        btn: this.btnRadiusLocal,\n        input: this.inputRadiusLocal,\n        checkbox: this.checkboxRadiusLocal,\n        panel: this.panelRadiusLocal,\n        avatar: this.avatarRadiusLocal,\n        avatarAlt: this.avatarAltRadiusLocal,\n        tooltip: this.tooltipRadiusLocal,\n        attachment: this.attachmentRadiusLocal,\n        chatMessage: this.chatMessageRadiusLocal\n      }\n    },\n    preview () {\n      return composePreset(this.previewColors, this.previewRadii, this.previewShadows, this.previewFonts)\n    },\n    previewTheme () {\n      if (!this.preview.theme.colors) return { colors: {}, opacity: {}, radii: {}, shadows: {}, fonts: {} }\n      return this.preview.theme\n    },\n    // This needs optimization maybe\n    previewContrast () {\n      try {\n        if (!this.previewTheme.colors.bg) return {}\n        const colors = this.previewTheme.colors\n        const opacity = this.previewTheme.opacity\n        if (!colors.bg) return {}\n        const hints = (ratio) => ({\n          text: ratio.toPrecision(3) + ':1',\n          // AA level, AAA level\n          aa: ratio >= 4.5,\n          aaa: ratio >= 7,\n          // same but for 18pt+ texts\n          laa: ratio >= 3,\n          laaa: ratio >= 4.5\n        })\n        const colorsConverted = Object.entries(colors).reduce((acc, [key, value]) => ({ ...acc, [key]: colorConvert(value) }), {})\n\n        const ratios = Object.entries(SLOT_INHERITANCE).reduce((acc, [key, value]) => {\n          const slotIsBaseText = key === 'text' || key === 'link'\n          const slotIsText = slotIsBaseText || (\n            typeof value === 'object' && value !== null && value.textColor\n          )\n          if (!slotIsText) return acc\n          const { layer, variant } = slotIsBaseText ? { layer: 'bg' } : value\n          const background = variant || layer\n          const opacitySlot = getOpacitySlot(background)\n          const textColors = [\n            key,\n            ...(background === 'bg' ? ['cRed', 'cGreen', 'cBlue', 'cOrange'] : [])\n          ]\n\n          const layers = getLayers(\n            layer,\n            variant || layer,\n            opacitySlot,\n            colorsConverted,\n            opacity\n          )\n\n          return {\n            ...acc,\n            ...textColors.reduce((acc, textColorKey) => {\n              const newKey = slotIsBaseText\n                ? 'bg' + textColorKey[0].toUpperCase() + textColorKey.slice(1)\n                : textColorKey\n              return {\n                ...acc,\n                [newKey]: getContrastRatioLayers(\n                  colorsConverted[textColorKey],\n                  layers,\n                  colorsConverted[textColorKey]\n                )\n              }\n            }, {})\n          }\n        }, {})\n\n        return Object.entries(ratios).reduce((acc, [k, v]) => { acc[k] = hints(v); return acc }, {})\n      } catch (e) {\n        console.warn('Failure computing contrasts', e)\n      }\n    },\n    previewRules () {\n      if (!this.preview.rules) return ''\n      return [\n        ...Object.values(this.preview.rules),\n        'color: var(--text)',\n        'font-family: var(--interfaceFont, sans-serif)'\n      ].join(';')\n    },\n    shadowsAvailable () {\n      return Object.keys(DEFAULT_SHADOWS).sort()\n    },\n    currentShadowOverriden: {\n      get () {\n        return !!this.currentShadow\n      },\n      set (val) {\n        if (val) {\n          this.shadowsLocal[this.shadowSelected] = this.currentShadowFallback.map(_ => Object.assign({}, _))\n        } else {\n          delete this.shadowsLocal[this.shadowSelected]\n        }\n      }\n    },\n    currentShadowFallback () {\n      return (this.previewTheme.shadows || {})[this.shadowSelected]\n    },\n    currentShadow: {\n      get () {\n        return this.shadowsLocal[this.shadowSelected]\n      },\n      set (v) {\n        this.shadowsLocal[this.shadowSelected] = v\n      }\n    },\n    themeValid () {\n      return !this.shadowsInvalid && !this.colorsInvalid && !this.radiiInvalid\n    },\n    exportedTheme () {\n      const saveEverything = (\n        !this.keepFonts &&\n        !this.keepShadows &&\n        !this.keepOpacity &&\n        !this.keepRoundness &&\n        !this.keepColor\n      )\n\n      const source = {\n        themeEngineVersion: CURRENT_VERSION\n      }\n\n      if (this.keepFonts || saveEverything) {\n        source.fonts = this.fontsLocal\n      }\n      if (this.keepShadows || saveEverything) {\n        source.shadows = this.shadowsLocal\n      }\n      if (this.keepOpacity || saveEverything) {\n        source.opacity = this.currentOpacity\n      }\n      if (this.keepColor || saveEverything) {\n        source.colors = this.currentColors\n      }\n      if (this.keepRoundness || saveEverything) {\n        source.radii = this.currentRadii\n      }\n\n      const theme = {\n        themeEngineVersion: CURRENT_VERSION,\n        ...this.previewTheme\n      }\n\n      return {\n        // To separate from other random JSON files and possible future source formats\n        _pleroma_theme_version: 2, theme, source\n      }\n    },\n    isActive () {\n      const tabSwitcher = this.$parent\n      return tabSwitcher ? tabSwitcher.isActive('theme') : false\n    }\n  },\n  components: {\n    ColorInput,\n    OpacityInput,\n    RangeInput,\n    ContrastRatio,\n    ShadowControl,\n    FontControl,\n    TabSwitcher,\n    Preview,\n    Checkbox,\n    Select\n  },\n  methods: {\n    loadTheme (\n      {\n        theme,\n        source,\n        _pleroma_theme_version: fileVersion\n      },\n      origin,\n      forceUseSource = false\n    ) {\n      this.dismissWarning()\n      if (!source && !theme) {\n        throw new Error('Can\\'t load theme: empty')\n      }\n      const version = (origin === 'localStorage' && !theme.colors)\n        ? 'l1'\n        : fileVersion\n      const snapshotEngineVersion = (theme || {}).themeEngineVersion\n      const themeEngineVersion = (source || {}).themeEngineVersion || 2\n      const versionsMatch = themeEngineVersion === CURRENT_VERSION\n      const sourceSnapshotMismatch = (\n        theme !== undefined &&\n          source !== undefined &&\n          themeEngineVersion !== snapshotEngineVersion\n      )\n      // Force loading of source if user requested it or if snapshot\n      // is unavailable\n      const forcedSourceLoad = (source && forceUseSource) || !theme\n      if (!(versionsMatch && !sourceSnapshotMismatch) &&\n          !forcedSourceLoad &&\n          version !== 'l1' &&\n          origin !== 'defaults'\n      ) {\n        if (sourceSnapshotMismatch && origin === 'localStorage') {\n          this.themeWarning = {\n            origin,\n            themeEngineVersion,\n            type: 'snapshot_source_mismatch'\n          }\n        } else if (!theme) {\n          this.themeWarning = {\n            origin,\n            noActionsPossible: true,\n            themeEngineVersion,\n            type: 'no_snapshot_old_version'\n          }\n        } else if (!versionsMatch) {\n          this.themeWarning = {\n            origin,\n            noActionsPossible: !source,\n            themeEngineVersion,\n            type: 'wrong_version'\n          }\n        }\n      }\n      this.normalizeLocalState(theme, version, source, forcedSourceLoad)\n    },\n    forceLoadLocalStorage () {\n      this.loadThemeFromLocalStorage(true)\n    },\n    dismissWarning () {\n      this.themeWarning = undefined\n      this.tempImportFile = undefined\n    },\n    forceLoad () {\n      const { origin } = this.themeWarning\n      switch (origin) {\n        case 'localStorage':\n          this.loadThemeFromLocalStorage(true)\n          break\n        case 'file':\n          this.onImport(this.tempImportFile, true)\n          break\n      }\n      this.dismissWarning()\n    },\n    forceSnapshot () {\n      const { origin } = this.themeWarning\n      switch (origin) {\n        case 'localStorage':\n          this.loadThemeFromLocalStorage(false, true)\n          break\n        case 'file':\n          console.error('Forcing snapshot from file is not supported yet')\n          break\n      }\n      this.dismissWarning()\n    },\n    loadThemeFromLocalStorage (confirmLoadSource = false, forceSnapshot = false) {\n      const {\n        customTheme: theme,\n        customThemeSource: source\n      } = this.$store.getters.mergedConfig\n      if (!theme && !source) {\n        // Anon user or never touched themes\n        this.loadTheme(\n          this.$store.state.instance.themeData,\n          'defaults',\n          confirmLoadSource\n        )\n      } else {\n        this.loadTheme(\n          {\n            theme,\n            source: forceSnapshot ? theme : source\n          },\n          'localStorage',\n          confirmLoadSource\n        )\n      }\n    },\n    setCustomTheme () {\n      this.$store.dispatch('setOption', {\n        name: 'customTheme',\n        value: {\n          themeEngineVersion: CURRENT_VERSION,\n          ...this.previewTheme\n        }\n      })\n      this.$store.dispatch('setOption', {\n        name: 'customThemeSource',\n        value: {\n          themeEngineVersion: CURRENT_VERSION,\n          shadows: this.shadowsLocal,\n          fonts: this.fontsLocal,\n          opacity: this.currentOpacity,\n          colors: this.currentColors,\n          radii: this.currentRadii\n        }\n      })\n    },\n    updatePreviewColorsAndShadows () {\n      this.previewColors = generateColors({\n        opacity: this.currentOpacity,\n        colors: this.currentColors\n      })\n      this.previewShadows = generateShadows(\n        { shadows: this.shadowsLocal, opacity: this.previewTheme.opacity, themeEngineVersion: this.engineVersion },\n        this.previewColors.theme.colors,\n        this.previewColors.mod\n      )\n    },\n    importTheme () { this.themeImporter.importData() },\n    exportTheme () { this.themeExporter.exportData() },\n    onImport (parsed, forceSource = false) {\n      this.tempImportFile = parsed\n      this.loadTheme(parsed, 'file', forceSource)\n    },\n    onImportFailure (result) {\n      this.$store.dispatch('pushGlobalNotice', { messageKey: 'settings.invalid_theme_imported', level: 'error' })\n    },\n    importValidator (parsed) {\n      const version = parsed._pleroma_theme_version\n      return version >= 1 || version <= 2\n    },\n    clearAll () {\n      this.loadThemeFromLocalStorage()\n    },\n\n    // Clears all the extra stuff when loading V1 theme\n    clearV1 () {\n      Object.keys(this.$data)\n        .filter(_ => _.endsWith('ColorLocal') || _.endsWith('OpacityLocal'))\n        .filter(_ => !v1OnlyNames.includes(_))\n        .forEach(key => {\n          this.$data[key] = undefined\n        })\n    },\n\n    clearRoundness () {\n      Object.keys(this.$data)\n        .filter(_ => _.endsWith('RadiusLocal'))\n        .forEach(key => {\n          this.$data[key] = undefined\n        })\n    },\n\n    clearOpacity () {\n      Object.keys(this.$data)\n        .filter(_ => _.endsWith('OpacityLocal'))\n        .forEach(key => {\n          this.$data[key] = undefined\n        })\n    },\n\n    clearShadows () {\n      this.shadowsLocal = {}\n    },\n\n    clearFonts () {\n      this.fontsLocal = {}\n    },\n\n    /**\n     * This applies stored theme data onto form. Supports three versions of data:\n     * v3 (version >= 3) - newest version of themes which supports snapshots for better compatiblity\n     * v2 (version = 2) - newer version of themes.\n     * v1 (version = 1) - older version of themes (import from file)\n     * v1l (version = l1) - older version of theme (load from local storage)\n     * v1 and v1l differ because of way themes were stored/exported.\n     * @param {Object} theme - theme data (snapshot)\n     * @param {Number} version - version of data. 0 means try to guess based on data. \"l1\" means v1, locastorage type\n     * @param {Object} source - theme source - this will be used if compatible\n     * @param {Boolean} source - by default source won't be used if version doesn't match since it might render differently\n     *                           this allows importing source anyway\n     */\n    normalizeLocalState (theme, version = 0, source, forceSource = false) {\n      let input\n      if (typeof source !== 'undefined') {\n        if (forceSource || source.themeEngineVersion === CURRENT_VERSION) {\n          input = source\n          version = source.themeEngineVersion\n        } else {\n          input = theme\n        }\n      } else {\n        input = theme\n      }\n\n      const radii = input.radii || input\n      const opacity = input.opacity\n      const shadows = input.shadows || {}\n      const fonts = input.fonts || {}\n      const colors = !input.themeEngineVersion\n        ? colors2to3(input.colors || input)\n        : input.colors || input\n\n      if (version === 0) {\n        if (input.version) version = input.version\n        // Old v1 naming: fg is text, btn is foreground\n        if (typeof colors.text === 'undefined' && typeof colors.fg !== 'undefined') {\n          version = 1\n        }\n        // New v2 naming: text is text, fg is foreground\n        if (typeof colors.text !== 'undefined' && typeof colors.fg !== 'undefined') {\n          version = 2\n        }\n      }\n\n      this.engineVersion = version\n\n      // Stuff that differs between V1 and V2\n      if (version === 1) {\n        this.fgColorLocal = rgb2hex(colors.btn)\n        this.textColorLocal = rgb2hex(colors.fg)\n      }\n\n      if (!this.keepColor) {\n        this.clearV1()\n        const keys = new Set(version !== 1 ? Object.keys(SLOT_INHERITANCE) : [])\n        if (version === 1 || version === 'l1') {\n          keys\n            .add('bg')\n            .add('link')\n            .add('cRed')\n            .add('cBlue')\n            .add('cGreen')\n            .add('cOrange')\n        }\n\n        keys.forEach(key => {\n          const color = colors[key]\n          const hex = rgb2hex(colors[key])\n          this[key + 'ColorLocal'] = hex === '#aN' ? color : hex\n        })\n      }\n\n      if (opacity && !this.keepOpacity) {\n        this.clearOpacity()\n        Object.entries(opacity).forEach(([k, v]) => {\n          if (typeof v === 'undefined' || v === null || Number.isNaN(v)) return\n          this[k + 'OpacityLocal'] = v\n        })\n      }\n\n      if (!this.keepRoundness) {\n        this.clearRoundness()\n        Object.entries(radii).forEach(([k, v]) => {\n          // 'Radius' is kept mostly for v1->v2 localstorage transition\n          const key = k.endsWith('Radius') ? k.split('Radius')[0] : k\n          this[key + 'RadiusLocal'] = v\n        })\n      }\n\n      if (!this.keepShadows) {\n        this.clearShadows()\n        if (version === 2) {\n          this.shadowsLocal = shadows2to3(shadows, this.previewTheme.opacity)\n        } else {\n          this.shadowsLocal = shadows\n        }\n        this.shadowSelected = this.shadowsAvailable[0]\n      }\n\n      if (!this.keepFonts) {\n        this.clearFonts()\n        this.fontsLocal = fonts\n      }\n    }\n  },\n  watch: {\n    currentRadii () {\n      try {\n        this.previewRadii = generateRadii({ radii: this.currentRadii })\n        this.radiiInvalid = false\n      } catch (e) {\n        this.radiiInvalid = true\n        console.warn(e)\n      }\n    },\n    shadowsLocal: {\n      handler () {\n        if (Object.getOwnPropertyNames(this.previewColors).length === 1) return\n        try {\n          this.updatePreviewColorsAndShadows()\n          this.shadowsInvalid = false\n        } catch (e) {\n          this.shadowsInvalid = true\n          console.warn(e)\n        }\n      },\n      deep: true\n    },\n    fontsLocal: {\n      handler () {\n        try {\n          this.previewFonts = generateFonts({ fonts: this.fontsLocal })\n          this.fontsInvalid = false\n        } catch (e) {\n          this.fontsInvalid = true\n          console.warn(e)\n        }\n      },\n      deep: true\n    },\n    currentColors () {\n      try {\n        this.updatePreviewColorsAndShadows()\n        this.colorsInvalid = false\n        this.shadowsInvalid = false\n      } catch (e) {\n        this.colorsInvalid = true\n        this.shadowsInvalid = true\n        console.warn(e)\n      }\n    },\n    currentOpacity () {\n      try {\n        this.updatePreviewColorsAndShadows()\n      } catch (e) {\n        console.warn(e)\n      }\n    },\n    selected () {\n      this.selectedTheme = Object.entries(this.availableStyles).find(([k, s]) => {\n        if (Array.isArray(s)) {\n          console.log(s[0] === this.selected, this.selected)\n          return s[0] === this.selected\n        } else {\n          return s.name === this.selected\n        }\n      })[1]\n    },\n    selectedTheme () {\n      this.dismissWarning()\n      if (this.selectedVersion === 1) {\n        if (!this.keepRoundness) {\n          this.clearRoundness()\n        }\n\n        if (!this.keepShadows) {\n          this.clearShadows()\n        }\n\n        if (!this.keepOpacity) {\n          this.clearOpacity()\n        }\n\n        if (!this.keepColor) {\n          this.clearV1()\n\n          this.bgColorLocal = this.selectedTheme[1]\n          this.fgColorLocal = this.selectedTheme[2]\n          this.textColorLocal = this.selectedTheme[3]\n          this.linkColorLocal = this.selectedTheme[4]\n          this.cRedColorLocal = this.selectedTheme[5]\n          this.cGreenColorLocal = this.selectedTheme[6]\n          this.cBlueColorLocal = this.selectedTheme[7]\n          this.cOrangeColorLocal = this.selectedTheme[8]\n        }\n      } else if (this.selectedVersion >= 2) {\n        this.normalizeLocalState(this.selectedTheme.theme, 2, this.selectedTheme.source)\n      }\n    }\n  }\n}\n","import { render } from \"./theme_tab.vue?vue&type=template&id=1128449a\"\nimport script from \"./theme_tab.js?vue&type=script&lang=js\"\nexport * from \"./theme_tab.js?vue&type=script&lang=js\"\n\nimport \"./theme_tab.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\n\nimport DataImportExportTab from './tabs/data_import_export_tab.vue'\nimport MutesAndBlocksTab from './tabs/mutes_and_blocks_tab.vue'\nimport NotificationsTab from './tabs/notifications_tab.vue'\nimport FilteringTab from './tabs/filtering_tab.vue'\nimport SecurityTab from './tabs/security_tab/security_tab.vue'\nimport ProfileTab from './tabs/profile_tab.vue'\nimport GeneralTab from './tabs/general_tab.vue'\nimport VersionTab from './tabs/version_tab.vue'\nimport ThemeTab from './tabs/theme_tab/theme_tab.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faWrench,\n  faUser,\n  faFilter,\n  faPaintBrush,\n  faBell,\n  faDownload,\n  faEyeSlash,\n  faInfo\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faWrench,\n  faUser,\n  faFilter,\n  faPaintBrush,\n  faBell,\n  faDownload,\n  faEyeSlash,\n  faInfo\n)\n\nconst SettingsModalContent = {\n  components: {\n    TabSwitcher,\n\n    DataImportExportTab,\n    MutesAndBlocksTab,\n    NotificationsTab,\n    FilteringTab,\n    SecurityTab,\n    ProfileTab,\n    GeneralTab,\n    VersionTab,\n    ThemeTab\n  },\n  computed: {\n    isLoggedIn () {\n      return !!this.$store.state.users.currentUser\n    },\n    open () {\n      return this.$store.state.interface.settingsModalState !== 'hidden'\n    },\n    bodyLock () {\n      return this.$store.state.interface.settingsModalState === 'visible'\n    }\n  },\n  methods: {\n    onOpen () {\n      const targetTab = this.$store.state.interface.settingsModalTargetTab\n      // We're being told to open in specific tab\n      if (targetTab) {\n        const tabIndex = this.$refs.tabSwitcher.$slots.default().findIndex(elm => {\n          return elm.props && elm.props['data-tab-name'] === targetTab\n        })\n        if (tabIndex >= 0) {\n          this.$refs.tabSwitcher.setTab(tabIndex)\n        }\n      }\n      // Clear the state of target tab, so that next time settings is opened\n      // it doesn't force it.\n      this.$store.dispatch('clearSettingsModalTargetTab')\n    }\n  },\n  mounted () {\n    this.onOpen()\n  },\n  watch: {\n    open: function (value) {\n      if (value) this.onOpen()\n    }\n  }\n}\n\nexport default SettingsModalContent\n","import { render } from \"./settings_modal_content.vue?vue&type=template&id=6191ca84\"\nimport script from \"./settings_modal_content.js?vue&type=script&lang=js\"\nexport * from \"./settings_modal_content.js?vue&type=script&lang=js\"\n\nimport \"./settings_modal_content.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <tab-switcher\n    ref=\"tabSwitcher\"\n    class=\"settings_tab-switcher\"\n    :side-tab-bar=\"true\"\n    :scrollable-tabs=\"true\"\n    :body-scroll-lock=\"bodyLock\"\n  >\n    <div\n      :label=\"$t('settings.general')\"\n      icon=\"wrench\"\n      data-tab-name=\"general\"\n    >\n      <GeneralTab />\n    </div>\n    <div\n      v-if=\"isLoggedIn\"\n      :label=\"$t('settings.profile_tab')\"\n      icon=\"user\"\n      data-tab-name=\"profile\"\n    >\n      <ProfileTab />\n    </div>\n    <div\n      v-if=\"isLoggedIn\"\n      :label=\"$t('settings.security_tab')\"\n      icon=\"lock\"\n      data-tab-name=\"security\"\n    >\n      <SecurityTab />\n    </div>\n    <div\n      :label=\"$t('settings.filtering')\"\n      icon=\"filter\"\n      data-tab-name=\"filtering\"\n    >\n      <FilteringTab />\n    </div>\n    <div\n      :label=\"$t('settings.theme')\"\n      icon=\"paint-brush\"\n      data-tab-name=\"theme\"\n    >\n      <ThemeTab />\n    </div>\n    <div\n      v-if=\"isLoggedIn\"\n      :label=\"$t('settings.notifications')\"\n      icon=\"bell\"\n      data-tab-name=\"notifications\"\n    >\n      <NotificationsTab />\n    </div>\n    <div\n      v-if=\"isLoggedIn\"\n      :label=\"$t('settings.data_import_export_tab')\"\n      icon=\"download\"\n      data-tab-name=\"dataImportExport\"\n    >\n      <DataImportExportTab />\n    </div>\n    <div\n      v-if=\"isLoggedIn\"\n      :label=\"$t('settings.mutes_and_blocks')\"\n      :fullHeight=\"true\"\n      icon=\"eye-slash\"\n      data-tab-name=\"mutesAndBlocks\"\n    >\n      <MutesAndBlocksTab />\n    </div>\n    <div\n      :label=\"$t('settings.version.title')\"\n      icon=\"info\"\n      data-tab-name=\"version\"\n    >\n      <VersionTab />\n    </div>\n  </tab-switcher>\n</template>\n\n<script src=\"./settings_modal_content.js\"></script>\n\n<style src=\"./settings_modal_content.scss\" lang=\"scss\"></style>\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/priv/static/static/js/app.23b7ec270c69f4f99782.js b/priv/static/static/js/app.23b7ec270c69f4f99782.js
deleted file mode 100644 (file)
index 13f276c..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-!function(e){function t(t){for(var r,i,a=t[0],c=t[1],l=t[2],u=0,p=[];u<a.length;u++)i=a[u],Object.prototype.hasOwnProperty.call(o,i)&&o[i]&&p.push(o[i][0]),o[i]=0;for(r in c)Object.prototype.hasOwnProperty.call(c,r)&&(e[r]=c[r]);for(d&&d(t);p.length;)p.shift()();return s.push.apply(s,l||[]),n()}function n(){for(var e,t=0;t<s.length;t++){for(var n=s[t],r=!0,i=1;i<n.length;i++){var c=n[i];0!==o[c]&&(r=!1)}r&&(s.splice(t--,1),e=a(a.s=n[0]))}return e}var r={},i={0:0},o={0:0},s=[];function a(t){if(r[t])return r[t].exports;var n=r[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,a),n.l=!0,n.exports}a.e=function(e){var t=[];i[e]?t.push(i[e]):0!==i[e]&&{2:1,3:1,4:1}[e]&&t.push(i[e]=new Promise((function(t,n){for(var r="static/css/"+({}[e]||e)+"."+{2:"4e6541aa0979ab5fe8ab",3:"2f4099421df47087d7d1",4:"10e378d3da0e7f32661d",5:"31d6cfe0d16ae931b73c",6:"31d6cfe0d16ae931b73c",7:"31d6cfe0d16ae931b73c",8:"31d6cfe0d16ae931b73c",9:"31d6cfe0d16ae931b73c",10:"31d6cfe0d16ae931b73c",11:"31d6cfe0d16ae931b73c",12:"31d6cfe0d16ae931b73c",13:"31d6cfe0d16ae931b73c",14:"31d6cfe0d16ae931b73c",15:"31d6cfe0d16ae931b73c",16:"31d6cfe0d16ae931b73c",17:"31d6cfe0d16ae931b73c",18:"31d6cfe0d16ae931b73c",19:"31d6cfe0d16ae931b73c",20:"31d6cfe0d16ae931b73c",21:"31d6cfe0d16ae931b73c",22:"31d6cfe0d16ae931b73c",23:"31d6cfe0d16ae931b73c",24:"31d6cfe0d16ae931b73c",25:"31d6cfe0d16ae931b73c",26:"31d6cfe0d16ae931b73c",27:"31d6cfe0d16ae931b73c",28:"31d6cfe0d16ae931b73c",29:"31d6cfe0d16ae931b73c",30:"31d6cfe0d16ae931b73c",31:"31d6cfe0d16ae931b73c",32:"31d6cfe0d16ae931b73c"}[e]+".css",o=a.p+r,s=document.getElementsByTagName("link"),c=0;c<s.length;c++){var l=(d=s[c]).getAttribute("data-href")||d.getAttribute("href");if("stylesheet"===d.rel&&(l===r||l===o))return t()}var u=document.getElementsByTagName("style");for(c=0;c<u.length;c++){var d;if((l=(d=u[c]).getAttribute("data-href"))===r||l===o)return t()}var p=document.createElement("link");p.rel="stylesheet",p.type="text/css",p.onload=t,p.onerror=function(t){var r=t&&t.target&&t.target.src||o,s=new Error("Loading CSS chunk "+e+" failed.\n("+r+")");s.code="CSS_CHUNK_LOAD_FAILED",s.request=r,delete i[e],p.parentNode.removeChild(p),n(s)},p.href=o,document.getElementsByTagName("head")[0].appendChild(p)})).then((function(){i[e]=0})));var n=o[e];if(0!==n)if(n)t.push(n[2]);else{var r=new Promise((function(t,r){n=o[e]=[t,r]}));t.push(n[2]=r);var s,c=document.createElement("script");c.charset="utf-8",c.timeout=120,a.nc&&c.setAttribute("nonce",a.nc),c.src=function(e){return a.p+"static/js/"+({}[e]||e)+"."+{2:"eb2c361cdcbd8c4f7638",3:"6817af5c7ddbbd72fbf1",4:"927a84e2225924985925",5:"bbbe2165b2726754babd",6:"c6e50a831e6b09d426c7",7:"7a9d3de7e3eb6affa8fa",8:"6e10d130a82421e5de97",9:"4c310a18d1e30d64ab78",10:"b67f1d16d8fdcd03f775",11:"88732498617afe7ab4fa",12:"21fb2f8c9787acc40766",13:"bd887f6f8965a89629f1",14:"8d076150d2d32a70c85c",15:"458ea2a090159a1c312d",16:"b026bc770b996a75ab86",17:"37f97cc3eab74f285530",18:"5e155da6b34cb233975a",19:"4449616295c79e9feb82",20:"c3c9f56f752974bf19cf",21:"13590b4f67813801857e",22:"af3b6f25635a9809f6e8",23:"27002d630c581d75786b",24:"17fecccd566085bc7273",25:"d92131b48359fae551a4",26:"8e2b950cad8e4bb7145f",27:"b70f29d1c24421eeb8e0",28:"3eeac63a0c7d7ca9f57e",29:"a9703e50212c8482b1b8",30:"ccdf2a34d5a00135f6b7",31:"079c61206f2e6ac69873",32:"2c5f6af0c5d2d87ad611"}[e]+".js"}(e);var l=new Error;s=function(t){c.onerror=c.onload=null,clearTimeout(u);var n=o[e];if(0!==n){if(n){var r=t&&("load"===t.type?"missing":t.type),i=t&&t.target&&t.target.src;l.message="Loading chunk "+e+" failed.\n("+r+": "+i+")",l.name="ChunkLoadError",l.type=r,l.request=i,n[1](l)}o[e]=void 0}};var u=setTimeout((function(){s({type:"timeout",target:c})}),12e4);c.onerror=c.onload=s,document.head.appendChild(c)}return Promise.all(t)},a.m=e,a.c=r,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)a.d(n,r,function(t){return e[t]}.bind(null,r));return n},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="/",a.oe=function(e){throw console.error(e),e};var c=window.webpackJsonp=window.webpackJsonp||[],l=c.push.bind(c);c.push=t,c=c.slice();for(var u=0;u<c.length;u++)t(c[u]);var d=l;s.push([593,1]),n()}([,,,,,,,,,,,,,,function(e,t,n){"use strict";n.d(t,"g",(function(){return h})),n.d(t,"a",(function(){return b})),n.d(t,"f",(function(){return m})),n.d(t,"e",(function(){return f})),n.d(t,"d",(function(){return j})),n.d(t,"b",(function(){return g})),n.d(t,"c",(function(){return v}));var r=n(5),i=n.n(r),o=n(103),s=n.n(o),a=n(312),c=n.n(a),l=n(26),u=n(313);function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function p(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?d(Object(n),!0).forEach((function(t){i()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):d(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var h=function(e){var t={},n=e.hasOwnProperty("acct"),r=n&&!e.hasOwnProperty("avatar");if(t.id=String(e.id),t._original=e,n){if(t.screen_name=e.acct,t.statusnet_profile_url=e.url,r)return t;if(t.emoji=e.emojis,t.name=s()(e.display_name),t.name_html=t.name,t.name_unescaped=e.display_name,t.description=e.note,t.description_html=e.note,t.fields=e.fields,t.fields_html=e.fields.map((function(e){return{name:s()(e.name),value:e.value}})),t.fields_text=e.fields.map((function(e){return{name:unescape(e.name.replace(/<[^>]*>/g,"")),value:unescape(e.value.replace(/<[^>]*>/g,""))}})),t.profile_image_url=e.avatar,t.profile_image_url_original=e.avatar,t.cover_photo=e.header,t.friends_count=e.following_count,t.bot=e.bot,e.pleroma){var i=e.pleroma.relationship;t.background_image=e.pleroma.background_image,t.favicon=e.pleroma.favicon,t.token=e.pleroma.chat_token,i&&(t.relationship=i),t.allow_following_move=e.pleroma.allow_following_move,t.hide_follows=e.pleroma.hide_follows,t.hide_followers=e.pleroma.hide_followers,t.hide_follows_count=e.pleroma.hide_follows_count,t.hide_followers_count=e.pleroma.hide_followers_count,t.rights={moderator:e.pleroma.is_moderator,admin:e.pleroma.is_admin},t.rights.admin?t.role="admin":t.rights.moderator?t.role="moderator":t.role="member"}e.source&&(t.description=e.source.note,t.default_scope=e.source.privacy,t.fields=e.source.fields,e.source.pleroma&&(t.no_rich_text=e.source.pleroma.no_rich_text,t.show_role=e.source.pleroma.show_role,t.discoverable=e.source.pleroma.discoverable)),t.is_local=!t.screen_name.includes("@")}else t.screen_name=e.screen_name,t.name=e.name,t.name_html=e.name_html,t.description=e.description,t.description_html=e.description_html,t.profile_image_url=e.profile_image_url,t.profile_image_url_original=e.profile_image_url_original,t.cover_photo=e.cover_photo,t.friends_count=e.friends_count,t.statusnet_profile_url=e.statusnet_profile_url,t.is_local=e.is_local,t.role=e.role,t.show_role=e.show_role,e.rights&&(t.rights={moderator:e.rights.delete_others_notice,admin:e.rights.admin}),t.no_rich_text=e.no_rich_text,t.default_scope=e.default_scope,t.hide_follows=e.hide_follows,t.hide_followers=e.hide_followers,t.hide_follows_count=e.hide_follows_count,t.hide_followers_count=e.hide_followers_count,t.background_image=e.background_image,t.token=e.token,t.relationship={muting:e.muted,blocking:e.statusnet_blocking,followed_by:e.follows_you,following:e.following};if(t.created_at=new Date(e.created_at),t.locked=e.locked,t.followers_count=e.followers_count,t.statuses_count=e.statuses_count,e.pleroma&&(t.follow_request_count=e.pleroma.follow_request_count,t.tags=e.pleroma.tags,t.deactivated=void 0!==e.pleroma.is_active?!e.pleroma.is_active:e.pleroma.deactivated,t.notification_settings=e.pleroma.notification_settings,t.unread_chat_count=e.pleroma.unread_chat_count),t.tags=t.tags||[],t.rights=t.rights||{},t.notification_settings=t.notification_settings||{},t.screen_name_ui=t.screen_name,t.screen_name&&t.screen_name.includes("@")){var o=t.screen_name.split("@"),a=u.a.toUnicode(o[1]);a!==o[1]&&(a="🌏"+a,t.screen_name_ui=[o[0],a].join("@"))}return t},b=function(e){var t={};return!e.hasOwnProperty("oembed")?(t.mimetype=e.pleroma?e.pleroma.mime_type:e.type,t.meta=e.meta,t.id=e.id):t.mimetype=e.mimetype,t.url=e.url,t.large_thumb_url=e.preview_url,t.description=e.description,t},m=function e(t){var n={},r=t.hasOwnProperty("account");if(r){if(n.favorited=t.favourited,n.fave_num=t.favourites_count,n.repeated=t.reblogged,n.repeat_num=t.reblogs_count,n.bookmarked=t.bookmarked,n.type=t.reblog?"retweet":"status",n.nsfw=t.sensitive,n.raw_html=t.content,n.emojis=t.emojis,n.tags=t.tags,t.pleroma){var i=t.pleroma;n.text=i.content?t.pleroma.content["text/plain"]:t.content,n.summary=i.spoiler_text?t.pleroma.spoiler_text["text/plain"]:t.spoiler_text,n.statusnet_conversation_id=t.pleroma.conversation_id,n.is_local=i.local,n.in_reply_to_screen_name=t.pleroma.in_reply_to_account_acct,n.thread_muted=i.thread_muted,n.emoji_reactions=i.emoji_reactions,n.parent_visible=void 0===i.parent_visible||i.parent_visible}else n.text=t.content,n.summary=t.spoiler_text;if(t.akkoma){var o=t.akkoma;o&&o.source&&"text/x.misskeymarkdown"===o.source.mediaType&&(n.mfm_content=o.source.content)}else n.mfm_content=null;n.in_reply_to_status_id=t.in_reply_to_id,n.in_reply_to_user_id=t.in_reply_to_account_id,n.replies_count=t.replies_count,"retweet"===n.type&&(n.retweeted_status=e(t.reblog)),n.summary_raw_html=s()(t.spoiler_text),n.external_url=t.url,n.poll=t.poll,n.poll&&(n.poll.options=(n.poll.options||[]).map((function(e){return p(p({},e),{},{title_html:s()(e.title)})}))),n.pinned=t.pinned,n.muted=t.muted}else n.favorited=t.favorited,n.fave_num=t.fave_num,n.repeated=t.repeated,n.repeat_num=t.repeat_num,n.type=function(e){return e.is_post_verb?"status":e.retweeted_status?"retweet":"string"==typeof e.uri&&e.uri.match(/(fave|objectType=Favourite)/)||"string"==typeof e.text&&e.text.match(/favorited/)?"favorite":e.text.match(/deleted notice {{tag/)||e.qvitter_delete_notice?"deletion":e.text.match(/started following/)||"follow"===e.activity_type?"follow":"unknown"}(t),void 0===t.nsfw?(n.nsfw=O(t),t.retweeted_status&&(n.nsfw=t.retweeted_status.nsfw)):n.nsfw=t.nsfw,n.raw_html=t.statusnet_html,n.text=t.text,n.in_reply_to_status_id=t.in_reply_to_status_id,n.in_reply_to_user_id=t.in_reply_to_user_id,n.in_reply_to_screen_name=t.in_reply_to_screen_name,n.statusnet_conversation_id=t.statusnet_conversation_id,"retweet"===n.type&&(n.retweeted_status=e(t.retweeted_status)),n.summary=t.summary,n.summary_html=t.summary_html,n.external_url=t.external_url,n.is_local=t.is_local;n.id=String(t.id),n.visibility=t.visibility,n.card=t.card,n.created_at=new Date(t.created_at),n.in_reply_to_status_id=n.in_reply_to_status_id?String(n.in_reply_to_status_id):null,n.in_reply_to_user_id=n.in_reply_to_user_id?String(n.in_reply_to_user_id):null,n.user=h(r?t.account:t.user),n.attentions=((r?t.mentions:t.attentions)||[]).map(h),n.attachments=((r?t.media_attachments:t.attachments)||[]).map(b);var a=r?t.reblog:t.retweeted_status;return a&&(n.retweeted_status=e(a)),n.favoritedBy=[],n.rebloggedBy=[],n},f=function(e){var t={};if(!e.hasOwnProperty("ntype"))t.type={favourite:"like",reblog:"repeat"}[e.type]||e.type,t.seen=e.pleroma.is_seen,t.status=Object(l.b)(t.type)?m(e.status):null,t.action=t.status,t.target="move"!==t.type?null:h(e.target),t.from_profile=h(e.account),t.emoji=e.emoji,t.emoji_url=e.emoji_url;else{var n=m(e.notice);t.type=e.ntype,t.seen=Boolean(e.is_seen),t.status="like"===t.type?m(e.notice.favorited_status):n,t.action=n,t.from_profile="pleroma:chat_mention"===t.type?h(e.account):h(e.from_profile)}return t.created_at=new Date(e.created_at),t.id=parseInt(e.id),t},O=function(e){return(e.tags||[]).includes("nsfw")||!!(e.text||"").match(/#nsfw/i)},j=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.flakeId,r=c()(e);if(r){var i=r.next.max_id,o=r.prev.min_id;return{maxId:n?i:parseInt(i,10),minId:n?o:parseInt(o,10)}}},g=function(e){var t={};return t.id=e.id,t.account=h(e.account),t.unread=e.unread,t.lastMessage=v(e.last_message),t.updated_at=new Date(e.updated_at),t},v=function(e){if(e){if(e.isNormalized)return e;var t=e;return t.id=e.id,t.created_at=new Date(e.created_at),t.chat_id=e.chat_id,t.emojis=e.emojis,t.content=e.content,e.attachment?t.attachments=[b(e.attachment)]:t.attachments=[],t.pending=!!e.pending,t.error=!1,t.idempotency_key=e.idempotency_key,t.isNormalized=!0,t}}},function(e,t,n){"use strict";n.d(t,"d",(function(){return xe})),n.d(t,"a",(function(){return Ie})),n.d(t,"b",(function(){return ze}));var r=n(13),i=n.n(r),o=n(40),s=n.n(o),a=n(11),c=n.n(a),l=n(5),u=n.n(l),d=n(16),p=n.n(d),h=n(46),b=n.n(h),m=n(97),f=n.n(m),O=n(21),j=n.n(O),g=n(29),v=n.n(g),y=n(10),w=n.n(y),k=n(14),_=n(28),S=n.n(_),C=n(128),P=n.n(C),x=n(129),D=n.n(x),T=n(165),I=n.n(T),$=n(314),z=n.n($),M=n(315),U=n.n(M),F=n(130),E=n.n(F),L=n(316),R=n.n(L),A=n(12),N=n.n(A),B=n(166),V=n.n(B);function H(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=E()(e);if(t){var i=E()(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return U()(this,n)}}function q(e,t,n,r){this.name="StatusCodeError",this.statusCode=e,this.message=e+" - "+(JSON&&JSON.stringify?JSON.stringify(t):t),this.error=t,this.options=n,this.response=r,Error.captureStackTrace&&Error.captureStackTrace(this)}q.prototype=Object.create(Error.prototype),q.prototype.constructor=q;var J=function(e){z()(n,e);var t=H(n);function n(e){var r,i;D()(this,n),r=t.call(this),Error.captureStackTrace&&Error.captureStackTrace(I()(r));try{if("string"==typeof e&&(e=JSON.parse(e)).hasOwnProperty("error")&&(e=JSON.parse(e.error)),"object"===S()(e)){var o=JSON.parse(e.error);o.ap_id&&(o.username=o.ap_id,delete o.ap_id),r.message=(i=o,Object.entries(i).reduce((function(e,t){var n=c()(t,2),r=n[0],i=n[1].reduce((function(e,t){return e+[V()(r.replace(/_/g," ")),t].join(" ")+". "}),"");return[].concat(N()(e),[i])}),[]))}else r.message=e}catch(t){r.message=e}return r}return P()(n)}(R()(Error)),W=["nickname"],Y=["id","credentials"];function G(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function K(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?G(Object(n),!0).forEach((function(t){u()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):G(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var X=function(e,t){return"/api/pleroma/admin/users/".concat(e,"/permission_group/").concat(t)},Z=function(e){return"/api/v1/notifications/".concat(e,"/dismiss")},Q=function(e){return"/api/v1/statuses/".concat(e,"/favourite")},ee=function(e){return"/api/v1/statuses/".concat(e,"/unfavourite")},te=function(e){return"/api/v1/statuses/".concat(e,"/reblog")},ne=function(e){return"/api/v1/statuses/".concat(e,"/unreblog")},re=function(e){return"/api/v1/accounts/".concat(e,"/statuses")},ie=function(e){return"/api/v1/timelines/tag/".concat(e)},oe=function(e){return"/api/v1/accounts/".concat(e,"/mute")},se=function(e){return"/api/v1/accounts/".concat(e,"/unmute")},ae=function(e){return"/api/v1/pleroma/accounts/".concat(e,"/subscribe")},ce=function(e){return"/api/v1/pleroma/accounts/".concat(e,"/unsubscribe")},le=function(e){return"/api/v1/statuses/".concat(e,"/bookmark")},ue=function(e){return"/api/v1/statuses/".concat(e,"/unbookmark")},de=function(e){return"/api/v1/statuses/".concat(e,"/favourited_by")},pe=function(e){return"/api/v1/statuses/".concat(e,"/reblogged_by")},he=function(e){return"/api/v1/statuses/".concat(e,"/pin")},be=function(e){return"/api/v1/statuses/".concat(e,"/unpin")},me=function(e){return"/api/v1/statuses/".concat(e,"/mute")},fe=function(e){return"/api/v1/statuses/".concat(e,"/unmute")},Oe=function(e){return"/api/v1/pleroma/statuses/".concat(e,"/reactions")},je=function(e,t){return"/api/v1/pleroma/statuses/".concat(e,"/reactions/").concat(t)},ge=function(e,t){return"/api/v1/pleroma/statuses/".concat(e,"/reactions/").concat(t)},ve=function(e){return"/api/v1/pleroma/chats/".concat(e,"/messages")},ye=function(e){return"/api/v1/pleroma/chats/".concat(e,"/read")},we=function(e,t){return"/api/v1/pleroma/chats/".concat(e,"/messages/").concat(t)},ke=window.fetch,_e=function(e,t){var n=""+e;return(t=t||{}).credentials="same-origin",ke(n,t)},Se=function(e){var t=e.method,n=e.url,r=e.params,i=e.payload,o=e.credentials,s=e.headers,a={method:t,headers:K({Accept:"application/json","Content-Type":"application/json"},void 0===s?{}:s)};return r&&(n+="?"+Object.entries(r).map((function(e){var t=c()(e,2),n=t[0],r=t[1];return encodeURIComponent(n)+"="+encodeURIComponent(r)})).join("&")),i&&(a.body=JSON.stringify(i)),o&&(a.headers=K(K({},a.headers),Ce(o))),_e(n,a).then((function(e){return new Promise((function(t,r){return e.json().then((function(i){return e.ok?t(i):r(new q(e.status,i,{url:n,options:a},e))})).catch((function(t){return r(new q(e.status,t,{url:n,options:a},e))}))}))}))},Ce=function(e){return e?{Authorization:"Bearer ".concat(e)}:{}},Pe=function(e){var t=e.id,n=e.maxId,r=e.sinceId,i=e.limit,o=void 0===i?20:i,s=e.credentials,a=function(e){return"/api/v1/accounts/".concat(e,"/following")}(t),c=[n&&"max_id=".concat(n),r&&"since_id=".concat(r),o&&"limit=".concat(o),"with_relationships=true"].filter((function(e){return e})).join("&");return _e(a+=c?"?"+c:"",{headers:Ce(s)}).then((function(e){return e.json()})).then((function(e){return e.map(k.g)}))},xe=function(e){var t=e.credentials,n=e.stream,r=e.args,i=void 0===r?{}:r;return Object.entries(K(K({},t?{access_token:t}:{}),{},{stream:n},i)).reduce((function(e,t){var n=c()(t,2),r=n[0],i=n[1];return e+"".concat(r,"=").concat(i,"&")}),"/api/v1/streaming?")},De=new Set(["update","notification","delete","filters_changed"]),Te=new Set(["pleroma:chat_update"]),Ie=function(e){var t=e.url,n=e.preprocessor,r=void 0===n?$e:n,i=e.id,o=void 0===i?"Unknown":i,s=new EventTarget,a=new WebSocket(t);if(!a)throw new Error("Failed to create socket ".concat(o));var c=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(e){return e};e.addEventListener(t,(function(e){s.dispatchEvent(new CustomEvent(t,{detail:n(e)}))}))};return a.addEventListener("open",(function(e){console.debug("[WS][".concat(o,"] Socket connected"),e)})),a.addEventListener("error",(function(e){console.debug("[WS][".concat(o,"] Socket errored"),e)})),a.addEventListener("close",(function(e){console.debug("[WS][".concat(o,"] Socket disconnected with code ").concat(e.code),e)})),c(a,"open"),c(a,"close"),c(a,"message",r),c(a,"error"),s.close=function(){a.close(1e3,"Shutting down socket")},s.getState=function(){return a.readyState},s},$e=function(e){var t=e.data;if(t){var n=JSON.parse(t),r=n.event,i=n.payload;if(!De.has(r)&&!Te.has(r))return console.warn("Unknown event",e),null;if("delete"===r)return{event:r,id:i};var o=i?JSON.parse(i):null;return"update"===r?{event:r,status:Object(k.f)(o)}:"notification"===r?{event:r,notification:Object(k.e)(o)}:"pleroma:chat_update"===r?{event:r,chatUpdate:Object(k.b)(o)}:void 0}},ze=Object.freeze({JOINED:1,CLOSED:2,ERROR:3,DISABLED:4,STARTING:5,STARTING_INITIAL:6}),Me={verifyCredentials:function(e){return _e("/api/v1/accounts/verify_credentials",{headers:Ce(e)}).then((function(e){return e.ok?e.json():{error:e}})).then((function(e){return e.error?e:Object(k.g)(e)}))},fetchTimeline:function(e){var t=e.timeline,n=e.credentials,r=e.since,i=void 0!==r&&r,o=e.until,s=void 0!==o&&o,a=e.userId,c=void 0!==a&&a,l=e.tag,u=void 0!==l&&l,d=e.withMuted,p=void 0!==d&&d,h=e.replyVisibility,b=void 0===h?"all":h,m="notifications"===t,f=[],O={public:"/api/v1/timelines/public",friends:"/api/v1/timelines/home",dms:"/api/v1/timelines/direct",notifications:"/api/v1/notifications",publicAndExternal:"/api/v1/timelines/public",user:re,media:re,favorites:"/api/v1/favourites",tag:ie,bookmarks:"/api/v1/bookmarks"}[t];"user"!==t&&"media"!==t||(O=O(c)),i&&f.push(["since_id",i]),s&&f.push(["max_id",s]),u&&(O=O(u)),"media"===t&&f.push(["only_media",1]),"public"===t&&f.push(["local",!0]),"public"!==t&&"publicAndExternal"!==t||f.push(["only_media",!1]),"favorites"!==t&&"bookmarks"!==t&&f.push(["with_muted",p]),"all"!==b&&f.push(["reply_visibility",b]),f.push(["limit",20]);var g=j()(f,(function(e){return"".concat(e[0],"=").concat(e[1])})).join("&");O+="?".concat(g);var v="",y="",w={};return _e(O,{headers:Ce(n)}).then((function(e){return v=e.status,y=e.statusText,w=Object(k.d)(e.headers.get("Link"),{flakeId:"bookmarks"!==t&&"notifications"!==t}),e})).then((function(e){return e.json()})).then((function(e){return e.errors?(e.status=v,e.statusText=y,e):{data:e.map(m?k.e:k.f),pagination:w}}))},fetchPinnedStatuses:function(e){var t=e.id,n=e.credentials,r=re(t)+"?pinned=true";return Se({url:r,credentials:n}).then((function(e){return e.map(k.f)}))},fetchConversation:function(e){var t=e.id,n=e.credentials,r=function(e){return"/api/v1/statuses/".concat(e,"/context")}(t);return _e(r,{headers:Ce(n)}).then((function(e){if(e.ok)return e;throw new Error("Error fetching timeline",e)})).then((function(e){return e.json()})).then((function(e){var t=e.ancestors,n=e.descendants;return{ancestors:t.map(k.f),descendants:n.map(k.f)}}))},fetchStatus:function(e){var t=e.id,n=e.credentials,r=function(e){return"/api/v1/statuses/".concat(e)}(t);return _e(r,{headers:Ce(n)}).then((function(e){if(e.ok)return e;throw new Error("Error fetching timeline",e)})).then((function(e){return e.json()})).then((function(e){return Object(k.f)(e)}))},fetchFriends:Pe,exportFriends:function(e){var t,n=e.id,r=e.credentials;return new Promise((t=i()(w.a.mark((function e(t,i){var o,s,a,c;return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.prev=0,o=[],s=!0;case 3:if(!s){e.next=12;break}return a=o.length>0?b()(o).id:void 0,e.next=7,Pe({id:n,maxId:a,credentials:r});case 7:c=e.sent,o=f()(o,c),0===c.length&&(s=!1),e.next=3;break;case 12:t(o),e.next=18;break;case 15:e.prev=15,e.t0=e.catch(0),i(e.t0);case 18:case"end":return e.stop()}}),e,null,[[0,15]])}))),function(e,n){return t.apply(this,arguments)}))},fetchFollowers:function(e){var t=e.id,n=e.maxId,r=e.sinceId,i=e.limit,o=void 0===i?20:i,s=e.credentials,a=function(e){return"/api/v1/accounts/".concat(e,"/followers")}(t),c=[n&&"max_id=".concat(n),r&&"since_id=".concat(r),o&&"limit=".concat(o),"with_relationships=true"].filter((function(e){return e})).join("&");return _e(a+=c?"?"+c:"",{headers:Ce(s)}).then((function(e){return e.json()})).then((function(e){return e.map(k.g)}))},followUser:function(e){var t=e.id,n=e.credentials,r=s()(e,Y),i=function(e){return"/api/v1/accounts/".concat(e,"/follow")}(t),o={};return void 0!==r.reblogs&&(o.reblogs=r.reblogs),_e(i,{body:JSON.stringify(o),headers:K(K({},Ce(n)),{},{"Content-Type":"application/json"}),method:"POST"}).then((function(e){return e.json()}))},unfollowUser:function(e){var t=e.id,n=e.credentials,r=function(e){return"/api/v1/accounts/".concat(e,"/unfollow")}(t);return _e(r,{headers:Ce(n),method:"POST"}).then((function(e){return e.json()}))},pinOwnStatus:function(e){var t=e.id,n=e.credentials;return Se({url:he(t),credentials:n,method:"POST"}).then((function(e){return Object(k.f)(e)}))},unpinOwnStatus:function(e){var t=e.id,n=e.credentials;return Se({url:be(t),credentials:n,method:"POST"}).then((function(e){return Object(k.f)(e)}))},muteConversation:function(e){var t=e.id,n=e.credentials;return Se({url:me(t),credentials:n,method:"POST"}).then((function(e){return Object(k.f)(e)}))},unmuteConversation:function(e){var t=e.id,n=e.credentials;return Se({url:fe(t),credentials:n,method:"POST"}).then((function(e){return Object(k.f)(e)}))},blockUser:function(e){var t=e.id,n=e.credentials;return _e(function(e){return"/api/v1/accounts/".concat(e,"/block")}(t),{headers:Ce(n),method:"POST"}).then((function(e){return e.json()}))},unblockUser:function(e){var t=e.id,n=e.credentials;return _e(function(e){return"/api/v1/accounts/".concat(e,"/unblock")}(t),{headers:Ce(n),method:"POST"}).then((function(e){return e.json()}))},fetchUser:function(e){var t=e.id,n=e.credentials,r="".concat("/api/v1/accounts","/").concat(t);return Se({url:r,credentials:n}).then((function(e){return Object(k.g)(e)}))},fetchUserRelationship:function(e){var t=e.id,n=e.credentials,r="".concat("/api/v1/accounts/relationships","/?id=").concat(t);return _e(r,{headers:Ce(n)}).then((function(e){return new Promise((function(t,n){return e.json().then((function(i){return e.ok?t(i):n(new q(e.status,i,{url:r},e))}))}))}))},favorite:function(e){var t=e.id,n=e.credentials;return Se({url:Q(t),method:"POST",credentials:n}).then((function(e){return Object(k.f)(e)}))},unfavorite:function(e){var t=e.id,n=e.credentials;return Se({url:ee(t),method:"POST",credentials:n}).then((function(e){return Object(k.f)(e)}))},retweet:function(e){var t=e.id,n=e.credentials;return Se({url:te(t),method:"POST",credentials:n}).then((function(e){return Object(k.f)(e)}))},unretweet:function(e){var t=e.id,n=e.credentials;return Se({url:ne(t),method:"POST",credentials:n}).then((function(e){return Object(k.f)(e)}))},bookmarkStatus:function(e){var t=e.id,n=e.credentials;return Se({url:le(t),headers:Ce(n),method:"POST"})},unbookmarkStatus:function(e){var t=e.id,n=e.credentials;return Se({url:ue(t),headers:Ce(n),method:"POST"})},postStatus:function(e){var t=e.credentials,n=e.status,r=e.spoilerText,i=e.visibility,o=e.sensitive,s=e.poll,a=e.mediaIds,c=void 0===a?[]:a,l=e.inReplyToStatusId,u=e.contentType,d=e.preview,p=e.idempotencyKey,h=new FormData,b=s.options||[];if(h.append("status",n),h.append("source","Pleroma FE"),r&&h.append("spoiler_text",r),i&&h.append("visibility",i),o&&h.append("sensitive",o),u&&h.append("content_type",u),c.forEach((function(e){h.append("media_ids[]",e)})),b.some((function(e){return""!==e}))){var m={expires_in:s.expiresIn,multiple:s.multiple};Object.keys(m).forEach((function(e){h.append("poll[".concat(e,"]"),m[e])})),b.forEach((function(e){h.append("poll[options][]",e)}))}l&&h.append("in_reply_to_id",l),d&&h.append("preview","true");var f=Ce(t);return p&&(f["idempotency-key"]=p),_e("/api/v1/statuses",{body:h,method:"POST",headers:f}).then((function(e){return e.json()})).then((function(e){return e.error?e:Object(k.f)(e)}))},deleteStatus:function(e){var t=e.id,n=e.credentials;return _e(function(e){return"/api/v1/statuses/".concat(e)}(t),{headers:Ce(n),method:"DELETE"})},uploadMedia:function(e){var t=e.formData,n=e.credentials;return _e("/api/v1/media",{body:t,method:"POST",headers:Ce(n)}).then((function(e){return e.json()})).then((function(e){return Object(k.a)(e)}))},setMediaDescription:function(e){var t=e.id,n=e.description,r=e.credentials;return Se({url:"".concat("/api/v1/media","/").concat(t),method:"PUT",headers:Ce(r),payload:{description:n}}).then((function(e){return Object(k.a)(e)}))},fetchMutes:function(e){var t=e.credentials;return Se({url:"/api/v1/mutes/",credentials:t}).then((function(e){return e.map(k.g)}))},muteUser:function(e){var t=e.id,n=e.credentials;return Se({url:oe(t),credentials:n,method:"POST"})},unmuteUser:function(e){var t=e.id,n=e.credentials;return Se({url:se(t),credentials:n,method:"POST"})},subscribeUser:function(e){var t=e.id,n=e.credentials;return Se({url:ae(t),credentials:n,method:"POST"})},unsubscribeUser:function(e){var t=e.id,n=e.credentials;return Se({url:ce(t),credentials:n,method:"POST"})},fetchBlocks:function(e){var t=e.credentials;return Se({url:"/api/v1/blocks/",credentials:t}).then((function(e){return e.map(k.g)}))},fetchOAuthTokens:function(e){var t=e.credentials;return _e("/api/oauth_tokens.json",{headers:Ce(t)}).then((function(e){if(e.ok)return e.json();throw new Error("Error fetching auth tokens",e)}))},revokeOAuthToken:function(e){var t=e.id,n=e.credentials,r="/api/oauth_tokens/".concat(t);return _e(r,{headers:Ce(n),method:"DELETE"})},tagUser:function(e){var t=e.tag,n=e.credentials,r={nicknames:[e.user.screen_name],tags:[t]},i=Ce(n);return i["Content-Type"]="application/json",_e("/api/pleroma/admin/users/tag",{method:"PUT",headers:i,body:JSON.stringify(r)})},untagUser:function(e){var t=e.tag,n=e.credentials,r={nicknames:[e.user.screen_name],tags:[t]},i=Ce(n);return i["Content-Type"]="application/json",_e("/api/pleroma/admin/users/tag",{method:"DELETE",headers:i,body:JSON.stringify(r)})},deleteUser:function(e){var t=e.credentials,n=e.user.screen_name,r=Ce(t);return _e("".concat("/api/pleroma/admin/users","?nickname=").concat(n),{method:"DELETE",headers:r})},addRight:function(e){var t=e.right,n=e.credentials,r=e.user.screen_name;return _e(X(r,t),{method:"POST",headers:Ce(n),body:{}})},deleteRight:function(e){var t=e.right,n=e.credentials,r=e.user.screen_name;return _e(X(r,t),{method:"DELETE",headers:Ce(n),body:{}})},activateUser:function(e){var t=e.credentials,n=e.user.screen_name;return Se({url:"/api/pleroma/admin/users/activate",method:"PATCH",credentials:t,payload:{nicknames:[n]}}).then((function(e){return p()(e,"users.0")}))},deactivateUser:function(e){var t=e.credentials,n=e.user.screen_name;return Se({url:"/api/pleroma/admin/users/deactivate",method:"PATCH",credentials:t,payload:{nicknames:[n]}}).then((function(e){return p()(e,"users.0")}))},register:function(e){var t=e.params,n=e.credentials,r=t.nickname,i=s()(t,W);return _e("/api/v1/accounts",{method:"POST",headers:K(K({},Ce(n)),{},{"Content-Type":"application/json"}),body:JSON.stringify(K({nickname:r,locale:"en_US",agreement:!0},i))}).then((function(e){return e.ok?e.json():e.json().then((function(e){throw new J(e)}))}))},getCaptcha:function(){return _e("/api/pleroma/captcha").then((function(e){return e.json()}))},updateProfileImages:function(e){var t=e.credentials,n=e.avatar,r=void 0===n?null:n,i=e.avatarName,o=void 0===i?null:i,s=e.banner,a=void 0===s?null:s,c=e.background,l=void 0===c?null:c,u=new FormData;return null!==r&&(null!==o?u.append("avatar",r,o):u.append("avatar",r)),null!==a&&u.append("header",a),null!==l&&u.append("pleroma_background_image",l),_e("/api/v1/accounts/update_credentials",{headers:Ce(t),method:"PATCH",body:u}).then((function(e){return e.json()})).then((function(e){if(e.error)throw new Error(e.error);return Object(k.g)(e)}))},updateProfile:function(e){var t=e.credentials,n=e.params;return Se({url:"/api/v1/accounts/update_credentials",method:"PATCH",payload:n,credentials:t}).then((function(e){return Object(k.g)(e)}))},importMutes:function(e){var t=e.file,n=e.credentials,r=new FormData;return r.append("list",t),_e("/api/pleroma/mutes_import",{body:r,method:"POST",headers:Ce(n)}).then((function(e){return e.ok}))},importBlocks:function(e){var t=e.file,n=e.credentials,r=new FormData;return r.append("list",t),_e("/api/pleroma/blocks_import",{body:r,method:"POST",headers:Ce(n)}).then((function(e){return e.ok}))},importFollows:function(e){var t=e.file,n=e.credentials,r=new FormData;return r.append("list",t),_e("/api/pleroma/follow_import",{body:r,method:"POST",headers:Ce(n)}).then((function(e){return e.ok}))},deleteAccount:function(e){var t=e.credentials,n=e.password,r=new FormData;return r.append("password",n),_e("/api/pleroma/delete_account",{body:r,method:"POST",headers:Ce(t)}).then((function(e){return e.json()}))},changeEmail:function(e){var t=e.credentials,n=e.email,r=e.password,i=new FormData;return i.append("email",n),i.append("password",r),_e("/api/pleroma/change_email",{body:i,method:"POST",headers:Ce(t)}).then((function(e){return e.json()}))},changePassword:function(e){var t=e.credentials,n=e.password,r=e.newPassword,i=e.newPasswordConfirmation,o=new FormData;return o.append("password",n),o.append("new_password",r),o.append("new_password_confirmation",i),_e("/api/pleroma/change_password",{body:o,method:"POST",headers:Ce(t)}).then((function(e){return e.json()}))},settingsMFA:function(e){var t=e.credentials;return _e("/api/pleroma/accounts/mfa",{headers:Ce(t),method:"GET"}).then((function(e){return e.json()}))},mfaDisableOTP:function(e){var t=e.credentials,n=e.password,r=new FormData;return r.append("password",n),_e("/api/pleroma/accounts/mfa/totp",{body:r,method:"DELETE",headers:Ce(t)}).then((function(e){return e.json()}))},generateMfaBackupCodes:function(e){var t=e.credentials;return _e("/api/pleroma/accounts/mfa/backup_codes",{headers:Ce(t),method:"GET"}).then((function(e){return e.json()}))},mfaSetupOTP:function(e){var t=e.credentials;return _e("/api/pleroma/accounts/mfa/setup/totp",{headers:Ce(t),method:"GET"}).then((function(e){return e.json()}))},mfaConfirmOTP:function(e){var t=e.credentials,n=e.password,r=e.token,i=new FormData;return i.append("password",n),i.append("code",r),_e("/api/pleroma/accounts/mfa/confirm/totp",{body:i,headers:Ce(t),method:"POST"}).then((function(e){return e.json()}))},fetchFollowRequests:function(e){var t=e.credentials;return _e("/api/v1/follow_requests",{headers:Ce(t)}).then((function(e){return e.json()})).then((function(e){return e.map(k.g)}))},approveUser:function(e){var t=e.id,n=e.credentials,r=function(e){return"/api/v1/follow_requests/".concat(e,"/authorize")}(t);return _e(r,{headers:Ce(n),method:"POST"}).then((function(e){return e.json()}))},denyUser:function(e){var t=e.id,n=e.credentials,r=function(e){return"/api/v1/follow_requests/".concat(e,"/reject")}(t);return _e(r,{headers:Ce(n),method:"POST"}).then((function(e){return e.json()}))},suggestions:function(e){var t=e.credentials;return _e("/api/v1/suggestions",{headers:Ce(t)}).then((function(e){return e.json()}))},markNotificationsAsSeen:function(e){var t=e.id,n=e.credentials,r=e.single,i=void 0!==r&&r,o=new FormData;return i?o.append("id",t):o.append("max_id",t),_e("/api/v1/pleroma/notifications/read",{body:o,headers:Ce(n),method:"POST"}).then((function(e){return e.json()}))},dismissNotification:function(e){var t=e.credentials,n=e.id;return Se({url:Z(n),method:"POST",payload:{id:n},credentials:t})},vote:function(e){var t,n=e.pollId,r=e.choices,i=e.credentials;return(new FormData).append("choices",r),Se({url:(t=encodeURIComponent(n),"/api/v1/polls/".concat(t,"/votes")),method:"POST",credentials:i,payload:{choices:r}})},fetchPoll:function(e){var t,n=e.pollId,r=e.credentials;return Se({url:(t=encodeURIComponent(n),"/api/v1/polls/".concat(t)),method:"GET",credentials:r})},fetchFavoritedByUsers:function(e){var t=e.id,n=e.credentials;return Se({url:de(t),method:"GET",credentials:n}).then((function(e){return e.map(k.g)}))},fetchRebloggedByUsers:function(e){var t=e.id,n=e.credentials;return Se({url:pe(t),method:"GET",credentials:n}).then((function(e){return e.map(k.g)}))},fetchMascot:function(e){var t=e.credentials;return Se({url:"/api/v1/pleroma/mascot",credentials:t})},updateMascot:function(e){var t=e.mascot,n=e.credentials,r=new FormData;return r.append("file",t),_e("/api/v1/pleroma/mascot",{headers:Ce(n),method:"PUT",body:r}).then((function(e){return e.json()}))},fetchEmojiReactions:function(e){var t=e.id,n=e.credentials;return Se({url:Oe(t),credentials:n}).then((function(e){return e.map((function(e){return e.accounts=e.accounts.map(k.g),e}))}))},reactWithEmoji:function(e){var t=e.id,n=e.emoji,r=e.credentials;return Se({url:je(t,n),method:"PUT",credentials:r}).then(k.f)},unreactWithEmoji:function(e){var t=e.id,n=e.emoji,r=e.credentials;return Se({url:ge(t,n),method:"DELETE",credentials:r}).then(k.f)},reportUser:function(e){var t=e.credentials,n=e.userId,r=e.statusIds,i=e.comment,o=e.forward;return Se({url:"/api/v1/reports",method:"POST",payload:{account_id:n,status_ids:r,comment:i,forward:o},credentials:t})},updateNotificationSettings:function(e){var t=e.credentials,n=e.settings,r=new FormData;return v()(n,(function(e,t){r.append(t,e)})),_e("/api/pleroma/notification_settings",{headers:Ce(t),method:"PUT",body:r}).then((function(e){return e.json()}))},search2:function(e){var t=e.credentials,n=e.q,r=e.resolve,i=e.limit,o=e.offset,s=e.following,a="/api/v2/search",c=[];n&&c.push(["q",encodeURIComponent(n)]),r&&c.push(["resolve",r]),i&&c.push(["limit",i]),o&&c.push(["offset",o]),s&&c.push(["following",!0]),c.push(["with_relationships",!0]);var l=j()(c,(function(e){return"".concat(e[0],"=").concat(e[1])})).join("&");return a+="?".concat(l),_e(a,{headers:Ce(t)}).then((function(e){if(e.ok)return e;throw new Error("Error fetching search result",e)})).then((function(e){return e.json()})).then((function(e){return e.accounts=e.accounts.slice(0,i).map((function(e){return Object(k.g)(e)})),e.statuses=e.statuses.slice(0,i).map((function(e){return Object(k.f)(e)})),e}))},searchUsers:function(e){var t=e.credentials,n=e.query;return Se({url:"/api/v1/accounts/search",params:{q:n,resolve:!0},credentials:t}).then((function(e){return e.map(k.g)}))},fetchKnownDomains:function(e){var t=e.credentials;return Se({url:"/api/v1/instance/peers",credentials:t})},fetchDomainMutes:function(e){var t=e.credentials;return Se({url:"/api/v1/domain_blocks",credentials:t})},muteDomain:function(e){var t=e.domain,n=e.credentials;return Se({url:"/api/v1/domain_blocks",method:"POST",payload:{domain:t},credentials:n})},unmuteDomain:function(e){var t=e.domain,n=e.credentials;return Se({url:"/api/v1/domain_blocks",method:"DELETE",payload:{domain:t},credentials:n})},chats:function(e){var t=e.credentials;return _e("/api/v1/pleroma/chats",{headers:Ce(t)}).then((function(e){return e.json()})).then((function(e){return{chats:e.map(k.b).filter((function(e){return e}))}}))},getOrCreateChat:function(e){var t,n=e.accountId,r=e.credentials;return Se({url:(t=n,"/api/v1/pleroma/chats/by-account-id/".concat(t)),method:"POST",credentials:r})},chatMessages:function(e){var t=e.id,n=e.credentials,r=e.maxId,i=e.sinceId,o=e.limit,s=void 0===o?20:o,a=ve(t),c=[r&&"max_id=".concat(r),i&&"since_id=".concat(i),s&&"limit=".concat(s)].filter((function(e){return e})).join("&");return Se({url:a+=c?"?"+c:"",method:"GET",credentials:n})},sendChatMessage:function(e){var t=e.id,n=e.content,r=e.mediaId,i=void 0===r?null:r,o=e.idempotencyKey,s=e.credentials,a={content:n};i&&(a.media_id=i);var c={};return o&&(c["idempotency-key"]=o),Se({url:ve(t),method:"POST",payload:a,credentials:s,headers:c})},readChat:function(e){var t=e.id,n=e.lastReadId,r=e.credentials;return Se({url:ye(t),method:"POST",payload:{last_read_id:n},credentials:r})},deleteChatMessage:function(e){var t=e.chatId,n=e.messageId,r=e.credentials;return Se({url:we(t,n),method:"DELETE",credentials:r})}};t.c=Me},,,function(e,t,n){"use strict";n.d(t,"i",(function(){return p})),n.d(t,"h",(function(){return b})),n.d(t,"c",(function(){return f})),n.d(t,"a",(function(){return O})),n.d(t,"b",(function(){return j})),n.d(t,"f",(function(){return g})),n.d(t,"g",(function(){return v})),n.d(t,"j",(function(){return y})),n.d(t,"e",(function(){return w})),n.d(t,"d",(function(){return k}));var r=n(5),i=n.n(r),o=n(11),s=n.n(o),a=n(28),c=n.n(a),l=n(20);function u(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function d(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?u(Object(n),!0).forEach((function(t){i()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):u(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var p=function(e,t,n){if(null!=e){if("#"===e[0]||"transparent"===e)return e;if("object"===c()(e)){var r=e;e=r.r,t=r.g,n=r.b}var i=[e,t,n].map((function(e){return e=(e=(e=Math.ceil(e))<0?0:e)>255?255:e})),o=s()(i,3);return e=o[0],t=o[1],n=o[2],"#".concat(((1<<24)+(e<<16)+(t<<8)+n).toString(16).slice(1))}},h=function(e){return"rgb".split("").reduce((function(t,n){return t[n]=function(e){var t=e/255;return t<.03928?t/12.92:Math.pow((t+.055)/1.055,2.4)}(e[n]),t}),{})},b=function(e){var t=h(e);return.2126*t.r+.7152*t.g+.0722*t.b},m=function(e,t){var n=b(e),r=b(t),i=n>r?[n,r]:[r,n],o=s()(i,2);return(o[0]+.05)/(o[1]+.05)},f=function(e,t,n){return m(j(n,t),e)},O=function(e,t,n){return 1===t||void 0===t?e:"rgb".split("").reduce((function(r,i){return r[i]=e[i]*t+n[i]*(1-t),r}),{})},j=function(e,t){return t.reduce((function(e,t){var n=s()(t,2),r=n[0],i=n[1];return O(r,i,e)}),e)},g=function(e){var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null},v=function(e,t){return"rgb".split("").reduce((function(n,r){return n[r]=(e[r]+t[r])/2,n}),{})},y=function(e){return"rgba(".concat(Math.floor(e.r),", ").concat(Math.floor(e.g),", ").concat(Math.floor(e.b),", ").concat(e.a,")")},w=function(e,t,n){if(m(e,t)<4.5){var r=void 0!==t.a?{a:t.a}:{},i=Object.assign(r,Object(l.invertLightness)(t).rgb);return!n&&m(e,i)<4.5?Object(l.contrastRatio)(e,t).rgb:i}return t},k=function(e,t){var n={};if("object"===c()(e))n=e;else if("string"==typeof e){if(!e.startsWith("#"))return e;n=g(e)}return y(d(d({},n),{},{a:t}))}},,,,function(e,t,n){"use strict";n.r(t);var r=n(0);var i=n(50),o=n(6),s=n(3);o.c.add(s.ab);var a={props:["user","betterShadow","compact","bot"],data:function(){return{showPlaceholder:!1,defaultAvatar:"".concat(this.$store.state.instance.server+this.$store.state.instance.defaultAvatar)}},components:{StillImage:i.a},methods:{imgSrc:function(e){return!e||this.showPlaceholder?this.defaultAvatar:e},imageLoadError:function(){this.showPlaceholder=!0}}},c=(n(512),n(4));const l=n.n(c)()(a,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("StillImage"),c=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("span",{class:Object(r.w)(["Avatar",{"-compact":e.compact}])},[e.user?(Object(r.D)(),Object(r.h)(a,{key:0,class:Object(r.w)(["avatar",{"-compact":e.compact,"-better-shadow":e.betterShadow}]),alt:e.user.screen_name_ui,title:e.user.screen_name_ui,src:e.imgSrc(e.user.profile_image_url_original),"image-load-error":e.imageLoadError},null,8,["alt","title","src","image-load-error","class"])):(Object(r.D)(),Object(r.j)("div",{key:1,class:Object(r.w)(["avatar -placeholder",{"-compact":e.compact}])},null,2)),e.bot?(Object(r.D)(),Object(r.h)(c,{key:2,icon:"robot",class:"bot-indicator"})):Object(r.i)("",!0)],2)}]]);t.default=l},function(e,t,n){"use strict";var r=n(124),i=n.n(r),o=function(e){return e&&e.includes("@")};t.a=function(e,t,n){var r=!t||o(t)||i()(n,t);return{name:r?"external-user-profile":"user-profile",params:r?{id:e}:{name:t}}}},function(e,t,n){"use strict";n.r(t);var r=n(0);var i={name:"Popover",props:{trigger:String,placement:String,boundTo:Object,boundToSelector:String,margin:Object,offset:Object,popoverClass:String,removePadding:Boolean},data:function(){return{hidden:!0,styles:{opacity:0},oldSize:{width:0,height:0}}},methods:{containerBoundingClientRect:function(){return(this.boundToSelector?this.$el.closest(this.boundToSelector):this.$el.offsetParent).getBoundingClientRect()},updateStyles:function(){if(this.hidden)this.styles={opacity:0};else{var e=this.$refs.trigger&&this.$refs.trigger.children[0]||this.$el,t=e.offsetWidth||e.clientWidth,n=e.offsetHeight||e.clientHeight,r=e.getBoundingClientRect(),i=r.left+.5*r.width,o=r.top,s=this.$refs.content,a=this.boundTo&&("container"===this.boundTo.x||"container"===this.boundTo.y)&&this.containerBoundingClientRect(),c=this.margin||{},l=this.boundTo&&"container"===this.boundTo.x?{min:a.left+(c.left||0),max:a.right-(c.right||0)}:{min:0+(c.left||10),max:window.innerWidth-(c.right||10)},u=this.boundTo&&"container"===this.boundTo.y?{min:a.top+(c.top||0),max:a.bottom-(c.bottom||0)}:{min:0+(c.top||50),max:window.innerHeight-(c.bottom||5)},d=0;i-.5*s.offsetWidth<l.min&&(d+=-(i-.5*s.offsetWidth)+l.min),i+d+.5*s.offsetWidth>l.max&&(d-=i+d+.5*s.offsetWidth-l.max);var p="bottom"!==this.placement;o+s.offsetHeight>u.max&&(p=!0),o-s.offsetHeight<u.min&&(p=!1);var h=0;if(this.removePadding&&p){var b=getComputedStyle(e);h=parseFloat(b.paddingTop)+parseFloat(b.paddingBottom)}var m=this.offset&&this.offset.y||0,f=p?-n+h-m-s.offsetHeight:m,O=this.offset&&this.offset.x||0,j=.5*t-.5*s.offsetWidth+d+O;this.styles={opacity:1,transform:"translateX(".concat(Math.round(j),"px) translateY(").concat(Math.round(f),"px)")}}},showPopover:function(){var e=this,t=this.hidden;this.hidden=!1,this.$nextTick((function(){t&&e.$emit("show"),e.updateStyles()}))},hidePopover:function(){this.hidden||this.$emit("close"),this.hidden=!0,this.styles={opacity:0}},onMouseenter:function(e){"hover"===this.trigger&&this.showPopover()},onMouseleave:function(e){"hover"===this.trigger&&this.hidePopover()},onClick:function(e){"click"===this.trigger&&(this.hidden?this.showPopover():this.hidePopover())},onClickOutside:function(e){this.hidden||this.$el.contains(e.target)||this.hidePopover()}},updated:function(){var e=this.$refs.content;e&&(this.oldSize.width===e.offsetWidth&&this.oldSize.height===e.offsetHeight||(this.updateStyles(),this.oldSize={width:e.offsetWidth,height:e.offsetHeight}))},created:function(){document.addEventListener("click",this.onClickOutside)},unmounted:function(){document.removeEventListener("click",this.onClickOutside),this.hidePopover()}},o=(n(527),n(4));const s=n.n(o)()(i,[["render",function(e,t,n,i,o,s){return Object(r.D)(),Object(r.j)("div",{onMouseenter:t[1]||(t[1]=(...t)=>e.onMouseenter&&e.onMouseenter(...t)),onMouseleave:t[2]||(t[2]=(...t)=>e.onMouseleave&&e.onMouseleave(...t))},[Object(r.k)("button",{ref:"trigger",class:"button-unstyled popover-trigger-button",type:"button",onClick:t[0]||(t[0]=(...t)=>e.onClick&&e.onClick(...t))},[Object(r.I)(e.$slots,"trigger")],512),e.hidden?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",{key:0,ref:"content",style:Object(r.x)(e.styles),class:Object(r.w)(["popover",e.popoverClass||"popover-default"])},[Object(r.I)(e.$slots,"content",{class:"popover-inner",close:e.hidePopover})],6))],32)}]]);t.default=s},function(e,t,n){"use strict";var r=n(11),i=n.n(r),o=n(12),s=n.n(o),a=n(40),c=n.n(a),l=n(328),u=n.n(l),d=n(75),p=n.n(d),h=n(0);function b(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return m(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return m(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var f=function(e){var t=/(?:<\/(\w+)>|<(\w+)\s?.*?\/?>)/gi.exec(e);return t&&(t[1]||t[2])},O=function(e){var t=e.substring(1,e.length-1).replace(new RegExp("^"+f(e)),"").replace(/\/?$/,"").trim(),n=Array.from(t.matchAll(/([a-z0-9-]+)(?:=("[^"]+?"|'[^']+?'))?/gi)).map((function(e){var t=i()(e,3);t[0];return[t[1],t[2]]})).map((function(e){var t=i()(e,2),n=t[0],r=t[1];return r?[n,r.substring(1,r.length-1)]:[n,!0]}));return Object.fromEntries(n)},j=function(e,t,n){for(var r=[],i="",o=0;o<e.length;o++){var s=e[o];if(":"===s){var a,c=e.slice(o+1),l=!1,u=b(t);try{for(u.s();!(a=u.n()).done;){var d=a.value;if(c.slice(0,d.shortcode.length+1)===d.shortcode+":"){l=d;break}}}catch(e){u.e(e)}finally{u.f()}l?(r.push(i),i="",r.push(n(l)),o+=l.shortcode.length+1):i+=s}else i+=s}return i&&r.push(i),r};function g(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return v(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return v(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var y=n(50),w=n(81);const k={class:"HashtagLink"},_=["href","innerHTML"];var S={name:"HashtagLink",props:{url:{required:!0,type:String},content:{required:!0,type:String},tag:{required:!1,type:String,default:""}},methods:{onClick:function(){var e,t,n=this.tag||(e=this.url,!!(t=/tag[s]*\/(\w+)$/g.exec(e))&&t[1]);if(n){var r=this.generateTagLink(n);this.$router.push(r)}else window.open(this.url,"_blank")},generateTagLink:function(e){return"/tag/".concat(e)}}},C=(n(515),n(4));var P=n.n(C)()(S,[["render",function(e,t,n,r,i,o){return Object(h.D)(),Object(h.j)("span",k,[Object(h.k)("a",{href:e.url,class:"original",target:"_blank",onClick:t[0]||(t[0]=Object(h.Y)((...t)=>e.onClick&&e.onClick(...t),["prevent"])),innerHTML:e.content},null,8,_)])}]]),x=(n(516),["index"]);t.a={name:"RichContent",components:{MentionsLine:w.b,HashtagLink:P},props:{html:{required:!0,type:String},attentions:{required:!1,default:function(){return[]}},emoji:{required:!0,type:Array},handleLinks:{required:!1,type:Boolean,default:!1},greentext:{required:!1,type:Boolean,default:!1}},render:function(){var e=this,t=T(this.html,this.greentext).newHtml,n=null,r="",o=[],a=[],l=[],u=[],d=0,b=0,m=!1,g=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=new Set(["area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"]),n=[],r=[["",n]],i="",o=null,s=function(){return r[r.length-1][1]},a=function(){""!==i&&(s().push(i),i="")},c=function(e){s().push([e])},l=function(e){var t=s(),n=[p()(e),[]];r.push(n),t.push(n)},u=function(e){var t=r[r.length-1];f(r[r.length-1][0])===f(e)?(t.push(e),r.pop()):s().push(e)},d=0;d<e.length;d++){var h=e[d];if("<"===h&&null===o)a(),o=h;else if(">"!==h&&null!==o)o+=h;else if(">"===h&&null!==o){var b=o+=h;o=null;var m=f(b);"/"===b[1]?u(b):t.has(m)||"/"===b[b.length-2]?c(b):l(b)}else i+=h}return o&&(i+=o),a(),n}(t).map((function t(o,c,u,p){if("string"==typeof o){var b=""===o.trim();return o.includes("\n")&&(n=null),b?(r=o,c!==u.length-1&&null!==n?o.trim():o):(n=null,o.includes(":")&&(o=["",j(o,e.emoji,(function(e){var t=e.shortcode,n=e.url;return Object(h.m)(y.a,{class:"emoji img",src:n,title:":".concat(t,":"),alt:":".concat(t,":")},null)}))]),o)}if(Array.isArray(o)){var m=o,g=i()(m,3),v=g[0],k=g[1],_=g[2],S=f(v),C=O(v),P=!(null!==n)||k&&"string"==typeof k[0]&&k[0].match(/^\s/)?"":r;switch(S){case"br":n=null;break;case"img":return["",[P,(x=v,Object(h.m)(y.a,Object(h.u)(O(x),{class:"img"}),null))],""];case"a":if(!e.handleLinks)break;if(C.class&&C.class.includes("mention"))return function(t,r){var i=D(t,r,d++);return i.notifying=e.attentions.some((function(e){return e.statusnet_profile_url===i.url})),a.push(i),null===n&&(n=[]),n.push(i),n.length>w.a&&l.push(i),1===n.length?Object(h.m)(w.b,{mentions:n},null):""}(C,k);if(n=null,C.href)return function(e,t){var n=e.href.replace(/&amp;/g,"&"),r=t.map((function(t){return"string"==typeof t?t.replace(e.href,n):"<span>"===t[0]?Object(h.m)("span",null,[t[1]]):t[1]}));return Object(h.m)("a",Object(h.u)({attrs:e},{href:n}),s()(r))}(C,k);break;case"span":if(e.handleLinks&&C.class&&C.class.includes("h-card"))return["",k.map(t),""]}return void 0!==k?["",[P,[v,k.map(t),_]],""]:["",[P,o],""]}var x})),v=s()(g).reverse().map((function t(n,r,a,l){var d;if("string"==typeof n)return""===n.trim()?n:(m||(m=!0),p()(n));if(Array.isArray(n)){var j=i()(n,2),g=j[0],v=j[1],y=""===g?"":f(g);switch(y){case"a":if(!e.handleLinks)break;var w=O(g);if(w.class&&w.class.includes("hashtag")||"tag"===w.rel)return function(e,t,n){var r=D(e,t,b++),i=(r.index,c()(r,x));u.push(i),n||o.push(i);var s=i.url,a=i.tag,l=i.content;return Object(h.m)(P,{url:s,tag:a,content:l},null)}(w,v,m);w.target="_blank";var k=s()(v).reverse().map(t).reverse();return Object(h.m)("a",w,[k]);case"":return s()(v).reverse().map(t).reverse()}if(void 0!==v){var _=Array.isArray(v)?s()(v).reverse().map(t).reverse():v;return Object(h.m)(y,O(g),"function"==typeof(d=_)||"[object Object]"===Object.prototype.toString.call(d)&&!Object(h.t)(d)?_:{default:function(){return[_]}})}return Object(h.m)(y,null,null)}return n})).reverse(),k=Object(h.m)("span",{class:"RichContent"},[v]),_={lastTags:o,writtenMentions:a,writtenTags:u,invisibleMentions:l};return this.$emit("parseReady",_),k}};var D=function(e,t,n){var r=t.map((function e(t){return"string"==typeof t?t:t[1].map(e).join("")})).join("");return{index:n,url:e.href,tag:e["data-tag"],content:u()(t).join(""),textContent:r}},T=function(e,t){var n=new Set(["p","div"]);return{newHtml:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=new Set(["area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"]),r=new Set(["address","article","aside","blockquote","details","dialog","dd","div","dl","dt","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","li","main","nav","ol","p","pre","section","table","ul"]),i=new Set(["br"]),o=new Set([].concat(s()(r.values()),s()(i.values()))),a=new Set(o),c=g(n);try{for(c.s();!(e=c.n()).done;){var l=e.value;a.delete(l)}}catch(e){c.e(e)}finally{c.f()}for(var u=new Set([].concat(s()(a.values()),s()(n.values()))),d=[],p=[],h="",b=null,m=function(){h.trim().length>0?d.push({level:[].concat(p),text:h}):d.push(h),h=""},O=function(e){m(),d.push(e)},j=function(e){m(),d.push(e),p.unshift(f(e))},v=function(e){p[0]===f(e)?(m(),d.push(e),p.shift()):h+=e},y=0;y<t.length;y++){var w=t[y];if("<"===w&&null===b)b=w;else if(">"!==w&&null!==b)b+=w;else if(">"===w&&null!==b){var k=b+=w;b=null;var _=f(k);u.has(_)?i.has(_)?O(k):a.has(_)?"/"===k[1]?v(k):"/"===k[k.length-2]?O(k):j(k):h+=k:h+=k}else"\n"===w?O(w):h+=w}return b&&(h+=b),m(),d}(e).reverse().map((function(e,r,i){if(!e.text)return e;var o=e.text;if(t&&e.level.every((function(e){return n.has(e)}))&&(o.includes("&gt;")||o.includes("&lt;"))){var s=o.replace(/<[^>]+?>/gi,"").replace(/@\w+/gi,"").trim();if(s.startsWith("&gt;"))return"<span class='greentext'>".concat(o,"</span>");if(s.startsWith("&lt;"))return"<span class='cyantext'>".concat(o,"</span>")}return o})).reverse().join("")}}},function(e,t,n){"use strict";n.d(t,"e",(function(){return d})),n.d(t,"b",(function(){return b})),n.d(t,"c",(function(){return m})),n.d(t,"d",(function(){return O})),n.d(t,"a",(function(){return j})),n.d(t,"f",(function(){return g}));var r=n(124),i=n.n(r),o=n(125),s=n.n(o),a=n(49),c=n.n(a),l=n(126),u=n(127),d=function(e){return e.state.statuses.notifications.data},p=function(e){var t=e.rootState||e.state;return[t.config.notificationVisibility.likes&&"like",t.config.notificationVisibility.mentions&&"mention",t.config.notificationVisibility.repeats&&"repeat",t.config.notificationVisibility.follows&&"follow",t.config.notificationVisibility.followRequest&&"follow_request",t.config.notificationVisibility.moves&&"move",t.config.notificationVisibility.emojiReactions&&"pleroma:emoji_reaction",t.config.notificationVisibility.polls&&"poll"].filter((function(e){return e}))},h=["like","mention","repeat","pleroma:emoji_reaction","poll"],b=function(e){return i()(h,e)},m=function(e){return!(b(e.type)&&!e.status)},f=function(e,t){var n=Number(e.id),r=Number(t.id),i=!Number.isNaN(n),o=!Number.isNaN(r);return i&&o?n>r?-1:1:i&&!o?1:!i&&o||e.id>t.id?-1:1},O=function(e,t){var n=e.rootState||e.state;if(!t.seen&&p(e).includes(t.type)&&("mention"!==t.type||!function(e,t){if(t.status)return t.status.muted||Object(l.a)(t.status,e.rootGetters.mergedConfig.muteWords).length>0}(e,t))){var r=v(t,e.rootGetters.i18n);Object(u.a)(n,r)}},j=function(e,t){var n=d(e).map((function(e){return e})).sort(f);return(n=s()(n,"seen")).filter((function(n){return(t||p(e)).includes(n.type)}))},g=function(e){return c()(j(e),(function(e){return!e.seen}))},v=function(e,t){var n,r={tag:e.id},i=e.status,o=e.from_profile.name;switch(r.title=o,r.icon=e.from_profile.profile_image_url,e.type){case"like":n="favorited_you";break;case"repeat":n="repeated_you";break;case"follow":n="followed_you";break;case"move":n="migrated_to";break;case"follow_request":n="follow_request";break;case"poll":n="poll_ended"}return"pleroma:emoji_reaction"===e.type?r.body=t.t("notifications.reacted_with",[e.emoji]):n?r.body=t.t("notifications."+n):b(e.type)&&(r.body=e.status.text),i&&i.attachments&&i.attachments.length>0&&!i.nsfw&&i.attachments[0].mimetype.startsWith("image/")&&(r.image=i.attachments[0].url),r}},,,,,function(e,t,n){"use strict";n.d(t,"a",(function(){return l})),n.d(t,"b",(function(){return c}));var r=n(5),i=n.n(r),o=n(18);function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){i()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var c=function(e){if(void 0!==e){var t=e.color,n=e.type;if("string"==typeof t){var r=Object(o.f)(t);if(null!=r){var i="rgb(".concat(Math.floor(r.r),", ").concat(Math.floor(r.g),", ").concat(Math.floor(r.b),")"),s="rgba(".concat(Math.floor(r.r),", ").concat(Math.floor(r.g),", ").concat(Math.floor(r.b),", .1)"),c="rgba(".concat(Math.floor(r.r),", ").concat(Math.floor(r.g),", ").concat(Math.floor(r.b),", .2)"),l={"--____highlight-solidColor":i,"--____highlight-tintColor":s,"--____highlight-tintColor2":c};return"striped"===n?a({backgroundImage:["repeating-linear-gradient(135deg,","".concat(s," ,"),"".concat(s," 20px,"),"".concat(c," 20px,"),"".concat(c," 40px")].join(" "),backgroundPosition:"0 0"},l):"solid"===n?a({backgroundColor:c},l):"side"===n?a({backgroundImage:["linear-gradient(to right,","".concat(i," ,"),"".concat(i," 2px,"),"transparent 6px"].join(" "),backgroundPosition:"0 0"},l):void 0}}}},l=function(e){return"USER____"+e.screen_name.replace(/\./g,"_").replace(/@/g,"_AT_")}},,function(e,t,n){"use strict";var r=function(e){return e.match(/flash/)?"flash":e.match(/text\/html/)?"html":e.match(/image/)?"image":e.match(/video/)?"video":e.match(/audio/)?"audio":"unknown"},i={fileType:r,fileMatchesSomeType:function(e,t){return e.some((function(e){return r(t.mimetype)===e}))}};t.a=i},function(e,t,n){"use strict";n.r(t);var r=n(0);const i={key:0,class:"alert error"},o={key:1,class:"status-container muted"},s={class:"status-username"},a={key:0,class:"mute-thread"},c={key:1,class:"mute-thread"},l=["title"],u={key:0,class:"pin"},d={class:"faint"},p={class:"right-side faint"},h=["title"],b=Object(r.l)(" "+Object(r.O)(" ")+" "),m=["data-tags"],f={key:0,class:"left-side"},O=["href"],j={class:"right-side"},g={key:1,class:"status-heading"},v={class:"heading-name-row"},y={class:"heading-left"},w=["title"],k=["title"],_=["src"],S={class:"heading-right"},C=["title"],P=["title"],x=["title","aria-expanded"],D=["title"],T={key:0,class:"heading-reply-row"},I={key:0,class:"glued-label reply-glued-label"},$=["aria-label"],z=Object(r.l)(" "+Object(r.O)(" ")+" "),M={class:"reply-to-text"},U={key:1,class:"reply-to-no-popover"},F={class:"reply-to-text"},E={key:1,class:"glued-label"},L=["aria-label"],R={class:"mentions-text"},A={key:2,class:"replies"},N=["title"],B={key:1,class:"faint"},V=["onClick"],H={key:0,class:"favs-repeated-users"},q={class:"stats"},J={class:"stat-count"},W={class:"stat-title"},Y={class:"stat-number"},G={class:"stat-count"},K={class:"stat-title"},X={class:"stat-number"},Z={class:"avatar-row"},Q={key:4,class:"status-actions"},ee={key:3,class:"gravestone"},te={class:"left-side"},ne={class:"right-side"},re={class:"deleted-text"},ie={key:4,class:"status-container reply-form"};var oe=n(5),se=n.n(oe),ae=n(136),ce=n.n(ae),le=n(75),ue=n.n(le);const de={class:"ReplyButton"},pe=["title"],he={key:1},be={key:2,class:"action-counter"};var me=n(6),fe=n(3);me.c.add(fe.Y);var Oe={name:"ReplyButton",props:["status","replying"],computed:{loggedIn:function(){return!!this.$store.state.users.currentUser}}},je=(n(546),n(4)),ge=n.n(je);var ve=ge()(Oe,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("div",de,[e.loggedIn?(Object(r.D)(),Object(r.j)("button",{key:0,class:Object(r.w)(["button-unstyled interactive",{"-active":e.replying}]),title:e.$t("tool_tip.reply"),onClick:t[0]||(t[0]=Object(r.Y)(t=>e.$emit("toggle"),["prevent"]))},[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",icon:"reply"})],10,pe)):(Object(r.D)(),Object(r.j)("span",he,[Object(r.m)(a,{icon:"reply",class:"fa-scale-110 fa-old-padding",title:e.$t("tool_tip.reply")},null,8,["title"])])),e.status.replies_count>0?(Object(r.D)(),Object(r.j)("span",be,Object(r.O)(e.status.replies_count),1)):Object(r.i)("",!0)])}]]);const ye={class:"FavoriteButton"},we=["title"],ke={key:1},_e={key:2,class:"action-counter"};var Se=n(8),Ce=n(41);function Pe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}me.c.add(fe.jb,Ce.d);var xe={props:["status","loggedIn"],data:function(){return{animated:!1}},methods:{favorite:function(){var e=this;this.status.favorited?this.$store.dispatch("unfavorite",{id:this.status.id}):this.$store.dispatch("favorite",{id:this.status.id}),this.animated=!0,setTimeout((function(){e.animated=!1}),500)}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Pe(Object(n),!0).forEach((function(t){se()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Pe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Object(Se.c)(["mergedConfig"]))};n(547);var De=ge()(xe,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("div",ye,[e.loggedIn?(Object(r.D)(),Object(r.j)("button",{key:0,class:Object(r.w)(["button-unstyled interactive",e.status.favorited&&"-favorited"]),title:e.$t("tool_tip.favorite"),onClick:t[0]||(t[0]=Object(r.Y)(t=>e.favorite(),["prevent"]))},[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",icon:[e.status.favorited?"fas":"far","star"],spin:e.animated},null,8,["icon","spin"])],10,we)):(Object(r.D)(),Object(r.j)("span",ke,[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",title:e.$t("tool_tip.favorite"),icon:["far","star"]},null,8,["title"])])),!e.mergedConfig.hidePostStats&&e.status.fave_num>0?(Object(r.D)(),Object(r.j)("span",_e,Object(r.O)(e.status.fave_num),1)):Object(r.i)("",!0)])}]]);const Te={class:"reaction-picker-filter"},Ie=["placeholder"],$e={class:"reaction-picker"},ze=["title","onClick"],Me=Object(r.k)("div",{class:"reaction-picker-divider"},null,-1),Ue=["title","onClick"],Fe=["src"],Ee={key:1},Le=Object(r.k)("div",{class:"reaction-bottom-fader"},null,-1),Re=["title"];var Ae=n(12),Ne=n.n(Ae),Be=n(24);me.c.add(Ce.c);var Ve={props:["status"],data:function(){return{filterWord:""}},components:{Popover:Be.default},methods:{addReaction:function(e,t,n){var r=this.status.emoji_reactions.find((function(e){return e.name===t}));r&&r.me?this.$store.dispatch("unreactWithEmoji",{id:this.status.id,emoji:t}):this.$store.dispatch("reactWithEmoji",{id:this.status.id,emoji:t}),n()},focusInput:function(){var e=this;this.$nextTick((function(){var t=e.$el.querySelector("input");t&&t.focus()}))}},computed:{commonEmojis:function(){return[{displayText:"thumbsup",replacement:"👍"},{displayText:"angry",replacement:"😠"},{displayText:"eyes",replacement:"👀"},{displayText:"joy",replacement:"😂"},{displayText:"fire",replacement:"🔥"}]},emojis:function(){if(""!==this.filterWord){for(var e=this.filterWord.toLowerCase(),t=[],n=0,r=[].concat(Ne()(this.$store.state.instance.emoji),Ne()(this.$store.state.instance.customEmoji));n<r.length;n++){var i=r[n];if(i.replacement===this.filterWord)return[i];var o=i.displayText.toLowerCase().indexOf(e);o>-1&&(Array.isArray(t[o])||(t[o]=[]),t[o].push(i))}return t.flat()}return[].concat(Ne()(this.$store.state.instance.emoji),Ne()(this.$store.state.instance.customEmoji))||[]},mergedConfig:function(){return this.$store.getters.mergedConfig}}};n(548);var He=ge()(Ve,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon"),c=Object(r.J)("Popover");return Object(r.D)(),Object(r.h)(c,{trigger:"click",class:"ReactButton",placement:"top",offset:{y:5},"bound-to":{x:"container"},"remove-padding":"",onShow:e.focusInput},{content:Object(r.V)(({close:n})=>[Object(r.k)("div",Te,[Object(r.W)(Object(r.k)("input",{"onUpdate:modelValue":t[0]||(t[0]=t=>e.filterWord=t),size:"1",placeholder:e.$t("emoji.search_emoji")},null,8,Ie),[[r.S,e.filterWord]])]),Object(r.k)("div",$e,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.commonEmojis,t=>(Object(r.D)(),Object(r.j)("span",{key:t.replacement,class:"emoji-button",title:t.displayText,onClick:r=>e.addReaction(r,t.replacement,n)},Object(r.O)(t.replacement),9,ze))),128)),Me,(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.emojis,(t,i)=>(Object(r.D)(),Object(r.j)("span",{key:i,class:"emoji-button",title:t.displayText,onClick:r=>e.addReaction(r,t.replacement,n)},[!1!==t.imageUrl?(Object(r.D)(),Object(r.j)("img",{key:0,src:t.imageUrl,width:"30px",class:"custom-reaction"},null,8,Fe)):(Object(r.D)(),Object(r.j)("span",Ee,Object(r.O)(t.replacement),1))],8,Ue))),128)),Le])]),trigger:Object(r.V)(()=>[Object(r.k)("button",{class:"button-unstyled popover-trigger",title:e.$t("tool_tip.add_reaction")},[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",icon:["far","smile-beam"]})],8,Re)]),_:1},8,["onShow"])}]]);const qe={class:"RetweetButton"},Je=["title"],We={key:1},Ye={key:2},Ge={key:3,class:"no-event"};me.c.add(fe.Z);var Ke={props:["status","loggedIn","visibility"],data:function(){return{animated:!1}},methods:{retweet:function(){var e=this;this.status.repeated?this.$store.dispatch("unretweet",{id:this.status.id}):this.$store.dispatch("retweet",{id:this.status.id}),this.animated=!0,setTimeout((function(){e.animated=!1}),500)}},computed:{mergedConfig:function(){return this.$store.getters.mergedConfig}}};n(549);var Xe=ge()(Ke,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("div",qe,["private"!==e.visibility&&"direct"!==e.visibility&&e.loggedIn?(Object(r.D)(),Object(r.j)("button",{key:0,class:Object(r.w)(["button-unstyled interactive",e.status.repeated&&"-repeated"]),title:e.$t("tool_tip.repeat"),onClick:t[0]||(t[0]=Object(r.Y)(t=>e.retweet(),["prevent"]))},[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",icon:"retweet",spin:e.animated},null,8,["spin"])],10,Je)):e.loggedIn?(Object(r.D)(),Object(r.j)("span",We,[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",icon:"lock",title:e.$t("timeline.no_retweet_hint")},null,8,["title"])])):(Object(r.D)(),Object(r.j)("span",Ye,[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",icon:"retweet",title:e.$t("tool_tip.repeat")},null,8,["title"])])),!e.mergedConfig.hidePostStats&&e.status.repeat_num>0?(Object(r.D)(),Object(r.j)("span",Ge,Object(r.O)(e.status.repeat_num),1)):Object(r.i)("",!0)])}]]);const Ze={class:"dropdown-menu"},Qe=["onClick"],et=["onClick"],tt=["onClick"],nt=["onClick"],rt=["onClick"],it=["onClick"],ot=["href"],st=["onClick"],at={class:"button-unstyled popover-trigger"};me.c.add(fe.w,fe.j,Ce.a,fe.C,fe.qb,fe.fb,fe.A,Ce.b);var ct={props:["status"],components:{Popover:Be.default},methods:{deleteStatus:function(){window.confirm(this.$t("status.delete_confirm"))&&this.$store.dispatch("deleteStatus",{id:this.status.id})},pinStatus:function(){var e=this;this.$store.dispatch("pinStatus",this.status.id).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},unpinStatus:function(){var e=this;this.$store.dispatch("unpinStatus",this.status.id).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},muteConversation:function(){var e=this;this.$store.dispatch("muteConversation",this.status.id).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},unmuteConversation:function(){var e=this;this.$store.dispatch("unmuteConversation",this.status.id).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},copyLink:function(){var e=this;navigator.clipboard.writeText(this.statusLink).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},bookmarkStatus:function(){var e=this;this.$store.dispatch("bookmark",{id:this.status.id}).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},unbookmarkStatus:function(){var e=this;this.$store.dispatch("unbookmark",{id:this.status.id}).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},reportStatus:function(){this.$store.dispatch("openUserReportingModal",{userId:this.status.user.id,statusIds:[this.status.id]})}},computed:{currentUser:function(){return this.$store.state.users.currentUser},canDelete:function(){if(this.currentUser)return this.currentUser.rights.moderator||this.currentUser.rights.admin||this.status.user.id===this.currentUser.id},ownStatus:function(){return this.status.user.id===this.currentUser.id},canPin:function(){return this.ownStatus&&("public"===this.status.visibility||"unlisted"===this.status.visibility)},canMute:function(){return!!this.currentUser},statusLink:function(){return"".concat(this.$store.state.instance.server).concat(this.$router.resolve({name:"conversation",params:{id:this.status.id}}).href)}}};n(550);var lt=ge()(ct,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon"),c=Object(r.J)("Popover");return Object(r.D)(),Object(r.h)(c,{class:"ExtraButtons",trigger:"click",placement:"top",offset:{y:5},"bound-to":{x:"container"},"remove-padding":""},{content:Object(r.V)(({close:n})=>[Object(r.k)("div",Ze,[e.canMute&&!e.status.thread_muted?(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-default dropdown-item dropdown-item-icon",onClick:t[0]||(t[0]=Object(r.Y)((...t)=>e.muteConversation&&e.muteConversation(...t),["prevent"]))},[Object(r.m)(a,{"fixed-width":"",icon:"eye-slash"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.mute_conversation")),1)])):Object(r.i)("",!0),e.canMute&&e.status.thread_muted?(Object(r.D)(),Object(r.j)("button",{key:1,class:"button-default dropdown-item dropdown-item-icon",onClick:t[1]||(t[1]=Object(r.Y)((...t)=>e.unmuteConversation&&e.unmuteConversation(...t),["prevent"]))},[Object(r.m)(a,{"fixed-width":"",icon:"eye-slash"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.unmute_conversation")),1)])):Object(r.i)("",!0),!e.status.pinned&&e.canPin?(Object(r.D)(),Object(r.j)("button",{key:2,class:"button-default dropdown-item dropdown-item-icon",onClick:[t[2]||(t[2]=Object(r.Y)((...t)=>e.pinStatus&&e.pinStatus(...t),["prevent"])),n]},[Object(r.m)(a,{"fixed-width":"",icon:"thumbtack"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.pin")),1)],8,Qe)):Object(r.i)("",!0),e.status.pinned&&e.canPin?(Object(r.D)(),Object(r.j)("button",{key:3,class:"button-default dropdown-item dropdown-item-icon",onClick:[t[3]||(t[3]=Object(r.Y)((...t)=>e.unpinStatus&&e.unpinStatus(...t),["prevent"])),n]},[Object(r.m)(a,{"fixed-width":"",icon:"thumbtack"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.unpin")),1)],8,et)):Object(r.i)("",!0),e.status.bookmarked?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("button",{key:4,class:"button-default dropdown-item dropdown-item-icon",onClick:[t[4]||(t[4]=Object(r.Y)((...t)=>e.bookmarkStatus&&e.bookmarkStatus(...t),["prevent"])),n]},[Object(r.m)(a,{"fixed-width":"",icon:["far","bookmark"]}),Object(r.k)("span",null,Object(r.O)(e.$t("status.bookmark")),1)],8,tt)),e.status.bookmarked?(Object(r.D)(),Object(r.j)("button",{key:5,class:"button-default dropdown-item dropdown-item-icon",onClick:[t[5]||(t[5]=Object(r.Y)((...t)=>e.unbookmarkStatus&&e.unbookmarkStatus(...t),["prevent"])),n]},[Object(r.m)(a,{"fixed-width":"",icon:"bookmark"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.unbookmark")),1)],8,nt)):Object(r.i)("",!0),e.canDelete?(Object(r.D)(),Object(r.j)("button",{key:6,class:"button-default dropdown-item dropdown-item-icon",onClick:[t[6]||(t[6]=Object(r.Y)((...t)=>e.deleteStatus&&e.deleteStatus(...t),["prevent"])),n]},[Object(r.m)(a,{"fixed-width":"",icon:"times"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.delete")),1)],8,rt)):Object(r.i)("",!0),Object(r.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:[t[7]||(t[7]=Object(r.Y)((...t)=>e.copyLink&&e.copyLink(...t),["prevent"])),n]},[Object(r.m)(a,{"fixed-width":"",icon:"share-alt"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.copy_link")),1)],8,it),e.status.is_local?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("a",{key:7,class:"button-default dropdown-item dropdown-item-icon",title:"Source",href:e.status.external_url,target:"_blank"},[Object(r.m)(a,{"fixed-width":"",icon:"external-link-alt"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.external_source")),1)],8,ot)),Object(r.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:[t[8]||(t[8]=Object(r.Y)((...t)=>e.reportStatus&&e.reportStatus(...t),["prevent"])),n]},[Object(r.m)(a,{"fixed-width":"",icon:["far","flag"]}),Object(r.k)("span",null,Object(r.O)(e.$t("user_card.report")),1)],8,st)])]),trigger:Object(r.V)(()=>[Object(r.k)("button",at,[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",icon:"ellipsis-h"})])]),_:1})}]]),ut=n(57),dt=n(35),pt=n(22),ht=n(144),bt=n(59),mt=n(45),ft=n(25);const Ot={key:1,class:"status-preview-no-content faint"},jt={key:2,class:"status-preview-no-content"};var gt=n(30),vt=n.n(gt);me.c.add(fe.r);var yt={name:"StatusPopover",props:["statusId"],data:function(){return{error:!1}},computed:{status:function(){return vt()(this.$store.state.statuses.allStatuses,{id:this.statusId})}},components:{Status:Object(r.n)((function(){return Promise.resolve().then(n.bind(null,34))})),Popover:Object(r.n)((function(){return Promise.resolve().then(n.bind(null,24))}))},methods:{enter:function(){var e=this;if(!this.status){if(!this.statusId)return void(this.error=!0);this.$store.dispatch("fetchStatus",this.statusId).then((function(t){return e.error=!1})).catch((function(t){return e.error=!0}))}}}};n(552);var wt=ge()(yt,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("Status"),c=Object(r.J)("FAIcon"),l=Object(r.J)("Popover");return Object(r.D)(),Object(r.h)(l,{trigger:"hover","popover-class":"popover-default status-popover","bound-to":{x:"container"},onShow:e.enter},{trigger:Object(r.V)(()=>[Object(r.I)(e.$slots,"default")]),content:Object(r.V)(()=>[e.status?(Object(r.D)(),Object(r.h)(a,{key:0,"is-preview":!0,statusoid:e.status,compact:!0},null,8,["statusoid"])):e.error?(Object(r.D)(),Object(r.j)("div",Ot,Object(r.O)(e.$t("status.status_unavailable")),1)):(Object(r.D)(),Object(r.j)("div",jt,[Object(r.m)(c,{icon:"circle-notch",spin:"",size:"2x"})]))]),_:3},8,["onShow"])}]]);const kt={class:"user-list-popover"},_t={class:"user-list-names"},St={class:"user-list-screen-name"};me.c.add(fe.r);var Ct={name:"UserListPopover",props:["users"],components:{RichContent:ft.a,Popover:Object(r.n)((function(){return Promise.resolve().then(n.bind(null,24))})),UserAvatar:Object(r.n)((function(){return Promise.resolve().then(n.bind(null,22))}))},computed:{usersCapped:function(){return this.users.slice(0,16)}}};n(553);var Pt=ge()(Ct,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("UserAvatar"),c=Object(r.J)("RichContent"),l=Object(r.J)("FAIcon"),u=Object(r.J)("Popover");return Object(r.D)(),Object(r.h)(u,{trigger:"hover",placement:"top",offset:{y:5}},{trigger:Object(r.V)(()=>[Object(r.I)(e.$slots,"default")]),content:Object(r.V)(()=>[Object(r.k)("div",kt,[e.users.length?(Object(r.D)(!0),Object(r.j)(r.a,{key:0},Object(r.H)(e.usersCapped,e=>(Object(r.D)(),Object(r.j)("div",{key:e.id,class:"user-list-row"},[Object(r.m)(a,{user:e,class:"avatar-small",compact:!0},null,8,["user"]),Object(r.k)("div",_t,[Object(r.m)(c,{class:"username",title:"@"+e.screen_name_ui,html:e.name_html,emoji:e.emoji},null,8,["title","html","emoji"]),Object(r.k)("span",St,Object(r.O)(e.screen_name_ui),1)])]))),128)):(Object(r.D)(),Object(r.h)(l,{key:1,icon:"circle-notch",spin:"",size:"3x"}))])]),_:3})}]]);const xt={class:"emoji-reactions"},Dt=["onClick"],Tt={key:0},It=["src","title"],$t={key:1},zt={class:"reaction-emoji unicode-emoji"};var Mt={name:"EmojiReactions",components:{UserAvatar:pt.default,UserListPopover:Pt},props:["status"],data:function(){return{showAll:!1}},computed:{tooManyReactions:function(){return this.status.emoji_reactions.length>12},emojiReactions:function(){return this.showAll?this.status.emoji_reactions:this.status.emoji_reactions.slice(0,12)},showMoreString:function(){return"+".concat(this.status.emoji_reactions.length-12)},accountsForEmoji:function(){return this.status.emoji_reactions.reduce((function(e,t){return e[t.name]=t.accounts||[],e}),{})},loggedIn:function(){return!!this.$store.state.users.currentUser}},methods:{toggleShowAll:function(){this.showAll=!this.showAll},reactedWith:function(e){return this.status.emoji_reactions.find((function(t){return t.name===e})).me},fetchEmojiReactionsByIfMissing:function(){this.status.emoji_reactions.find((function(e){return!e.accounts}))&&this.$store.dispatch("fetchEmojiReactionsBy",this.status.id)},reactWith:function(e){this.$store.dispatch("reactWithEmoji",{id:this.status.id,emoji:e})},unreact:function(e){this.$store.dispatch("unreactWithEmoji",{id:this.status.id,emoji:e})},emojiOnClick:function(e,t){this.loggedIn&&(this.reactedWith(e)?this.unreact(e):this.reactWith(e))}}};n(554);var Ut=ge()(Mt,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("UserListPopover");return Object(r.D)(),Object(r.j)("div",xt,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.emojiReactions,n=>(Object(r.D)(),Object(r.h)(a,{key:n.name,users:e.accountsForEmoji[n.name]},{default:Object(r.V)(()=>[Object(r.k)("button",{class:Object(r.w)(["emoji-reaction btn button-default",{"picked-reaction":e.reactedWith(n.name),"not-clickable":!e.loggedIn}]),onClick:t=>e.emojiOnClick(n.name,t),onMouseenter:t[0]||(t[0]=t=>e.fetchEmojiReactionsByIfMissing())},[null!==n.url?(Object(r.D)(),Object(r.j)("span",Tt,[Object(r.k)("img",{src:n.url,title:n.name,class:"reaction-emoji",width:"2.55em"},null,8,It),Object(r.l)(" "+Object(r.O)(n.count),1)])):(Object(r.D)(),Object(r.j)("span",$t,[Object(r.k)("span",zt,Object(r.O)(n.name),1),Object(r.k)("span",null,Object(r.O)(n.count),1)]))],42,Dt)]),_:2},1032,["users"]))),128)),e.tooManyReactions?(Object(r.D)(),Object(r.j)("a",{key:0,class:"emoji-reaction-expand faint",href:"javascript:void(0)",onClick:t[1]||(t[1]=(...t)=>e.toggleShowAll&&e.toggleShowAll(...t))},Object(r.O)(e.showAll?e.$t("general.show_less"):e.showMoreString),1)):Object(r.i)("",!0)])}]]),Ft=n(81),Et=n(79),Lt=n(23),Rt=n(31),At=n(126);function Nt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Bt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Nt(Object(n),!0).forEach((function(t){se()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Nt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}me.c.add(fe.y,fe.I,fe.O,fe.P,fe.rb,fe.Z,fe.Y,fe.W,fe.jb,fe.ib,fe.w,fe.C,fe.B,fe.qb,fe.q,fe.n,fe.e);var Vt,Ht=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},qt=function(e,t,n){var r=Ht(t),i="controlledSet".concat(r),o="uncontrolled".concat(r);e[i]?e[i](n):e[o]=n},Jt={name:"Status",components:{ReplyButton:ve,FavoriteButton:De,ReactButton:He,RetweetButton:Xe,ExtraButtons:lt,PostStatusForm:ut.a,UserCard:dt.a,UserAvatar:pt.default,AvatarList:ht.a,Timeago:bt.a,StatusPopover:wt,UserListPopover:Pt,EmojiReactions:Ut,StatusContent:mt.a,RichContent:ft.a,MentionLink:Et.a,MentionsLine:Ft.b},props:["statusoid","expandable","inConversation","focused","highlight","compact","replies","isPreview","noHeading","inlineExpanded","showPinned","inProfile","profileUserId","simpleTree","controlledThreadDisplayStatus","controlledToggleThreadDisplay","showOtherRepliesAsButton","controlledShowingTall","controlledToggleShowingTall","controlledExpandingSubject","controlledToggleExpandingSubject","controlledShowingLongSubject","controlledToggleShowingLongSubject","controlledReplying","controlledToggleReplying","controlledMediaPlaying","controlledSetMediaPlaying","dive"],data:function(){return{uncontrolledReplying:!1,unmuted:!1,userExpanded:!1,uncontrolledMediaPlaying:[],suspendable:!0,error:null,headTailLinks:null}},computed:Bt(Bt({},(Vt=["replying","mediaPlaying"],Vt.reduce((function(e,t){var n=Ht(t),r="controlledToggle".concat(n),i="controlled".concat(n),o="uncontrolled".concat(n);return e[t]=function(){return void 0===this.$data[r]&&void 0===this.$props[r]||!this[r]?this[o]:this[i]},e}),{}))),{},{muteWords:function(){return this.mergedConfig.muteWords},showReasonMutedThread:function(){return(this.status.thread_muted||this.status.reblog&&this.status.reblog.thread_muted)&&!this.inConversation},repeaterClass:function(){var e=this.statusoid.user;return Object(Rt.a)(e)},userClass:function(){var e=this.retweet?this.statusoid.retweeted_status.user:this.statusoid.user;return Object(Rt.a)(e)},deleted:function(){return this.statusoid.deleted},repeaterStyle:function(){var e=this.statusoid.user,t=this.mergedConfig.highlight;return Object(Rt.b)(t[e.screen_name])},userStyle:function(){if(!this.noHeading){var e=this.retweet?this.statusoid.retweeted_status.user:this.statusoid.user,t=this.mergedConfig.highlight;return Object(Rt.b)(t[e.screen_name])}},userProfileLink:function(){return this.generateUserProfileLink(this.status.user.id,this.status.user.screen_name)},replyProfileLink:function(){if(this.isReply){var e=this.$store.getters.findUser(this.status.in_reply_to_user_id);return e?e.statusnet_profile_url:"NOT_FOUND"}},retweet:function(){return!!this.statusoid.retweeted_status},retweeterUser:function(){return this.statusoid.user},retweeter:function(){return this.statusoid.user.name||this.statusoid.user.screen_name_ui},retweeterHtml:function(){return this.statusoid.user.name},retweeterProfileLink:function(){return this.generateUserProfileLink(this.statusoid.user.id,this.statusoid.user.screen_name)},status:function(){return this.retweet?this.statusoid.retweeted_status:this.statusoid},statusFromGlobalRepository:function(){return this.$store.state.statuses.allStatusesObject[this.status.id]},loggedIn:function(){return!!this.currentUser},muteWordHits:function(){return Object(At.a)(this.status,this.muteWords)},rtBotStatus:function(){return this.statusoid.user.bot},botStatus:function(){return this.status.user.bot},botIndicator:function(){return this.botStatus&&!this.hideBotIndication},rtBotIndicator:function(){return this.rtBotStatus&&!this.hideBotIndication},mentionsLine:function(){var e=this;if(!this.headTailLinks)return[];var t=new Set(this.headTailLinks.writtenMentions.map((function(e){return e.url})));return this.status.attentions.filter((function(n){return n.id!==e.status.in_reply_to_user_id&&n.statusnet_profile_url!==e.status.user.statusnet_profile_url&&!t.has(n.statusnet_profile_url)})).map((function(e){return{url:e.statusnet_profile_url,content:e.screen_name,userId:e.id}}))},hasMentionsLine:function(){return this.mentionsLine.length>0},muted:function(){if(this.statusoid.user.id===this.currentUser.id)return!1;var e=this.userIsMuted||status.thread_muted||this.muteWordHits.length>0||this.muteBotStatuses&&this.botStatus&&!this.compact;return!this.unmuted&&!this.shouldNotMute&&e},userIsMuted:function(){if(this.statusoid.user.id===this.currentUser.id)return!1;var e=this.status,t=e.reblog,n=this.$store.getters.relationship(e.user.id),r=t&&this.$store.getters.relationship(t.user.id);return e.muted||t&&t.muted||n.muting||r&&r.muting},shouldNotMute:function(){var e=this.status,t=e.reblog;return(this.inProfile&&(!t&&e.user.id===this.profileUserId||t&&t.user.id===this.profileUserId)||this.inConversation&&e.thread_muted)&&!this.muteWordHits.length>0},hideMutedUsers:function(){return this.mergedConfig.hideMutedPosts},hideMutedThreads:function(){return this.mergedConfig.hideMutedThreads},hideFilteredStatuses:function(){return this.mergedConfig.hideFilteredStatuses},hideWordFilteredPosts:function(){return this.mergedConfig.hideWordFilteredPosts},hideStatus:function(){return!this.shouldNotMute&&(this.muted&&this.hideFilteredStatuses||this.userIsMuted&&this.hideMutedUsers||this.status.thread_muted&&this.hideMutedThreads||this.muteWordHits.length>0&&this.hideWordFilteredPosts)},isFocused:function(){return!!this.focused||!!this.inConversation&&this.status.id===this.highlight},isReply:function(){return!(!this.status.in_reply_to_status_id||!this.status.in_reply_to_user_id)},replyToName:function(){if(this.status.in_reply_to_screen_name)return this.status.in_reply_to_screen_name;var e=this.$store.getters.findUser(this.status.in_reply_to_user_id);return e&&e.screen_name_ui},replySubject:function(){if(!this.status.summary)return"";var e=ue()(this.status.summary),t=this.mergedConfig.subjectLineBehavior,n=e.match(/^re[: ]/i);return"noop"!==t&&n||"masto"===t?e:"email"===t?"re: ".concat(e):"noop"===t?"":void 0},combinedFavsAndRepeatsUsers:function(){var e=[].concat(this.statusFromGlobalRepository.favoritedBy,this.statusFromGlobalRepository.rebloggedBy);return ce()(e,"id")},tags:function(){return this.status.tags.filter((function(e){return e.hasOwnProperty("name")})).map((function(e){return e.name})).join(" ")},hidePostStats:function(){return this.mergedConfig.hidePostStats},muteBotStatuses:function(){return this.mergedConfig.muteBotStatuses},hideBotIndication:function(){return this.mergedConfig.hideBotIndication},currentUser:function(){return this.$store.state.users.currentUser},betterShadow:function(){return this.$store.state.interface.browserSupport.cssFilter},mergedConfig:function(){return this.$store.getters.mergedConfig},isSuspendable:function(){return!this.replying&&0===this.mediaPlaying.length},inThreadForest:function(){return!!this.controlledThreadDisplayStatus},threadShowing:function(){return"showing"===this.controlledThreadDisplayStatus},visibilityLocalized:function(){return this.$i18n.t("general.scope_in_timeline."+this.status.visibility)}}),methods:{visibilityIcon:function(e){switch(e){case"private":return"lock";case"unlisted":return"lock-open";case"direct":return"envelope";case"local":return"users";default:return"globe"}},showError:function(e){this.error=e},clearError:function(){this.error=void 0},toggleReplying:function(){!function(e,t){var n=Ht(t),r="controlledToggle".concat(n),i="uncontrolled".concat(n);e[r]?e[r]():e[i]=!e[i]}(this,"replying")},gotoOriginal:function(e){this.inConversation&&this.$emit("goto",e)},toggleExpanded:function(){this.$emit("toggleExpanded")},toggleMute:function(){this.unmuted=!this.unmuted},toggleUserExpanded:function(){this.userExpanded=!this.userExpanded},generateUserProfileLink:function(e,t){return Object(Lt.a)(e,t,this.$store.state.instance.restrictedNicknames)},addMediaPlaying:function(e){qt(this,"mediaPlaying",this.mediaPlaying.concat(e))},removeMediaPlaying:function(e){qt(this,"mediaPlaying",this.mediaPlaying.filter((function(t){return t!==e})))},setHeadTailLinks:function(e){this.headTailLinks=e},toggleThreadDisplay:function(){this.controlledToggleThreadDisplay()},scrollIfHighlighted:function(e){var t=e;if(this.status.id===t){var n=this.$el.getBoundingClientRect();n.top<100||n.height>=window.innerHeight-50?window.scrollBy(0,n.top-100):n.bottom>window.innerHeight-50&&window.scrollBy(0,n.bottom-window.innerHeight+50)}}},watch:{highlight:function(e){this.scrollIfHighlighted(e)},"status.repeat_num":function(e){this.isFocused&&this.statusFromGlobalRepository.rebloggedBy&&this.statusFromGlobalRepository.rebloggedBy.length!==e&&this.$store.dispatch("fetchRepeats",this.status.id)},"status.fave_num":function(e){this.isFocused&&this.statusFromGlobalRepository.favoritedBy&&this.statusFromGlobalRepository.favoritedBy.length!==e&&this.$store.dispatch("fetchFavs",this.status.id)},isSuspendable:function(e){this.suspendable=e}}};n(555);const Wt=ge()(Jt,[["render",function(e,t,n,oe,se,ae){const ce=Object(r.J)("FAIcon"),le=Object(r.J)("router-link"),ue=Object(r.J)("UserAvatar"),de=Object(r.J)("RichContent"),pe=Object(r.J)("UserCard"),he=Object(r.J)("Timeago"),be=Object(r.J)("StatusPopover"),me=Object(r.J)("MentionLink"),fe=Object(r.J)("MentionsLine"),Oe=Object(r.J)("StatusContent"),je=Object(r.J)("UserListPopover"),ge=Object(r.J)("AvatarList"),ve=Object(r.J)("EmojiReactions"),ye=Object(r.J)("reply-button"),we=Object(r.J)("retweet-button"),ke=Object(r.J)("favorite-button"),_e=Object(r.J)("ReactButton"),Se=Object(r.J)("extra-buttons"),Ce=Object(r.J)("PostStatusForm");return e.hideStatus?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",{key:0,ref:"root",class:Object(r.w)(["Status",[{"-focused":e.isFocused},{"-conversation":e.inlineExpanded}]])},[e.error?(Object(r.D)(),Object(r.j)("div",i,[Object(r.l)(Object(r.O)(e.error)+" ",1),Object(r.k)("span",{class:"fa-scale-110 fa-old-padding",onClick:t[0]||(t[0]=(...t)=>e.clearError&&e.clearError(...t))},[Object(r.m)(ce,{icon:"times"})])])):Object(r.i)("",!0),e.muted&&!e.isPreview?(Object(r.D)(),Object(r.j)("div",o,[Object(r.k)("small",s,[e.muted&&e.retweet?(Object(r.D)(),Object(r.h)(ce,{key:0,class:"fa-scale-110 fa-old-padding repeat-icon",icon:"retweet"})):Object(r.i)("",!0),Object(r.m)(le,{to:e.userProfileLink},{default:Object(r.V)(()=>[Object(r.l)(Object(r.O)(e.status.user.screen_name_ui),1)]),_:1},8,["to"])]),e.showReasonMutedThread?(Object(r.D)(),Object(r.j)("small",a,Object(r.O)(e.$t("status.thread_muted")),1)):Object(r.i)("",!0),e.showReasonMutedThread&&e.muteWordHits.length>0?(Object(r.D)(),Object(r.j)("small",c,Object(r.O)(e.$t("status.thread_muted_and_words")),1)):Object(r.i)("",!0),Object(r.k)("small",{class:"mute-words",title:e.muteWordHits.join(", ")},Object(r.O)(e.muteWordHits.join(", ")),9,l),Object(r.k)("button",{class:"unmute button-unstyled",onClick:t[1]||(t[1]=Object(r.Y)((...t)=>e.toggleMute&&e.toggleMute(...t),["prevent"]))},[Object(r.m)(ce,{icon:"eye-slash",class:"fa-scale-110 fa-old-padding"})])])):(Object(r.D)(),Object(r.j)(r.a,{key:2},[e.showPinned?(Object(r.D)(),Object(r.j)("div",u,[Object(r.m)(ce,{icon:"thumbtack",class:"faint"}),Object(r.k)("span",d,Object(r.O)(e.$t("status.pinned")),1)])):Object(r.i)("",!0),!e.retweet||e.noHeading||e.inConversation?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",{key:1,class:Object(r.w)([[e.repeaterClass,{highlighted:e.repeaterStyle}],"status-container repeat-info"]),style:Object(r.x)([e.repeaterStyle])},[e.retweet?(Object(r.D)(),Object(r.h)(ue,{key:0,class:"left-side repeater-avatar",bot:e.rtBotIndicator,"better-shadow":e.betterShadow,user:e.statusoid.user},null,8,["bot","better-shadow","user"])):Object(r.i)("",!0),Object(r.k)("div",p,[Object(r.k)("span",{class:"status-username repeater-name",title:e.retweeter},[e.retweeterHtml?(Object(r.D)(),Object(r.h)(le,{key:0,to:e.retweeterProfileLink},{default:Object(r.V)(()=>[Object(r.m)(de,{html:e.retweeterHtml,emoji:e.retweeterUser.emoji},null,8,["html","emoji"])]),_:1},8,["to"])):(Object(r.D)(),Object(r.h)(le,{key:1,to:e.retweeterProfileLink},{default:Object(r.V)(()=>[Object(r.l)(Object(r.O)(e.retweeter),1)]),_:1},8,["to"]))],8,h),b,Object(r.m)(ce,{icon:"retweet",class:"repeat-icon",title:e.$t("tool_tip.repeat")},null,8,["title"]),Object(r.l)(" "+Object(r.O)(e.$t("timeline.repeated")),1)])],6)),e.deleted?(Object(r.D)(),Object(r.j)("div",ee,[Object(r.k)("div",te,[Object(r.m)(ue,{class:"post-avatar",compact:e.compact,bot:e.botIndicator},null,8,["compact","bot"])]),Object(r.k)("div",ne,[Object(r.k)("div",re,Object(r.O)(e.$t("status.status_deleted")),1),e.replying?(Object(r.D)(),Object(r.h)(ye,{key:0,replying:e.replying,status:e.status,onToggle:e.toggleReplying},null,8,["replying","status","onToggle"])):Object(r.i)("",!0)])])):(Object(r.D)(),Object(r.j)("div",{key:2,class:Object(r.w)([[e.userClass,{highlighted:e.userStyle,"-repeat":e.retweet&&!e.inConversation}],"status-container"]),style:Object(r.x)([e.userStyle]),"data-tags":e.tags},[e.noHeading?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",f,[Object(r.k)("a",{href:e.$router.resolve(e.userProfileLink).href,onClickCapture:t[2]||(t[2]=Object(r.Y)((...t)=>e.toggleUserExpanded&&e.toggleUserExpanded(...t),["stop","prevent"]))},[Object(r.m)(ue,{class:"post-avatar",bot:e.botIndicator,compact:e.compact,"better-shadow":e.betterShadow,user:e.status.user},null,8,["bot","compact","better-shadow","user"])],40,O)])),Object(r.k)("div",j,[e.userExpanded?(Object(r.D)(),Object(r.h)(pe,{key:0,"user-id":e.status.user.id,rounded:!0,bordered:!0,class:"usercard"},null,8,["user-id"])):Object(r.i)("",!0),e.noHeading?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",g,[Object(r.k)("div",v,[Object(r.k)("div",y,[e.status.user.name_html?(Object(r.D)(),Object(r.j)("h4",{key:0,class:"status-username",title:e.status.user.name},[Object(r.m)(de,{html:e.status.user.name,emoji:e.status.user.emoji},null,8,["html","emoji"])],8,w)):(Object(r.D)(),Object(r.j)("h4",{key:1,class:"status-username",title:e.status.user.name},Object(r.O)(e.status.user.name),9,k)),Object(r.m)(le,{class:"account-name",title:e.status.user.screen_name_ui,to:e.userProfileLink},{default:Object(r.V)(()=>[Object(r.l)(Object(r.O)(e.status.user.screen_name_ui),1)]),_:1},8,["title","to"]),e.status.user&&e.status.user.favicon?(Object(r.D)(),Object(r.j)("img",{key:2,class:"status-favicon",src:e.status.user.favicon},null,8,_)):Object(r.i)("",!0)]),Object(r.k)("span",S,[Object(r.m)(le,{class:"timeago faint-link",to:{name:"conversation",params:{id:e.status.id}}},{default:Object(r.V)(()=>[Object(r.m)(he,{time:e.status.created_at,"auto-update":60},null,8,["time"])]),_:1},8,["to"]),e.status.visibility?(Object(r.D)(),Object(r.j)("span",{key:0,class:"visibility-icon",title:e.visibilityLocalized},[Object(r.m)(ce,{"fixed-width":"",class:"fa-scale-110",icon:e.visibilityIcon(e.status.visibility)},null,8,["icon"])],8,C)):Object(r.i)("",!0),e.expandable&&!e.isPreview?(Object(r.D)(),Object(r.j)("button",{key:1,class:"button-unstyled",title:e.$t("status.expand"),onClick:t[3]||(t[3]=Object(r.Y)((...t)=>e.toggleExpanded&&e.toggleExpanded(...t),["prevent"]))},[Object(r.m)(ce,{"fixed-width":"",class:"fa-scale-110",icon:"plus-square"})],8,P)):Object(r.i)("",!0),e.unmuted?(Object(r.D)(),Object(r.j)("button",{key:2,class:"button-unstyled",onClick:t[4]||(t[4]=Object(r.Y)((...t)=>e.toggleMute&&e.toggleMute(...t),["prevent"]))},[Object(r.m)(ce,{"fixed-width":"",icon:"eye-slash",class:"fa-scale-110"})])):Object(r.i)("",!0),e.inThreadForest&&e.replies&&e.replies.length&&!e.simpleTree?(Object(r.D)(),Object(r.j)("button",{key:3,class:"button-unstyled",title:e.threadShowing?e.$t("status.thread_hide"):e.$t("status.thread_show"),"aria-expanded":e.threadShowing?"true":"false",onClick:t[5]||(t[5]=Object(r.Y)((...t)=>e.toggleThreadDisplay&&e.toggleThreadDisplay(...t),["prevent"]))},[Object(r.m)(ce,{"fixed-width":"",class:"fa-scale-110",icon:e.threadShowing?"chevron-up":"chevron-down"},null,8,["icon"])],8,x)):Object(r.i)("",!0),e.dive&&!e.simpleTree?(Object(r.D)(),Object(r.j)("button",{key:4,class:"button-unstyled",title:e.$t("status.show_only_conversation_under_this"),onClick:t[6]||(t[6]=Object(r.Y)((...t)=>e.dive&&e.dive(...t),["prevent"]))},[Object(r.m)(ce,{"fixed-width":"",class:"fa-scale-110",icon:"angle-double-right"})],8,D)):Object(r.i)("",!0)])]),e.isReply||e.hasMentionsLine?(Object(r.D)(),Object(r.j)("div",T,[e.isReply?(Object(r.D)(),Object(r.j)("span",I,[e.isPreview?(Object(r.D)(),Object(r.j)("span",U,[Object(r.k)("span",F,Object(r.O)(e.$t("status.reply_to")),1)])):(Object(r.D)(),Object(r.h)(be,{key:0,"status-id":e.status.parent_visible&&e.status.in_reply_to_status_id,class:Object(r.w)(["reply-to-popover",{"-strikethrough":!e.status.parent_visible}]),style:{"min-width":"0"}},{default:Object(r.V)(()=>[Object(r.k)("button",{class:"button-unstyled reply-to","aria-label":e.$t("tool_tip.reply"),onClick:t[7]||(t[7]=Object(r.Y)(t=>e.gotoOriginal(e.status.in_reply_to_status_id),["prevent"]))},[Object(r.m)(ce,{class:"fa-scale-110 fa-old-padding",icon:"reply",flip:"horizontal"}),z,Object(r.k)("span",M,Object(r.O)(e.$t("status.reply_to")),1)],8,$)]),_:1},8,["status-id","class"])),Object(r.m)(me,{content:e.replyToName,url:e.replyProfileLink,"user-id":e.status.in_reply_to_user_id,"user-screen-name":e.status.in_reply_to_screen_name},null,8,["content","url","user-id","user-screen-name"])])):Object(r.i)("",!0),e.hasMentionsLine?(Object(r.D)(),Object(r.j)("span",E,[Object(r.k)("span",{class:"mentions","aria-label":e.$t("tool_tip.mentions"),onClick:t[8]||(t[8]=Object(r.Y)(t=>e.gotoOriginal(e.status.in_reply_to_status_id),["prevent"]))},[Object(r.k)("span",R,Object(r.O)(e.$t("status.mentions")),1)],8,L),e.hasMentionsLine?(Object(r.D)(),Object(r.h)(fe,{key:0,mentions:e.mentionsLine.slice(0,1),class:"mentions-line-first"},null,8,["mentions"])):Object(r.i)("",!0)])):Object(r.i)("",!0),e.hasMentionsLine?(Object(r.D)(),Object(r.h)(fe,{key:2,mentions:e.mentionsLine.slice(1),class:"mentions-line"},null,8,["mentions"])):Object(r.i)("",!0)])):Object(r.i)("",!0)])),Object(r.m)(Oe,{ref:"content",status:e.status,"no-heading":e.noHeading,highlight:e.highlight,focused:e.isFocused,"controlled-showing-tall":e.controlledShowingTall,"controlled-expanding-subject":e.controlledExpandingSubject,"controlled-showing-long-subject":e.controlledShowingLongSubject,"controlled-toggle-showing-tall":e.controlledToggleShowingTall,"controlled-toggle-expanding-subject":e.controlledToggleExpandingSubject,"controlled-toggle-showing-long-subject":e.controlledToggleShowingLongSubject,onMediaplay:t[9]||(t[9]=t=>e.addMediaPlaying(t)),onMediapause:t[10]||(t[10]=t=>e.removeMediaPlaying(t)),onParseReady:e.setHeadTailLinks},null,8,["status","no-heading","highlight","focused","controlled-showing-tall","controlled-expanding-subject","controlled-showing-long-subject","controlled-toggle-showing-tall","controlled-toggle-expanding-subject","controlled-toggle-showing-long-subject","onParseReady"]),e.inConversation&&!e.isPreview&&e.replies&&e.replies.length?(Object(r.D)(),Object(r.j)("div",A,[e.showOtherRepliesAsButton&&e.replies.length>1?(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-unstyled -link faint",title:e.$tc("status.ancestor_follow",e.replies.length-1,{numReplies:e.replies.length-1}),onClick:t[11]||(t[11]=Object(r.Y)((...t)=>e.dive&&e.dive(...t),["prevent"]))},Object(r.O)(e.$tc("status.replies_list_with_others",e.replies.length-1,{numReplies:e.replies.length-1})),9,N)):(Object(r.D)(),Object(r.j)("span",B,Object(r.O)(e.$t("status.replies_list")),1)),(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.replies,t=>(Object(r.D)(),Object(r.h)(be,{key:t.id,"status-id":t.id},{default:Object(r.V)(()=>[Object(r.k)("button",{class:"button-unstyled -link reply-link",onClick:Object(r.Y)(n=>e.gotoOriginal(t.id),["prevent"])},Object(r.O)(t.name),9,V)]),_:2},1032,["status-id"]))),128))])):Object(r.i)("",!0),Object(r.m)(r.e,{name:"fade"},{default:Object(r.V)(()=>[!e.hidePostStats&&e.isFocused&&e.combinedFavsAndRepeatsUsers.length>0?(Object(r.D)(),Object(r.j)("div",H,[Object(r.k)("div",q,[e.statusFromGlobalRepository.rebloggedBy&&e.statusFromGlobalRepository.rebloggedBy.length>0?(Object(r.D)(),Object(r.h)(je,{key:0,users:e.statusFromGlobalRepository.rebloggedBy},{default:Object(r.V)(()=>[Object(r.k)("div",J,[Object(r.k)("a",W,Object(r.O)(e.$t("status.repeats")),1),Object(r.k)("div",Y,Object(r.O)(e.statusFromGlobalRepository.rebloggedBy.length),1)])]),_:1},8,["users"])):Object(r.i)("",!0),e.statusFromGlobalRepository.favoritedBy&&e.statusFromGlobalRepository.favoritedBy.length>0?(Object(r.D)(),Object(r.h)(je,{key:1,users:e.statusFromGlobalRepository.favoritedBy},{default:Object(r.V)(()=>[Object(r.k)("div",G,[Object(r.k)("a",K,Object(r.O)(e.$t("status.favorites")),1),Object(r.k)("div",X,Object(r.O)(e.statusFromGlobalRepository.favoritedBy.length),1)])]),_:1},8,["users"])):Object(r.i)("",!0),Object(r.k)("div",Z,[Object(r.m)(ge,{users:e.combinedFavsAndRepeatsUsers},null,8,["users"])])])])):Object(r.i)("",!0)]),_:1}),!e.mergedConfig.emojiReactionsOnTimeline&&!e.isFocused||e.noHeading||e.isPreview?Object(r.i)("",!0):(Object(r.D)(),Object(r.h)(ve,{key:3,status:e.status},null,8,["status"])),e.noHeading||e.isPreview?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",Q,[Object(r.m)(ye,{replying:e.replying,status:e.status,onToggle:e.toggleReplying},null,8,["replying","status","onToggle"]),Object(r.m)(we,{visibility:e.status.visibility,"logged-in":e.loggedIn,status:e.status},null,8,["visibility","logged-in","status"]),Object(r.m)(ke,{"logged-in":e.loggedIn,status:e.status},null,8,["logged-in","status"]),e.loggedIn?(Object(r.D)(),Object(r.h)(_e,{key:0,status:e.status},null,8,["status"])):Object(r.i)("",!0),Object(r.m)(Se,{status:e.status,onOnError:e.showError,onOnSuccess:e.clearError},null,8,["status","onOnError","onOnSuccess"])]))])],14,m)),e.replying?(Object(r.D)(),Object(r.j)("div",ie,[Object(r.m)(Ce,{class:"reply-body","reply-to":e.status.id,attentions:e.status.attentions,"replied-user":e.status.user,"copy-message-scope":e.status.visibility,subject:e.replySubject,onPosted:e.toggleReplying},null,8,["reply-to","attentions","replied-user","copy-message-scope","subject","onPosted"])])):Object(r.i)("",!0)],64))],2))}]]);t.default=Wt},function(e,t,n){"use strict";var r=n(0);const i={class:"panel-heading -flexible-height"},o={class:"user-info"},s={class:"container"},a={class:"user-info-avatar-link-overlay"},c={class:"user-summary"},l={class:"top-line"},u=["href"],d={class:"bottom-line"},p={key:0,class:"alert user-role"},h={key:1,class:"alert user-role"},b={key:2,class:"alert user-role"},m={key:1},f={key:2,class:"dailyAvg"},O={class:"user-meta"},j={key:0,class:"following"},g={key:1,class:"highlighter"},v=["id"],y=["id"],w=Object(r.l)(" "+Object(r.O)(" ")+" "),k={value:"disabled"},_={value:"solid"},S={value:"striped"},C={value:"side"},P={key:0,class:"user-interactions"},x={class:"btn-group"},D=["disabled"],T=["disabled"],I=["disabled"],$={key:1,class:"user-interactions"},z={key:0,class:"panel-body"},M={key:0,class:"user-counts"},U=Object(r.k)("br",null,null,-1);var F=n(5),E=n.n(F),L=n(22),R=n(143),A=n(104),N=n(140);const B={class:"dropdown-menu"},V={key:0},H=Object(r.k)("div",{role:"separator",class:"dropdown-divider"},null,-1),q={key:1,role:"separator",class:"dropdown-divider"},J={key:2};var W=n(6),Y=n(3);const G={class:"panel-heading dialog-modal-heading"},K={class:"title"},X={class:"dialog-modal-content"},Z={class:"dialog-modal-footer user-interactions panel-footer"};var Q={props:{darkOverlay:{default:!0,type:Boolean},onCancel:{default:function(){},type:Function}}},ee=(n(526),n(4)),te=n.n(ee);var ne=te()(Q,[["render",function(e,t,n,i,o,s){return Object(r.D)(),Object(r.j)("span",{class:Object(r.w)({"dark-overlay":e.darkOverlay}),onClick:t[1]||(t[1]=Object(r.Y)(t=>e.onCancel(),["self","stop"]))},[Object(r.k)("div",{class:"dialog-modal panel panel-default",onClick:t[0]||(t[0]=Object(r.Y)(()=>{},["stop"]))},[Object(r.k)("div",G,[Object(r.k)("div",K,[Object(r.I)(e.$slots,"header")])]),Object(r.k)("div",X,[Object(r.I)(e.$slots,"default")]),Object(r.k)("div",Z,[Object(r.I)(e.$slots,"footer")])])],2)}]]),re=n(24);W.c.add(Y.n);var ie={props:["user"],data:function(){return{tags:{FORCE_NSFW:"mrf_tag:media-force-nsfw",STRIP_MEDIA:"mrf_tag:media-strip",FORCE_UNLISTED:"mrf_tag:force-unlisted",DISABLE_REMOTE_SUBSCRIPTION:"mrf_tag:disable-remote-subscription",DISABLE_ANY_SUBSCRIPTION:"mrf_tag:disable-any-subscription",SANDBOX:"mrf_tag:sandbox",QUARANTINE:"mrf_tag:quarantine"},showDeleteUserDialog:!1,toggled:!1}},components:{DialogModal:ne,Popover:re.default},computed:{tagsSet:function(){return new Set(this.user.tags)},hasTagPolicy:function(){return this.$store.state.instance.tagPolicyAvailable}},methods:{hasTag:function(e){return this.tagsSet.has(e)},toggleTag:function(e){var t=this,n=this.$store;this.tagsSet.has(e)?n.state.api.backendInteractor.untagUser({user:this.user,tag:e}).then((function(r){r.ok&&n.commit("untagUser",{user:t.user,tag:e})})):n.state.api.backendInteractor.tagUser({user:this.user,tag:e}).then((function(r){r.ok&&n.commit("tagUser",{user:t.user,tag:e})}))},toggleRight:function(e){var t=this,n=this.$store;this.user.rights[e]?n.state.api.backendInteractor.deleteRight({user:this.user,right:e}).then((function(r){r.ok&&n.commit("updateRight",{user:t.user,right:e,value:!1})})):n.state.api.backendInteractor.addRight({user:this.user,right:e}).then((function(r){r.ok&&n.commit("updateRight",{user:t.user,right:e,value:!0})}))},toggleActivationStatus:function(){this.$store.dispatch("toggleActivationStatus",{user:this.user})},deleteUserDialog:function(e){this.showDeleteUserDialog=e},deleteUser:function(){var e=this,t=this.$store,n=this.user,r=n.id,i=n.name;t.state.api.backendInteractor.deleteUser({user:n}).then((function(t){e.$store.dispatch("markStatusesAsDeleted",(function(e){return n.id===e.user.id}));var o="external-user-profile"===e.$route.name||"user-profile"===e.$route.name,s=e.$route.params.name===i||e.$route.params.id===r;o&&s&&window.history.back()}))},setToggled:function(e){this.toggled=e}}};n(528);var oe=te()(ie,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon"),c=Object(r.J)("Popover"),l=Object(r.J)("DialogModal");return Object(r.D)(),Object(r.j)("div",null,[Object(r.m)(c,{trigger:"click",class:"moderation-tools-popover",placement:"bottom",offset:{y:5},onShow:t[11]||(t[11]=t=>e.setToggled(!0)),onClose:t[12]||(t[12]=t=>e.setToggled(!1))},{content:Object(r.V)(()=>[Object(r.k)("div",B,[e.user.is_local?(Object(r.D)(),Object(r.j)("span",V,[Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[0]||(t[0]=t=>e.toggleRight("admin"))},Object(r.O)(e.$t(e.user.rights.admin?"user_card.admin_menu.revoke_admin":"user_card.admin_menu.grant_admin")),1),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[1]||(t[1]=t=>e.toggleRight("moderator"))},Object(r.O)(e.$t(e.user.rights.moderator?"user_card.admin_menu.revoke_moderator":"user_card.admin_menu.grant_moderator")),1),H])):Object(r.i)("",!0),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[2]||(t[2]=t=>e.toggleActivationStatus())},Object(r.O)(e.$t(e.user.deactivated?"user_card.admin_menu.activate_account":"user_card.admin_menu.deactivate_account")),1),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[3]||(t[3]=t=>e.deleteUserDialog(!0))},Object(r.O)(e.$t("user_card.admin_menu.delete_account")),1),e.hasTagPolicy?(Object(r.D)(),Object(r.j)("div",q)):Object(r.i)("",!0),e.hasTagPolicy?(Object(r.D)(),Object(r.j)("span",J,[Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[4]||(t[4]=t=>e.toggleTag(e.tags.FORCE_NSFW))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.FORCE_NSFW)}])},null,2),Object(r.l)(" "+Object(r.O)(e.$t("user_card.admin_menu.force_nsfw")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[5]||(t[5]=t=>e.toggleTag(e.tags.STRIP_MEDIA))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.STRIP_MEDIA)}])},null,2),Object(r.l)(" "+Object(r.O)(e.$t("user_card.admin_menu.strip_media")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[6]||(t[6]=t=>e.toggleTag(e.tags.FORCE_UNLISTED))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.FORCE_UNLISTED)}])},null,2),Object(r.l)(" "+Object(r.O)(e.$t("user_card.admin_menu.force_unlisted")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[7]||(t[7]=t=>e.toggleTag(e.tags.SANDBOX))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.SANDBOX)}])},null,2),Object(r.l)(" "+Object(r.O)(e.$t("user_card.admin_menu.sandbox")),1)]),e.user.is_local?(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-default dropdown-item",onClick:t[8]||(t[8]=t=>e.toggleTag(e.tags.DISABLE_REMOTE_SUBSCRIPTION))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.DISABLE_REMOTE_SUBSCRIPTION)}])},null,2),Object(r.l)(" "+Object(r.O)(e.$t("user_card.admin_menu.disable_remote_subscription")),1)])):Object(r.i)("",!0),e.user.is_local?(Object(r.D)(),Object(r.j)("button",{key:1,class:"button-default dropdown-item",onClick:t[9]||(t[9]=t=>e.toggleTag(e.tags.DISABLE_ANY_SUBSCRIPTION))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.DISABLE_ANY_SUBSCRIPTION)}])},null,2),Object(r.l)(" "+Object(r.O)(e.$t("user_card.admin_menu.disable_any_subscription")),1)])):Object(r.i)("",!0),e.user.is_local?(Object(r.D)(),Object(r.j)("button",{key:2,class:"button-default dropdown-item",onClick:t[10]||(t[10]=t=>e.toggleTag(e.tags.QUARANTINE))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.QUARANTINE)}])},null,2),Object(r.l)(" "+Object(r.O)(e.$t("user_card.admin_menu.quarantine")),1)])):Object(r.i)("",!0)])):Object(r.i)("",!0)])]),trigger:Object(r.V)(()=>[Object(r.k)("button",{class:Object(r.w)(["btn button-default btn-block moderation-tools-button",{toggled:e.toggled}])},[Object(r.l)(Object(r.O)(e.$t("user_card.admin_menu.moderation"))+" ",1),Object(r.m)(a,{icon:"chevron-down"})],2)]),_:1}),(Object(r.D)(),Object(r.h)(r.c,{to:"#modal"},[e.showDeleteUserDialog?(Object(r.D)(),Object(r.h)(l,{key:0,"on-cancel":e.deleteUserDialog.bind(this,!1)},{header:Object(r.V)(()=>[Object(r.l)(Object(r.O)(e.$t("user_card.admin_menu.delete_user")),1)]),footer:Object(r.V)(()=>[Object(r.k)("button",{class:"btn button-default",onClick:t[13]||(t[13]=t=>e.deleteUserDialog(!1))},Object(r.O)(e.$t("general.cancel")),1),Object(r.k)("button",{class:"btn button-default danger",onClick:t[14]||(t[14]=t=>e.deleteUser())},Object(r.O)(e.$t("user_card.admin_menu.delete_user")),1)]),default:Object(r.V)(()=>[Object(r.k)("p",null,Object(r.O)(e.$t("user_card.admin_menu.delete_user_confirmation")),1)]),_:1},8,["on-cancel"])):Object(r.i)("",!0)]))])}]]);const se={class:"AccountActions"},ae={class:"dropdown-menu"},ce=Object(r.k)("div",{role:"separator",class:"dropdown-divider"},null,-1),le={class:"button-unstyled ellipsis-button"};var ue=n(8);function de(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}W.c.add(Y.x);var pe={props:["user","relationship"],data:function(){return{}},components:{ProgressButton:A.a,Popover:re.default},methods:{showRepeats:function(){this.$store.dispatch("showReblogs",this.user.id)},hideRepeats:function(){this.$store.dispatch("hideReblogs",this.user.id)},blockUser:function(){this.$store.dispatch("blockUser",this.user.id)},unblockUser:function(){this.$store.dispatch("unblockUser",this.user.id)},reportUser:function(){this.$store.dispatch("openUserReportingModal",{userId:this.user.id})},openChat:function(){this.$router.push({name:"chat",params:{username:this.$store.state.users.currentUser.screen_name,recipient_id:this.user.id}})}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?de(Object(n),!0).forEach((function(t){E()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):de(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Object(ue.e)({pleromaChatMessagesAvailable:function(e){return e.instance.pleromaChatMessagesAvailable}}))};n(529);var he=te()(pe,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon"),c=Object(r.J)("Popover");return Object(r.D)(),Object(r.j)("div",se,[Object(r.m)(c,{trigger:"click",placement:"bottom","bound-to":{x:"container"},"remove-padding":""},{content:Object(r.V)(()=>[Object(r.k)("div",ae,[e.relationship.following?(Object(r.D)(),Object(r.j)(r.a,{key:0},[e.relationship.showing_reblogs?(Object(r.D)(),Object(r.j)("button",{key:0,class:"btn button-default dropdown-item",onClick:t[0]||(t[0]=(...t)=>e.hideRepeats&&e.hideRepeats(...t))},Object(r.O)(e.$t("user_card.hide_repeats")),1)):Object(r.i)("",!0),e.relationship.showing_reblogs?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("button",{key:1,class:"btn button-default dropdown-item",onClick:t[1]||(t[1]=(...t)=>e.showRepeats&&e.showRepeats(...t))},Object(r.O)(e.$t("user_card.show_repeats")),1)),ce],64)):Object(r.i)("",!0),e.relationship.blocking?(Object(r.D)(),Object(r.j)("button",{key:1,class:"btn button-default btn-block dropdown-item",onClick:t[2]||(t[2]=(...t)=>e.unblockUser&&e.unblockUser(...t))},Object(r.O)(e.$t("user_card.unblock")),1)):(Object(r.D)(),Object(r.j)("button",{key:2,class:"btn button-default btn-block dropdown-item",onClick:t[3]||(t[3]=(...t)=>e.blockUser&&e.blockUser(...t))},Object(r.O)(e.$t("user_card.block")),1)),Object(r.k)("button",{class:"btn button-default btn-block dropdown-item",onClick:t[4]||(t[4]=(...t)=>e.reportUser&&e.reportUser(...t))},Object(r.O)(e.$t("user_card.report")),1),e.pleromaChatMessagesAvailable?(Object(r.D)(),Object(r.j)("button",{key:3,class:"btn button-default btn-block dropdown-item",onClick:t[5]||(t[5]=(...t)=>e.openChat&&e.openChat(...t))},Object(r.O)(e.$t("user_card.message")),1)):Object(r.i)("",!0)])]),trigger:Object(r.V)(()=>[Object(r.k)("button",le,[Object(r.m)(a,{class:"icon",icon:"ellipsis-v"})])]),_:1})])}]]),be=n(52),me=n(25),fe=n(23);function Oe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function je(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Oe(Object(n),!0).forEach((function(t){E()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Oe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}W.c.add(Y.bb,Y.i,Y.db,Y.A,Y.v);var ge={props:["userId","switcher","selected","hideBio","rounded","bordered","allowZoomingAvatar"],data:function(){return{followRequestInProgress:!1,betterShadow:this.$store.state.interface.browserSupport.cssFilter}},created:function(){this.$store.dispatch("fetchUserRelationship",this.user.id)},computed:je({user:function(){return this.$store.getters.findUser(this.userId)},relationship:function(){return this.$store.getters.relationship(this.userId)},classes:function(){return[{"user-card-rounded-t":"top"===this.rounded,"user-card-rounded":!0===this.rounded,"user-card-bordered":!0===this.bordered}]},style:function(){return{backgroundImage:["linear-gradient(to bottom, var(--profileTint), var(--profileTint))","url(".concat(this.user.cover_photo,")")].join(", ")}},isOtherUser:function(){return this.user.id!==this.$store.state.users.currentUser.id},subscribeUrl:function(){var e=new URL(this.user.statusnet_profile_url);return"".concat(e.protocol,"//").concat(e.host,"/main/ostatus")},loggedIn:function(){return this.$store.state.users.currentUser},dailyAvg:function(){var e=Math.ceil((new Date-new Date(this.user.created_at))/864e5);return Math.round(this.user.statuses_count/e)},userHighlightType:je({get:function(){var e=this.$store.getters.mergedConfig.highlight[this.user.screen_name];return e&&e.type||"disabled"},set:function(e){var t=this.$store.getters.mergedConfig.highlight[this.user.screen_name];"disabled"!==e?this.$store.dispatch("setHighlight",{user:this.user.screen_name,color:t&&t.color||"#FFFFFF",type:e}):this.$store.dispatch("setHighlight",{user:this.user.screen_name,color:void 0})}},Object(ue.c)(["mergedConfig"])),userHighlightColor:{get:function(){var e=this.$store.getters.mergedConfig.highlight[this.user.screen_name];return e&&e.color},set:function(e){this.$store.dispatch("setHighlight",{user:this.user.screen_name,color:e})}},visibleRole:function(){var e=this.user.rights;if(e){var t=e.admin||e.moderator,n=e.admin?"admin":"moderator";return t&&n}},hideFollowsCount:function(){return this.isOtherUser&&this.user.hide_follows_count},hideFollowersCount:function(){return this.isOtherUser&&this.user.hide_followers_count}},Object(ue.c)(["mergedConfig"])),components:{UserAvatar:L.default,RemoteFollow:R.a,ModerationTools:oe,AccountActions:he,ProgressButton:A.a,FollowButton:N.a,Select:be.a,RichContent:me.a},methods:{refetchRelationship:function(){return this.$store.dispatch("fetchUserRelationship",this.user.id)},muteUser:function(){this.$store.dispatch("muteUser",this.user.id)},unmuteUser:function(){this.$store.dispatch("unmuteUser",this.user.id)},muteDomain:function(){var e=this;this.$store.dispatch("muteDomain",this.user.screen_name.split("@")[1]).then((function(){return e.refetchRelationship()}))},unmuteDomain:function(){var e=this;this.$store.dispatch("unmuteDomain",this.user.screen_name.split("@")[1]).then((function(){return e.refetchRelationship()}))},subscribeUser:function(){return this.$store.dispatch("subscribeUser",this.user.id)},unsubscribeUser:function(){return this.$store.dispatch("unsubscribeUser",this.user.id)},setProfileView:function(e){this.switcher&&this.$store.commit("setProfileView",{v:e})},linkClicked:function(e){var t=e.target;"SPAN"===t.tagName&&(t=t.parentNode),"A"===t.tagName&&window.open(t.href,"_blank")},userProfileLink:function(e){return Object(fe.a)(e.id,e.screen_name,this.$store.state.instance.restrictedNicknames)},openProfileTab:function(){this.$store.dispatch("openSettingsModalTab","profile")},zoomAvatar:function(){var e={url:this.user.profile_image_url_original,mimetype:"image"};this.$store.dispatch("setMedia",[e]),this.$store.dispatch("setCurrentMedia",e)},mentionUser:function(){this.$store.dispatch("openPostStatusModal",{replyTo:!0,repliedUser:this.user})}}};n(530);const ve=te()(ge,[["render",function(e,t,n,F,E,L){const R=Object(r.J)("UserAvatar"),A=Object(r.J)("FAIcon"),N=Object(r.J)("router-link"),B=Object(r.J)("RichContent"),V=Object(r.J)("AccountActions"),H=Object(r.J)("Select"),q=Object(r.J)("FollowButton"),J=Object(r.J)("ProgressButton"),W=Object(r.J)("FALayers"),Y=Object(r.J)("ModerationTools"),G=Object(r.J)("RemoteFollow");return Object(r.D)(),Object(r.j)("div",{class:Object(r.w)(["user-card",e.classes])},[Object(r.k)("div",{class:Object(r.w)([{"hide-bio":e.hideBio},"background-image"]),style:Object(r.x)(e.style)},null,6),Object(r.k)("div",i,[Object(r.k)("div",o,[Object(r.k)("div",s,[e.allowZoomingAvatar?(Object(r.D)(),Object(r.j)("a",{key:0,class:"user-info-avatar-link",onClick:t[0]||(t[0]=(...t)=>e.zoomAvatar&&e.zoomAvatar(...t))},[Object(r.m)(R,{"better-shadow":e.betterShadow,user:e.user},null,8,["better-shadow","user"]),Object(r.k)("div",a,[Object(r.m)(A,{class:"fa-scale-110 fa-old-padding",icon:"search-plus"})])])):(Object(r.D)(),Object(r.h)(N,{key:1,to:e.userProfileLink(e.user)},{default:Object(r.V)(()=>[Object(r.m)(R,{"better-shadow":e.betterShadow,user:e.user},null,8,["better-shadow","user"])]),_:1},8,["to"])),Object(r.k)("div",c,[Object(r.k)("div",l,[Object(r.m)(B,{title:e.user.name,class:"user-name",html:e.user.name,emoji:e.user.emoji},null,8,["title","html","emoji"]),!e.isOtherUser&&e.user.is_local?(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-unstyled edit-profile-button",onClick:t[1]||(t[1]=Object(r.Y)((...t)=>e.openProfileTab&&e.openProfileTab(...t),["stop"]))},[Object(r.m)(A,{"fixed-width":"",class:"icon",icon:"edit",title:e.$t("user_card.edit_profile")},null,8,["title"])])):Object(r.i)("",!0),e.isOtherUser&&!e.user.is_local?(Object(r.D)(),Object(r.j)("a",{key:1,href:e.user.statusnet_profile_url,target:"_blank",class:"button-unstyled external-link-button"},[Object(r.m)(A,{class:"icon",icon:"external-link-alt"})],8,u)):Object(r.i)("",!0),e.isOtherUser&&e.loggedIn?(Object(r.D)(),Object(r.h)(V,{key:2,user:e.user,relationship:e.relationship},null,8,["user","relationship"])):Object(r.i)("",!0)]),Object(r.k)("div",d,[Object(r.m)(N,{class:"user-screen-name",title:e.user.screen_name_ui,to:e.userProfileLink(e.user)},{default:Object(r.V)(()=>[Object(r.l)(" @"+Object(r.O)(e.user.screen_name_ui),1)]),_:1},8,["title","to"]),e.hideBio?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)(r.a,{key:0},[e.user.deactivated?(Object(r.D)(),Object(r.j)("span",p,Object(r.O)(e.$t("user_card.deactivated")),1)):Object(r.i)("",!0),e.visibleRole?(Object(r.D)(),Object(r.j)("span",h,Object(r.O)(e.$t("general.role."+e.visibleRole)),1)):Object(r.i)("",!0),e.user.bot?(Object(r.D)(),Object(r.j)("span",b,Object(r.O)(e.$t("user_card.bot")),1)):Object(r.i)("",!0)],64)),e.user.locked?(Object(r.D)(),Object(r.j)("span",m,[Object(r.m)(A,{class:"lock-icon",icon:"lock",size:"sm"})])):Object(r.i)("",!0),e.mergedConfig.hideUserStats||e.hideBio?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("span",f,Object(r.O)(e.dailyAvg)+" "+Object(r.O)(e.$t("user_card.per_day")),1))])])]),Object(r.k)("div",O,[e.relationship.followed_by&&e.loggedIn&&e.isOtherUser?(Object(r.D)(),Object(r.j)("div",j,Object(r.O)(e.$t("user_card.follows_you")),1)):Object(r.i)("",!0),!e.isOtherUser||!e.loggedIn&&e.switcher?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",g,["disabled"!==e.userHighlightType?Object(r.W)((Object(r.D)(),Object(r.j)("input",{key:0,id:"userHighlightColorTx"+e.user.id,"onUpdate:modelValue":t[2]||(t[2]=t=>e.userHighlightColor=t),class:"userHighlightText",type:"text"},null,8,v)),[[r.S,e.userHighlightColor]]):Object(r.i)("",!0),"disabled"!==e.userHighlightType?Object(r.W)((Object(r.D)(),Object(r.j)("input",{key:1,id:"userHighlightColor"+e.user.id,"onUpdate:modelValue":t[3]||(t[3]=t=>e.userHighlightColor=t),class:"userHighlightCl",type:"color"},null,8,y)),[[r.S,e.userHighlightColor]]):Object(r.i)("",!0),w,Object(r.m)(H,{id:"userHighlightSel"+e.user.id,modelValue:e.userHighlightType,"onUpdate:modelValue":t[4]||(t[4]=t=>e.userHighlightType=t),class:"userHighlightSel"},{default:Object(r.V)(()=>[Object(r.k)("option",k,Object(r.O)(e.$t("user_card.highlight.disabled")),1),Object(r.k)("option",_,Object(r.O)(e.$t("user_card.highlight.solid")),1),Object(r.k)("option",S,Object(r.O)(e.$t("user_card.highlight.striped")),1),Object(r.k)("option",C,Object(r.O)(e.$t("user_card.highlight.side")),1)]),_:1},8,["id","modelValue"])]))]),e.loggedIn&&e.isOtherUser?(Object(r.D)(),Object(r.j)("div",P,[Object(r.k)("div",x,[Object(r.m)(q,{relationship:e.relationship,user:e.user},null,8,["relationship","user"]),e.relationship.following?(Object(r.D)(),Object(r.j)(r.a,{key:0},[e.relationship.subscribing?(Object(r.D)(),Object(r.h)(J,{key:1,class:"btn button-default toggled",click:e.unsubscribeUser,title:e.$t("user_card.unsubscribe")},{default:Object(r.V)(()=>[Object(r.m)(W,null,{default:Object(r.V)(()=>[Object(r.m)(A,{icon:"rss",transform:"left-5 shrink-6 up-3 rotate-20",flip:"horizontal"}),Object(r.m)(A,{icon:"rss",transform:"right-5 shrink-6 up-3 rotate-20"}),Object(r.m)(A,{icon:"bell"})]),_:1})]),_:1},8,["click","title"])):(Object(r.D)(),Object(r.h)(J,{key:0,class:"btn button-default",click:e.subscribeUser,title:e.$t("user_card.subscribe")},{default:Object(r.V)(()=>[Object(r.m)(A,{icon:"bell"})]),_:1},8,["click","title"]))],64)):Object(r.i)("",!0)]),Object(r.k)("div",null,[e.relationship.muting?(Object(r.D)(),Object(r.j)("button",{key:0,class:"btn button-default btn-block toggled",disabled:e.user.deactivated,onClick:t[5]||(t[5]=(...t)=>e.unmuteUser&&e.unmuteUser(...t))},Object(r.O)(e.$t("user_card.muted")),9,D)):(Object(r.D)(),Object(r.j)("button",{key:1,class:"btn button-default btn-block",disabled:e.user.deactivated,onClick:t[6]||(t[6]=(...t)=>e.muteUser&&e.muteUser(...t))},Object(r.O)(e.$t("user_card.mute")),9,T))]),Object(r.k)("div",null,[e.relationship.domain_blocking?(Object(r.D)(),Object(r.j)("button",{key:0,class:"btn button-default btn-block toggled",onClick:t[7]||(t[7]=(...t)=>e.unmuteDomain&&e.unmuteDomain(...t))},Object(r.O)(e.$t("user_card.domain_muted")),1)):(Object(r.D)(),Object(r.j)("button",{key:1,class:"btn button-default btn-block",onClick:t[8]||(t[8]=(...t)=>e.muteDomain&&e.muteDomain(...t))},Object(r.O)(e.$t("user_card.mute_domain")),1))]),Object(r.k)("div",null,[Object(r.k)("button",{class:"btn button-default btn-block",disabled:e.user.deactivated,onClick:t[9]||(t[9]=(...t)=>e.mentionUser&&e.mentionUser(...t))},Object(r.O)(e.$t("user_card.mention")),9,I)]),"admin"===e.loggedIn.role?(Object(r.D)(),Object(r.h)(Y,{key:0,user:e.user},null,8,["user"])):Object(r.i)("",!0)])):Object(r.i)("",!0),!e.loggedIn&&e.user.is_local?(Object(r.D)(),Object(r.j)("div",$,[Object(r.m)(G,{user:e.user},null,8,["user"])])):Object(r.i)("",!0)])]),e.hideBio?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",z,[!e.mergedConfig.hideUserStats&&e.switcher?(Object(r.D)(),Object(r.j)("div",M,[Object(r.k)("div",{class:"user-count",onClick:t[10]||(t[10]=Object(r.Y)(t=>e.setProfileView("statuses"),["prevent"]))},[Object(r.k)("h5",null,Object(r.O)(e.$t("user_card.statuses")),1),Object(r.k)("span",null,[Object(r.l)(Object(r.O)(e.user.statuses_count)+" ",1),U])]),Object(r.k)("div",{class:"user-count",onClick:t[11]||(t[11]=Object(r.Y)(t=>e.setProfileView("friends"),["prevent"]))},[Object(r.k)("h5",null,Object(r.O)(e.$t("user_card.followees")),1),Object(r.k)("span",null,Object(r.O)(e.hideFollowsCount?e.$t("user_card.hidden"):e.user.friends_count),1)]),Object(r.k)("div",{class:"user-count",onClick:t[12]||(t[12]=Object(r.Y)(t=>e.setProfileView("followers"),["prevent"]))},[Object(r.k)("h5",null,Object(r.O)(e.$t("user_card.followers")),1),Object(r.k)("span",null,Object(r.O)(e.hideFollowersCount?e.$t("user_card.hidden"):e.user.followers_count),1)])])):Object(r.i)("",!0),e.hideBio?Object(r.i)("",!0):(Object(r.D)(),Object(r.h)(B,{key:1,class:"user-card-bio",html:e.user.description_html,emoji:e.user.emoji,"handle-links":!0},null,8,["html","emoji"]))]))],2)}]]);t.a=ve},function(e,t,n){"use strict";n.d(t,"b",(function(){return o})),n.d(t,"a",(function(){return s})),n.d(t,"c",(function(){return a}));var r=n(20),i=n(18),o={undelay:null,topBar:null,badge:null,profileTint:null,fg:null,bg:"underlay",highlight:"bg",panel:"bg",popover:"bg",selectedMenu:"popover",btn:"bg",btnPanel:"panel",btnTopBar:"topBar",input:"bg",inputPanel:"panel",inputTopBar:"topBar",alert:"bg",alertPanel:"panel",poll:"bg",chatBg:"underlay",chatMessage:"chatBg"},s={profileTint:.5,alert:.5,input:.5,faint:.5,underlay:.15,alertPopup:.95},a={bg:{depends:[],opacity:"bg",priority:1},wallpaper:{depends:["bg"],color:function(e,t){return Object(r.brightness)(-2*e,t).rgb}},fg:{depends:[],priority:1},text:{depends:[],layer:"bg",opacity:null,priority:1},underlay:{default:"#000000",opacity:"underlay"},link:{depends:["accent"],priority:1},accent:{depends:["link"],priority:1},faint:{depends:["text"],opacity:"faint"},faintLink:{depends:["link"],opacity:"faint"},postFaintLink:{depends:["postLink"],opacity:"faint"},cBlue:"#0000ff",cRed:"#FF0000",cGreen:"#00FF00",cOrange:"#E3FF00",profileBg:{depends:["bg"],color:function(e,t){return{r:Math.floor(.53*t.r),g:Math.floor(.56*t.g),b:Math.floor(.59*t.b)}}},profileTint:{depends:["bg"],layer:"profileTint",opacity:"profileTint"},highlight:{depends:["bg"],color:function(e,t){return Object(r.brightness)(5*e,t).rgb}},highlightLightText:{depends:["lightText"],layer:"highlight",textColor:!0},highlightPostLink:{depends:["postLink"],layer:"highlight",textColor:"preserve"},highlightFaintText:{depends:["faint"],layer:"highlight",textColor:!0},highlightFaintLink:{depends:["faintLink"],layer:"highlight",textColor:"preserve"},highlightPostFaintLink:{depends:["postFaintLink"],layer:"highlight",textColor:"preserve"},highlightText:{depends:["text"],layer:"highlight",textColor:!0},highlightLink:{depends:["link"],layer:"highlight",textColor:"preserve"},highlightIcon:{depends:["highlight","highlightText"],color:function(e,t,n){return Object(i.g)(t,n)}},popover:{depends:["bg"],opacity:"popover"},popoverLightText:{depends:["lightText"],layer:"popover",textColor:!0},popoverPostLink:{depends:["postLink"],layer:"popover",textColor:"preserve"},popoverFaintText:{depends:["faint"],layer:"popover",textColor:!0},popoverFaintLink:{depends:["faintLink"],layer:"popover",textColor:"preserve"},popoverPostFaintLink:{depends:["postFaintLink"],layer:"popover",textColor:"preserve"},popoverText:{depends:["text"],layer:"popover",textColor:!0},popoverLink:{depends:["link"],layer:"popover",textColor:"preserve"},popoverIcon:{depends:["popover","popoverText"],color:function(e,t,n){return Object(i.g)(t,n)}},selectedPost:"--highlight",selectedPostFaintText:{depends:["highlightFaintText"],layer:"highlight",variant:"selectedPost",textColor:!0},selectedPostLightText:{depends:["highlightLightText"],layer:"highlight",variant:"selectedPost",textColor:!0},selectedPostPostLink:{depends:["highlightPostLink"],layer:"highlight",variant:"selectedPost",textColor:"preserve"},selectedPostFaintLink:{depends:["highlightFaintLink"],layer:"highlight",variant:"selectedPost",textColor:"preserve"},selectedPostText:{depends:["highlightText"],layer:"highlight",variant:"selectedPost",textColor:!0},selectedPostLink:{depends:["highlightLink"],layer:"highlight",variant:"selectedPost",textColor:"preserve"},selectedPostIcon:{depends:["selectedPost","selectedPostText"],color:function(e,t,n){return Object(i.g)(t,n)}},selectedMenu:{depends:["bg"],color:function(e,t){return Object(r.brightness)(5*e,t).rgb}},selectedMenuLightText:{depends:["highlightLightText"],layer:"selectedMenu",variant:"selectedMenu",textColor:!0},selectedMenuFaintText:{depends:["highlightFaintText"],layer:"selectedMenu",variant:"selectedMenu",textColor:!0},selectedMenuFaintLink:{depends:["highlightFaintLink"],layer:"selectedMenu",variant:"selectedMenu",textColor:"preserve"},selectedMenuText:{depends:["highlightText"],layer:"selectedMenu",variant:"selectedMenu",textColor:!0},selectedMenuLink:{depends:["highlightLink"],layer:"selectedMenu",variant:"selectedMenu",textColor:"preserve"},selectedMenuIcon:{depends:["selectedMenu","selectedMenuText"],color:function(e,t,n){return Object(i.g)(t,n)}},selectedMenuPopover:{depends:["popover"],color:function(e,t){return Object(r.brightness)(5*e,t).rgb}},selectedMenuPopoverLightText:{depends:["selectedMenuLightText"],layer:"selectedMenuPopover",variant:"selectedMenuPopover",textColor:!0},selectedMenuPopoverFaintText:{depends:["selectedMenuFaintText"],layer:"selectedMenuPopover",variant:"selectedMenuPopover",textColor:!0},selectedMenuPopoverFaintLink:{depends:["selectedMenuFaintLink"],layer:"selectedMenuPopover",variant:"selectedMenuPopover",textColor:"preserve"},selectedMenuPopoverText:{depends:["selectedMenuText"],layer:"selectedMenuPopover",variant:"selectedMenuPopover",textColor:!0},selectedMenuPopoverLink:{depends:["selectedMenuLink"],layer:"selectedMenuPopover",variant:"selectedMenuPopover",textColor:"preserve"},selectedMenuPopoverIcon:{depends:["selectedMenuPopover","selectedMenuText"],color:function(e,t,n){return Object(i.g)(t,n)}},lightText:{depends:["text"],layer:"bg",textColor:"preserve",color:function(e,t){return Object(r.brightness)(20*e,t).rgb}},postLink:{depends:["link"],layer:"bg",textColor:"preserve"},postGreentext:{depends:["cGreen"],layer:"bg",textColor:"preserve"},postCyantext:{depends:["cBlue"],layer:"bg",textColor:"preserve"},border:{depends:["fg"],opacity:"border",color:function(e,t){return Object(r.brightness)(2*e,t).rgb}},poll:{depends:["accent","bg"],copacity:"poll",color:function(e,t,n){return Object(i.a)(t,.4,n)}},pollText:{depends:["text"],layer:"poll",textColor:!0},icon:{depends:["bg","text"],inheritsOpacity:!1,color:function(e,t,n){return Object(i.g)(t,n)}},fgText:{depends:["text"],layer:"fg",textColor:!0},fgLink:{depends:["link"],layer:"fg",textColor:"preserve"},panel:{depends:["fg"],opacity:"panel"},panelText:{depends:["text"],layer:"panel",textColor:!0},panelFaint:{depends:["fgText"],layer:"panel",opacity:"faint",textColor:!0},panelLink:{depends:["fgLink"],layer:"panel",textColor:"preserve"},topBar:"--fg",topBarText:{depends:["fgText"],layer:"topBar",textColor:!0},topBarLink:{depends:["fgLink"],layer:"topBar",textColor:"preserve"},tab:{depends:["btn"]},tabText:{depends:["btnText"],layer:"btn",textColor:!0},tabActiveText:{depends:["text"],layer:"bg",textColor:!0},btn:{depends:["fg"],variant:"btn",opacity:"btn"},btnText:{depends:["fgText"],layer:"btn",textColor:!0},btnPanelText:{depends:["btnText"],layer:"btnPanel",variant:"btn",textColor:!0},btnTopBarText:{depends:["btnText"],layer:"btnTopBar",variant:"btn",textColor:!0},btnPressed:{depends:["btn"],layer:"btn"},btnPressedText:{depends:["btnText"],layer:"btn",variant:"btnPressed",textColor:!0},btnPressedPanel:{depends:["btnPressed"],layer:"btn"},btnPressedPanelText:{depends:["btnPanelText"],layer:"btnPanel",variant:"btnPressed",textColor:!0},btnPressedTopBar:{depends:["btnPressed"],layer:"btn"},btnPressedTopBarText:{depends:["btnTopBarText"],layer:"btnTopBar",variant:"btnPressed",textColor:!0},btnToggled:{depends:["btn"],layer:"btn",color:function(e,t){return Object(r.brightness)(20*e,t).rgb}},btnToggledText:{depends:["btnText"],layer:"btn",variant:"btnToggled",textColor:!0},btnToggledPanelText:{depends:["btnPanelText"],layer:"btnPanel",variant:"btnToggled",textColor:!0},btnToggledTopBarText:{depends:["btnTopBarText"],layer:"btnTopBar",variant:"btnToggled",textColor:!0},btnDisabled:{depends:["btn","bg"],color:function(e,t,n){return Object(i.a)(t,.25,n)}},btnDisabledText:{depends:["btnText","btnDisabled"],layer:"btn",variant:"btnDisabled",color:function(e,t,n){return Object(i.a)(t,.25,n)}},btnDisabledPanelText:{depends:["btnPanelText","btnDisabled"],layer:"btnPanel",variant:"btnDisabled",color:function(e,t,n){return Object(i.a)(t,.25,n)}},btnDisabledTopBarText:{depends:["btnTopBarText","btnDisabled"],layer:"btnTopBar",variant:"btnDisabled",color:function(e,t,n){return Object(i.a)(t,.25,n)}},input:{depends:["fg"],opacity:"input"},inputText:{depends:["text"],layer:"input",textColor:!0},inputPanelText:{depends:["panelText"],layer:"inputPanel",variant:"input",textColor:!0},inputTopbarText:{depends:["topBarText"],layer:"inputTopBar",variant:"input",textColor:!0},alertError:{depends:["cRed"],opacity:"alert"},alertErrorText:{depends:["text"],layer:"alert",variant:"alertError",textColor:!0},alertErrorPanelText:{depends:["panelText"],layer:"alertPanel",variant:"alertError",textColor:!0},alertWarning:{depends:["cOrange"],opacity:"alert"},alertWarningText:{depends:["text"],layer:"alert",variant:"alertWarning",textColor:!0},alertWarningPanelText:{depends:["panelText"],layer:"alertPanel",variant:"alertWarning",textColor:!0},alertSuccess:{depends:["cGreen"],opacity:"alert"},alertSuccessText:{depends:["text"],layer:"alert",variant:"alertSuccess",textColor:!0},alertSuccessPanelText:{depends:["panelText"],layer:"alertPanel",variant:"alertSuccess",textColor:!0},alertNeutral:{depends:["text"],opacity:"alert"},alertNeutralText:{depends:["text"],layer:"alert",variant:"alertNeutral",color:function(e,t){return Object(r.invertLightness)(t).rgb},textColor:!0},alertNeutralPanelText:{depends:["panelText"],layer:"alertPanel",variant:"alertNeutral",textColor:!0},alertPopupError:{depends:["alertError"],opacity:"alertPopup"},alertPopupErrorText:{depends:["alertErrorText"],layer:"popover",variant:"alertPopupError",textColor:!0},alertPopupWarning:{depends:["alertWarning"],opacity:"alertPopup"},alertPopupWarningText:{depends:["alertWarningText"],layer:"popover",variant:"alertPopupWarning",textColor:!0},alertPopupSuccess:{depends:["alertSuccess"],opacity:"alertPopup"},alertPopupSuccessText:{depends:["alertSuccessText"],layer:"popover",variant:"alertPopupSuccess",textColor:!0},alertPopupNeutral:{depends:["alertNeutral"],opacity:"alertPopup"},alertPopupNeutralText:{depends:["alertNeutralText"],layer:"popover",variant:"alertPopupNeutral",textColor:!0},badgeNotification:"--cRed",badgeNotificationText:{depends:["text","badgeNotification"],layer:"badge",variant:"badgeNotification",textColor:"bw"},chatBg:{depends:["bg"]},chatMessageIncomingBg:{depends:["chatBg"]},chatMessageIncomingText:{depends:["text"],layer:"chatMessage",variant:"chatMessageIncomingBg",textColor:!0},chatMessageIncomingLink:{depends:["link"],layer:"chatMessage",variant:"chatMessageIncomingBg",textColor:"preserve"},chatMessageIncomingBorder:{depends:["border"],opacity:"border",color:function(e,t){return Object(r.brightness)(2*e,t).rgb}},chatMessageOutgoingBg:{depends:["chatMessageIncomingBg"],color:function(e,t){return Object(r.brightness)(5*e,t).rgb}},chatMessageOutgoingText:{depends:["text"],layer:"chatMessage",variant:"chatMessageOutgoingBg",textColor:!0},chatMessageOutgoingLink:{depends:["link"],layer:"chatMessage",variant:"chatMessageOutgoingBg",textColor:"preserve"},chatMessageOutgoingBorder:{depends:["chatMessageOutgoingBg"],opacity:"border",color:function(e,t){return Object(r.brightness)(2*e,t).rgb}}}},,function(e,t,n){"use strict";var r=n(21),i=n.n(r),o=n(70),s=n(336),a={ja_easy:"ja",zh_Hant:"zh-HANT",zh:"zh-Hans"},c=function(e){return a[e]||e},l=function(e){var t={ja_easy:"やさしいにほんご",zh:"简体中文",zh_Hant:"繁體中文"}[e]||s.a.getNativeName(e),n=c(e);return t.charAt(0).toLocaleUpperCase(n)+t.slice(1)},u=i()(o.a.languages,(function(e){return{code:e,name:l(e)}})).sort((function(e,t){return e.name.localeCompare(t.name)})),d={internalToBrowserLocale:c,internalToBackendLocale:function(e){return c(e).replace("_","-")},languages:u,getLanguageName:l};t.a=d},,,,,function(e,t,n){"use strict";n.d(t,"b",(function(){return f})),n.d(t,"i",(function(){return O})),n.d(t,"e",(function(){return g})),n.d(t,"g",(function(){return v})),n.d(t,"f",(function(){return y})),n.d(t,"a",(function(){return C})),n.d(t,"h",(function(){return P})),n.d(t,"d",(function(){return x})),n.d(t,"k",(function(){return T})),n.d(t,"c",(function(){return I})),n.d(t,"m",(function(){return $})),n.d(t,"j",(function(){return z})),n.d(t,"l",(function(){return M}));var r=n(28),i=n.n(r),o=n(12),s=n.n(o),a=n(5),c=n.n(a),l=n(11),u=n.n(l),d=n(20),p=n(18),h=n(54);function b(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function m(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?b(Object(n),!0).forEach((function(t){c()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):b(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var f=function(e){var t=D(e).rules,n=document.head,r=document.body;r.classList.add("hidden");var i=document.createElement("style");n.appendChild(i);var o=i.sheet;o.toString(),o.insertRule(":root { ".concat(t.radii," }"),"index-max"),o.insertRule(":root { ".concat(t.colors," }"),"index-max"),o.insertRule(":root { ".concat(t.shadows," }"),"index-max"),o.insertRule(":root { ".concat(t.fonts," }"),"index-max"),r.classList.remove("hidden")},O=function(e,t){return 0===e.length?"none":e.filter((function(e){return t?e.inset:e})).map((function(e){return[e.x,e.y,e.blur,e.spread].map((function(e){return e+"px"})).concat([Object(p.d)(e.color,e.alpha),e.inset?"inset":""]).join(" ")})).join(", ")},j=function(e){return 0===e.length?"none":e.filter((function(e){return!e.inset&&0===Number(e.spread)})).map((function(e){return[e.x,e.y,e.blur/2].map((function(e){return e+"px"})).concat([Object(p.d)(e.color,e.alpha)]).join(" ")})).map((function(e){return"drop-shadow(".concat(e,")")})).join(" ")},g=function(e){var t=e.themeEngineVersion?e.colors||e:I(e.colors||e),n=Object(h.d)(t,e.opacity||{}),r=n.colors,i=n.opacity,o=Object.entries(r).reduce((function(e,t){var n=u()(t,2),r=n[0],i=n[1];return i?(e.solid[r]=Object(p.i)(i),e.complete[r]=void 0===i.a?Object(p.i)(i):Object(p.j)(i),e):e}),{complete:{},solid:{}});return{rules:{colors:Object.entries(o.complete).filter((function(e){var t=u()(e,2);t[0];return t[1]})).map((function(e){var t=u()(e,2),n=t[0],r=t[1];return"--".concat(n,": ").concat(r)})).join(";")},theme:{colors:o.solid,opacity:i}}},v=function(e){var t=e.radii||{};void 0!==e.btnRadius&&(t=Object.entries(e).filter((function(e){var t=u()(e,2),n=t[0];t[1];return n.endsWith("Radius")})).reduce((function(e,t){return e[t[0].split("Radius")[0]]=t[1],e}),{}));var n=Object.entries(t).filter((function(e){var t=u()(e,2);t[0];return t[1]})).reduce((function(e,t){var n=u()(t,2),r=n[0],i=n[1];return e[r]=i,e}),{btn:4,input:4,checkbox:2,panel:10,avatar:5,avatarAlt:50,tooltip:2,attachment:5,chatMessage:t.panel});return{rules:{radii:Object.entries(n).filter((function(e){var t=u()(e,2);t[0];return t[1]})).map((function(e){var t=u()(e,2),n=t[0],r=t[1];return"--".concat(n,"Radius: ").concat(r,"px")})).join(";")},theme:{radii:n}}},y=function(e){var t=Object.entries(e.fonts||{}).filter((function(e){var t=u()(e,2);t[0];return t[1]})).reduce((function(e,t){var n=u()(t,2),r=n[0],i=n[1];return e[r]=Object.entries(i).filter((function(e){var t=u()(e,2);t[0];return t[1]})).reduce((function(e,t){var n=u()(t,2),r=n[0],i=n[1];return e[r]=i,e}),e[r]),e}),{interface:{family:"sans-serif"},input:{family:"inherit"},post:{family:"inherit"},postCode:{family:"monospace"}});return{rules:{fonts:Object.entries(t).filter((function(e){var t=u()(e,2);t[0];return t[1]})).map((function(e){var t=u()(e,2),n=t[0],r=t[1];return"--".concat(n,"Font: ").concat(r.family)})).join(";")},theme:{fonts:t}}},w=function(e,t){return{x:0,y:e?1:-1,blur:0,spread:0,color:t?"#000000":"#FFFFFF",alpha:.2,inset:!0}},k=[w(!0,!1),w(!1,!0)],_=[w(!0,!0),w(!1,!1)],S={x:0,y:0,blur:4,spread:0,color:"--faint",alpha:1},C={panel:[{x:1,y:1,blur:4,spread:0,color:"#000000",alpha:.6}],topBar:[{x:0,y:0,blur:4,spread:0,color:"#000000",alpha:.6}],popup:[{x:2,y:2,blur:3,spread:0,color:"#000000",alpha:.5}],avatar:[{x:0,y:1,blur:8,spread:0,color:"#000000",alpha:.7}],avatarStatus:[],panelHeader:[],button:[{x:0,y:0,blur:2,spread:0,color:"#000000",alpha:1}].concat(k),buttonHover:[S].concat(k),buttonPressed:[S].concat(_),input:[].concat(_,[{x:0,y:0,blur:2,inset:!0,spread:0,color:"#000000",alpha:1}])},P=function(e,t){var n={button:"btn",panel:"bg",top:"topBar",popup:"popover",avatar:"bg",panelHeader:"panel",input:"input"},r=Object.fromEntries(Object.entries(e.shadows||{}).map((function(e){var t=u()(e,2);return[t[0],t[1].map((function(e){return m({color:"#000000"},e)}))]}))),i=r&&!e.themeEngineVersion?$(r,e.opacity):r||{},o=Object.entries(m(m({},C),i)).reduce((function(e,r){var i=u()(r,2),o=i[0],a=i[1],l=o.replace(/[A-Z].*$/,""),b=n[l],f=Object(p.h)(Object(d.convert)(t[b]).rgb)<.5?1:-1,O=a.reduce((function(e,n){return[].concat(s()(e),[m(m({},n),{},{color:Object(p.i)(Object(h.c)(n.color,(function(e){return Object(d.convert)(t[e]).rgb}),f))})])}),[]);return m(m({},e),{},c()({},o,O))}),{});return{rules:{shadows:Object.entries(o).map((function(e){var t=u()(e,2),n=t[0],r=t[1];return["--".concat(n,"Shadow: ").concat(O(r)),"--".concat(n,"ShadowFilter: ").concat(j(r)),"--".concat(n,"ShadowInset: ").concat(O(r,!0))].join(";")})).join(";")},theme:{shadows:o}}},x=function(e,t,n,r){return{rules:m(m(m(m({},n.rules),e.rules),t.rules),r.rules),theme:m(m(m(m({},n.theme),e.theme),t.theme),r.theme)}},D=function(e){var t=g(e);return x(t,v(e),P(e,t.theme.colors,t.mod),y(e))},T=function(){return window.fetch("/static/styles.json",{cache:"no-store"}).then((function(e){return e.json()})).then((function(e){return Object.entries(e).map((function(e){var t=u()(e,2),n=t[0],r=t[1],o=null;return"object"===i()(r)?o=Promise.resolve(r):"string"==typeof r&&(o=window.fetch(r,{cache:"no-store"}).then((function(e){return e.json()})).catch((function(e){return console.error(e),null}))),[n,o]}))})).then((function(e){return e.reduce((function(e,t){var n=u()(t,2),r=n[0],i=n[1];return e[r]=i,e}),{})}))},I=function(e){return Object.entries(e).reduce((function(e,t){var n=u()(t,2),r=n[0],i=n[1];switch(r){case"lightBg":return m(m({},e),{},{highlight:i});case"btnText":return m(m({},e),["","Panel","TopBar"].reduce((function(e,t){return m(m({},e),{},c()({},"btn"+t+"Text",i))}),{}));default:return m(m({},e),{},c()({},r,i))}}),{})},$=function(e,t){return Object.entries(e).reduce((function(e,n){var r=u()(n,2),i=r[0],o=r[1],a=o.reduce((function(e,n){return[].concat(s()(e),[m(m({},n),{},{alpha:(o=n,a=o.color,(void 0===a?"#000000":a).startsWith("--")?(r=n,i=r.color,t[Object(h.f)(i.substring(2).split(",")[0])]||1):n.alpha)})]);var r,i,o,a}),[]);return m(m({},e),{},c()({},i,a))}),{})},z=function(e){return T().then((function(t){return t[e]?t[e]:t["pleroma-dark"]})).then((function(e){var t=Array.isArray(e),n=t?{}:e.theme;if(t){var r=Object(p.f)(e[1]),i=Object(p.f)(e[2]),o=Object(p.f)(e[3]),s=Object(p.f)(e[4]),a=Object(p.f)(e[5]||"#FF0000"),c=Object(p.f)(e[6]||"#00FF00"),l=Object(p.f)(e[7]||"#0000FF"),u=Object(p.f)(e[8]||"#E3FF00");n.colors={bg:r,fg:i,text:o,link:s,cRed:a,cBlue:l,cGreen:c,cOrange:u}}return{theme:n,source:e.source}}))},M=function(e){return z(e).then((function(e){return f(e.theme)}))}},function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r=function(e,t){var n=!1,r=null;return r=window.setTimeout((function i(){var o=e();o&&o.finally?o.finally((function(){n||(r=window.setTimeout(i,t))})):console.warn("promiseInterval: promise call did not return a promise, stopping interval.")}),t),{stop:function(){n=!0,window.clearTimeout(r)}}}},function(e,t,n){"use strict";var r=n(0);const i={key:0},o={key:1},s={key:3,class:"link-preview media-body"};var a=n(5),c=n.n(a),l=n(58);const u=["title"],d={class:"option-result-label"},p={class:"result-percentage"},h=["onClick"],b=["disabled","value"],m=["disabled","value"],f={class:"option-vote"},O={class:"footer faint"},j=["disabled"],g={class:"total"};var v=n(21),y=n.n(v),w=n(164),k=n.n(w),_=n(59),S=n(25),C={name:"Poll",props:["basePoll","emoji"],components:{Timeago:_.a,RichContent:S.a},data:function(){return{loading:!1,choices:[]}},created:function(){this.$store.state.polls.pollsObject[this.pollId]||this.$store.dispatch("mergeOrAddPoll",this.basePoll),this.$store.dispatch("trackPoll",this.pollId)},unmounted:function(){this.$store.dispatch("untrackPoll",this.pollId)},computed:{pollId:function(){return this.basePoll.id},poll:function(){return this.$store.state.polls.pollsObject[this.pollId]||{}},options:function(){return this.poll&&this.poll.options||[]},expiresAt:function(){return this.poll&&this.poll.expires_at||0},expired:function(){return this.poll&&this.poll.expired||!1},loggedIn:function(){return this.$store.state.users.currentUser},showResults:function(){return this.poll.voted||this.expired||!this.loggedIn},totalVotesCount:function(){return this.poll.votes_count},containerClass:function(){return{loading:this.loading}},choiceIndices:function(){return this.choices.map((function(e,t){return e&&t})).filter((function(e){return"number"==typeof e}))},isDisabled:function(){var e=0===this.choiceIndices.length;return this.loading||e}},methods:{percentageForOption:function(e){return 0===this.totalVotesCount?0:Math.round(e/this.totalVotesCount*100)},resultTitle:function(e){return"".concat(e.votes_count,"/").concat(this.totalVotesCount," ").concat(this.$t("polls.votes"))},fetchPoll:function(){this.$store.dispatch("refreshPoll",{id:this.statusId,pollId:this.poll.id})},activateOption:function(e){var t=this.$el.querySelectorAll("input"),n=this.$el.querySelector('input[value="'.concat(e,'"]'));this.poll.multiple?n.checked=!n.checked:(k()(t,(function(e){e.checked=!1})),n.checked=!0),this.choices=y()(t,(function(e){return e.checked}))},optionId:function(e){return"poll".concat(this.poll.id,"-").concat(e)},vote:function(){var e=this;0!==this.choiceIndices.length&&(this.loading=!0,this.$store.dispatch("votePoll",{id:this.statusId,pollId:this.poll.id,choices:this.choiceIndices}).then((function(t){e.loading=!1})))}}},P=(n(517),n(4)),x=n.n(P);var D=x()(C,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("RichContent"),c=Object(r.J)("Timeago"),l=Object(r.J)("i18n-t");return Object(r.D)(),Object(r.j)("div",{class:Object(r.w)(["poll",e.containerClass])},[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.options,(t,n)=>(Object(r.D)(),Object(r.j)("div",{key:n,class:"poll-option"},[e.showResults?(Object(r.D)(),Object(r.j)("div",{key:0,title:e.resultTitle(t),class:"option-result"},[Object(r.k)("div",d,[Object(r.k)("span",p,Object(r.O)(e.percentageForOption(t.votes_count))+"% ",1),Object(r.m)(a,{html:t.title_html,"handle-links":!1,emoji:e.emoji},null,8,["html","emoji"])]),Object(r.k)("div",{class:"result-fill",style:Object(r.x)({width:e.percentageForOption(t.votes_count)+"%"})},null,4)],8,u)):(Object(r.D)(),Object(r.j)("div",{key:1,onClick:t=>e.activateOption(n)},[e.poll.multiple?(Object(r.D)(),Object(r.j)("input",{key:0,type:"checkbox",disabled:e.loading,value:n},null,8,b)):(Object(r.D)(),Object(r.j)("input",{key:1,type:"radio",disabled:e.loading,value:n},null,8,m)),Object(r.k)("label",f,[Object(r.m)(a,{html:t.title_html,"handle-links":!1,emoji:e.emoji},null,8,["html","emoji"])])],8,h))]))),128)),Object(r.k)("div",O,[e.showResults?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("button",{key:0,class:"btn button-default poll-vote-button",type:"button",disabled:e.isDisabled,onClick:t[0]||(t[0]=(...t)=>e.vote&&e.vote(...t))},Object(r.O)(e.$t("polls.vote")),9,j)),Object(r.k)("div",g,["number"==typeof e.poll.voters_count?(Object(r.D)(),Object(r.j)(r.a,{key:0},[Object(r.l)(Object(r.O)(e.$tc("polls.people_voted_count",e.poll.voters_count,{count:e.poll.voters_count}))+" ·  ",1)],64)):(Object(r.D)(),Object(r.j)(r.a,{key:1},[Object(r.l)(Object(r.O)(e.$tc("polls.votes_count",e.poll.votes_count,{count:e.poll.votes_count}))+" ·  ",1)],64))]),Object(r.k)("span",null,[Object(r.m)(l,{scope:"global",keypath:e.expired?"polls.expired":"polls.expires_in"},{default:Object(r.V)(()=>[Object(r.m)(c,{time:e.expiresAt,"auto-update":60,"now-threshold":0},null,8,["time"])]),_:1},8,["keypath"])])])],2)}]]),T=n(78);const I={class:"body"},$={key:0};var z=n(33),M=n(12),U=n.n(M),F=n(329),E=n(79),L=n(40),R=n.n(L),A=n(23),N=n(8),B=n(31),V=n(22),H=n(6),q=n(3),J=["backgroundColor","backgroundPosition","backgroundImage"];function W(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Y(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?W(Object(n),!0).forEach((function(t){c()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):W(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}H.c.add(q.f);V.default,Y(Y({user:function(){return this.url&&this.$store&&this.$store.getters.findUserByUrl(this.url)},isYou:function(){return this.user&&this.user.id===this.currentUser.id},userName:function(){return this.user&&this.userNameFullUi.split("@")[0]},serverName:function(){return this.user&&(this.userNameFullUi.split("@")[1]||this.$store.getters.instanceDomain)},userNameFull:function(){return this.user&&this.user.screen_name},userNameFullUi:function(){return this.user&&this.user.screen_name_ui},highlight:function(){return this.user&&this.mergedConfig.highlight[this.user.screen_name]},highlightType:function(){return this.highlight&&"-"+this.highlight.type},highlightClass:function(){if(this.highlight)return Object(B.a)(this.user)},style:function(){if(this.highlight){var e=Object(B.b)(this.highlight);e.backgroundColor,e.backgroundPosition,e.backgroundImage;return R()(e,J)}},classnames:function(){return[{"-you":this.isYou&&this.shouldBoldenYou,"-highlighted":this.highlight},this.highlightType]},useAtIcon:function(){return this.mergedConfig.useAtIcon},isRemote:function(){return this.userName!==this.userNameFull},shouldShowFullUserName:function(){var e=this.mergedConfig.mentionLinkDisplay;return"short"!==e&&("full"===e||this.isRemote)},shouldShowTooltip:function(){return this.mergedConfig.mentionLinkShowTooltip&&"short"===this.mergedConfig.mentionLinkDisplay&&this.isRemote},shouldShowAvatar:function(){return this.mergedConfig.mentionLinkShowAvatar},shouldShowYous:function(){return this.mergedConfig.mentionLinkShowYous},shouldBoldenYou:function(){return this.mergedConfig.mentionLinkBoldenYou},shouldFadeDomain:function(){return this.mergedConfig.mentionLinkFadeDomain}},Object(N.c)(["mergedConfig"])),Object(N.e)({currentUser:function(e){return e.users.currentUser}}));function G(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return K(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return K(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function K(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var X=["tada","jelly","twitch","shake","spin","jump","bounce","flip","x2","x3","x4","font","blur","rainbow","sparkle","rotate"],Z=Object(r.o)({props:{status:{type:Object,required:!0}},render:function(){var e=this;if(!this.status)return null;var t=F.parse(this.status.mfm_content,{fnNameList:X}),n=function(e){return null==e?null:e.match(/^[0-9.]+s$/)?e:null};return Object(r.q)("span",function t(i){return o=i.map((function(i){switch(i.type){case"text":var o,s=[],a=G(i.props.text.replace(/(\r\n|\n|\r)/g,"\n").split("\n"));try{for(a.s();!(o=a.n()).done;){var c=o.value;s.push(Object(r.q)("br")),s.push(c)}}catch(e){a.e(e)}finally{a.f()}return s.shift(),s;case"bold":return[Object(r.q)("b",t(i.children))];case"strike":return[Object(r.q)("del",t(i.children))];case"italic":return Object(r.q)("i",{style:"font-style: oblique;"},t(i.children));case"fn":var l;switch(i.props.name){case"tada":l="font-size: 150%;animation: tada 1s linear infinite both;";break;case"jelly":var u=n(i.props.args.speed)||"1s";l="animation: mfm-rubberBand ".concat(u," linear infinite both;");break;case"twitch":var d=n(i.props.args.speed)||"0.5s";l="animation: mfm-twitch ".concat(d," ease infinite;");break;case"shake":var p=n(i.props.args.speed)||"0.5s";l="animation: mfm-shake ".concat(p," ease infinite;");break;case"spin":var h=i.props.args.left?"reverse":i.props.args.alternate?"alternate":"normal",b=i.props.args.x?"mfm-spinX":i.props.args.y?"mfm-spinY":"mfm-spin",m=n(i.props.args.speed)||"1.5s";l="animation: ".concat(b," ").concat(m," linear infinite; animation-direction: ").concat(h,";");break;case"jump":l="animation: mfm-jump 0.75s linear infinite;";break;case"bounce":l="animation: mfm-bounce 0.75s linear infinite; transform-origin: center bottom;";break;case"flip":var f=i.props.args.h&&i.props.args.v?"scale(-1, -1)":i.props.args.v?"scaleY(-1)":"scaleX(-1)";l="transform: ".concat(f,";");break;case"x2":l="font-size: 200%;";break;case"x3":l="font-size: 400%;";break;case"x4":l="font-size: 600%;";break;case"font":var O=i.props.args.serif?"serif":i.props.args.monospace?"monospace":i.props.args.cursive?"cursive":i.props.args.fantasy?"fantasy":i.props.args.emoji?"emoji":i.props.args.math?"math":null;O&&(l="font-family: ".concat(O,";"));break;case"blur":return Object(r.q)("span",{class:"_mfm_blur_"},t(i.children));case"rainbow":l="animation: mfm-rainbow 1s linear infinite;";break;case"sparkle":return Object(r.q)(MkSparkle,{},t(i.children));case"rotate":var j=parseInt(i.props.args.deg)||"90";l="transform: rotate(".concat(j,"deg); transform-origin: center center;")}return null==l?Object(r.q)("span",{},["$[",i.props.name," "].concat(U()(t(i.children)),["]"])):Object(r.q)("span",{style:"display: inline-block;"+l},t(i.children));case"small":return[Object(r.q)("small",{style:"opacity: 0.7;"},t(i.children))];case"center":return[Object(r.q)("div",{style:"text-align:center;"},t(i.children))];case"url":return[Object(r.q)("a",{key:Math.random(),href:i.props.url,rel:"nofollow noopener"})];case"link":return[Object(r.q)("a",{key:Math.random(),href:i.props.url,rel:"nofollow noopener"},t(i.children))];case"mention":var g=e.status.attentions.find((function(e){return"@".concat(e.screen_name)===i.props.acct||e.screen_name===i.props.username}));return g?[Object(r.q)(E.a,{url:g.statusnet_profile_url,content:i.props.acct,userScreenName:i.props.acct})]:null;case"hashtag":return[Object(r.q)("a",{rel:"noopener noreferrer",target:"_blank",key:i.props.hashtag,href:e.status.tags.find((function(e){return e.name===i.props.hashtag})).url},"#".concat(i.props.hashtag))];case"blockCode":return[Object(r.q)("pre",{key:Math.random(),lang:i.props.lang},i.props.code)];case"inlineCode":return[Object(r.q)("pre",{key:Math.random(),code:i.props.code,inline:!0})];case"quote":return e.nowrap?[Object(r.q)("span",{class:"quote"},t(i.children))]:[Object(r.q)("div",{class:"quote"},t(i.children))];case"emojiCode":return[Object(r.q)("div",{class:"still-image emoji img"},[Object(r.q)("img",{key:Math.random(),title:i.props.name,alt:i.props.name,src:e.status.emojis.find((function(e){return e.shortcode===i.props.name})).static_url})])];case"unicodeEmoji":return i.props.emoji;default:return console.error("unrecognized ast type:",i.type),[]}})),(s=[]).concat.apply(s,U()(o));var o,s}(t))}});function Q(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}H.c.add(q.D,q.Q,q.K,q.N,q.X);var ee={name:"StatusContent",props:["compact","status","focused","noHeading","fullContent","singleLine","showingTall","expandingSubject","showingLongSubject","toggleShowingTall","toggleExpandingSubject","toggleShowingLongSubject"],data:function(){var e=this.$store.getters.mergedConfig.renderMisskeyMarkdown;return{postLength:this.status.text.length,parseReadyDone:!1,renderMisskeyMarkdown:e}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Q(Object(n),!0).forEach((function(t){c()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Q(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({localCollapseSubjectDefault:function(){return this.mergedConfig.collapseMessageWithSubject},tallStatus:function(){return!this.singleLine&&!this.compact&&this.status.raw_html.split(/<p|<br/).length+this.postLength/80>20},longSubject:function(){return this.status.summary.length>240},mightHideBecauseSubject:function(){return!!this.status.summary&&this.localCollapseSubjectDefault},mightHideBecauseTall:function(){return this.tallStatus&&!(this.status.summary&&this.localCollapseSubjectDefault)},hideSubjectStatus:function(){return this.mightHideBecauseSubject&&!this.expandingSubject},hideTallStatus:function(){return this.mightHideBecauseTall&&!this.showingTall},showingMore:function(){return this.mightHideBecauseTall&&this.showingTall||this.mightHideBecauseSubject&&this.expandingSubject},attachmentTypes:function(){return this.status.attachments.map((function(e){return z.a.fileType(e.mimetype)}))}},Object(N.c)(["mergedConfig"])),components:{RichContent:S.a,MFMContent:Z},mounted:function(){var e=this;this.status.attentions&&this.status.attentions.forEach((function(t){var n=t.id;e.$store.dispatch("fetchUserIfMissing",n)}))},methods:{onParseReady:function(e){var t=this;if(!this.parseReadyDone){this.parseReadyDone=!0,this.$emit("parseReady",e);var n=e.writtenMentions,r=e.invisibleMentions;n.filter((function(e){return!e.notifying})).forEach((function(e){var n=e.content,r=e.url,i=n.replace(/<[^>]+?>/gi,"");if(i.startsWith("@")){var o=i.slice(1),s=r.replace(/^https?:\/\//,"").replace(/\/.+?$/,"");t.$store.dispatch("fetchUserIfMissing","".concat(o,"@").concat(s))}})),this.postLength=r.reduce((function(e,t){return e-t.textContent.length-1}),this.postLength)}},toggleShowMore:function(){this.mightHideBecauseTall?this.toggleShowingTall():this.mightHideBecauseSubject&&this.toggleExpandingSubject()},generateTagLink:function(e){return"/tag/".concat(e)}}};n(521);var te=x()(ee,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("RichContent"),c=Object(r.J)("MFMContent"),l=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("div",{class:Object(r.w)(["StatusBody",{"-compact":e.compact}])},[Object(r.k)("div",I,[e.status.summary_raw_html?(Object(r.D)(),Object(r.j)("div",{key:0,class:Object(r.w)(["summary-wrapper",{"-tall":e.longSubject&&!e.showingLongSubject}])},[Object(r.m)(a,{class:"media-body summary",html:e.status.summary_raw_html,emoji:e.status.emojis},null,8,["html","emoji"]),Object(r.W)(Object(r.k)("button",{class:"button-unstyled -link tall-subject-hider",onClick:t[0]||(t[0]=Object(r.Y)((...t)=>e.toggleShowingLongSubject&&e.toggleShowingLongSubject(...t),["prevent"]))},Object(r.O)(e.$t("status.hide_full_subject")),513),[[r.T,e.longSubject&&e.showingLongSubject]]),Object(r.W)(Object(r.k)("button",{class:"button-unstyled -link tall-subject-hider",onClick:t[1]||(t[1]=Object(r.Y)((...t)=>e.toggleShowingLongSubject&&e.toggleShowingLongSubject(...t),["prevent"]))},Object(r.O)(e.$t("status.show_full_subject")),513),[[r.T,e.longSubject&&!e.showingLongSubject]])],2)):Object(r.i)("",!0),Object(r.k)("div",{class:Object(r.w)([{"-tall-status":e.hideTallStatus},"text-wrapper"])},[Object(r.W)(Object(r.k)("button",{class:Object(r.w)(["button-unstyled -link tall-status-hider",{"-focused":e.focused}]),onClick:t[2]||(t[2]=Object(r.Y)((...t)=>e.toggleShowMore&&e.toggleShowMore(...t),["prevent"]))},Object(r.O)(e.$t("general.show_more")),3),[[r.T,e.hideTallStatus]]),e.hideSubjectStatus||e.singleLine&&e.status.summary_raw_html?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",$,[e.renderMisskeyMarkdown&&e.status.mfm_content?(Object(r.D)(),Object(r.h)(c,{key:0,class:"RichContent text media-body mfm-post-content",status:e.status},null,8,["status"])):(Object(r.D)(),Object(r.h)(a,{key:1,class:Object(r.w)([{"-single-line":e.singleLine},"text media-body"]),html:e.status.raw_html,emoji:e.status.emojis,"handle-links":!0,greentext:e.mergedConfig.greentext,attentions:e.status.attentions,onParseReady:e.onParseReady},null,8,["class","html","emoji","greentext","attentions","onParseReady"]))])),Object(r.W)(Object(r.k)("button",{class:"button-unstyled -link cw-status-hider",onClick:t[3]||(t[3]=Object(r.Y)((...t)=>e.toggleShowMore&&e.toggleShowMore(...t),["prevent"]))},[Object(r.l)(Object(r.O)(e.$t("status.show_content"))+" ",1),e.attachmentTypes.includes("image")?(Object(r.D)(),Object(r.h)(l,{key:0,icon:"image"})):Object(r.i)("",!0),e.attachmentTypes.includes("video")?(Object(r.D)(),Object(r.h)(l,{key:1,icon:"video"})):Object(r.i)("",!0),e.attachmentTypes.includes("audio")?(Object(r.D)(),Object(r.h)(l,{key:2,icon:"music"})):Object(r.i)("",!0),e.attachmentTypes.includes("unknown")?(Object(r.D)(),Object(r.h)(l,{key:3,icon:"file"})):Object(r.i)("",!0),e.status.poll&&e.status.poll.options?(Object(r.D)(),Object(r.h)(l,{key:4,icon:"poll-h"})):Object(r.i)("",!0),e.status.card?(Object(r.D)(),Object(r.h)(l,{key:5,icon:"link"})):Object(r.i)("",!0)],512),[[r.T,e.hideSubjectStatus]]),Object(r.W)(Object(r.k)("button",{class:"button-unstyled -link status-unhider",onClick:t[4]||(t[4]=Object(r.Y)((...t)=>e.toggleShowMore&&e.toggleShowMore(...t),["prevent"]))},Object(r.O)(e.tallStatus?e.$t("general.show_less"):e.$t("status.hide_content")),513),[[r.T,e.showingMore&&!e.fullContent]])],2)]),e.hideSubjectStatus?Object(r.i)("",!0):Object(r.I)(e.$slots,"default",{key:0})],2)}]]),ne=n(142);function re(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ie(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?re(Object(n),!0).forEach((function(t){c()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):re(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}H.c.add(q.r,q.D,q.Q,q.K,q.N,q.X);var oe,se=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},ae=function(e,t){var n=se(t),r="controlledToggle".concat(n),i="uncontrolled".concat(n);e[r]?e[r]():e[i]=!e[i]},ce={name:"StatusContent",props:["status","compact","focused","noHeading","fullContent","singleLine","controlledShowingTall","controlledExpandingSubject","controlledToggleShowingTall","controlledToggleExpandingSubject","controlledShowingLongSubject","controlledToggleShowingLongSubject"],data:function(){return{uncontrolledShowingTall:this.fullContent||this.inConversation&&this.focused,uncontrolledShowingLongSubject:!1,uncontrolledExpandingSubject:!this.$store.getters.mergedConfig.collapseMessageWithSubject}},computed:ie(ie(ie({},(oe=["showingTall","expandingSubject","showingLongSubject"],oe.reduce((function(e,t){var n=se(t),r="controlledToggle".concat(n),i="controlled".concat(n),o="uncontrolled".concat(n);return e[t]=function(){return void 0===this.$data[r]&&void 0===this.$props[r]||!this[r]?this[o]:this[i]},e}),{}))),{},{hideAttachments:function(){return this.mergedConfig.hideAttachments&&!this.inConversation||this.mergedConfig.hideAttachmentsInConv&&this.inConversation},nsfwClickthrough:function(){return!!this.status.nsfw&&(!this.status.summary||!this.localCollapseSubjectDefault)},attachmentSize:function(){return this.compact?"small":this.mergedConfig.hideAttachments&&!this.inConversation||this.mergedConfig.hideAttachmentsInConv&&this.inConversation||this.status.attachments.length>this.maxThumbnails?"hide":"normal"},maxThumbnails:function(){return this.mergedConfig.maxThumbnails}},Object(N.c)(["mergedConfig"])),Object(N.e)({currentUser:function(e){return e.users.currentUser}})),components:{Attachment:l.a,Poll:D,Gallery:T.a,LinkPreview:ne.a,StatusBody:te},methods:{toggleShowingTall:function(){ae(this,"showingTall")},toggleExpandingSubject:function(){ae(this,"expandingSubject")},toggleShowingLongSubject:function(){ae(this,"showingLongSubject")},setMedia:function(){var e=this,t="hide"===this.attachmentSize?this.status.attachments:this.galleryAttachments;return function(){return e.$store.dispatch("setMedia",t)}}}};n(523);const le=x()(ce,[["render",function(e,t,n,a,c,l){const u=Object(r.J)("Poll"),d=Object(r.J)("FAIcon"),p=Object(r.J)("gallery"),h=Object(r.J)("link-preview"),b=Object(r.J)("StatusBody");return Object(r.D)(),Object(r.j)("div",{class:Object(r.w)(["StatusContent",{"-compact":e.compact}])},[Object(r.I)(e.$slots,"header"),Object(r.m)(b,{status:e.status,compact:e.compact,"single-line":e.singleLine,"showing-tall":e.showingTall,"expanding-subject":e.expandingSubject,"showing-long-subject":e.showingLongSubject,"toggle-showing-tall":e.toggleShowingTall,"toggle-expanding-subject":e.toggleExpandingSubject,"toggle-showing-long-subject":e.toggleShowingLongSubject,onParseReady:t[2]||(t[2]=t=>e.$emit("parseReady",t))},{default:Object(r.V)(()=>[e.status.poll&&e.status.poll.options&&!e.compact?(Object(r.D)(),Object(r.j)("div",i,[Object(r.m)(u,{"base-poll":e.status.poll,emoji:e.status.emojis},null,8,["base-poll","emoji"])])):e.status.poll&&e.status.poll.options&&e.compact?(Object(r.D)(),Object(r.j)("div",o,[Object(r.m)(d,{icon:"poll-h",size:"2x"})])):Object(r.i)("",!0),0!==e.status.attachments.length?(Object(r.D)(),Object(r.h)(p,{key:2,class:"attachments media-body",nsfw:e.nsfwClickthrough,attachments:e.status.attachments,limit:e.compact?1:0,size:e.attachmentSize,onPlay:t[0]||(t[0]=t=>e.$emit("mediaplay",e.attachment.id)),onPause:t[1]||(t[1]=t=>e.$emit("mediapause",e.attachment.id))},null,8,["nsfw","attachments","limit","size"])):Object(r.i)("",!0),!e.status.card||e.noHeading||e.compact?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",s,[Object(r.m)(h,{card:e.status.card,size:e.attachmentSize,nsfw:e.nsfwClickthrough},null,8,["card","size","nsfw"])]))]),_:1},8,["status","compact","single-line","showing-tall","expanding-subject","showing-long-subject","toggle-showing-tall","toggle-expanding-subject","toggle-showing-long-subject"]),Object(r.I)(e.$slots,"footer")],2)}]]);t.a=le},,function(e,t,n){"use strict";n.d(t,"c",(function(){return r})),n.d(t,"b",(function(){return i})),n.d(t,"a",(function(){return o})),n.d(t,"d",(function(){return l})),n.d(t,"e",(function(){return u}));var r=6e4,i=60*r,o=24*i,s=7*o,a=30*o,c=365.25*o,l=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;"string"==typeof e&&(e=Date.parse(e));var n=Date.now()>e?Math.floor:Math.ceil,l=Math.abs(Date.now()-e),u={num:n(l/c),key:"time.years"};return l<1e3*t?(u.num=0,u.key="time.now"):l<r?(u.num=n(l/1e3),u.key="time.seconds"):l<i?(u.num=n(l/r),u.key="time.minutes"):l<o?(u.num=n(l/i),u.key="time.hours"):l<s?(u.num=n(l/o),u.key="time.days"):l<a?(u.num=n(l/s),u.key="time.weeks"):l<c&&(u.num=n(l/a),u.key="time.months"),1===u.num&&(u.key=u.key.slice(0,-1)),u},u=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=l(e,t);return n.key+="_short",n}},,,function(e,t,n){"use strict";var r=n(0);const i={key:0,ref:"canvas"},o=["alt","title","src","referrerpolicy"];var s={props:["src","referrerpolicy","mimetype","imageLoadError","imageLoadHandler","alt","height","width"],data:function(){return{stopGifs:this.$store.getters.mergedConfig.stopGifs}},computed:{animated:function(){return this.stopGifs&&("image/gif"===this.mimetype||this.src.endsWith(".gif"))},style:function(){var e=function(e){return/\d$/.test(e)?e+"px":e};return{height:this.height?e(this.height):null,width:this.width?e(this.width):null}}},methods:{onLoad:function(){var e=this.$refs.src;if(e){this.imageLoadHandler&&this.imageLoadHandler(e);var t=this.$refs.canvas;if(t){var n=e.naturalWidth,r=e.naturalHeight;t.width=n,t.height=r,t.getContext("2d").drawImage(e,0,0,n,r)}}},onError:function(){this.imageLoadError&&this.imageLoadError()}}},a=(n(507),n(4));const c=n.n(a)()(s,[["render",function(e,t,n,s,a,c){return Object(r.D)(),Object(r.j)("div",{class:Object(r.w)(["still-image",{animated:e.animated}]),style:Object(r.x)(e.style)},[e.animated?(Object(r.D)(),Object(r.j)("canvas",i,null,512)):Object(r.i)("",!0),(Object(r.D)(),Object(r.j)("img",{ref:"src",key:e.src,alt:e.alt,title:e.alt,src:e.src,referrerpolicy:e.referrerpolicy,onLoad:t[0]||(t[0]=(...t)=>e.onLoad&&e.onLoad(...t)),onError:t[1]||(t[1]=(...t)=>e.onError&&e.onError(...t))},null,40,o)),Object(r.I)(e.$slots,"default")],6)}]]);t.a=c},function(e,t,n){"use strict";var r=n(0);const i=["disabled","checked","indeterminate"],o=Object(r.k)("i",{class:"checkbox-indicator"},null,-1),s={key:0,class:"label"};var a={emits:["update:modelValue"],props:["modelValue","indeterminate","disabled"]},c=(n(502),n(4));const l=n.n(c)()(a,[["render",function(e,t,n,a,c,l){return Object(r.D)(),Object(r.j)("label",{class:Object(r.w)(["checkbox",{disabled:n.disabled,indeterminate:n.indeterminate}])},[Object(r.k)("input",{type:"checkbox",disabled:n.disabled,checked:n.modelValue,indeterminate:n.indeterminate,onChange:t[0]||(t[0]=t=>e.$emit("update:modelValue",t.target.checked))},null,40,i),o,e.$slots.default?(Object(r.D)(),Object(r.j)("span",s,[Object(r.I)(e.$slots,"default")])):Object(r.i)("",!0)],2)}]]);t.a=l},function(e,t,n){"use strict";var r=n(0);const i=["disabled","value"],o=Object(r.l)(" "+Object(r.O)(" ")+" ");var s=n(6),a=n(3);s.c.add(a.n);var c={emits:["update:modelValue"],props:["modelValue","disabled","unstyled","kind"]},l=(n(505),n(4));const u=n.n(l)()(c,[["render",function(e,t,n,s,a,c){const l=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("label",{class:Object(r.w)(["Select input",{disabled:e.disabled,unstyled:e.unstyled}])},[Object(r.k)("select",{disabled:e.disabled,value:e.modelValue,onChange:t[0]||(t[0]=t=>e.$emit("update:modelValue",t.target.value))},[Object(r.I)(e.$slots,"default")],40,i),o,Object(r.m)(l,{class:"select-down-icon",icon:"chevron-down"})],2)}]]);t.a=u},function(e,t,n){"use strict";var r=n(0);const i={class:"basic-user-card"},o={key:0,class:"basic-user-card-expanded-content"},s={key:1,class:"basic-user-card-collapsed-content"},a=["title"];var c=n(35),l=n(22),u=n(25),d=n(23),p={props:["user"],data:function(){return{userExpanded:!1}},components:{UserCard:c.a,UserAvatar:l.default,RichContent:u.a},methods:{toggleUserExpanded:function(){this.userExpanded=!this.userExpanded},userProfileLink:function(e){return Object(d.a)(e.id,e.screen_name,this.$store.state.instance.restrictedNicknames)}}},h=(n(577),n(4));const b=n.n(h)()(p,[["render",function(e,t,n,c,l,u){const d=Object(r.J)("UserAvatar"),p=Object(r.J)("router-link"),h=Object(r.J)("UserCard"),b=Object(r.J)("RichContent");return Object(r.D)(),Object(r.j)("div",i,[Object(r.m)(p,{to:e.userProfileLink(e.user)},{default:Object(r.V)(()=>[Object(r.m)(d,{class:"avatar",user:e.user,onClick:Object(r.Y)(e.toggleUserExpanded,["prevent"])},null,8,["user","onClick"])]),_:1},8,["to"]),e.userExpanded?(Object(r.D)(),Object(r.j)("div",o,[Object(r.m)(h,{"user-id":e.user.id,rounded:!0,bordered:!0},null,8,["user-id"])])):(Object(r.D)(),Object(r.j)("div",s,[Object(r.k)("div",{title:e.user.name,class:"basic-user-card-user-name"},[Object(r.m)(b,{class:"basic-user-card-user-name-value",html:e.user.name,emoji:e.user.emoji},null,8,["html","emoji"])],8,a),Object(r.k)("div",null,[Object(r.m)(p,{class:"basic-user-card-screen-name",to:e.userProfileLink(e.user)},{default:Object(r.V)(()=>[Object(r.l)(" @"+Object(r.O)(e.user.screen_name_ui),1)]),_:1},8,["to"])]),Object(r.I)(e.$slots,"default")]))])}]]);t.a=b},function(e,t,n){"use strict";n.d(t,"a",(function(){return f})),n.d(t,"e",(function(){return j})),n.d(t,"f",(function(){return y})),n.d(t,"b",(function(){return _})),n.d(t,"c",(function(){return S})),n.d(t,"d",(function(){return C}));var r=n(5),i=n.n(r),o=n(11),s=n.n(o),a=n(28),c=n.n(a),l=n(12),u=n.n(l),d=n(20),p=n(18),h=n(36);function b(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function m(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?b(Object(n),!0).forEach((function(t){i()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):b(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var f=3,O=function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:h.b,n=[e],r=t[e];r;)n.unshift(r),r=t[r];return n},j=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e,n=arguments.length>2?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0,i=arguments.length>4?arguments[4]:void 0;return O(e).map((function(o){return[o===e?r[t]:r[o],o===e?i[n]||1:i[o]]}))},g=function(e,t){var n=t[e];if("string"==typeof n&&n.startsWith("--"))return[n.substring(2)];if(null===n)return[];var r=n.depends,i=n.layer,o=n.variant,s=i?O(i).map((function(e){return e===i?o||i:e})):[];return Array.isArray(r)?[].concat(u()(r),u()(s)):u()(s)},v=function(e){return"object"===c()(e)?e:{depends:e.startsWith("--")?[e.substring(2)]:[],default:e.startsWith("#")?e:void 0}},y=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:h.c,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:g,r=v(t[e]);if(null!==r.opacity){if(r.opacity)return r.opacity;var i=function r(i){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[e],s=n(i,t)[0];if(void 0!==s){var a=t[s];if(void 0!==a)return a.opacity||null===a?a.opacity:a.depends&&o.includes(s)?r(s,[].concat(u()(o),[s])):null}};return r.depends?i(e):void 0}},w=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:h.c,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:g,r=v(t[e]);if(h.b[e])return e;if(null!==r.layer){if(r.layer)return r.layer;var i=function r(i){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[e],s=n(i,t)[0];if(void 0!==s){var a=t[s];if(void 0!==a)return a.layer||null===a?a.layer:a.depends?r(a,[].concat(u()(o),[s])):null}};return r.depends?i(e):void 0}},k=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:h.c,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:g,n=Object.keys(e),r=new Set(n),i=new Set,o=new Set,s=u()(n),a=[],c=function n(s){if(r.has(s))r.delete(s),i.add(s),t(s,e).forEach(n),i.delete(s),o.add(s),a.push(s);else if(i.has(s))console.debug("Cyclic depenency in topoSort, ignoring"),a.push(s);else if(!o.has(s))throw new Error("Unintended condition in topoSort!")};s.length>0;)c(s.pop());return a.map((function(e,t){return{data:e,index:t}})).sort((function(n,r){var i=n.data,o=n.index,s=r.data,a=r.index,c=t(i,e).length,l=t(s,e).length;return c===l||0!==l&&0!==c?o-a:0===c&&0!==l?-1:0===l&&0!==c?1:void 0})).map((function(e){return e.data}))}(Object.entries(h.c).sort((function(e,t){var n=s()(e,2),r=(n[0],n[1]),i=s()(t,2),o=(i[0],i[1]);return(r&&r.priority||0)-(o&&o.priority||0)})).reduce((function(e,t){var n=s()(t,2),r=n[0],o=n[1];return m(m({},e),{},i()({},r,o))}),{})),_=Object.entries(h.c).reduce((function(e,t){var n=s()(t,2),r=n[0],o=(n[1],y(r,h.c,g));return o?m(m({},e),{},i()({},o,{defaultValue:h.a[o]||1,affectedSlots:[].concat(u()(e[o]&&e[o].affectedSlots||[]),[r])})):e}),{}),S=function(e,t,n){if("string"!=typeof e||!e.startsWith("--"))return e;var r=null,i=e.split(/,/g).map((function(e){return e.trim()})),o=s()(i,2),a=o[0],c=o[1];return r=t(a.substring(2)),c&&(r=Object(d.brightness)(Number.parseFloat(c)*n,r).rgb),r},C=function(e,t){return k.reduce((function(n,r){var o=n.colors,s=n.opacity,a=e[r],c=v(h.c[r]),l=g(r,h.c),b=!!c.textColor,f=c.variant||c.layer,O=null;O=b?Object(p.b)(m({},o[l[0]]||Object(d.convert)(e[r]||"#FF00FF").rgb),j(w(r)||"bg",f||"bg",y(f),o,s)):f&&f!==r?o[f]||Object(d.convert)(e[f]).rgb:o.bg||Object(d.convert)(e.bg);var k=Object(p.h)(O)<.5?1:-1,C=null;if(a){var P=a;if("transparent"===P){var x=j(w(r),r,y(r)||r,o,s).slice(0,-1);P=m(m({},Object(p.b)(Object(d.convert)("#FF00FF").rgb,x)),{},{a:0})}else"string"==typeof a&&a.startsWith("--")?P=S(a,(function(t){return o[t]||e[t]}),k):"string"==typeof a&&a.startsWith("#")&&(P=Object(d.convert)(P).rgb);C=m({},P)}else if(c.default)C=Object(d.convert)(c.default).rgb;else{var D=c.color||function(e,t){return m({},t)};if(c.textColor)if("bw"===c.textColor)C=Object(d.contrastRatio)(O).rgb;else{var T=m({},o[l[0]]);c.color&&(T=D.apply(void 0,[k].concat(u()(l.map((function(e){return m({},o[e])})))))),C=Object(p.e)(O,m({},T),"preserve"===c.textColor)}else C=D.apply(void 0,[k].concat(u()(l.map((function(e){return m({},o[e])})))))}if(!C)throw new Error("Couldn't generate color for "+r);var I=c.opacity||y(r),$=c.opacity;if(null===$)C.a=1;else if("transparent"===a)C.a=0;else{var z=$&&void 0!==t[I],M=l[0],U=M&&o[M];$||!U||c.textColor||null===$?U||I?U&&0===U.a?C.a=0:C.a=Number(z?t[I]:(_[I]||{}).defaultValue):delete C.a:C.a=U.a}return(Number.isNaN(C.a)||void 0===C.a)&&(C.a=1),I?{colors:m(m({},o),{},i()({},r,C)),opacity:m(m({},s),{},i()({},I,C.a))}:{colors:m(m({},o),{},i()({},r,C)),opacity:s}}),{colors:{},opacity:{}})}},,,function(e,t,n){"use strict";var r=n(0);const i={ref:"form",class:"post-status-form"},o={class:"form-group"},s={key:1,class:"visibility-notice notice-dismissible"},a={key:2,class:"visibility-notice notice-dismissible"},c={key:3,class:"visibility-notice notice-dismissible"},l={key:4,class:"visibility-notice"},u={key:0},d={key:1},p={key:5,class:"preview-heading faint"},h={class:"preview-spinner"},b={key:6,class:"preview-container"},m={key:0,class:"preview-status"},f={key:1,class:"preview-status preview-error"},O=["placeholder","disabled"],j=["placeholder","disabled"],g={key:8,class:"visibility-tray"},v={key:0,class:"text-format"},y=["value"],w={key:1,class:"text-format"},k={class:"only-format"},_={ref:"bottom",class:"form-bottom"},S={class:"form-bottom-left"},C=["title"],P=["title"],x={key:0,disabled:"",class:"btn button-default"},D={key:1,disabled:"",class:"btn button-default"},T=["disabled"],I={key:1,class:"alert error"},$={key:3,class:"upload_settings"};var z=n(13),M=n.n(z),U=n(5),F=n.n(U),E=n(12),L=n.n(E),R=n(56),A=n.n(R),N=n(136),B=n.n(N),V=n(21),H=n.n(V),q=n(224),J=n.n(q),W=n(10),Y=n.n(W),G=n(76);const K=["title"],X=["disabled"];var Z=n(96),Q=n(6),ee=n(3);function te(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return ne(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return ne(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function ne(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}Q.c.add(ee.tb,ee.r);var re={data:function(){return{uploadCount:0,uploadReady:!0}},computed:{uploading:function(){return this.uploadCount>0}},methods:{uploadFile:function(e){var t=this,n=this.$store;if(e.size>n.state.instance.uploadlimit){var r=Z.a.fileSizeFormat(e.size),i=Z.a.fileSizeFormat(n.state.instance.uploadlimit);t.$emit("upload-failed","file_too_big",{filesize:r.num,filesizeunit:r.unit,allowedsize:i.num,allowedsizeunit:i.unit})}else{var o=new FormData;o.append("file",e),t.$emit("uploading"),t.uploadCount++,G.a.uploadMedia({store:n,formData:o}).then((function(e){t.$emit("uploaded",e),t.decreaseUploadCount()}),(function(e){t.$emit("upload-failed","default"),t.decreaseUploadCount()}))}},decreaseUploadCount:function(){this.uploadCount--,0===this.uploadCount&&this.$emit("all-uploaded")},clearFile:function(){var e=this;this.uploadReady=!1,this.$nextTick((function(){e.uploadReady=!0}))},multiUpload:function(e){var t,n=te(e);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.uploadFile(r)}}catch(e){n.e(e)}finally{n.f()}},change:function(e){var t=e.target;this.multiUpload(t.files)}},props:["dropFiles","disabled"],watch:{dropFiles:function(e){this.uploading||this.multiUpload(e)}}},ie=(n(500),n(4)),oe=n.n(ie);var se=oe()(re,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("label",{class:Object(r.w)(["media-upload",{disabled:e.disabled}]),title:e.$t("tool_tip.media_upload")},[e.uploading?(Object(r.D)(),Object(r.h)(a,{key:0,class:"progress-icon",icon:"circle-notch",spin:""})):Object(r.i)("",!0),e.uploading?Object(r.i)("",!0):(Object(r.D)(),Object(r.h)(a,{key:1,class:"new-icon",icon:"upload"})),e.uploadReady?(Object(r.D)(),Object(r.j)("input",{key:2,class:"hidden-input-file",disabled:e.disabled,type:"file",multiple:"true",onChange:t[0]||(t[0]=(...t)=>e.change&&e.change(...t))},null,40,X)):Object(r.i)("",!0)],10,K)}]]),ae=n(175),ce=n(310);const le={key:0,class:"poll-form"},ue={class:"input-container"},de=["id","onUpdate:modelValue","placeholder","maxlength","onKeydown"],pe=["onClick"],he={class:"poll-type-expiry"},be=["title"],me={value:"single"},fe={value:"multiple"},Oe=["title"],je=["min","max"],ge=Object(r.l)(" "+Object(r.O)(" ")+" "),ve=["value"];var ye=n(98),we=n.n(ye),ke=n(47),_e=n(52);Q.c.add(ee.rb,ee.V);var Se={components:{Select:_e.a},name:"PollForm",props:["visible"],data:function(){return{pollType:"single",options:["",""],expiryAmount:10,expiryUnit:"minutes"}},computed:{pollLimits:function(){return this.$store.state.instance.pollLimits},maxOptions:function(){return this.pollLimits.max_options},maxLength:function(){return this.pollLimits.max_option_chars},expiryUnits:function(){var e=this,t=this.convertExpiryFromUnit;return["minutes","hours","days"].filter((function(n){return e.pollLimits.max_expiration>=t(n,1)}))},minExpirationInCurrentUnit:function(){return Math.ceil(this.convertExpiryToUnit(this.expiryUnit,this.pollLimits.min_expiration))},maxExpirationInCurrentUnit:function(){return Math.floor(this.convertExpiryToUnit(this.expiryUnit,this.pollLimits.max_expiration))}},methods:{clear:function(){this.pollType="single",this.options=["",""],this.expiryAmount=10,this.expiryUnit="minutes"},nextOption:function(e){var t=this.$el.querySelector("#poll-".concat(e+1));t?t.focus():this.addOption()&&this.$nextTick((function(){this.nextOption(e)}))},addOption:function(){return this.options.length<this.maxOptions&&(this.options.push(""),!0)},deleteOption:function(e,t){this.options.length>2&&(this.options.splice(e,1),this.updatePollToParent())},convertExpiryToUnit:function(e,t){switch(e){case"minutes":return 1e3*t/ke.c;case"hours":return 1e3*t/ke.b;case"days":return 1e3*t/ke.a}},convertExpiryFromUnit:function(e,t){switch(e){case"minutes":return.001*t*ke.c;case"hours":return.001*t*ke.b;case"days":return.001*t*ke.a}},expiryAmountChange:function(){this.expiryAmount=Math.max(this.minExpirationInCurrentUnit,this.expiryAmount),this.expiryAmount=Math.min(this.maxExpirationInCurrentUnit,this.expiryAmount),this.updatePollToParent()},updatePollToParent:function(){var e=this.convertExpiryFromUnit(this.expiryUnit,this.expiryAmount),t=we()(this.options.filter((function(e){return""!==e})));t.length<2?this.$emit("update-poll",{error:this.$t("polls.not_enough_options")}):this.$emit("update-poll",{options:t,multiple:"multiple"===this.pollType,expiresIn:e})}}};n(506);var Ce=oe()(Se,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon"),c=Object(r.J)("Select");return e.visible?(Object(r.D)(),Object(r.j)("div",le,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.options,(n,i)=>(Object(r.D)(),Object(r.j)("div",{key:i,class:"poll-option"},[Object(r.k)("div",ue,[Object(r.W)(Object(r.k)("input",{id:"poll-"+i,"onUpdate:modelValue":t=>e.options[i]=t,size:"1",class:"poll-option-input",type:"text",placeholder:e.$t("polls.option"),maxlength:e.maxLength,onChange:t[0]||(t[0]=(...t)=>e.updatePollToParent&&e.updatePollToParent(...t)),onKeydown:Object(r.X)(Object(r.Y)(t=>e.nextOption(i),["stop","prevent"]),["enter"])},null,40,de),[[r.S,e.options[i]]])]),e.options.length>2?(Object(r.D)(),Object(r.j)("button",{key:0,class:"delete-option button-unstyled -hover-highlight",onClick:t=>e.deleteOption(i)},[Object(r.m)(a,{icon:"times"})],8,pe)):Object(r.i)("",!0)]))),128)),e.options.length<e.maxOptions?(Object(r.D)(),Object(r.j)("button",{key:0,class:"add-option faint button-unstyled -hover-highlight",onClick:t[1]||(t[1]=(...t)=>e.addOption&&e.addOption(...t))},[Object(r.m)(a,{icon:"plus",size:"sm"}),Object(r.l)(" "+Object(r.O)(e.$t("polls.add_option")),1)])):Object(r.i)("",!0),Object(r.k)("div",he,[Object(r.k)("div",{class:"poll-type",title:e.$t("polls.type")},[Object(r.m)(c,{modelValue:e.pollType,"onUpdate:modelValue":t[2]||(t[2]=t=>e.pollType=t),class:"poll-type-select",unstyled:"true",onChange:e.updatePollToParent},{default:Object(r.V)(()=>[Object(r.k)("option",me,Object(r.O)(e.$t("polls.single_choice")),1),Object(r.k)("option",fe,Object(r.O)(e.$t("polls.multiple_choices")),1)]),_:1},8,["modelValue","onChange"])],8,be),Object(r.k)("div",{class:"poll-expiry",title:e.$t("polls.expiry")},[Object(r.W)(Object(r.k)("input",{"onUpdate:modelValue":t[3]||(t[3]=t=>e.expiryAmount=t),type:"number",class:"expiry-amount hide-number-spinner",min:e.minExpirationInCurrentUnit,max:e.maxExpirationInCurrentUnit,onChange:t[4]||(t[4]=(...t)=>e.expiryAmountChange&&e.expiryAmountChange(...t))},null,40,je),[[r.S,e.expiryAmount]]),ge,Object(r.m)(c,{modelValue:e.expiryUnit,"onUpdate:modelValue":t[5]||(t[5]=t=>e.expiryUnit=t),unstyled:"true",class:"expiry-unit",onChange:e.expiryAmountChange},{default:Object(r.V)(()=>[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.expiryUnits,t=>(Object(r.D)(),Object(r.j)("option",{key:t,value:t},Object(r.O)(e.$t(`time.${t}_short`,[""])),9,ve))),128))]),_:1},8,["modelValue","onChange"])],8,Oe)])])):Object(r.i)("",!0)}]]),Pe=n(58),xe=n(78),De=n(45),Te=n(33),Ie=n(137),$e=n(167),ze=n(8),Me=n(51);function Ue(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Fe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ue(Object(n),!0).forEach((function(t){F()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ue(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Q.c.add(ee.ib,ee.X,ee.tb,ee.g,ee.rb,ee.r);var Ee=function(e){return Number(e.substring(0,e.length-2))},Le={props:["replyTo","repliedUser","attentions","copyMessageScope","subject","disableSubject","disableScopeSelector","disableNotice","disableLockWarning","disablePolls","disableSensitivityCheckbox","disableSubmit","disablePreview","placeholder","maxHeight","postHandler","preserveFocus","autoFocus","fileLimit","submitOnEnter","emojiPickerPlacement","optimisticPosting"],emits:["posted","resize","mediaplay","mediapause"],components:{MediaUpload:se,EmojiInput:ce.a,PollForm:Ce,ScopeSelector:ae.a,Checkbox:Me.a,Select:_e.a,Attachment:Pe.a,StatusContent:De.a,Gallery:xe.a},mounted:function(){if(this.updateIdempotencyKey(),this.resize(this.$refs.textarea),this.replyTo){var e=this.$refs.textarea.value.length;this.$refs.textarea.setSelectionRange(e,e)}(this.replyTo||this.autoFocus)&&this.$refs.textarea.focus()},data:function(){var e=this.$route.query.message||"",t=this.$store.getters.mergedConfig.scopeCopy;if(this.replyTo){var n=this.$store.state.users.currentUser;e=function(e,t){var n=e.user,r=e.attentions,i=void 0===r?[]:r,o=L()(i);o.unshift(n),o=B()(o,"id"),o=J()(o,{id:t.id});var s=H()(o,(function(e){return"@".concat(e.screen_name)}));return s.length>0?s.join(" ")+" ":""}({user:this.repliedUser,attentions:this.attentions},n)}var r=this.copyMessageScope&&t||"direct"===this.copyMessageScope?this.copyMessageScope:this.$store.state.users.currentUser.default_scope,i=this.$store.getters.mergedConfig,o=i.postContentType,s=i.sensitiveByDefault,a=i.sensitiveIfSubject;return{dropFiles:[],uploadingFiles:!1,error:null,posting:!1,highlighted:0,newStatus:{spoilerText:this.subject||"",status:e,sensitiveIfSubject:a,nsfw:!!s,files:[],poll:{},mediaDescriptions:{},visibility:r,contentType:o},caret:0,pollFormVisible:!1,showDropIcon:"hide",dropStopTimeout:null,preview:null,previewLoading:!1,emojiInputShown:!1,idempotencyKey:""}},computed:Fe(Fe({users:function(){return this.$store.state.users.users},userDefaultScope:function(){return this.$store.state.users.currentUser.default_scope},showAllScopes:function(){return!this.mergedConfig.minimalScopesMode},emojiUserSuggestor:function(){return Object($e.a)({emoji:[].concat(L()(this.$store.state.instance.emoji),L()(this.$store.state.instance.customEmoji)),store:this.$store})},emojiSuggestor:function(){return Object($e.a)({emoji:[].concat(L()(this.$store.state.instance.emoji),L()(this.$store.state.instance.customEmoji))})},emoji:function(){return this.$store.state.instance.emoji||[]},customEmoji:function(){return this.$store.state.instance.customEmoji||[]},statusLength:function(){return this.newStatus.status.length},spoilerTextLength:function(){return this.newStatus.spoilerText.length},statusLengthLimit:function(){return this.$store.state.instance.textlimit},hasStatusLengthLimit:function(){return this.statusLengthLimit>0},charactersLeft:function(){return this.statusLengthLimit-(this.statusLength+this.spoilerTextLength)},isOverLengthLimit:function(){return this.hasStatusLengthLimit&&this.charactersLeft<0},minimalScopesMode:function(){return this.$store.state.instance.minimalScopesMode},alwaysShowSubject:function(){return this.mergedConfig.alwaysShowSubjectInput},postFormats:function(){return this.$store.state.instance.postFormats||[]},safeDMEnabled:function(){return this.$store.state.instance.safeDM},pollsAvailable:function(){return this.$store.state.instance.pollsAvailable&&this.$store.state.instance.pollLimits.max_options>=2&&!0!==this.disablePolls},hideScopeNotice:function(){return this.disableNotice||this.$store.getters.mergedConfig.hideScopeNotice},pollContentError:function(){return this.pollFormVisible&&this.newStatus.poll&&this.newStatus.poll.error},showPreview:function(){return!this.disablePreview&&(!!this.preview||this.previewLoading)},emptyStatus:function(){return""===this.newStatus.status.trim()&&0===this.newStatus.files.length},uploadFileLimitReached:function(){return this.newStatus.files.length>=this.fileLimit}},Object(ze.c)(["mergedConfig"])),Object(ze.e)({mobileLayout:function(e){return e.interface.mobileLayout}})),watch:{newStatus:{deep:!0,handler:function(){this.statusChanged()}}},methods:{statusChanged:function(){this.autoPreview(),this.updateIdempotencyKey()},clearStatus:function(){var e=this,t=this.newStatus;this.newStatus={status:"",spoilerText:"",files:[],visibility:t.visibility,contentType:t.contentType,poll:{},mediaDescriptions:{}},this.pollFormVisible=!1,this.$refs.mediaUpload&&this.$refs.mediaUpload.clearFile(),this.clearPollForm(),this.preserveFocus&&this.$nextTick((function(){e.$refs.textarea.focus()}));var n=this.$el.querySelector("textarea");n.style.height="auto",n.style.height=void 0,this.error=null,this.preview&&this.previewStatus()},postStatus:function(e,t){var n=arguments,r=this;return M()(Y.a.mark((function i(){var o,s,a;return Y.a.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(n.length>2&&void 0!==n[2]?n[2]:{},o=r.$store.getters.mergedConfig.sensitiveIfSubject,!r.posting||r.optimisticPosting){i.next=4;break}return i.abrupt("return");case 4:if(!r.disableSubmit){i.next=6;break}return i.abrupt("return");case 6:if(!r.emojiInputShown){i.next=8;break}return i.abrupt("return");case 8:if(r.submitOnEnter&&(e.stopPropagation(),e.preventDefault()),!r.optimisticPosting||!r.emptyStatus&&!r.isOverLengthLimit){i.next=11;break}return i.abrupt("return");case 11:if(!r.emptyStatus){i.next=14;break}return r.error=r.$t("post_status.empty_status_error"),i.abrupt("return");case 14:if(s=r.pollFormVisible?r.newStatus.poll:{},!r.pollContentError){i.next=18;break}return r.error=r.pollContentError,i.abrupt("return");case 18:return r.posting=!0,i.prev=19,i.next=22,r.setAllMediaDescriptions();case 22:i.next=29;break;case 24:return i.prev=24,i.t0=i.catch(19),r.error=r.$t("post_status.media_description_error"),r.posting=!1,i.abrupt("return");case 29:a={status:t.status,spoilerText:t.spoilerText||null,visibility:t.visibility,sensitive:t.nsfw||o&&t.spoilerText,media:t.files,store:r.$store,inReplyToStatusId:r.replyTo,contentType:t.contentType,poll:s,idempotencyKey:r.idempotencyKey},(r.postHandler?r.postHandler:G.a.postStatus)(a).then((function(e){e.error?r.error=e.error:(r.clearStatus(),r.$emit("posted",e)),r.posting=!1}));case 32:case"end":return i.stop()}}),i,null,[[19,24]])})))()},previewStatus:function(){var e=this;if(this.emptyStatus&&""===this.newStatus.spoilerText.trim())return this.preview={error:this.$t("post_status.preview_empty")},void(this.previewLoading=!1);var t=this.newStatus;this.previewLoading=!0,G.a.postStatus({status:t.status,spoilerText:t.spoilerText||null,visibility:t.visibility,sensitive:t.nsfw,media:[],store:this.$store,inReplyToStatusId:this.replyTo,contentType:t.contentType,poll:{},preview:!0}).then((function(t){e.previewLoading&&(t.error?e.preview={error:t.error}:e.preview=t)})).catch((function(t){e.preview={error:t}})).finally((function(){e.previewLoading=!1}))},debouncePreviewStatus:A()((function(){this.previewStatus()}),500),autoPreview:function(){this.preview&&(this.previewLoading=!0,this.debouncePreviewStatus())},closePreview:function(){this.preview=null,this.previewLoading=!1},togglePreview:function(){this.showPreview?this.closePreview():this.previewStatus()},addMediaFile:function(e){this.newStatus.files.push(e),this.$emit("resize",{delayed:!0})},removeMediaFile:function(e){var t=this.newStatus.files.indexOf(e);this.newStatus.files.splice(t,1),this.$emit("resize")},editAttachment:function(e,t){this.newStatus.mediaDescriptions[e.id]=t},shiftUpMediaFile:function(e){var t=this.newStatus.files,n=this.newStatus.files.indexOf(e);t.splice(n,1),t.splice(n-1,0,e)},shiftDnMediaFile:function(e){var t=this.newStatus.files,n=this.newStatus.files.indexOf(e);t.splice(n,1),t.splice(n+1,0,e)},uploadFailed:function(e,t){t=t||{},this.error=this.$t("upload.error.base")+" "+this.$t("upload.error."+e,t)},startedUploadingFiles:function(){this.uploadingFiles=!0},finishedUploadingFiles:function(){this.$emit("resize"),this.uploadingFiles=!1},type:function(e){return Te.a.fileType(e.mimetype)},paste:function(e){this.autoPreview(),this.resize(e),e.clipboardData.files.length>0&&(e.preventDefault(),this.dropFiles=[e.clipboardData.files[0]])},fileDrop:function(e){e.dataTransfer&&e.dataTransfer.types.includes("Files")&&(e.preventDefault(),this.dropFiles=e.dataTransfer.files,clearTimeout(this.dropStopTimeout),this.showDropIcon="hide")},fileDragStop:function(e){var t=this;clearTimeout(this.dropStopTimeout),this.showDropIcon="fade",this.dropStopTimeout=setTimeout((function(){return t.showDropIcon="hide"}),500)},fileDrag:function(e){e.dataTransfer.dropEffect=this.uploadFileLimitReached?"none":"copy",e.dataTransfer&&e.dataTransfer.types.includes("Files")&&(clearTimeout(this.dropStopTimeout),this.showDropIcon="show")},onEmojiInputInput:function(e){var t=this;this.$nextTick((function(){t.resize(t.$refs.textarea)}))},resize:function(e){var t=e.target||e;if(t instanceof window.Element){if(""===t.value)return t.style.height=null,this.$emit("resize"),void this.$refs["emoji-input"].resize();var n=this.$refs.form,r=this.$refs.bottom,i=window.getComputedStyle(r)["padding-bottom"],o=Ee(i),s=this.$el.closest(".column.-scrollable")||this.$el.closest(".post-form-modal-view")||window,a=window.getComputedStyle(t)["padding-top"],c=window.getComputedStyle(t)["padding-bottom"],l=Ee(a)+Ee(c),u=Ee(t.style.height),d=s===window?s.scrollY:s.scrollTop,p=s===window?s.innerHeight:s.offsetHeight,h=d+p;t.style.height="auto";var b=Math.floor(t.scrollHeight-l),m=this.maxHeight?Math.min(b,this.maxHeight):b;Math.abs(m-u)<=1&&(m=u),t.style.height="".concat(m,"px"),this.$emit("resize",m);var f=r.offsetHeight+Object(Ie.a)(r,s).top+o,O=h<f,j=p<n.offsetHeight,g=f-h,v=O&&!(j&&this.$refs.textarea.selectionStart!==this.$refs.textarea.value.length)?g:0,y=Math.round(d+v);s===window?s.scroll(0,y):s.scrollTop=y,this.$refs["emoji-input"].resize()}},showEmojiPicker:function(){this.$refs.textarea.focus(),this.$refs["emoji-input"].triggerShowPicker()},clearError:function(){this.error=null},changeVis:function(e){this.newStatus.visibility=e},togglePollForm:function(){this.pollFormVisible=!this.pollFormVisible},setPoll:function(e){this.newStatus.poll=e},clearPollForm:function(){this.$refs.pollForm&&this.$refs.pollForm.clear()},dismissScopeNotice:function(){this.$store.dispatch("setOption",{name:"hideScopeNotice",value:!0})},setMediaDescription:function(e){var t=this.newStatus.mediaDescriptions[e];if(t&&""!==t.trim())return G.a.setMediaDescription({store:this.$store,id:e,description:t})},setAllMediaDescriptions:function(){var e=this,t=this.newStatus.files.map((function(e){return e.id}));return Promise.all(t.map((function(t){return e.setMediaDescription(t)})))},handleEmojiInputShow:function(e){this.emojiInputShown=e},updateIdempotencyKey:function(){this.idempotencyKey=Date.now().toString()},openProfileTab:function(){this.$store.dispatch("openSettingsModalTab","profile")}}};n(524);const Re=oe()(Le,[["render",function(e,t,n,z,M,U){const F=Object(r.J)("i18n-t"),E=Object(r.J)("FAIcon"),L=Object(r.J)("StatusContent"),R=Object(r.J)("EmojiInput"),A=Object(r.J)("scope-selector"),N=Object(r.J)("Select"),B=Object(r.J)("poll-form"),V=Object(r.J)("media-upload"),H=Object(r.J)("gallery"),q=Object(r.J)("Checkbox");return Object(r.D)(),Object(r.j)("div",i,[Object(r.k)("form",{autocomplete:"off",onSubmit:t[26]||(t[26]=Object(r.Y)(()=>{},["prevent"])),onDragover:t[27]||(t[27]=Object(r.Y)((...t)=>e.fileDrag&&e.fileDrag(...t),["prevent"]))},[Object(r.k)("div",o,[e.$store.state.users.currentUser.locked||"private"!=e.newStatus.visibility||e.disableLockWarning?Object(r.i)("",!0):(Object(r.D)(),Object(r.h)(F,{key:0,keypath:"post_status.account_not_locked_warning",tag:"p",class:"visibility-notice",scope:"global"},{default:Object(r.V)(()=>[Object(r.k)("button",{class:"button-unstyled -link",onClick:t[0]||(t[0]=(...t)=>e.openProfileTab&&e.openProfileTab(...t))},Object(r.O)(e.$t("post_status.account_not_locked_warning_link")),1)]),_:1})),e.hideScopeNotice||"public"!==e.newStatus.visibility?e.hideScopeNotice||"unlisted"!==e.newStatus.visibility?!e.hideScopeNotice&&"private"===e.newStatus.visibility&&e.$store.state.users.currentUser.locked?(Object(r.D)(),Object(r.j)("p",c,[Object(r.k)("span",null,Object(r.O)(e.$t("post_status.scope_notice.private")),1),Object(r.k)("a",{class:"fa-scale-110 fa-old-padding dismiss",onClick:t[3]||(t[3]=Object(r.Y)(t=>e.dismissScopeNotice(),["prevent"]))},[Object(r.m)(E,{icon:"times"})])])):"direct"===e.newStatus.visibility?(Object(r.D)(),Object(r.j)("p",l,[e.safeDMEnabled?(Object(r.D)(),Object(r.j)("span",u,Object(r.O)(e.$t("post_status.direct_warning_to_first_only")),1)):(Object(r.D)(),Object(r.j)("span",d,Object(r.O)(e.$t("post_status.direct_warning_to_all")),1))])):Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("p",a,[Object(r.k)("span",null,Object(r.O)(e.$t("post_status.scope_notice.unlisted")),1),Object(r.k)("a",{class:"fa-scale-110 fa-old-padding dismiss",onClick:t[2]||(t[2]=Object(r.Y)(t=>e.dismissScopeNotice(),["prevent"]))},[Object(r.m)(E,{icon:"times"})])])):(Object(r.D)(),Object(r.j)("p",s,[Object(r.k)("span",null,Object(r.O)(e.$t("post_status.scope_notice.public")),1),Object(r.k)("a",{class:"fa-scale-110 fa-old-padding dismiss",onClick:t[1]||(t[1]=Object(r.Y)(t=>e.dismissScopeNotice(),["prevent"]))},[Object(r.m)(E,{icon:"times"})])])),e.disablePreview?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",p,[Object(r.k)("a",{class:"preview-toggle faint",onClick:t[4]||(t[4]=Object(r.Y)((...t)=>e.togglePreview&&e.togglePreview(...t),["stop","prevent"]))},[Object(r.l)(Object(r.O)(e.$t("post_status.preview"))+" ",1),Object(r.m)(E,{icon:e.showPreview?"chevron-left":"chevron-right"},null,8,["icon"])]),Object(r.W)(Object(r.k)("div",h,[Object(r.m)(E,{class:"fa-old-padding",spin:"",icon:"circle-notch"})],512),[[r.T,e.previewLoading]])])),e.showPreview?(Object(r.D)(),Object(r.j)("div",b,[e.preview?e.preview.error?(Object(r.D)(),Object(r.j)("div",f,Object(r.O)(e.preview.error),1)):(Object(r.D)(),Object(r.h)(L,{key:2,status:e.preview,class:"preview-status"},null,8,["status"])):(Object(r.D)(),Object(r.j)("div",m,Object(r.O)(e.$t("general.loading")),1))])):Object(r.i)("",!0),e.disableSubject||!e.newStatus.spoilerText&&!e.alwaysShowSubject?Object(r.i)("",!0):(Object(r.D)(),Object(r.h)(R,{key:7,modelValue:e.newStatus.spoilerText,"onUpdate:modelValue":t[6]||(t[6]=t=>e.newStatus.spoilerText=t),"enable-emoji-picker":"",suggest:e.emojiSuggestor,class:"form-control"},{default:Object(r.V)(()=>[Object(r.W)(Object(r.k)("input",{"onUpdate:modelValue":t[5]||(t[5]=t=>e.newStatus.spoilerText=t),type:"text",placeholder:e.$t("post_status.content_warning"),disabled:e.posting&&!e.optimisticPosting,size:"1",class:"form-post-subject"},null,8,O),[[r.S,e.newStatus.spoilerText]])]),_:1},8,["modelValue","suggest"])),Object(r.m)(R,{ref:"emoji-input",modelValue:e.newStatus.status,"onUpdate:modelValue":t[14]||(t[14]=t=>e.newStatus.status=t),suggest:e.emojiUserSuggestor,placement:e.emojiPickerPlacement,class:"form-control main-input","enable-emoji-picker":"","hide-emoji-button":"","newline-on-ctrl-enter":e.submitOnEnter,"enable-sticker-picker":"",onInput:e.onEmojiInputInput,onStickerUploaded:e.addMediaFile,onStickerUploadFailed:e.uploadFailed,onShown:e.handleEmojiInputShow},{default:Object(r.V)(()=>[Object(r.W)(Object(r.k)("textarea",{ref:"textarea","onUpdate:modelValue":t[7]||(t[7]=t=>e.newStatus.status=t),placeholder:e.placeholder||e.$t("post_status.default"),rows:"1",cols:"1",disabled:e.posting&&!e.optimisticPosting,class:Object(r.w)(["form-post-body",{"scrollable-form":!!e.maxHeight}]),onKeydown:[t[8]||(t[8]=Object(r.X)(Object(r.Y)(t=>e.submitOnEnter&&e.postStatus(t,e.newStatus),["exact"]),["enter"])),t[9]||(t[9]=Object(r.X)(Object(r.Y)(t=>e.postStatus(t,e.newStatus),["meta"]),["enter"])),t[10]||(t[10]=Object(r.X)(Object(r.Y)(t=>!e.submitOnEnter&&e.postStatus(t,e.newStatus),["ctrl"]),["enter"]))],onInput:t[11]||(t[11]=(...t)=>e.resize&&e.resize(...t)),onCompositionupdate:t[12]||(t[12]=(...t)=>e.resize&&e.resize(...t)),onPaste:t[13]||(t[13]=(...t)=>e.paste&&e.paste(...t))},null,42,j),[[r.S,e.newStatus.status]]),e.hasStatusLengthLimit?(Object(r.D)(),Object(r.j)("p",{key:0,class:Object(r.w)(["character-counter faint",{error:e.isOverLengthLimit}])},Object(r.O)(e.charactersLeft),3)):Object(r.i)("",!0)]),_:1},8,["modelValue","suggest","placement","newline-on-ctrl-enter","onInput","onStickerUploaded","onStickerUploadFailed","onShown"]),e.disableScopeSelector?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",g,[Object(r.m)(A,{"show-all":e.showAllScopes,"user-default":e.userDefaultScope,"original-scope":e.copyMessageScope,"initial-scope":e.newStatus.visibility,"on-scope-change":e.changeVis},null,8,["show-all","user-default","original-scope","initial-scope","on-scope-change"]),e.postFormats.length>1?(Object(r.D)(),Object(r.j)("div",v,[Object(r.m)(N,{id:"post-content-type",modelValue:e.newStatus.contentType,"onUpdate:modelValue":t[15]||(t[15]=t=>e.newStatus.contentType=t),class:"form-control"},{default:Object(r.V)(()=>[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.postFormats,t=>(Object(r.D)(),Object(r.j)("option",{key:t,value:t},Object(r.O)(e.$t(`post_status.content_type["${t}"]`)),9,y))),128))]),_:1},8,["modelValue"])])):Object(r.i)("",!0),1===e.postFormats.length&&"text/plain"!==e.postFormats[0]?(Object(r.D)(),Object(r.j)("div",w,[Object(r.k)("span",k,Object(r.O)(e.$t(`post_status.content_type["${e.postFormats[0]}"]`)),1)])):Object(r.i)("",!0)]))]),e.pollsAvailable?(Object(r.D)(),Object(r.h)(B,{key:0,ref:"pollForm",visible:e.pollFormVisible,onUpdatePoll:e.setPoll},null,8,["visible","onUpdatePoll"])):Object(r.i)("",!0),Object(r.k)("div",_,[Object(r.k)("div",S,[Object(r.m)(V,{ref:"mediaUpload",class:"media-upload-icon","drop-files":e.dropFiles,disabled:e.uploadFileLimitReached,onUploading:e.startedUploadingFiles,onUploaded:e.addMediaFile,onUploadFailed:e.uploadFailed,onAllUploaded:e.finishedUploadingFiles},null,8,["drop-files","disabled","onUploading","onUploaded","onUploadFailed","onAllUploaded"]),Object(r.k)("button",{class:"emoji-icon button-unstyled",title:e.$t("emoji.add_emoji"),onClick:t[16]||(t[16]=(...t)=>e.showEmojiPicker&&e.showEmojiPicker(...t))},[Object(r.m)(E,{icon:"smile-beam"})],8,C),e.pollsAvailable?(Object(r.D)(),Object(r.j)("button",{key:0,class:Object(r.w)(["poll-icon button-unstyled",{selected:e.pollFormVisible}]),title:e.$t("polls.add_poll"),onClick:t[17]||(t[17]=(...t)=>e.togglePollForm&&e.togglePollForm(...t))},[Object(r.m)(E,{icon:"poll-h"})],10,P)):Object(r.i)("",!0)]),e.posting?(Object(r.D)(),Object(r.j)("button",x,Object(r.O)(e.$t("post_status.posting")),1)):e.isOverLengthLimit?(Object(r.D)(),Object(r.j)("button",D,Object(r.O)(e.$t("post_status.post")),1)):(Object(r.D)(),Object(r.j)("button",{key:2,disabled:e.uploadingFiles||e.disableSubmit,class:"btn button-default",onTouchstart:t[18]||(t[18]=Object(r.Y)(t=>e.postStatus(t,e.newStatus),["stop","prevent"])),onClick:t[19]||(t[19]=Object(r.Y)(t=>e.postStatus(t,e.newStatus),["stop","prevent"]))},Object(r.O)(e.$t("post_status.post")),41,T))],512),Object(r.W)(Object(r.k)("div",{style:Object(r.x)({animation:"show"===e.showDropIcon?"fade-in 0.25s":"fade-out 0.5s"}),class:"drop-indicator",onDragleave:t[20]||(t[20]=(...t)=>e.fileDragStop&&e.fileDragStop(...t)),onDrop:t[21]||(t[21]=Object(r.Y)((...t)=>e.fileDrop&&e.fileDrop(...t),["stop"]))},[Object(r.m)(E,{icon:e.uploadFileLimitReached?"ban":"upload"},null,8,["icon"])],36),[[r.T,"hide"!==e.showDropIcon]]),e.error?(Object(r.D)(),Object(r.j)("div",I,[Object(r.l)(" Error: "+Object(r.O)(e.error)+" ",1),Object(r.k)("button",{class:"button-unstyled",onClick:t[22]||(t[22]=(...t)=>e.clearError&&e.clearError(...t))},[Object(r.m)(E,{class:"fa-scale-110 fa-old-padding",icon:"times"})])])):Object(r.i)("",!0),e.newStatus.files&&e.newStatus.files.length>0?(Object(r.D)(),Object(r.h)(H,{key:2,class:"attachments",grid:!0,nsfw:!1,attachments:e.newStatus.files,descriptions:e.newStatus.mediaDescriptions,"set-media":()=>e.$store.dispatch("setMedia",e.newStatus.files),editable:!0,"edit-attachment":e.editAttachment,"remove-attachment":e.removeMediaFile,"shift-up-attachment":e.newStatus.files.length>1&&e.shiftUpMediaFile,"shift-dn-attachment":e.newStatus.files.length>1&&e.shiftDnMediaFile,onPlay:t[23]||(t[23]=t=>e.$emit("mediaplay",e.attachment.id)),onPause:t[24]||(t[24]=t=>e.$emit("mediapause",e.attachment.id))},null,8,["attachments","descriptions","set-media","edit-attachment","remove-attachment","shift-up-attachment","shift-dn-attachment"])):Object(r.i)("",!0),e.newStatus.files.length>0&&!e.disableSensitivityCheckbox?(Object(r.D)(),Object(r.j)("div",$,[Object(r.m)(q,{modelValue:e.newStatus.nsfw,"onUpdate:modelValue":t[25]||(t[25]=t=>e.newStatus.nsfw=t)},{default:Object(r.V)(()=>[Object(r.l)(Object(r.O)(e.$t("post_status.attachments_sensitive")),1)]),_:1},8,["modelValue"])])):Object(r.i)("",!0)],32)],512)}]]);t.a=Re},function(e,t,n){"use strict";var r=n(0);const i=["href","alt","title"],o={key:1,class:"attachment-buttons"},s=["placeholder"],a={key:1},c={class:"attachment-wrapper"},l=["href","alt","title"],u=["src"],d={key:1,class:"attachment-buttons"},p=["title"],h=["title"],b=["title"],m=["title"],f=["title"],O=["title"],j=["title"],g=["href"],v=["href"],y=["href"],w=["src","alt","title"],k={key:0,class:"image"},_=["src"],S={class:"text"},C=["href"],P=["innerHTML"],x=["href"],D=["placeholder"],T={key:1};var I=n(5),$=n.n(I),z=n(50),M=n(139),U=n(141),F=n(327),E=n.n(F),L=n(33),R=n(8),A=n(6),N=n(3);function B(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}A.c.add(N.D,N.Q,N.K,N.xb,N.U,N.rb,N.lb,N.db,N.sb,N.T,N.b);var V={props:["attachment","description","hideDescription","nsfw","size","setMedia","remove","shiftUp","shiftDn","edit"],data:function(){return{localDescription:this.description||this.attachment.description,nsfwImage:this.$store.state.instance.nsfwCensorImage||E.a,hideNsfwLocal:this.$store.getters.mergedConfig.hideNsfw,preloadImage:this.$store.getters.mergedConfig.preloadImage,loading:!1,img:"image"===L.a.fileType(this.attachment.mimetype)&&document.createElement("img"),modalOpen:!1,showHidden:!1,flashLoaded:!1,showDescription:!1}},components:{Flash:M.a,StillImage:z.a,VideoAttachment:U.a},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?B(Object(n),!0).forEach((function(t){$()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):B(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({classNames:function(){return[{"-loading":this.loading,"-nsfw-placeholder":this.hidden,"-editable":void 0!==this.edit},"-type-"+this.type,this.size&&"-size-"+this.size,"-".concat(this.useContainFit?"contain":"cover","-fit")]},usePlaceholder:function(){return"hide"===this.size},useContainFit:function(){return this.$store.getters.mergedConfig.useContainFit},placeholderName:function(){return""!==this.attachment.description&&this.attachment.description?this.attachment.description:this.type.toUpperCase()},placeholderIconClass:function(){return"image"===this.type?"image":"video"===this.type?"video":"audio"===this.type?"music":"file"},referrerpolicy:function(){return this.$store.state.instance.mediaProxyAvailable?"":"no-referrer"},type:function(){return L.a.fileType(this.attachment.mimetype)},hidden:function(){return this.nsfw&&this.hideNsfwLocal&&!this.showHidden},isEmpty:function(){return"html"===this.type&&!this.attachment.oembed},useModal:function(){var e=[];switch(this.size){case"hide":case"small":e=["image","video","audio","flash"];break;default:e=this.mergedConfig.playVideosInModal?["image","video","flash"]:["image"]}return e.includes(this.type)},videoTag:function(){return this.useModal?"button":"span"}},Object(R.c)(["mergedConfig"])),watch:{localDescription:function(e){this.onEdit(e)}},methods:{linkClicked:function(e){var t=e.target;"A"===t.tagName&&window.open(t.href,"_blank")},openModal:function(e){this.useModal?(this.$emit("setMedia"),this.$store.dispatch("setCurrentMedia",this.attachment)):"unknown"===this.type&&window.open(this.attachment.url)},openModalForce:function(e){this.$emit("setMedia"),this.$store.dispatch("setCurrentMedia",this.attachment)},onEdit:function(e){this.edit&&this.edit(this.attachment,e)},onRemove:function(){this.remove&&this.remove(this.attachment)},onShiftUp:function(){this.shiftUp&&this.shiftUp(this.attachment)},onShiftDn:function(){this.shiftDn&&this.shiftDn(this.attachment)},stopFlash:function(){this.$refs.flash.closePlayer()},setFlashLoaded:function(e){this.flashLoaded=e},toggleDescription:function(){this.showDescription=!this.showDescription},toggleHidden:function(e){var t=this;!this.mergedConfig.useOneClickNsfw||this.showHidden||"video"===this.type&&!this.mergedConfig.playVideosInModal?this.img&&!this.preloadImage?this.img.onload?this.img.onload():(this.loading=!0,this.img.src=this.attachment.url,this.img.onload=function(){t.loading=!1,t.showHidden=!t.showHidden}):this.showHidden=!this.showHidden:this.openModal(e)},onImageLoad:function(e){var t=e.naturalWidth,n=e.naturalHeight;this.$emit("naturalSizeLoad",{id:this.attachment.id,width:t,height:n})}}},H=(n(509),n(4));const q=n.n(H)()(V,[["render",function(e,t,n,I,$,z){const M=Object(r.J)("FAIcon"),U=Object(r.J)("StillImage"),F=Object(r.J)("VideoAttachment"),E=Object(r.J)("Flash");return e.usePlaceholder?(Object(r.D)(),Object(r.j)("button",{key:0,class:Object(r.w)(["Attachment -placeholder button-unstyled",e.classNames]),onClick:t[4]||(t[4]=(...t)=>e.openModal&&e.openModal(...t))},["html"!==e.type?(Object(r.D)(),Object(r.j)("a",{key:0,class:"placeholder",target:"_blank",href:e.attachment.url,alt:e.attachment.description,title:e.attachment.description,onClick:t[0]||(t[0]=Object(r.Y)(()=>{},["prevent"]))},[Object(r.m)(M,{icon:e.placeholderIconClass},null,8,["icon"]),Object(r.k)("b",null,Object(r.O)(e.nsfw?"NSFW / ":""),1),Object(r.l)(Object(r.O)(e.edit?"":e.placeholderName),1)],8,i)):Object(r.i)("",!0),e.edit||e.remove?(Object(r.D)(),Object(r.j)("div",o,[e.remove?(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-unstyled attachment-button",onClick:t[1]||(t[1]=Object(r.Y)((...t)=>e.onRemove&&e.onRemove(...t),["prevent"]))},[Object(r.m)(M,{icon:"trash-alt"})])):Object(r.i)("",!0)])):Object(r.i)("",!0),"hide"!==e.size&&!e.hideDescription&&(e.edit||e.localDescription||e.showDescription)?(Object(r.D)(),Object(r.j)("div",{key:2,class:Object(r.w)(["description-container",{"-static":!e.edit}])},[e.edit?Object(r.W)((Object(r.D)(),Object(r.j)("input",{key:0,"onUpdate:modelValue":t[2]||(t[2]=t=>e.localDescription=t),type:"text",class:"description-field",placeholder:e.$t("post_status.media_description"),onKeydown:t[3]||(t[3]=Object(r.X)(Object(r.Y)(()=>{},["prevent"]),["enter"]))},null,40,s)),[[r.S,e.localDescription]]):(Object(r.D)(),Object(r.j)("p",a,Object(r.O)(e.localDescription),1))],2)):Object(r.i)("",!0)],2)):(Object(r.D)(),Object(r.j)("div",{key:1,class:Object(r.w)(["Attachment",e.classNames])},[Object(r.W)(Object(r.k)("div",c,[e.hidden?(Object(r.D)(),Object(r.j)("a",{key:0,class:"image-container",href:e.attachment.url,alt:e.attachment.description,title:e.attachment.description,onClick:t[5]||(t[5]=Object(r.Y)((...t)=>e.toggleHidden&&e.toggleHidden(...t),["prevent","stop"]))},[(Object(r.D)(),Object(r.j)("img",{key:e.nsfwImage,class:"nsfw",src:e.nsfwImage},null,8,u)),"video"===e.type?(Object(r.D)(),Object(r.h)(M,{key:0,class:"play-icon",icon:"play-circle"})):Object(r.i)("",!0)],8,l)):Object(r.i)("",!0),e.hidden?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",d,["flash"===e.type&&e.flashLoaded?(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-unstyled attachment-button",title:e.$t("status.attachment_stop_flash"),onClick:t[6]||(t[6]=Object(r.Y)((...t)=>e.stopFlash&&e.stopFlash(...t),["prevent"]))},[Object(r.m)(M,{icon:"stop"})],8,p)):Object(r.i)("",!0),e.attachment.description&&"small"!==e.size&&!e.edit&&"unknown"!==e.type?(Object(r.D)(),Object(r.j)("button",{key:1,class:"button-unstyled attachment-button",title:e.$t("status.show_attachment_description"),onClick:t[7]||(t[7]=Object(r.Y)((...t)=>e.toggleDescription&&e.toggleDescription(...t),["prevent"]))},[Object(r.m)(M,{icon:"align-right"})],8,h)):Object(r.i)("",!0),e.useModal||"unknown"===e.type?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("button",{key:2,class:"button-unstyled attachment-button",title:e.$t("status.show_attachment_in_modal"),onClick:t[8]||(t[8]=Object(r.Y)((...t)=>e.openModalForce&&e.openModalForce(...t),["prevent"]))},[Object(r.m)(M,{icon:"search-plus"})],8,b)),e.nsfw&&e.hideNsfwLocal?(Object(r.D)(),Object(r.j)("button",{key:3,class:"button-unstyled attachment-button",title:e.$t("status.hide_attachment"),onClick:t[9]||(t[9]=Object(r.Y)((...t)=>e.toggleHidden&&e.toggleHidden(...t),["prevent"]))},[Object(r.m)(M,{icon:"times"})],8,m)):Object(r.i)("",!0),e.shiftUp?(Object(r.D)(),Object(r.j)("button",{key:4,class:"button-unstyled attachment-button",title:e.$t("status.move_up"),onClick:t[10]||(t[10]=Object(r.Y)((...t)=>e.onShiftUp&&e.onShiftUp(...t),["prevent"]))},[Object(r.m)(M,{icon:"chevron-left"})],8,f)):Object(r.i)("",!0),e.shiftDn?(Object(r.D)(),Object(r.j)("button",{key:5,class:"button-unstyled attachment-button",title:e.$t("status.move_down"),onClick:t[11]||(t[11]=Object(r.Y)((...t)=>e.onShiftDn&&e.onShiftDn(...t),["prevent"]))},[Object(r.m)(M,{icon:"chevron-right"})],8,O)):Object(r.i)("",!0),e.remove?(Object(r.D)(),Object(r.j)("button",{key:6,class:"button-unstyled attachment-button",title:e.$t("status.remove_attachment"),onClick:t[12]||(t[12]=Object(r.Y)((...t)=>e.onRemove&&e.onRemove(...t),["prevent"]))},[Object(r.m)(M,{icon:"trash-alt"})],8,j)):Object(r.i)("",!0)])),"image"!==e.type||e.hidden&&!e.preloadImage?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("a",{key:2,class:Object(r.w)(["image-container",{"-hidden":e.hidden&&e.preloadImage}]),href:e.attachment.url,target:"_blank",onClick:t[13]||(t[13]=Object(r.Y)((...t)=>e.openModal&&e.openModal(...t),["stop","prevent"]))},[Object(r.m)(U,{class:"image",referrerpolicy:e.referrerpolicy,mimetype:e.attachment.mimetype,src:e.attachment.large_thumb_url||e.attachment.url,"image-load-handler":e.onImageLoad,alt:e.attachment.description},null,8,["referrerpolicy","mimetype","src","image-load-handler","alt"])],10,g)),"unknown"!==e.type||e.hidden?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("a",{key:3,class:"placeholder-container",href:e.attachment.url,target:"_blank"},[Object(r.m)(M,{size:"5x",icon:e.placeholderIconClass},null,8,["icon"]),Object(r.k)("p",null,Object(r.O)(e.localDescription),1)],8,v)),"video"!==e.type||e.hidden?Object(r.i)("",!0):(Object(r.D)(),Object(r.h)(Object(r.L)(e.videoTag),{key:4,class:Object(r.w)(["video-container",{"button-unstyled":"isModal"}]),href:e.attachment.url,onClick:Object(r.Y)(e.openModal,["stop","prevent"])},{default:Object(r.V)(()=>[Object(r.m)(F,{class:"video",attachment:e.attachment,controls:!e.useModal,onPlay:t[14]||(t[14]=t=>e.$emit("play")),onPause:t[15]||(t[15]=t=>e.$emit("pause"))},null,8,["attachment","controls"]),e.useModal?(Object(r.D)(),Object(r.h)(M,{key:0,class:"play-icon",icon:"play-circle"})):Object(r.i)("",!0)]),_:1},8,["href","onClick"])),"audio"!==e.type||e.hidden?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("span",{key:5,class:"audio-container",href:e.attachment.url,onClick:t[18]||(t[18]=Object(r.Y)((...t)=>e.openModal&&e.openModal(...t),["stop","prevent"]))},["audio"===e.type?(Object(r.D)(),Object(r.j)("audio",{key:0,src:e.attachment.url,alt:e.attachment.description,title:e.attachment.description,controls:"",onPlay:t[16]||(t[16]=t=>e.$emit("play")),onPause:t[17]||(t[17]=t=>e.$emit("pause"))},null,40,w)):Object(r.i)("",!0)],8,y)),"html"===e.type&&e.attachment.oembed?(Object(r.D)(),Object(r.j)("div",{key:6,class:"oembed-container",onClick:t[19]||(t[19]=Object(r.Y)((...t)=>e.linkClicked&&e.linkClicked(...t),["prevent"]))},[e.attachment.thumb_url?(Object(r.D)(),Object(r.j)("div",k,[Object(r.k)("img",{src:e.attachment.thumb_url},null,8,_)])):Object(r.i)("",!0),Object(r.k)("div",S,[Object(r.k)("h1",null,[Object(r.k)("a",{href:e.attachment.url},Object(r.O)(e.attachment.oembed.title),9,C)]),Object(r.k)("div",{innerHTML:e.attachment.oembed.oembedHTML},null,8,P)])])):Object(r.i)("",!0),"flash"!==e.type||e.hidden?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("span",{key:7,class:"flash-container",href:e.attachment.url,onClick:t[22]||(t[22]=Object(r.Y)((...t)=>e.openModal&&e.openModal(...t),["stop","prevent"]))},[Object(r.m)(E,{ref:"flash",class:"flash",src:e.attachment.large_thumb_url||e.attachment.url,onPlayerOpened:t[20]||(t[20]=t=>e.setFlashLoaded(!0)),onPlayerClosed:t[21]||(t[21]=t=>e.setFlashLoaded(!1))},null,8,["src"])],8,x))],512),[[r.T,!e.isEmpty]]),"hide"!==e.size&&!e.hideDescription&&(e.edit||e.localDescription&&e.showDescription)?(Object(r.D)(),Object(r.j)("div",{key:0,class:Object(r.w)(["description-container",{"-static":!e.edit}])},[e.edit?Object(r.W)((Object(r.D)(),Object(r.j)("input",{key:0,"onUpdate:modelValue":t[23]||(t[23]=t=>e.localDescription=t),type:"text",class:"description-field",placeholder:e.$t("post_status.media_description"),onKeydown:t[24]||(t[24]=Object(r.X)(Object(r.Y)(()=>{},["prevent"]),["enter"]))},null,40,D)),[[r.S,e.localDescription]]):(Object(r.D)(),Object(r.j)("p",T,Object(r.O)(e.localDescription),1))],2)):Object(r.i)("",!0)],2))}]]);t.a=q},function(e,t,n){"use strict";var r=n(0);const i=["datetime","title"];var o=n(47),s=n(38),a={name:"Timeago",props:["time","autoUpdate","longFormat","nowThreshold"],data:function(){return{relativeTime:{key:"time.now",num:0},interval:null}},computed:{localeDateString:function(){var e=s.a.internalToBrowserLocale(this.$i18n.locale);return"string"==typeof this.time?new Date(Date.parse(this.time)).toLocaleString(e):this.time.toLocaleString(e)}},created:function(){this.refreshRelativeTimeObject()},unmounted:function(){clearTimeout(this.interval)},methods:{refreshRelativeTimeObject:function(){var e="number"==typeof this.nowThreshold?this.nowThreshold:1;this.relativeTime=this.longFormat?o.d(this.time,e):o.e(this.time,e),this.autoUpdate&&(this.interval=setTimeout(this.refreshRelativeTimeObject,1e3*this.autoUpdate))}}},c=n(4);const l=n.n(c)()(a,[["render",function(e,t,n,o,s,a){return Object(r.D)(),Object(r.j)("time",{datetime:n.time,title:a.localeDateString},Object(r.O)(e.$t(s.relativeTime.key,[s.relativeTime.num])),9,i)}]]);t.a=l},,,,,,,,,,function(e,t,n){"use strict";var r=n(0);const i={class:"list"},o={key:0,class:"list-empty-content faint"};var s={props:{items:{type:Array,default:function(){return[]}},getKey:{type:Function,default:function(e){return e.id}}}},a=(n(562),n(4));const c=n.n(a)()(s,[["render",function(e,t,n,s,a,c){return Object(r.D)(),Object(r.j)("div",i,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(n.items,t=>(Object(r.D)(),Object(r.j)("div",{key:n.getKey(t),class:"list-item"},[Object(r.I)(e.$slots,"item",{item:t})]))),128)),0===n.items.length&&e.$slots.empty?(Object(r.D)(),Object(r.j)("div",o,[Object(r.I)(e.$slots,"empty")])):Object(r.i)("",!0)])}]]);t.a=c},function(e,t,n){"use strict";var r,i=n(13),o=n.n(i),s=n(12),a=n.n(s),c=n(10),l=n.n(c),u={ar:function(){return n.e(5).then(n.bind(null,595))},ca:function(){return n.e(6).then(n.bind(null,596))},cs:function(){return n.e(7).then(n.bind(null,597))},de:function(){return n.e(8).then(n.bind(null,598))},eo:function(){return n.e(9).then(n.bind(null,599))},es:function(){return n.e(10).then(n.bind(null,600))},et:function(){return n.e(11).then(n.bind(null,601))},eu:function(){return n.e(12).then(n.bind(null,602))},fi:function(){return n.e(13).then(n.bind(null,603))},fr:function(){return n.e(14).then(n.bind(null,604))},ga:function(){return n.e(15).then(n.bind(null,605))},he:function(){return n.e(16).then(n.bind(null,606))},hu:function(){return n.e(17).then(n.bind(null,607))},it:function(){return n.e(18).then(n.bind(null,608))},ja:function(){return n.e(20).then(n.bind(null,609))},ja_easy:function(){return n.e(19).then(n.bind(null,610))},ko:function(){return n.e(21).then(n.bind(null,611))},nb:function(){return n.e(22).then(n.bind(null,612))},nl:function(){return n.e(23).then(n.bind(null,613))},oc:function(){return n.e(24).then(n.bind(null,614))},pl:function(){return n.e(25).then(n.bind(null,615))},pt:function(){return n.e(26).then(n.bind(null,616))},ro:function(){return n.e(27).then(n.bind(null,617))},ru:function(){return n.e(28).then(n.bind(null,618))},te:function(){return n.e(29).then(n.bind(null,619))},uk:function(){return n.e(30).then(n.bind(null,620))},zh:function(){return n.e(31).then(n.bind(null,621))},zh_Hant:function(){return n.e(32).then(n.bind(null,622))}},d={languages:["en"].concat(a()(Object.keys(u))),default:{en:n(442).default},setLanguage:(r=o()(l.a.mark((function e(t,n){var r;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!u[n]){e.next=5;break}return e.next=3,u[n]();case 3:r=e.sent,t.setLocaleMessage(n,r.default);case 5:t.locale=n;case 6:case"end":return e.stop()}}),e)}))),function(e,t){return r.apply(this,arguments)})};t.a=d},function(e,t,n){"use strict";var r=n(5),i=n.n(r),o=n(0),s=n(8),a=n(68);n(574);function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var l=function(e){return e.findIndex((function(e){return e.props}))};t.a={name:"TabSwitcher",props:{renderOnlyFocused:{required:!1,type:Boolean,default:!1},onSwitch:{required:!1,type:Function,default:void 0},activeTab:{required:!1,type:String,default:void 0},scrollableTabs:{required:!1,type:Boolean,default:!1},sideTabBar:{required:!1,type:Boolean,default:!1},bodyScrollLock:{required:!1,type:Boolean,default:!1}},data:function(){return{active:l(this.slots())}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach((function(t){i()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({activeIndex:function(){var e=this;return this.activeTab?this.slots().findIndex((function(t){return t&&t.props&&e.activeTab===t.props.key})):this.active},isActive:function(){var e=this;return function(t){return e.$slots.default().findIndex((function(e){return e.props&&e.props["data-tab-name"]===t}))===e.activeIndex}},settingsModalVisible:function(){return"visible"===this.settingsModalState}},Object(s.e)({settingsModalState:function(e){return e.interface.settingsModalState}})),beforeUpdate:function(){this.slots()[this.active].props||(this.active=l(this.slots()))},methods:{clickTab:function(e){var t=this;return function(n){n.preventDefault(),t.setTab(e)}},slots:function(){return this.$slots.default()[0].type===o.a?this.$slots.default()[0].children:this.$slots.default()},setTab:function(e){"function"==typeof this.onSwitch&&this.onSwitch.call(null,this.slots()[e].key),this.active=e,this.scrollableTabs&&(this.$refs.contents.scrollTop=0)}},render:function(){var e=this,t=this.slots().map((function(t,n){var r=t.props;if(r){var i=["tab","button-default"],s=["tab-wrapper"];return e.activeIndex===n&&(i.push("active"),s.push("active")),r.image?Object(o.m)("div",{class:s.join(" ")},[Object(o.m)("button",{disabled:r.disabled,onClick:e.clickTab(n),class:i.join(" "),type:"button"},[Object(o.m)("img",{src:r.image,title:r["image-tooltip"]},null),r.label?"":r.label])]):Object(o.m)("div",{class:s.join(" ")},[Object(o.m)("button",{disabled:r.disabled,onClick:e.clickTab(n),class:i.join(" "),type:"button"},[r.icon?Object(o.m)(a.a,{class:"tab-icon",size:"2x","fixed-width":!0,icon:r.icon},null):"",Object(o.m)("span",{class:"text"},[r.label])])])}})),n=this.slots().map((function(t,n){var r=t.props;if(r){var i=e.activeIndex===n,s=[i?"active":"hidden"];r.fullHeight&&s.push("full-height");var a=!e.renderOnlyFocused||i?t:"";return Object(o.m)("div",{class:s},[e.sideTabBar?Object(o.m)("h1",{class:"mobile-label"},[r.label]):"",a])}}));return Object(o.m)("div",{class:"tab-switcher "+(this.sideTabBar?"side-tabs":"top-tabs")},[Object(o.m)("div",{class:"tabs"},[t]),Object(o.W)(Object(o.m)("div",{ref:"contents",class:"contents"+(this.scrollableTabs?" scrollable-tabs":"")},[n]),[[Object(o.K)("body-scroll-lock"),this.bodyScrollLock]])])}}},,,,,function(e,t,n){"use strict";var r=n(21),i=n.n(r),o=n(15),s={postStatus:function(e){var t=e.store,n=e.status,r=e.spoilerText,s=e.visibility,a=e.sensitive,c=e.poll,l=e.media,u=void 0===l?[]:l,d=e.inReplyToStatusId,p=void 0===d?void 0:d,h=e.contentType,b=void 0===h?"text/plain":h,m=e.preview,f=void 0!==m&&m,O=e.idempotencyKey,j=void 0===O?"":O,g=i()(u,"id");return o.c.postStatus({credentials:t.state.users.currentUser.credentials,status:n,spoilerText:r,visibility:s,sensitive:a,mediaIds:g,inReplyToStatusId:p,contentType:b,poll:c,preview:f,idempotencyKey:j}).then((function(e){return e.error||f||t.dispatch("addNewStatuses",{statuses:[e],timeline:"friends",showImmediately:!0,noIdUpdate:!0}),e})).catch((function(e){return{error:e.message}}))},uploadMedia:function(e){var t=e.store,n=e.formData,r=t.state.users.currentUser.credentials;return o.c.uploadMedia({credentials:r,formData:n})},setMediaDescription:function(e){var t=e.store,n=e.id,r=e.description,i=t.state.users.currentUser.credentials;return o.c.setMediaDescription({credentials:i,id:n,description:r})}};t.a=s},function(e,t,n){"use strict";n.r(t);var r=n(0);const i={key:0,class:"notifications-heading panel-heading -sticky"},o={class:"title"},s={key:0,class:"badge badge-notification unseen-count"},a={class:"panel-body"},c=Object(r.k)("div",{class:"notification-overlay"},null,-1),l={class:"panel-footer"},u={key:0,class:"new-status-notification text-center faint"},d={class:"new-status-notification text-center"},p={key:2,class:"new-status-notification text-center"};var h=n(5),b=n.n(h),m=n(8);const f={key:1},O={key:0,class:"Notification container -muted"},j=["href"],g={class:"notification-right"},v={class:"notification-details"},y={class:"name-and-action"},w={key:0},k=["title"],_=Object(r.l)(" "+Object(r.O)(" ")+" "),S={key:2},C=Object(r.l)(" "+Object(r.O)(" ")+" "),P={key:3},x=Object(r.l)(" "+Object(r.O)(" ")+" "),D={key:4},T=Object(r.l)(" "+Object(r.O)(" ")+" "),I={key:5},$=Object(r.l)(" "+Object(r.O)(" ")+" "),z={key:6},M=Object(r.l)(" "+Object(r.O)(" ")+" "),U={key:7},F=["src","name"],E={key:1,class:"emoji-reaction-emoji"},L={key:8},R=Object(r.l)(" "+Object(r.O)(" ")+" "),A={key:0,class:"timeago"},N={key:1,class:"timeago"},B={class:"faint"},V={key:1,class:"follow-text"},H={key:0,style:{"white-space":"nowrap"}},q=["title"],J=["title"],W={key:2,class:"move-text"};var Y=n(45),G=n(34),K=n(22),X=n(35),Z=n(59),Q=n(25),ee=n(26),te=n(31),ne=n(23),re=n(6),ie=n(3);function oe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}re.c.add(ie.m,ie.rb,ie.jb,ie.Z,ie.vb,ie.ub,ie.C,ie.nb);var se={data:function(){return{userExpanded:!1,betterShadow:this.$store.state.interface.browserSupport.cssFilter,unmuted:!1}},props:["notification"],components:{StatusContent:Y.a,UserAvatar:K.default,UserCard:X.a,Timeago:Z.a,Status:G.default,RichContent:Q.a},methods:{toggleUserExpanded:function(){this.userExpanded=!this.userExpanded},generateUserProfileLink:function(e){return Object(ne.a)(e.id,e.screen_name,this.$store.state.instance.restrictedNicknames)},getUser:function(e){return this.$store.state.users.usersObject[e.from_profile.id]},toggleMute:function(){this.unmuted=!this.unmuted},approveUser:function(){this.$store.state.api.backendInteractor.approveUser({id:this.user.id}),this.$store.dispatch("removeFollowRequest",this.user),this.$store.dispatch("markSingleNotificationAsSeen",{id:this.notification.id}),this.$store.dispatch("updateNotification",{id:this.notification.id,updater:function(e){e.type="follow"}})},denyUser:function(){var e=this;this.$store.state.api.backendInteractor.denyUser({id:this.user.id}).then((function(){e.$store.dispatch("dismissNotificationLocal",{id:e.notification.id}),e.$store.dispatch("removeFollowRequest",e.user)}))}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?oe(Object(n),!0).forEach((function(t){b()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):oe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({userClass:function(){return Object(te.a)(this.notification.from_profile)},userStyle:function(){var e=this.$store.getters.mergedConfig.highlight,t=this.notification.from_profile;return Object(te.b)(e[t.screen_name])},user:function(){return this.$store.getters.findUser(this.notification.from_profile.id)},userProfileLink:function(){return this.generateUserProfileLink(this.user)},targetUser:function(){return this.$store.getters.findUser(this.notification.target.id)},targetUserProfileLink:function(){return this.generateUserProfileLink(this.targetUser)},needMute:function(){return this.$store.getters.relationship(this.user.id).muting},isStatusNotification:function(){return Object(ee.b)(this.notification.type)}},Object(m.e)({currentUser:function(e){return e.users.currentUser}}))},ae=(n(556),n(4)),ce=n.n(ae);var le=ce()(se,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("Status"),c=Object(r.J)("router-link"),l=Object(r.J)("FAIcon"),u=Object(r.J)("UserAvatar"),d=Object(r.J)("UserCard"),p=Object(r.J)("RichContent"),h=Object(r.J)("i18n-t"),b=Object(r.J)("Timeago"),m=Object(r.J)("StatusContent");return"mention"===e.notification.type?(Object(r.D)(),Object(r.h)(a,{key:0,class:"Notification",compact:!0,statusoid:e.notification.status},null,8,["statusoid"])):(Object(r.D)(),Object(r.j)("div",f,[e.needMute&&!e.unmuted?(Object(r.D)(),Object(r.j)("div",O,[Object(r.k)("small",null,[Object(r.m)(c,{to:e.userProfileLink},{default:Object(r.V)(()=>[Object(r.l)(Object(r.O)(e.notification.from_profile.screen_name_ui),1)]),_:1},8,["to"])]),Object(r.k)("button",{class:"button-unstyled unmute",onClick:t[0]||(t[0]=Object(r.Y)((...t)=>e.toggleMute&&e.toggleMute(...t),["prevent"]))},[Object(r.m)(l,{class:"fa-scale-110 fa-old-padding",icon:"eye-slash"})])])):(Object(r.D)(),Object(r.j)("div",{key:1,class:Object(r.w)(["Notification non-mention",[e.userClass,{highlighted:e.userStyle},"-type--"+e.notification.type]]),style:Object(r.x)([e.userStyle])},[Object(r.k)("a",{class:"avatar-container",href:e.$router.resolve(e.userProfileLink).href,onClickCapture:t[1]||(t[1]=Object(r.Y)((...t)=>e.toggleUserExpanded&&e.toggleUserExpanded(...t),["stop","prevent"]))},[Object(r.m)(u,{compact:!0,"better-shadow":e.betterShadow,user:e.notification.from_profile},null,8,["better-shadow","user"])],40,j),Object(r.k)("div",g,[e.userExpanded?(Object(r.D)(),Object(r.h)(d,{key:0,"user-id":e.getUser(e.notification).id,rounded:!0,bordered:!0},null,8,["user-id"])):Object(r.i)("",!0),Object(r.k)("span",v,[Object(r.k)("div",y,[e.notification.from_profile.name_html?(Object(r.D)(),Object(r.j)("bdi",w,[Object(r.m)(p,{class:"username",title:"@"+e.notification.from_profile.screen_name_ui,html:e.notification.from_profile.name_html,emoji:e.notification.from_profile.emoji},null,8,["title","html","emoji"])])):(Object(r.D)(),Object(r.j)("span",{key:1,class:"username",title:"@"+e.notification.from_profile.screen_name_ui},Object(r.O)(e.notification.from_profile.name),9,k)),_,"like"===e.notification.type?(Object(r.D)(),Object(r.j)("span",S,[Object(r.m)(l,{class:"type-icon",icon:"star"}),C,Object(r.k)("small",null,Object(r.O)(e.$t("notifications.favorited_you")),1)])):Object(r.i)("",!0),"repeat"===e.notification.type?(Object(r.D)(),Object(r.j)("span",P,[Object(r.m)(l,{class:"type-icon",icon:"retweet",title:e.$t("tool_tip.repeat")},null,8,["title"]),x,Object(r.k)("small",null,Object(r.O)(e.$t("notifications.repeated_you")),1)])):Object(r.i)("",!0),"follow"===e.notification.type?(Object(r.D)(),Object(r.j)("span",D,[Object(r.m)(l,{class:"type-icon",icon:"user-plus"}),T,Object(r.k)("small",null,Object(r.O)(e.$t("notifications.followed_you")),1)])):Object(r.i)("",!0),"follow_request"===e.notification.type?(Object(r.D)(),Object(r.j)("span",I,[Object(r.m)(l,{class:"type-icon",icon:"user"}),$,Object(r.k)("small",null,Object(r.O)(e.$t("notifications.follow_request")),1)])):Object(r.i)("",!0),"move"===e.notification.type?(Object(r.D)(),Object(r.j)("span",z,[Object(r.m)(l,{class:"type-icon",icon:"suitcase-rolling"}),M,Object(r.k)("small",null,Object(r.O)(e.$t("notifications.migrated_to")),1)])):Object(r.i)("",!0),"pleroma:emoji_reaction"===e.notification.type?(Object(r.D)(),Object(r.j)("span",U,[Object(r.k)("small",null,[Object(r.m)(h,{scope:"global",keypath:"notifications.reacted_with"},{default:Object(r.V)(()=>[null!==e.notification.emoji_url?(Object(r.D)(),Object(r.j)("img",{key:0,class:"notification-reaction-emoji",src:e.notification.emoji_url,name:e.notification.emoji},null,8,F)):(Object(r.D)(),Object(r.j)("span",E,Object(r.O)(e.notification.emoji),1))]),_:1})])])):Object(r.i)("",!0),"poll"===e.notification.type?(Object(r.D)(),Object(r.j)("span",L,[Object(r.m)(l,{class:"type-icon",icon:"poll-h"}),R,Object(r.k)("small",null,Object(r.O)(e.$t("notifications.poll_ended")),1)])):Object(r.i)("",!0)]),e.isStatusNotification?(Object(r.D)(),Object(r.j)("div",A,[e.notification.status?(Object(r.D)(),Object(r.h)(c,{key:0,to:{name:"conversation",params:{id:e.notification.status.id}},class:"faint-link"},{default:Object(r.V)(()=>[Object(r.m)(b,{time:e.notification.created_at,"auto-update":240},null,8,["time"])]),_:1},8,["to"])):Object(r.i)("",!0)])):(Object(r.D)(),Object(r.j)("div",N,[Object(r.k)("span",B,[Object(r.m)(b,{time:e.notification.created_at,"auto-update":240},null,8,["time"])])])),e.needMute?(Object(r.D)(),Object(r.j)("button",{key:2,class:"button-unstyled",onClick:t[2]||(t[2]=Object(r.Y)((...t)=>e.toggleMute&&e.toggleMute(...t),["prevent"]))},[Object(r.m)(l,{class:"fa-scale-110 fa-old-padding",icon:"eye-slash"})])):Object(r.i)("",!0)]),"follow"===e.notification.type||"follow_request"===e.notification.type?(Object(r.D)(),Object(r.j)("div",V,[Object(r.m)(c,{to:e.userProfileLink,class:"follow-name"},{default:Object(r.V)(()=>[Object(r.l)(" @"+Object(r.O)(e.notification.from_profile.screen_name_ui),1)]),_:1},8,["to"]),"follow_request"===e.notification.type?(Object(r.D)(),Object(r.j)("div",H,[Object(r.k)("button",{class:"button-unstyled",title:e.$t("tool_tip.accept_follow_request"),onClick:t[3]||(t[3]=t=>e.approveUser())},[Object(r.m)(l,{icon:"check",class:"fa-scale-110 fa-old-padding follow-request-accept"})],8,q),Object(r.k)("button",{class:"button-unstyled",title:e.$t("tool_tip.reject_follow_request"),onClick:t[4]||(t[4]=t=>e.denyUser())},[Object(r.m)(l,{icon:"times",class:"fa-scale-110 fa-old-padding follow-request-reject"})],8,J)])):Object(r.i)("",!0)])):"move"===e.notification.type?(Object(r.D)(),Object(r.j)("div",W,[Object(r.m)(c,{to:e.targetUserProfileLink},{default:Object(r.V)(()=>[Object(r.l)(" @"+Object(r.O)(e.notification.target.screen_name_ui),1)]),_:1},8,["to"])])):(Object(r.D)(),Object(r.h)(m,{key:3,class:"faint",compact:!0,status:e.notification.action},null,8,["status"]))])],6))]))}]]);const ue={class:"dropdown-menu"},de={class:"filter-trigger-button button-unstyled"};var pe=n(24);function he(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function be(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?he(Object(n),!0).forEach((function(t){b()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):he(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}re.c.add(ie.G);var me={components:{Popover:pe.default},computed:{filters:function(){return this.$store.getters.mergedConfig.notificationVisibility}},methods:{toggleNotificationFilter:function(e){this.$store.dispatch("setOption",{name:"notificationVisibility",value:be(be({},this.filters),{},b()({},e,!this.filters[e]))})}}};n(557);var fe=ce()(me,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon"),c=Object(r.J)("Popover");return Object(r.D)(),Object(r.h)(c,{trigger:"click",class:"NotificationFilters",placement:"bottom","bound-to":{x:"container"}},{content:Object(r.V)(()=>[Object(r.k)("div",ue,[Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[0]||(t[0]=e=>s.toggleNotificationFilter("likes"))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":s.filters.likes}])},null,2),Object(r.l)(Object(r.O)(e.$t("settings.notification_visibility_likes")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[1]||(t[1]=e=>s.toggleNotificationFilter("repeats"))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":s.filters.repeats}])},null,2),Object(r.l)(Object(r.O)(e.$t("settings.notification_visibility_repeats")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[2]||(t[2]=e=>s.toggleNotificationFilter("follows"))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":s.filters.follows}])},null,2),Object(r.l)(Object(r.O)(e.$t("settings.notification_visibility_follows")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[3]||(t[3]=e=>s.toggleNotificationFilter("mentions"))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":s.filters.mentions}])},null,2),Object(r.l)(Object(r.O)(e.$t("settings.notification_visibility_mentions")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[4]||(t[4]=e=>s.toggleNotificationFilter("emojiReactions"))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":s.filters.emojiReactions}])},null,2),Object(r.l)(Object(r.O)(e.$t("settings.notification_visibility_emoji_reactions")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[5]||(t[5]=e=>s.toggleNotificationFilter("moves"))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":s.filters.moves}])},null,2),Object(r.l)(Object(r.O)(e.$t("settings.notification_visibility_moves")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[6]||(t[6]=e=>s.toggleNotificationFilter("polls"))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":s.filters.polls}])},null,2),Object(r.l)(Object(r.O)(e.$t("settings.notification_visibility_polls")),1)])])]),trigger:Object(r.V)(()=>[Object(r.k)("button",de,[Object(r.m)(a,{icon:"filter"})])]),_:1})}]]),Oe=n(99),je=n(101);function ge(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}re.c.add(ie.r);var ve={components:{Notification:le,NotificationFilters:fe},props:{minimalMode:Boolean,filterMode:Array,disableTeleport:Boolean},data:function(){return{bottomedOut:!1,seenToDisplayCount:30}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ge(Object(n),!0).forEach((function(t){b()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ge(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({mainClass:function(){return this.minimalMode?"":"panel panel-default"},notifications:function(){return Object(ee.e)(this.$store)},error:function(){return this.$store.state.statuses.notifications.error},unseenNotifications:function(){return Object(ee.f)(this.$store)},filteredNotifications:function(){return Object(ee.a)(this.$store,this.filterMode)},unseenCount:function(){return this.unseenNotifications.length},unseenCountTitle:function(){return this.unseenCount+this.unreadChatCount},loading:function(){return this.$store.state.statuses.notifications.loading},noHeading:function(){var e=this.$store.state.interface.layoutType;return this.minimalMode||"mobile"===e},teleportTarget:function(){return{wide:"#notifs-column",mobile:"#mobile-notifications"}[this.$store.state.interface.layoutType]||"#notifs-sidebar"},notificationsToDisplay:function(){return this.filteredNotifications.slice(0,this.unseenCount+this.seenToDisplayCount)}},Object(m.c)(["unreadChatCount"])),watch:{unseenCountTitle:function(e){e>0?(je.a.drawFaviconBadge(),this.$store.dispatch("setPageTitle","(".concat(e,")"))):(je.a.clearFaviconBadge(),this.$store.dispatch("setPageTitle",""))}},methods:{markAsSeen:function(){this.$store.dispatch("markNotificationsAsSeen"),this.seenToDisplayCount=30},fetchOlderNotifications:function(){var e=this;if(!this.loading){var t=this.filteredNotifications.length-this.unseenCount;if(this.seenToDisplayCount<t)this.seenToDisplayCount=Math.min(this.seenToDisplayCount+20,t);else{this.seenToDisplayCount>t&&(this.seenToDisplayCount=t);var n=this.$store,r=n.state.users.currentUser.credentials;n.commit("setNotificationsLoading",{value:!0}),Oe.a.fetchAndUpdate({store:n,credentials:r,older:!0}).then((function(t){n.commit("setNotificationsLoading",{value:!1}),0===t.length&&(e.bottomedOut=!0),e.seenToDisplayCount+=t.length}))}}}}};n(558);const ye=ce()(ve,[["render",function(e,t,n,h,b,m){const f=Object(r.J)("NotificationFilters"),O=Object(r.J)("notification"),j=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.h)(r.c,{disabled:e.minimalMode||e.disableTeleport,to:e.teleportTarget},[Object(r.k)("div",{class:Object(r.w)([{minimal:e.minimalMode},"Notifications"])},[Object(r.k)("div",{class:Object(r.w)(e.mainClass)},[e.noHeading?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",i,[Object(r.k)("div",o,[Object(r.l)(Object(r.O)(e.$t("notifications.notifications"))+" ",1),e.unseenCount?(Object(r.D)(),Object(r.j)("span",s,Object(r.O)(e.unseenCount),1)):Object(r.i)("",!0)]),e.unseenCount?(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-default read-button",onClick:t[0]||(t[0]=Object(r.Y)((...t)=>e.markAsSeen&&e.markAsSeen(...t),["prevent"]))},Object(r.O)(e.$t("notifications.read")),1)):Object(r.i)("",!0),Object(r.m)(f)])),Object(r.k)("div",a,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.notificationsToDisplay,t=>(Object(r.D)(),Object(r.j)("div",{key:t.id,class:Object(r.w)(["notification",{unseen:!e.minimalMode&&!t.seen}])},[c,Object(r.m)(O,{notification:t},null,8,["notification"])],2))),128))]),Object(r.k)("div",l,[e.bottomedOut?(Object(r.D)(),Object(r.j)("div",u,Object(r.O)(e.$t("notifications.no_more_notifications")),1)):e.loading?(Object(r.D)(),Object(r.j)("div",p,[Object(r.m)(j,{icon:"circle-notch",spin:"",size:"lg"})])):(Object(r.D)(),Object(r.j)("button",{key:1,class:"button-unstyled -link -fullwidth",onClick:t[1]||(t[1]=Object(r.Y)(t=>e.fetchOlderNotifications(),["prevent"]))},[Object(r.k)("div",d,Object(r.O)(e.minimalMode?e.$t("interactions.load_older"):e.$t("notifications.load_older")),1)]))])],2)],2)],8,["disabled","to"])}]]);t.default=ye},function(e,t,n){"use strict";var r=n(0);const i={class:"gallery-rows"},o={key:0,class:"many-attachments"},s={class:"many-attachments-text"},a={class:"many-attachments-buttons"},c={key:0,class:"many-attachments-button"},l={key:1,class:"many-attachments-button"},u={key:2,class:"many-attachments-button"};var d=n(12),p=n.n(d),h=n(39),b=n.n(h),m=n(134),f=n.n(m),O={props:["attachments","limitRows","descriptions","limit","nsfw","setMedia","size","editable","removeAttachment","shiftUpAttachment","shiftDnAttachment","editAttachment","grid"],data:function(){return{sizes:{},hidingLong:!0}},components:{Attachment:n(58).a},computed:{rows:function(){var e=this;if(!this.attachments)return[];var t=this.limit>0?this.attachments.slice(0,this.limit):this.attachments;if("hide"===this.size)return t.map((function(e){return{minimal:!0,items:[e]}}));var n=this.grid?[{grid:!0,items:t}]:t.reduce((function(t,n,r){if(n.mimetype.includes("audio"))return[].concat(p()(t),[{audio:!0,items:[n]},{items:[]}]);if(!(n.mimetype.includes("image")||n.mimetype.includes("video")||n.mimetype.includes("flash")))return[].concat(p()(t),[{minimal:!0,items:[n]},{items:[]}]);var i=e.attachments.length-r+1,o=t[t.length-1].items;return o.push(n),o.length>=3&&i>3?[].concat(p()(t),[{items:[]}]):t}),[{items:[]}]).filter((function(e){return e.items.length>0}));return n},attachmentsDimensionalScore:function(){return this.rows.reduce((function(e,t){var n=0;return t.minimal?n+=1/8:t.audio?n+=1/4:n+=1/(t.items.length+.6),e+n}),0)},tooManyAttachments:function(){return!this.editable&&"small"!==this.size&&("hide"===this.size?this.attachments.length>8:this.attachmentsDimensionalScore>1)}},methods:{onNaturalSizeLoad:function(e){var t=e.id,n=e.width,r=e.height;b()(this.sizes,t,{width:n,height:r})},rowStyle:function(e){return e.audio?{"padding-bottom":"25%"}:e.minimal||e.grid?void 0:{"padding-bottom":"".concat(100/(e.items.length+.6),"%")}},itemStyle:function(e,t){var n=this,r=f()(t,(function(e){return n.getAspectRatio(e.id)}));return{flex:"".concat(this.getAspectRatio(e)/r," 1 0%")}},getAspectRatio:function(e){var t=this.sizes[e];return t?t.width/t.height:1},toggleHidingLong:function(e){this.hidingLong=e},openGallery:function(){this.$store.dispatch("setMedia",this.attachments),this.$store.dispatch("setCurrentMedia",this.attachments[0])},onMedia:function(){this.$store.dispatch("setMedia",this.attachments)}}},j=(n(510),n(4));const g=n.n(j)()(O,[["render",function(e,t,n,d,p,h){const b=Object(r.J)("Attachment");return Object(r.D)(),Object(r.j)("div",{ref:"galleryContainer",class:Object(r.w)(["Gallery",{"-long":e.tooManyAttachments&&e.hidingLong}])},[Object(r.k)("div",i,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.rows,(t,n)=>(Object(r.D)(),Object(r.j)("div",{key:n,class:Object(r.w)(["gallery-row",{"-audio":t.audio,"-minimal":t.minimal,"-grid":e.grid}]),style:Object(r.x)(e.rowStyle(t))},[Object(r.k)("div",{class:Object(r.w)(["gallery-row-inner",{"-grid":e.grid}])},[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(t.items,(i,o)=>(Object(r.D)(),Object(r.h)(b,{key:i.id,class:"gallery-item",nsfw:e.nsfw,attachment:i,size:e.size,editable:e.editable,remove:e.removeAttachment,"shift-up":!(0===o&&0===n)&&e.shiftUpAttachment,"shift-dn":!(o===t.items.length-1&&n===e.rows.length-1)&&e.shiftDnAttachment,edit:e.editAttachment,description:e.descriptions&&e.descriptions[i.id],"hide-description":"small"===e.size||e.tooManyAttachments&&e.hidingLong,style:Object(r.x)(e.itemStyle(i.id,t.items)),onSetMedia:e.onMedia,onNaturalSizeLoad:e.onNaturalSizeLoad},null,8,["nsfw","attachment","size","editable","remove","shift-up","shift-dn","edit","description","hide-description","style","onSetMedia","onNaturalSizeLoad"]))),128))],2)],6))),128))]),e.tooManyAttachments?(Object(r.D)(),Object(r.j)("div",o,[Object(r.k)("div",s,Object(r.O)(e.$t("status.many_attachments",{number:e.attachments.length})),1),Object(r.k)("div",a,[e.hidingLong?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("span",c,[Object(r.k)("button",{class:"button-unstyled -link",onClick:t[0]||(t[0]=t=>e.toggleHidingLong(!0))},Object(r.O)(e.$t("status.collapse_attachments")),1)])),e.hidingLong?(Object(r.D)(),Object(r.j)("span",l,[Object(r.k)("button",{class:"button-unstyled -link",onClick:t[1]||(t[1]=t=>e.toggleHidingLong(!1))},Object(r.O)(e.$t("status.show_all_attachments")),1)])):Object(r.i)("",!0),e.hidingLong?(Object(r.D)(),Object(r.j)("span",u,[Object(r.k)("button",{class:"button-unstyled -link",onClick:t[2]||(t[2]=(...t)=>e.openGallery&&e.openGallery(...t))},Object(r.O)(e.$t("status.open_gallery")),1)])):Object(r.i)("",!0)])])):Object(r.i)("",!0)],2)}]]);t.a=g},function(e,t,n){"use strict";var r=n(0);const i={class:"MentionLink"},o=["href","innerHTML"],s=["href"],a={class:"shortName"},c=Object(r.l)("@"),l=["innerHTML"],u=["innerHTML"],d={class:"userNameFull"},p=Object(r.l)(" @"),h=["innerHTML"],b=["innerHTML"];var m=n(40),f=n.n(m),O=n(5),j=n.n(O),g=n(23),v=n(8),y=n(31),w=n(22),k=n(6),_=n(3),S=["backgroundColor","backgroundPosition","backgroundImage"];function C(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function P(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?C(Object(n),!0).forEach((function(t){j()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):C(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}k.c.add(_.f);var x={name:"MentionLink",components:{UserAvatar:w.default},props:{url:{required:!0,type:String},content:{required:!0,type:String},userId:{required:!1,type:String},userScreenName:{required:!1,type:String}},methods:{onClick:function(){var e=Object(g.a)(this.userId||this.user.id,this.userScreenName||this.user.screen_name);this.$router.push(e)}},computed:P(P({user:function(){return this.url&&this.$store&&this.$store.getters.findUserByUrl(this.url)},isYou:function(){return this.user&&this.user.id===this.currentUser.id},userName:function(){return this.user&&this.userNameFullUi.split("@")[0]},serverName:function(){return this.user&&(this.userNameFullUi.split("@")[1]||this.$store.getters.instanceDomain)},userNameFull:function(){return this.user&&this.user.screen_name},userNameFullUi:function(){return this.user&&this.user.screen_name_ui},highlight:function(){return this.user&&this.mergedConfig.highlight[this.user.screen_name]},highlightType:function(){return this.highlight&&"-"+this.highlight.type},highlightClass:function(){if(this.highlight)return Object(y.a)(this.user)},style:function(){if(this.highlight){var e=Object(y.b)(this.highlight);e.backgroundColor,e.backgroundPosition,e.backgroundImage;return f()(e,S)}},classnames:function(){return[{"-you":this.isYou&&this.shouldBoldenYou,"-highlighted":this.highlight},this.highlightType]},useAtIcon:function(){return this.mergedConfig.useAtIcon},isRemote:function(){return this.userName!==this.userNameFull},shouldShowFullUserName:function(){var e=this.mergedConfig.mentionLinkDisplay;return"short"!==e&&("full"===e||this.isRemote)},shouldShowTooltip:function(){return this.mergedConfig.mentionLinkShowTooltip&&"short"===this.mergedConfig.mentionLinkDisplay&&this.isRemote},shouldShowAvatar:function(){return this.mergedConfig.mentionLinkShowAvatar},shouldShowYous:function(){return this.mergedConfig.mentionLinkShowYous},shouldBoldenYou:function(){return this.mergedConfig.mentionLinkBoldenYou},shouldFadeDomain:function(){return this.mergedConfig.mentionLinkFadeDomain}},Object(v.c)(["mergedConfig"])),Object(v.e)({currentUser:function(e){return e.users.currentUser}}))},D=(n(513),n(4));const T=n.n(D)()(x,[["render",function(e,t,n,m,f,O){return Object(r.D)(),Object(r.j)("span",i,[e.user?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("a",{key:0,href:e.url,class:"original",target:"_blank",innerHTML:e.content},null,8,o)),e.user?(Object(r.D)(),Object(r.j)("span",{key:1,class:Object(r.w)(["new",e.classnames]),style:Object(r.x)(e.style)},[Object(r.k)("a",{class:Object(r.w)(["short button-unstyled",{"-with-tooltip":e.shouldShowTooltip}]),href:e.url,onClick:t[0]||(t[0]=Object(r.Y)((...t)=>e.onClick&&e.onClick(...t),["prevent"]))},[Object(r.k)("span",a,[c,Object(r.k)("span",{class:"userName",innerHTML:e.userName},null,8,l),e.shouldShowFullUserName?(Object(r.D)(),Object(r.j)("span",{key:0,class:Object(r.w)(["serverName",{"-faded":e.shouldFadeDomain}]),innerHTML:"@"+e.serverName},null,10,u)):Object(r.i)("",!0)]),e.isYou&&e.shouldShowYous?(Object(r.D)(),Object(r.j)("span",{key:0,class:Object(r.w)({"-you":e.shouldBoldenYou})},Object(r.O)(" "+e.$t("status.you")),3)):Object(r.i)("",!0)],10,s),e.shouldShowTooltip?(Object(r.D)(),Object(r.j)("span",{key:0,class:Object(r.w)(["full popover-default",[e.highlightType]])},[Object(r.k)("span",d,[p,Object(r.k)("span",{class:"userName",innerHTML:e.userName},null,8,h),Object(r.k)("span",{class:Object(r.w)(["serverName",{"-faded":e.shouldFadeDomain}]),innerHTML:"@"+e.serverName},null,10,b)])],2)):Object(r.i)("",!0)],6)):Object(r.i)("",!0)])}]]);t.a=T},,function(e,t,n){"use strict";n.d(t,"a",(function(){return p}));var r=n(0);const i={class:"MentionsLine"},o={key:0,class:"extraMentions"},s={key:0,class:"fullExtraMentions"};var a=n(5),c=n.n(a),l=n(79),u=n(8);function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var p=5,h={name:"MentionsLine",props:{mentions:{required:!0,type:Array}},data:function(){return{expanded:!1}},components:{MentionLink:l.a},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?d(Object(n),!0).forEach((function(t){c()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):d(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({mentionsComputed:function(){return this.mentions.slice(0,p)},extraMentions:function(){return this.mentions.slice(p)},manyMentions:function(){return this.extraMentions.length>0}},Object(u.c)(["mergedConfig"])),methods:{toggleShowMore:function(){this.expanded=!this.expanded}}},b=(n(514),n(4));const m=n.n(b)()(h,[["render",function(e,t,n,a,c,l){const u=Object(r.J)("MentionLink");return Object(r.D)(),Object(r.j)("span",i,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.mentionsComputed,e=>(Object(r.D)(),Object(r.h)(u,{key:e.index,class:"mention-link",content:e.content,url:e.url},null,8,["content","url"]))),128)),e.manyMentions?(Object(r.D)(),Object(r.j)("span",o,[e.expanded?(Object(r.D)(),Object(r.j)("span",s,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.extraMentions,e=>(Object(r.D)(),Object(r.h)(u,{key:e.index,class:"mention-link",content:e.content,url:e.url},null,8,["content","url"]))),128))])):Object(r.i)("",!0),e.expanded?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("button",{key:1,class:"button-unstyled showMoreLess",onClick:t[0]||(t[0]=(...t)=>e.toggleShowMore&&e.toggleShowMore(...t))},Object(r.O)(e.$t("status.plus_more",{number:e.extraMentions.length})),1)),e.expanded?(Object(r.D)(),Object(r.j)("button",{key:2,class:"button-unstyled showMoreLess",onClick:t[1]||(t[1]=(...t)=>e.toggleShowMore&&e.toggleShowMore(...t))},Object(r.O)(e.$t("general.show_less")),1)):Object(r.i)("",!0)])):Object(r.i)("",!0)])}]]);t.b=m},,,,,,,,,,,,,,,function(e,t,n){"use strict";var r={fileSizeFormat:function(e){var t,n=["B","KiB","MiB","GiB","TiB"];return e<1?e+" "+n[0]:(t=Math.min(Math.floor(Math.log(e)/Math.log(1024)),n.length-1),{num:e=1*(e/Math.pow(1024,t)).toFixed(2),unit:n[t]})}};t.a=r},,,function(e,t,n){"use strict";var r=n(12),i=n.n(r),o=n(15),s=n(44),a=function(e){var t=e.store,n=e.credentials,r=e.older,o=void 0!==r&&r,s=e.since,a={credentials:n},l=t.getters,u=(t.rootState||t.state).statuses.notifications,d=l.mergedConfig.hideMutedPosts;if(a.withMuted=!d,a.timeline="notifications",o)return u.minId!==Number.POSITIVE_INFINITY&&(a.until=u.minId),c({store:t,args:a,older:o});void 0===s&&u.maxId!==Number.POSITIVE_INFINITY?a.since=u.maxId:null!==s&&(a.since=s);var p=c({store:t,args:a,older:o}),h=u.data,b=h.filter((function(e){return e.seen})).map((function(e){return e.id}));return h.length-b.length>0&&b.length>0&&(a.since=Math.max.apply(Math,i()(b)),c({store:t,args:a,older:o})),p},c=function(e){var t=e.store,n=e.args,r=e.older;return o.c.fetchTimeline(n).then((function(e){if(e.errors)throw new Error("".concat(e.status," ").concat(e.statusText));var n=e.data;return function(e){var t=e.store,n=e.notifications,r=e.older;t.dispatch("addNewNotifications",{notifications:n,older:r})}({store:t,notifications:n,older:r}),n})).catch((function(e){t.dispatch("pushGlobalNotice",{level:"error",messageKey:"notifications.error",messageArgs:[e.message],timeout:5e3})}))},l={fetchAndUpdate:a,startFetching:function(e){var t=e.credentials,n=e.store;setTimeout((function(){return n.dispatch("setNotificationsSilence",!1)}),1e4);var r=function(){return a({credentials:t,store:n})};return r(),Object(s.a)(r,2e4)}};t.a=l},,function(e,t,n){"use strict";var r,i,o,s=(r=[],i=function(e){return e.complete&&0!==e.naturalHeight},{initFaviconService:function(){document.querySelectorAll('link[rel="icon"]').forEach((function(e){if(e){var t=document.createElement("canvas");t.width=128,t.height=128;var n=new Image;n.crossOrigin="anonymous",n.src=e.href;var i=t.getContext("2d");r.push({favcanvas:t,favimg:n,favcontext:i,favicon:e})}}))},clearFaviconBadge:o=function(){0!==r.length&&r.forEach((function(e){var t=e.favimg,n=e.favcanvas,r=e.favcontext,o=e.favicon;t&&r&&o&&(r.clearRect(0,0,128,128),i(t)&&r.drawImage(t,0,0,t.width,t.height,0,0,128,128),o.href=n.toDataURL("image/png"))}))},drawFaviconBadge:function(){0!==r.length&&(o(),r.forEach((function(e){var t=e.favimg,n=e.favcanvas,r=e.favcontext,o=e.favicon;if(t&&r&&r){var s=getComputedStyle(document.body),a="".concat(s.getPropertyValue("--badgeNotification")||"rgb(240, 100, 100)");i(t)&&r.drawImage(t,0,0,t.width,t.height,0,0,128,128),r.fillStyle=a,r.beginPath(),r.arc(96,32,32,0,2*Math.PI,!1),r.fill(),o.href=n.toDataURL("image/png")}})))}});t.a=s},,,function(e,t,n){"use strict";var r=n(0);const i=["disabled"];var o={props:{disabled:{type:Boolean},click:{type:Function,default:function(){return Promise.resolve()}}},data:function(){return{progress:!1}},methods:{onClick:function(){var e=this;this.progress=!0,this.click().then((function(){e.progress=!1}))}}},s=n(4);const a=n.n(s)()(o,[["render",function(e,t,n,o,s,a){return Object(r.D)(),Object(r.j)("button",{disabled:s.progress||n.disabled,onClick:t[0]||(t[0]=(...e)=>a.onClick&&a.onClick(...e))},[s.progress&&e.$slots.progress?Object(r.I)(e.$slots,"progress",{key:0}):Object(r.I)(e.$slots,"default",{key:1})],8,i)}]]);t.a=a},,,,,,,,,,,,,,,,,function(e,t,n){"use strict";n.d(t,"b",(function(){return f})),n.d(t,"c",(function(){return O}));var r=n(5),i=n.n(r),o=n(11),s=n.n(o),a=n(317),c=n.n(a),l=n(43),u=n(70),d=n(38);function p(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return h(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return h(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function b(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function m(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?b(Object(n),!0).forEach((function(t){i()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):b(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var f={expertLevel:0,colors:{},theme:void 0,customTheme:void 0,customThemeSource:void 0,hideISP:!1,hideInstanceWallpaper:!1,hideShoutbox:!1,hideMutedPosts:void 0,hideMutedThreads:void 0,hideWordFilteredPosts:void 0,muteBotStatuses:void 0,collapseMessageWithSubject:void 0,padEmoji:!0,hideAttachments:!1,hideAttachmentsInConv:!1,maxThumbnails:16,hideNsfw:!0,preloadImage:!0,loopVideo:!0,loopVideoSilentOnly:!0,streaming:!1,emojiReactionsOnTimeline:!0,alwaysShowNewPostButton:!1,autohideFloatingPostButton:!1,pauseOnUnfocused:!0,stopGifs:!0,replyVisibility:"all",thirdColumnMode:"notifications",notificationVisibility:{follows:!0,mentions:!0,likes:!0,repeats:!0,moves:!0,emojiReactions:!0,followRequest:!0,chatMention:!0,polls:!0},webPushNotifications:!1,muteWords:[],highlight:{},interfaceLanguage:(window.navigator.language||"en").split("-")[0],hideScopeNotice:!1,useStreamingApi:!0,sidebarRight:void 0,scopeCopy:void 0,subjectLineBehavior:void 0,alwaysShowSubjectInput:void 0,postContentType:void 0,minimalScopesMode:void 0,hideFilteredStatuses:void 0,playVideosInModal:!1,useOneClickNsfw:!1,useContainFit:!0,disableStickyHeaders:!1,showScrollbars:!1,greentext:void 0,useAtIcon:void 0,mentionLinkDisplay:void 0,mentionLinkShowTooltip:void 0,mentionLinkShowAvatar:void 0,mentionLinkFadeDomain:void 0,mentionLinkShowYous:void 0,mentionLinkBoldenYou:void 0,hidePostStats:void 0,hideBotIndication:void 0,hideUserStats:void 0,virtualScrolling:void 0,sensitiveByDefault:void 0,sensitiveIfSubject:void 0,renderMisskeyMarkdown:void 0,conversationDisplay:void 0,conversationTreeAdvanced:void 0,conversationOtherRepliesButton:void 0,conversationTreeFadeAncestors:void 0,maxDepthInThread:void 0},O=Object.entries(f).filter((function(e){var t=s()(e,2);t[0];return void 0===t[1]})).map((function(e){var t=s()(e,2),n=t[0];t[1];return n})),j={state:m({},f),getters:{defaultConfig:function(e,t,n,r){var i=n.instance;return m(m({},f),Object.fromEntries(O.map((function(e){return[e,i[e]]}))))},mergedConfig:function(e,t,n,r){return m(m({},r.defaultConfig),Object.fromEntries(Object.entries(e).filter((function(e){var t=s()(e,2);t[0];return void 0!==t[1]}))))}},mutations:{setOption:function(e,t){var n=t.name,r=t.value;e[n]=r},setHighlight:function(e,t){var n=t.user,r=t.color,i=t.type,o=this.state.config.highlight[n];r||i?e.highlight[n]={color:r||o.color,type:i||o.type}:delete e.highlight[n]}},actions:{loadSettings:function(e,t){var n,r=e.dispatch,i=new Set(Object.keys(f)),o=new Set(Object.keys(t)),s=new Set,a=p(o);try{for(a.s();!(n=a.n()).done;){var c=n.value;i.has(c)&&s.add(c)}}catch(e){a.e(e)}finally{a.f()}s.forEach((function(e){return r("setOption",{name:e,value:t[e]})}))},setHighlight:function(e,t){var n=e.commit;e.dispatch;n("setHighlight",{user:t.user,color:t.color,type:t.type})},setOption:function(e,t){var n=e.commit,r=e.dispatch,i=t.name,o=t.value;switch(n("setOption",{name:i,value:o}),i){case"theme":Object(l.l)(o);break;case"customTheme":case"customThemeSource":Object(l.b)(o);break;case"interfaceLanguage":u.a.setLanguage(this.getters.i18n,o),c.a.set("userLanguage",d.a.internalToBackendLocale(o));break;case"thirdColumnMode":r("setLayoutWidth",void 0)}}}};t.a=j},,,,,function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var r=n(49),i=n.n(r),o=function(e,t){var n=e.text.toLowerCase(),r=e.summary.toLowerCase();return i()(t,(function(e){return n.includes(e.toLowerCase())||r.includes(e.toLowerCase())}))}},function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r=function(e,t){if("Notification"in window&&"granted"===window.Notification.permission&&!e.statuses.notifications.desktopNotificationSilence){var n=new window.Notification(t.title,t);setTimeout(n.close.bind(n),5e3)}}},,,,,,,,,,function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r=function e(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=r.top,s=void 0===o?0:o,a=r.left,c=void 0===a?0:a,l=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],u={top:s+t.offsetTop,left:c+t.offsetLeft};if(!l&&t!==window){var d=i(t),p=d.topPadding,h=d.leftPadding;u.top+=l?0:p,u.left+=l?0:h}if(t.offsetParent&&"sticky"!==window.getComputedStyle(t.offsetParent).position&&(n===window||n.contains(t.offsetParent)||n===t.offsetParent))return e(t.offsetParent,n,u,!1);if(n!==window){var b=i(n),m=b.topPadding,f=b.leftPadding;u.top+=m,u.left+=f}return u},i=function(e){var t=window.getComputedStyle(e)["padding-top"],n=Number(t.substring(0,t.length-2)),r=window.getComputedStyle(e)["padding-left"];return{topPadding:n,leftPadding:Number(r.substring(0,r.length-2))}}},function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return i}));var r=function(e){var t=e.filename,n=void 0===t?"data":t,r=e.getExportedObject;return{exportData:function(){var e=JSON.stringify(r(),null,2),t=document.createElement("a");t.setAttribute("download","".concat(n,".json")),t.setAttribute("href","data:application/json;base64,"+window.btoa(e)),t.style.display="none",document.body.appendChild(t),t.click(),document.body.removeChild(t)}}},i=function(e){var t=e.onImport,n=e.onImportFailure,r=e.validator,i=void 0===r?function(){return!0}:r;return{importData:function(){var e=document.createElement("input");e.setAttribute("type","file"),e.setAttribute("accept",".json"),e.addEventListener("change",(function(e){if(e.target.files[0]){var r=new FileReader;r.onload=function(e){var r=e.target;try{var o=JSON.parse(r.result),s=i(o);!0===s?t(o):n({validationResult:s})}catch(e){n({error:e})}},r.readAsText(e.target.files[0])}})),document.body.appendChild(e),e.click(),document.body.removeChild(e)}}}},function(e,t,n){"use strict";var r=n(0);const i={class:"Flash"},o={key:0,class:"label"},s={key:1,class:"label"},a={key:2,class:"label"};var c,l=(c=null,{getRuffle:function(){return new Promise((function(e,t){if(c)e(c);else{window.RufflePlayer={},window.RufflePlayer.config={polyfills:!1,publicPath:"/static/ruffle"};var n=document.createElement("script");n.src="/static/ruffle/ruffle.js",n.type="text/javascript",n.onerror=function(e){t(e)},n.onabort=function(e){t(e)},n.oncancel=function(e){t(e)},n.onload=function(){c=window.RufflePlayer,e(c)},document.body.appendChild(n)}}))}}),u=n(6),d=n(3);u.c.add(d.lb,d.z);var p={props:["src"],data:function(){return{player:!1,loaded:!1,ruffleInstance:null}},methods:{openPlayer:function(){var e=this;this.player||(this.player="hidden",l.getRuffle().then((function(t){var n=t.newest().createPlayer();n.config={letterbox:"on"},e.$refs.container.appendChild(n),n.style.width="100%",n.style.height="100%",n.load(e.src).then((function(){e.player=!0})).catch((function(t){console.error("Error loading ruffle",t),e.player="error"})),e.ruffleInstance=n,e.$emit("playerOpened")})))},closePlayer:function(){this.ruffleInstance&&this.ruffleInstance.remove(),this.player=!1,this.$emit("playerClosed")}}},h=(n(508),n(4));const b=n.n(h)()(p,[["render",function(e,t,n,c,l,u){const d=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("div",i,[!0===e.player||"hidden"===e.player?(Object(r.D)(),Object(r.j)("div",{key:0,ref:"container",class:Object(r.w)(["player",{hidden:"hidden"===e.player}])},null,2)):Object(r.i)("",!0),!0!==e.player?(Object(r.D)(),Object(r.j)("button",{key:1,class:"button-unstyled placeholder",onClick:t[0]||(t[0]=(...t)=>e.openPlayer&&e.openPlayer(...t))},["hidden"===e.player?(Object(r.D)(),Object(r.j)("span",o,Object(r.O)(e.$t("general.loading")),1)):Object(r.i)("",!0),"error"===e.player?(Object(r.D)(),Object(r.j)("span",s,Object(r.O)(e.$t("general.flash_fail")),1)):(Object(r.D)(),Object(r.j)("span",a,[Object(r.k)("p",null,Object(r.O)(e.$t("general.flash_content")),1),Object(r.k)("p",null,[Object(r.m)(d,{icon:"exclamation-triangle"}),Object(r.l)(" "+Object(r.O)(e.$t("general.flash_security")),1)])]))])):Object(r.i)("",!0)])}]]);t.a=b},function(e,t,n){"use strict";var r=n(0);const i=["disabled","title"];var o=n(11),s=n.n(o),a=function(e,t){return new Promise((function(n,r){t.state.api.backendInteractor.followUser({id:e}).then((function(e){if(t.commit("updateUserRelationship",[e]),!(e.following||e.locked&&e.requested))return function e(t,n,r){return new Promise((function(e,i){setTimeout((function(){r.state.api.backendInteractor.fetchUserRelationship({id:n}).then((function(e){return r.commit("updateUserRelationship",[e]),e})).then((function(n){return e([n.following,n.requested,n.locked,t])})).catch((function(e){return i(e)}))}),500)})).then((function(t){var i=s()(t,4),o=i[0],a=i[1],c=i[2],l=i[3];o||c&&a||!(l<=3)||e(++l,n,r)}))}(1,e,t).then((function(){n()}));n()}))}))},c={props:["relationship","user","labelFollowing","buttonClass"],data:function(){return{inProgress:!1}},computed:{isPressed:function(){return this.inProgress||this.relationship.following},title:function(){return this.inProgress||this.relationship.following?this.$t("user_card.follow_unfollow"):this.relationship.requested?this.$t("user_card.follow_cancel"):this.$t("user_card.follow")},label:function(){return this.inProgress?this.$t("user_card.follow_progress"):this.relationship.following?this.labelFollowing||this.$t("user_card.following"):this.relationship.requested?this.$t("user_card.follow_sent"):this.$t("user_card.follow")},disabled:function(){return this.inProgress||this.user.deactivated}},methods:{onClick:function(){this.relationship.following||this.relationship.requested?this.unfollow():this.follow()},follow:function(){var e=this;this.inProgress=!0,a(this.relationship.id,this.$store).then((function(){e.inProgress=!1}))},unfollow:function(){var e=this,t=this.$store;this.inProgress=!0,function(e,t){return new Promise((function(n,r){t.state.api.backendInteractor.unfollowUser({id:e}).then((function(e){t.commit("updateUserRelationship",[e]),n({updated:e})}))}))}(this.relationship.id,t).then((function(){e.inProgress=!1,t.commit("removeStatus",{timeline:"friends",userId:e.relationship.id})}))}}},l=n(4);const u=n.n(l)()(c,[["render",function(e,t,n,o,s,a){return Object(r.D)(),Object(r.j)("button",{class:Object(r.w)(["btn button-default follow-button",{toggled:e.isPressed}]),disabled:e.disabled,title:e.title,onClick:t[0]||(t[0]=(...t)=>e.onClick&&e.onClick(...t))},Object(r.O)(e.label),11,i)}]]);t.a=u},function(e,t,n){"use strict";var r=n(0);const i=["src","loop","controls","alt","title"];var o={props:["attachment","controls"],data:function(){return{blocksSuspend:!1,hasAudio:!0}},computed:{loopVideo:function(){return this.$store.getters.mergedConfig.loopVideoSilentOnly?!this.hasAudio:this.$store.getters.mergedConfig.loopVideo}},methods:{onPlaying:function(e){this.setHasAudio(e),this.loopVideo?this.$emit("play",{looping:!0}):this.$emit("play")},onPaused:function(e){this.$emit("pause")},setHasAudio:function(e){var t=e.srcElement||e.target;this.hasAudio&&(void 0!==t.webkitAudioDecodedByteCount&&t.webkitAudioDecodedByteCount>0||void 0!==t.mozHasAudio&&t.mozHasAudio||void 0!==t.audioTracks&&t.audioTracks.length>0||(this.hasAudio=!1))}}},s=n(4);const a=n.n(s)()(o,[["render",function(e,t,n,o,s,a){return Object(r.D)(),Object(r.j)("video",{class:"video",preload:"metadata",src:e.attachment.url,loop:e.loopVideo,controls:e.controls,alt:e.attachment.description,title:e.attachment.description,playsinline:"",onPlaying:t[0]||(t[0]=(...t)=>e.onPlaying&&e.onPlaying(...t)),onPause:t[1]||(t[1]=(...t)=>e.onPaused&&e.onPaused(...t))},null,40,i)}]]);t.a=a},function(e,t,n){"use strict";var r=n(0);const i=["href"],o={key:0,class:"card-image"},s=["src"],a={class:"card-content"},c={class:"card-host faint"},l={key:0,class:"nsfw-alert alert warning"},u={class:"card-title"},d={key:0,class:"card-description"};var p=n(5),h=n.n(p),b=n(8);function m(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var f={name:"LinkPreview",props:["card","size","nsfw"],data:function(){return{imageLoaded:!1}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?m(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):m(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({useImage:function(){return this.card.image&&!this.censored&&"hide"!==this.size},censored:function(){return this.nsfw&&this.hideNsfwConfig},useDescription:function(){return this.card.description&&/\S/.test(this.card.description)},hideNsfwConfig:function(){return this.mergedConfig.hideNsfw}},Object(b.c)(["mergedConfig"])),created:function(){var e=this;if(this.useImage){var t=new Image;t.onload=function(){e.imageLoaded=!0},t.src=this.card.image}}},O=(n(522),n(4));const j=n.n(O)()(f,[["render",function(e,t,n,p,h,b){return Object(r.D)(),Object(r.j)("div",null,[Object(r.k)("a",{class:"link-preview-card",href:e.card.url,target:"_blank",rel:"noopener"},[e.useImage&&e.imageLoaded?(Object(r.D)(),Object(r.j)("div",o,[Object(r.k)("img",{src:e.card.image},null,8,s)])):Object(r.i)("",!0),Object(r.k)("div",a,[Object(r.k)("span",c,[e.censored?(Object(r.D)(),Object(r.j)("span",l,Object(r.O)(e.$t("status.nsfw")),1)):Object(r.i)("",!0),Object(r.l)(" "+Object(r.O)(e.card.provider_name),1)]),Object(r.k)("h4",u,Object(r.O)(e.card.title),1),e.useDescription?(Object(r.D)(),Object(r.j)("p",d,Object(r.O)(e.card.description),1)):Object(r.i)("",!0)])],8,i)])}]]);t.a=j},function(e,t,n){"use strict";var r=n(0);const i={class:"remote-follow"},o=["action"],s=["value"],a=Object(r.k)("input",{type:"hidden",name:"profile",value:""},null,-1),c={click:"submit",class:"button-default remote-button"};var l={props:["user"],computed:{subscribeUrl:function(){var e=new URL(this.user.statusnet_profile_url);return"".concat(e.protocol,"//").concat(e.host,"/main/ostatus")}}},u=(n(525),n(4));const d=n.n(u)()(l,[["render",function(e,t,n,l,u,d){return Object(r.D)(),Object(r.j)("div",i,[Object(r.k)("form",{method:"POST",action:e.subscribeUrl},[Object(r.k)("input",{type:"hidden",name:"nickname",value:e.user.screen_name},null,8,s),a,Object(r.k)("button",c,Object(r.O)(e.$t("user_card.remote_follow")),1)],8,o)])}]]);t.a=d},function(e,t,n){"use strict";var r=n(0);const i={class:"avatars"};var o=n(22),s=n(23),a={props:["users"],computed:{slicedUsers:function(){return this.users?this.users.slice(0,15):[]}},components:{UserAvatar:o.default},methods:{userProfileLink:function(e){return Object(s.a)(e.id,e.screen_name,this.$store.state.instance.restrictedNicknames)}}},c=(n(551),n(4));const l=n.n(c)()(a,[["render",function(e,t,n,o,s,a){const c=Object(r.J)("UserAvatar"),l=Object(r.J)("router-link");return Object(r.D)(),Object(r.j)("div",i,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.slicedUsers,t=>(Object(r.D)(),Object(r.h)(l,{key:t.id,to:e.userProfileLink(t),class:"avatars-item"},{default:Object(r.V)(()=>[Object(r.m)(c,{user:t,class:"avatar-small"},null,8,["user"])]),_:2},1032,["to"]))),128))])}]]);t.a=l},,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";var r=n(13),i=n.n(r),o=n(10),s=n.n(o);t.a=function(e){var t=a(e.emoji),n=e.store&&c(e.store);return function(r){var i=r[0];return":"===i&&e.emoji?t(r):"@"===i&&n?n(r):[]}};var a=function(e){return function(t){var n=t.toLowerCase().substr(1);return e.filter((function(e){return e.displayText.toLowerCase().match(n)})).sort((function(e,t){var r=0,i=0;return r+=e.displayText.toLowerCase()===n?200:0,i+=t.displayText.toLowerCase()===n?200:0,r+=e.imageUrl?100:0,i+=t.imageUrl?100:0,r+=e.displayText.toLowerCase().startsWith(n)?10:0,i+=t.displayText.toLowerCase().startsWith(n)?10:0,r-=e.displayText.length,(i-=t.displayText.length)-r+(e.displayText>t.displayText?.5:-.5)}))}},c=function(e){var t,n=e.dispatch,r=e.state,o=[],a="",c=null,l=null,u=function(e){return l&&l(),new Promise((function(t,r){c=setTimeout((function(){(function(e){return n("searchUsers",{query:e})})(e).then(t).catch(r)}),300),l=function(){clearTimeout(c),t([])}}))};return t=i()(s.a.mark((function e(t){var n,i;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.toLowerCase().substr(1),a!==n){e.next=3;break}return e.abrupt("return",o);case 3:if(o=[],a=n,n.includes("@")){e.next=8;break}return e.next=8,u(n);case 8:return i=r.users.users.filter((function(e){return e.screen_name.toLowerCase().startsWith(n)||e.name.toLowerCase().startsWith(n)})).slice(0,20).sort((function(e,t){var r=0,i=0;return r+=e.screen_name.toLowerCase().startsWith(n)?2:0,i+=t.screen_name.toLowerCase().startsWith(n)?2:0,r+=e.name.toLowerCase().startsWith(n)?1:0,10*((i+=t.name.toLowerCase().startsWith(n)?1:0)-r)+(e.name>t.name?1:-1)+(e.screen_name>t.screen_name?1:-1)})).map((function(e){var t=e.screen_name;return{displayText:e.screen_name_ui,detailText:e.name,imageUrl:e.profile_image_url_original,replacement:"@"+t+" "}})),o=i||[],e.abrupt("return",o);case 11:case"end":return e.stop()}}),e)}))),function(e){return t.apply(this,arguments)}}},,,,,,,function(e,t,n){"use strict";var r=n(0);const i={for:"interface-language-switcher"},o=Object(r.l)(" "+Object(r.O)(" ")+" "),s=["value"];var a=n(38),c={components:{Select:n(52).a},props:{promptText:{type:String,required:!0},language:{type:String,required:!0},setLanguage:{type:Function,required:!0}},computed:{languages:function(){return a.a.languages},controlledLanguage:{get:function(){return this.language},set:function(e){this.setLanguage(e)}}},methods:{getLanguageName:function(e){return a.a.getLanguageName(e)}}},l=n(4);const u=n.n(l)()(c,[["render",function(e,t,n,a,c,l){const u=Object(r.J)("Select");return Object(r.D)(),Object(r.j)("div",null,[Object(r.k)("label",i,Object(r.O)(n.promptText),1),o,Object(r.m)(u,{id:"interface-language-switcher",modelValue:l.controlledLanguage,"onUpdate:modelValue":t[0]||(t[0]=e=>l.controlledLanguage=e)},{default:Object(r.V)(()=>[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(l.languages,e=>(Object(r.D)(),Object(r.j)("option",{key:e.code,value:e.code},Object(r.O)(e.name),9,s))),128))]),_:1},8,["modelValue"])])}]]);t.a=u},function(e,t,n){"use strict";var r=n(0);const i={key:0,class:"ScopeSelector"},o=["title"],s=Object(r.l)(" "+Object(r.O)(" ")+" "),a=["title"],c=Object(r.l)(" "+Object(r.O)(" ")+" "),l=["title"],u=Object(r.l)(" "+Object(r.O)(" ")+" "),d=["title"],p=["title"];var h=n(6),b=n(3);h.c.add(b.y,b.I,b.O,b.P);var m={props:["showAll","userDefault","originalScope","initialScope","onScopeChange"],data:function(){return{currentScope:this.initialScope}},computed:{showNothing:function(){return!(this.showPublic||this.showUnlisted||this.showPrivate||this.showDirect)},showPublic:function(){return"direct"!==this.originalScope&&this.shouldShow("public")},showLocal:function(){return"direct"!==this.originalScope&&this.shouldShow("local")},showUnlisted:function(){return"direct"!==this.originalScope&&this.shouldShow("unlisted")},showPrivate:function(){return"direct"!==this.originalScope&&this.shouldShow("private")},showDirect:function(){return this.shouldShow("direct")},css:function(){return{public:{selected:"public"===this.currentScope},unlisted:{selected:"unlisted"===this.currentScope},private:{selected:"private"===this.currentScope},direct:{selected:"direct"===this.currentScope},local:{selected:"local"===this.currentScope}}}},methods:{shouldShow:function(e){return this.showAll||this.currentScope===e||this.originalScope===e||this.userDefault===e||"direct"===e},changeVis:function(e){this.currentScope=e,this.onScopeChange&&this.onScopeChange(e)}}},f=(n(501),n(4));const O=n.n(f)()(m,[["render",function(e,t,n,h,b,m){const f=Object(r.J)("FAIcon");return e.showNothing?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",i,[e.showDirect?(Object(r.D)(),Object(r.j)("button",{key:0,class:Object(r.w)(["button-unstyled scope",e.css.direct]),title:e.$t("post_status.scope.direct"),type:"button",onClick:t[0]||(t[0]=t=>e.changeVis("direct"))},[Object(r.m)(f,{icon:"envelope",class:"fa-scale-110 fa-old-padding"})],10,o)):Object(r.i)("",!0),s,e.showPrivate?(Object(r.D)(),Object(r.j)("button",{key:1,class:Object(r.w)(["button-unstyled scope",e.css.private]),title:e.$t("post_status.scope.private"),type:"button",onClick:t[1]||(t[1]=t=>e.changeVis("private"))},[Object(r.m)(f,{icon:"lock",class:"fa-scale-110 fa-old-padding"})],10,a)):Object(r.i)("",!0),c,e.showUnlisted?(Object(r.D)(),Object(r.j)("button",{key:2,class:Object(r.w)(["button-unstyled scope",e.css.unlisted]),title:e.$t("post_status.scope.unlisted"),type:"button",onClick:t[2]||(t[2]=t=>e.changeVis("unlisted"))},[Object(r.m)(f,{icon:"lock-open",class:"fa-scale-110 fa-old-padding"})],10,l)):Object(r.i)("",!0),u,e.showPublic?(Object(r.D)(),Object(r.j)("button",{key:3,class:Object(r.w)(["button-unstyled scope",e.css.public]),title:e.$t("post_status.scope.public"),type:"button",onClick:t[3]||(t[3]=t=>e.changeVis("public"))},[Object(r.m)(f,{icon:"globe",class:"fa-scale-110 fa-old-padding"})],10,d)):Object(r.i)("",!0),e.showLocal?(Object(r.D)(),Object(r.j)("button",{key:4,class:Object(r.w)(["button-unstyled scope",e.css.local]),title:e.$t("post_status.scope.local"),type:"button",onClick:t[4]||(t[4]=t=>e.changeVis("local"))},[Object(r.m)(f,{icon:"users",class:"fa-scale-110 fa-old-padding"})],10,p)):Object(r.i)("",!0)]))}]]);t.a=O},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";n.d(t,"b",(function(){return m}));var r=n(11),i=n.n(r),o=n(5),s=n.n(o),a=n(39),c=n.n(a),l=n(16),u=n.n(l);function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var p=function(e,t){var n=e.rootState,r=e.commit,i=t.path,o=t.value,s={};return c()(s,i,o),n.api.backendInteractor.updateProfile({params:s}).then((function(e){r("addNewUsers",[e]),r("setCurrentUser",e)}))},h=function(e,t){var n=e.rootState,r=e.commit,i=t.path,o=t.value,s=t.oldValue,a={};return c()(a,i,o),n.api.backendInteractor.updateNotificationSettings({settings:a}).then((function(e){"success"===e.status?r("confirmServerSideOption",{name:name,value:o}):r("confirmServerSideOption",{name:name,value:s})}))},b={defaultScope:"source.privacy",defaultNSFW:"source.sensitive",stripRichContent:{get:"source.pleroma.no_rich_text",set:"no_rich_text"},locked:"locked",acceptChatMessages:{get:"pleroma.accepts_chat_messages",set:"accepts_chat_messages"},allowFollowingMove:{get:"pleroma.allow_following_move",set:"allow_following_move"},discoverable:{get:"source.pleroma.discoverable",set:"discoverable"},hideFavorites:{get:"pleroma.hide_favorites",set:"hide_favorites"},hideFollowers:{get:"pleroma.hide_followers",set:"hide_followers"},hideFollows:{get:"pleroma.hide_follows",set:"hide_follows"},hideFollowersCount:{get:"pleroma.hide_followers_count",set:"hide_followers_count"},hideFollowsCount:{get:"pleroma.hide_follows_count",set:"hide_follows_count"},webPushHideContents:{get:"pleroma.notification_settings.hide_notification_contents",set:"hide_notification_contents",api:h},blockNotificationsFromStrangers:{get:"pleroma.notification_settings.block_from_strangers",set:"block_from_strangers",api:h}},m=Object.fromEntries(Object.keys(b).map((function(e){return[e,null]}))),f={state:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?d(Object(n),!0).forEach((function(t){s()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):d(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},m),mutations:{confirmServerSideOption:function(e,t){var n=t.name,r=t.value;c()(e,n,r)},wipeServerSideOption:function(e,t){var n=t.name;c()(e,n,null)},wipeAllServerSideOptions:function(e){Object.keys(b).forEach((function(t){c()(e,t,null)}))},setCurrentUser:function(e,t){Object.entries(b).forEach((function(n){var r=i()(n,2),o=r[0],s=r[1],a=s.get,l=void 0===a?s:a;c()(e,o,u()(t._original,l))}))}},actions:{setServerSideOption:function(e,t){var n=e.rootState,r=e.state,i=e.commit,o=(e.dispatch,t.name),s=t.value,a=u()(r,o),c=b[o];if(!c)throw new Error("Invalid server-side setting");var l=c.set,d=void 0===l?c:l,h=c.api,m=void 0===h?p:h;i("wipeServerSideOption",{name:o}),m({rootState:n,commit:i},{path:d,value:s,oldValue:a}).catch((function(e){console.warn("Error setting server-side option:",e),i("confirmServerSideOption",{name:o,value:a})}))},logout:function(e){(0,e.commit)("wipeAllServerSideOptions")}}};t.a=f},,,function(e,t,n){},,function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},,function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},,function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},,function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},,function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var r=n(95),i=n.n(r),o=function(e){return function(e){return i()(e)?e.options:e}(e).props}},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){"use strict";var r=n(0);const i={ref:"panel-body",class:"autocomplete-panel-body"},o=["onClick"],s={class:"image"},a=["src"],c={key:1},l={class:"label"},u={class:"displayText"},d={class:"detailText"};var p=n(5),h=n.n(p),b=n(40),m=n.n(b),f=n(13),O=n.n(f),j=n(326),g=n.n(j),v=n(10),y=n.n(v),w=n(30),k=n.n(w),_=n(55),S=n.n(_),C=function(e){return S()(e,(function(e,t){var n={word:t,start:0,end:t.length};if(e.length>0){var r=e.pop();n.start+=r.end,n.end+=r.end,e.push(r)}return e.push(n),e}),[])},P=function(e){for(var t=[],n="",r=0;r<e.length;r++){var i=e[r];n?!!i.trim()==!!n.trim()?n+=i:(t.push(n),n=i):n=i}return n&&t.push(n),t},x={wordAtPosition:function(e,t){var n=P(e),r=C(n);return k()(r,(function(e){var n=e.start,r=e.end;return n<=t&&r>t}))},addPositionToWords:C,splitByWhitespaceBoundary:P,replaceWord:function(e,t,n){return e.slice(0,t.start)+n+e.slice(t.end)}};const D={class:"emoji-picker panel panel-default panel-body"},T={class:"heading"},I={class:"emoji-tabs"},$=["title","onClick"],z={key:0,class:"additional-tabs"},M=["title"],U={class:"content"},F={class:"emoji-search"},E=["placeholder"],L=["title","onClick"],R={key:0},A=["src"],N={class:"keep-open"},B={key:0,class:"stickers-content"};var V=n(51),H=n(6),q=n(3);function J(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return W(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return W(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function W(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}H.c.add(q.k,q.kb,q.ib);var Y=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(""===t)return e;var n,r=t.toLowerCase(),i=[],o=J(e);try{for(o.s();!(n=o.n()).done;){var s=n.value,a=s.displayText.toLowerCase().indexOf(r);a>-1&&(Array.isArray(i[a])||(i[a]=[]),i[a].push(s))}}catch(e){o.e(e)}finally{o.f()}return i.flat()},G={props:{enableStickerPicker:{required:!1,type:Boolean,default:!1}},data:function(){return{keyword:"",activeGroup:"custom",showingStickers:!1,groupsScrolledClass:"scrolled-top",keepOpen:!1,customEmojiBufferSlice:60,customEmojiTimeout:null,customEmojiLoadAllConfirmed:!1}},components:{StickerPicker:Object(r.n)((function(){return n.e(4).then(n.bind(null,709))})),Checkbox:V.a},methods:{onStickerUploaded:function(e){this.$emit("sticker-uploaded",e)},onStickerUploadFailed:function(e){this.$emit("sticker-upload-failed",e)},onEmoji:function(e){var t=e.imageUrl?":".concat(e.displayText,":"):e.replacement;this.$emit("emoji",{insertion:t,keepOpen:this.keepOpen})},onScroll:function(e){var t=e&&e.target||this.$refs["emoji-groups"];this.updateScrolledClass(t),this.scrolledGroup(t),this.triggerLoadMore(t)},highlight:function(e){var t=this,n=this.$refs["group-"+e].offsetTop;this.setShowStickers(!1),this.activeGroup=e,this.$nextTick((function(){t.$refs["emoji-groups"].scrollTop=n+1}))},updateScrolledClass:function(e){e.scrollTop<=5?this.groupsScrolledClass="scrolled-top":e.scrollTop>=e.scrollTopMax-5?this.groupsScrolledClass="scrolled-bottom":this.groupsScrolledClass="scrolled-middle"},triggerLoadMore:function(e){var t=this.$refs["group-end-custom"];if(t){var n=t.offsetTop+t.offsetHeight,r=e.scrollTop+e.clientHeight,i=e.scrollTop,o=e.scrollHeight;n<i||r===o||!(n-r<64)&&!(i<5)||this.loadEmoji()}},scrolledGroup:function(e){var t=this,n=e.scrollTop+5;this.$nextTick((function(){t.emojisView.forEach((function(e){t.$refs["group-"+e.id].offsetTop<=n&&(t.activeGroup=e.id)}))}))},loadEmoji:function(){this.customEmojiBuffer.length===this.filteredEmoji.length||(this.customEmojiBufferSlice+=60)},startEmojiLoad:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];t||(this.keyword=""),this.$nextTick((function(){e.$refs["emoji-groups"].scrollTop=0}));var n=this.customEmojiBuffer.length,r=n===this.filteredEmoji.length;r&&!t||(this.customEmojiBufferSlice=60)},toggleStickers:function(){this.showingStickers=!this.showingStickers},setShowStickers:function(e){this.showingStickers=e}},watch:{keyword:function(){this.customEmojiLoadAllConfirmed=!1,this.onScroll(),this.startEmojiLoad(!0)}},computed:{activeGroupView:function(){return this.showingStickers?"":this.activeGroup},stickersAvailable:function(){return this.$store.state.instance.stickers?this.$store.state.instance.stickers.length>0:0},filteredEmoji:function(){return Y(this.$store.state.instance.customEmoji||[],this.keyword)},customEmojiBuffer:function(){return this.filteredEmoji.slice(0,this.customEmojiBufferSlice)},emojis:function(){var e=this.$store.state.instance.emoji||[],t=this.customEmojiBuffer;return[{id:"custom",text:this.$t("emoji.custom"),icon:"smile-beam",emojis:t},{id:"standard",text:this.$t("emoji.unicode"),icon:"box-open",emojis:Y(e,this.keyword)}]},emojisView:function(){return this.emojis.filter((function(e){return e.emojis.length>0}))},stickerPickerEnabled:function(){return 0!==(this.$store.state.instance.stickers||[]).length}}},K=(n(503),n(4)),X=n.n(K);var Z=X()(G,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon"),c=Object(r.J)("Checkbox"),l=Object(r.J)("sticker-picker");return Object(r.D)(),Object(r.j)("div",D,[Object(r.k)("div",T,[Object(r.k)("span",I,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.emojis,t=>(Object(r.D)(),Object(r.j)("span",{key:t.id,class:Object(r.w)(["emoji-tabs-item",{active:e.activeGroupView===t.id,disabled:0===t.emojis.length}]),title:t.text,onClick:Object(r.Y)(n=>e.highlight(t.id),["prevent"])},[Object(r.m)(a,{icon:t.icon,"fixed-width":""},null,8,["icon"])],10,$))),128))]),e.stickerPickerEnabled?(Object(r.D)(),Object(r.j)("span",z,[Object(r.k)("span",{class:Object(r.w)(["stickers-tab-icon additional-tabs-item",{active:e.showingStickers}]),title:e.$t("emoji.stickers"),onClick:t[0]||(t[0]=Object(r.Y)((...t)=>e.toggleStickers&&e.toggleStickers(...t),["prevent"]))},[Object(r.m)(a,{icon:"sticky-note","fixed-width":""})],10,M)])):Object(r.i)("",!0)]),Object(r.k)("div",U,[Object(r.k)("div",{class:Object(r.w)(["emoji-content",{hidden:e.showingStickers}])},[Object(r.k)("div",F,[Object(r.W)(Object(r.k)("input",{"onUpdate:modelValue":t[1]||(t[1]=t=>e.keyword=t),type:"text",class:"form-control",placeholder:e.$t("emoji.search_emoji")},null,8,E),[[r.S,e.keyword]])]),Object(r.k)("div",{ref:"emoji-groups",class:Object(r.w)(["emoji-groups",e.groupsScrolledClass]),onScroll:t[2]||(t[2]=(...t)=>e.onScroll&&e.onScroll(...t))},[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.emojisView,t=>(Object(r.D)(),Object(r.j)("div",{key:t.id,class:"emoji-group"},[Object(r.k)("h6",{ref_for:!0,ref:"group-"+t.id,class:"emoji-group-title"},Object(r.O)(t.text),513),(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(t.emojis,n=>(Object(r.D)(),Object(r.j)("span",{key:t.id+n.displayText,title:n.displayText,class:"emoji-item",onClick:Object(r.Y)(t=>e.onEmoji(n),["stop","prevent"])},[n.imageUrl?(Object(r.D)(),Object(r.j)("img",{key:1,src:n.imageUrl},null,8,A)):(Object(r.D)(),Object(r.j)("span",R,Object(r.O)(n.replacement),1))],8,L))),128)),Object(r.k)("span",{ref_for:!0,ref:"group-end-"+t.id},null,512)]))),128))],34),Object(r.k)("div",N,[Object(r.m)(c,{modelValue:e.keepOpen,"onUpdate:modelValue":t[3]||(t[3]=t=>e.keepOpen=t)},{default:Object(r.V)(()=>[Object(r.l)(Object(r.O)(e.$t("emoji.keep_open")),1)]),_:1},8,["modelValue"])])],2),e.showingStickers?(Object(r.D)(),Object(r.j)("div",B,[Object(r.m)(l,{onUploaded:e.onStickerUploaded,onUploadFailed:e.onStickerUploadFailed},null,8,["onUploaded","onUploadFailed"])])):Object(r.i)("",!0)])])}]]),Q=n(137),ee=n(41),te=["imageUrl"];function ne(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function re(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ne(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ne(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}H.c.add(ee.c);var ie,oe={emits:["update:modelValue","shown"],props:{suggest:{required:!0,type:Function},modelValue:{required:!0,type:String},enableEmojiPicker:{required:!1,type:Boolean,default:!1},hideEmojiButton:{required:!1,type:Boolean,default:!1},enableStickerPicker:{required:!1,type:Boolean,default:!1},placement:{required:!1,type:String,default:"auto"},newlineOnCtrlEnter:{required:!1,type:Boolean,default:!1}},data:function(){return{input:void 0,highlighted:0,caret:0,focused:!1,blurTimeout:null,showPicker:!1,temporarilyHideSuggestions:!1,keepOpen:!1,disableClickOutside:!1,suggestions:[]}},components:{EmojiPicker:Z},computed:{padEmoji:function(){return this.$store.getters.mergedConfig.padEmoji},showSuggestions:function(){return this.focused&&this.suggestions&&this.suggestions.length>0&&!this.showPicker&&!this.temporarilyHideSuggestions},textAtCaret:function(){return(this.wordAtCaret||{}).word||""},wordAtCaret:function(){if(this.modelValue&&this.caret)return x.wordAtPosition(this.modelValue,this.caret-1)||{}}},mounted:function(){var e=this.$refs.root,t=e.querySelector(".emoji-input > input")||e.querySelector(".emoji-input > textarea");t&&(this.input=t,this.resize(),t.addEventListener("blur",this.onBlur),t.addEventListener("focus",this.onFocus),t.addEventListener("paste",this.onPaste),t.addEventListener("keyup",this.onKeyUp),t.addEventListener("keydown",this.onKeyDown),t.addEventListener("click",this.onClickInput),t.addEventListener("transitionend",this.onTransition),t.addEventListener("input",this.onInput))},unmounted:function(){var e=this.input;e&&(e.removeEventListener("blur",this.onBlur),e.removeEventListener("focus",this.onFocus),e.removeEventListener("paste",this.onPaste),e.removeEventListener("keyup",this.onKeyUp),e.removeEventListener("keydown",this.onKeyDown),e.removeEventListener("click",this.onClickInput),e.removeEventListener("transitionend",this.onTransition),e.removeEventListener("input",this.onInput))},watch:{showSuggestions:function(e){this.$emit("shown",e)},textAtCaret:(ie=O()(y.a.mark((function e(t){var n,r;return y.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.charAt(0),this.suggestions=[],t!==n){e.next=4;break}return e.abrupt("return");case 4:return e.next=6,this.suggest(t);case 6:if(r=e.sent,this.textAtCaret===t){e.next=9;break}return e.abrupt("return");case 9:if(!(r.length<=0)){e.next=11;break}return e.abrupt("return");case 11:this.suggestions=g()(r,5).map((function(e){var t=e.imageUrl;return re(re({},m()(e,te)),{},{img:t||""})}));case 12:case"end":return e.stop()}}),e,this)}))),function(e){return ie.apply(this,arguments)}),suggestions:{handler:function(e){this.$nextTick(this.resize)},deep:!0}},methods:{focusPickerInput:function(){var e=this.$refs.picker.$el;if(e){var t=e.querySelector("input");t&&t.focus()}},triggerShowPicker:function(){var e=this;this.showPicker=!0,this.$refs.picker.startEmojiLoad(),this.$nextTick((function(){e.scrollIntoView(),e.focusPickerInput()})),this.disableClickOutside=!0,setTimeout((function(){e.disableClickOutside=!1}),0)},togglePicker:function(){this.input.focus(),this.showPicker=!this.showPicker,this.showPicker&&(this.scrollIntoView(),this.$refs.picker.startEmojiLoad(),this.$nextTick(this.focusPickerInput))},replace:function(e){var t=x.replaceWord(this.modelValue,this.wordAtCaret,e);this.$emit("update:modelValue",t),this.caret=0},insert:function(e){var t=e.insertion,n=e.keepOpen,r=e.surroundingSpace,i=void 0===r||r,o=this.modelValue.substring(0,this.caret)||"",s=this.modelValue.substring(this.caret)||"",a=/\s/,c=i&&!a.exec(o.slice(-1))&&o.length&&this.padEmoji>0?" ":"",l=i&&!a.exec(s[0])&&this.padEmoji?" ":"",u=[o,c,t,l,s].join("");this.keepOpen=n,this.$emit("update:modelValue",u);var d=this.caret+(t+l+c).length;n||this.input.focus(),this.$nextTick((function(){this.input.setSelectionRange(d,d),this.caret=d}))},replaceText:function(e,t){var n=this.suggestions.length||0;if(1!==this.textAtCaret.length&&(n>0||t)){var r=(t||this.suggestions[this.highlighted]).replacement,i=x.replaceWord(this.modelValue,this.wordAtCaret,r);this.$emit("update:modelValue",i),this.highlighted=0;var o=this.wordAtCaret.start+r.length;this.$nextTick((function(){this.input.focus(),this.input.setSelectionRange(o,o),this.caret=o})),e.preventDefault()}},cycleBackward:function(e){(this.suggestions.length||0)>1?(this.highlighted-=1,this.highlighted<0&&(this.highlighted=this.suggestions.length-1),e.preventDefault()):this.highlighted=0},cycleForward:function(e){var t=this.suggestions.length||0;t>1?(this.highlighted+=1,this.highlighted>=t&&(this.highlighted=0),e.preventDefault()):this.highlighted=0},scrollIntoView:function(){var e=this,t=this.$refs.picker.$el,n=this.$el.closest(".sidebar-scroller")||this.$el.closest(".post-form-modal-view")||window,r=n===window?n.scrollY:n.scrollTop,i=r+(n===window?n.innerHeight:n.offsetHeight),o=t.offsetHeight+Object(Q.a)(t,n).top,s=r+Math.max(0,o-i);n===window?n.scroll(0,s):n.scrollTop=s,this.$nextTick((function(){var t=e.input.offsetHeight,n=e.$refs.picker;n.$el.getBoundingClientRect().bottom>window.innerHeight&&(n.$el.style.top="auto",n.$el.style.bottom=t+"px")}))},onTransition:function(e){this.resize()},onBlur:function(e){var t=this;this.blurTimeout=setTimeout((function(){t.focused=!1,t.setCaret(e),t.resize()}),200)},onClick:function(e,t){this.replaceText(e,t)},onFocus:function(e){this.blurTimeout&&(clearTimeout(this.blurTimeout),this.blurTimeout=null),this.keepOpen||(this.showPicker=!1),this.focused=!0,this.setCaret(e),this.resize(),this.temporarilyHideSuggestions=!1},onKeyUp:function(e){var t=e.key;this.setCaret(e),this.resize(),this.temporarilyHideSuggestions="Escape"===t},onPaste:function(e){this.setCaret(e),this.resize()},onKeyDown:function(e){var t=this,n=e.ctrlKey,r=e.shiftKey,i=e.key;this.newlineOnCtrlEnter&&n&&"Enter"===i&&(this.insert({insertion:"\n",surroundingSpace:!1}),e.stopPropagation(),e.preventDefault(),this.$nextTick((function(){t.input.blur(),t.input.focus()}))),this.temporarilyHideSuggestions||("Tab"===i&&(r?this.cycleBackward(e):this.cycleForward(e)),"ArrowUp"===i?this.cycleBackward(e):"ArrowDown"===i&&this.cycleForward(e),"Enter"===i&&(n||this.replaceText(e))),"Escape"===i&&(this.temporarilyHideSuggestions||this.input.focus()),this.showPicker=!1,this.resize()},onInput:function(e){this.showPicker=!1,this.setCaret(e),this.resize(),this.$emit("update:modelValue",e.target.value)},onClickInput:function(e){this.showPicker=!1},onClickOutside:function(e){this.disableClickOutside||(this.showPicker=!1)},onStickerUploaded:function(e){this.showPicker=!1,this.$emit("sticker-uploaded",e)},onStickerUploadFailed:function(e){this.showPicker=!1,this.$emit("sticker-upload-Failed",e)},setCaret:function(e){var t=e.target.selectionStart;this.caret=t},resize:function(){var e=this.$refs.panel;if(e){var t=this.$refs.picker.$el,n=this.$refs["panel-body"],r=this.input,i=r.offsetHeight,o=r.offsetTop+i;this.setPlacement(n,e,o),this.setPlacement(t,t,o)}},setPlacement:function(e,t,n){e&&t&&(t.style.top=n+"px",t.style.bottom="auto",("top"===this.placement||"auto"===this.placement&&this.overflowsBottom(e))&&(t.style.top="auto",t.style.bottom=this.input.offsetHeight+"px"))},overflowsBottom:function(e){return e.getBoundingClientRect().bottom>window.innerHeight}}};n(504);const se=X()(oe,[["render",function(e,t,n,p,h,b){const m=Object(r.J)("FAIcon"),f=Object(r.J)("EmojiPicker"),O=Object(r.K)("click-outside");return Object(r.W)((Object(r.D)(),Object(r.j)("div",{ref:"root",class:Object(r.w)(["emoji-input",{"with-picker":!e.hideEmojiButton}])},[Object(r.I)(e.$slots,"default"),e.enableEmojiPicker?(Object(r.D)(),Object(r.j)(r.a,{key:0},[e.hideEmojiButton?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-unstyled emoji-picker-icon",type:"button",onClick:t[0]||(t[0]=Object(r.Y)((...t)=>e.togglePicker&&e.togglePicker(...t),["prevent"]))},[Object(r.m)(m,{icon:["far","smile-beam"]})])),e.enableEmojiPicker?(Object(r.D)(),Object(r.h)(f,{key:1,ref:"picker",class:Object(r.w)([{hide:!e.showPicker},"emoji-picker-panel"]),"enable-sticker-picker":e.enableStickerPicker,onEmoji:e.insert,onStickerUploaded:e.onStickerUploaded,onStickerUploadFailed:e.onStickerUploadFailed},null,8,["class","enable-sticker-picker","onEmoji","onStickerUploaded","onStickerUploadFailed"])):Object(r.i)("",!0)],64)):Object(r.i)("",!0),Object(r.k)("div",{ref:"panel",class:Object(r.w)(["autocomplete-panel",{hide:!e.showSuggestions}])},[Object(r.k)("div",i,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.suggestions,(t,n)=>(Object(r.D)(),Object(r.j)("div",{key:n,class:Object(r.w)(["autocomplete-item",{highlighted:n===e.highlighted}]),onClick:Object(r.Y)(n=>e.onClick(n,t),["stop","prevent"])},[Object(r.k)("span",s,[t.img?(Object(r.D)(),Object(r.j)("img",{key:0,src:t.img},null,8,a)):(Object(r.D)(),Object(r.j)("span",c,Object(r.O)(t.replacement),1))]),Object(r.k)("div",l,[Object(r.k)("span",u,Object(r.O)(t.displayText),1),Object(r.k)("span",d,Object(r.O)(t.detailText),1)])],10,o))),128))],512)],2)],2)),[[O,e.onClickOutside]])}]]);t.a=se},,,,,,,,,,,,,,,,,function(e,t,n){e.exports=n.p+"static/img/nsfw.ca95de9.png"},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";n.r(t),t.default={about:{mrf:{federation:e=>{const{normalize:t}=e;return t(["Federation"])},keyword:{keyword_policies:e=>{const{normalize:t}=e;return t(["Keyword policies"])},ftl_removal:e=>{const{normalize:t}=e;return t(['Removal from "The Whole Known Network" Timeline'])},reject:e=>{const{normalize:t}=e;return t(["Reject"])},replace:e=>{const{normalize:t}=e;return t(["Replace"])},is_replaced_by:e=>{const{normalize:t}=e;return t(["→"])}},mrf_policies:e=>{const{normalize:t}=e;return t(["Enabled MRF policies"])},mrf_policies_desc:e=>{const{normalize:t}=e;return t(["MRF policies manipulate the federation behaviour of the instance.  The following policies are enabled:"])},simple:{simple_policies:e=>{const{normalize:t}=e;return t(["Instance-specific policies"])},instance:e=>{const{normalize:t}=e;return t(["Instance"])},reason:e=>{const{normalize:t}=e;return t(["Reason"])},not_applicable:e=>{const{normalize:t}=e;return t(["N/A"])},accept:e=>{const{normalize:t}=e;return t(["Accept"])},accept_desc:e=>{const{normalize:t}=e;return t(["This instance only accepts messages from the following instances:"])},reject:e=>{const{normalize:t}=e;return t(["Reject"])},reject_desc:e=>{const{normalize:t}=e;return t(["This instance will not accept messages from the following instances:"])},quarantine:e=>{const{normalize:t}=e;return t(["Quarantine"])},quarantine_desc:e=>{const{normalize:t}=e;return t(["This instance will send only public posts to the following instances:"])},ftl_removal:e=>{const{normalize:t}=e;return t(['Removal from "Known Network" Timeline'])},ftl_removal_desc:e=>{const{normalize:t}=e;return t(['This instance removes these instances from "Known Network" timeline:'])},media_removal:e=>{const{normalize:t}=e;return t(["Media Removal"])},media_removal_desc:e=>{const{normalize:t}=e;return t(["This instance removes media from posts on the following instances:"])},media_nsfw:e=>{const{normalize:t}=e;return t(["Media force-set as sensitive"])},media_nsfw_desc:e=>{const{normalize:t}=e;return t(["This instance forces media to be set sensitive in posts on the following instances:"])}}},staff:e=>{const{normalize:t}=e;return t(["Staff"])}},shoutbox:{title:e=>{const{normalize:t}=e;return t(["Shoutbox"])}},domain_mute_card:{mute:e=>{const{normalize:t}=e;return t(["Mute"])},mute_progress:e=>{const{normalize:t}=e;return t(["Muting…"])},unmute:e=>{const{normalize:t}=e;return t(["Unmute"])},unmute_progress:e=>{const{normalize:t}=e;return t(["Unmuting…"])}},exporter:{export:e=>{const{normalize:t}=e;return t(["Export"])},processing:e=>{const{normalize:t}=e;return t(["Processing, you'll soon be asked to download your file"])}},features_panel:{shout:e=>{const{normalize:t}=e;return t(["Shoutbox"])},pleroma_chat_messages:e=>{const{normalize:t}=e;return t(["Pleroma Chat"])},gopher:e=>{const{normalize:t}=e;return t(["Gopher"])},media_proxy:e=>{const{normalize:t}=e;return t(["Media proxy"])},scope_options:e=>{const{normalize:t}=e;return t(["Scope options"])},text_limit:e=>{const{normalize:t}=e;return t(["Text limit"])},title:e=>{const{normalize:t}=e;return t(["Features"])},who_to_follow:e=>{const{normalize:t}=e;return t(["Who to follow"])},upload_limit:e=>{const{normalize:t}=e;return t(["Upload limit"])}},finder:{error_fetching_user:e=>{const{normalize:t}=e;return t(["Error fetching user"])},find_user:e=>{const{normalize:t}=e;return t(["Find user"])}},general:{apply:e=>{const{normalize:t}=e;return t(["Apply"])},submit:e=>{const{normalize:t}=e;return t(["Submit"])},more:e=>{const{normalize:t}=e;return t(["More"])},loading:e=>{const{normalize:t}=e;return t(["Loading…"])},generic_error:e=>{const{normalize:t}=e;return t(["An error occured"])},error_retry:e=>{const{normalize:t}=e;return t(["Please try again"])},retry:e=>{const{normalize:t}=e;return t(["Try again"])},optional:e=>{const{normalize:t}=e;return t(["optional"])},show_more:e=>{const{normalize:t}=e;return t(["Show more"])},show_less:e=>{const{normalize:t}=e;return t(["Show less"])},dismiss:e=>{const{normalize:t}=e;return t(["Dismiss"])},cancel:e=>{const{normalize:t}=e;return t(["Cancel"])},disable:e=>{const{normalize:t}=e;return t(["Disable"])},enable:e=>{const{normalize:t}=e;return t(["Enable"])},confirm:e=>{const{normalize:t}=e;return t(["Confirm"])},verify:e=>{const{normalize:t}=e;return t(["Verify"])},close:e=>{const{normalize:t}=e;return t(["Close"])},peek:e=>{const{normalize:t}=e;return t(["Peek"])},role:{admin:e=>{const{normalize:t}=e;return t(["Admin"])},moderator:e=>{const{normalize:t}=e;return t(["Moderator"])}},flash_content:e=>{const{normalize:t}=e;return t(["Click to show Flash content using Ruffle (Experimental, may not work)."])},flash_security:e=>{const{normalize:t}=e;return t(["Note that this can be potentially dangerous since Flash content is still arbitrary code."])},flash_fail:e=>{const{normalize:t}=e;return t(["Failed to load flash content, see console for details."])},scope_in_timeline:{direct:e=>{const{normalize:t}=e;return t(["Direct"])},private:e=>{const{normalize:t}=e;return t(["Followers-only"])},public:e=>{const{normalize:t}=e;return t(["Public"])},unlisted:e=>{const{normalize:t}=e;return t(["Unlisted"])}}},image_cropper:{crop_picture:e=>{const{normalize:t}=e;return t(["Crop picture"])},save:e=>{const{normalize:t}=e;return t(["Save"])},save_without_cropping:e=>{const{normalize:t}=e;return t(["Save without cropping"])},cancel:e=>{const{normalize:t}=e;return t(["Cancel"])}},importer:{submit:e=>{const{normalize:t}=e;return t(["Submit"])},success:e=>{const{normalize:t}=e;return t(["Imported successfully."])},error:e=>{const{normalize:t}=e;return t(["An error occured while importing this file."])}},login:{login:e=>{const{normalize:t}=e;return t(["Log in"])},description:e=>{const{normalize:t}=e;return t(["Log in with OAuth"])},logout:e=>{const{normalize:t}=e;return t(["Log out"])},password:e=>{const{normalize:t}=e;return t(["Password"])},placeholder:e=>{const{normalize:t}=e;return t(["e.g. lain"])},register:e=>{const{normalize:t}=e;return t(["Register"])},username:e=>{const{normalize:t}=e;return t(["Username"])},hint:e=>{const{normalize:t}=e;return t(["Log in to join the discussion"])},authentication_code:e=>{const{normalize:t}=e;return t(["Authentication code"])},enter_recovery_code:e=>{const{normalize:t}=e;return t(["Enter a recovery code"])},enter_two_factor_code:e=>{const{normalize:t}=e;return t(["Enter a two-factor code"])},recovery_code:e=>{const{normalize:t}=e;return t(["Recovery code"])},heading:{totp:e=>{const{normalize:t}=e;return t(["Two-factor authentication"])},recovery:e=>{const{normalize:t}=e;return t(["Two-factor recovery"])}}},media_modal:{previous:e=>{const{normalize:t}=e;return t(["Previous"])},next:e=>{const{normalize:t}=e;return t(["Next"])},counter:e=>{const{normalize:t,interpolate:n,named:r}=e;return t([n(r("current"))," / ",n(r("total"))])},hide:e=>{const{normalize:t}=e;return t(["Close media viewer"])}},nav:{about:e=>{const{normalize:t}=e;return t(["About"])},administration:e=>{const{normalize:t}=e;return t(["Administration"])},back:e=>{const{normalize:t}=e;return t(["Back"])},friend_requests:e=>{const{normalize:t}=e;return t(["Follow requests"])},mentions:e=>{const{normalize:t}=e;return t(["Mentions"])},interactions:e=>{const{normalize:t}=e;return t(["Interactions"])},dms:e=>{const{normalize:t}=e;return t(["Direct messages"])},public_tl:e=>{const{normalize:t}=e;return t(["Public timeline"])},timeline:e=>{const{normalize:t}=e;return t(["Timeline"])},home_timeline:e=>{const{normalize:t}=e;return t(["Home timeline"])},twkn:e=>{const{normalize:t}=e;return t(["Known Network"])},bookmarks:e=>{const{normalize:t}=e;return t(["Bookmarks"])},user_search:e=>{const{normalize:t}=e;return t(["User Search"])},search:e=>{const{normalize:t}=e;return t(["Search"])},who_to_follow:e=>{const{normalize:t}=e;return t(["Who to follow"])},preferences:e=>{const{normalize:t}=e;return t(["Preferences"])},timelines:e=>{const{normalize:t}=e;return t(["Timelines"])},chats:e=>{const{normalize:t}=e;return t(["Chats"])}},notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Unknown status, searching for it…"])},error:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Error fetching notifications: ",n(r(0))])},favorited_you:e=>{const{normalize:t}=e;return t(["favorited your status"])},followed_you:e=>{const{normalize:t}=e;return t(["followed you"])},follow_request:e=>{const{normalize:t}=e;return t(["wants to follow you"])},load_older:e=>{const{normalize:t}=e;return t(["Load older notifications"])},notifications:e=>{const{normalize:t}=e;return t(["Notifications"])},read:e=>{const{normalize:t}=e;return t(["Read!"])},repeated_you:e=>{const{normalize:t}=e;return t(["repeated your status"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["No more notifications"])},migrated_to:e=>{const{normalize:t}=e;return t(["migrated to"])},reacted_with:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["reacted with ",n(r(0))])},poll_ended:e=>{const{normalize:t}=e;return t(["poll has ended"])}},polls:{add_poll:e=>{const{normalize:t}=e;return t(["Add poll"])},add_option:e=>{const{normalize:t}=e;return t(["Add option"])},option:e=>{const{normalize:t}=e;return t(["Option"])},votes:e=>{const{normalize:t}=e;return t(["votes"])},people_voted_count:e=>{const{normalize:t,interpolate:n,named:r,plural:i}=e;return i([t([n(r("count"))," person voted"]),t([n(r("count"))," people voted"])])},votes_count:e=>{const{normalize:t,interpolate:n,named:r,plural:i}=e;return i([t([n(r("count"))," vote"]),t([n(r("count"))," votes"])])},vote:e=>{const{normalize:t}=e;return t(["Vote"])},type:e=>{const{normalize:t}=e;return t(["Poll type"])},single_choice:e=>{const{normalize:t}=e;return t(["Single choice"])},multiple_choices:e=>{const{normalize:t}=e;return t(["Multiple choices"])},expiry:e=>{const{normalize:t}=e;return t(["Poll age"])},expires_in:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Poll ends in ",n(r(0))])},expired:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Poll ended ",n(r(0))," ago"])},not_enough_options:e=>{const{normalize:t}=e;return t(["Too few unique options in poll"])}},emoji:{stickers:e=>{const{normalize:t}=e;return t(["Stickers"])},emoji:e=>{const{normalize:t}=e;return t(["Emoji"])},keep_open:e=>{const{normalize:t}=e;return t(["Keep picker open"])},search_emoji:e=>{const{normalize:t}=e;return t(["Search for an emoji"])},add_emoji:e=>{const{normalize:t}=e;return t(["Insert emoji"])},custom:e=>{const{normalize:t}=e;return t(["Custom emoji"])},unicode:e=>{const{normalize:t}=e;return t(["Unicode emoji"])},load_all_hint:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Loaded first ",n(r("saneAmount"))," emoji, loading all emoji may cause performance issues."])},load_all:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Loading all ",n(r("emojiAmount"))," emoji"])}},errors:{storage_unavailable:e=>{const{normalize:t}=e;return t(["Pleroma could not access browser storage. Your login or your local settings won't be saved and you might encounter unexpected issues. Try enabling cookies."])}},interactions:{favs_repeats:e=>{const{normalize:t}=e;return t(["Repeats and favorites"])},follows:e=>{const{normalize:t}=e;return t(["New follows"])},moves:e=>{const{normalize:t}=e;return t(["User migrates"])},load_older:e=>{const{normalize:t}=e;return t(["Load older interactions"])}},post_status:{new_status:e=>{const{normalize:t}=e;return t(["Post new status"])},account_not_locked_warning:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Your account is not ",n(r(0)),". Anyone can follow you to view your follower-only posts."])},account_not_locked_warning_link:e=>{const{normalize:t}=e;return t(["locked"])},attachments_sensitive:e=>{const{normalize:t}=e;return t(["Mark attachments as sensitive"])},media_description:e=>{const{normalize:t}=e;return t(["Media description"])},content_type:{"text/plain":e=>{const{normalize:t}=e;return t(["Plain text"])},"text/html":e=>{const{normalize:t}=e;return t(["HTML"])},"text/markdown":e=>{const{normalize:t}=e;return t(["Markdown"])},"text/bbcode":e=>{const{normalize:t}=e;return t(["BBCode"])},"text/x.misskeymarkdown":e=>{const{normalize:t}=e;return t(["MFM"])}},content_warning:e=>{const{normalize:t}=e;return t(["Subject (optional)"])},default:e=>{const{normalize:t}=e;return t(["Just landed in L.A."])},direct_warning_to_all:e=>{const{normalize:t}=e;return t(["This post will be visible to all the mentioned users."])},direct_warning_to_first_only:e=>{const{normalize:t}=e;return t(["This post will only be visible to the mentioned users at the beginning of the message."])},posting:e=>{const{normalize:t}=e;return t(["Posting"])},post:e=>{const{normalize:t}=e;return t(["Post"])},preview:e=>{const{normalize:t}=e;return t(["Preview"])},preview_empty:e=>{const{normalize:t}=e;return t(["Empty"])},empty_status_error:e=>{const{normalize:t}=e;return t(["Can't post an empty status with no files"])},media_description_error:e=>{const{normalize:t}=e;return t(["Failed to update media, try again"])},scope_notice:{public:e=>{const{normalize:t}=e;return t(["This post will be visible to everyone"])},private:e=>{const{normalize:t}=e;return t(["This post will be visible to your followers only"])},unlisted:e=>{const{normalize:t}=e;return t(["This post will not be visible in Public Timeline and The Whole Known Network"])},local:e=>{const{normalize:t}=e;return t(["This post won't be visible outside of IHBA"])}},scope:{direct:e=>{const{normalize:t}=e;return t(["Direct - post to mentioned users only"])},private:e=>{const{normalize:t}=e;return t(["Followers-only - post to followers only"])},public:e=>{const{normalize:t}=e;return t(["Public - post to public timelines"])},unlisted:e=>{const{normalize:t}=e;return t(["Unlisted - do not post to public timelines"])},local:e=>{const{normalize:t}=e;return t(["Local - do not federate this post"])}}},registration:{bio:e=>{const{normalize:t}=e;return t(["Bio"])},email:e=>{const{normalize:t}=e;return t(["Email"])},fullname:e=>{const{normalize:t}=e;return t(["Display name"])},password_confirm:e=>{const{normalize:t}=e;return t(["Password confirmation"])},registration:e=>{const{normalize:t}=e;return t(["Registration"])},token:e=>{const{normalize:t}=e;return t(["Invite token"])},captcha:e=>{const{normalize:t}=e;return t(["CAPTCHA"])},new_captcha:e=>{const{normalize:t}=e;return t(["Click the image to get a new captcha"])},username_placeholder:e=>{const{normalize:t}=e;return t(["e.g. lain"])},fullname_placeholder:e=>{const{normalize:t}=e;return t(["e.g. Lain Iwakura"])},bio_placeholder:e=>{const{normalize:t}=e;return t(["e.g.\nHi, I'm Lain.\nI’m an anime girl living in suburban Japan. You may know me from the Wired."])},reason:e=>{const{normalize:t}=e;return t(["Reason to register"])},reason_placeholder:e=>{const{normalize:t}=e;return t(["This instance approves registrations manually.\nLet the administration know why you want to register."])},register:e=>{const{normalize:t}=e;return t(["Register"])},validations:{username_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},fullname_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},email_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},password_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},password_confirmation_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},password_confirmation_match:e=>{const{normalize:t}=e;return t(["should be the same as password"])}},email_language:e=>{const{normalize:t}=e;return t(["In which language do you want to receive emails from the server?"])}},remote_user_resolver:{remote_user_resolver:e=>{const{normalize:t}=e;return t(["Remote user resolver"])},searching_for:e=>{const{normalize:t}=e;return t(["Searching for"])},error:e=>{const{normalize:t}=e;return t(["Not found."])}},selectable_list:{select_all:e=>{const{normalize:t}=e;return t(["Select all"])}},settings:{app_name:e=>{const{normalize:t}=e;return t(["App name"])},expert_mode:e=>{const{normalize:t}=e;return t(["Show advanced"])},save:e=>{const{normalize:t}=e;return t(["Save changes"])},security:e=>{const{normalize:t}=e;return t(["Security"])},setting_changed:e=>{const{normalize:t}=e;return t(["Setting is different from default"])},setting_server_side:e=>{const{normalize:t}=e;return t(["This setting is tied to your profile and affects all sessions and clients"])},enter_current_password_to_confirm:e=>{const{normalize:t}=e;return t(["Enter your current password to confirm your identity"])},post_look_feel:e=>{const{normalize:t}=e;return t(["Posts Look & Feel"])},mention_links:e=>{const{normalize:t}=e;return t(["Mention links"])},mfa:{otp:e=>{const{normalize:t}=e;return t(["OTP"])},setup_otp:e=>{const{normalize:t}=e;return t(["Setup OTP"])},wait_pre_setup_otp:e=>{const{normalize:t}=e;return t(["presetting OTP"])},confirm_and_enable:e=>{const{normalize:t}=e;return t(["Confirm & enable OTP"])},title:e=>{const{normalize:t}=e;return t(["Two-factor Authentication"])},generate_new_recovery_codes:e=>{const{normalize:t}=e;return t(["Generate new recovery codes"])},warning_of_generate_new_codes:e=>{const{normalize:t}=e;return t(["When you generate new recovery codes, your old codes won’t work anymore."])},recovery_codes:e=>{const{normalize:t}=e;return t(["Recovery codes."])},waiting_a_recovery_codes:e=>{const{normalize:t}=e;return t(["Receiving backup codes…"])},recovery_codes_warning:e=>{const{normalize:t}=e;return t(["Write the codes down or save them somewhere secure - otherwise you won't see them again. If you lose access to your 2FA app and recovery codes you'll be locked out of your account."])},authentication_methods:e=>{const{normalize:t}=e;return t(["Authentication methods"])},scan:{title:e=>{const{normalize:t}=e;return t(["Scan"])},desc:e=>{const{normalize:t}=e;return t(["Using your two-factor app, scan this QR code or enter text key:"])},secret_code:e=>{const{normalize:t}=e;return t(["Key"])}},verify:{desc:e=>{const{normalize:t}=e;return t(["To enable two-factor authentication, enter the code from your two-factor app:"])}}},allow_following_move:e=>{const{normalize:t}=e;return t(["Allow auto-follow when following account moves"])},attachmentRadius:e=>{const{normalize:t}=e;return t(["Attachments"])},attachments:e=>{const{normalize:t}=e;return t(["Attachments"])},avatar:e=>{const{normalize:t}=e;return t(["Avatar"])},avatarAltRadius:e=>{const{normalize:t}=e;return t(["Avatars (notifications)"])},avatarRadius:e=>{const{normalize:t}=e;return t(["Avatars"])},background:e=>{const{normalize:t}=e;return t(["Background"])},bio:e=>{const{normalize:t}=e;return t(["Bio"])},email_language:e=>{const{normalize:t}=e;return t(["Language for receiving emails from the server"])},block_export:e=>{const{normalize:t}=e;return t(["Block export"])},block_export_button:e=>{const{normalize:t}=e;return t(["Export your blocks to a csv file"])},block_import:e=>{const{normalize:t}=e;return t(["Block import"])},block_import_error:e=>{const{normalize:t}=e;return t(["Error importing blocks"])},blocks_imported:e=>{const{normalize:t}=e;return t(["Blocks imported! Processing them will take a while."])},mute_export:e=>{const{normalize:t}=e;return t(["Mute export"])},mute_export_button:e=>{const{normalize:t}=e;return t(["Export your mutes to a csv file"])},mute_import:e=>{const{normalize:t}=e;return t(["Mute import"])},mute_import_error:e=>{const{normalize:t}=e;return t(["Error importing mutes"])},mutes_imported:e=>{const{normalize:t}=e;return t(["Mutes imported! Processing them will take a while."])},import_mutes_from_a_csv_file:e=>{const{normalize:t}=e;return t(["Import mutes from a csv file"])},blocks_tab:e=>{const{normalize:t}=e;return t(["Blocks"])},bot:e=>{const{normalize:t}=e;return t(["This is a bot account"])},btnRadius:e=>{const{normalize:t}=e;return t(["Buttons"])},cBlue:e=>{const{normalize:t}=e;return t(["Blue (Reply, follow)"])},cGreen:e=>{const{normalize:t}=e;return t(["Green (Retweet)"])},cOrange:e=>{const{normalize:t}=e;return t(["Orange (Favorite)"])},cRed:e=>{const{normalize:t}=e;return t(["Red (Cancel)"])},change_email:e=>{const{normalize:t}=e;return t(["Change email"])},change_email_error:e=>{const{normalize:t}=e;return t(["There was an issue changing your email."])},changed_email:e=>{const{normalize:t}=e;return t(["Email changed successfully!"])},change_password:e=>{const{normalize:t}=e;return t(["Change password"])},change_password_error:e=>{const{normalize:t}=e;return t(["There was an issue changing your password."])},changed_password:e=>{const{normalize:t}=e;return t(["Password changed successfully!"])},chatMessageRadius:e=>{const{normalize:t}=e;return t(["Chat message"])},collapse_subject:e=>{const{normalize:t}=e;return t(["Collapse posts with subjects"])},composing:e=>{const{normalize:t}=e;return t(["Composing"])},confirm_new_password:e=>{const{normalize:t}=e;return t(["Confirm new password"])},current_avatar:e=>{const{normalize:t}=e;return t(["Your current avatar"])},current_mascot:e=>{const{normalize:t}=e;return t(["Your current mascot"])},current_password:e=>{const{normalize:t}=e;return t(["Current password"])},mutes_and_blocks:e=>{const{normalize:t}=e;return t(["Mutes and Blocks"])},data_import_export_tab:e=>{const{normalize:t}=e;return t(["Data import / export"])},default_vis:e=>{const{normalize:t}=e;return t(["Default visibility scope"])},delete_account:e=>{const{normalize:t}=e;return t(["Delete account"])},delete_account_description:e=>{const{normalize:t}=e;return t(["Permanently delete your data and deactivate your account."])},delete_account_error:e=>{const{normalize:t}=e;return t(["There was an issue deleting your account. If this persists please contact your instance administrator."])},delete_account_instructions:e=>{const{normalize:t}=e;return t(["Type your password in the input below to confirm account deletion."])},discoverable:e=>{const{normalize:t}=e;return t(["Allow discovery of this account in search results and other services"])},domain_mutes:e=>{const{normalize:t}=e;return t(["Domains"])},avatar_size_instruction:e=>{const{normalize:t}=e;return t(["The recommended minimum size for avatar images is 150x150 pixels."])},pad_emoji:e=>{const{normalize:t}=e;return t(["Pad emoji with spaces when adding from picker"])},emoji_reactions_on_timeline:e=>{const{normalize:t}=e;return t(["Show emoji reactions on timeline"])},export_theme:e=>{const{normalize:t}=e;return t(["Save preset"])},filtering:e=>{const{normalize:t}=e;return t(["Filtering"])},wordfilter:e=>{const{normalize:t}=e;return t(["Wordfilter"])},filtering_explanation:e=>{const{normalize:t}=e;return t(["All statuses containing these words will be muted, one per line"])},word_filter:e=>{const{normalize:t}=e;return t(["Word filter"])},follow_export:e=>{const{normalize:t}=e;return t(["Follow export"])},follow_export_button:e=>{const{normalize:t}=e;return t(["Export your follows to a csv file"])},follow_import:e=>{const{normalize:t}=e;return t(["Follow import"])},follow_import_error:e=>{const{normalize:t}=e;return t(["Error importing followers"])},follows_imported:e=>{const{normalize:t}=e;return t(["Follows imported! Processing them will take a while."])},accent:e=>{const{normalize:t}=e;return t(["Accent"])},foreground:e=>{const{normalize:t}=e;return t(["Foreground"])},general:e=>{const{normalize:t}=e;return t(["General"])},hide_attachments_in_convo:e=>{const{normalize:t}=e;return t(["Hide attachments in conversations"])},hide_attachments_in_tl:e=>{const{normalize:t}=e;return t(["Hide attachments in timeline"])},hide_media_previews:e=>{const{normalize:t}=e;return t(["Hide media previews"])},hide_muted_posts:e=>{const{normalize:t}=e;return t(["Hide posts of muted users"])},mute_bot_posts:e=>{const{normalize:t}=e;return t(["Mute bot posts"])},hide_bot_indication:e=>{const{normalize:t}=e;return t(["Hide bot indication in posts"])},hide_all_muted_posts:e=>{const{normalize:t}=e;return t(["Hide muted posts"])},max_thumbnails:e=>{const{normalize:t}=e;return t(["Maximum amount of thumbnails per post (empty = no limit)"])},hide_isp:e=>{const{normalize:t}=e;return t(["Hide instance-specific panel"])},hide_shoutbox:e=>{const{normalize:t}=e;return t(["Hide instance shoutbox"])},right_sidebar:e=>{const{normalize:t}=e;return t(["Reverse order of columns"])},always_show_post_button:e=>{const{normalize:t}=e;return t(["Always show floating New Post button"])},hide_wallpaper:e=>{const{normalize:t}=e;return t(["Hide instance wallpaper"])},preload_images:e=>{const{normalize:t}=e;return t(["Preload images"])},use_one_click_nsfw:e=>{const{normalize:t}=e;return t(["Open NSFW attachments with just one click"])},hide_post_stats:e=>{const{normalize:t}=e;return t(["Hide post statistics (e.g. the number of favorites)"])},hide_user_stats:e=>{const{normalize:t}=e;return t(["Hide user statistics (e.g. the number of followers)"])},hide_filtered_statuses:e=>{const{normalize:t}=e;return t(["Hide all filtered posts"])},hide_wordfiltered_statuses:e=>{const{normalize:t}=e;return t(["Hide word-filtered statuses"])},hide_muted_threads:e=>{const{normalize:t}=e;return t(["Hide muted threads"])},import_blocks_from_a_csv_file:e=>{const{normalize:t}=e;return t(["Import blocks from a csv file"])},import_followers_from_a_csv_file:e=>{const{normalize:t}=e;return t(["Import follows from a csv file"])},import_theme:e=>{const{normalize:t}=e;return t(["Load preset"])},inputRadius:e=>{const{normalize:t}=e;return t(["Input fields"])},checkboxRadius:e=>{const{normalize:t}=e;return t(["Checkboxes"])},instance_default:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["(default: ",n(r("value")),")"])},instance_default_simple:e=>{const{normalize:t}=e;return t(["(default)"])},interface:e=>{const{normalize:t}=e;return t(["Interface"])},interfaceLanguage:e=>{const{normalize:t}=e;return t(["Interface language"])},invalid_theme_imported:e=>{const{normalize:t}=e;return t(["The selected file is not a supported Pleroma theme. No changes to your theme were made."])},limited_availability:e=>{const{normalize:t}=e;return t(["Unavailable in your browser"])},links:e=>{const{normalize:t}=e;return t(["Links"])},lock_account_description:e=>{const{normalize:t}=e;return t(["Restrict your account to approved followers only"])},loop_video:e=>{const{normalize:t}=e;return t(["Loop videos"])},loop_video_silent_only:e=>{const{normalize:t}=e;return t(['Loop only videos without sound (i.e. Mastodon\'s "gifs")'])},mutes_tab:e=>{const{normalize:t}=e;return t(["Mutes"])},play_videos_in_modal:e=>{const{normalize:t}=e;return t(["Play videos in a popup frame"])},file_export_import:{backup_restore:e=>{const{normalize:t}=e;return t(["Settings backup"])},backup_settings:e=>{const{normalize:t}=e;return t(["Backup settings to file"])},backup_settings_theme:e=>{const{normalize:t}=e;return t(["Backup settings and theme to file"])},restore_settings:e=>{const{normalize:t}=e;return t(["Restore settings from file"])},errors:{invalid_file:e=>{const{normalize:t}=e;return t(["The selected file is not a supported Pleroma settings backup. No changes were made."])},file_too_new:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Incompatile major version: ",n(r("fileMajor")),", this PleromaFE (settings ver ",n(r("feMajor")),") is too old to handle it"])},file_too_old:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Incompatile major version: ",n(r("fileMajor")),", file version is too old and not supported (min. set. ver. ",n(r("feMajor")),")"])},file_slightly_new:e=>{const{normalize:t}=e;return t(["File minor version is different, some settings might not load"])}}},profile_fields:{label:e=>{const{normalize:t}=e;return t(["Profile metadata"])},add_field:e=>{const{normalize:t}=e;return t(["Add field"])},name:e=>{const{normalize:t}=e;return t(["Label"])},value:e=>{const{normalize:t}=e;return t(["Content"])}},account_privacy:e=>{const{normalize:t}=e;return t(["Privacy"])},use_contain_fit:e=>{const{normalize:t}=e;return t(["Don't crop the attachment in thumbnails"])},name:e=>{const{normalize:t}=e;return t(["Name"])},name_bio:e=>{const{normalize:t}=e;return t(["Name & bio"])},new_email:e=>{const{normalize:t}=e;return t(["New email"])},new_password:e=>{const{normalize:t}=e;return t(["New password"])},posts:e=>{const{normalize:t}=e;return t(["Posts"])},user_profiles:e=>{const{normalize:t}=e;return t(["User Profiles"])},notification_visibility:e=>{const{normalize:t}=e;return t(["Types of notifications to show"])},notification_visibility_follows:e=>{const{normalize:t}=e;return t(["Follows"])},notification_visibility_likes:e=>{const{normalize:t}=e;return t(["Favorites"])},notification_visibility_mentions:e=>{const{normalize:t}=e;return t(["Mentions"])},notification_visibility_repeats:e=>{const{normalize:t}=e;return t(["Repeats"])},notification_visibility_moves:e=>{const{normalize:t}=e;return t(["User Migrates"])},notification_visibility_emoji_reactions:e=>{const{normalize:t}=e;return t(["Reactions"])},notification_visibility_polls:e=>{const{normalize:t}=e;return t(["Ends of polls you voted in"])},no_rich_text_description:e=>{const{normalize:t}=e;return t(["Strip rich text formatting from all posts"])},no_blocks:e=>{const{normalize:t}=e;return t(["No blocks"])},no_mutes:e=>{const{normalize:t}=e;return t(["No mutes"])},hide_favorites_description:e=>{const{normalize:t}=e;return t(["Don't show list of my favorites (people still get notified)"])},hide_follows_description:e=>{const{normalize:t}=e;return t(["Don't show who I'm following"])},hide_followers_description:e=>{const{normalize:t}=e;return t(["Don't show who's following me"])},hide_follows_count_description:e=>{const{normalize:t}=e;return t(["Don't show follow count"])},hide_followers_count_description:e=>{const{normalize:t}=e;return t(["Don't show follower count"])},show_admin_badge:e=>{const{normalize:t}=e;return t(['Show "Admin" badge in my profile'])},show_moderator_badge:e=>{const{normalize:t}=e;return t(['Show "Moderator" badge in my profile'])},nsfw_clickthrough:e=>{const{normalize:t}=e;return t(["Hide sensitive/NSFW media"])},oauth_tokens:e=>{const{normalize:t}=e;return t(["OAuth tokens"])},token:e=>{const{normalize:t}=e;return t(["Token"])},refresh_token:e=>{const{normalize:t}=e;return t(["Refresh token"])},valid_until:e=>{const{normalize:t}=e;return t(["Valid until"])},revoke_token:e=>{const{normalize:t}=e;return t(["Revoke"])},panelRadius:e=>{const{normalize:t}=e;return t(["Panels"])},pause_on_unfocused:e=>{const{normalize:t}=e;return t(["Pause when tab is not focused"])},presets:e=>{const{normalize:t}=e;return t(["Presets"])},profile_background:e=>{const{normalize:t}=e;return t(["Profile background"])},profile_banner:e=>{const{normalize:t}=e;return t(["Profile banner"])},profile_tab:e=>{const{normalize:t}=e;return t(["Profile"])},radii_help:e=>{const{normalize:t}=e;return t(["Set up interface edge rounding (in pixels)"])},replies_in_timeline:e=>{const{normalize:t}=e;return t(["Replies in timeline"])},reply_visibility_all:e=>{const{normalize:t}=e;return t(["Show all replies"])},reply_visibility_following:e=>{const{normalize:t}=e;return t(["Only show replies directed at me or users I'm following"])},reply_visibility_self:e=>{const{normalize:t}=e;return t(["Only show replies directed at me"])},reply_visibility_following_short:e=>{const{normalize:t}=e;return t(["Show replies to my follows"])},reply_visibility_self_short:e=>{const{normalize:t}=e;return t(["Show replies to self only"])},autohide_floating_post_button:e=>{const{normalize:t}=e;return t(["Automatically hide New Post button (mobile)"])},saving_err:e=>{const{normalize:t}=e;return t(["Error saving settings"])},saving_ok:e=>{const{normalize:t}=e;return t(["Settings saved"])},search_user_to_block:e=>{const{normalize:t}=e;return t(["Search whom you want to block"])},search_user_to_mute:e=>{const{normalize:t}=e;return t(["Search whom you want to mute"])},security_tab:e=>{const{normalize:t}=e;return t(["Security"])},scope_copy:e=>{const{normalize:t}=e;return t(["Copy scope when replying (DMs are always copied)"])},mascot:e=>{const{normalize:t}=e;return t(["Mastodon FE Mascot"])},minimal_scopes_mode:e=>{const{normalize:t}=e;return t(["Minimize post scope selection options"])},set_new_avatar:e=>{const{normalize:t}=e;return t(["Set new avatar"])},set_new_mascot:e=>{const{normalize:t}=e;return t(["Set new mascot"])},set_new_profile_background:e=>{const{normalize:t}=e;return t(["Set new profile background"])},set_new_profile_banner:e=>{const{normalize:t}=e;return t(["Set new profile banner"])},reset_avatar:e=>{const{normalize:t}=e;return t(["Reset avatar"])},reset_profile_background:e=>{const{normalize:t}=e;return t(["Reset profile background"])},reset_profile_banner:e=>{const{normalize:t}=e;return t(["Reset profile banner"])},reset_avatar_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to reset the avatar?"])},reset_banner_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to reset the banner?"])},reset_background_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to reset the background?"])},settings:e=>{const{normalize:t}=e;return t(["Settings"])},subject_input_always_show:e=>{const{normalize:t}=e;return t(["Always show subject field"])},subject_line_behavior:e=>{const{normalize:t}=e;return t(["Copy subject when replying"])},subject_line_email:e=>{const{normalize:t}=e;return t(['Like email: "re: subject"'])},subject_line_mastodon:e=>{const{normalize:t}=e;return t(["Like mastodon: copy as is"])},subject_line_noop:e=>{const{normalize:t}=e;return t(["Do not copy"])},conversation_display:e=>{const{normalize:t}=e;return t(["Conversation display style"])},conversation_display_tree:e=>{const{normalize:t}=e;return t(["Tree-style"])},disable_sticky_headers:e=>{const{normalize:t}=e;return t(["Don't stick column headers to top of the screen"])},show_scrollbars:e=>{const{normalize:t}=e;return t(["Show side column's scrollbars"])},third_column_mode:e=>{const{normalize:t}=e;return t(["When there's enough space, show third column containing"])},third_column_mode_none:e=>{const{normalize:t}=e;return t(["Don't show third column at all"])},third_column_mode_notifications:e=>{const{normalize:t}=e;return t(["Notifications column"])},third_column_mode_postform:e=>{const{normalize:t}=e;return t(["Main post form and navigation"])},tree_advanced:e=>{const{normalize:t}=e;return t(["Allow more flexible navigation in tree view"])},tree_fade_ancestors:e=>{const{normalize:t}=e;return t(["Display ancestors of the current status in faint text"])},conversation_display_linear:e=>{const{normalize:t}=e;return t(["Linear-style"])},conversation_other_replies_button:e=>{const{normalize:t}=e;return t(['Show the "other replies" button'])},conversation_other_replies_button_below:e=>{const{normalize:t}=e;return t(["Below statuses"])},conversation_other_replies_button_inside:e=>{const{normalize:t}=e;return t(["Inside statuses"])},max_depth_in_thread:e=>{const{normalize:t}=e;return t(["Maximum number of levels in thread to display by default"])},post_status_content_type:e=>{const{normalize:t}=e;return t(["Post status content type"])},sensitive_by_default:e=>{const{normalize:t}=e;return t(["Mark posts as sensitive by default"])},sensitive_if_subject:e=>{const{normalize:t}=e;return t(["Automatically mark images as sensitive if a subject line is specified"])},render_mfm:e=>{const{normalize:t}=e;return t(["Render Misskey Markdown"])},useStreamingApiWarning:e=>{const{normalize:t}=e;return t(["It's cool use it. If it breaks refresh I guess?"])},stop_gifs:e=>{const{normalize:t}=e;return t(["Pause animated images until you hover on them"])},streaming:e=>{const{normalize:t}=e;return t(["Automatically show new posts when scrolled to the top"])},user_mutes:e=>{const{normalize:t}=e;return t(["Users"])},useStreamingApi:e=>{const{normalize:t}=e;return t(["Receive posts and notifications real-time"])},text:e=>{const{normalize:t}=e;return t(["Text"])},theme:e=>{const{normalize:t}=e;return t(["Theme"])},theme_help:e=>{const{normalize:t}=e;return t(["Use hex color codes (#rrggbb) to customize your color theme."])},theme_help_v2_1:e=>{const{normalize:t}=e;return t(['You can also override certain component\'s colors and opacity by toggling the checkbox, use "Clear all" button to clear all overrides.'])},theme_help_v2_2:e=>{const{normalize:t}=e;return t(["Icons underneath some entries are background/text contrast indicators, hover over for detailed info. Please keep in mind that when using transparency contrast indicators show the worst possible case."])},tooltipRadius:e=>{const{normalize:t}=e;return t(["Tooltips/alerts"])},type_domains_to_mute:e=>{const{normalize:t}=e;return t(["Search domains to mute"])},upload_a_photo:e=>{const{normalize:t}=e;return t(["Upload a photo"])},user_settings:e=>{const{normalize:t}=e;return t(["User Settings"])},values:{false:e=>{const{normalize:t}=e;return t(["no"])},true:e=>{const{normalize:t}=e;return t(["yes"])}},virtual_scrolling:e=>{const{normalize:t}=e;return t(["Optimize timeline rendering"])},use_at_icon:e=>{const{normalize:t}=e;return t(["Display ","@"," symbol as an icon instead of text"])},mention_link_display:e=>{const{normalize:t}=e;return t(["Display mention links"])},mention_link_display_short:e=>{const{normalize:t}=e;return t(["always as short names (e.g. ","@","foo)"])},mention_link_display_full_for_remote:e=>{const{normalize:t}=e;return t(["as full names only for remote users (e.g. ","@","foo","@","example.org)"])},mention_link_display_full:e=>{const{normalize:t}=e;return t(["always as full names (e.g. ","@","foo","@","example.org)"])},mention_link_show_tooltip:e=>{const{normalize:t}=e;return t(["Show full user names as tooltip for remote users"])},mention_link_show_avatar:e=>{const{normalize:t}=e;return t(["Show user avatar beside the link"])},mention_link_fade_domain:e=>{const{normalize:t}=e;return t(["Fade domains (e.g. ","@","example.org in ","@","foo","@","example.org)"])},mention_link_bolden_you:e=>{const{normalize:t}=e;return t(["Highlight mention of you when you are mentioned"])},fun:e=>{const{normalize:t}=e;return t(["Fun"])},greentext:e=>{const{normalize:t}=e;return t(["Meme arrows"])},show_yous:e=>{const{normalize:t}=e;return t(["Show (You)s"])},notifications:e=>{const{normalize:t}=e;return t(["Notifications"])},notification_setting_filters:e=>{const{normalize:t}=e;return t(["Filters"])},notification_setting_block_from_strangers:e=>{const{normalize:t}=e;return t(["Block notifications from users who you do not follow"])},notification_setting_privacy:e=>{const{normalize:t}=e;return t(["Privacy"])},notification_setting_hide_notification_contents:e=>{const{normalize:t}=e;return t(["Hide the sender and contents of push notifications"])},notification_mutes:e=>{const{normalize:t}=e;return t(["To stop receiving notifications from a specific user, use a mute."])},notification_blocks:e=>{const{normalize:t}=e;return t(["Blocking a user stops all notifications as well as unsubscribes them."])},enable_web_push_notifications:e=>{const{normalize:t}=e;return t(["Enable web push notifications"])},more_settings:e=>{const{normalize:t}=e;return t(["More settings"])},style:{switcher:{keep_color:e=>{const{normalize:t}=e;return t(["Keep colors"])},keep_shadows:e=>{const{normalize:t}=e;return t(["Keep shadows"])},keep_opacity:e=>{const{normalize:t}=e;return t(["Keep opacity"])},keep_roundness:e=>{const{normalize:t}=e;return t(["Keep roundness"])},keep_fonts:e=>{const{normalize:t}=e;return t(["Keep fonts"])},save_load_hint:e=>{const{normalize:t}=e;return t(['"Keep" options preserve currently set options when selecting or loading themes, it also stores said options when exporting a theme. When all checkboxes unset, exporting theme will save everything.'])},reset:e=>{const{normalize:t}=e;return t(["Reset"])},clear_all:e=>{const{normalize:t}=e;return t(["Clear all"])},clear_opacity:e=>{const{normalize:t}=e;return t(["Clear opacity"])},load_theme:e=>{const{normalize:t}=e;return t(["Load theme"])},keep_as_is:e=>{const{normalize:t}=e;return t(["Keep as is"])},use_snapshot:e=>{const{normalize:t}=e;return t(["Old version"])},use_source:e=>{const{normalize:t}=e;return t(["New version"])},help:{upgraded_from_v2:e=>{const{normalize:t}=e;return t(["PleromaFE has been upgraded, theme could look a little bit different than you remember."])},v2_imported:e=>{const{normalize:t}=e;return t(["File you imported was made for older FE. We try to maximize compatibility but there still could be inconsistencies."])},future_version_imported:e=>{const{normalize:t}=e;return t(["File you imported was made in newer version of FE."])},older_version_imported:e=>{const{normalize:t}=e;return t(["File you imported was made in older version of FE."])},snapshot_present:e=>{const{normalize:t}=e;return t(["Theme snapshot is loaded, so all values are overriden. You can load theme's actual data instead."])},snapshot_missing:e=>{const{normalize:t}=e;return t(["No theme snapshot was in the file so it could look different than originally envisioned."])},fe_upgraded:e=>{const{normalize:t}=e;return t(["PleromaFE's theme engine upgraded after version update."])},fe_downgraded:e=>{const{normalize:t}=e;return t(["PleromaFE's version rolled back."])},migration_snapshot_ok:e=>{const{normalize:t}=e;return t(["Just to be safe, theme snapshot loaded. You can try loading theme data."])},migration_napshot_gone:e=>{const{normalize:t}=e;return t(["For whatever reason snapshot was missing, some stuff could look different than you remember."])},snapshot_source_mismatch:e=>{const{normalize:t}=e;return t(["Versions conflict: most likely FE was rolled back and updated again, if you changed theme using older version of FE you most likely want to use old version, otherwise use new version."])}}},common:{color:e=>{const{normalize:t}=e;return t(["Color"])},opacity:e=>{const{normalize:t}=e;return t(["Opacity"])},contrast:{hint:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Contrast ratio is ",n(r("ratio")),", it ",n(r("level"))," ",n(r("context"))])},level:{aa:e=>{const{normalize:t}=e;return t(["meets Level AA guideline (minimal)"])},aaa:e=>{const{normalize:t}=e;return t(["meets Level AAA guideline (recommended)"])},bad:e=>{const{normalize:t}=e;return t(["doesn't meet any accessibility guidelines"])}},context:{"18pt":e=>{const{normalize:t}=e;return t(["for large (18pt+) text"])},text:e=>{const{normalize:t}=e;return t(["for text"])}}}},common_colors:{_tab_label:e=>{const{normalize:t}=e;return t(["Common"])},main:e=>{const{normalize:t}=e;return t(["Common colors"])},foreground_hint:e=>{const{normalize:t}=e;return t(['See "Advanced" tab for more detailed control'])},rgbo:e=>{const{normalize:t}=e;return t(["Icons, accents, badges"])}},advanced_colors:{_tab_label:e=>{const{normalize:t}=e;return t(["Advanced"])},alert:e=>{const{normalize:t}=e;return t(["Alert background"])},alert_error:e=>{const{normalize:t}=e;return t(["Error"])},alert_warning:e=>{const{normalize:t}=e;return t(["Warning"])},alert_neutral:e=>{const{normalize:t}=e;return t(["Neutral"])},post:e=>{const{normalize:t}=e;return t(["Posts/User bios"])},badge:e=>{const{normalize:t}=e;return t(["Badge background"])},popover:e=>{const{normalize:t}=e;return t(["Tooltips, menus, popovers"])},badge_notification:e=>{const{normalize:t}=e;return t(["Notification"])},panel_header:e=>{const{normalize:t}=e;return t(["Panel header"])},top_bar:e=>{const{normalize:t}=e;return t(["Top bar"])},borders:e=>{const{normalize:t}=e;return t(["Borders"])},buttons:e=>{const{normalize:t}=e;return t(["Buttons"])},inputs:e=>{const{normalize:t}=e;return t(["Input fields"])},faint_text:e=>{const{normalize:t}=e;return t(["Faded text"])},underlay:e=>{const{normalize:t}=e;return t(["Underlay"])},wallpaper:e=>{const{normalize:t}=e;return t(["Wallpaper"])},poll:e=>{const{normalize:t}=e;return t(["Poll graph"])},icons:e=>{const{normalize:t}=e;return t(["Icons"])},highlight:e=>{const{normalize:t}=e;return t(["Highlighted elements"])},pressed:e=>{const{normalize:t}=e;return t(["Pressed"])},selectedPost:e=>{const{normalize:t}=e;return t(["Selected post"])},selectedMenu:e=>{const{normalize:t}=e;return t(["Selected menu item"])},disabled:e=>{const{normalize:t}=e;return t(["Disabled"])},toggled:e=>{const{normalize:t}=e;return t(["Toggled"])},tabs:e=>{const{normalize:t}=e;return t(["Tabs"])},chat:{incoming:e=>{const{normalize:t}=e;return t(["Incoming"])},outgoing:e=>{const{normalize:t}=e;return t(["Outgoing"])},border:e=>{const{normalize:t}=e;return t(["Border"])}}},radii:{_tab_label:e=>{const{normalize:t}=e;return t(["Roundness"])}},shadows:{_tab_label:e=>{const{normalize:t}=e;return t(["Shadow and lighting"])},component:e=>{const{normalize:t}=e;return t(["Component"])},override:e=>{const{normalize:t}=e;return t(["Override"])},shadow_id:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Shadow #",n(r("value"))])},blur:e=>{const{normalize:t}=e;return t(["Blur"])},spread:e=>{const{normalize:t}=e;return t(["Spread"])},inset:e=>{const{normalize:t}=e;return t(["Inset"])},hintV3:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["For shadows you can also use the ",n(r(0))," notation to use other color slot."])},filter_hint:{always_drop_shadow:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Warning, this shadow always uses ",n(r(0))," when browser supports it."])},drop_shadow_syntax:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," does not support ",n(r(1))," parameter and ",n(r(2))," keyword."])},avatar_inset:e=>{const{normalize:t}=e;return t(["Please note that combining both inset and non-inset shadows on avatars might give unexpected results with transparent avatars."])},spread_zero:e=>{const{normalize:t}=e;return t(["Shadows with spread > 0 will appear as if it was set to zero"])},inset_classic:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Inset shadows will be using ",n(r(0))])}},components:{panel:e=>{const{normalize:t}=e;return t(["Panel"])},panelHeader:e=>{const{normalize:t}=e;return t(["Panel header"])},topBar:e=>{const{normalize:t}=e;return t(["Top bar"])},avatar:e=>{const{normalize:t}=e;return t(["User avatar (in profile view)"])},avatarStatus:e=>{const{normalize:t}=e;return t(["User avatar (in post display)"])},popup:e=>{const{normalize:t}=e;return t(["Popups and tooltips"])},button:e=>{const{normalize:t}=e;return t(["Button"])},buttonHover:e=>{const{normalize:t}=e;return t(["Button (hover)"])},buttonPressed:e=>{const{normalize:t}=e;return t(["Button (pressed)"])},buttonPressedHover:e=>{const{normalize:t}=e;return t(["Button (pressed+hover)"])},input:e=>{const{normalize:t}=e;return t(["Input field"])}}},fonts:{_tab_label:e=>{const{normalize:t}=e;return t(["Fonts"])},help:e=>{const{normalize:t}=e;return t(['Select font to use for elements of UI. For "custom" you have to enter exact font name as it appears in system.'])},components:{interface:e=>{const{normalize:t}=e;return t(["Interface"])},input:e=>{const{normalize:t}=e;return t(["Input fields"])},post:e=>{const{normalize:t}=e;return t(["Post text"])},postCode:e=>{const{normalize:t}=e;return t(["Monospaced text in a post (rich text)"])}},family:e=>{const{normalize:t}=e;return t(["Font name"])},size:e=>{const{normalize:t}=e;return t(["Size (in px)"])},weight:e=>{const{normalize:t}=e;return t(["Weight (boldness)"])},custom:e=>{const{normalize:t}=e;return t(["Custom"])}},preview:{header:e=>{const{normalize:t}=e;return t(["Preview"])},content:e=>{const{normalize:t}=e;return t(["Content"])},error:e=>{const{normalize:t}=e;return t(["Example error"])},button:e=>{const{normalize:t}=e;return t(["Button"])},text:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["A bunch of more ",n(r(0))," and ",n(r(1))])},mono:e=>{const{normalize:t}=e;return t(["content"])},input:e=>{const{normalize:t}=e;return t(["Just landed in L.A."])},faint_link:e=>{const{normalize:t}=e;return t(["helpful manual"])},fine_print:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Read our ",n(r(0))," to learn nothing useful!"])},header_faint:e=>{const{normalize:t}=e;return t(["This is fine"])},checkbox:e=>{const{normalize:t}=e;return t(["I have skimmed over terms and conditions"])},link:e=>{const{normalize:t}=e;return t(["a nice lil' link"])}}},version:{title:e=>{const{normalize:t}=e;return t(["Version"])},backend_version:e=>{const{normalize:t}=e;return t(["Backend version"])},frontend_version:e=>{const{normalize:t}=e;return t(["Frontend version"])}}},time:{day:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," day"])},days:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," days"])},day_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"d"])},days_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"d"])},hour:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," hour"])},hours:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," hours"])},hour_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"h"])},hours_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"h"])},in_future:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["in ",n(r(0))])},in_past:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," ago"])},minute:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," minute"])},minutes:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," minutes"])},minute_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"min"])},minutes_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"min"])},month:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," month"])},months:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," months"])},month_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"mo"])},months_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"mo"])},now:e=>{const{normalize:t}=e;return t(["just now"])},now_short:e=>{const{normalize:t}=e;return t(["now"])},second:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," second"])},seconds:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," seconds"])},second_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"s"])},seconds_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"s"])},week:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," week"])},weeks:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," weeks"])},week_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"w"])},weeks_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"w"])},year:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," year"])},years:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," years"])},year_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"y"])},years_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"y"])}},timeline:{collapse:e=>{const{normalize:t}=e;return t(["Collapse"])},conversation:e=>{const{normalize:t}=e;return t(["Conversation"])},error:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Error fetching timeline: ",n(r(0))])},load_older:e=>{const{normalize:t}=e;return t(["Load older statuses"])},no_retweet_hint:e=>{const{normalize:t}=e;return t(["Post is marked as followers-only or direct and cannot be repeated"])},repeated:e=>{const{normalize:t}=e;return t(["repeated"])},show_new:e=>{const{normalize:t}=e;return t(["Show new"])},reload:e=>{const{normalize:t}=e;return t(["Reload"])},up_to_date:e=>{const{normalize:t}=e;return t(["Up-to-date"])},no_more_statuses:e=>{const{normalize:t}=e;return t(["No more statuses"])},no_statuses:e=>{const{normalize:t}=e;return t(["No statuses"])},socket_reconnected:e=>{const{normalize:t}=e;return t(["Realtime connection established"])},socket_broke:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Realtime connection lost: CloseEvent code ",n(r(0))])}},status:{favorites:e=>{const{normalize:t}=e;return t(["Favorites"])},repeats:e=>{const{normalize:t}=e;return t(["Repeats"])},delete:e=>{const{normalize:t}=e;return t(["Delete status"])},pin:e=>{const{normalize:t}=e;return t(["Pin on profile"])},unpin:e=>{const{normalize:t}=e;return t(["Unpin from profile"])},pinned:e=>{const{normalize:t}=e;return t(["Pinned"])},bookmark:e=>{const{normalize:t}=e;return t(["Bookmark"])},unbookmark:e=>{const{normalize:t}=e;return t(["Unbookmark"])},delete_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to delete this status?"])},reply_to:e=>{const{normalize:t}=e;return t(["Reply to"])},mentions:e=>{const{normalize:t}=e;return t(["Mentions"])},replies_list:e=>{const{normalize:t}=e;return t(["Replies:"])},replies_list_with_others:e=>{const{normalize:t,interpolate:n,named:r,plural:i}=e;return i([t(["Replies (+",n(r("numReplies"))," other):"]),t(["Replies (+",n(r("numReplies"))," others):"])])},mute_conversation:e=>{const{normalize:t}=e;return t(["Mute conversation"])},unmute_conversation:e=>{const{normalize:t}=e;return t(["Unmute conversation"])},status_unavailable:e=>{const{normalize:t}=e;return t(["Status unavailable"])},copy_link:e=>{const{normalize:t}=e;return t(["Copy link to status"])},external_source:e=>{const{normalize:t}=e;return t(["External source"])},thread_muted:e=>{const{normalize:t}=e;return t(["Thread muted"])},thread_muted_and_words:e=>{const{normalize:t}=e;return t([", has words:"])},show_full_subject:e=>{const{normalize:t}=e;return t(["Show full subject"])},hide_full_subject:e=>{const{normalize:t}=e;return t(["Hide full subject"])},show_content:e=>{const{normalize:t}=e;return t(["Show content"])},hide_content:e=>{const{normalize:t}=e;return t(["Hide content"])},status_deleted:e=>{const{normalize:t}=e;return t(["This post was deleted"])},nsfw:e=>{const{normalize:t}=e;return t(["NSFW"])},expand:e=>{const{normalize:t}=e;return t(["Expand"])},you:e=>{const{normalize:t}=e;return t(["(You)"])},plus_more:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["+",n(r("number"))," more"])},many_attachments:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Post has ",n(r("number"))," attachment(s)"])},collapse_attachments:e=>{const{normalize:t}=e;return t(["Collapse attachments"])},show_all_attachments:e=>{const{normalize:t}=e;return t(["Show all attachments"])},show_attachment_in_modal:e=>{const{normalize:t}=e;return t(["Show in media modal"])},show_attachment_description:e=>{const{normalize:t}=e;return t(["Preview description (open attachment for full description)"])},hide_attachment:e=>{const{normalize:t}=e;return t(["Hide attachment"])},remove_attachment:e=>{const{normalize:t}=e;return t(["Remove attachment"])},attachment_stop_flash:e=>{const{normalize:t}=e;return t(["Stop Flash player"])},move_up:e=>{const{normalize:t}=e;return t(["Shift attachment left"])},move_down:e=>{const{normalize:t}=e;return t(["Shift attachment right"])},open_gallery:e=>{const{normalize:t}=e;return t(["Open gallery"])},thread_hide:e=>{const{normalize:t}=e;return t(["Hide this thread"])},thread_show:e=>{const{normalize:t}=e;return t(["Show this thread"])},thread_show_full:e=>{const{normalize:t,interpolate:n,named:r,plural:i}=e;return i([t(["Show everything under this thread (",n(r("numStatus"))," status in total, max depth ",n(r("depth")),")"]),t(["Show everything under this thread (",n(r("numStatus"))," statuses in total, max depth ",n(r("depth")),")"])])},thread_show_full_with_icon:e=>{const{normalize:t,interpolate:n,named:r}=e;return t([n(r("icon"))," ",n(r("text"))])},thread_follow:e=>{const{normalize:t,interpolate:n,named:r,plural:i}=e;return i([t(["See the remaining part of this thread (",n(r("numStatus"))," status in total)"]),t(["See the remaining part of this thread (",n(r("numStatus"))," statuses in total)"])])},thread_follow_with_icon:e=>{const{normalize:t,interpolate:n,named:r}=e;return t([n(r("icon"))," ",n(r("text"))])},ancestor_follow:e=>{const{normalize:t,interpolate:n,named:r,plural:i}=e;return i([t(["See ",n(r("numReplies"))," other reply under this status"]),t(["See ",n(r("numReplies"))," other replies under this status"])])},ancestor_follow_with_icon:e=>{const{normalize:t,interpolate:n,named:r}=e;return t([n(r("icon"))," ",n(r("text"))])},show_all_conversation_with_icon:e=>{const{normalize:t,interpolate:n,named:r}=e;return t([n(r("icon"))," ",n(r("text"))])},show_all_conversation:e=>{const{normalize:t,interpolate:n,named:r,plural:i}=e;return i([t(["Show full conversation (",n(r("numStatus"))," other status)"]),t(["Show full conversation (",n(r("numStatus"))," other statuses)"])])},show_only_conversation_under_this:e=>{const{normalize:t}=e;return t(["Only show replies to this status"])}},user_card:{approve:e=>{const{normalize:t}=e;return t(["Approve"])},block:e=>{const{normalize:t}=e;return t(["Block"])},blocked:e=>{const{normalize:t}=e;return t(["Blocked!"])},deactivated:e=>{const{normalize:t}=e;return t(["Deactivated"])},deny:e=>{const{normalize:t}=e;return t(["Deny"])},edit_profile:e=>{const{normalize:t}=e;return t(["Edit profile"])},favorites:e=>{const{normalize:t}=e;return t(["Favorites"])},follow:e=>{const{normalize:t}=e;return t(["Follow"])},follow_cancel:e=>{const{normalize:t}=e;return t(["Cancel request"])},follow_sent:e=>{const{normalize:t}=e;return t(["Request sent!"])},follow_progress:e=>{const{normalize:t}=e;return t(["Requesting…"])},follow_unfollow:e=>{const{normalize:t}=e;return t(["Unfollow"])},followees:e=>{const{normalize:t}=e;return t(["Following"])},followers:e=>{const{normalize:t}=e;return t(["Followers"])},following:e=>{const{normalize:t}=e;return t(["Following!"])},follows_you:e=>{const{normalize:t}=e;return t(["Follows you!"])},hidden:e=>{const{normalize:t}=e;return t(["Hidden"])},its_you:e=>{const{normalize:t}=e;return t(["It's you!"])},media:e=>{const{normalize:t}=e;return t(["Media"])},mention:e=>{const{normalize:t}=e;return t(["Mention"])},message:e=>{const{normalize:t}=e;return t(["Message"])},mute:e=>{const{normalize:t}=e;return t(["Mute"])},muted:e=>{const{normalize:t}=e;return t(["Muted"])},per_day:e=>{const{normalize:t}=e;return t(["per day"])},remote_follow:e=>{const{normalize:t}=e;return t(["Remote follow"])},report:e=>{const{normalize:t}=e;return t(["Report"])},statuses:e=>{const{normalize:t}=e;return t(["Statuses"])},subscribe:e=>{const{normalize:t}=e;return t(["Subscribe"])},unsubscribe:e=>{const{normalize:t}=e;return t(["Unsubscribe"])},unblock:e=>{const{normalize:t}=e;return t(["Unblock"])},unblock_progress:e=>{const{normalize:t}=e;return t(["Unblocking…"])},block_progress:e=>{const{normalize:t}=e;return t(["Blocking…"])},unmute:e=>{const{normalize:t}=e;return t(["Unmute"])},unmute_progress:e=>{const{normalize:t}=e;return t(["Unmuting…"])},mute_progress:e=>{const{normalize:t}=e;return t(["Muting…"])},hide_repeats:e=>{const{normalize:t}=e;return t(["Hide repeats"])},show_repeats:e=>{const{normalize:t}=e;return t(["Show repeats"])},domain_muted:e=>{const{normalize:t}=e;return t(["Unblock domain"])},mute_domain:e=>{const{normalize:t}=e;return t(["Block domain"])},bot:e=>{const{normalize:t}=e;return t(["Bot"])},admin_menu:{moderation:e=>{const{normalize:t}=e;return t(["Moderation"])},grant_admin:e=>{const{normalize:t}=e;return t(["Grant Admin"])},revoke_admin:e=>{const{normalize:t}=e;return t(["Revoke Admin"])},grant_moderator:e=>{const{normalize:t}=e;return t(["Grant Moderator"])},revoke_moderator:e=>{const{normalize:t}=e;return t(["Revoke Moderator"])},activate_account:e=>{const{normalize:t}=e;return t(["Activate account"])},deactivate_account:e=>{const{normalize:t}=e;return t(["Deactivate account"])},delete_account:e=>{const{normalize:t}=e;return t(["Delete account"])},force_nsfw:e=>{const{normalize:t}=e;return t(["Mark all posts as NSFW"])},strip_media:e=>{const{normalize:t}=e;return t(["Remove media from posts"])},force_unlisted:e=>{const{normalize:t}=e;return t(["Force posts to be unlisted"])},sandbox:e=>{const{normalize:t}=e;return t(["Force posts to be followers-only"])},disable_remote_subscription:e=>{const{normalize:t}=e;return t(["Disallow following user from remote instances"])},disable_any_subscription:e=>{const{normalize:t}=e;return t(["Disallow following user at all"])},quarantine:e=>{const{normalize:t}=e;return t(["Disallow user posts from federating"])},delete_user:e=>{const{normalize:t}=e;return t(["Delete user"])},delete_user_confirmation:e=>{const{normalize:t}=e;return t(["Are you absolutely sure? This action cannot be undone."])}},highlight:{disabled:e=>{const{normalize:t}=e;return t(["No highlight"])},solid:e=>{const{normalize:t}=e;return t(["Solid bg"])},striped:e=>{const{normalize:t}=e;return t(["Striped bg"])},side:e=>{const{normalize:t}=e;return t(["Side stripe"])}}},user_profile:{timeline_title:e=>{const{normalize:t}=e;return t(["User timeline"])},profile_does_not_exist:e=>{const{normalize:t}=e;return t(["Sorry, this profile does not exist."])},profile_loading_error:e=>{const{normalize:t}=e;return t(["Sorry, there was an error loading this profile."])}},user_reporting:{title:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Reporting ",n(r(0))])},add_comment_description:e=>{const{normalize:t}=e;return t(["The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:"])},additional_comments:e=>{const{normalize:t}=e;return t(["Additional comments"])},forward_description:e=>{const{normalize:t}=e;return t(["The account is from another server. Send a copy of the report there as well?"])},forward_to:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Forward to ",n(r(0))])},submit:e=>{const{normalize:t}=e;return t(["Submit"])},generic_error:e=>{const{normalize:t}=e;return t(["An error occurred while processing your request."])}},who_to_follow:{more:e=>{const{normalize:t}=e;return t(["More"])},who_to_follow:e=>{const{normalize:t}=e;return t(["Who to follow"])}},tool_tip:{media_upload:e=>{const{normalize:t}=e;return t(["Upload media"])},repeat:e=>{const{normalize:t}=e;return t(["Repeat"])},reply:e=>{const{normalize:t}=e;return t(["Reply"])},favorite:e=>{const{normalize:t}=e;return t(["Favorite"])},add_reaction:e=>{const{normalize:t}=e;return t(["Add Reaction"])},user_settings:e=>{const{normalize:t}=e;return t(["User Settings"])},accept_follow_request:e=>{const{normalize:t}=e;return t(["Accept follow request"])},reject_follow_request:e=>{const{normalize:t}=e;return t(["Reject follow request"])},bookmark:e=>{const{normalize:t}=e;return t(["Bookmark"])}},upload:{error:{base:e=>{const{normalize:t}=e;return t(["Upload failed."])},message:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Upload failed: ",n(r(0))])},file_too_big:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["File too big [",n(r("filesize")),n(r("filesizeunit"))," / ",n(r("allowedsize")),n(r("allowedsizeunit")),"]"])},default:e=>{const{normalize:t}=e;return t(["Try again later"])}},file_size_units:{B:e=>{const{normalize:t}=e;return t(["B"])},KiB:e=>{const{normalize:t}=e;return t(["KiB"])},MiB:e=>{const{normalize:t}=e;return t(["MiB"])},GiB:e=>{const{normalize:t}=e;return t(["GiB"])},TiB:e=>{const{normalize:t}=e;return t(["TiB"])}}},search:{people:e=>{const{normalize:t}=e;return t(["People"])},hashtags:e=>{const{normalize:t}=e;return t(["Hashtags"])},person_talking:e=>{const{normalize:t,interpolate:n,named:r}=e;return t([n(r("count"))," person talking"])},people_talking:e=>{const{normalize:t,interpolate:n,named:r}=e;return t([n(r("count"))," people talking"])},no_results:e=>{const{normalize:t}=e;return t(["No results"])}},password_reset:{forgot_password:e=>{const{normalize:t}=e;return t(["Forgot password?"])},password_reset:e=>{const{normalize:t}=e;return t(["Password reset"])},instruction:e=>{const{normalize:t}=e;return t(["Enter your email address or username. We will send you a link to reset your password."])},placeholder:e=>{const{normalize:t}=e;return t(["Your email or username"])},check_email:e=>{const{normalize:t}=e;return t(["Check your email for a link to reset your password."])},return_home:e=>{const{normalize:t}=e;return t(["Return to the home page"])},too_many_requests:e=>{const{normalize:t}=e;return t(["You have reached the limit of attempts, try again later."])},password_reset_disabled:e=>{const{normalize:t}=e;return t(["Password reset is disabled. Please contact your instance administrator."])},password_reset_required:e=>{const{normalize:t}=e;return t(["You must reset your password to log in."])},password_reset_required_but_mailer_is_disabled:e=>{const{normalize:t}=e;return t(["You must reset your password, but password reset is disabled. Please contact your instance administrator."])}},chats:{you:e=>{const{normalize:t}=e;return t(["You:"])},message_user:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Message ",n(r("nickname"))])},delete:e=>{const{normalize:t}=e;return t(["Delete"])},chats:e=>{const{normalize:t}=e;return t(["Chats"])},new:e=>{const{normalize:t}=e;return t(["New Chat"])},empty_message_error:e=>{const{normalize:t}=e;return t(["Cannot post empty message"])},more:e=>{const{normalize:t}=e;return t(["More"])},delete_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to delete this message?"])},error_loading_chat:e=>{const{normalize:t}=e;return t(["Something went wrong when loading the chat."])},error_sending_message:e=>{const{normalize:t}=e;return t(["Something went wrong when sending the message."])},empty_chat_list_placeholder:e=>{const{normalize:t}=e;return t(["You don't have any chats yet. Start a new chat!"])}},file_type:{audio:e=>{const{normalize:t}=e;return t(["Audio"])},video:e=>{const{normalize:t}=e;return t(["Video"])},image:e=>{const{normalize:t}=e;return t(["Image"])},file:e=>{const{normalize:t}=e;return t(["File"])}},display_date:{today:e=>{const{normalize:t}=e;return t(["Today"])}}}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";n(223)},,function(e,t,n){"use strict";n(225)},function(e,t,n){"use strict";n(226)},function(e,t,n){"use strict";n(227)},function(e,t,n){"use strict";n(228)},function(e,t,n){"use strict";n(229)},function(e,t,n){"use strict";n(230)},function(e,t,n){"use strict";n(231)},function(e,t,n){"use strict";n(232)},function(e,t,n){"use strict";n(233)},function(e,t,n){"use strict";n(234)},function(e,t,n){"use strict";n(235)},,function(e,t,n){"use strict";n(236)},function(e,t,n){"use strict";n(237)},function(e,t,n){"use strict";n(238)},function(e,t,n){"use strict";n(239)},function(e,t,n){},function(e,t,n){"use strict";n(240)},,,,function(e,t,n){"use strict";n(242)},function(e,t,n){"use strict";n(243)},function(e,t,n){"use strict";n(244)},function(e,t,n){"use strict";n(245)},function(e,t,n){"use strict";n(246)},function(e,t,n){"use strict";n(247)},function(e,t,n){"use strict";n(248)},function(e,t,n){"use strict";n(249)},function(e,t,n){"use strict";n(250)},function(e,t,n){"use strict";n(251)},function(e,t,n){"use strict";n(252)},function(e,t,n){"use strict";n(253)},function(e,t,n){"use strict";n(254)},,,,function(e,t,n){"use strict";n(256)},function(e,t,n){"use strict";n(257)},function(e,t,n){"use strict";n(258)},function(e,t,n){"use strict";n(259)},function(e,t,n){"use strict";n(260)},function(e,t,n){"use strict";n(261)},function(e,t,n){"use strict";n(262)},function(e,t,n){"use strict";n(263)},function(e,t,n){"use strict";n(264)},function(e,t,n){"use strict";n(265)},function(e,t,n){"use strict";n(266)},function(e,t,n){"use strict";n(267)},function(e,t,n){"use strict";n(268)},function(e,t,n){"use strict";n(269)},function(e,t,n){"use strict";n(270)},function(e,t,n){"use strict";n(271)},function(e,t,n){"use strict";n(272)},function(e,t,n){"use strict";n(273)},function(e,t,n){"use strict";n(274)},function(e,t,n){"use strict";n(275)},function(e,t,n){"use strict";n(276)},function(e,t,n){"use strict";n(277)},function(e,t,n){"use strict";n(278)},function(e,t,n){"use strict";n(279)},function(e,t,n){"use strict";n(280)},function(e,t,n){"use strict";n(281)},function(e,t,n){"use strict";n(282)},function(e,t,n){"use strict";n(283)},function(e,t,n){"use strict";n(284)},function(e,t,n){"use strict";n(285)},,,function(e,t,n){"use strict";n(287)},function(e,t,n){"use strict";n(288)},function(e,t,n){"use strict";n(289)},function(e,t,n){"use strict";n(290)},function(e,t,n){"use strict";n(291)},function(e,t,n){},function(e,t,n){"use strict";n(292)},function(e,t,n){"use strict";n(293)},function(e,t,n){"use strict";n(294)},function(e,t,n){"use strict";n(295)},function(e,t,n){"use strict";n(296)},function(e,t,n){"use strict";n(297)},function(e,t,n){"use strict";n(298)},function(e,t,n){"use strict";n(299)},function(e,t,n){},function(e,t,n){"use strict";n(302)},function(e,t,n){"use strict";n(303)},,function(e,t,n){"use strict";n(304)},function(e,t,n){"use strict";n(305)},function(e,t,n){"use strict";n(306)},function(e,t,n){"use strict";n(307)},function(e,t,n){"use strict";n(308)},function(e,t,n){"use strict";n(309)},function(e,t,n){"use strict";n.r(t);var r=n(13),i=n.n(r),o=n(10),s=n.n(o),a=n(8),c=(n(348),n(311));try{new EventTarget}catch(e){window.EventTarget=c.a}var l={state:{settingsModalState:"hidden",settingsModalLoaded:!1,settingsModalTargetTab:null,settings:{currentSaveStateNotice:null,noticeClearTimeout:null,notificationPermission:null},browserSupport:{cssFilter:window.CSS&&window.CSS.supports&&(window.CSS.supports("filter","drop-shadow(0 0)")||window.CSS.supports("-webkit-filter","drop-shadow(0 0)"))},layoutType:"normal",globalNotices:[],layoutHeight:0,lastTimeline:null},mutations:{settingsSaved:function(e,t){var n=t.success,r=t.error;n?(e.noticeClearTimeout&&clearTimeout(e.noticeClearTimeout),e.settings.currentSaveStateNotice={error:!1,data:n},e.settings.noticeClearTimeout=setTimeout((function(){return delete e.settings.currentSaveStateNotice}),2e3)):e.settings.currentSaveStateNotice={error:!0,errorData:r}},setNotificationPermission:function(e,t){e.notificationPermission=t},setLayoutType:function(e,t){e.layoutType=t},closeSettingsModal:function(e){e.settingsModalState="hidden"},togglePeekSettingsModal:function(e){switch(e.settingsModalState){case"minimized":return void(e.settingsModalState="visible");case"visible":return void(e.settingsModalState="minimized");default:throw new Error("Illegal minimization state of settings modal")}},openSettingsModal:function(e){e.settingsModalState="visible",e.settingsModalLoaded||(e.settingsModalLoaded=!0)},setSettingsModalTargetTab:function(e,t){e.settingsModalTargetTab=t},pushGlobalNotice:function(e,t){e.globalNotices.push(t)},removeGlobalNotice:function(e,t){e.globalNotices=e.globalNotices.filter((function(e){return e!==t}))},setLayoutHeight:function(e,t){e.layoutHeight=t},setLayoutWidth:function(e,t){e.layoutWidth=t},setLastTimeline:function(e,t){e.lastTimeline=t}},actions:{setPageTitle:function(e){var t=e.rootState,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";document.title="".concat(n," ").concat(t.instance.name)},settingsSaved:function(e,t){var n=e.commit;e.dispatch;n("settingsSaved",{success:t.success,error:t.error})},setNotificationPermission:function(e,t){(0,e.commit)("setNotificationPermission",t)},closeSettingsModal:function(e){(0,e.commit)("closeSettingsModal")},openSettingsModal:function(e){(0,e.commit)("openSettingsModal")},togglePeekSettingsModal:function(e){(0,e.commit)("togglePeekSettingsModal")},clearSettingsModalTargetTab:function(e){(0,e.commit)("setSettingsModalTargetTab",null)},openSettingsModalTab:function(e,t){var n=e.commit;n("setSettingsModalTargetTab",t),n("openSettingsModal")},pushGlobalNotice:function(e,t){var n=e.commit,r=e.dispatch,i=e.state,o=t.messageKey,s=t.messageArgs,a=void 0===s?{}:s,c=t.level,l=void 0===c?"error":c,u=t.timeout,d=void 0===u?0:u;n("pushGlobalNotice",{messageKey:o,messageArgs:a,level:l});var p=i.globalNotices[i.globalNotices.length-1];return d&&setTimeout((function(){return r("removeGlobalNotice",p)}),d),p},removeGlobalNotice:function(e,t){(0,e.commit)("removeGlobalNotice",t)},setLayoutHeight:function(e,t){(0,e.commit)("setLayoutHeight",t)},setLayoutWidth:function(e,t){var n=e.commit,r=e.state,i=e.rootGetters,o=e.rootState,s=t;void 0!==t?n("setLayoutWidth",t):s=r.layoutWidth;var a=s<=800?"mobile":"normal";"none"!==i.mergedConfig.thirdColumnMode&&o.users.currentUser?n("setLayoutType",s>=1300?"wide":a):n("setLayoutType",a)},setLastTimeline:function(e,t){(0,e.commit)("setLastTimeline",t)}}},u=n(12),d=n.n(u),p=n(5),h=n.n(p),b=n(11),m=n.n(b),f=n(43),O=n(54),j=n(15),g=n(121);function v(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function y(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?v(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):v(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var w={state:{name:"Pleroma FE",registrationOpen:!0,server:"http://localhost:4040/",textlimit:5e3,themeData:void 0,vapidPublicKey:void 0,alwaysShowSubjectInput:!0,defaultAvatar:"/images/avi.png",defaultBanner:"/images/banner.png",background:"/static/aurora_borealis.jpg",collapseMessageWithSubject:!1,greentext:!1,useAtIcon:!1,mentionLinkDisplay:"short",mentionLinkShowTooltip:!0,mentionLinkShowAvatar:!1,mentionLinkFadeDomain:!0,mentionLinkShowYous:!1,mentionLinkBoldenYou:!0,hideFilteredStatuses:!1,hideMutedPosts:!1,hideMutedThreads:!0,hideWordFilteredPosts:!1,hidePostStats:!1,hideBotIndication:!1,hideSitename:!1,hideUserStats:!1,muteBotStatuses:!1,loginMethod:"password",logo:"/static/logo.svg",logoMargin:".2em",logoMask:!0,logoLeft:!1,minimalScopesMode:!1,nsfwCensorImage:void 0,postContentType:"text/plain",redirectRootLogin:"/main/friends",redirectRootNoLogin:"/main/all",scopeCopy:!0,showFeaturesPanel:!0,showInstanceSpecificPanel:!1,sidebarRight:!1,subjectLineBehavior:"email",theme:"pleroma-dark",virtualScrolling:!0,sensitiveByDefault:!1,sensitiveIfSubject:!1,renderMisskeyMarkdown:!1,conversationDisplay:"linear",conversationTreeAdvanced:!1,conversationOtherRepliesButton:"below",conversationTreeFadeAncestors:!1,maxDepthInThread:6,customEmoji:[],customEmojiFetched:!1,emoji:[],emojiFetched:!1,pleromaBackend:!0,postFormats:[],restrictedNicknames:[],safeDM:!0,knownDomains:[],shoutAvailable:!1,pleromaChatMessagesAvailable:!1,gopherAvailable:!1,mediaProxyAvailable:!1,suggestionsEnabled:!1,suggestionsWeb:"",instanceSpecificPanelContent:"",tos:"",backendVersion:"",frontendVersion:"",pollsAvailable:!1,pollLimits:{max_options:4,max_option_chars:255,min_expiration:60,max_expiration:86400}},mutations:{setInstanceOption:function(e,t){var n=t.name,r=t.value;void 0!==r&&(e[n]=r)},setKnownDomains:function(e,t){e.knownDomains=t}},getters:{instanceDefaultConfig:function(e){return g.c.map((function(t){return[t,e[t]]})).reduce((function(e,t){var n=m()(t,2),r=n[0],i=n[1];return y(y({},e),{},h()({},r,i))}),{})},instanceDomain:function(e){return new URL(e.server).hostname}},actions:{setInstanceOption:function(e,t){var n=e.commit,r=e.dispatch,i=t.name,o=t.value;switch(n("setInstanceOption",{name:i,value:o}),i){case"name":r("setPageTitle");break;case"shoutAvailable":o&&r("initializeSocket");break;case"theme":r("setTheme",o)}},getStaticEmoji:function(e){return i()(s.a.mark((function t(){var n,r,i,o;return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=e.commit,t.prev=1,t.next=4,window.fetch("/static/emoji.json");case 4:if(!(r=t.sent).ok){t.next=13;break}return t.next=8,r.json();case 8:i=t.sent,o=Object.keys(i).map((function(e){return{displayText:e,imageUrl:!1,replacement:i[e]}})).sort((function(e,t){return e.name>t.name?1:-1})),n("setInstanceOption",{name:"emoji",value:o}),t.next=14;break;case 13:throw r;case 14:t.next=20;break;case 16:t.prev=16,t.t0=t.catch(1),console.warn("Can't load static emoji"),console.warn(t.t0);case 20:case"end":return t.stop()}}),t,null,[[1,16]])})))()},getCustomEmoji:function(e){return i()(s.a.mark((function t(){var n,r,i,o,a,c;return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=e.commit,r=e.state,t.prev=1,t.next=4,window.fetch("/api/pleroma/emoji.json");case 4:if(!(i=t.sent).ok){t.next=14;break}return t.next=8,i.json();case 8:o=t.sent,a=Array.isArray(o)?Object.assign.apply(Object,[{}].concat(d()(o))):o,c=Object.entries(a).map((function(e){var t=m()(e,2),n=t[0],i=t[1],o=i.image_url;return{displayText:n,imageUrl:o?r.server+o:i,tags:o?i.tags.sort((function(e,t){return e>t?1:0})):["utf"],replacement:":".concat(n,": ")}})).sort((function(e,t){return e.displayText.toLowerCase()>t.displayText.toLowerCase()?1:-1})),n("setInstanceOption",{name:"customEmoji",value:c}),t.next=15;break;case 14:throw i;case 15:t.next=21;break;case 17:t.prev=17,t.t0=t.catch(1),console.warn("Can't load custom emojis"),console.warn(t.t0);case 21:case"end":return t.stop()}}),t,null,[[1,17]])})))()},setTheme:function(e,t){var n=e.commit,r=e.rootState;n("setInstanceOption",{name:"theme",value:t}),Object(f.j)(t).then((function(e){if(n("setInstanceOption",{name:"themeData",value:e}),!r.config.customTheme){var t=e.source;!e.theme||t&&t.themeEngineVersion===O.a?Object(f.b)(t):Object(f.b)(e.theme)}}))},fetchEmoji:function(e){var t=e.dispatch,n=e.state;n.customEmojiFetched||(n.customEmojiFetched=!0,t("getCustomEmoji")),n.emojiFetched||(n.emojiFetched=!0,t("getStaticEmoji"))},getKnownDomains:function(e){return i()(s.a.mark((function t(){var n,r,i;return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=e.commit,r=e.rootState,t.prev=1,t.next=4,j.c.fetchKnownDomains({credentials:r.users.currentUser.credentials});case 4:i=t.sent,n("setKnownDomains",i),t.next=12;break;case 8:t.prev=8,t.t0=t.catch(1),console.warn("Can't load known domains"),console.warn(t.t0);case 12:case"end":return t.stop()}}),t,null,[[1,8]])})))()}}},k=n(131),_=n.n(k),S=n(19),C=n.n(S),P=n(46),x=n.n(P),D=n(318),T=n.n(D),I=n(122),$=n.n(I),z=n(132),M=n.n(z),U=n(133),F=n.n(U),E=n(30),L=n.n(E),R=n(60),A=n.n(R),N=n(29),B=n.n(N),V=n(319),H=n.n(V),q=n(61),J=n.n(q),W=n(26);function Y(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function G(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Y(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Y(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var K=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return{statuses:[],statusesObject:{},faves:[],visibleStatuses:[],visibleStatusesObject:{},newStatusCount:0,maxId:0,minId:0,minVisibleId:0,loading:!1,followers:[],friends:[],userId:e,flushMarker:0}},X=function(){return{desktopNotificationSilence:!0,maxId:0,minId:Number.POSITIVE_INFINITY,data:[],idStore:{},loading:!1}},Z=function(){return{allStatuses:[],allStatusesObject:{},conversationsObject:{},maxId:0,notifications:X(),favorites:new Set,timelines:{mentions:K(),public:K(),user:K(),favorites:K(),media:K(),publicAndExternal:K(),friends:K(),tag:K(),dms:K(),bookmarks:K()}}},Q=function(e,t,n){var r=t[n.id];return r?($()(r,_()(n,(function(e,t){return null===e||"user"===t}))),r.attachments.splice(r.attachments.length),{item:r,new:!1}):(function(e){e.deleted=!1,e.attachments=e.attachments||[]}(n),e.push(n),t[n.id]=n,{item:n,new:!0})},ee=function(e,t){var n=Number(e.id),r=Number(t.id),i=!Number.isNaN(n),o=!Number.isNaN(r);return i&&o?n>r?-1:1:i&&!o?1:!i&&o||e.id>t.id?-1:1},te=function(e){return e.visibleStatuses=e.visibleStatuses.sort(ee),e.statuses=e.statuses.sort(ee),e.minVisibleId=(x()(e.visibleStatuses)||{}).id,e},ne=function(e,t){var n=Q(e.allStatuses,e.allStatusesObject,t);if(n.new){var r=n.item,i=e.conversationsObject,o=r.statusnet_conversation_id;i[o]?i[o].push(r):i[o]=[r]}return n},re=function(e,t){e.notifications.maxId=t.id>e.notifications.maxId?t.id:e.notifications.maxId,e.notifications.minId=t.id<e.notifications.minId?t.id:e.notifications.minId},ie={addNewStatuses:function(e,t){var n=t.statuses,r=t.showImmediately,i=void 0!==r&&r,o=t.timeline,s=t.user,a=void 0===s?{}:s,c=t.noIdUpdate,l=void 0!==c&&c,u=t.userId,d=t.pagination,p=void 0===d?{}:d;if(!C()(n))return!1;var h=e.allStatuses,b=e.timelines[o],m=p.maxId||(n.length>0?M()(n,"id").id:0),f=p.minId||(n.length>0?F()(n,"id").id:0),O=o&&(f>b.maxId||0===b.maxId)&&n.length>0,j=o&&(m<b.minId||0===b.minId)&&n.length>0;if(!l&&O&&(b.maxId=f),!l&&j&&(b.minId=m),"user"!==o&&"media"!==o||b.userId===u){var g=function(t,n){var r,i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=ne(e,t),c=s.item;if(s.new){if("status"===c.type&&L()(c.attentions,{id:a.id})){var l=e.timelines.mentions;b!==l&&(Q(l.statuses,l.statusesObject,c),l.newStatusCount+=1,te(l))}if("direct"===c.visibility){var u=e.timelines.dms;Q(u.statuses,u.statusesObject,c),u.newStatusCount+=1,te(u)}}return o&&i&&(r=Q(b.statuses,b.statusesObject,c)),o&&n?Q(b.visibleStatuses,b.visibleStatusesObject,c):o&&i&&r.new&&(b.newStatusCount+=1),c},v={status:function(e){g(e,i)},retweet:function(e){var t,n=g(e.retweeted_status,!1,!1);t=o&&L()(b.statuses,(function(e){return e.retweeted_status?e.id===n.id||e.retweeted_status.id===n.id:e.id===n.id}))?g(e,!1,!1):g(e,i),t.retweeted_status=n},favorite:function(t){e.favorites.has(t.id)||(e.favorites.add(t.id),function(e,t){var n=L()(h,{id:e.in_reply_to_status_id});n&&(e.user.id===a.id?n.favorited=!0:n.fave_num+=1)}(t))},deletion:function(t){var n=t.uri,r=L()(h,{uri:n});r&&(!function(e,t){J()(e.allStatuses,{id:t.id}),J()(e.notifications.data,(function(e){return e.action.id===t.id}));var n=t.statusnet_conversation_id;e.conversationsObject[n]&&J()(e.conversationsObject[n],{id:t.id})}(e,r),o&&(J()(b.statuses,{uri:n}),J()(b.visibleStatuses,{uri:n})))},follow:function(e){},default:function(e){console.log("unknown status type"),console.log(e)}};B()(n,(function(e){var t=e.type;(v[t]||v.default)(e)})),o&&"bookmarks"!==o&&te(b)}},addNewNotifications:function(e,t){var n=t.dispatch,r=t.notifications,i=(t.older,t.visibleNotificationTypes,t.rootGetters,t.newNotificationSideEffects);B()(r,(function(t){if(!Object(W.c)(t))return console.error("Invalid notification:",t),void re(e,t);Object(W.b)(t.type)&&(t.action=ne(e,t.action).item,t.status=t.status&&ne(e,t.status).item),"pleroma:emoji_reaction"===t.type&&n("fetchEmojiReactionsBy",t.status.id),e.notifications.idStore.hasOwnProperty(t.id)?t.seen&&(e.notifications.idStore[t.id].seen=!0):(re(e,t),e.notifications.data.push(t),e.notifications.idStore[t.id]=t,i(t))}))},removeStatus:function(e,t){var n=t.timeline,r=t.userId,i=e.timelines[n];r&&(J()(i.statuses,{user:{id:r}}),J()(i.visibleStatuses,{user:{id:r}}),i.minVisibleId=i.visibleStatuses.length>0?x()(i.visibleStatuses).id:0,i.maxId=i.statuses.length>0?T()(i.statuses).id:0)},showNewStatuses:function(e,t){var n=t.timeline,r=e.timelines[n];r.newStatusCount=0,r.visibleStatuses=H()(r.statuses,0,50),r.minVisibleId=x()(r.visibleStatuses).id,r.minId=r.minVisibleId,r.visibleStatusesObject={},B()(r.visibleStatuses,(function(e){r.visibleStatusesObject[e.id]=e}))},resetStatuses:function(e){var t=Z();Object.entries(t).forEach((function(t){var n=m()(t,2),r=n[0],i=n[1];e[r]=i}))},clearTimeline:function(e,t){var n=t.timeline,r=t.excludeUserId,i=void 0!==r&&r?e.timelines[n].userId:void 0;e.timelines[n]=K(i)},clearNotifications:function(e){e.notifications=X()},setFavorited:function(e,t){var n=t.status,r=t.value,i=e.allStatusesObject[n.id];i.favorited!==r&&(r?i.fave_num++:i.fave_num--),i.favorited=r},setFavoritedConfirm:function(e,t){var n=t.status,r=t.user,i=e.allStatusesObject[n.id];i.favorited=n.favorited,i.fave_num=n.fave_num;var o=A()(i.favoritedBy,{id:r.id});-1===o||i.favorited?-1===o&&i.favorited&&i.favoritedBy.push(r):i.favoritedBy.splice(o,1)},setMutedStatus:function(e,t){var n=e.allStatusesObject[t.id];n.thread_muted=t.thread_muted,void 0!==n.thread_muted&&e.conversationsObject[n.statusnet_conversation_id].forEach((function(e){e.thread_muted=n.thread_muted}))},setRetweeted:function(e,t){var n=t.status,r=t.value,i=e.allStatusesObject[n.id];i.repeated!==r&&(r?i.repeat_num++:i.repeat_num--),i.repeated=r},setRetweetedConfirm:function(e,t){var n=t.status,r=t.user,i=e.allStatusesObject[n.id];i.repeated=n.repeated,i.repeat_num=n.repeat_num;var o=A()(i.rebloggedBy,{id:r.id});-1===o||i.repeated?-1===o&&i.repeated&&i.rebloggedBy.push(r):i.rebloggedBy.splice(o,1)},setBookmarked:function(e,t){var n=t.status,r=t.value;e.allStatusesObject[n.id].bookmarked=r},setBookmarkedConfirm:function(e,t){var n=t.status;e.allStatusesObject[n.id].bookmarked=n.bookmarked},setDeleted:function(e,t){var n=t.status,r=e.allStatusesObject[n.id];r&&(r.deleted=!0)},setManyDeleted:function(e,t){Object.values(e.allStatusesObject).forEach((function(e){t(e)&&(e.deleted=!0)}))},setLoading:function(e,t){var n=t.timeline,r=t.value;e.timelines[n].loading=r},setNsfw:function(e,t){var n=t.id,r=t.nsfw;e.allStatusesObject[n].nsfw=r},setNotificationsLoading:function(e,t){var n=t.value;e.notifications.loading=n},setNotificationsSilence:function(e,t){var n=t.value;e.notifications.desktopNotificationSilence=n},markNotificationsAsSeen:function(e){B()(e.notifications.data,(function(e){e.seen=!0}))},markSingleNotificationAsSeen:function(e,t){var n=t.id,r=L()(e.notifications.data,(function(e){return e.id===n}));r&&(r.seen=!0)},dismissNotification:function(e,t){var n=t.id;e.notifications.data=e.notifications.data.filter((function(e){return e.id!==n}))},dismissNotifications:function(e,t){var n=t.finder;e.notifications.data=e.notifications.data.filter((function(e){return n}))},updateNotification:function(e,t){var n=t.id,r=t.updater,i=L()(e.notifications.data,(function(e){return e.id===n}));i&&r(i)},queueFlush:function(e,t){var n=t.timeline,r=t.id;e.timelines[n].flushMarker=r},queueFlushAll:function(e){Object.keys(e.timelines).forEach((function(t){e.timelines[t].flushMarker=e.timelines[t].maxId}))},addRepeats:function(e,t){var n=t.id,r=t.rebloggedByUsers,i=t.currentUser,o=e.allStatusesObject[n];o.rebloggedBy=r.filter((function(e){return e})),o.repeat_num=o.rebloggedBy.length,o.repeated=!!o.rebloggedBy.find((function(e){var t=e.id;return i.id===t}))},addFavs:function(e,t){var n=t.id,r=t.favoritedByUsers,i=t.currentUser,o=e.allStatusesObject[n];o.favoritedBy=r.filter((function(e){return e})),o.fave_num=o.favoritedBy.length,o.favorited=!!o.favoritedBy.find((function(e){var t=e.id;return i.id===t}))},addEmojiReactionsBy:function(e,t){var n=t.id,r=t.emojiReactions;t.currentUser;e.allStatusesObject[n].emoji_reactions=r},addOwnReaction:function(e,t){var n=t.id,r=t.emoji,i=t.currentUser,o=e.allStatusesObject[n],s=A()(o.emoji_reactions,{name:r}),a=o.emoji_reactions[s]||{name:r,count:0,accounts:[]},c=G(G({},a),{},{count:a.count+1,me:!0,accounts:[].concat(d()(a.accounts),[i])});s>=0?o.emoji_reactions[s]=c:o.emoji_reactions=[].concat(d()(o.emoji_reactions),[c])},removeOwnReaction:function(e,t){var n=t.id,r=t.emoji,i=t.currentUser,o=e.allStatusesObject[n],s=A()(o.emoji_reactions,{name:r});if(!(s<0)){var a=o.emoji_reactions[s],c=a.accounts||[],l=G(G({},a),{},{count:a.count-1,me:!1,accounts:c.filter((function(e){return e.id!==i.id}))});l.count>0?o.emoji_reactions[s]=l:o.emoji_reactions=o.emoji_reactions.filter((function(e){return e.name!==r}))}},updateStatusWithPoll:function(e,t){var n=t.id,r=t.poll;e.allStatusesObject[n].poll=r},setVirtualHeight:function(e,t){var n=t.statusId,r=t.height;e.allStatusesObject[n].virtualHeight=r}},oe={state:Z(),actions:{addNewStatuses:function(e,t){var n=e.rootState,r=e.commit,i=t.statuses,o=t.showImmediately,s=void 0!==o&&o,a=t.timeline,c=void 0!==a&&a,l=t.noIdUpdate,u=void 0!==l&&l,d=t.userId,p=t.pagination;r("addNewStatuses",{statuses:i,showImmediately:s,timeline:c,noIdUpdate:u,user:n.users.currentUser,userId:d,pagination:p})},addNewNotifications:function(e,t){var n=t.notifications,r=t.older;(0,e.commit)("addNewNotifications",{dispatch:e.dispatch,notifications:n,older:r,rootGetters:e.rootGetters,newNotificationSideEffects:function(t){Object(W.d)(e,t)}})},setNotificationsLoading:function(e,t){e.rootState;(0,e.commit)("setNotificationsLoading",{value:t.value})},setNotificationsSilence:function(e,t){e.rootState;(0,e.commit)("setNotificationsSilence",{value:t.value})},fetchStatus:function(e,t){var n=e.rootState,r=e.dispatch;return n.api.backendInteractor.fetchStatus({id:t}).then((function(e){return r("addNewStatuses",{statuses:[e]})}))},deleteStatus:function(e,t){var n=e.rootState;(0,e.commit)("setDeleted",{status:t}),j.c.deleteStatus({id:t.id,credentials:n.users.currentUser.credentials})},deleteStatusById:function(e,t){var n=e.rootState;(0,e.commit)("setDeleted",{status:n.statuses.allStatusesObject[t]})},markStatusesAsDeleted:function(e,t){(0,e.commit)("setManyDeleted",t)},favorite:function(e,t){var n=e.rootState,r=e.commit;r("setFavorited",{status:t,value:!0}),n.api.backendInteractor.favorite({id:t.id}).then((function(e){return r("setFavoritedConfirm",{status:e,user:n.users.currentUser})}))},unfavorite:function(e,t){var n=e.rootState,r=e.commit;r("setFavorited",{status:t,value:!1}),n.api.backendInteractor.unfavorite({id:t.id}).then((function(e){return r("setFavoritedConfirm",{status:e,user:n.users.currentUser})}))},fetchPinnedStatuses:function(e,t){var n=e.rootState,r=e.dispatch;n.api.backendInteractor.fetchPinnedStatuses({id:t}).then((function(e){return r("addNewStatuses",{statuses:e,timeline:"user",userId:t,showImmediately:!0,noIdUpdate:!0})}))},pinStatus:function(e,t){var n=e.rootState,r=e.dispatch;return n.api.backendInteractor.pinOwnStatus({id:t}).then((function(e){return r("addNewStatuses",{statuses:[e]})}))},unpinStatus:function(e,t){var n=e.rootState,r=e.dispatch;n.api.backendInteractor.unpinOwnStatus({id:t}).then((function(e){return r("addNewStatuses",{statuses:[e]})}))},muteConversation:function(e,t){var n=e.rootState,r=e.commit;return n.api.backendInteractor.muteConversation({id:t}).then((function(e){return r("setMutedStatus",e)}))},unmuteConversation:function(e,t){var n=e.rootState,r=e.commit;return n.api.backendInteractor.unmuteConversation({id:t}).then((function(e){return r("setMutedStatus",e)}))},retweet:function(e,t){var n=e.rootState,r=e.commit;r("setRetweeted",{status:t,value:!0}),n.api.backendInteractor.retweet({id:t.id}).then((function(e){return r("setRetweetedConfirm",{status:e.retweeted_status,user:n.users.currentUser})}))},unretweet:function(e,t){var n=e.rootState,r=e.commit;r("setRetweeted",{status:t,value:!1}),n.api.backendInteractor.unretweet({id:t.id}).then((function(e){return r("setRetweetedConfirm",{status:e,user:n.users.currentUser})}))},bookmark:function(e,t){var n=e.rootState,r=e.commit;r("setBookmarked",{status:t,value:!0}),n.api.backendInteractor.bookmarkStatus({id:t.id}).then((function(e){r("setBookmarkedConfirm",{status:e})}))},unbookmark:function(e,t){var n=e.rootState,r=e.commit;r("setBookmarked",{status:t,value:!1}),n.api.backendInteractor.unbookmarkStatus({id:t.id}).then((function(e){r("setBookmarkedConfirm",{status:e})}))},queueFlush:function(e,t){e.rootState;(0,e.commit)("queueFlush",{timeline:t.timeline,id:t.id})},queueFlushAll:function(e){e.rootState;(0,e.commit)("queueFlushAll")},markNotificationsAsSeen:function(e){var t=e.rootState;(0,e.commit)("markNotificationsAsSeen"),j.c.markNotificationsAsSeen({id:t.statuses.notifications.maxId,credentials:t.users.currentUser.credentials})},markSingleNotificationAsSeen:function(e,t){var n=e.rootState,r=e.commit,i=t.id;r("markSingleNotificationAsSeen",{id:i}),j.c.markNotificationsAsSeen({single:!0,id:i,credentials:n.users.currentUser.credentials})},dismissNotificationLocal:function(e,t){e.rootState;(0,e.commit)("dismissNotification",{id:t.id})},dismissNotification:function(e,t){var n=e.rootState,r=e.commit,i=t.id;r("dismissNotification",{id:i}),n.api.backendInteractor.dismissNotification({id:i})},updateNotification:function(e,t){e.rootState;(0,e.commit)("updateNotification",{id:t.id,updater:t.updater})},fetchFavsAndRepeats:function(e,t){var n=e.rootState,r=e.commit;Promise.all([n.api.backendInteractor.fetchFavoritedByUsers({id:t}),n.api.backendInteractor.fetchRebloggedByUsers({id:t})]).then((function(e){var i=m()(e,2),o=i[0],s=i[1];r("addFavs",{id:t,favoritedByUsers:o,currentUser:n.users.currentUser}),r("addRepeats",{id:t,rebloggedByUsers:s,currentUser:n.users.currentUser})}))},reactWithEmoji:function(e,t){var n=e.rootState,r=e.dispatch,i=e.commit,o=t.id,s=t.emoji,a=n.users.currentUser;a&&(i("addOwnReaction",{id:o,emoji:s,currentUser:a}),n.api.backendInteractor.reactWithEmoji({id:o,emoji:s}).then((function(e){r("fetchEmojiReactionsBy",o)})))},unreactWithEmoji:function(e,t){var n=e.rootState,r=e.dispatch,i=e.commit,o=t.id,s=t.emoji,a=n.users.currentUser;a&&(i("removeOwnReaction",{id:o,emoji:s,currentUser:a}),n.api.backendInteractor.unreactWithEmoji({id:o,emoji:s}).then((function(e){r("fetchEmojiReactionsBy",o)})))},fetchEmojiReactionsBy:function(e,t){var n=e.rootState,r=e.commit;n.api.backendInteractor.fetchEmojiReactions({id:t}).then((function(e){r("addEmojiReactionsBy",{id:t,emojiReactions:e,currentUser:n.users.currentUser})}))},fetchFavs:function(e,t){var n=e.rootState,r=e.commit;n.api.backendInteractor.fetchFavoritedByUsers({id:t}).then((function(e){return r("addFavs",{id:t,favoritedByUsers:e,currentUser:n.users.currentUser})}))},fetchRepeats:function(e,t){var n=e.rootState,r=e.commit;n.api.backendInteractor.fetchRebloggedByUsers({id:t}).then((function(e){return r("addRepeats",{id:t,rebloggedByUsers:e,currentUser:n.users.currentUser})}))},search:function(e,t){var n=t.q,r=t.resolve,i=t.limit,o=t.offset,s=t.following;return e.rootState.api.backendInteractor.search2({q:n,resolve:r,limit:i,offset:o,following:s}).then((function(t){return e.commit("addNewUsers",t.accounts),e.commit("addNewStatuses",{statuses:t.statuses}),t}))},setVirtualHeight:function(e,t){(0,e.commit)("setVirtualHeight",{statusId:t.statusId,height:t.height})}},mutations:ie},se=n(98),ae=n.n(se),ce=n(97),le=n.n(ce),ue=n(145),de=n.n(ue),pe=n(21),he=n.n(pe),be=n(168),me=n.n(be),fe=n(146),Oe=n.n(fe),je=n(44),ge=function(e){var t=e.store,n=e.credentials,r=e.timeline,i=void 0===r?"friends":r,o=e.older,s=void 0!==o&&o,a=e.showImmediately,c=void 0!==a&&a,l=e.userId,u=void 0!==l&&l,d=e.tag,p=void 0!==d&&d,h=e.until,b=e.since,m={timeline:i,credentials:n},f=t.rootState||t.state,O=t.getters,g=f.statuses.timelines[Oe()(i)],v=O.mergedConfig,y=v.hideMutedPosts,w=v.replyVisibility,k=!!f.users.currentUser;s?m.until=h||g.minId:void 0===b?m.since=g.maxId:null!==b&&(m.since=b),m.userId=u,m.tag=p,m.withMuted=!y,k&&["friends","public","publicAndExternal"].includes(i)&&(m.replyVisibility=w);var _=g.statuses.length;return j.c.fetchTimeline(m).then((function(e){if(e.errors)throw new Error("".concat(e.status," ").concat(e.statusText));var n=e.data,r=e.pagination;return!s&&n.length>=20&&!g.loading&&_>0&&t.dispatch("queueFlush",{timeline:i,id:g.maxId}),function(e){var t=e.store,n=e.statuses,r=e.timeline,i=e.showImmediately,o=e.userId,s=e.pagination,a=Oe()(r);t.dispatch("addNewStatuses",{timeline:a,userId:o,statuses:n,showImmediately:i,pagination:s})}({store:t,statuses:n,timeline:i,showImmediately:c,userId:u,pagination:r}),{statuses:n,pagination:r}})).catch((function(e){t.dispatch("pushGlobalNotice",{level:"error",messageKey:"timeline.error",messageArgs:[e.message],timeout:5e3})}))},ve={fetchAndUpdate:ge,startFetching:function(e){var t=e.timeline,n=void 0===t?"friends":t,r=e.credentials,i=e.store,o=e.userId,s=void 0!==o&&o,a=e.tag,c=void 0!==a&&a,l=(i.rootState||i.state).statuses.timelines[Oe()(n)],u=0===l.visibleStatuses.length;l.userId=s,ge({timeline:n,credentials:r,store:i,showImmediately:u,userId:s,tag:c});return Object(je.a)((function(){return ge({timeline:n,credentials:r,store:i,userId:s,tag:c})}),2e4)}},ye=n(99),we={startFetching:function(e){var t=e.credentials,n=e.store,r=function(){return function(e){var t=e.store,n=e.credentials;return j.c.fetchFollowRequests({credentials:n}).then((function(e){t.commit("setFollowRequests",e),t.commit("addNewUsers",e)}),(function(){})).catch((function(){}))}({credentials:t,store:n})};return r(),Object(je.a)(r,24e4)}};function ke(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function _e(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ke(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ke(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Se=function(e){return _e(_e({startFetchingTimeline:function(t){var n=t.timeline,r=t.store,i=t.userId,o=void 0!==i&&i,s=t.tag;return ve.startFetching({timeline:n,store:r,credentials:e,userId:o,tag:s})},fetchTimeline:function(t){return ve.fetchAndUpdate(_e(_e({},t),{},{credentials:e}))},startFetchingNotifications:function(t){var n=t.store;return ye.a.startFetching({store:n,credentials:e})},fetchNotifications:function(t){return ye.a.fetchAndUpdate(_e(_e({},t),{},{credentials:e}))},startFetchingFollowRequests:function(t){var n=t.store;return we.startFetching({store:n,credentials:e})},startUserSocket:function(t){var n=t.store.rootState.instance.server.replace("http","ws")+Object(j.d)({credentials:e,stream:"user"});return Object(j.a)({url:n,id:"User"})}},Object.entries(j.c).reduce((function(t,n){var r=m()(n,2),i=r[0],o=r[1];return _e(_e({},t),{},h()({},i,(function(t){return o(_e({credentials:e},t))})))}),{})),{},{verifyCredentials:j.c.verifyCredentials})},Ce=function(){return window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth},Pe=function(){return window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight},xe=n(55),De=n.n(xe),Te="".concat(window.location.origin,"/oauth-callback"),Ie=function(e){var t=e.clientId,n=e.clientSecret,r=e.instance,i=e.commit;if(t&&n)return Promise.resolve({clientId:t,clientSecret:n});var o="".concat(r,"/api/v1/apps"),s=new window.FormData;return s.append("client_name","PleromaFE_".concat(window.___pleromafe_commit_hash,"_").concat((new Date).toISOString())),s.append("redirect_uris",Te),s.append("scopes","read write follow push admin"),window.fetch(o,{method:"POST",body:s}).then((function(e){return e.json()})).then((function(e){return{clientId:e.client_id,clientSecret:e.client_secret}})).then((function(e){return i("setClientData",e)||e}))},$e=function(e){var t=e.clientId,n=e.clientSecret,r=e.instance,i="".concat(r,"/oauth/token"),o=new window.FormData;return o.append("client_id",t),o.append("client_secret",n),o.append("grant_type","client_credentials"),o.append("redirect_uri","".concat(window.location.origin,"/oauth-callback")),window.fetch(i,{method:"POST",body:o}).then((function(e){return e.json()}))},ze={login:function(e){var t=e.instance,n={response_type:"code",client_id:e.clientId,redirect_uri:Te,scope:"read write follow push admin"},r=De()(n,(function(e,t,n){var r="".concat(n,"=").concat(encodeURIComponent(t));return e?"".concat(e,"&").concat(r):r}),!1),i="".concat(t,"/oauth/authorize?").concat(r);window.location.href=i},getToken:function(e){var t=e.clientId,n=e.clientSecret,r=e.instance,i=e.code,o="".concat(r,"/oauth/token"),s=new window.FormData;return s.append("client_id",t),s.append("client_secret",n),s.append("grant_type","authorization_code"),s.append("code",i),s.append("redirect_uri","".concat(window.location.origin,"/oauth-callback")),window.fetch(o,{method:"POST",body:s}).then((function(e){return e.json()}))},getTokenWithCredentials:function(e){var t=e.clientId,n=e.clientSecret,r=e.instance,i=e.username,o=e.password,s="".concat(r,"/oauth/token"),a=new window.FormData;return a.append("client_id",t),a.append("client_secret",n),a.append("grant_type","password"),a.append("username",i),a.append("password",o),window.fetch(s,{method:"POST",body:a}).then((function(e){return e.json()}))},getOrCreateApp:Ie,verifyOTPCode:function(e){var t=e.app,n=e.instance,r=e.mfaToken,i=e.code,o="".concat(n,"/oauth/mfa/challenge"),s=new window.FormData;return s.append("client_id",t.client_id),s.append("client_secret",t.client_secret),s.append("mfa_token",r),s.append("code",i),s.append("challenge_type","totp"),window.fetch(o,{method:"POST",body:s}).then((function(e){return e.json()}))},verifyRecoveryCode:function(e){var t=e.app,n=e.instance,r=e.mfaToken,i=e.code,o="".concat(n,"/oauth/mfa/challenge"),s=new window.FormData;return s.append("client_id",t.client_id),s.append("client_secret",t.client_secret),s.append("mfa_token",r),s.append("code",i),s.append("challenge_type","recovery"),window.fetch(o,{method:"POST",body:s}).then((function(e){return e.json()}))},revokeToken:function(e){var t=e.app,n=e.instance,r=e.token,i="".concat(n,"/oauth/revoke"),o=new window.FormData;return o.append("client_id",t.clientId),o.append("client_secret",t.clientSecret),o.append("token",r),window.fetch(i,{method:"POST",body:o}).then((function(e){return e.json()}))}},Me=n(320),Ue=n.n(Me);function Fe(){return"serviceWorker"in navigator&&"PushManager"in window}function Ee(){return Ue.a.register().catch((function(e){return console.error("Unable to get or create a service worker.",e)}))}function Le(e){return window.fetch("/api/v1/push/subscription/",{method:"DELETE",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)}}).then((function(e){if(!e.ok)throw new Error("Bad status code from server.");return e}))}function Re(e,t,n,r){Fe()&&Ee().then((function(n){return function(e,t,n){if(!t)return Promise.reject(new Error("Web Push is disabled in config"));if(!n)return Promise.reject(new Error("VAPID public key is not found"));var r,i,o,s={userVisibleOnly:!0,applicationServerKey:(r=n,i=(r+"=".repeat((4-r.length%4)%4)).replace(/-/g,"+").replace(/_/g,"/"),o=window.atob(i),Uint8Array.from(d()(o).map((function(e){return e.charCodeAt(0)}))))};return e.pushManager.subscribe(s)}(n,e,t)})).then((function(e){return function(e,t,n){return window.fetch("/api/v1/push/subscription/",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(t)},body:JSON.stringify({subscription:e,data:{alerts:{follow:n.follows,favourite:n.likes,mention:n.mentions,reblog:n.repeats,move:n.moves}}})}).then((function(e){if(!e.ok)throw new Error("Bad status code from server.");return e.json()})).then((function(e){if(!e.id)throw new Error("Bad response from server.");return e}))}(e,n,r)})).catch((function(e){return console.warn("Failed to setup Web Push Notifications: ".concat(e.message))}))}function Ae(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ne(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ae(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ae(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Be=function e(t,n){if(C()(t)&&C()(n))return t.length=n.length,de()(t,n,e)},Ve=function(e,t){return e.rootState.api.backendInteractor.blockUser({id:t}).then((function(n){e.commit("updateUserRelationship",[n]),e.commit("addBlockId",t),e.commit("removeStatus",{timeline:"friends",userId:t}),e.commit("removeStatus",{timeline:"public",userId:t}),e.commit("removeStatus",{timeline:"publicAndExternal",userId:t})}))},He=function(e,t){return e.rootState.api.backendInteractor.unblockUser({id:t}).then((function(t){return e.commit("updateUserRelationship",[t])}))},qe=function(e,t){var n=e.state.relationships[t]||{id:t};return n.muting=!0,e.commit("updateUserRelationship",[n]),e.commit("addMuteId",t),e.rootState.api.backendInteractor.muteUser({id:t}).then((function(n){e.commit("updateUserRelationship",[n]),e.commit("addMuteId",t)}))},Je=function(e,t){var n=e.state.relationships[t]||{id:t};return n.muting=!1,e.commit("updateUserRelationship",[n]),e.rootState.api.backendInteractor.unmuteUser({id:t}).then((function(t){return e.commit("updateUserRelationship",[t])}))},We=function(e,t){return e.rootState.api.backendInteractor.muteDomain({domain:t}).then((function(){return e.commit("addDomainMute",t)}))},Ye=function(e,t){return e.rootState.api.backendInteractor.unmuteDomain({domain:t}).then((function(){return e.commit("removeDomainMute",t)}))},Ge={state:{loggingIn:!1,lastLoginName:!1,currentUser:!1,users:[],usersObject:{},signUpPending:!1,signUpErrors:[],relationships:{}},mutations:{tagUser:function(e,t){var n=t.user.id,r=t.tag,i=e.usersObject[n],o=(i.tags||[]).concat([r]);i.tags=o},untagUser:function(e,t){var n=t.user.id,r=t.tag,i=e.usersObject[n],o=(i.tags||[]).filter((function(e){return e!==r}));i.tags=o},updateRight:function(e,t){var n=t.user.id,r=t.right,i=t.value,o=e.usersObject[n],s=o.rights;s[r]=i,o.rights=s},updateActivationStatus:function(e,t){var n=t.user.id,r=t.deactivated;e.usersObject[n].deactivated=r},setCurrentUser:function(e,t){e.lastLoginName=t.screen_name,e.currentUser=de()(e.currentUser||{},t,Be)},clearCurrentUser:function(e){e.currentUser=!1,e.lastLoginName=!1},beginLogin:function(e){e.loggingIn=!0},endLogin:function(e){e.loggingIn=!1},saveFriendIds:function(e,t){var n=t.id,r=t.friendIds,i=e.usersObject[n];i.friendIds=ae()(le()(i.friendIds||[],r))},saveFollowerIds:function(e,t){var n=t.id,r=t.followerIds,i=e.usersObject[n];i.followerIds=ae()(le()(i.followerIds||[],r))},clearFriends:function(e,t){var n=e.usersObject[t];n&&(n.friendIds=[])},clearFollowers:function(e,t){var n=e.usersObject[t];n&&(n.followerIds=[])},addNewUsers:function(e,t){B()(t,(function(t){t.relationship&&(e.relationships[t.relationship.id]=t.relationship),function(e,t,n){if(!n)return!1;var r=t[n.id];r?de()(r,n,Be):(e.push(n),t[n.id]=n,n.screen_name&&!n.screen_name.includes("@")&&(t[n.screen_name.toLowerCase()]=n))}(e.users,e.usersObject,t)}))},updateUserRelationship:function(e,t){t.forEach((function(t){e.relationships[t.id]=t}))},saveBlockIds:function(e,t){e.currentUser.blockIds=t},addBlockId:function(e,t){-1===e.currentUser.blockIds.indexOf(t)&&e.currentUser.blockIds.push(t)},saveMuteIds:function(e,t){e.currentUser.muteIds=t},addMuteId:function(e,t){-1===e.currentUser.muteIds.indexOf(t)&&e.currentUser.muteIds.push(t)},updateMascot:function(e,t){e.currentUser.mascot=t},saveDomainMutes:function(e,t){e.currentUser.domainMutes=t},addDomainMute:function(e,t){-1===e.currentUser.domainMutes.indexOf(t)&&e.currentUser.domainMutes.push(t)},removeDomainMute:function(e,t){var n=e.currentUser.domainMutes.indexOf(t);-1!==n&&e.currentUser.domainMutes.splice(n,1)},setPinnedToUser:function(e,t){var n=e.usersObject[t.user.id];n.pinnedStatusIds=n.pinnedStatusIds||[];var r=n.pinnedStatusIds.indexOf(t.id);t.pinned&&-1===r?n.pinnedStatusIds.push(t.id):t.pinned||-1===r||n.pinnedStatusIds.splice(r,1)},setUserForStatus:function(e,t){t.user=e.usersObject[t.user.id]},setUserForNotification:function(e,t){"follow"!==t.type&&(t.action.user=e.usersObject[t.action.user.id]),t.from_profile=e.usersObject[t.from_profile.id]},setColor:function(e,t){var n=t.user.id,r=t.highlighted;e.usersObject[n].highlight=r},signUpPending:function(e){e.signUpPending=!0,e.signUpErrors=[]},signUpSuccess:function(e){e.signUpPending=!1},signUpFailure:function(e,t){e.signUpPending=!1,e.signUpErrors=t}},getters:{findUser:function(e){return function(t){var n=e.usersObject[t];return n||"string"!=typeof t?n:e.usersObject[t.toLowerCase()]}},findUserByUrl:function(e){return function(t){return e.users.find((function(e){return e.statusnet_profile_url&&e.statusnet_profile_url.toLowerCase()===t.toLowerCase()}))}},relationship:function(e){return function(t){return t&&e.relationships[t]||{id:t,loading:!0}}}},actions:{fetchUserIfMissing:function(e,t){e.getters.findUser(t)||e.dispatch("fetchUser",t)},fetchUser:function(e,t){return e.rootState.api.backendInteractor.fetchUser({id:t}).then((function(t){return e.commit("addNewUsers",[t]),t}))},fetchUserRelationship:function(e,t){e.state.currentUser&&e.rootState.api.backendInteractor.fetchUserRelationship({id:t}).then((function(t){return e.commit("updateUserRelationship",t)}))},fetchBlocks:function(e){return e.rootState.api.backendInteractor.fetchBlocks().then((function(t){return e.commit("saveBlockIds",he()(t,"id")),e.commit("addNewUsers",t),t}))},blockUser:function(e,t){return Ve(e,t)},unblockUser:function(e,t){return He(e,t)},blockUsers:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return Ve(e,t)})))},unblockUsers:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return He(e,t)})))},fetchMutes:function(e){return e.rootState.api.backendInteractor.fetchMutes().then((function(t){return e.commit("saveMuteIds",he()(t,"id")),e.commit("addNewUsers",t),t}))},muteUser:function(e,t){return qe(e,t)},unmuteUser:function(e,t){return Je(e,t)},hideReblogs:function(e,t){return function(e,t){return e.rootState.api.backendInteractor.followUser({id:t,reblogs:!1}).then((function(t){e.commit("updateUserRelationship",[t])}))}(e,t)},showReblogs:function(e,t){return function(e,t){return e.rootState.api.backendInteractor.followUser({id:t,reblogs:!0}).then((function(t){return e.commit("updateUserRelationship",[t])}))}(e,t)},muteUsers:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return qe(e,t)})))},unmuteUsers:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return Je(e,t)})))},fetchMascot:function(e){return function(e){return e.rootState.api.backendInteractor.fetchMascot().then((function(t){var n=t.url;return e.commit("updateMascot",n)}))}(e)},fetchDomainMutes:function(e){return e.rootState.api.backendInteractor.fetchDomainMutes().then((function(t){return e.commit("saveDomainMutes",t),t}))},muteDomain:function(e,t){return We(e,t)},unmuteDomain:function(e,t){return Ye(e,t)},muteDomains:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return We(e,t)})))},unmuteDomains:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return Ye(e,t)})))},fetchFriends:function(e,t){var n=e.rootState,r=e.commit,i=n.users.usersObject[t],o=x()(i.friendIds);return n.api.backendInteractor.fetchFriends({id:t,maxId:o}).then((function(e){return r("addNewUsers",e),r("saveFriendIds",{id:t,friendIds:he()(e,"id")}),e}))},fetchFollowers:function(e,t){var n=e.rootState,r=e.commit,i=n.users.usersObject[t],o=x()(i.followerIds);return n.api.backendInteractor.fetchFollowers({id:t,maxId:o}).then((function(e){return r("addNewUsers",e),r("saveFollowerIds",{id:t,followerIds:he()(e,"id")}),e}))},clearFriends:function(e,t){(0,e.commit)("clearFriends",t)},clearFollowers:function(e,t){(0,e.commit)("clearFollowers",t)},subscribeUser:function(e,t){var n=e.rootState,r=e.commit;return n.api.backendInteractor.subscribeUser({id:t}).then((function(e){return r("updateUserRelationship",[e])}))},unsubscribeUser:function(e,t){var n=e.rootState,r=e.commit;return n.api.backendInteractor.unsubscribeUser({id:t}).then((function(e){return r("updateUserRelationship",[e])}))},toggleActivationStatus:function(e,t){var n=e.rootState,r=e.commit,i=t.user;(i.deactivated?n.api.backendInteractor.activateUser:n.api.backendInteractor.deactivateUser)({user:i}).then((function(e){var t=!e.is_active;r("updateActivationStatus",{user:e,deactivated:t})}))},registerPushNotifications:function(e){var t=e.state.currentUser.credentials,n=e.rootState.instance.vapidPublicKey;Re(e.rootState.config.webPushNotifications,n,t,e.rootState.config.notificationVisibility)},unregisterPushNotifications:function(e){!function(e){Fe()&&Promise.all([Le(e),Ee().then((function(e){return function(e){return e.pushManager.getSubscription().then((function(e){if(null!==e)return e.unsubscribe()}))}(e).then((function(t){return[e,t]}))})).then((function(e){var t=m()(e,2),n=t[0];return t[1]||console.warn("Push subscription cancellation wasn't successful, killing SW anyway..."),n.unregister().then((function(e){e||console.warn("Failed to kill SW")}))}))]).catch((function(e){return console.warn("Failed to disable Web Push Notifications: ".concat(e.message))}))}(e.state.currentUser.credentials)},addNewUsers:function(e,t){(0,e.commit)("addNewUsers",t)},addNewStatuses:function(e,t){var n=t.statuses,r=he()(n,"user"),i=me()(he()(n,"retweeted_status.user"));e.commit("addNewUsers",r),e.commit("addNewUsers",i),B()(n,(function(t){e.commit("setUserForStatus",t),e.commit("setPinnedToUser",t)})),B()(me()(he()(n,"retweeted_status")),(function(t){e.commit("setUserForStatus",t),e.commit("setPinnedToUser",t)}))},addNewNotifications:function(e,t){var n=t.notifications,r=he()(n,"from_profile"),i=he()(n,"target").filter((function(e){return e})),o=n.map((function(e){return e.id}));e.commit("addNewUsers",r),e.commit("addNewUsers",i);var s=e.rootState.statuses.notifications.idStore,a=Object.entries(s).filter((function(e){var t=m()(e,2),n=t[0];t[1];return o.includes(n)})).map((function(e){var t=m()(e,2);t[0];return t[1]}));B()(a,(function(t){e.commit("setUserForNotification",t)}))},searchUsers:function(e,t){var n=e.rootState,r=e.commit,i=t.query;return n.api.backendInteractor.searchUsers({query:i}).then((function(e){return r("addNewUsers",e),e}))},signUp:function(e,t){return i()(s.a.mark((function n(){var r,i,o;return s.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e.commit("signUpPending"),r=e.rootState,n.prev=2,n.next=5,r.api.backendInteractor.register({params:Ne({},t)});case 5:i=n.sent,e.commit("signUpSuccess"),e.commit("setToken",i.access_token),e.dispatch("loginUser",i.access_token),n.next=16;break;case 11:throw n.prev=11,n.t0=n.catch(2),o=n.t0.message,e.commit("signUpFailure",o),n.t0;case 16:case"end":return n.stop()}}),n,null,[[2,11]])})))()},getCaptcha:function(e){return i()(s.a.mark((function t(){return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",e.rootState.api.backendInteractor.getCaptcha());case 1:case"end":return t.stop()}}),t)})))()},logout:function(e){var t=e.rootState,n=t.oauth,r=t.instance,i=Ne(Ne({},n),{},{commit:e.commit,instance:r.server});return ze.getOrCreateApp(i).then((function(e){var t={app:e,instance:i.instance,token:n.userToken};return ze.revokeToken(t)})).then((function(){e.commit("clearCurrentUser"),e.dispatch("disconnectFromSocket"),e.commit("clearToken"),e.dispatch("stopFetchingTimeline","friends"),e.commit("setBackendInteractor",Se(e.getters.getToken())),e.dispatch("stopFetchingNotifications"),e.dispatch("stopFetchingFollowRequests"),e.commit("clearNotifications"),e.commit("resetStatuses"),e.dispatch("resetChats"),e.dispatch("setLastTimeline","public-timeline"),e.dispatch("setLayoutWidth",Ce()),e.dispatch("setLayoutHeight",Pe())}))},loginUser:function(e,t){return new Promise((function(n,r){var i=e.commit;i("beginLogin"),e.rootState.api.backendInteractor.verifyCredentials(t).then((function(o){if(o.error){var s=o.error;i("endLogin"),401===s.status?r(new Error("Wrong username or password")):r(new Error("An error occurred, please try again"))}else{var a=o;a.credentials=t,a.blockIds=[],a.muteIds=[],a.domainMutes=[],i("setCurrentUser",a),i("addNewUsers",[a]),e.dispatch("fetchEmoji"),(c=window.Notification,c?"default"===c.permission?c.requestPermission():Promise.resolve(c.permission):Promise.resolve(null)).then((function(e){return i("setNotificationPermission",e)})),i("setBackendInteractor",Se(t)),a.token&&(e.dispatch("setWsToken",a.token),e.dispatch("initializeSocket"));e.getters.mergedConfig.useStreamingApi?(e.dispatch("fetchTimeline","friends",{since:null}),e.dispatch("fetchNotifications",{since:null}),e.dispatch("enableMastoSockets",!0).catch((function(e){console.error("Failed initializing MastoAPI Streaming socket",e)})).then((function(){e.dispatch("fetchChats",{latest:!0}),setTimeout((function(){return e.dispatch("setNotificationsSilence",!1)}),1e4)}))):(e.dispatch("startFetchingTimeline",{timeline:"friends"}),e.dispatch("startFetchingNotifications"),e.dispatch("startFetchingChats")),e.dispatch("fetchMutes"),e.dispatch("setLayoutWidth",Ce()),e.dispatch("setLayoutHeight",Pe()),e.rootState.api.backendInteractor.fetchFriends({id:a.id}).then((function(e){return i("addNewUsers",e)}))}var c;i("endLogin"),n()})).catch((function(e){console.log(e),i("endLogin"),r(new Error("Failed to connect to server, try again"))}))}))}}},Ke=n(169),Xe=n.n(Ke),Ze=n(127),Qe=function(e,t){if(t.lastMessage&&(e.rootState.chats.currentChatId!==t.id||document.hidden)&&e.rootState.users.currentUser.id!==t.lastMessage.account_id){var n={tag:t.lastMessage.id,title:t.account.name,icon:t.account.profile_image_url,body:t.lastMessage.content};t.lastMessage.attachment&&"image"===t.lastMessage.attachment.type&&(n.image=t.lastMessage.attachment.preview_url),Object(Ze.a)(e.rootState,n)}},et=n(321);function tt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function nt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?tt(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):tt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var rt={state:{retryMultiplier:1,backendInteractor:Se(),fetchers:{},socket:null,mastoUserSocket:null,mastoUserSocketStatus:null,followRequests:[]},mutations:{setBackendInteractor:function(e,t){e.backendInteractor=t},addFetcher:function(e,t){var n=t.fetcherName,r=t.fetcher;e.fetchers[n]=r},removeFetcher:function(e,t){var n=t.fetcherName;t.fetcher;e.fetchers[n].stop(),delete e.fetchers[n]},setWsToken:function(e,t){e.wsToken=t},setSocket:function(e,t){e.socket=t},setFollowRequests:function(e,t){e.followRequests=t},setMastoUserSocketStatus:function(e,t){e.mastoUserSocketStatus=t},incrementRetryMultiplier:function(e){e.retryMultiplier=Math.max(++e.retryMultiplier,3)},resetRetryMultiplier:function(e){e.retryMultiplier=1}},actions:{enableMastoSockets:function(e,t){var n=e.state,r=e.dispatch,i=e.commit;if(!n.mastoUserSocket||[WebSocket.CLOSED,WebSocket.CLOSING].includes(n.mastoUserSocket.getState()))return i("setMastoUserSocketStatus",t?j.b.STARTING_INITIAL:j.b.STARTING),r("startMastoUserSocket")},disableMastoSockets:function(e){var t=e.state,n=e.dispatch,r=e.commit;if(t.mastoUserSocket)return r("setMastoUserSocketStatus",j.b.DISABLED),n("stopMastoUserSocket")},startMastoUserSocket:function(e){return new Promise((function(t,n){try{var r=e.state,i=e.commit,o=e.dispatch,s=e.rootState.statuses.timelines.friends;r.mastoUserSocket=r.backendInteractor.startUserSocket({store:e}),r.mastoUserSocket.addEventListener("message",(function(t){var n=t.detail;n&&("notification"===n.event?o("addNewNotifications",{notifications:[n.notification],older:!1}):"update"===n.event?o("addNewStatuses",{statuses:[n.status],userId:!1,showImmediately:0===s.visibleStatuses.length,timeline:"friends"}):"delete"===n.event?o("deleteStatusById",n.id):"pleroma:chat_update"===n.event&&setTimeout((function(){o("addChatMessages",{chatId:n.chatUpdate.id,messages:[n.chatUpdate.lastMessage]}),o("updateChat",{chat:n.chatUpdate}),Qe(e,n.chatUpdate)}),100))})),r.mastoUserSocket.addEventListener("open",(function(){r.mastoUserSocketStatus!==j.b.STARTING_INITIAL&&o("pushGlobalNotice",{level:"success",messageKey:"timeline.socket_reconnected",timeout:5e3}),new Set([j.b.ERROR,j.b.DISABLED]).has(r.mastoUserSocketStatus)&&(o("stopFetchingTimeline",{timeline:"friends"}),o("stopFetchingNotifications"),o("stopFetchingChats")),i("resetRetryMultiplier"),i("setMastoUserSocketStatus",j.b.JOINED)})),r.mastoUserSocket.addEventListener("error",(function(e){var t=e.detail;console.error("Error in MastoAPI websocket:",t),o("clearOpenedChats")})),r.mastoUserSocket.addEventListener("close",(function(e){var t=e.detail,n=new Set([1e3,1001]),s=t.code;n.has(s)?(console.debug("Not restarting socket becasue of closure code ".concat(s," is in ignore list")),i("setMastoUserSocketStatus",j.b.CLOSED)):(console.warn("MastoAPI websocket disconnected, restarting. CloseEvent code: ".concat(s)),setTimeout((function(){o("startMastoUserSocket")}),1e3*r.retryMultiplier),i("incrementRetryMultiplier"),r.mastoUserSocketStatus!==j.b.ERROR&&(o("startFetchingTimeline",{timeline:"friends"}),o("startFetchingNotifications"),o("startFetchingChats"),o("pushGlobalNotice",{level:"error",messageKey:"timeline.socket_broke",messageArgs:[s],timeout:5e3})),i("setMastoUserSocketStatus",j.b.ERROR)),o("clearOpenedChats")})),t()}catch(e){n(e)}}))},stopMastoUserSocket:function(e){var t=e.state,n=e.dispatch;n("startFetchingTimeline",{timeline:"friends"}),n("startFetchingNotifications"),n("startFetchingChats"),t.mastoUserSocket.close()},startFetchingTimeline:function(e,t){var n=t.timeline,r=void 0===n?"friends":n,i=t.tag,o=void 0!==i&&i,s=t.userId,a=void 0!==s&&s;if(!e.state.fetchers[r]){var c=e.state.backendInteractor.startFetchingTimeline({timeline:r,store:e,userId:a,tag:o});e.commit("addFetcher",{fetcherName:r,fetcher:c})}},stopFetchingTimeline:function(e,t){var n=e.state.fetchers[t];n&&e.commit("removeFetcher",{fetcherName:t,fetcher:n})},fetchTimeline:function(e,t,n){var r=Xe()({},n);e.state.backendInteractor.fetchTimeline(nt({store:e,timeline:t},r))},startFetchingNotifications:function(e){if(!e.state.fetchers.notifications){var t=e.state.backendInteractor.startFetchingNotifications({store:e});e.commit("addFetcher",{fetcherName:"notifications",fetcher:t})}},stopFetchingNotifications:function(e){var t=e.state.fetchers.notifications;t&&e.commit("removeFetcher",{fetcherName:"notifications",fetcher:t})},fetchNotifications:function(e,t){var n=Xe()({},t);e.state.backendInteractor.fetchNotifications(nt({store:e},n))},startFetchingFollowRequests:function(e){if(!e.state.fetchers.followRequests){var t=e.state.backendInteractor.startFetchingFollowRequests({store:e});e.commit("addFetcher",{fetcherName:"followRequests",fetcher:t})}},stopFetchingFollowRequests:function(e){var t=e.state.fetchers.followRequests;t&&e.commit("removeFetcher",{fetcherName:"followRequests",fetcher:t})},removeFollowRequest:function(e,t){var n=e.state.followRequests.filter((function(e){return e!==t}));e.commit("setFollowRequests",n)},setWsToken:function(e,t){e.commit("setWsToken",t)},initializeSocket:function(e){var t=e.dispatch,n=e.commit,r=e.state,i=e.rootState,o=r.wsToken;if(i.instance.shoutAvailable&&void 0!==o&&null===r.socket){var s=new et.a("/socket",{params:{token:o}});s.connect(),n("setSocket",s),t("initializeShout",s)}},disconnectFromSocket:function(e){var t=e.commit,n=e.state;n.socket&&n.socket.disconnect(),t("setSocket",null)}}},it=n(220),ot={state:{messages:[],channel:{state:""},joined:!1},mutations:{setChannel:function(e,t){e.channel=t},addMessage:function(e,t){e.messages.push(t),e.messages=e.messages.slice(-19,20)},setMessages:function(e,t){e.messages=t.slice(-19,20)},setJoined:function(e,t){e.joined=t}},actions:{initializeShout:function(e,t){var n=t.channel("chat:public");n.joinPush.receive("ok",(function(){e.commit("setJoined",!0)})),n.onClose((function(){e.commit("setJoined",!1)})),n.onError((function(){e.commit("setJoined",!1)})),n.on("new_msg",(function(t){e.commit("addMessage",t)})),n.on("messages",(function(t){var n=t.messages;e.commit("setMessages",n)})),n.join(),e.commit("setChannel",n)}}},st={state:{clientId:!1,clientSecret:!1,appToken:!1,userToken:!1},mutations:{setClientData:function(e,t){var n=t.clientId,r=t.clientSecret;e.clientId=n,e.clientSecret=r},setAppToken:function(e,t){e.appToken=t},setToken:function(e,t){e.userToken=t},clearToken:function(e){e.userToken=!1,delete e.token}},getters:{getToken:function(e){return function(){return e.userToken||e.token||e.appToken}},getUserToken:function(e){return function(){return e.userToken||e.token}}}},at=function(e){e.strategy=e.initStrategy,e.settings={}},ct={namespaced:!0,state:{settings:{},strategy:"password",initStrategy:"password"},getters:{settings:function(e,t){return e.settings},requiredPassword:function(e,t,n){return"password"===e.strategy},requiredToken:function(e,t,n){return"token"===e.strategy},requiredTOTP:function(e,t,n){return"totp"===e.strategy},requiredRecovery:function(e,t,n){return"recovery"===e.strategy}},mutations:{setInitialStrategy:function(e,t){t&&(e.initStrategy=t,e.strategy=t)},requirePassword:function(e){e.strategy="password"},requireToken:function(e){e.strategy="token"},requireMFA:function(e,t){var n=t.settings;e.settings=n,e.strategy="totp"},requireRecovery:function(e){e.strategy="recovery"},requireTOTP:function(e){e.strategy="totp"},abortMFA:function(e){at(e)}},actions:{login:function(e,t){return i()(s.a.mark((function n(){var r,i,o,a;return s.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return r=e.state,i=e.dispatch,o=e.commit,a=t.access_token,o("setToken",a,{root:!0}),n.next=5,i("loginUser",a,{root:!0});case 5:at(r);case 6:case"end":return n.stop()}}),n)})))()}}},lt=n(33),ut=new Set(["image","video","audio","flash"]),dt={state:{media:[],currentIndex:0,activated:!1},mutations:{setMedia:function(e,t){e.media=t},setCurrentMedia:function(e,t){e.activated=!0,e.currentIndex=t},close:function(e){e.activated=!1}},actions:{setMedia:function(e,t){(0,e.commit)("setMedia",t.filter((function(e){var t=lt.a.fileType(e.mimetype);return ut.has(t)})))},setCurrentMedia:function(e,t){(0,e.commit)("setCurrentMedia",e.state.media.indexOf(t)||0)},closeMediaViewer:function(e){(0,e.commit)("close")}}},pt={state:{tokens:[]},actions:{fetchTokens:function(e){var t=e.rootState,n=e.commit;t.api.backendInteractor.fetchOAuthTokens().then((function(e){n("swapTokens",e)}))},revokeToken:function(e,t){var n=e.rootState,r=e.commit,i=e.state;n.api.backendInteractor.revokeOAuthToken({id:t}).then((function(e){201===e.status&&r("swapTokens",i.tokens.filter((function(e){return e.id!==t})))}))}},mutations:{swapTokens:function(e,t){e.tokens=t}}},ht=n(49),bt=n.n(ht),mt={state:{userId:null,statuses:[],preTickedIds:[],modalActivated:!1},mutations:{openUserReportingModal:function(e,t){var n=t.userId,r=t.statuses,i=t.preTickedIds;e.userId=n,e.statuses=r,e.preTickedIds=i,e.modalActivated=!0},closeUserReportingModal:function(e){e.modalActivated=!1}},actions:{openUserReportingModal:function(e,t){var n=e.rootState,r=e.commit,i=t.userId,o=t.statusIds,s=void 0===o?[]:o,a=s.map((function(e){return n.statuses.allStatusesObject[e]})),c=s,l=a.concat(bt()(n.statuses.allStatuses,(function(e){return e.user.id===i&&!c.includes(e.id)})));r("openUserReportingModal",{userId:i,statuses:l,preTickedIds:c})},closeUserReportingModal:function(e){(0,e.commit)("closeUserReportingModal")}}},ft={state:{trackedPolls:{},pollsObject:{}},mutations:{mergeOrAddPoll:function(e,t){var n=e.pollsObject[t.id];t.expired=Date.now()>Date.parse(t.expires_at),e.pollsObject[t.id]=n?$()(n,t):t},trackPoll:function(e,t){var n=e.trackedPolls[t];e.trackedPolls[t]=n?n+1:1},untrackPoll:function(e,t){var n=e.trackedPolls[t];e.trackedPolls[t]=n?n-1:0}},actions:{mergeOrAddPoll:function(e,t){(0,e.commit)("mergeOrAddPoll",t)},updateTrackedPoll:function(e,t){var n=e.rootState,r=e.dispatch,i=e.commit;n.api.backendInteractor.fetchPoll({pollId:t}).then((function(e){setTimeout((function(){n.polls.trackedPolls[t]&&r("updateTrackedPoll",t)}),3e4),i("mergeOrAddPoll",e)}))},trackPoll:function(e,t){var n=e.rootState,r=e.commit,i=e.dispatch;n.polls.trackedPolls[t]||setTimeout((function(){return i("updateTrackedPoll",t)}),3e4),r("trackPoll",t)},untrackPoll:function(e,t){(0,e.commit)("untrackPoll",t)},votePoll:function(e,t){var n=e.rootState,r=e.commit,i=(t.id,t.pollId),o=t.choices;return n.api.backendInteractor.vote({pollId:i,choices:o}).then((function(e){return r("mergeOrAddPoll",e),e}))}}},Ot={state:{params:null,modalActivated:!1},mutations:{openPostStatusModal:function(e,t){e.params=t,e.modalActivated=!0},closePostStatusModal:function(e){e.modalActivated=!1}},actions:{openPostStatusModal:function(e,t){(0,e.commit)("openPostStatusModal",t)},closePostStatusModal:function(e){(0,e.commit)("closePostStatusModal")}}},jt=n(134),gt=n.n(jt),vt=n(100),yt=n.n(vt),wt=n(0),kt=n(28),_t=n.n(kt),St=n(322),Ct=n.n(St),Pt=n(125),xt=n.n(Pt);function Dt(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return Tt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Tt(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function Tt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var It=function(e,t){if(t.idempotency_key)return e.idempotencyKeyIndex[t.idempotency_key]},$t={add:function(e,t){var n=t.messages,r=t.updateMaxId,i=void 0===r||r;if(e)for(var o=function(t){var r=n[t];if(r.chat_id!==e.chatId)return{v:void 0};if(r.fakeId){var o=e.idIndex[r.fakeId];if(o)return e.idIndex[r.id]&&(delete e.idIndex[r.id],e.messages=e.messages.filter((function(e){return e.id!==r.id}))),Object.assign(o,r,{error:!1}),delete o.fakeId,e.idIndex[o.id]=o,delete e.idIndex[r.fakeId],{v:void 0}}(!e.minId||!r.pending&&r.id<e.minId)&&(e.minId=r.id),(!e.maxId||r.id>e.maxId)&&i&&(e.maxId=r.id),e.idIndex[r.id]||It(e,r)||(e.lastSeenMessageId<r.id&&e.newMessageCount++,e.idIndex[r.id]=r,e.messages.push(e.idIndex[r.id]),e.idempotencyKeyIndex[r.idempotency_key]=!0)},s=0;s<n.length;s++){var a=o(s);if("object"===_t()(a))return a.v}},empty:function(e){return{idIndex:{},idempotencyKeyIndex:{},messages:[],newMessageCount:0,lastSeenMessageId:"0",chatId:e,minId:void 0,maxId:void 0}},getView:function(e){if(!e)return[];var t,n=[],r=yt()(e.messages,["pending","id"],["asc","asc"]),i=r[0],o=r[r.length-1];if(i){var s=new Date(i.created_at);s.setHours(0,0,0,0),n.push({type:"date",date:s,id:s.getTime().toString()})}for(var a=!1,c=0;c<r.length;c++){var l=r[c],u=r[c+1],d=new Date(l.created_at);d.setHours(0,0,0,0),o&&o.date<d&&(n.push({type:"date",date:d,id:d.getTime().toString()}),o.isTail=!0,t=void 0,a=!0);var p={type:"message",data:l,date:d,id:l.id,messageChainId:t};(u&&u.account_id)!==l.account_id&&(p.isTail=!0,t=void 0),((o&&o.data&&o.data.account_id)!==l.account_id||a)&&(t=Ct()(),p.isHead=!0,p.messageChainId=t),n.push(p),o=p,a=!1}return n},deleteMessage:function(e,t){if(e){if(e.messages=e.messages.filter((function(e){return e.id!==t})),delete e.idIndex[t],e.maxId===t){var n=F()(e.messages,"id");e.maxId=n.id}if(e.minId===t){var r=M()(e.messages,"id");e.minId=r.id}}},cullOlderMessages:function(e){var t=e.messages.length,n=t-50;if(!(t<=50)){e.messages=xt()(e.messages,["id"]),e.minId=e.messages[n].id;var r,i=Dt(e.messages);try{for(i.s();!(r=i.n()).done;){var o=r.value;o.id<e.minId&&(delete e.idIndex[o.id],delete e.idempotencyKeyIndex[o.idempotency_key])}}catch(e){i.e(e)}finally{i.f()}e.messages=e.messages.slice(n,t)}},resetNewMessageCount:function(e){e&&(e.newMessageCount=0,e.lastSeenMessageId=e.maxId)},clear:function(e){var t,n=[],r=Dt(e.messages);try{for(r.s();!(t=r.n()).done;){var i=t.value;i.error?n.push(i.id):(delete e.idIndex[i.id],delete e.idempotencyKeyIndex[i.idempotency_key])}}catch(e){r.e(e)}finally{r.f()}e.messages=e.messages.filter((function(e){return n.includes(e.id)})),e.newMessageCount=0,e.lastSeenMessageId="0",e.minId=void 0,e.maxId=void 0},handleMessageError:function(e,t,n){if(e){var r=e.idIndex[t];if(r&&(r.error=!0,r.pending=!1,!n)){var i=yt()(e.messages,["pending","id"],["asc","desc"])[0];if(i){var o=r.id;r.id="".concat(i.id,"-").concat((new Date).getTime()),e.idIndex[r.id]=r,delete e.idIndex[o]}}}}},zt=n(14);function Mt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ut(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Mt(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Mt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Ft={chatList:{data:[],idStore:{}},chatListFetcher:null,openedChats:Object(wt.F)({}),openedChatMessageServices:Object(wt.F)({}),fetcher:void 0,currentChatId:null,lastReadMessageId:null},Et=function(e,t){return L()(e.chatList.data,{id:t})},Lt={state:Ut({},Ft),getters:{currentChat:function(e){return e.openedChats[e.currentChatId]},currentChatMessageService:function(e){return e.openedChatMessageServices[e.currentChatId]},findOpenedChatByRecipientId:function(e){return function(t){return L()(e.openedChats,(function(e){return e.account.id===t}))}},sortedChatList:function(e){return yt()(e.chatList.data,["updated_at"],["desc"])},unreadChatCount:function(e){return gt()(e.chatList.data,"unread")}},actions:{startFetchingChats:function(e){var t=e.dispatch,n=e.commit,r=function(){return t("fetchChats",{latest:!0})};r(),n("setChatListFetcher",{fetcher:function(){return Object(je.a)(r,6e4)}})},stopFetchingChats:function(e){(0,e.commit)("setChatListFetcher",{fetcher:void 0})},fetchChats:function(e){var t=e.dispatch,n=e.rootState;e.commit;return n.api.backendInteractor.chats().then((function(e){var n=e.chats;return t("addNewChats",{chats:n}),n}))},addNewChats:function(e,t){var n=t.chats;(0,e.commit)("addNewChats",{dispatch:e.dispatch,chats:n,rootGetters:e.rootGetters,newChatMessageSideEffects:function(t){Qe(e,t)}})},updateChat:function(e,t){(0,e.commit)("updateChat",{chat:t.chat})},startFetchingCurrentChat:function(e,t){e.commit;(0,e.dispatch)("setCurrentChatFetcher",{fetcher:t.fetcher})},setCurrentChatFetcher:function(e,t){e.rootState;(0,e.commit)("setCurrentChatFetcher",{fetcher:t.fetcher})},addOpenedChat:function(e,t){e.rootState;var n=e.commit,r=e.dispatch,i=t.chat;n("addOpenedChat",{dispatch:r,chat:Object(zt.b)(i)}),r("addNewUsers",[i.account])},addChatMessages:function(e,t){var n=e.commit;n("addChatMessages",Ut({commit:n},t))},resetChatNewMessageCount:function(e,t){(0,e.commit)("resetChatNewMessageCount",t)},clearCurrentChat:function(e,t){e.rootState;var n=e.commit;e.dispatch;n("setCurrentChatId",{chatId:void 0}),n("setCurrentChatFetcher",{fetcher:void 0})},readChat:function(e,t){var n=e.rootState,r=e.commit,i=e.dispatch,o=t.id,s=t.lastReadId,a=n.chats.lastReadMessageId!==s;i("resetChatNewMessageCount"),r("readChat",{id:o,lastReadId:s}),a&&n.api.backendInteractor.readChat({id:o,lastReadId:s})},deleteChatMessage:function(e,t){var n=e.rootState,r=e.commit;n.api.backendInteractor.deleteChatMessage(t),r("deleteChatMessage",Ut({commit:r},t))},resetChats:function(e){var t=e.commit;(0,e.dispatch)("clearCurrentChat"),t("resetChats",{commit:t})},clearOpenedChats:function(e){e.rootState;var t=e.commit;e.dispatch,e.rootGetters;t("clearOpenedChats",{commit:t})},handleMessageError:function(e,t){var n=e.commit;n("handleMessageError",Ut({commit:n},t))},cullOlderMessages:function(e,t){(0,e.commit)("cullOlderMessages",t)}},mutations:{setChatListFetcher:function(e,t){t.commit;var n=t.fetcher,r=e.chatListFetcher;r&&r.stop(),e.chatListFetcher=n&&n()},setCurrentChatFetcher:function(e,t){var n=t.fetcher,r=e.fetcher;r&&r.stop(),e.fetcher=n&&n()},addOpenedChat:function(e,t){t._dispatch;var n=t.chat;e.currentChatId=n.id,e.openedChats[n.id]=n,e.openedChatMessageServices[n.id]||(e.openedChatMessageServices[n.id]=$t.empty(n.id))},setCurrentChatId:function(e,t){var n=t.chatId;e.currentChatId=n},addNewChats:function(e,t){var n=t.chats,r=t.newChatMessageSideEffects;n.forEach((function(t){var n=Et(e,t.id);if(n){var i=(n.lastMessage&&n.lastMessage.id)!==(t.lastMessage&&t.lastMessage.id);n.lastMessage=t.lastMessage,n.unread=t.unread,n.updated_at=t.updated_at,i&&n.unread&&r(t)}else e.chatList.data.push(t),e.chatList.idStore[t.id]=t}))},updateChat:function(e,t){t._dispatch;var n=t.chat,r=(t._rootGetters,Et(e,n.id));r&&(r.lastMessage=n.lastMessage,r.unread=n.unread,r.updated_at=n.updated_at),r||e.chatList.data.unshift(n),e.chatList.idStore[n.id]=n},deleteChat:function(e,t){t._dispatch;var n=t.id;t._rootGetters;e.chats.data=e.chats.data.filter((function(e){return e.last_status.id!==n})),e.chats.idStore=_()(e.chats.idStore,(function(e){return e.last_status.id===n}))},resetChats:function(e,t){var n=t.commit;for(var r in e.chatList={data:[],idStore:{}},e.currentChatId=null,n("setChatListFetcher",{fetcher:void 0}),e.openedChats)$t.clear(e.openedChatMessageServices[r]),delete e.openedChats[r],delete e.openedChatMessageServices[r]},setChatsLoading:function(e,t){var n=t.value;e.chats.loading=n},addChatMessages:function(e,t){var n=t.chatId,r=t.messages,i=t.updateMaxId,o=e.openedChatMessageServices[n];o&&$t.add(o,{messages:r.map(zt.c),updateMaxId:i})},deleteChatMessage:function(e,t){var n=t.chatId,r=t.messageId,i=e.openedChatMessageServices[n];i&&$t.deleteMessage(i,r)},resetChatNewMessageCount:function(e,t){var n=e.openedChatMessageServices[e.currentChatId];$t.resetNewMessageCount(n)},clearOpenedChats:function(e){var t=e.currentChatId;for(var n in e.openedChats)t!==n&&($t.clear(e.openedChatMessageServices[n]),delete e.openedChats[n],delete e.openedChatMessageServices[n])},readChat:function(e,t){var n=t.id,r=t.lastReadId;e.lastReadMessageId=r;var i=Et(e,n);i&&(i.unread=0)},handleMessageError:function(e,t){var n=t.chatId,r=t.fakeId,i=t.isRetry,o=e.openedChatMessageServices[n];$t.handleMessageError(o,r,i)},cullOlderMessages:function(e,t){$t.cullOlderMessages(e.openedChatMessageServices[t])}}},Rt=n(335),At=n(135),Nt=n.n(At),Bt=n(39),Vt=n.n(Bt),Ht=n(16),qt=n.n(Ht),Jt=n(323),Wt=n.n(Jt),Yt=n(324),Gt=!1,Kt=function(e,t){return 0===t.length?e:t.reduce((function(t,n){return Vt()(t,n,qt()(e,n)),t}),{})},Xt=["markNotificationsAsSeen","clearCurrentUser","setCurrentUser","setHighlight","setOption","setClientData","setToken","clearToken"],Zt=n.n(Yt).a;function Qt(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.key,n=void 0===t?"vuex-lz":t,r=e.paths,i=void 0===r?[]:r,o=e.getState,s=void 0===o?function(e,t){return t.getItem(e)}:o,a=e.setState,c=void 0===a?function(e,t,n){return Gt?n.setItem(e,t):(console.log("waiting for old state to be loaded..."),Promise.resolve())}:a,l=e.reducer,u=void 0===l?Kt:l,d=e.storage,p=void 0===d?Zt:d,h=e.subscriber,b=void 0===h?function(e){return function(t){return e.subscribe(t)}}:h;return s(n,p).then((function(e){return function(t){try{if(null!==e&&"object"===_t()(e)){var r=e.users||{};r.usersObject={};var o=r.users||[];B()(o,(function(e){r.usersObject[e.id]=e})),e.users=r,t.replaceState(Wt()({},t.state,e))}Gt=!0}catch(e){console.log("Couldn't load state"),console.error(e),Gt=!0}b(t)((function(e,r){try{Xt.includes(e.type)&&c(n,u(Nt()(r),i),p).then((function(n){void 0!==n&&("setOption"!==e.type&&"setCurrentUser"!==e.type||t.dispatch("settingsSaved",{success:n}))}),(function(n){"setOption"!==e.type&&"setCurrentUser"!==e.type||t.dispatch("settingsSaved",{error:n})}))}catch(e){console.log("Couldn't persist state:"),console.log(e)}}))}}))}var en=function(e){e.subscribe((function(t,n){var r=n.instance.vapidPublicKey,i=n.config.webPushNotifications,o="granted"===n.interface.notificationPermission,s=n.users.currentUser,a="setCurrentUser"===t.type,c="setInstanceOption"===t.type&&"vapidPublicKey"===t.payload.name,l="setNotificationPermission"===t.type&&"granted"===t.payload,u="setOption"===t.type&&"webPushNotifications"===t.payload.name,d="setOption"===t.type&&"notificationVisibility"===t.payload.name;if(a||c||l||u||d){if(s&&r&&o&&i)return e.dispatch("registerPushNotifications");if(u&&!i)return e.dispatch("unregisterPushNotifications")}}))},tn=n(70),nn=n(171),rn=n(325),on=n.n(rn),sn=n(68);const an=Object(wt.k)("div",{id:"app_bg_wrapper",class:"app-bg-wrapper"},null,-1),cn=Object(wt.k)("div",{class:"underlay"},null,-1),ln=Object(wt.k)("div",{id:"notifs-sidebar"},null,-1),un={key:0,class:"login-hint panel panel-default"},dn=Object(wt.k)("div",{id:"modal"},null,-1);const pn={class:"user-panel"},hn={key:"user-panel-signed",class:"panel panel-default signed-in"};const bn={class:"login panel panel-default"},mn={class:"panel-heading"},fn={class:"panel-body"},On={class:"form-group"},jn={for:"username"},gn=["disabled","placeholder"],vn={class:"form-group"},yn={for:"password"},wn=["disabled"],kn={class:"form-group"},_n={key:1,class:"form-group"},Sn={class:"form-group"},Cn={class:"login-bottom"},Pn=["disabled"],xn={key:0,class:"form-group"},Dn={class:"alert error"};var Tn=n(6),In=n(3);function $n(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function zn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?$n(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$n(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.rb);var Mn={data:function(){return{user:{},error:!1}},computed:zn(zn({isPasswordAuth:function(){return this.requiredPassword},isTokenAuth:function(){return this.requiredToken}},Object(a.e)({registrationOpen:function(e){return e.instance.registrationOpen},instance:function(e){return e.instance},loggingIn:function(e){return e.users.loggingIn},oauth:function(e){return e.oauth}})),Object(a.c)("authFlow",["requiredPassword","requiredToken","requiredMFA"])),methods:zn(zn(zn({},Object(a.d)("authFlow",["requireMFA"])),Object(a.b)({login:"authFlow/login"})),{},{submit:function(){this.isTokenAuth?this.submitToken():this.submitPassword()},submitToken:function(){var e=this.oauth,t={clientId:e.clientId,clientSecret:e.clientSecret,instance:this.instance.server,commit:this.$store.commit};ze.getOrCreateApp(t).then((function(e){ze.login(zn(zn({},e),t))}))},submitPassword:function(){var e=this,t={clientId:this.oauth.clientId,oauth:this.oauth,instance:this.instance.server,commit:this.$store.commit};this.error=!1,ze.getOrCreateApp(t).then((function(n){ze.getTokenWithCredentials(zn(zn({},n),{},{instance:t.instance,username:e.user.username,password:e.user.password})).then((function(t){t.error?"mfa_required"===t.error?e.requireMFA({settings:t}):"password_reset_required"===t.identifier?e.$router.push({name:"password-reset",params:{passwordResetRequested:!0}}):(e.error=t.error,e.focusOnPasswordInput()):e.login(t).then((function(){e.$router.push({name:"friends"})}))}))}))},clearError:function(){this.error=!1},focusOnPasswordInput:function(){var e=this.$refs.passwordInput;e.focus(),e.setSelectionRange(0,e.value.length)}})},Un=(n(498),n(4)),Fn=n.n(Un);var En=Fn()(Mn,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("router-link"),a=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",bn,[Object(wt.k)("div",mn,Object(wt.O)(e.$t("login.login")),1),Object(wt.k)("div",fn,[Object(wt.k)("form",{class:"login-form",onSubmit:t[2]||(t[2]=Object(wt.Y)((...t)=>e.submit&&e.submit(...t),["prevent"]))},[e.isPasswordAuth?(Object(wt.D)(),Object(wt.j)(wt.a,{key:0},[Object(wt.k)("div",On,[Object(wt.k)("label",jn,Object(wt.O)(e.$t("login.username")),1),Object(wt.W)(Object(wt.k)("input",{id:"username","onUpdate:modelValue":t[0]||(t[0]=t=>e.user.username=t),disabled:e.loggingIn,class:"form-control",placeholder:e.$t("login.placeholder")},null,8,gn),[[wt.S,e.user.username]])]),Object(wt.k)("div",vn,[Object(wt.k)("label",yn,Object(wt.O)(e.$t("login.password")),1),Object(wt.W)(Object(wt.k)("input",{id:"password",ref:"passwordInput","onUpdate:modelValue":t[1]||(t[1]=t=>e.user.password=t),disabled:e.loggingIn,class:"form-control",type:"password"},null,8,wn),[[wt.S,e.user.password]])]),Object(wt.k)("div",kn,[Object(wt.m)(s,{to:{name:"password-reset"}},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.$t("password_reset.forgot_password")),1)]),_:1})])],64)):Object(wt.i)("",!0),e.isTokenAuth?(Object(wt.D)(),Object(wt.j)("div",_n,[Object(wt.k)("p",null,Object(wt.O)(e.$t("login.description")),1)])):Object(wt.i)("",!0),Object(wt.k)("div",Sn,[Object(wt.k)("div",Cn,[Object(wt.k)("div",null,[e.registrationOpen?(Object(wt.D)(),Object(wt.h)(s,{key:0,to:{name:"registration"},class:"register"},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.$t("login.register")),1)]),_:1})):Object(wt.i)("",!0)]),Object(wt.k)("button",{disabled:e.loggingIn,type:"submit",class:"btn button-default"},Object(wt.O)(e.$t("login.login")),9,Pn)])])],32)]),e.error?(Object(wt.D)(),Object(wt.j)("div",xn,[Object(wt.k)("div",Dn,[Object(wt.l)(Object(wt.O)(e.error)+" ",1),Object(wt.k)("button",{class:"button-unstyled",onClick:t[3]||(t[3]=(...t)=>e.clearError&&e.clearError(...t))},[Object(wt.m)(a,{class:"fa-scale-110 fa-old-padding",icon:"times"})])])])):Object(wt.i)("",!0)])}]]);const Ln={class:"login panel panel-default"},Rn={class:"panel-heading"},An={class:"panel-body"},Nn={class:"form-group"},Bn={for:"code"},Vn={class:"form-group"},Hn={class:"login-bottom"},qn=Object(wt.k)("br",null,null,-1),Jn={type:"submit",class:"btn button-default"},Wn={key:0,class:"form-group"},Yn={class:"alert error"};var Gn={verifyOTPCode:function(e){var t=e.clientId,n=e.clientSecret,r=e.instance,i=e.mfaToken,o=e.code,s="".concat(r,"/oauth/mfa/challenge"),a=new window.FormData;return a.append("client_id",t),a.append("client_secret",n),a.append("mfa_token",i),a.append("code",o),a.append("challenge_type","totp"),window.fetch(s,{method:"POST",body:a}).then((function(e){return e.json()}))},verifyRecoveryCode:function(e){var t=e.clientId,n=e.clientSecret,r=e.instance,i=e.mfaToken,o=e.code,s="".concat(r,"/oauth/mfa/challenge"),a=new window.FormData;return a.append("client_id",t),a.append("client_secret",n),a.append("mfa_token",i),a.append("code",o),a.append("challenge_type","recovery"),window.fetch(s,{method:"POST",body:a}).then((function(e){return e.json()}))}};function Kn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Xn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Kn(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Kn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.rb);var Zn={data:function(){return{code:null,error:!1}},computed:Xn(Xn({},Object(a.c)({authSettings:"authFlow/settings"})),Object(a.e)({instance:"instance",oauth:"oauth"})),methods:Xn(Xn(Xn({},Object(a.d)("authFlow",["requireTOTP","abortMFA"])),Object(a.b)({login:"authFlow/login"})),{},{clearError:function(){this.error=!1},submit:function(){var e=this,t=this.oauth,n={clientId:t.clientId,clientSecret:t.clientSecret,instance:this.instance.server,mfaToken:this.authSettings.mfa_token,code:this.code};Gn.verifyRecoveryCode(n).then((function(t){if(t.error)return e.error=t.error,void(e.code=null);e.login(t).then((function(){e.$router.push({name:"friends"})}))}))}})};var Qn=Fn()(Zn,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",Ln,[Object(wt.k)("div",Rn,Object(wt.O)(e.$t("login.heading.recovery")),1),Object(wt.k)("div",An,[Object(wt.k)("form",{class:"login-form",onSubmit:t[3]||(t[3]=Object(wt.Y)((...t)=>e.submit&&e.submit(...t),["prevent"]))},[Object(wt.k)("div",Nn,[Object(wt.k)("label",Bn,Object(wt.O)(e.$t("login.recovery_code")),1),Object(wt.W)(Object(wt.k)("input",{id:"code","onUpdate:modelValue":t[0]||(t[0]=t=>e.code=t),class:"form-control"},null,512),[[wt.S,e.code]])]),Object(wt.k)("div",Vn,[Object(wt.k)("div",Hn,[Object(wt.k)("div",null,[Object(wt.k)("button",{class:"button-unstyled -link",type:"button",onClick:t[1]||(t[1]=Object(wt.Y)((...t)=>e.requireTOTP&&e.requireTOTP(...t),["prevent"]))},Object(wt.O)(e.$t("login.enter_two_factor_code")),1),qn,Object(wt.k)("button",{class:"button-unstyled -link",type:"button",onClick:t[2]||(t[2]=Object(wt.Y)((...t)=>e.abortMFA&&e.abortMFA(...t),["prevent"]))},Object(wt.O)(e.$t("general.cancel")),1)]),Object(wt.k)("button",Jn,Object(wt.O)(e.$t("general.verify")),1)])])],32)]),e.error?(Object(wt.D)(),Object(wt.j)("div",Wn,[Object(wt.k)("div",Yn,[Object(wt.l)(Object(wt.O)(e.error)+" ",1),Object(wt.k)("button",{class:"button-unstyled",onClick:t[4]||(t[4]=(...t)=>e.clearError&&e.clearError(...t))},[Object(wt.m)(s,{class:"fa-scale-110 fa-old-padding",icon:"times"})])])])):Object(wt.i)("",!0)])}]]);const er={class:"login panel panel-default"},tr={class:"panel-heading"},nr={class:"panel-body"},rr={class:"form-group"},ir={for:"code"},or={class:"form-group"},sr={class:"login-bottom"},ar=Object(wt.k)("br",null,null,-1),cr={type:"submit",class:"btn button-default"},lr={key:0,class:"form-group"},ur={class:"alert error"};function dr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function pr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?dr(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):dr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.rb);var hr={data:function(){return{code:null,error:!1}},computed:pr(pr({},Object(a.c)({authSettings:"authFlow/settings"})),Object(a.e)({instance:"instance",oauth:"oauth"})),methods:pr(pr(pr({},Object(a.d)("authFlow",["requireRecovery","abortMFA"])),Object(a.b)({login:"authFlow/login"})),{},{clearError:function(){this.error=!1},submit:function(){var e=this,t=this.oauth,n={clientId:t.clientId,clientSecret:t.clientSecret,instance:this.instance.server,mfaToken:this.authSettings.mfa_token,code:this.code};Gn.verifyOTPCode(n).then((function(t){if(t.error)return e.error=t.error,void(e.code=null);e.login(t).then((function(){e.$router.push({name:"friends"})}))}))}})};var br=Fn()(hr,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",er,[Object(wt.k)("div",tr,Object(wt.O)(e.$t("login.heading.totp")),1),Object(wt.k)("div",nr,[Object(wt.k)("form",{class:"login-form",onSubmit:t[3]||(t[3]=Object(wt.Y)((...t)=>e.submit&&e.submit(...t),["prevent"]))},[Object(wt.k)("div",rr,[Object(wt.k)("label",ir,Object(wt.O)(e.$t("login.authentication_code")),1),Object(wt.W)(Object(wt.k)("input",{id:"code","onUpdate:modelValue":t[0]||(t[0]=t=>e.code=t),class:"form-control"},null,512),[[wt.S,e.code]])]),Object(wt.k)("div",or,[Object(wt.k)("div",sr,[Object(wt.k)("div",null,[Object(wt.k)("button",{class:"button-unstyled -link",type:"button",onClick:t[1]||(t[1]=Object(wt.Y)((...t)=>e.requireRecovery&&e.requireRecovery(...t),["prevent"]))},Object(wt.O)(e.$t("login.enter_recovery_code")),1),ar,Object(wt.k)("button",{class:"button-unstyled -link",type:"button",onClick:t[2]||(t[2]=Object(wt.Y)((...t)=>e.abortMFA&&e.abortMFA(...t),["prevent"]))},Object(wt.O)(e.$t("general.cancel")),1)]),Object(wt.k)("button",cr,Object(wt.O)(e.$t("general.verify")),1)])])],32)]),e.error?(Object(wt.D)(),Object(wt.j)("div",lr,[Object(wt.k)("div",ur,[Object(wt.l)(Object(wt.O)(e.error)+" ",1),Object(wt.k)("button",{class:"button-unstyled",onClick:t[4]||(t[4]=(...t)=>e.clearError&&e.clearError(...t))},[Object(wt.m)(s,{size:"lg",class:"fa-scale-110 fa-old-padding",icon:"times"})])])])):Object(wt.i)("",!0)])}]]);function mr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var fr={name:"AuthForm",render:function(){return Object(wt.q)(Object(wt.J)(this.authForm))},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?mr(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):mr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({authForm:function(){return this.requiredTOTP?"MFATOTPForm":this.requiredRecovery?"MFARecoveryForm":"LoginForm"}},Object(a.c)("authFlow",["requiredTOTP","requiredRecovery"])),components:{MFARecoveryForm:Qn,MFATOTPForm:br,LoginForm:En}},Or=n(57),jr=n(35);function gr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var vr={computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?gr(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):gr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({signedIn:function(){return this.user}},Object(a.e)({user:function(e){return e.users.currentUser}})),components:{AuthForm:fr,PostStatusForm:Or.a,UserCard:jr.a}};n(531);var yr=Fn()(vr,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("UserCard"),a=Object(wt.J)("PostStatusForm"),c=Object(wt.J)("auth-form");return Object(wt.D)(),Object(wt.j)("div",pn,[e.signedIn?(Object(wt.D)(),Object(wt.j)("div",hn,[Object(wt.m)(s,{"user-id":e.user.id,"hide-bio":!0,rounded:"top"},null,8,["user-id"]),Object(wt.m)(a)])):(Object(wt.D)(),Object(wt.h)(c,{key:"user-panel"}))])}]]);const wr={class:"NavPanel"},kr={class:"panel panel-default"},_r={key:0},Sr={class:"timelines-background"},Cr={key:1},Pr={key:2},xr={key:0,class:"badge badge-notification"},Dr={key:3},Tr={key:0,class:"badge badge-notification"};const Ir={key:0},$r={key:1},zr={key:2},Mr={key:3},Ur={key:4};function Fr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}Tn.c.add(In.wb,In.I,In.j,In.y,In.J);var Er={computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Fr(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Fr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Object(a.e)({currentUser:function(e){return e.users.currentUser},privateMode:function(e){return e.instance.private},federating:function(e){return e.instance.federating}}))};var Lr=Fn()(Er,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("router-link");return Object(wt.D)(),Object(wt.j)("ul",null,[e.currentUser?(Object(wt.D)(),Object(wt.j)("li",Ir,[Object(wt.m)(a,{class:"menu-item",to:{name:"friends"}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"home"}),Object(wt.l)(Object(wt.O)(e.$t("nav.home_timeline")),1)]),_:1})])):Object(wt.i)("",!0),e.currentUser||!e.privateMode?(Object(wt.D)(),Object(wt.j)("li",$r,[Object(wt.m)(a,{class:"menu-item",to:{name:"public-timeline"}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"users"}),Object(wt.l)(Object(wt.O)(e.$t("nav.public_tl")),1)]),_:1})])):Object(wt.i)("",!0),!e.federating||!e.currentUser&&e.privateMode?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",zr,[Object(wt.m)(a,{class:"menu-item",to:{name:"public-external-timeline"}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"globe"}),Object(wt.l)(Object(wt.O)(e.$t("nav.twkn")),1)]),_:1})])),e.currentUser?(Object(wt.D)(),Object(wt.j)("li",Mr,[Object(wt.m)(a,{class:"menu-item",to:{name:"bookmarks"}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"bookmark"}),Object(wt.l)(Object(wt.O)(e.$t("nav.bookmarks")),1)]),_:1})])):Object(wt.i)("",!0),e.currentUser?(Object(wt.D)(),Object(wt.j)("li",Ur,[Object(wt.m)(a,{class:"menu-item",to:{name:"dms",params:{username:e.currentUser.screen_name}}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"envelope"}),Object(wt.l)(Object(wt.O)(e.$t("nav.dms")),1)]),_:1},8,["to"])])):Object(wt.i)("",!0)])}]]);function Rr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ar(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Rr(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Rr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.wb,In.I,In.j,In.y,In.n,In.q,In.t,In.i,In.M,In.mb);var Nr={created:function(){this.currentUser&&this.currentUser.locked&&this.$store.dispatch("startFetchingFollowRequests")},components:{TimelineMenuContent:Lr},data:function(){return{showTimelines:!1}},methods:{toggleTimelines:function(){this.showTimelines=!this.showTimelines}},computed:Ar(Ar({},Object(a.e)({currentUser:function(e){return e.users.currentUser},followRequestCount:function(e){return e.api.followRequests.length},privateMode:function(e){return e.instance.private},federating:function(e){return e.instance.federating},pleromaChatMessagesAvailable:function(e){return e.instance.pleromaChatMessagesAvailable}})),Object(a.c)(["unreadChatCount"]))};n(532);var Br=Fn()(Nr,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("TimelineMenuContent"),c=Object(wt.J)("router-link");return Object(wt.D)(),Object(wt.j)("div",wr,[Object(wt.k)("div",kr,[Object(wt.k)("ul",null,[e.currentUser||!e.privateMode?(Object(wt.D)(),Object(wt.j)("li",_r,[Object(wt.k)("button",{class:"button-unstyled menu-item",onClick:t[0]||(t[0]=(...t)=>e.toggleTimelines&&e.toggleTimelines(...t))},[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110",icon:"stream"}),Object(wt.l)(Object(wt.O)(e.$t("nav.timelines"))+" ",1),Object(wt.m)(s,{class:"timelines-chevron","fixed-width":"",icon:e.showTimelines?"chevron-up":"chevron-down"},null,8,["icon"])]),Object(wt.W)(Object(wt.k)("div",Sr,[Object(wt.m)(a,{class:"timelines"})],512),[[wt.T,e.showTimelines]])])):Object(wt.i)("",!0),e.currentUser?(Object(wt.D)(),Object(wt.j)("li",Cr,[Object(wt.m)(c,{class:"menu-item",to:{name:"interactions",params:{username:e.currentUser.screen_name}}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110",icon:"bell"}),Object(wt.l)(Object(wt.O)(e.$t("nav.interactions")),1)]),_:1},8,["to"])])):Object(wt.i)("",!0),e.currentUser&&e.pleromaChatMessagesAvailable?(Object(wt.D)(),Object(wt.j)("li",Pr,[Object(wt.m)(c,{class:"menu-item",to:{name:"chats",params:{username:e.currentUser.screen_name}}},{default:Object(wt.V)(()=>[e.unreadChatCount?(Object(wt.D)(),Object(wt.j)("div",xr,Object(wt.O)(e.unreadChatCount),1)):Object(wt.i)("",!0),Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110",icon:"comments"}),Object(wt.l)(Object(wt.O)(e.$t("nav.chats")),1)]),_:1},8,["to"])])):Object(wt.i)("",!0),e.currentUser&&e.currentUser.locked?(Object(wt.D)(),Object(wt.j)("li",Dr,[Object(wt.m)(c,{class:"menu-item",to:{name:"friend-requests"}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110",icon:"user-plus"}),Object(wt.l)(Object(wt.O)(e.$t("nav.friend_requests"))+" ",1),e.followRequestCount>0?(Object(wt.D)(),Object(wt.j)("span",Tr,Object(wt.O)(e.followRequestCount),1)):Object(wt.i)("",!0)]),_:1})])):Object(wt.i)("",!0),Object(wt.k)("li",null,[Object(wt.m)(c,{class:"menu-item",to:{name:"about"}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110",icon:"info-circle"}),Object(wt.l)(Object(wt.O)(e.$t("nav.about")),1)]),_:1})])])])])}]]);const Vr={class:"instance-specific-panel"},Hr={class:"panel panel-default"},qr={class:"panel-body"},Jr=["innerHTML"];var Wr={computed:{instanceSpecificPanelContent:function(){return this.$store.state.instance.instanceSpecificPanelContent}}};var Yr=Fn()(Wr,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("div",Vr,[Object(wt.k)("div",Hr,[Object(wt.k)("div",qr,[Object(wt.k)("div",{innerHTML:e.instanceSpecificPanelContent},null,8,Jr)])])])}]]);const Gr={class:"features-panel"},Kr={class:"panel panel-default base01-background"},Xr={class:"panel-heading timeline-heading base02-background base04"},Zr={class:"title"},Qr={class:"panel-body features-panel"},ei={key:0},ti={key:1},ni={key:2},ri={key:3},ii={key:4};var oi=n(96),si={computed:{shout:function(){return this.$store.state.instance.shoutAvailable},pleromaChatMessages:function(){return this.$store.state.instance.pleromaChatMessagesAvailable},gopher:function(){return this.$store.state.instance.gopherAvailable},whoToFollow:function(){return this.$store.state.instance.suggestionsEnabled},mediaProxy:function(){return this.$store.state.instance.mediaProxyAvailable},minimalScopesMode:function(){return this.$store.state.instance.minimalScopesMode},textlimit:function(){return this.$store.state.instance.textlimit},uploadlimit:function(){return oi.a.fileSizeFormat(this.$store.state.instance.uploadlimit)}}};n(533);var ai=Fn()(si,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("div",Gr,[Object(wt.k)("div",Kr,[Object(wt.k)("div",Xr,[Object(wt.k)("div",Zr,Object(wt.O)(e.$t("features_panel.title")),1)]),Object(wt.k)("div",Qr,[Object(wt.k)("ul",null,[e.shout?(Object(wt.D)(),Object(wt.j)("li",ei,Object(wt.O)(e.$t("features_panel.shout")),1)):Object(wt.i)("",!0),e.pleromaChatMessages?(Object(wt.D)(),Object(wt.j)("li",ti,Object(wt.O)(e.$t("features_panel.pleroma_chat_messages")),1)):Object(wt.i)("",!0),e.gopher?(Object(wt.D)(),Object(wt.j)("li",ni,Object(wt.O)(e.$t("features_panel.gopher")),1)):Object(wt.i)("",!0),e.whoToFollow?(Object(wt.D)(),Object(wt.j)("li",ri,Object(wt.O)(e.$t("features_panel.who_to_follow")),1)):Object(wt.i)("",!0),e.mediaProxy?(Object(wt.D)(),Object(wt.j)("li",ii,Object(wt.O)(e.$t("features_panel.media_proxy")),1)):Object(wt.i)("",!0),Object(wt.k)("li",null,Object(wt.O)(e.$t("features_panel.scope_options")),1),Object(wt.k)("li",null,Object(wt.O)(e.$t("features_panel.text_limit"))+" = "+Object(wt.O)(e.textlimit),1),Object(wt.k)("li",null,Object(wt.O)(e.$t("features_panel.upload_limit"))+" = "+Object(wt.O)(e.uploadlimit.num)+" "+Object(wt.O)(e.$t("upload.file_size_units."+e.uploadlimit.unit)),1)])])])])}]]);const ci={class:"who-to-follow-panel"},li={class:"panel panel-default base01-background"},ui={class:"panel-heading timeline-heading base02-background base04"},di={class:"title"},pi={class:"who-to-follow"},hi=["src"],bi=Object(wt.k)("br",null,null,-1),mi={class:"who-to-follow-more"};var fi=n(330),Oi=n.n(fi),ji=n(23);function gi(e){var t=e.$store.state.users.currentUser.credentials;t&&(e.usersToFollow.forEach((function(e){e.name="Loading..."})),j.c.suggestions({credentials:t}).then((function(t){!function(e,t){var n=this,r=Oi()(t);e.usersToFollow.forEach((function(t,i){var o=r[i],s=o.avatar||n.$store.state.instance.defaultAvatar,a=o.acct;t.img=s,t.name=a,e.$store.state.api.backendInteractor.fetchUser({id:a}).then((function(n){n.error||(e.$store.commit("addNewUsers",[n]),t.id=n.id)}))}))}(e,t)})))}var vi={data:function(){return{usersToFollow:[]}},computed:{user:function(){return this.$store.state.users.currentUser.screen_name},suggestionsEnabled:function(){return this.$store.state.instance.suggestionsEnabled}},methods:{userProfileLink:function(e,t){return Object(ji.a)(e,t,this.$store.state.instance.restrictedNicknames)}},watch:{user:function(e,t){this.suggestionsEnabled&&gi(this)}},mounted:function(){var e=this;this.usersToFollow=new Array(3).fill().map((function(t){return{img:e.$store.state.instance.defaultAvatar,name:"",id:0}})),this.suggestionsEnabled&&gi(this)}};n(537);var yi=Fn()(vi,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("router-link");return Object(wt.D)(),Object(wt.j)("div",ci,[Object(wt.k)("div",li,[Object(wt.k)("div",ui,[Object(wt.k)("div",di,Object(wt.O)(e.$t("who_to_follow.who_to_follow")),1)]),Object(wt.k)("div",pi,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.usersToFollow,t=>(Object(wt.D)(),Object(wt.j)("p",{key:t.id,class:"who-to-follow-items"},[Object(wt.k)("img",{src:t.img},null,8,hi),Object(wt.m)(s,{to:e.userProfileLink(t.id,t.name)},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(t.name),1)]),_:2},1032,["to"]),bi]))),128)),Object(wt.k)("p",mi,[Object(wt.m)(s,{to:{name:"who-to-follow"}},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.$t("who_to_follow.more")),1)]),_:1})])])])])}]]);const wi={key:0,class:"shout-panel"},ki={class:"panel panel-default"},_i={class:"title"},Si={class:"shout-window"},Ci={class:"shout-avatar"},Pi=["src"],xi={class:"shout-content"},Di=Object(wt.k)("br",null,null,-1),Ti={class:"shout-text"},Ii={class:"shout-input"},$i={key:1,class:"shout-panel"},zi={class:"panel panel-default"},Mi={class:"title"};Tn.c.add(In.l,In.rb);var Ui={props:["floating"],data:function(){return{currentMessage:"",channel:null,collapsed:!0}},computed:{messages:function(){return this.$store.state.shout.messages}},methods:{submit:function(e){this.$store.state.shout.channel.push("new_msg",{text:e},1e4),this.currentMessage=""},togglePanel:function(){this.collapsed=!this.collapsed},userProfileLink:function(e){return Object(ji.a)(e.id,e.username,this.$store.state.instance.restrictedNicknames)}},watch:{messages:function(e){var t=this.$el.querySelector(".chat-window");t&&t.scrollTop+t.offsetHeight+20>t.scrollHeight&&this.$nextTick((function(){t&&(t.scrollTop=t.scrollHeight-t.offsetHeight)}))}}};n(538);var Fi=Fn()(Ui,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("router-link");return e.collapsed&&e.floating?(Object(wt.D)(),Object(wt.j)("div",$i,[Object(wt.k)("div",zi,[Object(wt.k)("div",{class:"panel-heading -stub timeline-heading shout-heading",onClick:t[3]||(t[3]=Object(wt.Y)((...t)=>e.togglePanel&&e.togglePanel(...t),["stop","prevent"]))},[Object(wt.k)("div",Mi,[Object(wt.m)(s,{class:"icon",icon:"bullhorn"}),Object(wt.l)(" "+Object(wt.O)(e.$t("shoutbox.title")),1)])])])])):(Object(wt.D)(),Object(wt.j)("div",wi,[Object(wt.k)("div",ki,[Object(wt.k)("div",{class:Object(wt.w)(["panel-heading timeline-heading",{"shout-heading":e.floating}]),onClick:t[0]||(t[0]=Object(wt.Y)((...t)=>e.togglePanel&&e.togglePanel(...t),["stop","prevent"]))},[Object(wt.k)("div",_i,[Object(wt.l)(Object(wt.O)(e.$t("shoutbox.title"))+" ",1),e.floating?(Object(wt.D)(),Object(wt.h)(s,{key:0,icon:"times",class:"close-icon"})):Object(wt.i)("",!0)])],2),Object(wt.k)("div",Si,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.messages,t=>(Object(wt.D)(),Object(wt.j)("div",{key:t.id,class:"shout-message"},[Object(wt.k)("span",Ci,[Object(wt.k)("img",{src:t.author.avatar},null,8,Pi)]),Object(wt.k)("div",xi,[Object(wt.m)(a,{class:"shout-name",to:e.userProfileLink(t.author)},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(t.author.username),1)]),_:2},1032,["to"]),Di,Object(wt.k)("span",Ti,Object(wt.O)(t.text),1)])]))),128))]),Object(wt.k)("div",Ii,[Object(wt.W)(Object(wt.k)("textarea",{"onUpdate:modelValue":t[1]||(t[1]=t=>e.currentMessage=t),class:"shout-input-textarea",rows:"1",onKeyup:t[2]||(t[2]=Object(wt.X)(t=>e.submit(e.currentMessage),["enter"]))},null,544),[[wt.S,e.currentMessage]])])])]))}]]);const Ei={class:"settings-modal-panel panel"},Li={class:"panel-heading"},Ri={class:"title"},Ai=["title"],Ni=["title"],Bi={class:"panel-body"},Vi={class:"panel-footer settings-footer"},Hi=["title"],qi=Object(wt.l)(" "+Object(wt.O)(" ")+" "),Ji={class:"dropdown-menu"},Wi=["onClick"],Yi=["onClick"],Gi=["onClick"],Ki=Object(wt.k)("span",{id:"unscrolled-content",class:"extra-content"},null,-1);var Xi={props:{isOpen:{type:Boolean,default:!0},noBackground:{type:Boolean,default:!1}},computed:{classes:function(){return{"modal-background":!this.noBackground,open:this.isOpen}}}};n(539);var Zi=Fn()(Xi,[["render",function(e,t,n,r,i,o){const s=Object(wt.K)("body-scroll-lock");return Object(wt.W)((Object(wt.D)(),Object(wt.j)("div",{class:Object(wt.w)(["modal-view",o.classes]),onClick:t[0]||(t[0]=Object(wt.Y)(t=>e.$emit("backdropClicked"),["self"]))},[Object(wt.I)(e.$slots,"default")],2)),[[wt.T,n.isOpen],[s,n.isOpen&&!n.noBackground]])}]]);const Qi={class:"panel-loading"},eo={class:"loading-text"};Tn.c.add(In.r);var to={};n(540);var no=Fn()(to,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",Qi,[Object(wt.k)("span",eo,[Object(wt.m)(s,{icon:"circle-notch",spin:"",size:"3x"}),Object(wt.l)(" "+Object(wt.O)(e.$t("general.loading")),1)])])}]]);const ro={class:"async-component-error"};var io={emits:["resetAsyncComponent"],methods:{retry:function(){this.$emit("resetAsyncComponent")}}};n(541);var oo=Fn()(io,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("div",ro,[Object(wt.k)("div",null,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("general.generic_error")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("general.error_retry")),1),Object(wt.k)("button",{class:"btn button-default",onClick:t[0]||(t[0]=(...e)=>o.retry&&o.retry(...e))},Object(wt.O)(e.$t("general.retry")),1)])])}]]);function so(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var ao=function(e,t){var n=function(){return function(){return Object(wt.n)(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?so(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):so(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({loader:e},t))}},r=Object(wt.M)({c:n()});return{render:function(){return Object(wt.q)(r.c(),{onResetAsyncComponent:function(){r.c=n()}})}}},co=n(24),lo=n(51),uo=n(138),po=n(41);function ho(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function bo(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ho(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ho(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.rb,po.e,In.F,In.E,In.n);var mo={data:function(){var e=this;return{dataImporter:Object(uo.b)({validator:this.importValidator,onImport:this.onImport,onImportFailure:this.onImportFailure}),dataThemeExporter:Object(uo.a)({filename:"pleromafe_settings.full",getExportedObject:function(){return e.generateExport(!0)}}),dataExporter:Object(uo.a)({filename:"pleromafe_settings",getExportedObject:function(){return e.generateExport()}})}},components:{Modal:Zi,Popover:co.default,Checkbox:lo.a,SettingsModalContent:ao((function(){return Promise.all([n.e(3),n.e(2)]).then(n.bind(null,708))}),{loadingComponent:no,errorComponent:oo,delay:0})},methods:{closeModal:function(){this.$store.dispatch("closeSettingsModal")},peekModal:function(){this.$store.dispatch("togglePeekSettingsModal")},importValidator:function(e){if(!Array.isArray(e._pleroma_settings_version))return{messageKey:"settings.file_import_export.invalid_file"};var t=m()(e._pleroma_settings_version,2),n=t[0],r=t[1];return n>1?{messageKey:"settings.file_export_import.errors.file_too_new",messageArgs:{fileMajor:n,feMajor:1}}:n<1?{messageKey:"settings.file_export_import.errors.file_too_old",messageArgs:{fileMajor:n,feMajor:1}}:(r>0&&this.$store.dispatch("pushGlobalNotice",{level:"warning",messageKey:"settings.file_export_import.errors.file_slightly_new"}),!0)},onImportFailure:function(e){e.error?this.$store.dispatch("pushGlobalNotice",{messageKey:"settings.invalid_settings_imported",level:"error"}):this.$store.dispatch("pushGlobalNotice",bo(bo({},e.validationResult),{},{level:"error"}))},onImport:function(e){e&&this.$store.dispatch("loadSettings",e)},restore:function(){this.dataImporter.importData()},backup:function(){this.dataExporter.exportData()},backupWithTheme:function(){this.dataThemeExporter.exportData()},generateExport:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.$store.state.config,n=t;if(!e){var r=new Set(["customTheme","customThemeSource","colors"]);n=Object.fromEntries(Object.entries(n).filter((function(e){var t=m()(e,1)[0];return!r.has(t)})))}var i=Nt()(n);return i._pleroma_settings_version=[1,0],i}},computed:{currentSaveStateNotice:function(){return this.$store.state.interface.settings.currentSaveStateNotice},modalActivated:function(){return"hidden"!==this.$store.state.interface.settingsModalState},modalOpenedOnce:function(){return this.$store.state.interface.settingsModalLoaded},modalPeeked:function(){return"minimized"===this.$store.state.interface.settingsModalState},expertLevel:{get:function(){return this.$store.state.config.expertLevel>0},set:function(e){console.log(e),this.$store.dispatch("setOption",{name:"expertLevel",value:e?1:0})}}}};n(542);var fo=Fn()(mo,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("SettingsModalContent"),c=Object(wt.J)("Popover"),l=Object(wt.J)("Checkbox"),u=Object(wt.J)("Modal");return Object(wt.D)(),Object(wt.h)(u,{"is-open":e.modalActivated,class:Object(wt.w)(["settings-modal",{peek:e.modalPeeked}]),"no-background":e.modalPeeked},{default:Object(wt.V)(()=>[Object(wt.k)("div",Ei,[Object(wt.k)("div",Li,[Object(wt.k)("span",Ri,Object(wt.O)(e.$t("settings.settings")),1),Object(wt.m)(wt.e,{name:"fade"},{default:Object(wt.V)(()=>[e.currentSaveStateNotice?(Object(wt.D)(),Object(wt.j)("div",{key:0,class:Object(wt.w)(["alert",{transparent:!e.currentSaveStateNotice.error,error:e.currentSaveStateNotice.error}]),onClick:t[0]||(t[0]=Object(wt.Y)(()=>{},["prevent"]))},Object(wt.O)(e.currentSaveStateNotice.error?e.$t("settings.saving_err"):e.$t("settings.saving_ok")),3)):Object(wt.i)("",!0)]),_:1}),Object(wt.k)("button",{class:"btn button-default",title:e.$t("general.peek"),onClick:t[1]||(t[1]=(...t)=>e.peekModal&&e.peekModal(...t))},[Object(wt.m)(s,{icon:["far","window-minimize"],"fixed-width":""})],8,Ai),Object(wt.k)("button",{class:"btn button-default",title:e.$t("general.close"),onClick:t[2]||(t[2]=(...t)=>e.closeModal&&e.closeModal(...t))},[Object(wt.m)(s,{icon:"times","fixed-width":""})],8,Ni)]),Object(wt.k)("div",Bi,[e.modalOpenedOnce?(Object(wt.D)(),Object(wt.h)(a,{key:0})):Object(wt.i)("",!0)]),Object(wt.k)("div",Vi,[Object(wt.m)(c,{class:"export",trigger:"click",placement:"top",offset:{y:5,x:5},"bound-to":{x:"container"},"remove-padding":""},{trigger:Object(wt.V)(()=>[Object(wt.k)("button",{class:"btn button-default",title:e.$t("general.close")},[Object(wt.k)("span",null,Object(wt.O)(e.$t("settings.file_export_import.backup_restore")),1),qi,Object(wt.m)(s,{icon:"chevron-down"})],8,Hi)]),content:Object(wt.V)(({close:n})=>[Object(wt.k)("div",Ji,[Object(wt.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:[t[3]||(t[3]=Object(wt.Y)((...t)=>e.backup&&e.backup(...t),["prevent"])),n]},[Object(wt.m)(s,{icon:"file-download","fixed-width":""}),Object(wt.k)("span",null,Object(wt.O)(e.$t("settings.file_export_import.backup_settings")),1)],8,Wi),Object(wt.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:[t[4]||(t[4]=Object(wt.Y)((...t)=>e.backupWithTheme&&e.backupWithTheme(...t),["prevent"])),n]},[Object(wt.m)(s,{icon:"file-download","fixed-width":""}),Object(wt.k)("span",null,Object(wt.O)(e.$t("settings.file_export_import.backup_settings_theme")),1)],8,Yi),Object(wt.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:[t[5]||(t[5]=Object(wt.Y)((...t)=>e.restore&&e.restore(...t),["prevent"])),n]},[Object(wt.m)(s,{icon:"file-upload","fixed-width":""}),Object(wt.k)("span",null,Object(wt.O)(e.$t("settings.file_export_import.restore_settings")),1)],8,Gi)])]),_:1}),Object(wt.m)(l,{"model-value":!!e.expertLevel,"onUpdate:modelValue":t[6]||(t[6]=t=>e.expertLevel=Number(t))},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.$t("settings.expert_mode")),1)]),_:1},8,["model-value"]),Ki])])]),_:1},8,["is-open","class","no-background"])}]]);const Oo=["src","alt","title"],jo=["src","alt","title"],go=["title"],vo=["title"],yo=["title"],wo={key:6,class:"description"},ko={class:"counter"},_o={key:7,class:"loading-spinner"};var So=n(50),Co=n(141);var Po=n(337),xo={methods:{setTransform:function(e){var t=e.scale,n=e.x,r=e.y;this.$el.setTransform({scale:t,x:n,y:r})}},created:function(){Po.a}};var Do=Fn()(xo,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("pinch-zoom");return Object(wt.D)(),Object(wt.h)(s,Object(wt.u)({class:"pinch-zoom-parent"},e.$attrs,Object(wt.P)(e.$listeners)),{default:Object(wt.V)(()=>[Object(wt.I)(e.$slots,"default")]),_:3},16)}]]);var To=n(129),Io=n.n(To),$o=n(128),zo=n.n($o),Mo=function(e,t){return[t[0]-e[0],t[1]-e[1]]},Uo=function(e){return[(t=e.touches[0]).screenX,t.screenY];var t},Fo=function(e){return[e.clientX,e.clientY]},Eo=function(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1])},Lo=function(e){return[e[1],-e[0]]},Ro=function(e,t){return e[0]*t[0]+e[1]*t[1]},Ao=function(e,t){var n=Ro(e,t)/Ro(t,t);return[n*t[0],n*t[1]]},No={DIRECTION_LEFT:[-1,0],DIRECTION_RIGHT:[1,0],DIRECTION_UP:[0,-1],DIRECTION_DOWN:[0,1],swipeGesture:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:30,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;return{direction:e,onSwipe:t,threshold:n,perpendicularTolerance:r,_startPos:[0,0],_swiping:!1}},beginSwipe:function(e,t){t._startPos=Uo(e),t._swiping=!0},updateSwipe:function(e,t){if(t._swiping){var n=Mo(t._startPos,Uo(e));if(!(Eo(n)<t.threshold||Ro(n,t.direction)<0)){var r=Ao(n,t.direction),i=Lo(t.direction),o=Ao(n,i);Eo(r)*t.perpendicularTolerance<Eo(o)||(t.onSwipe(),t._swiping=!1)}}},SwipeAndClickGesture:function(){function e(t){var n=t.direction,r=t.swipePreviewCallback,i=t.swipeEndCallback,o=t.swipeCancelCallback,s=t.swipelessClickCallback,a=t.threshold,c=void 0===a?30:a,l=t.perpendicularTolerance,u=void 0===l?1:l,d=t.disableClickThreshold,p=void 0===d?1:d;Io()(this,e);var h=function(){};this.direction=n,this.swipePreviewCallback=r||h,this.swipeEndCallback=i||h,this.swipeCancelCallback=o||h,this.swipelessClickCallback=s||h,this.threshold="function"==typeof c?c:function(){return c},this.disableClickThreshold="function"==typeof p?p:function(){return p},this.perpendicularTolerance=u,this._reset()}return zo()(e,[{key:"_reset",value:function(){this._startPos=[0,0],this._pointerId=-1,this._swiping=!1,this._swiped=!1,this._preventNextClick=!1}},{key:"start",value:function(e){0===e.button&&(this._startPos=Fo(e),this._pointerId=e.pointerId,this._swiping=!0,this._swiped=!1)}},{key:"move",value:function(e){if(this._swiping&&this._pointerId===e.pointerId){this._swiped=!0;var t=Fo(e),n=Mo(this._startPos,t);this.swipePreviewCallback(n)}}},{key:"cancel",value:function(e){this._swiping&&this._pointerId===e.pointerId&&this.swipeCancelCallback()}},{key:"end",value:function(e){var t=this;if(this._swiping&&this._pointerId===e.pointerId){this._swiping=!1;var n=Fo(e),r=Mo(this._startPos,n),i=function(){if(Eo(r)<t.threshold())return 0;var e=Ro(r,t.direction)>0,n=Ao(r,t.direction),i=Lo(t.direction),o=Ao(r,i);return Eo(n)*t.perpendicularTolerance<Eo(o)?0:e?1:-1}();this._swiped&&this.swipeEndCallback(i),this._reset(),Eo(r)>=this.disableClickThreshold()&&"mouse"===e.pointerType&&(this._preventNextClick=!0)}}},{key:"click",value:function(e){this._preventNextClick||this.swipelessClickCallback(),this._reset()}}]),e}()},Bo={props:{direction:{type:Array},threshold:{type:Function,default:function(){return 30}},perpendicularTolerance:{type:Number,default:1}},methods:{handlePointerDown:function(e){this.$gesture.start(e)},handlePointerMove:function(e){this.$gesture.move(e)},handlePointerUp:function(e){this.$gesture.end(e)},handlePointerCancel:function(e){this.$gesture.cancel(e)},handleNativeClick:function(e){this.$gesture.click(e)},preview:function(e){this.$emit("preview-requested",e)},end:function(e){this.$emit("swipe-finished",e)},click:function(){this.$emit("swipeless-clicked")},cancel:function(){this.$emit("swipe-canceled")}},created:function(){this.$gesture=new No.SwipeAndClickGesture({direction:this.direction,threshold:this.threshold,perpendicularTolerance:this.perpendicularTolerance,swipePreviewCallback:this.preview,swipeEndCallback:this.end,swipeCancelCallback:this.cancel,swipelessClickCallback:this.click})}};var Vo=Fn()(Bo,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("div",Object(wt.u)(e.$attrs,{onPointerdown:t[0]||(t[0]=(...t)=>e.handlePointerDown&&e.handlePointerDown(...t)),onPointermove:t[1]||(t[1]=(...t)=>e.handlePointerMove&&e.handlePointerMove(...t)),onPointerup:t[2]||(t[2]=(...t)=>e.handlePointerUp&&e.handlePointerUp(...t)),onPointercancel:t[3]||(t[3]=(...t)=>e.handlePointerCancel&&e.handlePointerCancel(...t)),onClick:t[4]||(t[4]=(...t)=>e.handleNativeClick&&e.handleNativeClick(...t))}),[Object(wt.I)(e.$slots,"default")],16)}]]),Ho=n(139);Tn.c.add(In.o,In.p,In.r,In.rb);var qo={components:{StillImage:So.a,VideoAttachment:Co.a,PinchZoom:Do,SwipeClick:Vo,Modal:Zi,Flash:Ho.a},data:function(){return{loading:!1,swipeDirection:No.DIRECTION_LEFT,swipeThreshold:function(){return window.innerWidth*(1/4)},pinchZoomMinScale:1,pinchZoomScaleResetLimit:1.2}},computed:{showing:function(){return this.$store.state.mediaViewer.activated},media:function(){return this.$store.state.mediaViewer.media},description:function(){return this.currentMedia.description},currentIndex:function(){return this.$store.state.mediaViewer.currentIndex},currentMedia:function(){return this.media[this.currentIndex]},canNavigate:function(){return this.media.length>1},type:function(){return this.currentMedia?this.getType(this.currentMedia):null}},methods:{getType:function(e){return lt.a.fileType(e.mimetype)},hide:function(){var e=this;setTimeout((function(){e.$store.dispatch("closeMediaViewer")}),100)},hideIfNotSwiped:function(e){var t=this.$refs.swipeClick;t?t.$gesture.click(e):this.hide()},goPrev:function(){if(this.canNavigate){var e=0===this.currentIndex?this.media.length-1:this.currentIndex-1,t=this.media[e];"image"===this.getType(t)&&(this.loading=!0),this.$store.dispatch("setCurrentMedia",t)}},goNext:function(){if(this.canNavigate){var e=this.currentIndex===this.media.length-1?0:this.currentIndex+1,t=this.media[e];"image"===this.getType(t)&&(this.loading=!0),this.$store.dispatch("setCurrentMedia",t)}},onImageLoaded:function(){this.loading=!1},handleSwipePreview:function(e){this.$refs.pinchZoom.setTransform({scale:1,x:e[0],y:0})},handleSwipeEnd:function(e){this.$refs.pinchZoom.setTransform({scale:1,x:0,y:0}),e>0?this.goNext():e<0&&this.goPrev()},handleKeyupEvent:function(e){this.showing&&27===e.keyCode&&this.hide()},handleKeydownEvent:function(e){this.showing&&(39===e.keyCode?this.goNext():37===e.keyCode&&this.goPrev())}},mounted:function(){window.addEventListener("popstate",this.hide),document.addEventListener("keyup",this.handleKeyupEvent),document.addEventListener("keydown",this.handleKeydownEvent)},unmounted:function(){window.removeEventListener("popstate",this.hide),document.removeEventListener("keyup",this.handleKeyupEvent),document.removeEventListener("keydown",this.handleKeydownEvent)}};n(543);var Jo=Fn()(qo,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("PinchZoom"),a=Object(wt.J)("SwipeClick"),c=Object(wt.J)("VideoAttachment"),l=Object(wt.J)("Flash"),u=Object(wt.J)("FAIcon"),d=Object(wt.J)("Modal");return e.showing?(Object(wt.D)(),Object(wt.h)(d,{key:0,class:"media-modal-view",onBackdropClicked:e.hideIfNotSwiped},{default:Object(wt.V)(()=>["image"===e.type?(Object(wt.D)(),Object(wt.h)(a,{key:0,ref:"swipeClick",class:"modal-image-container",direction:e.swipeDirection,threshold:e.swipeThreshold,onPreviewRequested:e.handleSwipePreview,onSwipeFinished:e.handleSwipeEnd,onSwipelessClicked:e.hide},{default:Object(wt.V)(()=>[Object(wt.m)(s,{ref:"pinchZoom",class:"modal-image-container-inner",selector:".modal-image","reach-min-scale-strategy":"reset","stop-propagate-handled":"stop-propgate-handled","allow-pan-min-scale":e.pinchZoomMinScale,"min-scale":e.pinchZoomMinScale,"reset-to-min-scale-limit":e.pinchZoomScaleResetLimit},{default:Object(wt.V)(()=>[Object(wt.k)("img",{class:Object(wt.w)([{loading:e.loading},"modal-image"]),src:e.currentMedia.url,alt:e.currentMedia.description,title:e.currentMedia.description,onLoad:t[0]||(t[0]=(...t)=>e.onImageLoaded&&e.onImageLoaded(...t))},null,42,Oo)]),_:1},8,["allow-pan-min-scale","min-scale","reset-to-min-scale-limit"])]),_:1},8,["direction","threshold","onPreviewRequested","onSwipeFinished","onSwipelessClicked"])):Object(wt.i)("",!0),"video"===e.type?(Object(wt.D)(),Object(wt.h)(c,{key:1,class:"modal-image",attachment:e.currentMedia,controls:!0},null,8,["attachment"])):Object(wt.i)("",!0),"audio"===e.type?(Object(wt.D)(),Object(wt.j)("audio",{key:2,class:"modal-image",src:e.currentMedia.url,alt:e.currentMedia.description,title:e.currentMedia.description,controls:""},null,8,jo)):Object(wt.i)("",!0),"flash"===e.type?(Object(wt.D)(),Object(wt.h)(l,{key:3,class:"modal-image",src:e.currentMedia.url,alt:e.currentMedia.description,title:e.currentMedia.description},null,8,["src","alt","title"])):Object(wt.i)("",!0),e.canNavigate?(Object(wt.D)(),Object(wt.j)("button",{key:4,title:e.$t("media_modal.previous"),class:"modal-view-button modal-view-button-arrow modal-view-button-arrow--prev",onClick:t[1]||(t[1]=Object(wt.Y)((...t)=>e.goPrev&&e.goPrev(...t),["stop","prevent"]))},[Object(wt.m)(u,{class:"button-icon arrow-icon",icon:"chevron-left"})],8,go)):Object(wt.i)("",!0),e.canNavigate?(Object(wt.D)(),Object(wt.j)("button",{key:5,title:e.$t("media_modal.next"),class:"modal-view-button modal-view-button-arrow modal-view-button-arrow--next",onClick:t[2]||(t[2]=Object(wt.Y)((...t)=>e.goNext&&e.goNext(...t),["stop","prevent"]))},[Object(wt.m)(u,{class:"button-icon arrow-icon",icon:"chevron-right"})],8,vo)):Object(wt.i)("",!0),Object(wt.k)("button",{class:"modal-view-button modal-view-button-hide",title:e.$t("media_modal.hide"),onClick:t[3]||(t[3]=Object(wt.Y)((...t)=>e.hide&&e.hide(...t),["stop","prevent"]))},[Object(wt.m)(u,{class:"button-icon",icon:"times"})],8,yo),e.description?(Object(wt.D)(),Object(wt.j)("span",wo,Object(wt.O)(e.description),1)):Object(wt.i)("",!0),Object(wt.k)("span",ko,Object(wt.O)(e.$tc("media_modal.counter",e.currentIndex+1,{current:e.currentIndex+1,total:e.media.length})),1),e.loading?(Object(wt.D)(),Object(wt.j)("span",_o,[Object(wt.m)(u,{spin:"",icon:"circle-notch",size:"5x"})])):Object(wt.i)("",!0)]),_:1},8,["onBackdropClicked"])):Object(wt.i)("",!0)}]]);const Wo={key:1,class:"side-drawer-logo-wrapper"},Yo=["src"],Go={key:0},Ko={key:0,class:"badge badge-notification"},Xo={key:0},Zo={key:0,class:"badge badge-notification"},Qo={href:"/pleroma/admin/#/login-pleroma",target:"_blank"};function es(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ts(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?es(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):es(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.gb,In.hb,In.J,In.t,In.i,In.vb,In.l,In.cb,In.ob,In.s,In.M);var ns={props:["logout"],data:function(){return{closed:!0,closeGesture:void 0}},created:function(){this.closeGesture=No.swipeGesture(No.DIRECTION_LEFT,this.toggleDrawer),this.currentUser&&this.currentUser.locked&&this.$store.dispatch("startFetchingFollowRequests")},components:{UserCard:jr.a},computed:ts(ts({currentUser:function(){return this.$store.state.users.currentUser},shout:function(){return this.$store.state.shout.joined},unseenNotifications:function(){return Object(W.f)(this.$store)},unseenNotificationsCount:function(){return this.unseenNotifications.length},suggestionsEnabled:function(){return this.$store.state.instance.suggestionsEnabled},logo:function(){return this.$store.state.instance.logo},hideSitename:function(){return this.$store.state.instance.hideSitename},sitename:function(){return this.$store.state.instance.name},followRequestCount:function(){return this.$store.state.api.followRequests.length},privateMode:function(){return this.$store.state.instance.private},federating:function(){return this.$store.state.instance.federating},timelinesRoute:function(){return this.$store.state.interface.lastTimeline?this.$store.state.interface.lastTimeline:this.currentUser?"friends":"public-timeline"}},Object(a.e)({pleromaChatMessagesAvailable:function(e){return e.instance.pleromaChatMessagesAvailable}})),Object(a.c)(["unreadChatCount"])),methods:{toggleDrawer:function(){this.closed=!this.closed},doLogout:function(){this.logout(),this.toggleDrawer()},touchStart:function(e){No.beginSwipe(e,this.closeGesture)},touchMove:function(e){No.updateSwipe(e,this.closeGesture)},openSettingsModal:function(){this.$store.dispatch("openSettingsModal")}}};n(544);var rs=Fn()(ns,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("UserCard"),a=Object(wt.J)("FAIcon"),c=Object(wt.J)("router-link");return Object(wt.D)(),Object(wt.j)("div",{class:Object(wt.w)(["side-drawer-container",{"side-drawer-container-closed":e.closed,"side-drawer-container-open":!e.closed}])},[Object(wt.k)("div",{class:Object(wt.w)(["side-drawer-darken",{"side-drawer-darken-closed":e.closed}])},null,2),Object(wt.k)("div",{class:Object(wt.w)(["side-drawer",{"side-drawer-closed":e.closed}]),onTouchstart:t[15]||(t[15]=(...t)=>e.touchStart&&e.touchStart(...t)),onTouchmove:t[16]||(t[16]=(...t)=>e.touchMove&&e.touchMove(...t))},[Object(wt.k)("div",{class:"side-drawer-heading",onClick:t[0]||(t[0]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[e.currentUser?(Object(wt.D)(),Object(wt.h)(s,{key:0,"user-id":e.currentUser.id,"hide-bio":!0},null,8,["user-id"])):(Object(wt.D)(),Object(wt.j)("div",Wo,[Object(wt.k)("img",{src:e.logo},null,8,Yo),e.hideSitename?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("span",Go,Object(wt.O)(e.sitename),1))]))]),Object(wt.k)("ul",null,[e.currentUser?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",{key:0,onClick:t[1]||(t[1]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:"login"}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"sign-in-alt"}),Object(wt.l)(" "+Object(wt.O)(e.$t("login.login")),1)]),_:1})])),e.currentUser||!e.privateMode?(Object(wt.D)(),Object(wt.j)("li",{key:1,onClick:t[2]||(t[2]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:e.timelinesRoute}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"home"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.timelines")),1)]),_:1},8,["to"])])):Object(wt.i)("",!0),e.currentUser&&e.pleromaChatMessagesAvailable?(Object(wt.D)(),Object(wt.j)("li",{key:2,onClick:t[3]||(t[3]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:"chats",params:{username:e.currentUser.screen_name}},style:{position:"relative"}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"comments"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.chats"))+" ",1),e.unreadChatCount?(Object(wt.D)(),Object(wt.j)("span",Ko,Object(wt.O)(e.unreadChatCount),1)):Object(wt.i)("",!0)]),_:1},8,["to"])])):Object(wt.i)("",!0)]),e.currentUser?(Object(wt.D)(),Object(wt.j)("ul",Xo,[Object(wt.k)("li",{onClick:t[4]||(t[4]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:"interactions",params:{username:e.currentUser.screen_name}}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"bell"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.interactions")),1)]),_:1},8,["to"])]),e.currentUser.locked?(Object(wt.D)(),Object(wt.j)("li",{key:0,onClick:t[5]||(t[5]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:"/friend-requests"},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"user-plus"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.friend_requests"))+" ",1),e.followRequestCount>0?(Object(wt.D)(),Object(wt.j)("span",Zo,Object(wt.O)(e.followRequestCount),1)):Object(wt.i)("",!0)]),_:1})])):Object(wt.i)("",!0),e.shout?(Object(wt.D)(),Object(wt.j)("li",{key:1,onClick:t[6]||(t[6]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:"shout-panel"}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"bullhorn"}),Object(wt.l)(" "+Object(wt.O)(e.$t("shoutbox.title")),1)]),_:1})])):Object(wt.i)("",!0)])):Object(wt.i)("",!0),Object(wt.k)("ul",null,[e.currentUser||!e.privateMode?(Object(wt.D)(),Object(wt.j)("li",{key:0,onClick:t[7]||(t[7]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:"search"}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"search"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.search")),1)]),_:1})])):Object(wt.i)("",!0),e.currentUser&&e.suggestionsEnabled?(Object(wt.D)(),Object(wt.j)("li",{key:1,onClick:t[8]||(t[8]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:"who-to-follow"}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"user-plus"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.who_to_follow")),1)]),_:1})])):Object(wt.i)("",!0),Object(wt.k)("li",{onClick:t[10]||(t[10]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.k)("button",{class:"button-unstyled -link -fullwidth",onClick:t[9]||(t[9]=(...t)=>e.openSettingsModal&&e.openSettingsModal(...t))},[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"cog"}),Object(wt.l)(" "+Object(wt.O)(e.$t("settings.settings")),1)])]),Object(wt.k)("li",{onClick:t[11]||(t[11]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:"about"}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"info-circle"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.about")),1)]),_:1})]),e.currentUser&&"admin"===e.currentUser.role?(Object(wt.D)(),Object(wt.j)("li",{key:2,onClick:t[12]||(t[12]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.k)("a",Qo,[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"tachometer-alt"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.administration")),1)])])):Object(wt.i)("",!0),e.currentUser?(Object(wt.D)(),Object(wt.j)("li",{key:3,onClick:t[14]||(t[14]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.k)("button",{class:"button-unstyled -link -fullwidth",onClick:t[13]||(t[13]=(...t)=>e.doLogout&&e.doLogout(...t))},[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"sign-out-alt"}),Object(wt.l)(" "+Object(wt.O)(e.$t("login.logout")),1)])])):Object(wt.i)("",!0)])],34),Object(wt.k)("div",{class:Object(wt.w)(["side-drawer-click-outside",{"side-drawer-click-outside-closed":e.closed}]),onClick:t[17]||(t[17]=Object(wt.Y)((...t)=>e.toggleDrawer&&e.toggleDrawer(...t),["stop","prevent"]))},null,2)],2)}]]);var is=n(56),os=n.n(is);Tn.c.add(In.S);var ss=new Set(["chats","chat"]),as={data:function(){return{hidden:!1,scrollingDown:!1,inputActive:!1,oldScrollPos:0,amountScrolled:0}},created:function(){this.autohideFloatingPostButton&&this.activateFloatingPostButtonAutohide(),window.addEventListener("resize",this.handleOSK)},unmounted:function(){this.autohideFloatingPostButton&&this.deactivateFloatingPostButtonAutohide(),window.removeEventListener("resize",this.handleOSK)},computed:{isLoggedIn:function(){return!!this.$store.state.users.currentUser},isHidden:function(){return!!ss.has(this.$route.name)||this.autohideFloatingPostButton&&(this.hidden||this.inputActive)},isPersistent:function(){return!!this.$store.getters.mergedConfig.alwaysShowNewPostButton},autohideFloatingPostButton:function(){return!!this.$store.getters.mergedConfig.autohideFloatingPostButton}},watch:{autohideFloatingPostButton:function(e){e?this.activateFloatingPostButtonAutohide():this.deactivateFloatingPostButtonAutohide()}},methods:{activateFloatingPostButtonAutohide:function(){window.addEventListener("scroll",this.handleScrollStart),window.addEventListener("scroll",this.handleScrollEnd)},deactivateFloatingPostButtonAutohide:function(){window.removeEventListener("scroll",this.handleScrollStart),window.removeEventListener("scroll",this.handleScrollEnd)},openPostForm:function(){this.$store.dispatch("openPostStatusModal")},handleOSK:function(){var e=window.innerWidth<350,t=e&&window.innerHeight<345,n=!e&&window.innerWidth<450&&window.innerHeight<560;this.inputActive=!(!t&&!n)},handleScrollStart:os()((function(){window.scrollY>this.oldScrollPos?this.hidden=!0:this.hidden=!1,this.oldScrollPos=window.scrollY}),100,{leading:!0,trailing:!1}),handleScrollEnd:os()((function(){this.hidden=!1,this.oldScrollPos=window.scrollY}),100,{leading:!1,trailing:!0})}};n(545);var cs=Fn()(as,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon");return e.isLoggedIn?(Object(wt.D)(),Object(wt.j)("button",{key:0,class:Object(wt.w)(["MobilePostButton button-default new-status-button",{hidden:e.isHidden,"always-show":e.isPersistent}]),onClick:t[0]||(t[0]=(...t)=>e.openPostForm&&e.openPostForm(...t))},[Object(wt.m)(s,{icon:"pen"})],2)):Object(wt.i)("",!0)}]]);const ls={class:"MobileNav"},us={class:"item"},ds={key:0,class:"alert-dot"},ps={class:"item right"},hs={key:0,class:"alert-dot"},bs={class:"mobile-notifications-header"},ms={class:"title"};var fs=n(77);function Os(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}Tn.c.add(In.rb,In.i,In.h);var js={components:{SideDrawer:rs,Notifications:fs.default},data:function(){return{notificationsCloseGesture:void 0,notificationsOpen:!1}},created:function(){this.notificationsCloseGesture=No.swipeGesture(No.DIRECTION_RIGHT,this.closeMobileNotifications,50)},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Os(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Os(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({currentUser:function(){return this.$store.state.users.currentUser},unseenNotifications:function(){return Object(W.f)(this.$store)},unseenNotificationsCount:function(){return this.unseenNotifications.length},hideSitename:function(){return this.$store.state.instance.hideSitename},sitename:function(){return this.$store.state.instance.name},isChat:function(){return"chat"===this.$route.name}},Object(a.c)(["unreadChatCount"])),methods:{toggleMobileSidebar:function(){this.$refs.sideDrawer.toggleDrawer()},openMobileNotifications:function(){this.notificationsOpen=!0},closeMobileNotifications:function(){this.notificationsOpen&&(this.notificationsOpen=!1,this.markNotificationsAsSeen())},notificationsTouchStart:function(e){No.beginSwipe(e,this.notificationsCloseGesture)},notificationsTouchMove:function(e){No.updateSwipe(e,this.notificationsCloseGesture)},scrollToTop:function(){window.scrollTo(0,0)},logout:function(){this.$router.replace("/main/public"),this.$store.dispatch("logout")},markNotificationsAsSeen:function(){this.$store.dispatch("markNotificationsAsSeen")},onScroll:function(e){var t=e.target;t.scrollTop+t.clientHeight>=t.scrollHeight&&this.$refs.notifications.fetchOlderNotifications()}},watch:{$route:function(){this.closeMobileNotifications()}}};n(559);var gs=Fn()(js,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("router-link"),c=Object(wt.J)("SideDrawer");return Object(wt.D)(),Object(wt.j)("div",ls,[Object(wt.k)("nav",{id:"nav",class:"mobile-nav",onClick:t[2]||(t[2]=t=>e.scrollToTop())},[Object(wt.k)("div",us,[Object(wt.k)("button",{class:"button-unstyled mobile-nav-button",onClick:t[0]||(t[0]=Object(wt.Y)(t=>e.toggleMobileSidebar(),["stop","prevent"]))},[Object(wt.m)(s,{class:"fa-scale-110 fa-old-padding",icon:"bars"}),e.unreadChatCount?(Object(wt.D)(),Object(wt.j)("div",ds)):Object(wt.i)("",!0)]),e.hideSitename?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.h)(a,{key:0,class:"site-name",to:{name:"root"},"active-class":"home"},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.sitename),1)]),_:1}))]),Object(wt.k)("div",ps,[e.currentUser?(Object(wt.D)(),Object(wt.j)("button",{key:0,class:"button-unstyled mobile-nav-button",onClick:t[1]||(t[1]=Object(wt.Y)(t=>e.openMobileNotifications(),["stop","prevent"]))},[Object(wt.m)(s,{class:"fa-scale-110 fa-old-padding",icon:"bell"}),e.unseenNotificationsCount?(Object(wt.D)(),Object(wt.j)("div",hs)):Object(wt.i)("",!0)])):Object(wt.i)("",!0)])]),e.currentUser?(Object(wt.D)(),Object(wt.j)("div",{key:0,class:Object(wt.w)(["mobile-notifications-drawer",{"-closed":!e.notificationsOpen}]),onTouchstart:t[5]||(t[5]=Object(wt.Y)((...t)=>e.notificationsTouchStart&&e.notificationsTouchStart(...t),["stop"])),onTouchmove:t[6]||(t[6]=Object(wt.Y)((...t)=>e.notificationsTouchMove&&e.notificationsTouchMove(...t),["stop"]))},[Object(wt.k)("div",bs,[Object(wt.k)("span",ms,Object(wt.O)(e.$t("notifications.notifications")),1),Object(wt.k)("a",{class:"mobile-nav-button",onClick:t[3]||(t[3]=Object(wt.Y)(t=>e.closeMobileNotifications(),["stop","prevent"]))},[Object(wt.m)(s,{class:"fa-scale-110 fa-old-padding",icon:"times"})])]),Object(wt.k)("div",{class:"mobile-notifications",id:"mobile-notifications",onScroll:t[4]||(t[4]=(...t)=>e.onScroll&&e.onScroll(...t))},null,32)],34)):Object(wt.i)("",!0),Object(wt.m)(c,{ref:"sideDrawer",logout:e.logout},null,8,["logout"])])}]]);const vs={class:"inner-nav"},ys={class:"item sitename"},ws=["src"],ks={class:"item right actions"};const _s=["title"],Ss=["placeholder"];Tn.c.add(In.rb,In.cb);var Cs={data:function(){return{searchTerm:void 0,hidden:!0,error:!1}},watch:{$route:function(e){"search"===e.name&&(this.searchTerm=e.query.query)}},methods:{find:function(e){this.$router.push({name:"search",query:{query:e}}),this.$refs.searchInput.focus()},toggleHidden:function(){var e=this;this.hidden=!this.hidden,this.$emit("toggled",this.hidden),this.$nextTick((function(){e.hidden||e.$refs.searchInput.focus()}))}}};n(560);var Ps=Fn()(Cs,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",{class:Object(wt.w)(["SearchBar",{"-expanded":!e.hidden}])},[e.hidden?(Object(wt.D)(),Object(wt.j)("button",{key:0,class:"button-unstyled nav-icon",title:e.$t("nav.search"),type:"button",onClick:t[0]||(t[0]=Object(wt.Y)((...t)=>e.toggleHidden&&e.toggleHidden(...t),["prevent","stop"]))},[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"search"})],8,_s)):(Object(wt.D)(),Object(wt.j)(wt.a,{key:1},[Object(wt.W)(Object(wt.k)("input",{id:"search-bar-input",ref:"searchInput","onUpdate:modelValue":t[1]||(t[1]=t=>e.searchTerm=t),class:"search-bar-input",placeholder:e.$t("nav.search"),type:"text",onKeyup:t[2]||(t[2]=Object(wt.X)(t=>e.find(e.searchTerm),["enter"]))},null,40,Ss),[[wt.S,e.searchTerm]]),Object(wt.k)("button",{class:"button-default search-button",type:"submit",onClick:t[3]||(t[3]=t=>e.find(e.searchTerm))},[Object(wt.m)(s,{"fixed-width":"",icon:"search"})]),Object(wt.k)("button",{class:"button-unstyled cancel-search",type:"button",onClick:t[4]||(t[4]=Object(wt.Y)((...t)=>e.toggleHidden&&e.toggleHidden(...t),["prevent","stop"]))},[Object(wt.m)(s,{"fixed-width":"",icon:"times",class:"cancel-icon fa-scale-110 fa-old-padding"})])],64))],2)}]]);Tn.c.add(In.gb,In.hb,In.J,In.t,In.i,In.vb,In.l,In.cb,In.ob,In.s,In.M);var xs={components:{SearchBar:Ps},data:function(){return{searchBarHidden:!0,supportsMask:window.CSS&&window.CSS.supports&&(window.CSS.supports("mask-size","contain")||window.CSS.supports("-webkit-mask-size","contain")||window.CSS.supports("-moz-mask-size","contain")||window.CSS.supports("-ms-mask-size","contain")||window.CSS.supports("-o-mask-size","contain"))}},computed:{enableMask:function(){return this.supportsMask&&this.$store.state.instance.logoMask},logoStyle:function(){return{visibility:this.enableMask?"hidden":"visible"}},logoMaskStyle:function(){return this.enableMask?{"mask-image":"url(".concat(this.$store.state.instance.logo,")")}:{"background-color":this.enableMask?"":"transparent"}},logoBgStyle:function(){return Object.assign({margin:"".concat(this.$store.state.instance.logoMargin," 0"),opacity:this.searchBarHidden?1:0},this.enableMask?{}:{"background-color":this.enableMask?"":"transparent"})},logo:function(){return this.$store.state.instance.logo},sitename:function(){return this.$store.state.instance.name},hideSitename:function(){return this.$store.state.instance.hideSitename},logoLeft:function(){return this.$store.state.instance.logoLeft},currentUser:function(){return this.$store.state.users.currentUser},privateMode:function(){return this.$store.state.instance.private}},methods:{scrollToTop:function(){window.scrollTo(0,0)},logout:function(){this.$router.replace("/main/public"),this.$store.dispatch("logout")},onSearchBarToggled:function(e){this.searchBarHidden=e},openSettingsModal:function(){this.$store.dispatch("openSettingsModal")}}};n(561);var Ds=Fn()(xs,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("router-link"),a=Object(wt.J)("search-bar"),c=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("nav",{id:"nav",class:Object(wt.w)(["DesktopNav",{"-logoLeft":e.logoLeft}]),onClick:t[4]||(t[4]=t=>e.scrollToTop())},[Object(wt.k)("div",vs,[Object(wt.k)("div",ys,[e.hideSitename?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.h)(s,{key:0,class:"site-name",to:{name:"root"},"active-class":"home"},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.sitename),1)]),_:1}))]),Object(wt.m)(s,{class:"logo",to:{name:"root"},style:Object(wt.x)(e.logoBgStyle)},{default:Object(wt.V)(()=>[Object(wt.k)("div",{class:"mask",style:Object(wt.x)(e.logoMaskStyle)},null,4),Object(wt.k)("img",{src:e.logo,style:Object(wt.x)(e.logoStyle)},null,12,ws)]),_:1},8,["style"]),Object(wt.k)("div",ks,[e.currentUser||!e.privateMode?(Object(wt.D)(),Object(wt.h)(a,{key:0,onToggled:e.onSearchBarToggled,onClick:t[0]||(t[0]=Object(wt.Y)(()=>{},["stop"]))},null,8,["onToggled"])):Object(wt.i)("",!0),Object(wt.k)("button",{class:"button-unstyled nav-icon",onClick:t[1]||(t[1]=Object(wt.Y)((...t)=>e.openSettingsModal&&e.openSettingsModal(...t),["stop"]))},[Object(wt.m)(c,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"cog",title:e.$t("nav.preferences")},null,8,["title"])]),e.currentUser&&"admin"===e.currentUser.role?(Object(wt.D)(),Object(wt.j)("a",{key:1,href:"/pleroma/admin/#/login-pleroma",class:"nav-icon",target:"_blank",onClick:t[2]||(t[2]=Object(wt.Y)(()=>{},["stop"]))},[Object(wt.m)(c,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"tachometer-alt",title:e.$t("nav.administration")},null,8,["title"])])):Object(wt.i)("",!0),e.currentUser?(Object(wt.D)(),Object(wt.j)("button",{key:2,class:"button-unstyled nav-icon",onClick:t[3]||(t[3]=Object(wt.Y)((...t)=>e.logout&&e.logout(...t),["prevent"]))},[Object(wt.m)(c,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"sign-out-alt",title:e.$t("login.logout")},null,8,["title"])])):Object(wt.i)("",!0)])])],2)}]]);const Ts={class:"user-reporting-panel panel"},Is={class:"panel-heading"},$s={class:"title"},zs={class:"panel-body"},Ms={class:"user-reporting-panel-left"},Us=["placeholder"],Fs={key:0},Es=["disabled"],Ls={key:0,class:"alert error"},Rs={class:"user-reporting-panel-right"},As={class:"status-fadein user-reporting-panel-sitem"};var Ns=n(34),Bs=n(69);function Vs(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var Hs={components:{Status:Ns.default,List:Bs.a,Checkbox:lo.a,Modal:Zi},data:function(){return{comment:"",forward:!1,statusIdsToReport:[],processing:!1,error:!1}},computed:{isLoggedIn:function(){return!!this.$store.state.users.currentUser},isOpen:function(){return this.isLoggedIn&&this.$store.state.reports.modalActivated},userId:function(){return this.$store.state.reports.userId},user:function(){return this.$store.getters.findUser(this.userId)},remoteInstance:function(){return!this.user.is_local&&this.user.screen_name.substr(this.user.screen_name.indexOf("@")+1)},statuses:function(){return this.$store.state.reports.statuses},preTickedIds:function(){return this.$store.state.reports.preTickedIds}},watch:{userId:"resetState",preTickedIds:function(e){this.statusIdsToReport=e}},methods:{resetState:function(){this.comment="",this.forward=!1,this.statusIdsToReport=this.preTickedIds,this.processing=!1,this.error=!1},closeModal:function(){this.$store.dispatch("closeUserReportingModal")},reportUser:function(){var e=this;this.processing=!0,this.error=!1;var t={userId:this.userId,comment:this.comment,forward:this.forward,statusIds:this.statusIdsToReport};this.$store.state.api.backendInteractor.reportUser(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Vs(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Vs(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},t)).then((function(){e.processing=!1,e.resetState(),e.closeModal()})).catch((function(){e.processing=!1,e.error=!0}))},clearError:function(){this.error=!1},isChecked:function(e){return-1!==this.statusIdsToReport.indexOf(e)},toggleStatus:function(e,t){e!==this.isChecked(t)&&(e?this.statusIdsToReport.push(t):this.statusIdsToReport.splice(this.statusIdsToReport.indexOf(t),1))},resize:function(e){var t=e.target||e;t instanceof window.Element&&(t.style.height="auto",t.style.height="".concat(t.scrollHeight,"px"),""===t.value&&(t.style.height=null))}}};n(563);var qs=Fn()(Hs,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("Checkbox"),a=Object(wt.J)("Status"),c=Object(wt.J)("List"),l=Object(wt.J)("Modal");return e.isOpen?(Object(wt.D)(),Object(wt.h)(l,{key:0,onBackdropClicked:e.closeModal},{default:Object(wt.V)(()=>[Object(wt.k)("div",Ts,[Object(wt.k)("div",Is,[Object(wt.k)("div",$s,Object(wt.O)(e.$t("user_reporting.title",[e.user.screen_name_ui])),1)]),Object(wt.k)("div",zs,[Object(wt.k)("div",Ms,[Object(wt.k)("div",null,[Object(wt.k)("p",null,Object(wt.O)(e.$t("user_reporting.add_comment_description")),1),Object(wt.W)(Object(wt.k)("textarea",{"onUpdate:modelValue":t[0]||(t[0]=t=>e.comment=t),class:"form-control",placeholder:e.$t("user_reporting.additional_comments"),rows:"1",onInput:t[1]||(t[1]=(...t)=>e.resize&&e.resize(...t))},null,40,Us),[[wt.S,e.comment]])]),e.user.is_local?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("div",Fs,[Object(wt.k)("p",null,Object(wt.O)(e.$t("user_reporting.forward_description")),1),Object(wt.m)(s,{modelValue:e.forward,"onUpdate:modelValue":t[2]||(t[2]=t=>e.forward=t)},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.$t("user_reporting.forward_to",[e.remoteInstance])),1)]),_:1},8,["modelValue"])])),Object(wt.k)("div",null,[Object(wt.k)("button",{class:"btn button-default",disabled:e.processing,onClick:t[3]||(t[3]=(...t)=>e.reportUser&&e.reportUser(...t))},Object(wt.O)(e.$t("user_reporting.submit")),9,Es),e.error?(Object(wt.D)(),Object(wt.j)("div",Ls,Object(wt.O)(e.$t("user_reporting.generic_error")),1)):Object(wt.i)("",!0)])]),Object(wt.k)("div",Rs,[Object(wt.m)(c,{items:e.statuses},{item:Object(wt.V)(({item:t})=>[Object(wt.k)("div",As,[Object(wt.m)(a,{"in-conversation":!1,focused:!1,statusoid:t},null,8,["statusoid"]),Object(wt.m)(s,{"model-value":e.isChecked(t.id),"onUpdate:modelValue":n=>e.toggleStatus(n,t.id)},null,8,["model-value","onUpdate:modelValue"])])]),_:1},8,["items"])])])])]),_:1},8,["onBackdropClicked"])):Object(wt.i)("",!0)}]]);const Js={class:"post-form-modal-panel panel"},Ws={class:"panel-heading"};var Ys={components:{PostStatusForm:Or.a,Modal:Zi},data:function(){return{resettingForm:!1}},computed:{isLoggedIn:function(){return!!this.$store.state.users.currentUser},modalActivated:function(){return this.$store.state.postStatus.modalActivated},isFormVisible:function(){return this.isLoggedIn&&!this.resettingForm&&this.modalActivated},params:function(){return this.$store.state.postStatus.params||{}}},watch:{params:function(e,t){var n=this;qt()(e,"repliedUser.id")!==qt()(t,"repliedUser.id")&&(this.resettingForm=!0,this.$nextTick((function(){n.resettingForm=!1})))},isFormVisible:function(e){var t=this;e&&this.$nextTick((function(){return t.$el&&t.$el.querySelector("textarea").focus()}))}},methods:{closeModal:function(){this.$store.dispatch("closePostStatusModal")}}};n(564);var Gs=Fn()(Ys,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("PostStatusForm"),a=Object(wt.J)("Modal");return e.isLoggedIn&&!e.resettingForm?(Object(wt.D)(),Object(wt.h)(a,{key:0,"is-open":e.modalActivated,class:"post-form-modal-view",onBackdropClicked:e.closeModal},{default:Object(wt.V)(()=>[Object(wt.k)("div",Js,[Object(wt.k)("div",Ws,Object(wt.O)(e.$t("post_status.new_status")),1),Object(wt.m)(s,Object(wt.u)({class:"panel-body"},e.params,{onPosted:e.closeModal}),null,16,["onPosted"])])]),_:1},8,["is-open","onBackdropClicked"])):Object(wt.i)("",!0)}]]);const Ks={class:"global-notice-list"},Xs={class:"notice-message"},Zs=["onClick"];Tn.c.add(In.rb);var Qs={computed:{notices:function(){return this.$store.state.interface.globalNotices}},methods:{closeNotice:function(e){this.$store.dispatch("removeGlobalNotice",e)}}};n(565);var ea=Fn()(Qs,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",Ks,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.notices,(t,n)=>(Object(wt.D)(),Object(wt.j)("div",{key:n,class:Object(wt.w)(["alert global-notice",{["global-"+t.level]:!0}])},[Object(wt.k)("div",Xs,Object(wt.O)(e.$t(t.messageKey,t.messageArgs)),1),Object(wt.k)("button",{class:"button-unstyled close-notice",onClick:n=>e.closeNotice(t)},[Object(wt.m)(s,{class:"fa-scale-110 fa-old-padding",icon:"times"})],8,Zs)],2))),128))])}]]);function ta(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var na={name:"app",components:{UserPanel:yr,NavPanel:Br,Notifications:Object(wt.n)((function(){return Promise.resolve().then(n.bind(null,77))})),InstanceSpecificPanel:Yr,FeaturesPanel:ai,WhoToFollowPanel:yi,ShoutPanel:Fi,MediaModal:Jo,SideDrawer:rs,MobilePostStatusButton:cs,MobileNav:gs,DesktopNav:Ds,SettingsModal:fo,UserReportingModal:qs,PostStatusModal:Gs,GlobalNoticeList:ea},data:function(){return{mobileActivePanel:"timeline"}},created:function(){var e=this.$store.getters.mergedConfig.interfaceLanguage;this.$store.dispatch("setOption",{name:"interfaceLanguage",value:e}),window.addEventListener("resize",this.updateMobileState)},unmounted:function(){window.removeEventListener("resize",this.updateMobileState)},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ta(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ta(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({classes:function(){return[{"-reverse":this.reverseLayout,"-no-sticky-headers":this.noSticky,"-has-new-post-button":this.newPostButtonShown},"-"+this.layoutType]},currentUser:function(){return this.$store.state.users.currentUser},userBackground:function(){return this.currentUser.background_image},instanceBackground:function(){return this.mergedConfig.hideInstanceWallpaper?null:this.$store.state.instance.background},background:function(){return this.userBackground||this.instanceBackground},bgStyle:function(){if(this.background)return{"--body-background-image":"url(".concat(this.background,")")}},shout:function(){return this.$store.state.shout.joined},suggestionsEnabled:function(){return this.$store.state.instance.suggestionsEnabled},showInstanceSpecificPanel:function(){return this.$store.state.instance.showInstanceSpecificPanel&&!this.$store.getters.mergedConfig.hideISP&&this.$store.state.instance.instanceSpecificPanelContent},isChats:function(){return"chat"===this.$route.name||"chats"===this.$route.name},newPostButtonShown:function(){return!this.isChats&&(this.$store.getters.mergedConfig.alwaysShowNewPostButton||"mobile"===this.layoutType)},showFeaturesPanel:function(){return this.$store.state.instance.showFeaturesPanel},shoutboxPosition:function(){return this.$store.getters.mergedConfig.alwaysShowNewPostButton||!1},hideShoutbox:function(){return this.$store.getters.mergedConfig.hideShoutbox},layoutType:function(){return this.$store.state.interface.layoutType},privateMode:function(){return this.$store.state.instance.private},reverseLayout:function(){var e=this.$store.getters.mergedConfig,t=e.thirdColumnMode,n=e.sidebarRight;return"wide"!==this.layoutType||"notifications"===t?n:!n},noSticky:function(){return this.$store.getters.mergedConfig.disableStickyHeaders},showScrollbars:function(){return this.$store.getters.mergedConfig.showScrollbars}},Object(a.c)(["mergedConfig"])),methods:{updateMobileState:function(){this.$store.dispatch("setLayoutWidth",Ce()),this.$store.dispatch("setLayoutHeight",Pe())}}};n(566);var ra=Fn()(na,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("MobileNav"),a=Object(wt.J)("DesktopNav"),c=Object(wt.J)("Notifications"),l=Object(wt.J)("user-panel"),u=Object(wt.J)("nav-panel"),d=Object(wt.J)("instance-specific-panel"),p=Object(wt.J)("features-panel"),h=Object(wt.J)("who-to-follow-panel"),b=Object(wt.J)("router-link"),m=Object(wt.J)("router-view"),f=Object(wt.J)("media-modal"),O=Object(wt.J)("shout-panel"),j=Object(wt.J)("MobilePostStatusButton"),g=Object(wt.J)("UserReportingModal"),v=Object(wt.J)("PostStatusModal"),y=Object(wt.J)("SettingsModal"),w=Object(wt.J)("GlobalNoticeList");return Object(wt.D)(),Object(wt.j)("div",{id:"app-loaded",style:Object(wt.x)(e.bgStyle)},[an,"mobile"===e.layoutType?(Object(wt.D)(),Object(wt.h)(s,{key:0})):(Object(wt.D)(),Object(wt.h)(a,{key:1})),e.currentUser?(Object(wt.D)(),Object(wt.h)(c,{key:2})):Object(wt.i)("",!0),Object(wt.k)("div",{id:"content",class:Object(wt.w)(["app-layout container",e.classes])},[cn,Object(wt.k)("div",{id:"sidebar",class:Object(wt.w)(["column -scrollable",{"-show-scrollbar":e.showScrollbars}])},[Object(wt.m)(l),"mobile"!==e.layoutType?(Object(wt.D)(),Object(wt.j)(wt.a,{key:0},[Object(wt.m)(u),e.showInstanceSpecificPanel?(Object(wt.D)(),Object(wt.h)(d,{key:0})):Object(wt.i)("",!0),!e.currentUser&&e.showFeaturesPanel?(Object(wt.D)(),Object(wt.h)(p,{key:1})):Object(wt.i)("",!0),e.currentUser&&e.suggestionsEnabled?(Object(wt.D)(),Object(wt.h)(h,{key:2})):Object(wt.i)("",!0),ln],64)):Object(wt.i)("",!0)],2),Object(wt.k)("div",{id:"main-scroller",class:Object(wt.w)(["column main",{"-full-height":e.isChats}])},[e.currentUser?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("div",un,[Object(wt.m)(b,{to:{name:"login"},class:"panel-body"},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.$t("login.hint")),1)]),_:1})])),Object(wt.m)(m)],2),Object(wt.k)("div",{id:"notifs-column",class:Object(wt.w)(["column -scrollable",{"-show-scrollbar":e.showScrollbars}])},null,2)],2),Object(wt.m)(f),e.currentUser&&e.shout&&!e.hideShoutbox?(Object(wt.D)(),Object(wt.h)(O,{key:3,floating:!0,class:Object(wt.w)(["floating-shout mobile-hidden",{"-left":e.shoutboxPosition}])},null,8,["class"])):Object(wt.i)("",!0),Object(wt.m)(j),Object(wt.m)(g),Object(wt.m)(v),Object(wt.m)(y),dn,Object(wt.m)(w)],4)}]]);const ia={ref:"timeline",class:"timeline"},oa={key:0,class:"new-status-notification text-center faint"},sa={key:1,class:"new-status-notification text-center faint"},aa={class:"new-status-notification text-center"},ca={key:3,class:"new-status-notification text-center"};var la=n(331),ua=n.n(la),da=n(102),pa=n.n(da);const ha={key:0,class:"panel-heading conversation-heading -sticky"},ba={class:"title"},ma={class:"conversation-body panel-body"},fa={key:0,class:"thread-body"},Oa={key:0,class:"conversation-dive-to-top-level-box"},ja={key:1,class:"thread-ancestors"},ga={key:0,class:"thread-ancestor-dive-box"},va={class:"thread-ancestor-dive-box-inner"},ya={key:1,class:"thread-body"};var wa=n(332),ka=n.n(wa);const _a={class:"thread-tree"},Sa={key:0,class:"thread-tree-replies"},Ca={key:1,class:"thread-tree-replies thread-tree-replies-hidden"};Tn.c.add(In.c,In.e);var Pa={components:{Status:Ns.default},name:"ThreadTree",props:{depth:Number,status:Object,inProfile:Boolean,conversation:Array,collapsable:Boolean,isExpanded:Boolean,pinnedStatusIdsObject:Object,profileUserId:String,focused:Function,highlight:String,getReplies:Function,setHighlight:Function,toggleExpanded:Function,simple:Boolean,toggleThreadDisplay:Function,threadDisplayStatus:Object,showThreadRecursively:Function,totalReplyCount:Object,totalReplyDepth:Object,statusContentProperties:Object,setStatusContentProperty:Function,toggleStatusContentProperty:Function,dive:Function},computed:{suspendable:function(){var e=!this.$refs.statusComponent||this.$refs.statusComponent.suspendable;return this.$refs.childComponent?e&&this.$refs.childComponent.every((function(e){return e.suspendable})):e},reverseLookupTable:function(){return this.conversation.reduce((function(e,t,n){return e[t.id]=n,e}),{})},currentReplies:function(){var e=this;return this.getReplies(this.status.id).map((function(t){var n=t.id;return e.statusById(n)}))},threadShowing:function(){return"showing"===this.threadDisplayStatus[this.status.id]},currentProp:function(){return this.statusContentProperties[this.status.id]}},methods:{statusById:function(e){return this.conversation[this.reverseLookupTable[e]]},collapseThread:function(){},showThread:function(){},showAllSubthreads:function(){},toggleCurrentProp:function(e){this.toggleStatusContentProperty(this.status.id,e)},setCurrentProp:function(e,t){this.setStatusContentProperty(this.status.id,e)}}};n(569);var xa=Fn()(Pa,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("status"),a=Object(wt.J)("thread-tree"),c=Object(wt.J)("FAIcon"),l=Object(wt.J)("i18n-t");return Object(wt.D)(),Object(wt.j)("div",_a,[(Object(wt.D)(),Object(wt.h)(s,{key:e.status.id,ref:"statusComponent","inline-expanded":e.collapsable&&e.isExpanded,statusoid:e.status,expandable:!e.isExpanded,"show-pinned":e.pinnedStatusIdsObject&&e.pinnedStatusIdsObject[e.status.id],focused:e.focused(e.status.id),"in-conversation":e.isExpanded,highlight:e.highlight,replies:e.getReplies(e.status.id),"in-profile":e.inProfile,"profile-user-id":e.profileUserId,class:"conversation-status conversation-status-treeview status-fadein panel-body","simple-tree":e.simple,"controlled-thread-display-status":e.threadDisplayStatus[e.status.id],"controlled-toggle-thread-display":()=>e.toggleThreadDisplay(e.status.id),"controlled-showing-tall":e.currentProp.showingTall,"controlled-expanding-subject":e.currentProp.expandingSubject,"controlled-showing-long-subject":e.currentProp.showingLongSubject,"controlled-replying":e.currentProp.replying,"controlled-media-playing":e.currentProp.mediaPlaying,"controlled-toggle-showing-tall":()=>e.toggleCurrentProp("showingTall"),"controlled-toggle-expanding-subject":()=>e.toggleCurrentProp("expandingSubject"),"controlled-toggle-showing-long-subject":()=>e.toggleCurrentProp("showingLongSubject"),"controlled-toggle-replying":()=>e.toggleCurrentProp("replying"),"controlled-set-media-playing":t=>e.setCurrentProp("mediaPlaying",t),dive:e.dive?()=>e.dive(e.status.id):void 0,onGoto:e.setHighlight,onToggleExpanded:e.toggleExpanded},null,8,["inline-expanded","statusoid","expandable","show-pinned","focused","in-conversation","highlight","replies","in-profile","profile-user-id","simple-tree","controlled-thread-display-status","controlled-toggle-thread-display","controlled-showing-tall","controlled-expanding-subject","controlled-showing-long-subject","controlled-replying","controlled-media-playing","controlled-toggle-showing-tall","controlled-toggle-expanding-subject","controlled-toggle-showing-long-subject","controlled-toggle-replying","controlled-set-media-playing","dive","onGoto","onToggleExpanded"])),e.currentReplies.length&&e.threadShowing?(Object(wt.D)(),Object(wt.j)("div",Sa,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.currentReplies,t=>(Object(wt.D)(),Object(wt.h)(a,{key:t.id,ref_for:!0,ref:"childComponent",depth:e.depth+1,status:t,"in-profile":e.inProfile,conversation:e.conversation,collapsable:e.collapsable,"is-expanded":e.isExpanded,"pinned-status-ids-object":e.pinnedStatusIdsObject,"profile-user-id":e.profileUserId,focused:e.focused,"get-replies":e.getReplies,highlight:e.highlight,"set-highlight":e.setHighlight,"toggle-expanded":e.toggleExpanded,simple:e.simple,"toggle-thread-display":e.toggleThreadDisplay,"thread-display-status":e.threadDisplayStatus,"show-thread-recursively":e.showThreadRecursively,"total-reply-count":e.totalReplyCount,"total-reply-depth":e.totalReplyDepth,"status-content-properties":e.statusContentProperties,"set-status-content-property":e.setStatusContentProperty,"toggle-status-content-property":e.toggleStatusContentProperty,dive:e.dive},null,8,["depth","status","in-profile","conversation","collapsable","is-expanded","pinned-status-ids-object","profile-user-id","focused","get-replies","highlight","set-highlight","toggle-expanded","simple","toggle-thread-display","thread-display-status","show-thread-recursively","total-reply-count","total-reply-depth","status-content-properties","set-status-content-property","toggle-status-content-property","dive"]))),128))])):Object(wt.i)("",!0),e.currentReplies.length&&!e.threadShowing?(Object(wt.D)(),Object(wt.j)("div",Ca,[e.simple?(Object(wt.D)(),Object(wt.h)(l,{key:0,scope:"global",tag:"button",keypath:"status.thread_follow_with_icon",class:"button-unstyled -link thread-tree-show-replies-button",onClick:t[0]||(t[0]=Object(wt.Y)(t=>e.dive(e.status.id),["prevent"]))},{icon:Object(wt.V)(()=>[Object(wt.m)(c,{icon:"angle-double-right"})]),text:Object(wt.V)(()=>[Object(wt.k)("span",null,Object(wt.O)(e.$tc("status.thread_follow",e.totalReplyCount[e.status.id],{numStatus:e.totalReplyCount[e.status.id]})),1)]),_:1})):(Object(wt.D)(),Object(wt.h)(l,{key:1,scope:"global",tag:"button",keypath:"status.thread_show_full_with_icon",class:"button-unstyled -link thread-tree-show-replies-button",onClick:t[1]||(t[1]=Object(wt.Y)(t=>e.showThreadRecursively(e.status.id),["prevent"]))},{icon:Object(wt.V)(()=>[Object(wt.m)(c,{icon:"angle-double-down"})]),text:Object(wt.V)(()=>[Object(wt.k)("span",null,Object(wt.O)(e.$tc("status.thread_show_full",e.totalReplyCount[e.status.id],{numStatus:e.totalReplyCount[e.status.id],depth:e.totalReplyDepth[e.status.id]})),1)]),_:1}))])):Object(wt.i)("",!0)])}]]);function Da(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ta(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Da(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Da(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.c,In.d,In.o);var Ia=function(e,t){var n="retweet"===e.type?e.retweeted_status.id:e.id,r="retweet"===t.type?t.retweeted_status.id:t.id,i=Number(n),o=Number(r),s=!Number.isNaN(i),a=!Number.isNaN(o);return s&&a?i<o?-1:1:s&&!a?-1:!s&&a?1:n<r?-1:1},$a={data:function(){return{highlight:null,expanded:!1,threadDisplayStatusObject:{},statusContentPropertiesObject:{},inlineDivePosition:null}},props:["statusId","collapsable","isPage","pinnedStatusIdsObject","inProfile","profileUserId","virtualHidden"],created:function(){this.isPage&&this.fetchConversation()},computed:{maxDepthToShowByDefault:function(){var e=this.$store.getters.mergedConfig.maxDepthInThread-2;return e>=1?e:1},displayStyle:function(){return this.$store.getters.mergedConfig.conversationDisplay},isTreeView:function(){return!this.isLinearView},treeViewIsSimple:function(){return!this.$store.getters.mergedConfig.conversationTreeAdvanced},isLinearView:function(){return"linear"===this.displayStyle},shouldFadeAncestors:function(){return this.$store.getters.mergedConfig.conversationTreeFadeAncestors},otherRepliesButtonPosition:function(){return this.$store.getters.mergedConfig.conversationOtherRepliesButton},showOtherRepliesButtonBelowStatus:function(){return"below"===this.otherRepliesButtonPosition},showOtherRepliesButtonInsideStatus:function(){return"inside"===this.otherRepliesButtonPosition},suspendable:function(){return this.isTreeView?Object.entries(this.statusContentProperties).every((function(e){var t=m()(e,2),n=(t[0],t[1]);return!n.replying&&0===n.mediaPlaying.length})):!this.$refs.statusComponent||!this.$refs.statusComponent[0]||this.$refs.statusComponent.every((function(e){return e.suspendable}))},hideStatus:function(){return this.virtualHidden&&this.suspendable},status:function(){return this.$store.state.statuses.allStatusesObject[this.statusId]},originalStatusId:function(){return this.status.retweeted_status?this.status.retweeted_status.id:this.statusId},conversationId:function(){return this.getConversationId(this.statusId)},conversation:function(){if(!this.status)return[];if(!this.isExpanded)return[this.status];var e=ka()(this.$store.state.statuses.conversationsObject[this.conversationId]),t=A()(e,{id:this.originalStatusId});return-1!==t&&(e[t]=this.status),function(e,t){return(e="retweet"===t.type?bt()(e,(function(e){return"retweet"===e.type||e.id!==t.retweeted_status.id})):bt()(e,(function(e){return"retweet"!==e.type}))).filter((function(e){return e})).sort(Ia)}(e,this.status)},statusMap:function(){return this.conversation.reduce((function(e,t){return e[t.id]=t,e}),{})},threadTree:function(){var e=this,t=this.conversation.reduce((function(e,t,n){return e[t.id]=n,e}),{});return function n(r,i){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return i.map((function(i){return s[i]?[]:(s[i]=!0,[{status:e.conversation[t[i]],id:i,depth:o},n(r,r[i],o+1,s)].reduce((function(e,t){return e.concat(t)}),[]))})).reduce((function(e,t){return e.concat(t)}),[])}(this.conversation.reduce((function(t,n){var r=n.id;return t.forest[r]=e.getReplies(r).map((function(e){return e.id})),t}),{forest:{}}).forest,this.topLevel.map((function(e){return e.id})))},replyIds:function(){var e=this;return this.conversation.map((function(e){return e.id})).reduce((function(t,n){return t[n]=(e.replies[n]||[]).map((function(e){return e.id})),t}),{})},totalReplyCount:function(){var e=this,t={};return this.conversation.map((function(e){return e.id})).map((function n(r){return t[r]||(t[r]=1+e.replyIds[r].map((function(e){return n(e)})).reduce((function(e,t){return e+t}),0)),t[r]})),Object.keys(t).reduce((function(e,n){return e[n]=t[n]-1,e}),{})},totalReplyDepth:function(){var e=this,t={};return this.conversation.map((function(e){return e.id})).map((function n(r){return t[r]||(t[r]=1+e.replyIds[r].map((function(e){return n(e)})).reduce((function(e,t){return e>t?e:t}),0)),t[r]})),Object.keys(t).reduce((function(e,n){return e[n]=t[n]-1,e}),{})},depths:function(){return this.threadTree.reduce((function(e,t){return e[t.id]=t.depth,e}),{})},topLevel:function(){var e=this,t=this.conversation.reduce((function(t,n){return t.filter((function(t){return-1===e.getReplies(n.id).map((function(e){return e.id})).indexOf(t.id)}))}),this.conversation);return t},otherTopLevelCount:function(){return this.topLevel.length-1},showingTopLevel:function(){return this.canDive&&this.diveRoot?[this.statusMap[this.diveRoot]]:this.topLevel},diveRoot:function(){var e=this.inlineDivePosition||this.statusId;return!this.parentOf(e)?null:e},diveDepth:function(){return this.canDive&&this.diveRoot?this.depths[this.diveRoot]:0},diveMode:function(){return this.canDive&&!!this.diveRoot},shouldShowAllConversationButton:function(){return this.isTreeView&&this.isExpanded&&this.diveMode&&this.topLevel.length>1},shouldShowAncestors:function(){return this.isTreeView&&this.isExpanded&&this.ancestorsOf(this.diveRoot).length},replies:function(){var e=1;return De()(this.conversation,(function(t,n){var r=n.id,i=n.in_reply_to_status_id;return i&&(t[i]=t[i]||[],t[i].push({name:"#".concat(e),id:r})),e++,t}),{})},isExpanded:function(){return!(!this.expanded&&!this.isPage)},hiddenStyle:function(){var e=this.status&&this.status.virtualHeight||"120px";return this.virtualHidden?{height:e}:{}},threadDisplayStatus:function(){var e=this;return this.conversation.reduce((function(t,n){var r=n.id,i=e.depths[r],o=e.threadDisplayStatusObject[r]?e.threadDisplayStatusObject[r]:i-e.diveDepth<=e.maxDepthToShowByDefault?"showing":"hidden";return t[r]=o,t}),{})},statusContentProperties:function(){var e=this;return this.conversation.reduce((function(t,n){var r,i=n.id,o=(r={showingTall:!1,expandingSubject:!1,showingLongSubject:!1,isReplying:!1,mediaPlaying:[]},e.statusContentPropertiesObject[i]?Ta(Ta({},r),e.statusContentPropertiesObject[i]):r);return t[i]=o,t}),{})},canDive:function(){return this.isTreeView&&this.isExpanded},focused:function(){var e=this;return function(t){return e.isExpanded&&t===e.highlight}},maybeHighlight:function(){return this.isExpanded?this.highlight:null}},components:{Status:Ns.default,ThreadTree:xa},watch:{statusId:function(e,t){var n=this.getConversationId(e),r=this.getConversationId(t);n&&r&&n===r?this.setHighlight(this.originalStatusId):this.fetchConversation()},expanded:function(e){e?this.fetchConversation():this.resetDisplayState()},virtualHidden:function(e){this.$store.dispatch("setVirtualHeight",{statusId:this.statusId,height:"".concat(this.$el.clientHeight,"px")})}},methods:{fetchConversation:function(){var e=this;this.status?this.$store.state.api.backendInteractor.fetchConversation({id:this.statusId}).then((function(t){var n=t.ancestors,r=t.descendants;e.$store.dispatch("addNewStatuses",{statuses:n}),e.$store.dispatch("addNewStatuses",{statuses:r}),e.setHighlight(e.originalStatusId)})):this.$store.state.api.backendInteractor.fetchStatus({id:this.statusId}).then((function(t){e.$store.dispatch("addNewStatuses",{statuses:[t]}),e.fetchConversation()}))},getReplies:function(e){return this.replies[e]||[]},getHighlight:function(){return this.isExpanded?this.highlight:null},setHighlight:function(e){e&&(this.highlight=e,this.$store.dispatch("fetchFavsAndRepeats",e),this.$store.dispatch("fetchEmojiReactionsBy",e))},toggleExpanded:function(){this.expanded=!this.expanded},getConversationId:function(e){var t=this.$store.state.statuses.allStatusesObject[e];return qt()(t,"retweeted_status.statusnet_conversation_id",qt()(t,"statusnet_conversation_id"))},setThreadDisplay:function(e,t){this.threadDisplayStatusObject=Ta(Ta({},this.threadDisplayStatusObject),{},h()({},e,t))},toggleThreadDisplay:function(e){var t="showing"===this.threadDisplayStatus[e]?"hidden":"showing";this.setThreadDisplay(e,t)},setThreadDisplayRecursively:function(e,t){var n=this;this.setThreadDisplay(e,t),this.getReplies(e).map((function(e){return e.id})).map((function(e){return n.setThreadDisplayRecursively(e,t)}))},showThreadRecursively:function(e){this.setThreadDisplayRecursively(e,"showing")},setStatusContentProperty:function(e,t,n){this.statusContentPropertiesObject=Ta(Ta({},this.statusContentPropertiesObject),{},h()({},e,Ta(Ta({},this.statusContentPropertiesObject[e]),{},h()({},t,n))))},toggleStatusContentProperty:function(e,t){this.setStatusContentProperty(e,t,!this.statusContentProperties[e][t])},leastVisibleAncestor:function(e){for(var t=e,n=this.parentOf(t);t;){if("showing"===this.threadDisplayStatus[n])return t;n=this.parentOf(n),t=this.parentOf(t)}return this.topLevel[0]?this.topLevel[0].id:void 0},diveIntoStatus:function(e,t){this.tryScrollTo(e)},diveToTopLevel:function(){this.tryScrollTo(this.topLevelAncestorOrSelfId(this.diveRoot)||this.topLevel[0].id)},undive:function(){this.inlineDivePosition=null,this.setHighlight(this.statusId)},tryScrollTo:function(e){var t=this;e&&(this.isPage?this.$router.push({name:"conversation",params:{id:e}}):this.inlineDivePosition=e,this.$nextTick((function(){t.setHighlight(e)})))},goToCurrent:function(){this.tryScrollTo(this.diveRoot||this.topLevel[0].id)},statusById:function(e){return this.statusMap[e]},parentOf:function(e){var t=this.statusById(e);if(t){var n=t.in_reply_to_status_id;if(this.statusMap[n])return n}},parentOrSelf:function(e){return this.parentOf(e)||e},ancestorsOf:function(e){for(var t=[],n=this.parentOf(e);n;)t.unshift(this.statusMap[n]),n=this.parentOf(n);return t},topLevelAncestorOrSelfId:function(e){for(var t=e,n=this.parentOf(e);n;)t=this.parentOf(t),n=this.parentOf(n);return t},resetDisplayState:function(){this.undive(),this.threadDisplayStatusObject={}}}};n(570);var za=Fn()($a,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("i18n-t"),c=Object(wt.J)("status"),l=Object(wt.J)("thread-tree");return e.hideStatus?(Object(wt.D)(),Object(wt.j)("div",{key:1,style:Object(wt.x)(e.hiddenStyle)},null,4)):(Object(wt.D)(),Object(wt.j)("div",{key:0,style:Object(wt.x)(e.hiddenStyle),class:Object(wt.w)(["Conversation",{"-expanded":e.isExpanded,panel:e.isExpanded}])},[e.isExpanded?(Object(wt.D)(),Object(wt.j)("div",ha,[Object(wt.k)("span",ba,Object(wt.O)(e.$t("timeline.conversation")),1),e.collapsable?(Object(wt.D)(),Object(wt.j)("button",{key:0,class:"button-unstyled -link",onClick:t[0]||(t[0]=Object(wt.Y)((...t)=>e.toggleExpanded&&e.toggleExpanded(...t),["prevent"]))},Object(wt.O)(e.$t("timeline.collapse")),1)):Object(wt.i)("",!0)])):Object(wt.i)("",!0),Object(wt.k)("div",ma,[e.isTreeView?(Object(wt.D)(),Object(wt.j)("div",fa,[e.shouldShowAllConversationButton?(Object(wt.D)(),Object(wt.j)("div",Oa,[Object(wt.m)(a,{keypath:"status.show_all_conversation_with_icon",tag:"button",class:"button-unstyled -link",onClick:Object(wt.Y)(e.diveToTopLevel,["prevent"]),scope:"global"},{icon:Object(wt.V)(()=>[Object(wt.m)(s,{icon:"angle-double-left"})]),text:Object(wt.V)(()=>[Object(wt.k)("span",null,Object(wt.O)(e.$tc("status.show_all_conversation",e.otherTopLevelCount,{numStatus:e.otherTopLevelCount})),1)]),_:1},8,["onClick"])])):Object(wt.i)("",!0),e.shouldShowAncestors?(Object(wt.D)(),Object(wt.j)("div",ja,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.ancestorsOf(e.diveRoot),t=>(Object(wt.D)(),Object(wt.j)("div",{key:t.id,class:Object(wt.w)(["thread-ancestor",{"thread-ancestor-has-other-replies":e.getReplies(t.id).length>1,"-faded":e.shouldFadeAncestors}])},[Object(wt.m)(c,{ref_for:!0,ref:"statusComponent","inline-expanded":e.collapsable&&e.isExpanded,statusoid:t,expandable:!e.isExpanded,"show-pinned":e.pinnedStatusIdsObject&&e.pinnedStatusIdsObject[t.id],focused:e.focused(t.id),"in-conversation":e.isExpanded,highlight:e.getHighlight(),replies:e.getReplies(t.id),"in-profile":e.inProfile,"profile-user-id":e.profileUserId,class:"conversation-status status-fadein panel-body","simple-tree":e.treeViewIsSimple,"toggle-thread-display":e.toggleThreadDisplay,"thread-display-status":e.threadDisplayStatus,"show-thread-recursively":e.showThreadRecursively,"total-reply-count":e.totalReplyCount,"total-reply-depth":e.totalReplyDepth,"show-other-replies-as-button":e.showOtherRepliesButtonInsideStatus,dive:()=>e.diveIntoStatus(t.id),"controlled-showing-tall":e.statusContentProperties[t.id].showingTall,"controlled-expanding-subject":e.statusContentProperties[t.id].expandingSubject,"controlled-showing-long-subject":e.statusContentProperties[t.id].showingLongSubject,"controlled-replying":e.statusContentProperties[t.id].replying,"controlled-media-playing":e.statusContentProperties[t.id].mediaPlaying,"controlled-toggle-showing-tall":()=>e.toggleStatusContentProperty(t.id,"showingTall"),"controlled-toggle-expanding-subject":()=>e.toggleStatusContentProperty(t.id,"expandingSubject"),"controlled-toggle-showing-long-subject":()=>e.toggleStatusContentProperty(t.id,"showingLongSubject"),"controlled-toggle-replying":()=>e.toggleStatusContentProperty(t.id,"replying"),"controlled-set-media-playing":n=>e.toggleStatusContentProperty(t.id,"mediaPlaying",n),onGoto:e.setHighlight,onToggleExpanded:e.toggleExpanded},null,8,["inline-expanded","statusoid","expandable","show-pinned","focused","in-conversation","highlight","replies","in-profile","profile-user-id","simple-tree","toggle-thread-display","thread-display-status","show-thread-recursively","total-reply-count","total-reply-depth","show-other-replies-as-button","dive","controlled-showing-tall","controlled-expanding-subject","controlled-showing-long-subject","controlled-replying","controlled-media-playing","controlled-toggle-showing-tall","controlled-toggle-expanding-subject","controlled-toggle-showing-long-subject","controlled-toggle-replying","controlled-set-media-playing","onGoto","onToggleExpanded"]),e.showOtherRepliesButtonBelowStatus&&e.getReplies(t.id).length>1?(Object(wt.D)(),Object(wt.j)("div",ga,[Object(wt.k)("div",va,[Object(wt.m)(a,{tag:"button",scope:"global",keypath:"status.ancestor_follow_with_icon",class:"button-unstyled -link thread-tree-show-replies-button",onClick:Object(wt.Y)(n=>e.diveIntoStatus(t.id),["prevent"])},{icon:Object(wt.V)(()=>[Object(wt.m)(s,{icon:"angle-double-right"})]),text:Object(wt.V)(()=>[Object(wt.k)("span",null,Object(wt.O)(e.$tc("status.ancestor_follow",e.getReplies(t.id).length-1,{numReplies:e.getReplies(t.id).length-1})),1)]),_:2},1032,["onClick"])])])):Object(wt.i)("",!0)],2))),128))])):Object(wt.i)("",!0),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.showingTopLevel,t=>(Object(wt.D)(),Object(wt.h)(l,{key:t.id,ref_for:!0,ref:"statusComponent",depth:0,status:t,"in-profile":e.inProfile,conversation:e.conversation,collapsable:e.collapsable,"is-expanded":e.isExpanded,"pinned-status-ids-object":e.pinnedStatusIdsObject,"profile-user-id":e.profileUserId,focused:e.focused,"get-replies":e.getReplies,highlight:e.maybeHighlight,"set-highlight":e.setHighlight,"toggle-expanded":e.toggleExpanded,simple:e.treeViewIsSimple,"toggle-thread-display":e.toggleThreadDisplay,"thread-display-status":e.threadDisplayStatus,"show-thread-recursively":e.showThreadRecursively,"total-reply-count":e.totalReplyCount,"total-reply-depth":e.totalReplyDepth,"status-content-properties":e.statusContentProperties,"set-status-content-property":e.setStatusContentProperty,"toggle-status-content-property":e.toggleStatusContentProperty,dive:e.canDive?e.diveIntoStatus:void 0},null,8,["status","in-profile","conversation","collapsable","is-expanded","pinned-status-ids-object","profile-user-id","focused","get-replies","highlight","set-highlight","toggle-expanded","simple","toggle-thread-display","thread-display-status","show-thread-recursively","total-reply-count","total-reply-depth","status-content-properties","set-status-content-property","toggle-status-content-property","dive"]))),128))])):Object(wt.i)("",!0),e.isLinearView?(Object(wt.D)(),Object(wt.j)("div",ya,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.conversation,t=>(Object(wt.D)(),Object(wt.h)(c,{key:t.id,ref_for:!0,ref:"statusComponent","inline-expanded":e.collapsable&&e.isExpanded,statusoid:t,expandable:!e.isExpanded,"show-pinned":e.pinnedStatusIdsObject&&e.pinnedStatusIdsObject[t.id],focused:e.focused(t.id),"in-conversation":e.isExpanded,highlight:e.getHighlight(),replies:e.getReplies(t.id),"in-profile":e.inProfile,"profile-user-id":e.profileUserId,class:"conversation-status status-fadein panel-body","toggle-thread-display":e.toggleThreadDisplay,"thread-display-status":e.threadDisplayStatus,"show-thread-recursively":e.showThreadRecursively,"total-reply-count":e.totalReplyCount,"total-reply-depth":e.totalReplyDepth,"status-content-properties":e.statusContentProperties,"set-status-content-property":e.setStatusContentProperty,"toggle-status-content-property":e.toggleStatusContentProperty,onGoto:e.setHighlight,onToggleExpanded:e.toggleExpanded},null,8,["inline-expanded","statusoid","expandable","show-pinned","focused","in-conversation","highlight","replies","in-profile","profile-user-id","toggle-thread-display","thread-display-status","show-thread-recursively","total-reply-count","total-reply-depth","status-content-properties","set-status-content-property","toggle-status-content-property","onGoto","onToggleExpanded"]))),128))])):Object(wt.i)("",!0)])],6))}]]);const Ma={class:"timeline-menu-popover popover-default"},Ua={class:"button-unstyled title timeline-menu-title"},Fa={class:"timeline-title"};Tn.c.add(In.n);var Ea={components:{Popover:co.default,TimelineMenuContent:Lr},data:function(){return{isOpen:!1}},created:function(){({friends:"nav.home_timeline",bookmarks:"nav.bookmarks",dms:"nav.dms","public-timeline":"nav.public_tl","public-external-timeline":"nav.twkn"})[this.$route.name]&&this.$store.dispatch("setLastTimeline",this.$route.name)},methods:{openMenu:function(){var e=this;setTimeout((function(){e.isOpen=!0}),25)},blockOpen:function(e){this.isOpen||e.stopPropagation()},timelineName:function(){var e=this.$route.name;if("tag-timeline"===e)return"#"+this.$route.params.tag;var t={friends:"nav.home_timeline",bookmarks:"nav.bookmarks",dms:"nav.dms","public-timeline":"nav.public_tl","public-external-timeline":"nav.twkn"}[this.$route.name];return t?this.$t(t):e}}};n(571);var La=Fn()(Ea,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("TimelineMenuContent"),a=Object(wt.J)("FAIcon"),c=Object(wt.J)("Popover");return Object(wt.D)(),Object(wt.h)(c,{trigger:"click",class:Object(wt.w)(["TimelineMenu",{open:e.isOpen}]),margin:{left:-15,right:-200},"bound-to":{x:"container"},"popover-class":"timeline-menu-popover-wrap",onShow:e.openMenu,onClose:t[1]||(t[1]=()=>e.isOpen=!1)},{content:Object(wt.V)(()=>[Object(wt.k)("div",Ma,[Object(wt.m)(s)])]),trigger:Object(wt.V)(()=>[Object(wt.k)("button",Ua,[Object(wt.k)("span",Fa,Object(wt.O)(e.timelineName()),1),Object(wt.k)("span",null,[Object(wt.m)(a,{size:"sm",icon:"chevron-down"})]),Object(wt.k)("span",{class:"click-blocker",onClick:t[0]||(t[0]=(...t)=>e.blockOpen&&e.blockOpen(...t))})])]),_:1},8,["class","onShow"])}]]);const Ra={class:"dropdown-menu"},Aa={key:0},Na=Object(wt.k)("div",{role:"separator",class:"dropdown-divider"},null,-1),Ba={class:"button-unstyled"};function Va(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ha(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Va(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Va(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.G,In.H,In.yb);var qa={components:{Popover:co.default},methods:{setReplyVisibility:function(e){this.$store.dispatch("setOption",{name:"replyVisibility",value:e}),this.$store.dispatch("queueFlushAll")},openTab:function(e){this.$store.dispatch("openSettingsModalTab",e)}},computed:Ha(Ha({},Object(a.c)(["mergedConfig"])),{},{loggedIn:function(){return!!this.$store.state.users.currentUser},replyVisibilitySelf:{get:function(){return"self"===this.mergedConfig.replyVisibility},set:function(){this.setReplyVisibility("self")}},replyVisibilityFollowing:{get:function(){return"following"===this.mergedConfig.replyVisibility},set:function(){this.setReplyVisibility("following")}},replyVisibilityAll:{get:function(){return"all"===this.mergedConfig.replyVisibility},set:function(){this.setReplyVisibility("all")}},hideMedia:{get:function(){return this.mergedConfig.hideAttachments||this.mergedConfig.hideAttachmentsInConv},set:function(){var e=!this.hideMedia;this.$store.dispatch("setOption",{name:"hideAttachments",value:e}),this.$store.dispatch("setOption",{name:"hideAttachmentsInConv",value:e})}},hideMutedPosts:{get:function(){return this.mergedConfig.hideFilteredStatuses},set:function(){var e=!this.hideMutedPosts;this.$store.dispatch("setOption",{name:"hideFilteredStatuses",value:e})}},muteBotStatuses:{get:function(){return this.mergedConfig.muteBotStatuses},set:function(){var e=!this.muteBotStatuses;this.$store.dispatch("setOption",{name:"muteBotStatuses",value:e})}}})};n(572);var Ja=Fn()(qa,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("Popover");return Object(wt.D)(),Object(wt.h)(a,{trigger:"click",class:"TimelineQuickSettings","bound-to":{x:"container"}},{content:Object(wt.V)(()=>[Object(wt.k)("div",Ra,[e.loggedIn?(Object(wt.D)(),Object(wt.j)("div",Aa,[Object(wt.k)("button",{class:"button-default dropdown-item",onClick:t[0]||(t[0]=t=>e.replyVisibilityAll=!0)},[Object(wt.k)("span",{class:Object(wt.w)(["menu-checkbox -radio",{"menu-checkbox-checked":e.replyVisibilityAll}])},null,2),Object(wt.l)(Object(wt.O)(e.$t("settings.reply_visibility_all")),1)]),Object(wt.k)("button",{class:"button-default dropdown-item",onClick:t[1]||(t[1]=t=>e.replyVisibilityFollowing=!0)},[Object(wt.k)("span",{class:Object(wt.w)(["menu-checkbox -radio",{"menu-checkbox-checked":e.replyVisibilityFollowing}])},null,2),Object(wt.l)(Object(wt.O)(e.$t("settings.reply_visibility_following_short")),1)]),Object(wt.k)("button",{class:"button-default dropdown-item",onClick:t[2]||(t[2]=t=>e.replyVisibilitySelf=!0)},[Object(wt.k)("span",{class:Object(wt.w)(["menu-checkbox -radio",{"menu-checkbox-checked":e.replyVisibilitySelf}])},null,2),Object(wt.l)(Object(wt.O)(e.$t("settings.reply_visibility_self_short")),1)]),Na])):Object(wt.i)("",!0),Object(wt.k)("button",{class:"button-default dropdown-item",onClick:t[3]||(t[3]=t=>e.muteBotStatuses=!e.muteBotStatuses)},[Object(wt.k)("span",{class:Object(wt.w)(["menu-checkbox",{"menu-checkbox-checked":e.muteBotStatuses}])},null,2),Object(wt.l)(Object(wt.O)(e.$t("settings.mute_bot_posts")),1)]),Object(wt.k)("button",{class:"button-default dropdown-item",onClick:t[4]||(t[4]=t=>e.hideMedia=!e.hideMedia)},[Object(wt.k)("span",{class:Object(wt.w)(["menu-checkbox",{"menu-checkbox-checked":e.hideMedia}])},null,2),Object(wt.l)(Object(wt.O)(e.$t("settings.hide_media_previews")),1)]),Object(wt.k)("button",{class:"button-default dropdown-item",onClick:t[5]||(t[5]=t=>e.hideMutedPosts=!e.hideMutedPosts)},[Object(wt.k)("span",{class:Object(wt.w)(["menu-checkbox",{"menu-checkbox-checked":e.hideMutedPosts}])},null,2),Object(wt.l)(Object(wt.O)(e.$t("settings.hide_all_muted_posts")),1)]),Object(wt.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:t[6]||(t[6]=t=>e.openTab("filtering"))},[Object(wt.m)(s,{icon:"font"}),Object(wt.l)(Object(wt.O)(e.$t("settings.word_filter")),1)]),Object(wt.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:t[7]||(t[7]=t=>e.openTab("general"))},[Object(wt.m)(s,{icon:"wrench"}),Object(wt.l)(Object(wt.O)(e.$t("settings.more_settings")),1)])])]),trigger:Object(wt.V)(()=>[Object(wt.k)("button",Ba,[Object(wt.m)(s,{icon:"filter"})])]),_:1})}]]);Tn.c.add(In.r,In.s);var Wa={props:["timeline","timelineName","title","userId","tag","embedded","count","pinnedStatusIds","inProfile","footerSlipgate"],data:function(){return{paused:!1,unfocused:!1,bottomedOut:!1,virtualScrollIndex:0,blockingClicks:!1}},components:{Status:Ns.default,Conversation:za,TimelineMenu:La,TimelineQuickSettings:Ja},computed:{filteredVisibleStatuses:function(){var e=this;return this.timeline.visibleStatuses.filter((function(t){return"user"!==e.timelineName||t.id>=e.timeline.minId&&t.id<=e.timeline.maxId}))},filteredPinnedStatusIds:function(){var e=this;return(this.pinnedStatusIds||[]).filter((function(t){return e.timeline.statusesObject[t]}))},newStatusCount:function(){return this.timeline.newStatusCount},showLoadButton:function(){return this.timeline.newStatusCount>0||0!==this.timeline.flushMarker},loadButtonString:function(){return 0!==this.timeline.flushMarker?this.$t("timeline.reload"):"".concat(this.$t("timeline.show_new")," (").concat(this.newStatusCount,")")},classes:function(){var e=this.embedded?["-nonpanel"]:["panel","panel-default"];return this.blockingClicks&&(e=e.concat(["-blocked","_misclick-prevention"])),{root:e,header:["timeline-heading"].concat(this.embedded?[]:["panel-heading","-sticky"]),body:["timeline-body"].concat(this.embedded?[]:["panel-body"]),footer:["timeline-footer"].concat(this.embedded?[]:["panel-footer"])}},pinnedStatusIdsObject:function(){return ua()(this.pinnedStatusIds)},statusesToDisplay:function(){var e=this.timeline.visibleStatuses.length,t=Math.ceil(Math.max(3,window.innerHeight/80)),n=this.virtualScrollIndex-this.filteredPinnedStatusIds.length,r=Math.max(0,n-t),i=Math.min(e,n+t);return this.timeline.visibleStatuses.slice(r,i).map((function(e){return e.id}))},virtualScrollingEnabled:function(){return this.$store.getters.mergedConfig.virtualScrolling}},created:function(){var e=this.$store,t=e.state.users.currentUser.credentials,n=0===this.timeline.visibleStatuses.length;if(window.addEventListener("scroll",this.handleScroll),e.state.api.fetchers[this.timelineName])return!1;ve.fetchAndUpdate({store:e,credentials:t,timeline:this.timelineName,showImmediately:n,userId:this.userId,tag:this.tag})},mounted:function(){void 0!==document.hidden&&(document.addEventListener("visibilitychange",this.handleVisibilityChange,!1),this.unfocused=document.hidden),window.addEventListener("keydown",this.handleShortKey),setTimeout(this.determineVisibleStatuses,250)},unmounted:function(){window.removeEventListener("scroll",this.handleScroll),window.removeEventListener("keydown",this.handleShortKey),void 0!==document.hidden&&document.removeEventListener("visibilitychange",this.handleVisibilityChange,!1),this.$store.commit("setLoading",{timeline:this.timelineName,value:!1})},methods:{stopBlockingClicks:os()((function(){this.blockingClicks=!1}),1e3),blockClicksTemporarily:function(){this.blockingClicks||(this.blockingClicks=!0),this.stopBlockingClicks()},handleShortKey:function(e){["textarea","input"].includes(e.target.tagName.toLowerCase())||"."===e.key&&this.showNewStatuses()},showNewStatuses:function(){0!==this.timeline.flushMarker?(this.$store.commit("clearTimeline",{timeline:this.timelineName,excludeUserId:!0}),this.$store.commit("queueFlush",{timeline:this.timelineName,id:0}),this.fetchOlderStatuses()):(this.blockClicksTemporarily(),this.$store.commit("showNewStatuses",{timeline:this.timelineName}),this.paused=!1),window.scrollTo({top:0})},fetchOlderStatuses:pa()((function(){var e=this,t=this.$store,n=t.state.users.currentUser.credentials;t.commit("setLoading",{timeline:this.timelineName,value:!0}),ve.fetchAndUpdate({store:t,credentials:n,timeline:this.timelineName,older:!0,showImmediately:!0,userId:this.userId,tag:this.tag}).then((function(t){var n=t.statuses;n&&0===n.length&&(e.bottomedOut=!0)})).finally((function(){return t.commit("setLoading",{timeline:e.timelineName,value:!1})}))}),1e3,void 0),determineVisibleStatuses:function(){if(this.$refs.timeline&&this.virtualScrollingEnabled){var e=this.$refs.timeline.children,t=Math.max(0,Math.min(this.virtualScrollIndex,e.length-1));if(0!==e.length){var n=Math.max(document.body.offsetHeight,window.pageYOffset),r=window.pageYOffset+.5*window.innerHeight,i=Math.floor(e.length*(r/n)),o=e[i].getBoundingClientRect().y,s=e[t].getBoundingClientRect().y;for(Math.abs(o)>s&&(i=t,o=s);o<-20&&i<e.length-1;)o+=e[i].offsetHeight,i++;for(;o>window.innerHeight+100&&i>0;)o-=e[--i].offsetHeight;this.virtualScrollIndex=i}}},scrollLoad:function(e){var t=document.body.getBoundingClientRect(),n=Math.max(t.height,-t.y);!1===this.timeline.loading&&this.$el.offsetHeight>0&&window.innerHeight+window.pageYOffset>=n-750&&this.fetchOlderStatuses()},handleScroll:pa()((function(e){this.determineVisibleStatuses(),this.scrollLoad(e)}),200),handleVisibilityChange:function(){this.unfocused=document.hidden}},watch:{newStatusCount:function(e){if(this.$store.getters.mergedConfig.streaming&&e>0){var t=document.documentElement;!((window.pageYOffset||t.scrollTop)-(t.clientTop||0)<15)||this.paused||this.unfocused&&this.$store.getters.mergedConfig.pauseOnUnfocused?this.paused=!0:this.showNewStatuses()}}}};n(573);var Ya=Fn()(Wa,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("TimelineMenu"),a=Object(wt.J)("TimelineQuickSettings"),c=Object(wt.J)("conversation"),l=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",{class:Object(wt.w)(["Timeline",e.classes.root])},[Object(wt.k)("div",{class:Object(wt.w)(e.classes.header)},[e.embedded?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.h)(s,{key:0})),e.showLoadButton?(Object(wt.D)(),Object(wt.j)("button",{key:1,class:"button-default loadmore-button",onClick:t[0]||(t[0]=Object(wt.Y)((...t)=>e.showNewStatuses&&e.showNewStatuses(...t),["prevent"]))},Object(wt.O)(e.loadButtonString),1)):e.embedded?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("div",{key:2,class:"loadmore-text faint",onClick:t[1]||(t[1]=Object(wt.Y)(()=>{},["prevent"]))},Object(wt.O)(e.$t("timeline.up_to_date")),1)),e.embedded?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.h)(a,{key:3}))],2),Object(wt.k)("div",{class:Object(wt.w)(e.classes.body)},[Object(wt.k)("div",ia,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.filteredPinnedStatusIds,t=>(Object(wt.D)(),Object(wt.h)(c,{key:t+"-pinned",class:"status-fadein","status-id":t,collapsable:!0,"pinned-status-ids-object":e.pinnedStatusIdsObject,"in-profile":e.inProfile,"profile-user-id":e.userId},null,8,["status-id","pinned-status-ids-object","in-profile","profile-user-id"]))),128)),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.filteredVisibleStatuses,t=>(Object(wt.D)(),Object(wt.h)(c,{key:t.id,class:"status-fadein","status-id":t.id,collapsable:!0,"in-profile":e.inProfile,"profile-user-id":e.userId,"virtual-hidden":e.virtualScrollingEnabled&&!e.statusesToDisplay.includes(t.id)},null,8,["status-id","in-profile","profile-user-id","virtual-hidden"]))),128))],512)],2),Object(wt.k)("div",{class:Object(wt.w)(e.classes.footer)},[(Object(wt.D)(),Object(wt.h)(wt.c,{to:e.footerSlipgate,disabled:!e.embedded||!e.footerSlipgate},[0===e.count?(Object(wt.D)(),Object(wt.j)("div",oa,Object(wt.O)(e.$t("timeline.no_statuses")),1)):e.bottomedOut?(Object(wt.D)(),Object(wt.j)("div",sa,Object(wt.O)(e.$t("timeline.no_more_statuses")),1)):e.timeline.loading?(Object(wt.D)(),Object(wt.j)("div",ca,[Object(wt.m)(l,{icon:"circle-notch",spin:"",size:"lg"})])):(Object(wt.D)(),Object(wt.j)("button",{key:2,class:"button-unstyled -link",onClick:t[2]||(t[2]=Object(wt.Y)(t=>e.fetchOlderStatuses(),["prevent"]))},[Object(wt.k)("div",aa,Object(wt.O)(e.$t("timeline.load_older")),1)]))],8,["to","disabled"]))],2)],2)}]]),Ga={components:{Timeline:Ya},computed:{timeline:function(){return this.$store.state.statuses.timelines.public}},created:function(){this.$store.dispatch("startFetchingTimeline",{timeline:"public"})},unmounted:function(){this.$store.dispatch("stopFetchingTimeline","public")}};var Ka=Fn()(Ga,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("Timeline");return Object(wt.D)(),Object(wt.h)(s,{title:e.$t("nav.public_tl"),timeline:e.timeline,"timeline-name":"public"},null,8,["title","timeline"])}]]);var Xa={components:{Timeline:Ya},computed:{timeline:function(){return this.$store.state.statuses.timelines.publicAndExternal}},created:function(){this.$store.dispatch("startFetchingTimeline",{timeline:"publicAndExternal"})},unmounted:function(){this.$store.dispatch("stopFetchingTimeline","publicAndExternal")}};var Za=Fn()(Xa,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("Timeline");return Object(wt.D)(),Object(wt.h)(s,{title:e.$t("nav.twkn"),timeline:e.timeline,"timeline-name":"publicAndExternal"},null,8,["title","timeline"])}]]);var Qa={components:{Timeline:Ya},computed:{timeline:function(){return this.$store.state.statuses.timelines.friends}}};var ec=Fn()(Qa,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("Timeline");return Object(wt.D)(),Object(wt.h)(s,{title:e.$t("nav.timeline"),timeline:e.timeline,"timeline-name":"friends"},null,8,["title","timeline"])}]]);var tc={created:function(){this.$store.commit("clearTimeline",{timeline:"tag"}),this.$store.dispatch("startFetchingTimeline",{timeline:"tag",tag:this.tag})},components:{Timeline:Ya},computed:{tag:function(){return this.$route.params.tag},timeline:function(){return this.$store.state.statuses.timelines.tag}},watch:{tag:function(){this.$store.commit("clearTimeline",{timeline:"tag"}),this.$store.dispatch("startFetchingTimeline",{timeline:"tag",tag:this.tag})}},unmounted:function(){this.$store.dispatch("stopFetchingTimeline","tag")}};var nc=Fn()(tc,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("Timeline");return Object(wt.D)(),Object(wt.h)(s,{title:e.tag,timeline:e.timeline,"timeline-name":"tag",tag:e.tag},null,8,["title","timeline","tag"])}]]);var rc={computed:{timeline:function(){return this.$store.state.statuses.timelines.bookmarks}},components:{Timeline:Ya},unmounted:function(){this.$store.commit("clearTimeline",{timeline:"bookmarks"})}};var ic=Fn()(rc,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("Timeline");return Object(wt.D)(),Object(wt.h)(s,{title:e.$t("nav.bookmarks"),timeline:e.timeline,"timeline-name":"bookmarks"},null,8,["title","timeline"])}]]);var oc={components:{Conversation:za},computed:{statusId:function(){return this.$route.params.id}}};var sc=Fn()(oc,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("conversation");return Object(wt.D)(),Object(wt.h)(s,{collapsable:!1,"is-page":"true","status-id":e.statusId},null,8,["status-id"])}]]);const ac={class:"panel panel-default"},cc={class:"panel-heading"},lc={class:"title"},uc=["label"],dc=["label"],pc=["label"],hc=["label"];var bc=n(71),mc={mentions:["mention"],"likes+repeats":["repeat","like"],follows:["follow"],moves:["move"]},fc={data:function(){return{allowFollowingMove:this.$store.state.users.currentUser.allow_following_move,filterMode:mc.mentions}},methods:{onModeSwitch:function(e){this.filterMode=mc[e]}},components:{Notifications:fs.default,TabSwitcher:bc.a}};var Oc=Fn()(fc,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("tab-switcher"),a=Object(wt.J)("Notifications");return Object(wt.D)(),Object(wt.j)("div",ac,[Object(wt.k)("div",cc,[Object(wt.k)("div",lc,Object(wt.O)(e.$t("nav.interactions")),1)]),Object(wt.m)(s,{ref:"tabSwitcher","on-switch":e.onModeSwitch},{default:Object(wt.V)(()=>[Object(wt.k)("span",{key:"mentions",label:e.$t("nav.mentions")},null,8,uc),Object(wt.k)("span",{key:"likes+repeats",label:e.$t("interactions.favs_repeats")},null,8,dc),Object(wt.k)("span",{key:"follows",label:e.$t("interactions.follows")},null,8,pc),e.allowFollowingMove?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("span",{key:"moves",label:e.$t("interactions.moves")},null,8,hc))]),_:1},8,["on-switch"]),Object(wt.m)(a,{ref:"notifications","no-heading":!0,"minimal-mode":!0,"filter-mode":e.filterMode},null,8,["filter-mode"])])}]]);var jc={computed:{timeline:function(){return this.$store.state.statuses.timelines.dms}},components:{Timeline:Ya}};var gc=Fn()(jc,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("Timeline");return Object(wt.D)(),Object(wt.h)(s,{title:e.$t("nav.dms"),timeline:e.timeline,"timeline-name":"dms"},null,8,["title","timeline"])}]]);const vc={key:0},yc={key:1,class:"chat-list panel panel-default"},wc={class:"panel-heading -sticky"},kc={class:"title"},_c={class:"panel-body"},Sc={key:0,class:"timeline"},Cc={key:1,class:"emtpy-chat-list-alert"};const Pc={class:"chat-list-item-left"},xc={class:"chat-list-item-center"},Dc={class:"heading"},Tc={key:0,class:"name-and-account-name"},Ic=Object(wt.k)("span",{class:"heading-right"},null,-1),$c={class:"time-wrapper"},zc={class:"chat-preview"},Mc={key:0,class:"badge badge-notification unread-chat-count"};var Uc=n(45),Fc=n(22),Ec=n(144),Lc=n(59);const Rc=["title"];var Ac=n(25),Nc={name:"ChatTitle",components:{UserAvatar:Fc.default,RichContent:Ac.a},props:["user","withAvatar"],computed:{title:function(){return this.user?this.user.screen_name_ui:""},htmlTitle:function(){return this.user?this.user.name_html:""}},methods:{getUserProfileLink:function(e){return Object(ji.a)(e.id,e.screen_name)}}};n(575);var Bc=Fn()(Nc,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("UserAvatar"),a=Object(wt.J)("router-link"),c=Object(wt.J)("RichContent");return Object(wt.D)(),Object(wt.j)("div",{class:"chat-title",title:e.title},[e.withAvatar&&e.user?(Object(wt.D)(),Object(wt.h)(a,{key:0,class:"avatar-container",to:e.getUserProfileLink(e.user)},{default:Object(wt.V)(()=>[Object(wt.m)(s,{class:"titlebar-avatar",user:e.user},null,8,["user"])]),_:1},8,["to"])):Object(wt.i)("",!0),e.user?(Object(wt.D)(),Object(wt.h)(c,{key:1,class:"username",title:"@"+(e.user&&e.user.screen_name_ui),html:e.htmlTitle,emoji:e.user.emoji||[]},null,8,["title","html","emoji"])):Object(wt.i)("",!0)],8,Rc)}]]);function Vc(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Hc(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Vc(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Vc(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var qc={name:"ChatListItem",props:["chat"],components:{UserAvatar:Fc.default,AvatarList:Ec.a,Timeago:Lc.a,ChatTitle:Bc,StatusBody:Uc.a},computed:Hc(Hc({},Object(a.e)({currentUser:function(e){return e.users.currentUser}})),{},{attachmentInfo:function(){if(0!==this.chat.lastMessage.attachments.length){var e=this.chat.lastMessage.attachments.map((function(e){return lt.a.fileType(e.mimetype)}));return e.includes("video")?this.$t("file_type.video"):e.includes("audio")?this.$t("file_type.audio"):e.includes("image")?this.$t("file_type.image"):this.$t("file_type.file")}},messageForStatusContent:function(){var e=this.chat.lastMessage,t=e?e.emojis:[],n=e&&e.account_id===this.currentUser.id,r=e?this.attachmentInfo||e.content:"",i=n?"<i>".concat(this.$t("chats.you"),"</i> ").concat(r):r;return{summary:"",emojis:t,raw_html:i,text:i,attachments:[]}}}),methods:{openChat:function(e){this.chat.id&&this.$router.push({name:"chat",params:{username:this.currentUser.screen_name,recipient_id:this.chat.account.id}})}}};n(576);var Jc=Fn()(qc,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("UserAvatar"),a=Object(wt.J)("ChatTitle"),c=Object(wt.J)("Timeago"),l=Object(wt.J)("StatusBody");return Object(wt.D)(),Object(wt.j)("div",{class:"chat-list-item",onClickCapture:t[0]||(t[0]=Object(wt.Y)((...t)=>e.openChat&&e.openChat(...t),["prevent"]))},[Object(wt.k)("div",Pc,[Object(wt.m)(s,{user:e.chat.account,height:"48px",width:"48px"},null,8,["user"])]),Object(wt.k)("div",xc,[Object(wt.k)("div",Dc,[e.chat.account?(Object(wt.D)(),Object(wt.j)("span",Tc,[Object(wt.m)(a,{user:e.chat.account},null,8,["user"])])):Object(wt.i)("",!0),Ic,Object(wt.k)("div",$c,[Object(wt.m)(c,{time:e.chat.updated_at,"auto-update":60},null,8,["time"])])]),Object(wt.k)("div",zc,[Object(wt.m)(l,{class:"chat-preview-body",status:e.messageForStatusContent,"single-line":!0},null,8,["status"]),e.chat.unread>0?(Object(wt.D)(),Object(wt.j)("div",Mc,Object(wt.O)(e.chat.unread),1)):Object(wt.i)("",!0)])])],32)}]]);const Wc={class:"panel-default panel chat-new"},Yc={ref:"header",class:"panel-heading"},Gc={class:"input-wrap"},Kc={class:"input-search"},Xc={class:"member-list"},Zc=["onClickCapture"];var Qc=n(53);function el(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function tl(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?el(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):el(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.cb,In.o);var nl={components:{BasicUserCard:Qc.a,UserAvatar:Fc.default},data:function(){return{suggestions:[],userIds:[],loading:!1,query:""}},created:function(){var e=this;return i()(s.a.mark((function t(){var n;return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.backendInteractor.chats();case 2:n=t.sent,n.chats.forEach((function(t){return e.suggestions.push(t.account)}));case 5:case"end":return t.stop()}}),t)})))()},computed:tl(tl({users:function(){var e=this;return this.userIds.map((function(t){return e.findUser(t)}))},availableUsers:function(){return 0!==this.query.length?this.users:this.suggestions}},Object(a.e)({currentUser:function(e){return e.users.currentUser},backendInteractor:function(e){return e.api.backendInteractor}})),Object(a.c)(["findUser"])),methods:{goBack:function(){this.$emit("cancel")},goToChat:function(e){this.$router.push({name:"chat",params:{recipient_id:e.id}})},onInput:function(){this.search(this.query)},addUser:function(e){this.selectedUserIds.push(e.id),this.query=""},removeUser:function(e){this.selectedUserIds=this.selectedUserIds.filter((function(t){return t!==e}))},search:function(e){var t=this;e?(this.loading=!0,this.userIds=[],this.$store.dispatch("search",{q:e,resolve:!0,type:"accounts"}).then((function(e){t.loading=!1,t.userIds=e.accounts.map((function(e){return e.id}))}))):this.loading=!1}}};n(578);var rl=Fn()(nl,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("BasicUserCard");return Object(wt.D)(),Object(wt.j)("div",Wc,[Object(wt.k)("div",Yc,[Object(wt.k)("button",{class:"button-unstyled go-back-button",onClick:t[0]||(t[0]=(...t)=>e.goBack&&e.goBack(...t))},[Object(wt.m)(s,{size:"lg",icon:"chevron-left"})])],512),Object(wt.k)("div",Gc,[Object(wt.k)("div",Kc,[Object(wt.m)(s,{class:"search-icon fa-scale-110 fa-old-padding",icon:"search"})]),Object(wt.W)(Object(wt.k)("input",{ref:"search","onUpdate:modelValue":t[1]||(t[1]=t=>e.query=t),placeholder:"Search people",onInput:t[2]||(t[2]=(...t)=>e.onInput&&e.onInput(...t))},null,544),[[wt.S,e.query]])]),Object(wt.k)("div",Xc,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.availableUsers,t=>(Object(wt.D)(),Object(wt.j)("div",{key:t.id,class:"member"},[Object(wt.k)("div",{onClickCapture:Object(wt.Y)(n=>e.goToChat(t),["prevent"])},[Object(wt.m)(a,{user:t},null,8,["user"])],40,Zc)]))),128))])])}]]);function il(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ol(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?il(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):il(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var sl={components:{ChatListItem:Jc,List:Bs.a,ChatNew:rl},computed:ol(ol({},Object(a.e)({currentUser:function(e){return e.users.currentUser}})),Object(a.c)(["sortedChatList"])),data:function(){return{isNew:!1}},created:function(){this.$store.dispatch("fetchChats",{latest:!0})},methods:{cancelNewChat:function(){this.isNew=!1,this.$store.dispatch("fetchChats",{latest:!0})},newChat:function(){this.isNew=!0}}};n(579);var al=Fn()(sl,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("ChatNew"),a=Object(wt.J)("ChatListItem"),c=Object(wt.J)("List");return e.isNew?(Object(wt.D)(),Object(wt.j)("div",vc,[Object(wt.m)(s,{onCancel:e.cancelNewChat},null,8,["onCancel"])])):(Object(wt.D)(),Object(wt.j)("div",yc,[Object(wt.k)("div",wc,[Object(wt.k)("span",kc,Object(wt.O)(e.$t("chats.chats")),1),Object(wt.k)("button",{class:"button-default",onClick:t[0]||(t[0]=(...t)=>e.newChat&&e.newChat(...t))},Object(wt.O)(e.$t("chats.new")),1)]),Object(wt.k)("div",_c,[e.sortedChatList.length>0?(Object(wt.D)(),Object(wt.j)("div",Sc,[Object(wt.m)(c,{items:e.sortedChatList},{item:Object(wt.V)(({item:e})=>[(Object(wt.D)(),Object(wt.h)(a,{key:e.id,compact:!1,chat:e},null,8,["chat"]))]),_:1},8,["items"])])):(Object(wt.D)(),Object(wt.j)("div",Cc,[Object(wt.k)("span",null,Object(wt.O)(e.$t("chats.empty_chat_list_placeholder")),1)]))])]))}]]);const cl={class:"chat-view"},ll={class:"chat-view-inner"},ul={ref:"inner",class:"panel-default panel chat-view-body"},dl={ref:"header",class:"panel-heading -sticky chat-view-heading"},pl={class:"title text-center"},hl={key:1,class:"chat-loading-error"},bl={class:"alert error"},ml={ref:"footer",class:"panel-body footer"},fl={key:0,class:"badge badge-notification unread-chat-count unread-message-count"};const Ol={key:0,class:"avatar-wrapper"},jl={class:"chat-message-inner"},gl={class:"dropdown-menu"},vl=["title"],yl={class:"created-at"},wl={key:1,class:"chat-message-date-separator"};var kl=n(58),_l=n(78),Sl=n(142);var Cl=n(38),Pl={name:"Timeago",props:["date"],computed:{displayDate:function(){var e=new Date;return e.setHours(0,0,0,0),this.date.getTime()===e.getTime()?this.$t("display_date.today"):this.date.toLocaleDateString(Cl.a.internalToBrowserLocale(this.$i18n.locale),{day:"numeric",month:"long"})}}};var xl=Fn()(Pl,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("time",null,Object(wt.O)(o.displayDate),1)}]]);function Dl(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Tl(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Dl(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Dl(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.rb,In.w);var Il={name:"ChatMessage",props:["author","edited","noHeading","chatViewItem","hoveredMessageChain"],emits:["hover"],components:{Popover:co.default,Attachment:kl.a,StatusContent:Uc.a,UserAvatar:Fc.default,Gallery:_l.a,LinkPreview:Sl.a,ChatMessageDate:xl},computed:Tl(Tl({createdAt:function(){return this.chatViewItem.data.created_at.toLocaleTimeString("en",{hour:"2-digit",minute:"2-digit",hour12:!1})},isCurrentUser:function(){return this.message.account_id===this.currentUser.id},message:function(){return this.chatViewItem.data},userProfileLink:function(){return Object(ji.a)(this.author.id,this.author.screen_name,this.$store.state.instance.restrictedNicknames)},isMessage:function(){return"message"===this.chatViewItem.type},messageForStatusContent:function(){return{summary:"",emojis:this.message.emojis,raw_html:this.message.content||"",text:this.message.content||"",attachments:this.message.attachments}},hasAttachment:function(){return this.message.attachments.length>0}},Object(a.e)({betterShadow:function(e){return e.interface.browserSupport.cssFilter},currentUser:function(e){return e.users.currentUser},restrictedNicknames:function(e){return e.instance.restrictedNicknames}})),{},{popoverMarginStyle:function(){return this.isCurrentUser?{}:{left:50}}},Object(a.c)(["mergedConfig","findUser"])),data:function(){return{hovered:!1,menuOpened:!1}},methods:{onHover:function(e){this.$emit("hover",{isHovered:e,messageChainId:this.chatViewItem.messageChainId})},deleteMessage:function(){var e=this;return i()(s.a.mark((function t(){return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!window.confirm(e.$t("chats.delete_confirm"))){t.next=4;break}return t.next=4,e.$store.dispatch("deleteChatMessage",{messageId:e.chatViewItem.data.id,chatId:e.chatViewItem.data.chat_id});case 4:e.hovered=!1,e.menuOpened=!1;case 6:case"end":return t.stop()}}),t)})))()}}};n(580);var $l=Fn()(Il,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("UserAvatar"),a=Object(wt.J)("router-link"),c=Object(wt.J)("FAIcon"),l=Object(wt.J)("Popover"),u=Object(wt.J)("StatusContent"),d=Object(wt.J)("ChatMessageDate");return e.isMessage?(Object(wt.D)(),Object(wt.j)("div",{key:0,class:Object(wt.w)(["chat-message-wrapper",{"hovered-message-chain":e.hoveredMessageChain}]),onMouseover:t[5]||(t[5]=t=>e.onHover(!0)),onMouseleave:t[6]||(t[6]=t=>e.onHover(!1))},[Object(wt.k)("div",{class:Object(wt.w)(["chat-message",[{outgoing:e.isCurrentUser,incoming:!e.isCurrentUser}]])},[e.isCurrentUser?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("div",Ol,[e.chatViewItem.isHead?(Object(wt.D)(),Object(wt.h)(a,{key:0,to:e.userProfileLink},{default:Object(wt.V)(()=>[Object(wt.m)(s,{compact:!0,"better-shadow":e.betterShadow,user:e.author},null,8,["better-shadow","user"])]),_:1},8,["to"])):Object(wt.i)("",!0)])),Object(wt.k)("div",jl,[Object(wt.k)("div",{class:"status-body",style:Object(wt.x)({"min-width":e.message.attachment?"80%":""})},[Object(wt.k)("div",{class:Object(wt.w)(["media status",{"without-attachment":!e.hasAttachment,pending:e.chatViewItem.data.pending,error:e.chatViewItem.data.error}]),style:{position:"relative"},onMouseenter:t[3]||(t[3]=t=>e.hovered=!0),onMouseleave:t[4]||(t[4]=t=>e.hovered=!1)},[Object(wt.k)("div",{class:Object(wt.w)(["chat-message-menu",{visible:e.hovered||e.menuOpened}])},[Object(wt.m)(l,{trigger:"click",placement:"top","bound-to-selector":e.isCurrentUser?"":".scrollable-message-list","bound-to":{x:"container"},margin:e.popoverMarginStyle,onShow:t[1]||(t[1]=t=>e.menuOpened=!0),onClose:t[2]||(t[2]=t=>e.menuOpened=!1)},{content:Object(wt.V)(()=>[Object(wt.k)("div",gl,[Object(wt.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:t[0]||(t[0]=(...t)=>e.deleteMessage&&e.deleteMessage(...t))},[Object(wt.m)(c,{icon:"times"}),Object(wt.l)(" "+Object(wt.O)(e.$t("chats.delete")),1)])])]),trigger:Object(wt.V)(()=>[Object(wt.k)("button",{class:"button-default menu-icon",title:e.$t("chats.more")},[Object(wt.m)(c,{icon:"ellipsis-h"})],8,vl)]),_:1},8,["bound-to-selector","margin"])],2),Object(wt.m)(u,{class:"message-content",status:e.messageForStatusContent,"full-content":!0},{footer:Object(wt.V)(()=>[Object(wt.k)("span",yl,Object(wt.O)(e.createdAt),1)]),_:1},8,["status"])],34)],4)])],2)],34)):(Object(wt.D)(),Object(wt.j)("div",wl,[Object(wt.m)(d,{date:e.chatViewItem.date},null,8,["date"])]))}]]),zl=function(){return{scrollTop:window.scrollY,scrollHeight:document.documentElement.scrollHeight,offsetHeight:window.innerHeight}};function Ml(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ul(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ml(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ml(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.n,In.o);var Fl={components:{ChatMessage:$l,ChatTitle:Bc,PostStatusForm:Or.a},data:function(){return{jumpToBottomButtonVisible:!1,hoveredMessageChainId:void 0,lastScrollPosition:{},scrollableContainerHeight:"100%",errorLoadingChat:!1,messageRetriers:{}}},created:function(){this.startFetching(),window.addEventListener("resize",this.handleResize)},mounted:function(){var e=this;window.addEventListener("scroll",this.handleScroll),void 0!==document.hidden&&document.addEventListener("visibilitychange",this.handleVisibilityChange,!1),this.$nextTick((function(){e.handleResize()}))},unmounted:function(){window.removeEventListener("scroll",this.handleScroll),void 0!==document.hidden&&document.removeEventListener("visibilitychange",this.handleVisibilityChange,!1),this.$store.dispatch("clearCurrentChat")},computed:Ul(Ul({recipient:function(){return this.currentChat&&this.currentChat.account},recipientId:function(){return this.$route.params.recipient_id},formPlaceholder:function(){return this.recipient?this.$t("chats.message_user",{nickname:this.recipient.screen_name_ui}):""},chatViewItems:function(){return $t.getView(this.currentChatMessageService)},newMessageCount:function(){return this.currentChatMessageService&&this.currentChatMessageService.newMessageCount},streamingEnabled:function(){return this.mergedConfig.useStreamingApi&&this.mastoUserSocketStatus===j.b.JOINED}},Object(a.c)(["currentChat","currentChatMessageService","findOpenedChatByRecipientId","mergedConfig"])),Object(a.e)({backendInteractor:function(e){return e.api.backendInteractor},mastoUserSocketStatus:function(e){return e.api.mastoUserSocketStatus},mobileLayout:function(e){return"mobile"===e.interface.layoutType},currentUser:function(e){return e.users.currentUser}})),watch:{chatViewItems:function(){var e=this,t=this.bottomedOut(10);this.$nextTick((function(){t&&e.scrollDown()}))},$route:function(){this.startFetching()},mastoUserSocketStatus:function(e){e===j.b.JOINED&&this.fetchChat({isFirstFetch:!0})}},methods:{onMessageHover:function(e){var t=e.isHovered,n=e.messageChainId;this.hoveredMessageChainId=t?n:void 0},onFilesDropped:function(){var e=this;this.$nextTick((function(){e.handleResize()}))},handleVisibilityChange:function(){var e=this;this.$nextTick((function(){!document.hidden&&e.bottomedOut(10)&&e.scrollDown({forceRead:!0})}))},handleResize:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.expand,r=void 0!==n&&n,i=t.delayed,o=void 0!==i&&i;o?setTimeout((function(){e.handleResize(Ul(Ul({},t),{},{delayed:!1}))}),100):this.$nextTick((function(){var t=zl().offsetHeight,n=void 0===t?void 0:t,i=e.lastScrollPosition.offsetHeight-n;(0!==i||!e.bottomedOut()&&r)&&e.$nextTick((function(){window.scrollTo({top:window.scrollY+i})})),e.lastScrollPosition=zl()}))},scrollDown:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.behavior,n=void 0===t?"auto":t,r=e.forceRead,i=void 0!==r&&r;this.$nextTick((function(){window.scrollTo({top:document.documentElement.scrollHeight,behavior:n})})),i&&this.readChat()},readChat:function(){if(this.currentChatMessageService&&this.currentChatMessageService.maxId&&!document.hidden){var e=this.currentChatMessageService.maxId;this.$store.dispatch("readChat",{id:this.currentChat.id,lastReadId:e})}},bottomedOut:function(e){return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=window.scrollY+e,n=document.documentElement.scrollHeight-window.innerHeight;return n<=t}(e)},reachedTop:function(){return window.scrollY<=0},cullOlderCheck:function(){var e=this;window.setTimeout((function(){e.bottomedOut(10)&&e.$store.dispatch("cullOlderMessages",e.currentChatMessageService.chatId)}),5e3)},handleScroll:pa()((function(){var e=this;this.currentChat&&(this.reachedTop()?this.fetchChat({maxId:this.currentChatMessageService.minId}):this.bottomedOut(10)?(this.jumpToBottomButtonVisible=!1,this.cullOlderCheck(),this.newMessageCount>0&&window.setTimeout((function(){e.$el&&e.readChat()}),1500)):this.jumpToBottomButtonVisible=!0)}),200),handleScrollUp:function(e){var t,n,r=zl();window.scrollTo({top:(t=e,n=r,t.scrollTop+(n.scrollHeight-t.scrollHeight))})},fetchChat:function(e){var t=this,n=e.isFirstFetch,r=void 0!==n&&n,i=e.fetchLatest,o=void 0!==i&&i,s=e.maxId,a=this.currentChatMessageService;if(a&&(!o||!this.streamingEnabled)){var c=a.chatId,l=!!s,u=o&&a.maxId;return this.backendInteractor.chatMessages({id:c,maxId:s,sinceId:u}).then((function(e){r&&$t.clear(a);var n=zl();t.$store.dispatch("addChatMessages",{chatId:c,messages:e}).then((function(){t.$nextTick((function(){l&&t.handleScrollUp(n),!(document.documentElement.scrollHeight>window.innerHeight)&&e.length>0&&t.fetchChat({maxId:t.currentChatMessageService.minId})}))}))}))}},startFetching:function(){var e=this;return i()(s.a.mark((function t(){var n;return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=e.findOpenedChatByRecipientId(e.recipientId)){t.next=12;break}return t.prev=2,t.next=5,e.backendInteractor.getOrCreateChat({accountId:e.recipientId});case 5:n=t.sent,t.next=12;break;case 8:t.prev=8,t.t0=t.catch(2),console.error("Error creating or getting a chat",t.t0),e.errorLoadingChat=!0;case 12:n&&(e.$nextTick((function(){e.scrollDown({forceRead:!0})})),e.$store.dispatch("addOpenedChat",{chat:n}),e.doStartFetching());case 13:case"end":return t.stop()}}),t,null,[[2,8]])})))()},doStartFetching:function(){var e=this;this.$store.dispatch("startFetchingCurrentChat",{fetcher:function(){return Object(je.a)((function(){return e.fetchChat({fetchLatest:!0})}),5e3)}}),this.fetchChat({isFirstFetch:!0})},handleAttachmentPosting:function(){var e=this;this.$nextTick((function(){e.handleResize(),e.scrollDown({forceRead:!0})}))},sendMessage:function(e){var t=this,n=e.status,r=e.media,i=e.idempotencyKey,o={id:this.currentChat.id,content:n,idempotencyKey:i};r[0]&&(o.mediaId=r[0].id);var s=function(e){var t=e.content,n=e.chatId,r=e.attachments,i=e.userId,o=e.idempotencyKey,s={content:t,chat_id:n,created_at:new Date,id:"".concat((new Date).getTime()),attachments:r,account_id:i,idempotency_key:o,emojis:[],pending:!0,isNormalized:!0};return r[0]&&(s.attachment=r[0]),s}({attachments:r,chatId:this.currentChat.id,content:n,userId:this.currentUser.id,idempotencyKey:i});return this.$store.dispatch("addChatMessages",{chatId:this.currentChat.id,messages:[s]}).then((function(){t.handleAttachmentPosting()})),this.doSendMessage({params:o,fakeMessage:s,retriesLeft:10})},doSendMessage:function(e){var t=this,n=e.params,r=e.fakeMessage,i=e.retriesLeft,o=void 0===i?10:i;if(!(o<=0))return this.backendInteractor.sendChatMessage(n).then((function(e){return t.$store.dispatch("addChatMessages",{chatId:t.currentChat.id,updateMaxId:!1,messages:[Ul(Ul({},e),{},{fakeId:r.id})]}),e})).catch((function(e){return console.error("Error sending message",e),t.$store.dispatch("handleMessageError",{chatId:t.currentChat.id,fakeId:r.id,isRetry:10!==o}),(e.statusCode>=500&&e.statusCode<600||"Failed to fetch"===e.message)&&(t.messageRetriers[r.id]=setTimeout((function(){t.doSendMessage({params:n,fakeMessage:r,retriesLeft:o-1})}),1e3*Math.pow(2,10-o))),{}})),Promise.resolve(r)},goBack:function(){this.$router.push({name:"chats",params:{username:this.currentUser.screen_name}})}}};n(581);var El=Fn()(Fl,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("ChatTitle"),c=Object(wt.J)("ChatMessage"),l=Object(wt.J)("PostStatusForm");return Object(wt.D)(),Object(wt.j)("div",cl,[Object(wt.k)("div",ll,[Object(wt.k)("div",ul,[Object(wt.k)("div",dl,[Object(wt.k)("button",{class:"button-unstyled go-back-button",onClick:t[0]||(t[0]=(...t)=>e.goBack&&e.goBack(...t))},[Object(wt.m)(s,{size:"lg",icon:"chevron-left"})]),Object(wt.k)("div",pl,[Object(wt.m)(a,{user:e.recipient,"with-avatar":!0},null,8,["user"])])],512),Object(wt.k)("div",{class:"message-list",style:Object(wt.x)({height:e.scrollableContainerHeight})},[e.errorLoadingChat?(Object(wt.D)(),Object(wt.j)("div",hl,[Object(wt.k)("div",bl,Object(wt.O)(e.$t("chats.error_loading_chat")),1)])):(Object(wt.D)(!0),Object(wt.j)(wt.a,{key:0},Object(wt.H)(e.chatViewItems,t=>(Object(wt.D)(),Object(wt.h)(c,{key:t.id,author:e.recipient,"chat-view-item":t,"hovered-message-chain":t.messageChainId===e.hoveredMessageChainId,onHover:e.onMessageHover},null,8,["author","chat-view-item","hovered-message-chain","onHover"]))),128))],4),Object(wt.k)("div",ml,[Object(wt.k)("div",{class:Object(wt.w)(["jump-to-bottom-button",{visible:e.jumpToBottomButtonVisible}]),onClick:t[1]||(t[1]=t=>e.scrollDown({behavior:"smooth"}))},[Object(wt.k)("span",null,[Object(wt.m)(s,{icon:"chevron-down"}),e.newMessageCount?(Object(wt.D)(),Object(wt.j)("div",fl,Object(wt.O)(e.newMessageCount),1)):Object(wt.i)("",!0)])],2),Object(wt.m)(l,{"disable-subject":!0,"disable-scope-selector":!0,"disable-notice":!0,"disable-lock-warning":!0,"disable-polls":!0,"disable-sensitivity-checkbox":!0,"disable-submit":e.errorLoadingChat||!e.currentChat,"disable-preview":!0,"optimistic-posting":!0,"post-handler":e.sendMessage,"submit-on-enter":!e.mobileLayout,"preserve-focus":!e.mobileLayout,"auto-focus":!e.mobileLayout,placeholder:e.formPlaceholder,"file-limit":1,"max-height":"160","emoji-picker-placement":"top",onResize:e.handleResize},null,8,["disable-submit","post-handler","submit-on-enter","preserve-focus","auto-focus","placeholder","onResize"])],512)],512)])])}]]);const Ll={key:0,class:"user-profile panel panel-default"},Rl={key:0,class:"user-profile-fields"},Al=["title"],Nl=["title"],Bl=["label","disabled"],Vl=["label","disabled"],Hl={key:1,class:"panel user-profile-placeholder"},ql={class:"panel-heading"},Jl={class:"title"},Wl={class:"panel-body"},Yl={key:0};const Gl={class:"follow-card-content-container"},Kl={key:0,class:"faint"},Xl={key:0,class:"follow-card-follow-button"};var Zl=n(143),Ql=n(140),eu={props:["user","noFollowsYou"],components:{BasicUserCard:Qc.a,RemoteFollow:Zl.a,FollowButton:Ql.a},computed:{isMe:function(){return this.$store.state.users.currentUser.id===this.user.id},loggedIn:function(){return this.$store.state.users.currentUser},relationship:function(){return this.$store.getters.relationship(this.user.id)}}};n(582);var tu=Fn()(eu,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("RemoteFollow"),a=Object(wt.J)("FollowButton"),c=Object(wt.J)("basic-user-card");return Object(wt.D)(),Object(wt.h)(c,{user:e.user},{default:Object(wt.V)(()=>[Object(wt.k)("div",Gl,[e.isMe||!e.noFollowsYou&&e.relationship.followed_by?(Object(wt.D)(),Object(wt.j)("span",Kl,Object(wt.O)(e.isMe?e.$t("user_card.its_you"):e.$t("user_card.follows_you")),1)):Object(wt.i)("",!0),e.loggedIn?e.isMe?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.h)(a,{key:2,relationship:e.relationship,"label-following":e.$t("user_card.follow_unfollow"),class:"follow-card-follow-button",user:e.user},null,8,["relationship","label-following","user"])):(Object(wt.D)(),Object(wt.j)(wt.a,{key:1},[e.relationship.following?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("div",Xl,[Object(wt.m)(s,{user:e.user},null,8,["user"])]))],64))])]),_:1},8,["user"])}]]),nu=n(300),ru=n.n(nu),iu=n(301);n(583);function ou(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function su(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ou(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ou(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.r);var au=function(e){var t=e.fetch,n=e.select,r=e.unmounted,i=e.childPropName,o=void 0===i?"entries":i,s=e.additionalPropNames,a=void 0===s?[]:s;return function(e){return{props:Object.keys(Object(iu.a)(e)).filter((function(e){return e!==o})).concat(a),data:function(){return{loading:!1,bottomedOut:!1,error:!1,entries:[]}},created:function(){window.addEventListener("scroll",this.scrollLoad),0===this.entries.length&&this.fetchEntries()},unmounted:function(){window.removeEventListener("scroll",this.scrollLoad),r&&r(this.$props,this.$store)},methods:{updateEntries:function(){this.entries=n(this.$props,this.$store)||[]},fetchEntries:function(){var e=this;this.loading||(this.loading=!0,this.error=!1,t(this.$props,this.$store).then((function(t){e.loading=!1,e.bottomedOut=ru()(t)})).catch((function(){e.loading=!1,e.error=!0})).finally((function(){e.updateEntries()})))},scrollLoad:function(e){var t=document.body.getBoundingClientRect(),n=Math.max(t.height,-t.y);!1===this.loading&&!1===this.bottomedOut&&this.$el.offsetHeight>0&&window.innerHeight+window.pageYOffset>=n-750&&this.fetchEntries()}},render:function(){var t,n=su(su({},this.$props),{},h()({},o,this.entries)),r=this.$slots;return Object(wt.m)("div",{class:"with-load-more"},[Object(wt.m)(e,n,(t=r,"function"==typeof t||"[object Object]"===Object.prototype.toString.call(t)&&!Object(wt.t)(t)?r:{default:function(){return[r]}})),Object(wt.m)("div",{class:"with-load-more-footer"},[this.error&&Object(wt.m)("button",{onClick:this.fetchEntries,class:"button-unstyled -link -fullwidth alert error"},[this.$t("general.generic_error")]),!this.error&&this.loading&&Object(wt.m)(sn.a,{spin:!0,icon:"circle-notch"},null),!this.error&&!this.loading&&!this.bottomedOut&&Object(wt.m)("a",{onClick:this.fetchEntries},[this.$t("general.more")])])])}}}};Tn.c.add(In.r);var cu=au({fetch:function(e,t){return t.dispatch("fetchFollowers",e.userId)},select:function(e,t){return qt()(t.getters.findUser(e.userId),"followerIds",[]).map((function(e){return t.getters.findUser(e)}))},destroy:function(e,t){return t.dispatch("clearFollowers",e.userId)},childPropName:"items",additionalPropNames:["userId"]})(Bs.a),lu=au({fetch:function(e,t){return t.dispatch("fetchFriends",e.userId)},select:function(e,t){return qt()(t.getters.findUser(e.userId),"friendIds",[]).map((function(e){return t.getters.findUser(e)}))},destroy:function(e,t){return t.dispatch("clearFriends",e.userId)},childPropName:"items",additionalPropNames:["userId"]})(Bs.a),uu={data:function(){return{error:!1,userId:null,tab:"statuses",footerRef:null}},created:function(){var e=this.$route.params;this.load(e.name||e.id),this.tab=qt()(this.$route,"query.tab","statuses")},unmounted:function(){this.stopFetching()},computed:{timeline:function(){return this.$store.state.statuses.timelines.user},favorites:function(){return this.$store.state.statuses.timelines.favorites},media:function(){return this.$store.state.statuses.timelines.media},isUs:function(){return this.userId&&this.$store.state.users.currentUser.id&&this.userId===this.$store.state.users.currentUser.id},user:function(){return this.$store.getters.findUser(this.userId)},isExternal:function(){return"external-user-profile"===this.$route.name},followsTabVisible:function(){return this.isUs||!this.user.hide_follows},followersTabVisible:function(){return this.isUs||!this.user.hide_followers}},methods:{setFooterRef:function(e){this.footerRef=e},load:function(e){var t=this,n=function(e,n){n!==t.$store.state.statuses.timelines[e].userId&&t.$store.commit("clearTimeline",{timeline:e}),t.$store.dispatch("startFetchingTimeline",{timeline:e,userId:n})},r=function(e){t.userId=e,n("user",e),n("media",e),t.isUs&&n("favorites",e),t.$store.dispatch("fetchPinnedStatuses",e)};this.userId=null,this.error=!1;var i=this.$store.getters.findUser(e);i?r(i.id):this.$store.dispatch("fetchUser",e).then((function(e){var t=e.id;return r(t)})).catch((function(e){var n=qt()(e,"error.error");t.error="No user with such user_id"===n?t.$t("user_profile.profile_does_not_exist"):n||t.$t("user_profile.profile_loading_error")}))},stopFetching:function(){this.$store.dispatch("stopFetchingTimeline","user"),this.$store.dispatch("stopFetchingTimeline","favorites"),this.$store.dispatch("stopFetchingTimeline","media")},switchUser:function(e){this.stopFetching(),this.load(e)},onTabSwitch:function(e){this.tab=e,this.$router.replace({query:{tab:e}})},linkClicked:function(e){var t=e.target;"SPAN"===t.tagName&&(t=t.parentNode),"A"===t.tagName&&window.open(t.href,"_blank")}},watch:{"$route.params.id":function(e){e&&this.switchUser(e)},"$route.params.name":function(e){e&&this.switchUser(e)},"$route.query":function(e){this.tab=e.tab||"statuses"}},components:{UserCard:jr.a,Timeline:Ya,FollowerList:cu,FriendList:lu,FollowCard:tu,TabSwitcher:bc.a,Conversation:za,RichContent:Ac.a}};n(584);var du=Fn()(uu,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("UserCard"),a=Object(wt.J)("RichContent"),c=Object(wt.J)("Timeline"),l=Object(wt.J)("FollowCard"),u=Object(wt.J)("FriendList"),d=Object(wt.J)("FollowerList"),p=Object(wt.J)("tab-switcher"),h=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",null,[e.user?(Object(wt.D)(),Object(wt.j)("div",Ll,[Object(wt.m)(s,{"user-id":e.userId,switcher:!0,selected:e.timeline.viewing,"allow-zooming-avatar":!0,rounded:"top"},null,8,["user-id","selected"]),e.user.fields_html&&e.user.fields_html.length>0?(Object(wt.D)(),Object(wt.j)("div",Rl,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.user.fields_html,(t,n)=>(Object(wt.D)(),Object(wt.j)("dl",{key:n,class:"user-profile-field"},[Object(wt.k)("dt",{title:e.user.fields_text[n].name,class:"user-profile-field-name"},[Object(wt.m)(a,{html:t.name,emoji:e.user.emoji},null,8,["html","emoji"])],8,Al),Object(wt.k)("dd",{title:e.user.fields_text[n].value,class:"user-profile-field-value"},[Object(wt.m)(a,{html:t.value,emoji:e.user.emoji},null,8,["html","emoji"])],8,Nl)]))),128))])):Object(wt.i)("",!0),Object(wt.m)(p,{"active-tab":e.tab,"render-only-focused":!0,"on-switch":e.onTabSwitch},{default:Object(wt.V)(()=>[Object(wt.m)(c,{key:"statuses",label:e.$t("user_card.statuses"),count:e.user.statuses_count,embedded:!0,title:e.$t("user_profile.timeline_title"),timeline:e.timeline,"timeline-name":"user","user-id":e.userId,"pinned-status-ids":e.user.pinnedStatusIds,"in-profile":!0,footerSlipgate:e.footerRef},null,8,["label","count","title","timeline","user-id","pinned-status-ids","footerSlipgate"]),e.followsTabVisible?(Object(wt.D)(),Object(wt.j)("div",{key:"followees",label:e.$t("user_card.followees"),disabled:!e.user.friends_count},[Object(wt.m)(u,{"user-id":e.userId},{item:Object(wt.V)(({item:e})=>[Object(wt.m)(l,{user:e},null,8,["user"])]),_:1},8,["user-id"])],8,Bl)):Object(wt.i)("",!0),e.followersTabVisible?(Object(wt.D)(),Object(wt.j)("div",{key:"followers",label:e.$t("user_card.followers"),disabled:!e.user.followers_count},[Object(wt.m)(d,{"user-id":e.userId},{item:Object(wt.V)(({item:t})=>[Object(wt.m)(l,{user:t,"no-follows-you":e.isUs},null,8,["user","no-follows-you"])]),_:1},8,["user-id"])],8,Vl)):Object(wt.i)("",!0),Object(wt.m)(c,{key:"media",label:e.$t("user_card.media"),disabled:!e.media.visibleStatuses.length,embedded:!0,title:e.$t("user_card.media"),"timeline-name":"media",timeline:e.media,"user-id":e.userId,"in-profile":!0,footerSlipgate:e.footerRef},null,8,["label","disabled","title","timeline","user-id","footerSlipgate"]),e.isUs?(Object(wt.D)(),Object(wt.h)(c,{key:"favorites",label:e.$t("user_card.favorites"),disabled:!e.favorites.visibleStatuses.length,embedded:!0,title:e.$t("user_card.favorites"),"timeline-name":"favorites",timeline:e.favorites,"in-profile":!0,footerSlipgate:e.footerRef},null,8,["label","disabled","title","timeline","footerSlipgate"])):Object(wt.i)("",!0)]),_:1},8,["active-tab","on-switch"]),Object(wt.k)("div",{class:"panel-footer",ref:e.setFooterRef},null,512)])):(Object(wt.D)(),Object(wt.j)("div",Hl,[Object(wt.k)("div",ql,[Object(wt.k)("div",Jl,Object(wt.O)(e.$t("settings.profile_tab")),1)]),Object(wt.k)("div",Wl,[e.error?(Object(wt.D)(),Object(wt.j)("span",Yl,Object(wt.O)(e.error),1)):(Object(wt.D)(),Object(wt.h)(h,{key:1,spin:"",icon:"circle-notch"}))])]))])}]]);const pu={class:"panel panel-default"},hu={class:"panel-heading"},bu={class:"title"},mu={class:"search-input-container"},fu=["placeholder"],Ou={key:0,class:"text-center loading-icon"},ju={key:1},gu={class:"search-nav-heading"},vu=["label"],yu=["label"],wu=["label"],ku={class:"panel-body"},_u={key:0},Su={key:0,class:"search-result-heading"},Cu={key:1},Pu={key:0,class:"search-result-heading"},xu={key:2},Du={key:0,class:"search-result-heading"},Tu={class:"hashtag"},Iu={key:0},$u={key:0},zu={key:1},Mu={key:0,class:"count"},Uu=Object(wt.k)("div",{class:"search-result-footer text-center panel-footer faint"},null,-1);Tn.c.add(In.r,In.cb);var Fu={components:{FollowCard:tu,Conversation:za,Status:Ns.default,TabSwitcher:bc.a},props:["query"],data:function(){return{loaded:!1,loading:!1,searchTerm:this.query||"",userIds:[],statuses:[],hashtags:[],currenResultTab:"statuses"}},computed:{users:function(){var e=this;return this.userIds.map((function(t){return e.$store.getters.findUser(t)}))},visibleStatuses:function(){var e=this.$store.state.statuses.allStatusesObject;return this.statuses.filter((function(t){return e[t.id]&&!e[t.id].deleted}))}},mounted:function(){this.search(this.query)},watch:{query:function(e){this.searchTerm=e,this.search(e)}},methods:{newQuery:function(e){this.$router.push({name:"search",query:{query:e}}),this.$refs.searchInput.focus()},search:function(e){var t=this;e?(this.loading=!0,this.userIds=[],this.statuses=[],this.hashtags=[],this.$refs.searchInput.blur(),this.$store.dispatch("search",{q:e,resolve:!0}).then((function(e){t.loading=!1,t.userIds=he()(e.accounts,"id"),t.statuses=e.statuses,t.hashtags=e.hashtags,t.currenResultTab=t.getActiveTab(),t.loaded=!0}))):this.loading=!1},resultCount:function(e){var t=this[e].length;return 0===t?"":" (".concat(t,")")},onResultTabSwitch:function(e){this.currenResultTab=e},getActiveTab:function(){return this.visibleStatuses.length>0?"statuses":this.users.length>0?"people":this.hashtags.length>0?"hashtags":"statuses"},lastHistoryRecord:function(e){return e.history&&e.history[0]}}};n(585);var Eu=Fn()(Fu,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("tab-switcher"),c=Object(wt.J)("Status"),l=Object(wt.J)("FollowCard"),u=Object(wt.J)("router-link");return Object(wt.D)(),Object(wt.j)("div",pu,[Object(wt.k)("div",hu,[Object(wt.k)("div",bu,Object(wt.O)(e.$t("nav.search")),1)]),Object(wt.k)("div",mu,[Object(wt.W)(Object(wt.k)("input",{ref:"searchInput","onUpdate:modelValue":t[0]||(t[0]=t=>e.searchTerm=t),class:"search-input",placeholder:e.$t("nav.search"),onKeyup:t[1]||(t[1]=Object(wt.X)(t=>e.newQuery(e.searchTerm),["enter"]))},null,40,fu),[[wt.S,e.searchTerm]]),Object(wt.k)("button",{class:"btn button-default search-button",type:"submit",onClick:t[2]||(t[2]=t=>e.newQuery(e.searchTerm))},[Object(wt.m)(s,{icon:"search"})])]),e.loading?(Object(wt.D)(),Object(wt.j)("div",Ou,[Object(wt.m)(s,{icon:"circle-notch",spin:"",size:"lg"})])):e.loaded?(Object(wt.D)(),Object(wt.j)("div",ju,[Object(wt.k)("div",gu,[Object(wt.m)(a,{ref:"tabSwitcher","on-switch":e.onResultTabSwitch,"active-tab":e.currenResultTab},{default:Object(wt.V)(()=>[Object(wt.k)("span",{key:"statuses",label:e.$t("user_card.statuses")+e.resultCount("visibleStatuses")},null,8,vu),Object(wt.k)("span",{key:"people",label:e.$t("search.people")+e.resultCount("users")},null,8,yu),Object(wt.k)("span",{key:"hashtags",label:e.$t("search.hashtags")+e.resultCount("hashtags")},null,8,wu)]),_:1},8,["on-switch","active-tab"])])])):Object(wt.i)("",!0),Object(wt.k)("div",ku,["statuses"===e.currenResultTab?(Object(wt.D)(),Object(wt.j)("div",_u,[0===e.visibleStatuses.length&&!e.loading&&e.loaded?(Object(wt.D)(),Object(wt.j)("div",Su,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("search.no_results")),1)])):Object(wt.i)("",!0),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.visibleStatuses,e=>(Object(wt.D)(),Object(wt.h)(c,{key:e.id,collapsable:!1,expandable:!1,compact:!1,class:"search-result",statusoid:e,"no-heading":!1},null,8,["statusoid"]))),128))])):"people"===e.currenResultTab?(Object(wt.D)(),Object(wt.j)("div",Cu,[0===e.users.length&&!e.loading&&e.loaded?(Object(wt.D)(),Object(wt.j)("div",Pu,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("search.no_results")),1)])):Object(wt.i)("",!0),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.users,e=>(Object(wt.D)(),Object(wt.h)(l,{key:e.id,user:e,class:"list-item search-result"},null,8,["user"]))),128))])):"hashtags"===e.currenResultTab?(Object(wt.D)(),Object(wt.j)("div",xu,[0===e.hashtags.length&&!e.loading&&e.loaded?(Object(wt.D)(),Object(wt.j)("div",Du,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("search.no_results")),1)])):Object(wt.i)("",!0),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.hashtags,t=>(Object(wt.D)(),Object(wt.j)("div",{key:t.url,class:"status trend search-result"},[Object(wt.k)("div",Tu,[Object(wt.m)(u,{to:{name:"tag-timeline",params:{tag:t.name}}},{default:Object(wt.V)(()=>[Object(wt.l)(" #"+Object(wt.O)(t.name),1)]),_:2},1032,["to"]),e.lastHistoryRecord(t)?(Object(wt.D)(),Object(wt.j)("div",Iu,[1==e.lastHistoryRecord(t).accounts?(Object(wt.D)(),Object(wt.j)("span",$u,Object(wt.O)(e.$t("search.person_talking",{count:e.lastHistoryRecord(t).accounts})),1)):(Object(wt.D)(),Object(wt.j)("span",zu,Object(wt.O)(e.$t("search.people_talking",{count:e.lastHistoryRecord(t).accounts})),1))])):Object(wt.i)("",!0)]),e.lastHistoryRecord(t)?(Object(wt.D)(),Object(wt.j)("div",Mu,Object(wt.O)(e.lastHistoryRecord(t).uses),1)):Object(wt.i)("",!0)]))),128))])):Object(wt.i)("",!0)]),Uu])}]]);const Lu={class:"settings panel panel-default"},Ru={class:"panel-heading"},Au={class:"panel-body"},Nu={class:"container"},Bu={class:"text-fields"},Vu={class:"form--label",for:"sign-up-username"},Hu=["disabled","placeholder"],qu={key:0,class:"form-error"},Ju={key:0},Wu={class:"form--label",for:"sign-up-fullname"},Yu=["disabled","placeholder"],Gu={key:1,class:"form-error"},Ku={key:0},Xu={class:"form--label",for:"email"},Zu=["disabled"],Qu={key:2,class:"form-error"},ed={key:0},td={class:"form-group"},nd={class:"form--label",for:"bio"},rd=["disabled","placeholder"],id={class:"form--label",for:"sign-up-password"},od=["disabled"],sd={key:3,class:"form-error"},ad={key:0},cd={class:"form--label",for:"sign-up-password-confirmation"},ld=["disabled"],ud={key:4,class:"form-error"},dd={key:0},pd={key:1},hd={key:5,class:"form-group"},bd={class:"form--label",for:"reason"},md=["disabled","placeholder"],fd={key:6,id:"captcha-group",class:"form-group"},Od={class:"form--label",for:"captcha-label"},jd=["src"],gd=["disabled"],vd={key:7,class:"form-group"},yd={for:"token"},wd={class:"form-group"},kd=["disabled"],_d=["innerHTML"],Sd={key:0,class:"form-group"},Cd={class:"alert error"};var Pd=n(333),xd=n(62);function Dd(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Td(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Dd(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Dd(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Id={setup:function(){return{v$:Object(Pd.a)()}},data:function(){return{user:{email:"",fullname:"",username:"",password:"",confirm:"",reason:"",language:""},captcha:{}}},components:{InterfaceLanguageSwitcher:n(174).a},validations:function(){var e=this;return{user:{email:{required:Object(xd.b)((function(){return e.accountActivationRequired}))},username:{required:xd.a},fullname:{required:xd.a},password:{required:xd.a},confirm:{required:xd.a,sameAs:Object(xd.c)(this.user.password)},reason:{required:Object(xd.b)((function(){return e.accountApprovalRequired}))},language:{}}}},created:function(){(!this.registrationOpen&&!this.token||this.signedIn)&&this.$router.push({name:"root"}),this.setCaptcha()},computed:Td({token:function(){return this.$route.params.token},bioPlaceholder:function(){return this.replaceNewlines(this.$t("registration.bio_placeholder"))},reasonPlaceholder:function(){return this.replaceNewlines(this.$t("registration.reason_placeholder"))}},Object(a.e)({registrationOpen:function(e){return e.instance.registrationOpen},signedIn:function(e){return!!e.users.currentUser},isPending:function(e){return e.users.signUpPending},serverValidationErrors:function(e){return e.users.signUpErrors},termsOfService:function(e){return e.instance.tos},accountActivationRequired:function(e){return e.instance.accountActivationRequired},accountApprovalRequired:function(e){return e.instance.accountApprovalRequired}})),methods:Td(Td({},Object(a.b)(["signUp","getCaptcha"])),{},{submit:function(){var e=this;return i()(s.a.mark((function t(){return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e.user.nickname=e.user.username,e.user.token=e.token,e.user.captcha_solution=e.captcha.solution,e.user.captcha_token=e.captcha.token,e.user.captcha_answer_data=e.captcha.answer_data,e.user.language&&(e.user.language=Cl.a.internalToBackendLocale(e.user.language)),e.v$.$touch(),e.v$.$invalid){t.next=18;break}return t.prev=8,t.next=11,e.signUp(e.user);case 11:e.$router.push({name:"friends"}),t.next=18;break;case 14:t.prev=14,t.t0=t.catch(8),console.warn("Registration failed: ",t.t0),e.setCaptcha();case 18:case"end":return t.stop()}}),t,null,[[8,14]])})))()},setCaptcha:function(){var e=this;this.getCaptcha().then((function(t){e.captcha=t}))},replaceNewlines:function(e){return e.replace(/\s*\n\s*/g," \n")}})};n(587);var $d=Fn()(Id,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("interface-language-switcher");return Object(wt.D)(),Object(wt.j)("div",Lu,[Object(wt.k)("div",Ru,Object(wt.O)(e.$t("registration.registration")),1),Object(wt.k)("div",Au,[Object(wt.k)("form",{class:"registration-form",onSubmit:t[10]||(t[10]=Object(wt.Y)(t=>e.submit(e.user),["prevent"]))},[Object(wt.k)("div",Nu,[Object(wt.k)("div",Bu,[Object(wt.k)("div",{class:Object(wt.w)(["form-group",{"form-group--error":e.v$.user.username.$error}])},[Object(wt.k)("label",Vu,Object(wt.O)(e.$t("login.username")),1),Object(wt.W)(Object(wt.k)("input",{id:"sign-up-username","onUpdate:modelValue":t[0]||(t[0]=t=>e.v$.user.username.$model=t),disabled:e.isPending,class:"form-control",placeholder:e.$t("registration.username_placeholder")},null,8,Hu),[[wt.S,e.v$.user.username.$model,void 0,{trim:!0}]])],2),e.v$.user.username.$dirty?(Object(wt.D)(),Object(wt.j)("div",qu,[Object(wt.k)("ul",null,[e.v$.user.username.required?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",Ju,[Object(wt.k)("span",null,Object(wt.O)(e.$t("registration.validations.username_required")),1)]))])])):Object(wt.i)("",!0),Object(wt.k)("div",{class:Object(wt.w)(["form-group",{"form-group--error":e.v$.user.fullname.$error}])},[Object(wt.k)("label",Wu,Object(wt.O)(e.$t("registration.fullname")),1),Object(wt.W)(Object(wt.k)("input",{id:"sign-up-fullname","onUpdate:modelValue":t[1]||(t[1]=t=>e.v$.user.fullname.$model=t),disabled:e.isPending,class:"form-control",placeholder:e.$t("registration.fullname_placeholder")},null,8,Yu),[[wt.S,e.v$.user.fullname.$model,void 0,{trim:!0}]])],2),e.v$.user.fullname.$dirty?(Object(wt.D)(),Object(wt.j)("div",Gu,[Object(wt.k)("ul",null,[e.v$.user.fullname.required?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",Ku,[Object(wt.k)("span",null,Object(wt.O)(e.$t("registration.validations.fullname_required")),1)]))])])):Object(wt.i)("",!0),Object(wt.k)("div",{class:Object(wt.w)(["form-group",{"form-group--error":e.v$.user.email.$error}])},[Object(wt.k)("label",Xu,Object(wt.O)(e.$t("registration.email")),1),Object(wt.W)(Object(wt.k)("input",{id:"email","onUpdate:modelValue":t[2]||(t[2]=t=>e.v$.user.email.$model=t),disabled:e.isPending,class:"form-control",type:"email"},null,8,Zu),[[wt.S,e.v$.user.email.$model]])],2),e.v$.user.email.$dirty?(Object(wt.D)(),Object(wt.j)("div",Qu,[Object(wt.k)("ul",null,[e.v$.user.email.required?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",ed,[Object(wt.k)("span",null,Object(wt.O)(e.$t("registration.validations.email_required")),1)]))])])):Object(wt.i)("",!0),Object(wt.k)("div",td,[Object(wt.k)("label",nd,Object(wt.O)(e.$t("registration.bio"))+" ("+Object(wt.O)(e.$t("general.optional"))+")",1),Object(wt.W)(Object(wt.k)("textarea",{id:"bio","onUpdate:modelValue":t[3]||(t[3]=t=>e.user.bio=t),disabled:e.isPending,class:"form-control",placeholder:e.bioPlaceholder},null,8,rd),[[wt.S,e.user.bio]])]),Object(wt.k)("div",{class:Object(wt.w)(["form-group",{"form-group--error":e.v$.user.password.$error}])},[Object(wt.k)("label",id,Object(wt.O)(e.$t("login.password")),1),Object(wt.W)(Object(wt.k)("input",{id:"sign-up-password","onUpdate:modelValue":t[4]||(t[4]=t=>e.user.password=t),disabled:e.isPending,class:"form-control",type:"password"},null,8,od),[[wt.S,e.user.password]])],2),e.v$.user.password.$dirty?(Object(wt.D)(),Object(wt.j)("div",sd,[Object(wt.k)("ul",null,[e.v$.user.password.required?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",ad,[Object(wt.k)("span",null,Object(wt.O)(e.$t("registration.validations.password_required")),1)]))])])):Object(wt.i)("",!0),Object(wt.k)("div",{class:Object(wt.w)(["form-group",{"form-group--error":e.v$.user.confirm.$error}])},[Object(wt.k)("label",cd,Object(wt.O)(e.$t("registration.password_confirm")),1),Object(wt.W)(Object(wt.k)("input",{id:"sign-up-password-confirmation","onUpdate:modelValue":t[5]||(t[5]=t=>e.user.confirm=t),disabled:e.isPending,class:"form-control",type:"password"},null,8,ld),[[wt.S,e.user.confirm]])],2),e.v$.user.confirm.$dirty?(Object(wt.D)(),Object(wt.j)("div",ud,[Object(wt.k)("ul",null,[e.v$.user.confirm.required?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",dd,[Object(wt.k)("span",null,Object(wt.O)(e.$t("registration.validations.password_confirmation_required")),1)])),e.v$.user.confirm.sameAsPassword?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",pd,[Object(wt.k)("span",null,Object(wt.O)(e.$t("registration.validations.password_confirmation_match")),1)]))])])):Object(wt.i)("",!0),Object(wt.k)("div",{class:Object(wt.w)(["form-group",{"form-group--error":e.v$.user.language.$error}])},[Object(wt.m)(s,{for:"email-language","prompt-text":e.$t("registration.email_language"),language:e.v$.user.language.$model,"set-language":t=>e.v$.user.language.$model=t},null,8,["prompt-text","language","set-language"])],2),e.accountApprovalRequired?(Object(wt.D)(),Object(wt.j)("div",hd,[Object(wt.k)("label",bd,Object(wt.O)(e.$t("registration.reason")),1),Object(wt.W)(Object(wt.k)("textarea",{id:"reason","onUpdate:modelValue":t[6]||(t[6]=t=>e.user.reason=t),disabled:e.isPending,class:"form-control",placeholder:e.reasonPlaceholder},null,8,md),[[wt.S,e.user.reason]])])):Object(wt.i)("",!0),"none"!=e.captcha.type?(Object(wt.D)(),Object(wt.j)("div",fd,[Object(wt.k)("label",Od,Object(wt.O)(e.$t("registration.captcha")),1),["kocaptcha","native"].includes(e.captcha.type)?(Object(wt.D)(),Object(wt.j)(wt.a,{key:0},[Object(wt.k)("img",{src:e.captcha.url,onClick:t[7]||(t[7]=(...t)=>e.setCaptcha&&e.setCaptcha(...t))},null,8,jd),Object(wt.k)("sub",null,Object(wt.O)(e.$t("registration.new_captcha")),1),Object(wt.W)(Object(wt.k)("input",{id:"captcha-answer","onUpdate:modelValue":t[8]||(t[8]=t=>e.captcha.solution=t),disabled:e.isPending,class:"form-control",type:"text",autocomplete:"off",autocorrect:"off",autocapitalize:"off",spellcheck:"false"},null,8,gd),[[wt.S,e.captcha.solution]])],64)):Object(wt.i)("",!0)])):Object(wt.i)("",!0),e.token?(Object(wt.D)(),Object(wt.j)("div",vd,[Object(wt.k)("label",yd,Object(wt.O)(e.$t("registration.token")),1),Object(wt.W)(Object(wt.k)("input",{id:"token","onUpdate:modelValue":t[9]||(t[9]=t=>e.token=t),disabled:"true",class:"form-control",type:"text"},null,512),[[wt.S,e.token]])])):Object(wt.i)("",!0),Object(wt.k)("div",wd,[Object(wt.k)("button",{disabled:e.isPending,type:"submit",class:"btn button-default"},Object(wt.O)(e.$t("registration.register")),9,kd)])]),Object(wt.k)("div",{class:"terms-of-service",innerHTML:e.termsOfService},null,8,_d)]),e.serverValidationErrors.length?(Object(wt.D)(),Object(wt.j)("div",Sd,[Object(wt.k)("div",Cd,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.serverValidationErrors,e=>(Object(wt.D)(),Object(wt.j)("span",{key:e},Object(wt.O)(e),1))),128))])])):Object(wt.i)("",!0)],32)])])}]]);const zd={class:"settings panel panel-default"},Md={class:"panel-heading"},Ud={class:"panel-body"},Fd={class:"container"},Ed={key:0},Ld={key:0},Rd={key:1},Ad={key:1},Nd={key:0},Bd={class:"form-group text-center"},Vd={key:2},Hd={key:0,class:"password-reset-required error"},qd={class:"form-group"},Jd=["disabled","placeholder"],Wd={class:"form-group"},Yd=["disabled"],Gd={key:3,class:"alert error notice-dismissible"};var Kd=function(e){var t=e.instance,n={email:e.email},r=De()(n,(function(e,t,n){var r="".concat(n,"=").concat(encodeURIComponent(t));return"".concat(e,"&").concat(r)}),""),i="".concat(t).concat("/auth/password","?").concat(r);return window.fetch(i,{method:"POST"})};function Xd(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Zd(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Xd(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Xd(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.rb);var Qd={data:function(){return{user:{email:""},isPending:!1,success:!1,throttled:!1,error:null}},computed:Zd(Zd({},Object(a.e)({signedIn:function(e){return!!e.users.currentUser},instance:function(e){return e.instance}})),{},{mailerEnabled:function(){return this.instance.mailerEnabled}}),created:function(){this.signedIn&&this.$router.push({name:"root"})},props:{passwordResetRequested:{default:!1,type:Boolean}},methods:{dismissError:function(){this.error=null},submit:function(){var e=this;this.isPending=!0;var t=this.user.email,n=this.instance.server;Kd({instance:n,email:t}).then((function(t){var n=t.status;e.isPending=!1,e.user.email="",204===n?(e.success=!0,e.error=null):429===n&&(e.throttled=!0,e.error=e.$t("password_reset.too_many_requests"))})).catch((function(){e.isPending=!1,e.user.email="",e.error=e.$t("general.generic_error")}))}}};n(588);var ep=Fn()(Qd,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("router-link"),a=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",zd,[Object(wt.k)("div",Md,Object(wt.O)(e.$t("password_reset.password_reset")),1),Object(wt.k)("div",Ud,[Object(wt.k)("form",{class:"password-reset-form",onSubmit:t[2]||(t[2]=Object(wt.Y)((...t)=>e.submit&&e.submit(...t),["prevent"]))},[Object(wt.k)("div",Fd,[e.mailerEnabled?e.success||e.throttled?(Object(wt.D)(),Object(wt.j)("div",Ad,[e.success?(Object(wt.D)(),Object(wt.j)("p",Nd,Object(wt.O)(e.$t("password_reset.check_email")),1)):Object(wt.i)("",!0),Object(wt.k)("div",Bd,[Object(wt.m)(s,{to:{name:"root"}},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.$t("password_reset.return_home")),1)]),_:1})])])):(Object(wt.D)(),Object(wt.j)("div",Vd,[e.passwordResetRequested?(Object(wt.D)(),Object(wt.j)("p",Hd,Object(wt.O)(e.$t("password_reset.password_reset_required")),1)):Object(wt.i)("",!0),Object(wt.k)("p",null,Object(wt.O)(e.$t("password_reset.instruction")),1),Object(wt.k)("div",qd,[Object(wt.W)(Object(wt.k)("input",{ref:"email","onUpdate:modelValue":t[0]||(t[0]=t=>e.user.email=t),disabled:e.isPending,placeholder:e.$t("password_reset.placeholder"),class:"form-control",type:"input"},null,8,Jd),[[wt.S,e.user.email]])]),Object(wt.k)("div",Wd,[Object(wt.k)("button",{disabled:e.isPending,type:"submit",class:"btn button-default btn-block"},Object(wt.O)(e.$t("settings.save")),9,Yd)])])):(Object(wt.D)(),Object(wt.j)("div",Ed,[e.passwordResetRequested?(Object(wt.D)(),Object(wt.j)("p",Ld,Object(wt.O)(e.$t("password_reset.password_reset_required_but_mailer_is_disabled")),1)):(Object(wt.D)(),Object(wt.j)("p",Rd,Object(wt.O)(e.$t("password_reset.password_reset_disabled")),1))])),e.error?(Object(wt.D)(),Object(wt.j)("p",Gd,[Object(wt.k)("span",null,Object(wt.O)(e.error),1),Object(wt.k)("a",{class:"fa-scale-110 fa-old-padding dismiss",onClick:t[1]||(t[1]=Object(wt.Y)(t=>e.dismissError(),["prevent"]))},[Object(wt.m)(a,{icon:"times"})])])):Object(wt.i)("",!0)])],32)])])}]]);const tp={class:"settings panel panel-default"},np={class:"panel-heading"},rp={class:"title"},ip={class:"panel-body"};const op={class:"follow-request-card-content-container"};var sp={props:["user"],components:{BasicUserCard:Qc.a},methods:{findFollowRequestNotificationId:function(){var e=this,t=Object(W.e)(this.$store).find((function(t){return t.from_profile.id===e.user.id&&"follow_request"===t.type}));return t&&t.id},approveUser:function(){this.$store.state.api.backendInteractor.approveUser({id:this.user.id}),this.$store.dispatch("removeFollowRequest",this.user);var e=this.findFollowRequestNotificationId();this.$store.dispatch("markSingleNotificationAsSeen",{id:e}),this.$store.dispatch("updateNotification",{id:e,updater:function(e){e.type="follow"}})},denyUser:function(){var e=this,t=this.findFollowRequestNotificationId();this.$store.state.api.backendInteractor.denyUser({id:this.user.id}).then((function(){e.$store.dispatch("dismissNotificationLocal",{id:t}),e.$store.dispatch("removeFollowRequest",e.user)}))}}};n(589);var ap={components:{FollowRequestCard:Fn()(sp,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("basic-user-card");return Object(wt.D)(),Object(wt.h)(s,{user:e.user},{default:Object(wt.V)(()=>[Object(wt.k)("div",op,[Object(wt.k)("button",{class:"btn button-default",onClick:t[0]||(t[0]=(...t)=>e.approveUser&&e.approveUser(...t))},Object(wt.O)(e.$t("user_card.approve")),1),Object(wt.k)("button",{class:"btn button-default",onClick:t[1]||(t[1]=(...t)=>e.denyUser&&e.denyUser(...t))},Object(wt.O)(e.$t("user_card.deny")),1)])]),_:1},8,["user"])}]])},computed:{requests:function(){return this.$store.state.api.followRequests}}};var cp=Fn()(ap,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FollowRequestCard");return Object(wt.D)(),Object(wt.j)("div",tp,[Object(wt.k)("div",np,[Object(wt.k)("div",rp,Object(wt.O)(e.$t("nav.friend_requests")),1)]),Object(wt.k)("div",ip,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.requests,e=>(Object(wt.D)(),Object(wt.h)(s,{key:e.id,user:e,class:"list-item"},null,8,["user"]))),128))])])}]]);var lp={props:["code"],mounted:function(){var e=this;if(this.code){var t=this.$store.state.oauth,n=t.clientId,r=t.clientSecret;ze.getToken({clientId:n,clientSecret:r,instance:this.$store.state.instance.server,code:this.code}).then((function(t){e.$store.commit("setToken",t.access_token),e.$store.dispatch("loginUser",t.access_token),e.$router.push({name:"friends"})}))}}};var up=Fn()(lp,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("h1",null,"...")}]]);const dp={class:"panel panel-default"},pp={class:"panel-heading"},hp={class:"panel-body"};var bp={components:{FollowCard:tu},data:function(){return{users:[]}},mounted:function(){this.getWhoToFollow()},methods:{showWhoToFollow:function(e){var t=this;e.forEach((function(e,n){t.$store.state.api.backendInteractor.fetchUser({id:e.acct}).then((function(e){e.error||(t.$store.commit("addNewUsers",[e]),t.users.push(e))}))}))},getWhoToFollow:function(){var e=this,t=this.$store.state.users.currentUser.credentials;t&&j.c.suggestions({credentials:t}).then((function(t){e.showWhoToFollow(t)}))}}};var mp=Fn()(bp,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FollowCard");return Object(wt.D)(),Object(wt.j)("div",dp,[Object(wt.k)("div",pp,Object(wt.O)(e.$t("who_to_follow.who_to_follow")),1),Object(wt.k)("div",hp,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.users,e=>(Object(wt.D)(),Object(wt.h)(s,{key:e.id,user:e,class:"list-item"},null,8,["user"]))),128))])])}]]);const fp={class:"column-inner"};const Op={class:"panel panel-default"},jp={class:"panel-body"},gp=["innerHTML"];var vp={computed:{content:function(){return this.$store.state.instance.tos}}};n(590);var yp=Fn()(vp,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("div",null,[Object(wt.k)("div",Op,[Object(wt.k)("div",jp,[Object(wt.k)("div",{class:"tos-content",innerHTML:e.content},null,8,gp)])])])}]]);const wp={class:"staff-panel"},kp={class:"panel panel-default base01-background"},_p={class:"panel-heading timeline-heading base02-background"},Sp={class:"title"},Cp={class:"panel-body"};var Pp=n(334),xp=n.n(Pp);function Dp(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Tp(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Dp(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Dp(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Ip={created:function(){var e=this;this.$store.state.instance.staffAccounts.forEach((function(t){return e.$store.dispatch("fetchUserIfMissing",t)}))},components:{BasicUserCard:Qc.a},computed:Tp(Tp({groupedStaffAccounts:function(){var e=he()(this.staffAccounts,this.findUser).filter((function(e){return e})),t=xp()(e,"role");return[{role:"admin",users:t.admin},{role:"moderator",users:t.moderator}].filter((function(e){return e.users}))}},Object(a.c)(["findUser"])),Object(a.e)({staffAccounts:function(e){return e.instance.staffAccounts}}))};n(591);var $p=Fn()(Ip,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("basic-user-card");return Object(wt.D)(),Object(wt.j)("div",wp,[Object(wt.k)("div",kp,[Object(wt.k)("div",_p,[Object(wt.k)("div",Sp,Object(wt.O)(e.$t("about.staff")),1)]),Object(wt.k)("div",Cp,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.groupedStaffAccounts,t=>(Object(wt.D)(),Object(wt.j)("div",{key:t.role,class:"staff-group"},[Object(wt.k)("h4",null,Object(wt.O)(e.$t("general.role."+t.role)),1),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(t.users,e=>(Object(wt.D)(),Object(wt.h)(s,{key:e.screen_name,user:e},null,8,["user"]))),128))]))),128))])])])}]]);const zp={key:0,class:"mrf-transparency-panel"},Mp={class:"panel panel-default base01-background"},Up={class:"panel-heading timeline-heading base02-background"},Fp={class:"title"},Ep={class:"panel-body"},Lp={class:"mrf-section"},Rp=["textContent"],Ap={key:0},Np={key:1},Bp={key:0},Vp={key:1},Hp={key:2},qp={key:0},Jp={key:1},Wp={key:3},Yp={key:0},Gp={key:1},Kp={key:4},Xp={key:0},Zp={key:1},Qp={key:5},eh={key:0},th={key:1},nh={key:6},rh={key:0},ih={key:1},oh={key:7},sh={key:8},ah=["textContent"],ch={key:9},lh=["textContent"],uh={key:10};function dh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ph(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?dh(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):dh(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var hh=function(e,t,n){return e.map((function(e){return t[n]&&t[n][e]&&t[n][e].reason?{instance:e,reason:t[n][e].reason}:{instance:e,reason:""}}))},bh={computed:ph(ph({},Object(a.e)({federationPolicy:function(e){return qt()(e,"instance.federationPolicy")},mrfPolicies:function(e){return qt()(e,"instance.federationPolicy.mrf_policies",[])},quarantineInstances:function(e){return hh(qt()(e,"instance.federationPolicy.quarantined_instances",[]),qt()(e,"instance.federationPolicy.quarantined_instances_info",[]),"quarantined_instances")},acceptInstances:function(e){return hh(qt()(e,"instance.federationPolicy.mrf_simple.accept",[]),qt()(e,"instance.federationPolicy.mrf_simple_info",[]),"accept")},rejectInstances:function(e){return hh(qt()(e,"instance.federationPolicy.mrf_simple.reject",[]),qt()(e,"instance.federationPolicy.mrf_simple_info",[]),"reject")},ftlRemovalInstances:function(e){return hh(qt()(e,"instance.federationPolicy.mrf_simple.federated_timeline_removal",[]),qt()(e,"instance.federationPolicy.mrf_simple_info",[]),"federated_timeline_removal")},mediaNsfwInstances:function(e){return hh(qt()(e,"instance.federationPolicy.mrf_simple.media_nsfw",[]),qt()(e,"instance.federationPolicy.mrf_simple_info",[]),"media_nsfw")},mediaRemovalInstances:function(e){return hh(qt()(e,"instance.federationPolicy.mrf_simple.media_removal",[]),qt()(e,"instance.federationPolicy.mrf_simple_info",[]),"media_removal")},keywordsFtlRemoval:function(e){return qt()(e,"instance.federationPolicy.mrf_keyword.federated_timeline_removal",[])},keywordsReject:function(e){return qt()(e,"instance.federationPolicy.mrf_keyword.reject",[])},keywordsReplace:function(e){return qt()(e,"instance.federationPolicy.mrf_keyword.replace",[])}})),{},{hasInstanceSpecificPolicies:function(){return this.quarantineInstances.length||this.acceptInstances.length||this.rejectInstances.length||this.ftlRemovalInstances.length||this.mediaNsfwInstances.length||this.mediaRemovalInstances.length},hasKeywordPolicies:function(){return this.keywordsFtlRemoval.length||this.keywordsReject.length||this.keywordsReplace.length}})};n(592);var mh={components:{InstanceSpecificPanel:Yr,FeaturesPanel:ai,TermsOfServicePanel:yp,StaffPanel:$p,MRFTransparencyPanel:Fn()(bh,[["render",function(e,t,n,r,i,o){return e.federationPolicy?(Object(wt.D)(),Object(wt.j)("div",zp,[Object(wt.k)("div",Mp,[Object(wt.k)("div",Up,[Object(wt.k)("div",Fp,Object(wt.O)(e.$t("about.mrf.federation")),1)]),Object(wt.k)("div",Ep,[Object(wt.k)("div",Lp,[Object(wt.k)("h2",null,Object(wt.O)(e.$t("about.mrf.mrf_policies")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("about.mrf.mrf_policies_desc")),1),Object(wt.k)("ul",null,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.mrfPolicies,e=>(Object(wt.D)(),Object(wt.j)("li",{key:e,textContent:Object(wt.O)(e)},null,8,Rp))),128))]),e.hasInstanceSpecificPolicies?(Object(wt.D)(),Object(wt.j)("h2",Ap,Object(wt.O)(e.$t("about.mrf.simple.simple_policies")),1)):Object(wt.i)("",!0),e.acceptInstances.length?(Object(wt.D)(),Object(wt.j)("div",Np,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.simple.accept")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("about.mrf.simple.accept_desc")),1),Object(wt.k)("table",null,[Object(wt.k)("tr",null,[Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.instance")),1),Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.reason")),1)]),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.acceptInstances,t=>(Object(wt.D)(),Object(wt.j)("tr",{key:t.instance+"_accept"},[Object(wt.k)("td",null,Object(wt.O)(t.instance),1),""===t.reason?(Object(wt.D)(),Object(wt.j)("td",Bp,Object(wt.O)(e.$t("about.mrf.simple.not_applicable")),1)):(Object(wt.D)(),Object(wt.j)("td",Vp,Object(wt.O)(t.reason),1))]))),128))])])):Object(wt.i)("",!0),e.rejectInstances.length?(Object(wt.D)(),Object(wt.j)("div",Hp,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.simple.reject")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("about.mrf.simple.reject_desc")),1),Object(wt.k)("table",null,[Object(wt.k)("tr",null,[Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.instance")),1),Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.reason")),1)]),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.rejectInstances,t=>(Object(wt.D)(),Object(wt.j)("tr",{key:t.instance+"_reject"},[Object(wt.k)("td",null,Object(wt.O)(t.instance),1),""===t.reason?(Object(wt.D)(),Object(wt.j)("td",qp,Object(wt.O)(e.$t("about.mrf.simple.not_applicable")),1)):(Object(wt.D)(),Object(wt.j)("td",Jp,Object(wt.O)(t.reason),1))]))),128))])])):Object(wt.i)("",!0),e.quarantineInstances.length?(Object(wt.D)(),Object(wt.j)("div",Wp,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.simple.quarantine")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("about.mrf.simple.quarantine_desc")),1),Object(wt.k)("table",null,[Object(wt.k)("tr",null,[Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.instance")),1),Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.reason")),1)]),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.quarantineInstances,t=>(Object(wt.D)(),Object(wt.j)("tr",{key:t.instance+"_quarantine"},[Object(wt.k)("td",null,Object(wt.O)(t.instance),1),""===t.reason?(Object(wt.D)(),Object(wt.j)("td",Yp,Object(wt.O)(e.$t("about.mrf.simple.not_applicable")),1)):(Object(wt.D)(),Object(wt.j)("td",Gp,Object(wt.O)(t.reason),1))]))),128))])])):Object(wt.i)("",!0),e.ftlRemovalInstances.length?(Object(wt.D)(),Object(wt.j)("div",Kp,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.simple.ftl_removal")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("about.mrf.simple.ftl_removal_desc")),1),Object(wt.k)("table",null,[Object(wt.k)("tr",null,[Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.instance")),1),Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.reason")),1)]),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.ftlRemovalInstances,t=>(Object(wt.D)(),Object(wt.j)("tr",{key:t.instance+"_ftl_removal"},[Object(wt.k)("td",null,Object(wt.O)(t.instance),1),""===t.reason?(Object(wt.D)(),Object(wt.j)("td",Xp,Object(wt.O)(e.$t("about.mrf.simple.not_applicable")),1)):(Object(wt.D)(),Object(wt.j)("td",Zp,Object(wt.O)(t.reason),1))]))),128))])])):Object(wt.i)("",!0),e.mediaNsfwInstances.length?(Object(wt.D)(),Object(wt.j)("div",Qp,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.simple.media_nsfw")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("about.mrf.simple.media_nsfw_desc")),1),Object(wt.k)("table",null,[Object(wt.k)("tr",null,[Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.instance")),1),Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.reason")),1)]),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.mediaNsfwInstances,t=>(Object(wt.D)(),Object(wt.j)("tr",{key:t.instance+"_media_nsfw"},[Object(wt.k)("td",null,Object(wt.O)(t.instance),1),""===t.reason?(Object(wt.D)(),Object(wt.j)("td",eh,Object(wt.O)(e.$t("about.mrf.simple.not_applicable")),1)):(Object(wt.D)(),Object(wt.j)("td",th,Object(wt.O)(t.reason),1))]))),128))])])):Object(wt.i)("",!0),e.mediaRemovalInstances.length?(Object(wt.D)(),Object(wt.j)("div",nh,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.simple.media_removal")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("about.mrf.simple.media_removal_desc")),1),Object(wt.k)("table",null,[Object(wt.k)("tr",null,[Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.instance")),1),Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.reason")),1)]),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.mediaRemovalInstances,t=>(Object(wt.D)(),Object(wt.j)("tr",{key:t.instance+"_media_removal"},[Object(wt.k)("td",null,Object(wt.O)(t.instance),1),""===t.reason?(Object(wt.D)(),Object(wt.j)("td",rh,Object(wt.O)(e.$t("about.mrf.simple.not_applicable")),1)):(Object(wt.D)(),Object(wt.j)("td",ih,Object(wt.O)(t.reason),1))]))),128))])])):Object(wt.i)("",!0),e.hasKeywordPolicies?(Object(wt.D)(),Object(wt.j)("h2",oh,Object(wt.O)(e.$t("about.mrf.keyword.keyword_policies")),1)):Object(wt.i)("",!0),e.keywordsFtlRemoval.length?(Object(wt.D)(),Object(wt.j)("div",sh,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.keyword.ftl_removal")),1),Object(wt.k)("ul",null,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.keywordsFtlRemoval,e=>(Object(wt.D)(),Object(wt.j)("li",{key:e,textContent:Object(wt.O)(e)},null,8,ah))),128))])])):Object(wt.i)("",!0),e.keywordsReject.length?(Object(wt.D)(),Object(wt.j)("div",ch,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.keyword.reject")),1),Object(wt.k)("ul",null,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.keywordsReject,e=>(Object(wt.D)(),Object(wt.j)("li",{key:e,textContent:Object(wt.O)(e)},null,8,lh))),128))])])):Object(wt.i)("",!0),e.keywordsReplace.length?(Object(wt.D)(),Object(wt.j)("div",uh,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.keyword.replace")),1),Object(wt.k)("ul",null,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.keywordsReplace,t=>(Object(wt.D)(),Object(wt.j)("li",{key:t},Object(wt.O)(t.pattern)+" "+Object(wt.O)(e.$t("about.mrf.keyword.is_replaced_by"))+" "+Object(wt.O)(t.replacement),1))),128))])])):Object(wt.i)("",!0)])])])])):Object(wt.i)("",!0)}]])},computed:{showFeaturesPanel:function(){return this.$store.state.instance.showFeaturesPanel},showInstanceSpecificPanel:function(){return this.$store.state.instance.showInstanceSpecificPanel&&!this.$store.getters.mergedConfig.hideISP&&this.$store.state.instance.instanceSpecificPanelContent}}};var fh=Fn()(mh,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("instance-specific-panel"),a=Object(wt.J)("staff-panel"),c=Object(wt.J)("terms-of-service-panel"),l=Object(wt.J)("MRFTransparencyPanel"),u=Object(wt.J)("features-panel");return Object(wt.D)(),Object(wt.j)("div",fp,[e.showInstanceSpecificPanel?(Object(wt.D)(),Object(wt.h)(s,{key:0})):Object(wt.i)("",!0),Object(wt.m)(a),Object(wt.m)(c),Object(wt.m)(l),e.showFeaturesPanel?(Object(wt.D)(),Object(wt.h)(u,{key:1})):Object(wt.i)("",!0)])}]]);const Oh={class:"panel panel-default"},jh={class:"panel-heading"},gh={class:"panel-body"},vh={key:0};var yh={data:function(){return{error:!1}},mounted:function(){this.redirect()},methods:{redirect:function(){var e=this,t=this.$route.params.username+"@"+this.$route.params.hostname;this.$store.state.api.backendInteractor.fetchUser({id:t}).then((function(t){if(t.error)e.error=!0;else{e.$store.commit("addNewUsers",[t]);var n=t.id;e.$router.replace({name:"external-user-profile",params:{id:n}})}})).catch((function(){e.error=!0}))}}};var wh,kh,_h=Fn()(yh,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("div",Oh,[Object(wt.k)("div",jh,Object(wt.O)(e.$t("remote_user_resolver.remote_user_resolver")),1),Object(wt.k)("div",gh,[Object(wt.k)("p",null,Object(wt.O)(e.$t("remote_user_resolver.searching_for"))+" @"+Object(wt.O)(e.$route.params.username)+"@"+Object(wt.O)(e.$route.params.hostname),1),e.error?(Object(wt.D)(),Object(wt.j)("p",vh,Object(wt.O)(e.$t("remote_user_resolver.error")),1)):Object(wt.i)("",!0)])])}]]),Sh=function(e){var t=function(t,n,r){e.state.users.currentUser?r():r(e.state.instance.redirectRootNoLogin||"/main/all")},n=[{name:"root",path:"/",redirect:function(t){return(e.state.users.currentUser?e.state.instance.redirectRootLogin:e.state.instance.redirectRootNoLogin)||"/main/all"}},{name:"public-external-timeline",path:"/main/all",component:Za},{name:"public-timeline",path:"/main/public",component:Ka},{name:"friends",path:"/main/friends",component:ec,beforeEnter:t},{name:"tag-timeline",path:"/tag/:tag",component:nc},{name:"bookmarks",path:"/bookmarks",component:ic},{name:"conversation",path:"/notice/:id",component:sc,meta:{dontScroll:!0}},{name:"remote-user-profile-acct",path:"/remote-users/:_(@)?:username([^/@]+)@:hostname([^/@]+)",component:_h,beforeEnter:t},{name:"remote-user-profile",path:"/remote-users/:hostname/:username",component:_h,beforeEnter:t},{name:"external-user-profile",path:"/users/:id",component:du},{name:"interactions",path:"/users/:username/interactions",component:Oc,beforeEnter:t},{name:"dms",path:"/users/:username/dms",component:gc,beforeEnter:t},{name:"registration",path:"/registration",component:$d},{name:"password-reset",path:"/password-reset",component:ep,props:!0},{name:"registration-token",path:"/registration/:token",component:$d},{name:"friend-requests",path:"/friend-requests",component:cp,beforeEnter:t},{name:"notifications",path:"/:username/notifications",component:fs.default,props:function(){return{disableTeleport:!0}},beforeEnter:t},{name:"login",path:"/login",component:fr},{name:"shout-panel",path:"/shout-panel",component:Fi,props:function(){return{floating:!1}}},{name:"oauth-callback",path:"/oauth-callback",component:up,props:function(e){return{code:e.query.code}}},{name:"search",path:"/search",component:Eu,props:function(e){return{query:e.query.query}}},{name:"who-to-follow",path:"/who-to-follow",component:mp,beforeEnter:t},{name:"about",path:"/about",component:fh},{name:"user-profile",path:"/:_(users)?/:name",component:du}];return e.state.instance.pleromaChatMessagesAvailable&&(n=n.concat([{name:"chat",path:"/users/:username/chats/:recipient_id",component:El,meta:{dontScroll:!1},beforeEnter:t},{name:"chats",path:"/users/:username/chats",component:al,meta:{dontScroll:!1},beforeEnter:t}])),n},Ch=n(170),Ph=new Set([]),xh=function(e){var t=window.innerWidth-document.documentElement.clientWidth;Ch.disableBodyScroll(e,{reserveScrollBarGap:!0}),Ph.add(e),setTimeout((function(){if(Ph.size<=1){if(void 0===wh){var e=document.getElementById("nav");wh=window.getComputedStyle(e).getPropertyValue("padding-right"),e.style.paddingRight=wh?"calc(".concat(wh," + ").concat(t,"px)"):"".concat(t,"px")}if(void 0===kh){var n=document.getElementById("app_bg_wrapper");kh=window.getComputedStyle(n).getPropertyValue("right"),n.style.right=kh?"calc(".concat(kh," + ").concat(t,"px)"):"".concat(t,"px")}document.body.classList.add("scroll-locked")}}))},Dh=function(e){Ph.delete(e),setTimeout((function(){0===Ph.size&&(void 0!==wh&&(document.getElementById("nav").style.paddingRight=wh,wh=void 0),void 0!==kh&&(document.getElementById("app_bg_wrapper").style.right=kh,kh=void 0),document.body.classList.remove("scroll-locked"))})),Ch.enableBodyScroll(e)},Th={mounted:function(e,t){t.value&&xh(e)},updated:function(e,t){t.oldValue!==t.value&&(t.value?xh(e):Dh(e))},unmounted:function(e){Dh(e)}},Ih=function(e){e.directive("body-scroll-lock",Th)},$h=n(101);function zh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Mh(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?zh(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):zh(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Uh,Fh,Eh,Lh,Rh,Ah,Nh,Bh,Vh,Hh,qh,Jh,Wh,Yh=null,Gh=function(e){var t=atob(e),n=Uint8Array.from(d()(t).map((function(e){return e.charCodeAt(0)})));return(new TextDecoder).decode(n)},Kh=(Uh=i()(s.a.mark((function e(t){var n,r,i;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((n=document.getElementById("initial-results")?(Yh||(Yh=JSON.parse(document.getElementById("initial-results").textContent)),Yh):null)&&n[t]){e.next=3;break}return e.abrupt("return",window.fetch(t));case 3:return r=Gh(n[t]),i=JSON.parse(r),e.abrupt("return",{ok:!0,json:function(){return i},text:function(){return i}});case 6:case"end":return e.stop()}}),e)}))),function(e){return Uh.apply(this,arguments)}),Xh=(Fh=i()(s.a.mark((function e(t){var n,r,i,o,a;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.prev=1,e.next=4,Kh("/api/v1/instance");case 4:if(!(r=e.sent).ok){e.next=16;break}return e.next=8,r.json();case 8:i=e.sent,o=i.max_toot_chars,a=i.pleroma.vapid_public_key,n.dispatch("setInstanceOption",{name:"textlimit",value:o}),n.dispatch("setInstanceOption",{name:"accountApprovalRequired",value:i.approval_required}),a&&n.dispatch("setInstanceOption",{name:"vapidPublicKey",value:a}),e.next=17;break;case 16:throw r;case 17:e.next=23;break;case 19:e.prev=19,e.t0=e.catch(1),console.error("Could not load instance config, potentially fatal"),console.error(e.t0);case 23:case"end":return e.stop()}}),e,null,[[1,19]])}))),function(e){return Fh.apply(this,arguments)}),Zh=(Eh=i()(s.a.mark((function e(t){var n,r;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t.store,e.prev=1,e.next=4,window.fetch("/api/pleroma/frontend_configurations");case 4:if(!(n=e.sent).ok){e.next=12;break}return e.next=8,n.json();case 8:return r=e.sent,e.abrupt("return",r.pleroma_fe);case 12:throw n;case 13:e.next=19;break;case 15:e.prev=15,e.t0=e.catch(1),console.error("Could not load backend-provided frontend config, potentially fatal"),console.error(e.t0);case 19:case"end":return e.stop()}}),e,null,[[1,15]])}))),function(e){return Eh.apply(this,arguments)}),Qh=(Lh=i()(s.a.mark((function e(){var t;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,window.fetch("/static/config.json");case 3:if(!(t=e.sent).ok){e.next=8;break}return e.abrupt("return",t.json());case 8:throw t;case 9:e.next=16;break;case 11:return e.prev=11,e.t0=e.catch(0),console.warn("Failed to load static/config.json, continuing without it."),console.warn(e.t0),e.abrupt("return",{});case 16:case"end":return e.stop()}}),e,null,[[0,11]])}))),function(){return Lh.apply(this,arguments)}),eb=(Rh=i()(s.a.mark((function e(t){var n,r,i,o,a,c,l;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.apiConfig,r=t.staticConfig,i=t.store,o=window.___pleromafe_dev_overrides||{},a=window.___pleromafe_mode.NODE_ENV,c={},o.staticConfigPreference&&"development"===a?(console.warn("OVERRIDING API CONFIG WITH STATIC CONFIG"),c=Object.assign({},n,r)):c=Object.assign({},r,n),(l=function(e){i.dispatch("setInstanceOption",{name:e,value:c[e]})})("nsfwCensorImage"),l("background"),l("hidePostStats"),l("hideBotIndication"),l("hideUserStats"),l("hideFilteredStatuses"),l("logo"),i.dispatch("setInstanceOption",{name:"logoMask",value:void 0===c.logoMask||c.logoMask}),i.dispatch("setInstanceOption",{name:"logoMargin",value:void 0===c.logoMargin?0:c.logoMargin}),l("logoLeft"),i.commit("authFlow/setInitialStrategy",c.loginMethod),l("redirectRootNoLogin"),l("redirectRootLogin"),l("showInstanceSpecificPanel"),l("minimalScopesMode"),l("hideMutedPosts"),l("collapseMessageWithSubject"),l("scopeCopy"),l("subjectLineBehavior"),l("postContentType"),l("alwaysShowSubjectInput"),l("showFeaturesPanel"),l("hideSitename"),l("sidebarRight"),e.abrupt("return",i.dispatch("setTheme",c.theme));case 31:case"end":return e.stop()}}),e)}))),function(e){return Rh.apply(this,arguments)}),tb=(Ah=i()(s.a.mark((function e(t){var n,r,i;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.prev=1,e.next=4,window.fetch("/static/terms-of-service.html");case 4:if(!(r=e.sent).ok){e.next=12;break}return e.next=8,r.text();case 8:i=e.sent,n.dispatch("setInstanceOption",{name:"tos",value:i}),e.next=13;break;case 12:throw r;case 13:e.next=19;break;case 15:e.prev=15,e.t0=e.catch(1),console.warn("Can't load TOS"),console.warn(e.t0);case 19:case"end":return e.stop()}}),e,null,[[1,15]])}))),function(e){return Ah.apply(this,arguments)}),nb=(Nh=i()(s.a.mark((function e(t){var n,r,i;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.prev=1,e.next=4,Kh("/instance/panel.html");case 4:if(!(r=e.sent).ok){e.next=12;break}return e.next=8,r.text();case 8:i=e.sent,n.dispatch("setInstanceOption",{name:"instanceSpecificPanelContent",value:i}),e.next=13;break;case 12:throw r;case 13:e.next=19;break;case 15:e.prev=15,e.t0=e.catch(1),console.warn("Can't load instance panel"),console.warn(e.t0);case 19:case"end":return e.stop()}}),e,null,[[1,15]])}))),function(e){return Nh.apply(this,arguments)}),rb=(Bh=i()(s.a.mark((function e(t){var n,r,o,a;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.prev=1,e.next=4,window.fetch("/static/stickers.json");case 4:if(!(r=e.sent).ok){e.next=15;break}return e.next=8,r.json();case 8:return o=e.sent,e.next=11,Promise.all(Object.entries(o).map(function(){var e=i()(s.a.mark((function e(t){var n,r,i,o,a;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=m()(t,2),r=n[0],i=n[1],e.next=3,window.fetch(i+"pack.json");case 3:if(o=e.sent,a={},!o.ok){e.next=9;break}return e.next=8,o.json();case 8:a=e.sent;case 9:return e.abrupt("return",{pack:r,path:i,meta:a});case 10:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 11:a=e.sent.sort((function(e,t){return e.meta.title.localeCompare(t.meta.title)})),n.dispatch("setInstanceOption",{name:"stickers",value:a}),e.next=16;break;case 15:throw r;case 16:e.next=22;break;case 18:e.prev=18,e.t0=e.catch(1),console.warn("Can't load stickers"),console.warn(e.t0);case 22:case"end":return e.stop()}}),e,null,[[1,18]])}))),function(e){return Bh.apply(this,arguments)}),ib=(Vh=i()(s.a.mark((function e(t){var n,r,i,o,a;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,r=n.state,i=n.commit,o=r.oauth,a=r.instance,e.abrupt("return",Ie(Mh(Mh({},o),{},{instance:a.server,commit:i})).then((function(e){return $e(Mh(Mh({},e),{},{instance:a.server}))})).then((function(e){i("setAppToken",e.access_token),i("setBackendInteractor",Se(n.getters.getToken()))})));case 4:case"end":return e.stop()}}),e)}))),function(e){return Vh.apply(this,arguments)}),ob=function(e){var t=e.store,n=e.accounts.map((function(e){return e.split("/").pop()}));t.dispatch("setInstanceOption",{name:"staffAccounts",value:n})},sb=(Hh=i()(s.a.mark((function e(t){var n,r,i,o,a,c,l,u,d,p,h,b,m;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.prev=1,e.next=4,Kh("/nodeinfo/2.0.json");case 4:if(!(r=e.sent).ok){e.next=49;break}return e.next=8,r.json();case 8:i=e.sent,o=i.metadata,a=o.features,n.dispatch("setInstanceOption",{name:"name",value:o.nodeName}),n.dispatch("setInstanceOption",{name:"registrationOpen",value:i.openRegistrations}),n.dispatch("setInstanceOption",{name:"mediaProxyAvailable",value:a.includes("media_proxy")}),n.dispatch("setInstanceOption",{name:"safeDM",value:a.includes("safe_dm_mentions")}),n.dispatch("setInstanceOption",{name:"shoutAvailable",value:a.includes("chat")}),n.dispatch("setInstanceOption",{name:"pleromaChatMessagesAvailable",value:a.includes("pleroma_chat_messages")}),n.dispatch("setInstanceOption",{name:"gopherAvailable",value:a.includes("gopher")}),n.dispatch("setInstanceOption",{name:"pollsAvailable",value:a.includes("polls")}),n.dispatch("setInstanceOption",{name:"pollLimits",value:o.pollLimits}),n.dispatch("setInstanceOption",{name:"mailerEnabled",value:o.mailerEnabled}),c=o.uploadLimits,n.dispatch("setInstanceOption",{name:"uploadlimit",value:parseInt(c.general)}),n.dispatch("setInstanceOption",{name:"avatarlimit",value:parseInt(c.avatar)}),n.dispatch("setInstanceOption",{name:"backgroundlimit",value:parseInt(c.background)}),n.dispatch("setInstanceOption",{name:"bannerlimit",value:parseInt(c.banner)}),n.dispatch("setInstanceOption",{name:"fieldsLimits",value:o.fieldsLimits}),n.dispatch("setInstanceOption",{name:"restrictedNicknames",value:o.restrictedNicknames}),n.dispatch("setInstanceOption",{name:"postFormats",value:o.postFormats}),l=o.suggestions,n.dispatch("setInstanceOption",{name:"suggestionsEnabled",value:l.enabled}),n.dispatch("setInstanceOption",{name:"suggestionsWeb",value:l.web}),u=i.software,n.dispatch("setInstanceOption",{name:"backendVersion",value:u.version}),n.dispatch("setInstanceOption",{name:"pleromaBackend",value:"pleroma"===u.name}),d=o.private,n.dispatch("setInstanceOption",{name:"private",value:d}),p=window.___pleromafe_commit_hash,n.dispatch("setInstanceOption",{name:"frontendVersion",value:p}),h=o.federation,n.dispatch("setInstanceOption",{name:"tagPolicyAvailable",value:void 0!==h.mrf_policies&&o.federation.mrf_policies.includes("TagPolicy")}),n.dispatch("setInstanceOption",{name:"federationPolicy",value:h}),n.dispatch("setInstanceOption",{name:"federating",value:void 0===h.enabled||h.enabled}),b=o.accountActivationRequired,n.dispatch("setInstanceOption",{name:"accountActivationRequired",value:b}),m=o.staffAccounts,ob({store:n,accounts:m}),e.next=50;break;case 49:throw r;case 50:e.next=56;break;case 52:e.prev=52,e.t0=e.catch(1),console.warn("Could not load nodeinfo"),console.warn(e.t0);case 56:case"end":return e.stop()}}),e,null,[[1,52]])}))),function(e){return Hh.apply(this,arguments)}),ab=(qh=i()(s.a.mark((function e(t){var n,r,i,o;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.next=3,Promise.all([Zh({store:n}),Qh()]);case 3:return r=e.sent,i=r[0],o=r[1],e.next=8,eb({store:n,apiConfig:i,staticConfig:o}).then(ib({store:n}));case 8:case"end":return e.stop()}}),e)}))),function(e){return qh.apply(this,arguments)}),cb=(Jh=i()(s.a.mark((function e(t){var n;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.abrupt("return",new Promise(function(){var e=i()(s.a.mark((function e(t,r){return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!n.getters.getUserToken()){e.next=9;break}return e.prev=1,e.next=4,n.dispatch("loginUser",n.getters.getUserToken());case 4:e.next=9;break;case 6:e.prev=6,e.t0=e.catch(1),console.error(e.t0);case 9:t();case 10:case"end":return e.stop()}}),e,null,[[1,6]])})));return function(t,n){return e.apply(this,arguments)}}()));case 2:case"end":return e.stop()}}),e)}))),function(e){return Jh.apply(this,arguments)}),lb=(Wh=i()(s.a.mark((function e(t){var n,r,i,o,a,c,l,u,d,p;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,r=t.i18n,n.dispatch("setLayoutWidth",Ce()),n.dispatch("setLayoutHeight",Pe()),$h.a.initFaviconService(),i=window.___pleromafe_dev_overrides||{},o=void 0!==i.target?i.target:window.location.origin,n.dispatch("setInstanceOption",{name:"server",value:o}),e.next=9,ab({store:n});case 9:return a=n.state.config,c=a.customTheme,l=a.customThemeSource,u=n.state.instance.theme,l||c?l&&l.themeEngineVersion===O.a?Object(f.b)(l):Object(f.b)(c):u||console.error("Failed to load any theme!"),e.next=15,Promise.all([cb({store:n}),nb({store:n}),sb({store:n}),Xh({store:n})]);case 15:return n.dispatch("fetchMutes"),tb({store:n}),rb({store:n}),d=Object(nn.a)({history:Object(nn.b)(),routes:Sh(n),scrollBehavior:function(e,t,n){return!e.matched.some((function(e){return e.meta.dontScroll}))&&(n||{left:0,top:0})}}),(p=Object(wt.g)(ra)).use(d),p.use(n),p.use(r),p.use(on.a),p.use(Ih),p.component("FAIcon",sn.a),p.component("FALayers",sn.b),p.mount("#app"),e.abrupt("return",p);case 29:case"end":return e.stop()}}),e)}))),function(e){return Wh.apply(this,arguments)}),ub=(window.navigator.language||"en").split("-")[0],db=Object(Rt.a)({locale:"en",fallbackLocale:"en",messages:tn.a.default});tn.a.setLanguage(db,ub);var pb={paths:["config","users.lastLoginName","oauth"]};i()(s.a.mark((function e(){var t,n,r,i;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=!1,n=[en],e.prev=2,e.next=5,Qt(pb);case 5:r=e.sent,n.push(r),e.next=13;break;case 9:e.prev=9,e.t0=e.catch(2),console.error(e.t0),t=!0;case 13:i=Object(a.a)({modules:{i18n:{getters:{i18n:function(){return db.global}}},interface:l,instance:w,users:Ge,statuses:oe,api:rt,config:g.a,serverSideConfig:it.a,shout:ot,oauth:st,authFlow:ct,mediaViewer:dt,oauthTokens:pt,reports:mt,polls:ft,postStatus:Ot,chats:Lt},plugins:n,strict:!1}),t&&i.dispatch("pushGlobalNotice",{messageKey:"errors.storage_unavailable",level:"error"}),lb({store:i,i18n:db});case 16:case"end":return e.stop()}}),e,null,[[2,9]])})))(),window.___pleromafe_mode=Object({NODE_ENV:"production"}),window.___pleromafe_commit_hash="3019dd48\n",window.___pleromafe_dev_overrides=void 0}]);
-//# sourceMappingURL=app.23b7ec270c69f4f99782.js.map
\ No newline at end of file
diff --git a/priv/static/static/js/app.23b7ec270c69f4f99782.js.map b/priv/static/static/js/app.23b7ec270c69f4f99782.js.map
deleted file mode 100644 (file)
index 9a15348..0000000
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/services/entity_normalizer/entity_normalizer.service.js","webpack:///./src/services/errors/errors.js","webpack:///./src/modules/errors.js","webpack:///./src/services/api/api.service.js","webpack:///./src/services/color_convert/color_convert.js","webpack:///./src/components/user_avatar/user_avatar.js","webpack:///./src/components/user_avatar/user_avatar.vue?05a8","webpack:///./src/components/user_avatar/user_avatar.vue","webpack:///./src/services/user_profile_link_generator/user_profile_link_generator.js","webpack:///./src/components/popover/popover.js","webpack:///./src/components/popover/popover.vue?a425","webpack:///./src/components/popover/popover.vue","webpack:///./src/services/html_converter/utility.service.js","webpack:///./src/services/html_converter/html_line_converter.service.js","webpack:///./src/components/hashtag_link/hashtag_link.vue","webpack:///./src/services/matcher/matcher.service.js","webpack:///./src/components/hashtag_link/hashtag_link.js","webpack:///./src/components/hashtag_link/hashtag_link.vue?ad7e","webpack:///./src/components/rich_content/rich_content.jsx","webpack:///./src/services/html_converter/html_tree_converter.service.js","webpack:///./src/services/notification_utils/notification_utils.js","webpack:///./src/services/user_highlighter/user_highlighter.js","webpack:///./src/services/file_type/file_type.service.js","webpack:///./src/components/status/status.vue","webpack:///./src/components/reply_button/reply_button.vue","webpack:///./src/components/reply_button/reply_button.js","webpack:///./src/components/reply_button/reply_button.vue?f429","webpack:///./src/components/favorite_button/favorite_button.vue","webpack:///./src/components/favorite_button/favorite_button.js","webpack:///./src/components/favorite_button/favorite_button.vue?c274","webpack:///./src/components/react_button/react_button.vue","webpack:///./src/components/react_button/react_button.js","webpack:///./src/components/react_button/react_button.vue?68d2","webpack:///./src/components/retweet_button/retweet_button.vue","webpack:///./src/components/retweet_button/retweet_button.js","webpack:///./src/components/retweet_button/retweet_button.vue?0fda","webpack:///./src/components/extra_buttons/extra_buttons.vue","webpack:///./src/components/extra_buttons/extra_buttons.js","webpack:///./src/components/extra_buttons/extra_buttons.vue?6374","webpack:///./src/components/status_popover/status_popover.vue","webpack:///./src/components/status_popover/status_popover.js","webpack:///./src/components/status_popover/status_popover.vue?8218","webpack:///./src/components/user_list_popover/user_list_popover.vue","webpack:///./src/components/user_list_popover/user_list_popover.js","webpack:///./src/components/user_list_popover/user_list_popover.vue?d286","webpack:///./src/components/emoji_reactions/emoji_reactions.vue","webpack:///./src/components/emoji_reactions/emoji_reactions.js","webpack:///./src/components/emoji_reactions/emoji_reactions.vue?89e7","webpack:///./src/components/status/status.js","webpack:///./src/components/status/status.vue?0825","webpack:///./src/components/user_card/user_card.vue","webpack:///./src/components/moderation_tools/moderation_tools.vue","webpack:///./src/components/dialog_modal/dialog_modal.vue","webpack:///./src/components/dialog_modal/dialog_modal.js","webpack:///./src/components/dialog_modal/dialog_modal.vue?bfc4","webpack:///./src/components/moderation_tools/moderation_tools.js","webpack:///./src/components/moderation_tools/moderation_tools.vue?fef6","webpack:///./src/components/account_actions/account_actions.vue","webpack:///./src/components/account_actions/account_actions.js","webpack:///./src/components/account_actions/account_actions.vue?870d","webpack:///./src/components/user_card/user_card.js","webpack:///./src/components/user_card/user_card.vue?8f79","webpack:///./src/services/theme_data/pleromafe.js","webpack:///./src/services/locale/locale.service.js","webpack:///./src/services/style_setter/style_setter.js","webpack:///./src/services/promise_interval/promise_interval.js","webpack:///./src/components/status_content/status_content.vue","webpack:///./src/components/poll/poll.vue","webpack:///./src/components/poll/poll.js","webpack:///./src/components/poll/poll.vue?3ce0","webpack:///./src/components/status_body/status_body.vue","webpack:///./src/components/mention_link/mention_link.js","webpack:///./src/components/mfm_content/mfm_content.jsx","webpack:///./src/components/status_body/status_body.js","webpack:///./src/components/status_body/status_body.vue?c2f1","webpack:///./src/components/status_content/status_content.js","webpack:///./src/components/status_content/status_content.vue?12ff","webpack:///./src/services/date_utils/date_utils.js","webpack:///./src/components/still-image/still-image.vue","webpack:///./src/components/still-image/still-image.js","webpack:///./src/components/still-image/still-image.vue?a7d9","webpack:///./src/components/checkbox/checkbox.vue","webpack:///./src/components/checkbox/checkbox.vue?0c6b","webpack:///./src/components/select/select.vue","webpack:///./src/components/select/select.js","webpack:///./src/components/select/select.vue?5aac","webpack:///./src/components/basic_user_card/basic_user_card.vue","webpack:///./src/components/basic_user_card/basic_user_card.js","webpack:///./src/components/basic_user_card/basic_user_card.vue?bd50","webpack:///./src/services/theme_data/theme_data.service.js","webpack:///./src/components/post_status_form/post_status_form.vue","webpack:///./src/components/media_upload/media_upload.js","webpack:///./src/components/media_upload/media_upload.vue?d084","webpack:///./src/components/media_upload/media_upload.vue","webpack:///./src/components/poll/poll_form.vue","webpack:///./src/components/poll/poll_form.js","webpack:///./src/components/poll/poll_form.vue?6c37","webpack:///./src/components/post_status_form/post_status_form.js","webpack:///./src/components/post_status_form/post_status_form.vue?da99","webpack:///./src/components/attachment/attachment.vue","webpack:///./src/components/attachment/attachment.js","webpack:///./src/components/attachment/attachment.vue?0cf8","webpack:///./src/components/timeago/timeago.vue","webpack:///./src/components/timeago/timeago.vue?882d","webpack:///./src/components/list/list.vue","webpack:///./src/components/list/list.vue?42b1","webpack:///./src/i18n/messages.js","webpack:///./src/components/tab_switcher/tab_switcher.jsx","webpack:///./src/services/status_poster/status_poster.service.js","webpack:///./src/components/notifications/notifications.vue","webpack:///./src/components/notification/notification.vue","webpack:///./src/components/notification/notification.js","webpack:///./src/components/notification/notification.vue?6df6","webpack:///./src/components/notifications/notification_filters.vue","webpack:///./src/components/notifications/notification_filters.vue?712d","webpack:///./src/components/notifications/notifications.js","webpack:///./src/components/notifications/notifications.vue?9c64","webpack:///./src/components/gallery/gallery.vue","webpack:///./src/components/gallery/gallery.js","webpack:///./src/components/gallery/gallery.vue?6d5a","webpack:///./src/components/mention_link/mention_link.vue","webpack:///./src/components/mention_link/mention_link.vue?b783","webpack:///./src/components/mentions_line/mentions_line.vue","webpack:///./src/components/mentions_line/mentions_line.js","webpack:///./src/components/mentions_line/mentions_line.vue?d40c","webpack:///./src/services/file_size_format/file_size_format.js","webpack:///./src/services/notifications_fetcher/notifications_fetcher.service.js","webpack:///./src/services/favicon_service/favicon_service.js","webpack:///./src/components/progress_button/progress_button.vue","webpack:///./src/components/progress_button/progress_button.vue?97a4","webpack:///./src/modules/config.js","webpack:///./src/services/status_parser/status_parser.js","webpack:///./src/services/desktop_notification_utils/desktop_notification_utils.js","webpack:///./src/services/offset_finder/offset_finder.service.js","webpack:///./src/services/export_import/export_import.js","webpack:///./src/components/flash/flash.vue","webpack:///./src/services/ruffle_service/ruffle_service.js","webpack:///./src/components/flash/flash.js","webpack:///./src/components/flash/flash.vue?1944","webpack:///./src/services/follow_manipulate/follow_manipulate.js","webpack:///./src/components/follow_button/follow_button.js","webpack:///./src/components/follow_button/follow_button.vue?49fe","webpack:///./src/components/follow_button/follow_button.vue","webpack:///./src/components/video_attachment/video_attachment.js","webpack:///./src/components/video_attachment/video_attachment.vue?354d","webpack:///./src/components/video_attachment/video_attachment.vue","webpack:///./src/components/link-preview/link-preview.vue","webpack:///./src/components/link-preview/link-preview.js","webpack:///./src/components/link-preview/link-preview.vue?b794","webpack:///./src/components/remote_follow/remote_follow.vue","webpack:///./src/components/remote_follow/remote_follow.js","webpack:///./src/components/remote_follow/remote_follow.vue?c74d","webpack:///./src/components/avatar_list/avatar_list.vue","webpack:///./src/components/avatar_list/avatar_list.js","webpack:///./src/components/avatar_list/avatar_list.vue?046a","webpack:///./src/components/emoji_input/suggestor.js","webpack:///./src/components/interface_language_switcher/interface_language_switcher.vue","webpack:///./src/components/interface_language_switcher/interface_language_switcher.vue?4062","webpack:///./src/components/scope_selector/scope_selector.vue","webpack:///./src/components/scope_selector/scope_selector.js","webpack:///./src/components/scope_selector/scope_selector.vue?a29e","webpack:///./src/modules/serverSideConfig.js","webpack:///./src/services/component_utils/component_utils.js","webpack:///./src/components/emoji_input/emoji_input.vue","webpack:///./src/services/completion/completion.js","webpack:///./src/components/emoji_picker/emoji_picker.vue","webpack:///./src/components/emoji_picker/emoji_picker.js","webpack:///./src/components/emoji_picker/emoji_picker.vue?c405","webpack:///./src/components/emoji_input/emoji_input.js","webpack:///./src/components/emoji_input/emoji_input.vue?23b7","webpack:///./src/assets/nsfw.png","webpack:///./src/i18n/en.json","webpack:///./src/components/login_form/login_form.vue?111a","webpack:///./src/components/media_upload/media_upload.vue?84d2","webpack:///./src/components/scope_selector/scope_selector.vue?757e","webpack:///./src/components/checkbox/checkbox.vue?0dde","webpack:///./src/components/emoji_picker/emoji_picker.scss?9675","webpack:///./src/components/emoji_input/emoji_input.vue?4146","webpack:///./src/components/select/select.vue?b0ab","webpack:///./src/components/poll/poll_form.vue?0f5d","webpack:///./src/components/still-image/still-image.vue?2909","webpack:///./src/components/flash/flash.vue?c9e5","webpack:///./src/components/attachment/attachment.scss?c40a","webpack:///./src/components/gallery/gallery.vue?3caa","webpack:///./src/components/user_avatar/user_avatar.vue?dd13","webpack:///./src/components/mention_link/mention_link.scss?a876","webpack:///./src/components/mentions_line/mentions_line.scss?57df","webpack:///./src/components/hashtag_link/hashtag_link.scss?6cb8","webpack:///./src/components/poll/poll.vue?cc4e","webpack:///./src/components/status_body/status_body.scss?962f","webpack:///./src/components/link-preview/link-preview.vue?cabf","webpack:///./src/components/status_content/status_content.vue?bc1c","webpack:///./src/components/post_status_form/post_status_form.vue?2849","webpack:///./src/components/remote_follow/remote_follow.vue?18f9","webpack:///./src/components/dialog_modal/dialog_modal.vue?6ce2","webpack:///./src/components/popover/popover.vue?c6ad","webpack:///./src/components/moderation_tools/moderation_tools.vue?3620","webpack:///./src/components/account_actions/account_actions.vue?8a6d","webpack:///./src/components/user_card/user_card.scss?64aa","webpack:///./src/components/user_panel/user_panel.vue?29ef","webpack:///./src/components/nav_panel/nav_panel.vue?d57b","webpack:///./src/components/features_panel/features_panel.vue?194b","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue?089d","webpack:///./src/components/shout_panel/shout_panel.vue?de26","webpack:///./src/components/modal/modal.vue?1080","webpack:///./src/components/panel_loading/panel_loading.vue?f355","webpack:///./src/components/async_component_error/async_component_error.vue?a2f0","webpack:///./src/components/settings_modal/settings_modal.scss?db40","webpack:///./src/components/media_modal/media_modal.vue?b6f2","webpack:///./src/components/side_drawer/side_drawer.vue?5b8c","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.vue?002e","webpack:///./src/components/reply_button/reply_button.vue?0c63","webpack:///./src/components/favorite_button/favorite_button.vue?a96a","webpack:///./src/components/react_button/react_button.vue?2715","webpack:///./src/components/retweet_button/retweet_button.vue?e9ee","webpack:///./src/components/extra_buttons/extra_buttons.vue?23e8","webpack:///./src/components/avatar_list/avatar_list.vue?d80a","webpack:///./src/components/status_popover/status_popover.vue?0634","webpack:///./src/components/user_list_popover/user_list_popover.vue?4785","webpack:///./src/components/emoji_reactions/emoji_reactions.vue?492e","webpack:///./src/components/status/status.scss?b11c","webpack:///./src/components/notification/notification.scss?b266","webpack:///./src/components/notifications/notification_filters.vue?52ff","webpack:///./src/components/notifications/notifications.scss?5aa9","webpack:///./src/components/mobile_nav/mobile_nav.vue?3d7f","webpack:///./src/components/search_bar/search_bar.vue?5a40","webpack:///./src/components/desktop_nav/desktop_nav.scss?62ee","webpack:///./src/components/list/list.vue?dfc3","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue?c333","webpack:///./src/components/post_status_modal/post_status_modal.vue?17bc","webpack:///./src/components/global_notice_list/global_notice_list.vue?8dbf","webpack:///./src/App.scss?eeaf","webpack:///./src/components/thread_tree/thread_tree.vue?acd6","webpack:///./src/components/conversation/conversation.vue?7fec","webpack:///./src/components/timeline_menu/timeline_menu.vue?733c","webpack:///./src/components/timeline/timeline_quick_settings.vue?3988","webpack:///./src/components/timeline/timeline.scss?7ad3","webpack:///./src/components/chat_title/chat_title.vue?c884","webpack:///./src/components/chat_list_item/chat_list_item.vue?f11c","webpack:///./src/components/basic_user_card/basic_user_card.vue?b898","webpack:///./src/components/chat_new/chat_new.vue?536c","webpack:///./src/components/chat_list/chat_list.vue?336c","webpack:///./src/components/chat_message/chat_message.vue?2759","webpack:///./src/components/chat/chat.vue?8ca4","webpack:///./src/components/follow_card/follow_card.vue?180e","webpack:///./src/components/user_profile/user_profile.vue?fc91","webpack:///./src/components/search/search.vue?2a52","webpack:///./src/components/registration/registration.vue?d0e0","webpack:///./src/components/password_reset/password_reset.vue?9146","webpack:///./src/components/follow_request_card/follow_request_card.vue?b6a6","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue?5d2e","webpack:///./src/components/staff_panel/staff_panel.vue?831d","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue?0dbc","webpack:///./src/lib/event_target_polyfill.js","webpack:///./src/modules/interface.js","webpack:///./src/modules/instance.js","webpack:///./src/modules/statuses.js","webpack:///./src/services/timeline_fetcher/timeline_fetcher.service.js","webpack:///./src/services/follow_request_fetcher/follow_request_fetcher.service.js","webpack:///./src/services/backend_interactor_service/backend_interactor_service.js","webpack:///./src/services/window_utils/window_utils.js","webpack:///./src/services/new_api/oauth.js","webpack:///./src/services/push/push.js","webpack:///./src/modules/users.js","webpack:///./src/services/chat_utils/chat_utils.js","webpack:///./src/modules/api.js","webpack:///./src/modules/shout.js","webpack:///./src/modules/oauth.js","webpack:///./src/modules/auth_flow.js","webpack:///./src/modules/media_viewer.js","webpack:///./src/modules/oauth_tokens.js","webpack:///./src/modules/reports.js","webpack:///./src/modules/polls.js","webpack:///./src/modules/postStatus.js","webpack:///./src/services/chat_service/chat_service.js","webpack:///./src/modules/chats.js","webpack:///./src/lib/persisted_state.js","webpack:///./src/lib/push_notifications_plugin.js","webpack:///./src/App.vue","webpack:///./src/components/user_panel/user_panel.vue","webpack:///./src/components/login_form/login_form.vue","webpack:///./src/components/login_form/login_form.js","webpack:///./src/components/login_form/login_form.vue?f908","webpack:///./src/components/mfa_form/recovery_form.vue","webpack:///./src/services/new_api/mfa.js","webpack:///./src/components/mfa_form/recovery_form.js","webpack:///./src/components/mfa_form/recovery_form.vue?2543","webpack:///./src/components/mfa_form/totp_form.vue","webpack:///./src/components/mfa_form/totp_form.js","webpack:///./src/components/mfa_form/totp_form.vue?64d5","webpack:///./src/components/auth_form/auth_form.js","webpack:///./src/components/user_panel/user_panel.js","webpack:///./src/components/user_panel/user_panel.vue?ea63","webpack:///./src/components/nav_panel/nav_panel.vue","webpack:///./src/components/timeline_menu/timeline_menu_content.js","webpack:///./src/components/timeline_menu/timeline_menu_content.vue?c7d7","webpack:///./src/components/timeline_menu/timeline_menu_content.vue","webpack:///./src/components/nav_panel/nav_panel.js","webpack:///./src/components/nav_panel/nav_panel.vue?7f8f","webpack:///./src/components/instance_specific_panel/instance_specific_panel.vue","webpack:///./src/components/instance_specific_panel/instance_specific_panel.js","webpack:///./src/components/instance_specific_panel/instance_specific_panel.vue?cc9d","webpack:///./src/components/features_panel/features_panel.vue","webpack:///./src/components/features_panel/features_panel.js","webpack:///./src/components/features_panel/features_panel.vue?bedc","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.js","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue?eaa9","webpack:///./src/components/shout_panel/shout_panel.vue","webpack:///./src/components/shout_panel/shout_panel.js","webpack:///./src/components/shout_panel/shout_panel.vue?cee7","webpack:///./src/components/settings_modal/settings_modal.vue","webpack:///./src/components/modal/modal.vue","webpack:///./src/components/modal/modal.vue?1e91","webpack:///./src/components/panel_loading/panel_loading.vue","webpack:///./src/components/panel_loading/panel_loading.vue?239d","webpack:///./src/components/async_component_error/async_component_error.vue","webpack:///./src/components/async_component_error/async_component_error.vue?ebf7","webpack:///./src/services/resettable_async_component.js","webpack:///./src/components/settings_modal/settings_modal.js","webpack:///./src/components/settings_modal/settings_modal.vue?3d91","webpack:///./src/components/media_modal/media_modal.vue","webpack:///./src/components/pinch_zoom/pinch_zoom.js","webpack:///./src/components/pinch_zoom/pinch_zoom.vue?54a1","webpack:///./src/components/pinch_zoom/pinch_zoom.vue","webpack:///./src/services/gesture_service/gesture_service.js","webpack:///./src/components/swipe_click/swipe_click.js","webpack:///./src/components/swipe_click/swipe_click.vue?9d87","webpack:///./src/components/swipe_click/swipe_click.vue","webpack:///./src/components/media_modal/media_modal.js","webpack:///./src/components/media_modal/media_modal.vue?5a55","webpack:///./src/components/side_drawer/side_drawer.vue","webpack:///./src/components/side_drawer/side_drawer.js","webpack:///./src/components/side_drawer/side_drawer.vue?ab18","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.js","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.vue?7726","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.vue","webpack:///./src/components/mobile_nav/mobile_nav.vue","webpack:///./src/components/mobile_nav/mobile_nav.js","webpack:///./src/components/mobile_nav/mobile_nav.vue?8378","webpack:///./src/components/desktop_nav/desktop_nav.vue","webpack:///./src/components/search_bar/search_bar.js","webpack:///./src/components/search_bar/search_bar.vue?c288","webpack:///./src/components/search_bar/search_bar.vue","webpack:///./src/components/desktop_nav/desktop_nav.js","webpack:///./src/components/desktop_nav/desktop_nav.vue?595f","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue","webpack:///./src/components/user_reporting_modal/user_reporting_modal.js","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue?5d89","webpack:///./src/components/post_status_modal/post_status_modal.vue","webpack:///./src/components/post_status_modal/post_status_modal.js","webpack:///./src/components/post_status_modal/post_status_modal.vue?c824","webpack:///./src/components/global_notice_list/global_notice_list.vue","webpack:///./src/components/global_notice_list/global_notice_list.js","webpack:///./src/components/global_notice_list/global_notice_list.vue?fb63","webpack:///./src/App.js","webpack:///./src/App.vue?7993","webpack:///./src/components/timeline/timeline.vue","webpack:///./src/components/conversation/conversation.vue","webpack:///./src/components/thread_tree/thread_tree.vue","webpack:///./src/components/thread_tree/thread_tree.js","webpack:///./src/components/thread_tree/thread_tree.vue?b0db","webpack:///./src/components/conversation/conversation.js","webpack:///./src/components/conversation/conversation.vue?3296","webpack:///./src/components/timeline_menu/timeline_menu.vue","webpack:///./src/components/timeline_menu/timeline_menu.js","webpack:///./src/components/timeline_menu/timeline_menu.vue?de29","webpack:///./src/components/timeline/timeline_quick_settings.vue","webpack:///./src/components/timeline/timeline_quick_settings.js","webpack:///./src/components/timeline/timeline_quick_settings.vue?0f6c","webpack:///./src/components/timeline/timeline.js","webpack:///./src/components/timeline/timeline.vue?9ad1","webpack:///./src/components/public_timeline/public_timeline.js","webpack:///./src/components/public_timeline/public_timeline.vue?842c","webpack:///./src/components/public_timeline/public_timeline.vue","webpack:///./src/components/public_and_external_timeline/public_and_external_timeline.js","webpack:///./src/components/public_and_external_timeline/public_and_external_timeline.vue?cee7","webpack:///./src/components/public_and_external_timeline/public_and_external_timeline.vue","webpack:///./src/components/friends_timeline/friends_timeline.js","webpack:///./src/components/friends_timeline/friends_timeline.vue?56f4","webpack:///./src/components/friends_timeline/friends_timeline.vue","webpack:///./src/components/tag_timeline/tag_timeline.js","webpack:///./src/components/tag_timeline/tag_timeline.vue?8a33","webpack:///./src/components/tag_timeline/tag_timeline.vue","webpack:///./src/components/bookmark_timeline/bookmark_timeline.js","webpack:///./src/components/bookmark_timeline/bookmark_timeline.vue?dc49","webpack:///./src/components/bookmark_timeline/bookmark_timeline.vue","webpack:///./src/components/conversation-page/conversation-page.js","webpack:///./src/components/conversation-page/conversation-page.vue?a77d","webpack:///./src/components/conversation-page/conversation-page.vue","webpack:///./src/components/interactions/interactions.vue","webpack:///./src/components/interactions/interactions.js","webpack:///./src/components/interactions/interactions.vue?3506","webpack:///./src/components/dm_timeline/dm_timeline.js","webpack:///./src/components/dm_timeline/dm_timeline.vue?b9c3","webpack:///./src/components/dm_timeline/dm_timeline.vue","webpack:///./src/components/chat_list/chat_list.vue","webpack:///./src/components/chat_list_item/chat_list_item.vue","webpack:///./src/components/chat_title/chat_title.js","webpack:///./src/components/chat_title/chat_title.vue?67d1","webpack:///./src/components/chat_title/chat_title.vue","webpack:///./src/components/chat_list_item/chat_list_item.js","webpack:///./src/components/chat_list_item/chat_list_item.vue?af05","webpack:///./src/components/chat_new/chat_new.vue","webpack:///./src/components/chat_new/chat_new.js","webpack:///./src/components/chat_new/chat_new.vue?9c2e","webpack:///./src/components/chat_list/chat_list.js","webpack:///./src/components/chat_list/chat_list.vue?fbc3","webpack:///./src/components/chat/chat.vue","webpack:///./src/components/chat_message/chat_message.vue","webpack:///./src/components/chat_message_date/chat_message_date.vue","webpack:///./src/components/chat_message_date/chat_message_date.vue?36ca","webpack:///./src/components/chat_message/chat_message.js","webpack:///./src/components/chat_message/chat_message.vue?5926","webpack:///./src/components/chat/chat_layout_utils.js","webpack:///./src/components/chat/chat.js","webpack:///./src/components/chat/chat.vue?b039","webpack:///./src/components/user_profile/user_profile.vue","webpack:///./src/components/follow_card/follow_card.vue","webpack:///./src/components/follow_card/follow_card.js","webpack:///./src/components/follow_card/follow_card.vue?2d42","webpack:///./src/hocs/with_load_more/with_load_more.jsx","webpack:///./src/components/user_profile/user_profile.js","webpack:///./src/components/user_profile/user_profile.vue?21f3","webpack:///./src/components/search/search.vue","webpack:///./src/components/search/search.js","webpack:///./src/components/search/search.vue?2a31","webpack:///./src/components/registration/registration.vue","webpack:///./src/components/registration/registration.js","webpack:///./src/components/registration/registration.vue?a608","webpack:///./src/components/password_reset/password_reset.vue","webpack:///./src/services/new_api/password_reset.js","webpack:///./src/components/password_reset/password_reset.js","webpack:///./src/components/password_reset/password_reset.vue?f2e7","webpack:///./src/components/follow_requests/follow_requests.vue","webpack:///./src/components/follow_request_card/follow_request_card.vue","webpack:///./src/components/follow_request_card/follow_request_card.js","webpack:///./src/components/follow_request_card/follow_request_card.vue?eec7","webpack:///./src/components/follow_requests/follow_requests.js","webpack:///./src/components/follow_requests/follow_requests.vue?18ee","webpack:///./src/components/oauth_callback/oauth_callback.js","webpack:///./src/components/oauth_callback/oauth_callback.vue?7dba","webpack:///./src/components/oauth_callback/oauth_callback.vue","webpack:///./src/components/who_to_follow/who_to_follow.vue","webpack:///./src/components/who_to_follow/who_to_follow.js","webpack:///./src/components/who_to_follow/who_to_follow.vue?42e6","webpack:///./src/components/about/about.vue","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.js","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue?1a66","webpack:///./src/components/staff_panel/staff_panel.vue","webpack:///./src/components/staff_panel/staff_panel.js","webpack:///./src/components/staff_panel/staff_panel.vue?fa50","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.js","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue?2867","webpack:///./src/components/about/about.js","webpack:///./src/components/about/about.vue?596d","webpack:///./src/components/remote_user_resolver/remote_user_resolver.vue","webpack:///./src/components/remote_user_resolver/remote_user_resolver.js","webpack:///./src/components/remote_user_resolver/remote_user_resolver.vue?ec00","webpack:///./src/directives/body_scroll_lock.js","webpack:///./src/boot/routes.js","webpack:///./src/boot/after_store.js","webpack:///./src/main.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","0","exports","module","l","e","promises","Promise","resolve","reject","href","fullhref","p","existingLinkTags","document","getElementsByTagName","dataHref","tag","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","jsonpScriptSrc","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","head","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","parseUser","output","masto","mastoShort","id","String","_original","screen_name","acct","statusnet_profile_url","url","emoji","emojis","escape","display_name","name_html","name_unescaped","description","note","description_html","fields","fields_html","map","field","fields_text","unescape","replace","profile_image_url","avatar","profile_image_url_original","cover_photo","header","friends_count","following_count","bot","pleroma","relationship","background_image","favicon","token","chat_token","allow_following_move","hide_follows","hide_followers","hide_follows_count","hide_followers_count","rights","moderator","is_moderator","admin","is_admin","role","source","default_scope","privacy","no_rich_text","show_role","discoverable","is_local","includes","delete_others_notice","muting","muted","blocking","statusnet_blocking","followed_by","follows_you","following","created_at","Date","locked","followers_count","statuses_count","follow_request_count","tags","deactivated","is_active","notification_settings","unread_chat_count","screen_name_ui","parts","split","unicodeDomain","punycode","toUnicode","join","parseAttachment","mimetype","mime_type","meta","large_thumb_url","preview_url","parseStatus","favorited","favourited","fave_num","favourites_count","repeated","reblogged","repeat_num","reblogs_count","bookmarked","reblog","nsfw","sensitive","raw_html","content","text","summary","spoiler_text","statusnet_conversation_id","conversation_id","local","in_reply_to_screen_name","in_reply_to_account_acct","thread_muted","emoji_reactions","parent_visible","akkoma","mediaType","mfm_content","in_reply_to_status_id","in_reply_to_id","in_reply_to_user_id","in_reply_to_account_id","replies_count","retweeted_status","summary_raw_html","external_url","poll","options","title_html","title","pinned","status","is_post_verb","uri","match","qvitter_delete_notice","activity_type","qvitterStatusType","isNsfw","statusnet_html","summary_html","visibility","card","user","account","attentions","mentions","attachments","media_attachments","retweetedStatus","favoritedBy","rebloggedBy","parseNotification","seen","is_seen","isStatusNotification","action","from_profile","emoji_url","parsedNotice","notice","ntype","Boolean","favorited_status","parseInt","parseLinkHeaderPagination","linkHeader","opts","flakeId","parsedLinkHeader","parseLinkHeader","maxId","next","max_id","minId","prev","min_id","parseChat","chat","unread","lastMessage","parseChatMessage","last_message","updated_at","isNormalized","chat_id","attachment","pending","idempotency_key","StatusCodeError","statusCode","body","response","this","JSON","stringify","captureStackTrace","constructor","RegistrationError","errors","parse","errorContents","ap_id","username","entries","reduce","errs","k","acc","PERMISSION_GROUP_URL","screenName","right","MASTODON_DISMISS_NOTIFICATION_URL","MASTODON_FAVORITE_URL","MASTODON_UNFAVORITE_URL","MASTODON_RETWEET_URL","MASTODON_UNRETWEET_URL","MASTODON_USER_TIMELINE_URL","MASTODON_TAG_TIMELINE_URL","MASTODON_MUTE_USER_URL","MASTODON_UNMUTE_USER_URL","MASTODON_SUBSCRIBE_USER","MASTODON_UNSUBSCRIBE_USER","MASTODON_BOOKMARK_STATUS_URL","MASTODON_UNBOOKMARK_STATUS_URL","MASTODON_STATUS_FAVORITEDBY_URL","MASTODON_STATUS_REBLOGGEDBY_URL","MASTODON_PIN_OWN_STATUS","MASTODON_UNPIN_OWN_STATUS","MASTODON_MUTE_CONVERSATION","MASTODON_UNMUTE_CONVERSATION","PLEROMA_EMOJI_REACTIONS_URL","PLEROMA_EMOJI_REACT_URL","PLEROMA_EMOJI_UNREACT_URL","PLEROMA_CHAT_MESSAGES_URL","PLEROMA_CHAT_READ_URL","PLEROMA_DELETE_CHAT_MESSAGE_URL","chatId","messageId","oldfetch","fetch","fullUrl","credentials","promisedRequest","method","params","payload","headers","encodeURIComponent","authHeaders","json","ok","accessToken","fetchFriends","sinceId","limit","MASTODON_FOLLOWING_URL","args","filter","_","getMastodonSocketURI","stream","access_token","val","MASTODON_STREAMING","MASTODON_STREAMING_EVENTS","Set","PLEROMA_STREAMING_EVENTS","ProcessedWS","preprocessor","handleMastoWS","eventTarget","EventTarget","socket","WebSocket","proxy","original","eventName","processor","a","addEventListener","eventData","dispatchEvent","CustomEvent","detail","wsEvent","debug","close","getState","readyState","parsedEvent","has","warn","notification","chatUpdate","WSConnectionStatus","freeze","apiService","verifyCredentials","fetchTimeline","timeline","since","until","userId","withMuted","replyVisibility","isNotifications","public","friends","dms","notifications","media","favorites","bookmarks","queryString","param","statusText","pagination","fetchPinnedStatuses","fetchConversation","urlContext","MASTODON_STATUS_CONTEXT_URL","ancestors","descendants","fetchStatus","MASTODON_STATUS_URL","exportFriends","more","users","fetchFollowers","MASTODON_FOLLOWERS_URL","followUser","MASTODON_FOLLOW_URL","form","reblogs","unfollowUser","MASTODON_UNFOLLOW_URL","pinOwnStatus","unpinOwnStatus","muteConversation","unmuteConversation","blockUser","MASTODON_BLOCK_USER_URL","unblockUser","MASTODON_UNBLOCK_USER_URL","fetchUser","fetchUserRelationship","favorite","unfavorite","retweet","unretweet","bookmarkStatus","unbookmarkStatus","postStatus","spoilerText","mediaIds","inReplyToStatusId","contentType","preview","idempotencyKey","FormData","pollOptions","append","forEach","some","option","normalizedPoll","expires_in","expiresIn","multiple","keys","postHeaders","deleteStatus","MASTODON_DELETE_URL","uploadMedia","formData","setMediaDescription","fetchMutes","muteUser","unmuteUser","subscribeUser","unsubscribeUser","fetchBlocks","fetchOAuthTokens","revokeOAuthToken","tagUser","nicknames","untagUser","deleteUser","addRight","deleteRight","activateUser","nickname","deactivateUser","register","rest","locale","agreement","getCaptcha","resp","updateProfileImages","avatarName","banner","background","updateProfile","importMutes","file","importBlocks","importFollows","deleteAccount","password","changeEmail","email","changePassword","newPassword","newPasswordConfirmation","settingsMFA","mfaDisableOTP","generateMfaBackupCodes","mfaSetupOTP","mfaConfirmOTP","fetchFollowRequests","approveUser","MASTODON_APPROVE_USER_URL","denyUser","MASTODON_DENY_USER_URL","suggestions","markNotificationsAsSeen","single","dismissNotification","vote","pollId","choices","fetchPoll","fetchFavoritedByUsers","fetchRebloggedByUsers","fetchMascot","updateMascot","mascot","fetchEmojiReactions","reactions","accounts","reactWithEmoji","unreactWithEmoji","reportUser","statusIds","comment","forward","updateNotificationSettings","settings","search2","q","offset","u","statuses","searchUsers","query","fetchKnownDomains","fetchDomainMutes","muteDomain","domain","unmuteDomain","chats","getOrCreateChat","accountId","chatMessages","sendChatMessage","mediaId","readChat","lastReadId","deleteChatMessage","rgb2hex","g","b","Math","ceil","toString","srgbToLinear","srgb","bit","pow","c2linear","relativeLuminance","getContrastRatio","la","lb","getContrastRatioLayers","layers","bedrock","alphaBlendLayers","alphaBlend","fg","fga","bg","color","opacity","hex2rgb","hex","exec","mixrgb","rgba2css","rgba","floor","getTextColor","preserve","base","assign","invertLightness","rgb","contrastRatio","getCssColor","input","startsWith","library","add","faRobot","UserAvatar","props","showPlaceholder","defaultAvatar","$store","state","instance","server","components","StillImage","methods","imgSrc","imageLoadError","__exports__","class","compact","betterShadow","alt","image-load-error","icon","isExternal","generateProfileLink","restrictedNicknames","complicated","Popover","trigger","placement","boundTo","boundToSelector","margin","popoverClass","removePadding","hidden","styles","oldSize","width","height","containerBoundingClientRect","$el","closest","offsetParent","getBoundingClientRect","updateStyles","anchorEl","$refs","children","anchorWidth","offsetWidth","clientWidth","anchorHeight","offsetHeight","clientHeight","screenBox","origin","left","top","parentBounds","x","y","xBounds","min","max","innerWidth","yBounds","bottom","innerHeight","horizOffset","usingTop","vPadding","anchorStyle","getComputedStyle","parseFloat","paddingTop","paddingBottom","yOffset","translateY","xOffset","translateX","transform","round","showPopover","wasHidden","$nextTick","$emit","hidePopover","onMouseenter","onMouseleave","onClick","onClickOutside","contains","updated","created","unmounted","removeEventListener","ref","style","getTagName","getAttrs","innertag","substring","RegExp","trim","attrs","Array","from","matchAll","v","fromEntries","processTextForEmoji","buffer","textBuffer","char","found","shortcode","HashtagLink","required","default","link","generateTagLink","$router","open","MentionsLine","html","handleLinks","greentext","render","preProcessPerLine","newHtml","currentMentions","lastSpacing","lastTags","writtenMentions","invisibleMentions","writtenTags","mentionIndex","tagsIndex","encounteredTextReverse","pass1","emptyElements","levels","tagBuffer","getCurrentBuffer","flushText","handleSelfClosing","handleOpen","curBuf","newLevel","handleClose","currentTag","pop","tagFull","tagName","convertHtmlToTree","processItem","item","index","array","what","emptyText","isArray","opener","closer","Tag","mentionsLinePadding","linkData","getLinkData","notifying","MENTIONS_LIMIT","renderMention","updatedLink","updatedChildren","child","renderLink","pass2","reverse","processItemReverse","renderHashtag","newChildren","textContent","stripTags","greentextHandle","blockElements","linebreakElements","visualLineElements","values","nonEmptyElements","elem","allElements","level","flush","handleBr","unshift","convertHtmlToLines","string","every","cleanedString","notificationsFromStore","store","visibleTypes","rootState","config","notificationVisibility","likes","repeats","follows","followRequest","moves","emojiReactions","polls","statusNotifications","isValidNotification","sortById","seqA","Number","seqB","isSeqA","isNaN","isSeqB","maybeShowNotification","muteWordHits","rootGetters","mergedConfig","muteWords","isMutedNotification","notificationObject","prepareNotificationObject","i18n","showDesktopNotification","filteredNotificationsFromStore","types","sortedNotifications","sort","unseenNotificationsFromStore","i18nString","notifObj","image","highlightStyle","prefs","solidColor","tintColor","tintColor2","customProps","backgroundImage","backgroundPosition","backgroundColor","highlightClass","fileType","fileTypeService","fileMatchesSomeType","faReply","ReplyButton","computed","loggedIn","currentUser","replying","$t","faStar","faStarRegular","FavoriteButton","animated","dispatch","mapGetters","spin","hidePostStats","faSmileBeam","ReactButton","filterWord","addReaction","existingReaction","find","me","focusInput","querySelector","focus","commonEmojis","displayText","replacement","filterWordLowercase","toLowerCase","orderedEmojiList","customEmoji","indexOfFilterWord","indexOf","flat","getters","bound-to","remove-padding","size","placeholder","$event","imageUrl","faRetweet","RetweetButton","faEllipsisH","faBookmark","faBookmarkReg","faEyeSlash","faThumbtack","faShareAlt","faExternalLinkAlt","faFlag","ExtraButtons","confirm","pinStatus","unpinStatus","copyLink","navigator","clipboard","writeText","statusLink","reportStatus","canDelete","ownStatus","canPin","canMute","fixed-width","faCircleNotch","StatusPopover","allStatuses","statusId","Status","defineAsyncComponent","enter","popover-class","is-preview","statusoid","UserListPopover","RichContent","usersCapped","EmojiReactions","showAll","tooManyReactions","showMoreString","accountsForEmoji","reaction","toggleShowAll","reactedWith","fetchEmojiReactionsByIfMissing","reactWith","unreact","emojiOnClick","count","faEnvelope","faGlobe","faLock","faLockOpen","faTimes","faPlusSquare","faEye","faChevronUp","faChevronDown","faAngleDoubleRight","list","camelCase","charAt","toUpperCase","controlledOrUncontrolledSet","obj","camelized","set","uncontrolledName","PostStatusForm","UserCard","AvatarList","Timeago","StatusContent","MentionLink","uncontrolledReplying","unmuted","userExpanded","uncontrolledMediaPlaying","suspendable","headTailLinks","res","toggle","controlledName","$data","$props","showReasonMutedThread","inConversation","repeaterClass","userClass","deleted","repeaterStyle","highlight","userStyle","noHeading","userProfileLink","generateUserProfileLink","replyProfileLink","isReply","findUser","retweeterUser","retweeter","retweeterHtml","retweeterProfileLink","statusFromGlobalRepository","allStatusesObject","rtBotStatus","botStatus","botIndicator","hideBotIndication","rtBotIndicator","mentionsLine","writtenSet","attn","hasMentionsLine","reasonsToMute","userIsMuted","muteBotStatuses","shouldNotMute","relationshipReblog","inProfile","profileUserId","hideMutedUsers","hideMutedPosts","hideMutedThreads","hideFilteredStatuses","hideWordFilteredPosts","hideStatus","isFocused","focused","replyToName","replySubject","decodedSummary","behavior","subjectLineBehavior","startsWithRe","concat","combinedFavsAndRepeatsUsers","combinedUsers","tagObj","browserSupport","cssFilter","isSuspendable","mediaPlaying","inThreadForest","controlledThreadDisplayStatus","threadShowing","visibilityLocalized","$i18n","visibilityIcon","showError","clearError","toggleReplying","controlledOrUncontrolledToggle","gotoOriginal","toggleExpanded","toggleMute","toggleUserExpanded","addMediaPlaying","removeMediaPlaying","setHeadTailLinks","toggleThreadDisplay","controlledToggleThreadDisplay","scrollIfHighlighted","highlightId","rect","scrollBy","watch","num","inlineExpanded","isPreview","to","highlighted","better-shadow","data-tags","user-id","rounded","bordered","time","auto-update","expandable","replies","simpleTree","aria-expanded","dive","status-id","aria-label","flip","user-screen-name","no-heading","controlled-showing-tall","controlledShowingTall","controlled-expanding-subject","controlledExpandingSubject","controlled-showing-long-subject","controlledShowingLongSubject","controlled-toggle-showing-tall","controlledToggleShowingTall","controlled-toggle-expanding-subject","controlledToggleExpandingSubject","controlled-toggle-showing-long-subject","controlledToggleShowingLongSubject","showOtherRepliesAsButton","$tc","numReplies","reply","emojiReactionsOnTimeline","logged-in","reply-to","replied-user","copy-message-scope","subject","DialogModal","darkOverlay","onCancel","Function","ModerationTools","FORCE_NSFW","STRIP_MEDIA","FORCE_UNLISTED","DISABLE_REMOTE_SUBSCRIPTION","DISABLE_ANY_SUBSCRIPTION","SANDBOX","QUARANTINE","showDeleteUserDialog","toggled","tagsSet","hasTagPolicy","tagPolicyAvailable","hasTag","toggleTag","api","backendInteractor","commit","toggleRight","toggleActivationStatus","deleteUserDialog","show","isProfile","$route","isTargetUser","history","back","setToggled","on-cancel","footer","faEllipsisV","AccountActions","ProgressButton","showRepeats","hideRepeats","openChat","recipient_id","mapState","pleromaChatMessagesAvailable","showing_reblogs","faRss","faBell","faSearchPlus","faEdit","followRequestInProgress","classes","isOtherUser","subscribeUrl","serverUrl","URL","protocol","host","dailyAvg","days","userHighlightType","userHighlightColor","visibleRole","validRole","roleTitle","hideFollowsCount","hideFollowersCount","RemoteFollow","FollowButton","Select","refetchRelationship","setProfileView","switcher","linkClicked","openProfileTab","zoomAvatar","mentionUser","replyTo","repliedUser","hideBio","hideUserStats","subscribing","click","disabled","handle-links","LAYERS","undelay","topBar","badge","profileTint","panel","popover","selectedMenu","btn","btnPanel","btnTopBar","inputPanel","inputTopBar","alert","alertPanel","chatBg","chatMessage","DEFAULT_OPACITY","faint","underlay","alertPopup","SLOT_INHERITANCE","depends","priority","wallpaper","mod","brightness","layer","accent","faintLink","postFaintLink","cBlue","cRed","cGreen","cOrange","profileBg","highlightLightText","textColor","highlightPostLink","highlightFaintText","highlightFaintLink","highlightPostFaintLink","highlightText","highlightLink","highlightIcon","popoverLightText","popoverPostLink","popoverFaintText","popoverFaintLink","popoverPostFaintLink","popoverText","popoverLink","popoverIcon","selectedPost","selectedPostFaintText","variant","selectedPostLightText","selectedPostPostLink","selectedPostFaintLink","selectedPostText","selectedPostLink","selectedPostIcon","selectedMenuLightText","selectedMenuFaintText","selectedMenuFaintLink","selectedMenuText","selectedMenuLink","selectedMenuIcon","selectedMenuPopover","selectedMenuPopoverLightText","selectedMenuPopoverFaintText","selectedMenuPopoverFaintLink","selectedMenuPopoverText","selectedMenuPopoverLink","selectedMenuPopoverIcon","lightText","postLink","postGreentext","postCyantext","border","copacity","pollText","inheritsOpacity","fgText","fgLink","panelText","panelFaint","panelLink","topBarText","topBarLink","tab","tabText","tabActiveText","btnText","btnPanelText","btnTopBarText","btnPressed","btnPressedText","btnPressedPanel","btnPressedPanelText","btnPressedTopBar","btnPressedTopBarText","btnToggled","btnToggledText","btnToggledPanelText","btnToggledTopBarText","btnDisabled","btnDisabledText","btnDisabledPanelText","btnDisabledTopBarText","inputText","inputPanelText","inputTopbarText","alertError","alertErrorText","alertErrorPanelText","alertWarning","alertWarningText","alertWarningPanelText","alertSuccess","alertSuccessText","alertSuccessPanelText","alertNeutral","alertNeutralText","alertNeutralPanelText","alertPopupError","alertPopupErrorText","alertPopupWarning","alertPopupWarningText","alertPopupSuccess","alertPopupSuccessText","alertPopupNeutral","alertPopupNeutralText","badgeNotification","badgeNotificationText","chatMessageIncomingBg","chatMessageIncomingText","chatMessageIncomingLink","chatMessageIncomingBorder","chatMessageOutgoingBg","chatMessageOutgoingText","chatMessageOutgoingLink","chatMessageOutgoingBorder","specialLanguageCodes","internalToBrowserLocale","getLanguageName","languageName","ISO6391","getNativeName","browserLocale","toLocaleUpperCase","languages","languagesObject","localeCompare","localeService","internalToBackendLocale","applyTheme","rules","generatePreset","classList","styleEl","styleSheet","sheet","insertRule","radii","colors","shadows","fonts","remove","getCssShadow","usesDropShadow","inset","shad","blur","spread","alpha","getCssShadowFilter","generateColors","themeData","sourceColors","themeEngineVersion","colors2to3","getColors","htmlColors","solid","complete","theme","generateRadii","inputRadii","btnRadius","endsWith","checkbox","avatarAlt","tooltip","generateFonts","interface","family","post","postCode","shadow","buttonInsetFakeBorders","inputInsetFakeBorders","hoverGlow","DEFAULT_SHADOWS","popup","avatarStatus","panelHeader","button","buttonHover","buttonPressed","generateShadows","hackContextDict","cleanInputShadows","shadowDef","inputShadows","shadows2to3","shadowsAcc","slotName","shadowDefs","slotFirstWord","colorSlotName","convert","newShadow","shadowAcc","def","computeDynamicColor","variableSlot","composePreset","getThemes","cache","themes","statePositionAcc","position","getOpacitySlot","getPreset","isV1","setPreset","promiseInterval","promiseCall","interval","stopped","func","stop","loading","pollsObject","basePoll","expiresAt","expires_at","expired","showResults","voted","totalVotesCount","votes_count","containerClass","choiceIndices","entry","isDisabled","noChoice","percentageForOption","resultTitle","activateOption","querySelectorAll","clickedElement","checked","element","optionId","voters_count","scope","keypath","now-threshold","faAt","findUserByUrl","isYou","userName","userNameFullUi","serverName","instanceDomain","userNameFull","highlightType","classnames","shouldBoldenYou","useAtIcon","isRemote","shouldShowFullUserName","conf","mentionLinkDisplay","shouldShowTooltip","mentionLinkShowTooltip","shouldShowAvatar","mentionLinkShowAvatar","shouldShowYous","mentionLinkShowYous","mentionLinkBoldenYou","shouldFadeDomain","mentionLinkFadeDomain","MFM_TAGS","defineComponent","ast","mfm","fnNameList","validTime","h","genEl","xss","speed","direction","alternate","anime","serif","monospace","cursive","fantasy","math","MkSparkle","degrees","deg","random","mention","userScreenName","hashtag","hash","lang","inline","nowrap","static_url","faFile","faMusic","faImage","faLink","faPollH","renderMisskeyMarkdown","postLength","parseReadyDone","localCollapseSubjectDefault","collapseMessageWithSubject","tallStatus","singleLine","longSubject","mightHideBecauseSubject","mightHideBecauseTall","hideSubjectStatus","expandingSubject","hideTallStatus","showingTall","showingMore","attachmentTypes","MFMContent","mounted","onParseReady","handle","toggleShowMore","toggleShowingTall","toggleExpandingSubject","showingLongSubject","toggleShowingLongSubject","fullContent","uncontrolledShowingTall","uncontrolledShowingLongSubject","uncontrolledExpandingSubject","hideAttachments","hideAttachmentsInConv","nsfwClickthrough","attachmentSize","maxThumbnails","Attachment","Poll","Gallery","LinkPreview","StatusBody","setMedia","galleryAttachments","single-line","showing-tall","expanding-subject","showing-long-subject","toggle-showing-tall","toggle-expanding-subject","toggle-showing-long-subject","base-poll","MINUTE","HOUR","DAY","WEEK","MONTH","YEAR","relativeTime","date","nowThreshold","now","abs","relativeTimeShort","stopGifs","appendPx","str","test","onLoad","imageLoadHandler","canvas","naturalWidth","naturalHeight","getContext","drawImage","onError","referrerpolicy","emits","indeterminate","modelValue","$slots","unstyled","BasicUserCard","CURRENT_VERSION","getLayersArray","parent","getLayers","opacitySlot","currentLayer","getDependencies","inheritance","layerDeps","expandSlotValue","getDeps","findInheritedOpacity","visited","depSlot","dependency","getLayerSlot","findInheritedLayer","SLOT_ORDERED","allKeys","whites","grays","blacks","unprocessed","step","node","ai","bi","depsA","depsB","topoSort","aV","bV","OPACITIES","defaultValue","affectedSlots","sourceColor","getColor","targetColor","variable","modifier","sourceOpacity","deps","isTextColor","outputColor","colorFunc","dep","ownOpacitySlot","opacityOverriden","dependencySlot","dependencyColor","faUpload","mediaUpload","uploadCount","uploadReady","uploading","uploadFile","self","uploadlimit","filesize","fileSizeFormatService","fileSizeFormat","allowedsize","filesizeunit","unit","allowedsizeunit","statusPosterService","fileData","decreaseUploadCount","clearFile","multiUpload","files","change","fileInfos","faPlus","pollType","expiryAmount","expiryUnit","pollLimits","maxOptions","max_options","maxLength","max_option_chars","expiryUnits","expiry","convertExpiryFromUnit","max_expiration","minExpirationInCurrentUnit","convertExpiryToUnit","min_expiration","maxExpirationInCurrentUnit","clear","nextOption","addOption","deleteOption","updatePollToParent","amount","DateUtils","expiryAmountChange","maxlength","faBan","pxStringToNumber","MediaUpload","EmojiInput","PollForm","ScopeSelector","Checkbox","updateIdempotencyKey","resize","textarea","textLength","setSelectionRange","autoFocus","scopeCopy","allAttentions","attention","buildMentionsString","copyMessageScope","postContentType","sensitiveByDefault","sensitiveIfSubject","dropFiles","uploadingFiles","posting","newStatus","mediaDescriptions","caret","pollFormVisible","showDropIcon","dropStopTimeout","previewLoading","emojiInputShown","userDefaultScope","showAllScopes","minimalScopesMode","emojiUserSuggestor","suggestor","emojiSuggestor","statusLength","spoilerTextLength","statusLengthLimit","textlimit","hasStatusLengthLimit","charactersLeft","isOverLengthLimit","alwaysShowSubject","alwaysShowSubjectInput","postFormats","safeDMEnabled","safeDM","pollsAvailable","disablePolls","hideScopeNotice","disableNotice","pollContentError","showPreview","disablePreview","emptyStatus","uploadFileLimitReached","fileLimit","mobileLayout","deep","handler","statusChanged","autoPreview","clearStatus","clearPollForm","preserveFocus","el","previewStatus","optimisticPosting","disableSubmit","submitOnEnter","stopPropagation","preventDefault","setAllMediaDescriptions","postingOptions","postHandler","statusPoster","debouncePreviewStatus","closePreview","togglePreview","addMediaFile","fileInfo","delayed","removeMediaFile","editAttachment","newText","shiftUpMediaFile","shiftDnMediaFile","uploadFailed","errString","templateArgs","startedUploadingFiles","finishedUploadingFiles","paste","clipboardData","fileDrop","dataTransfer","fileDragStop","fileDrag","dropEffect","onEmojiInputInput","Element","formRef","bottomRef","bottomBottomPaddingStr","bottomBottomPadding","scrollerRef","topPaddingStr","bottomPaddingStr","vertPadding","oldHeight","currentScroll","scrollY","scrollTop","scrollerHeight","scrollerBottomBorder","heightWithoutPadding","scrollHeight","newHeight","maxHeight","bottomBottomBorder","findOffset","isBottomObstructed","isFormBiggerThanScroller","bottomChangeDelta","totalDelta","selectionStart","targetScroll","scroll","showEmojiPicker","triggerShowPicker","changeVis","togglePollForm","setPoll","pollForm","dismissScopeNotice","ids","handleEmojiInputShow","autocomplete","disableLockWarning","disableSubject","enable-emoji-picker","suggest","emojiPickerPlacement","hide-emoji-button","newline-on-ctrl-enter","enable-sticker-picker","rows","cols","disableScopeSelector","show-all","user-default","original-scope","initial-scope","on-scope-change","postFormat","visible","drop-files","grid","descriptions","set-media","editable","edit-attachment","remove-attachment","shift-up-attachment","shift-dn-attachment","disableSensitivityCheckbox","faVideo","faPlayCircle","faStop","faTrashAlt","faPencilAlt","faAlignRight","localDescription","nsfwImage","nsfwCensorImage","hideNsfwLocal","hideNsfw","preloadImage","img","modalOpen","showHidden","flashLoaded","showDescription","Flash","VideoAttachment","classNames","edit","useContainFit","usePlaceholder","placeholderName","placeholderIconClass","mediaProxyAvailable","isEmpty","oembed","useModal","modalTypes","playVideosInModal","videoTag","newVal","onEdit","openModal","openModalForce","onRemove","onShiftUp","shiftUp","onShiftDn","shiftDn","stopFlash","flash","closePlayer","setFlashLoaded","toggleDescription","toggleHidden","useOneClickNsfw","onImageLoad","hideDescription","image-load-handler","controls","thumb_url","oembedHTML","localeDateString","toLocaleString","refreshRelativeTimeObject","longFormat","autoUpdate","datetime","items","getKey","empty","loaders","ar","ca","cs","de","eo","es","et","eu","fi","fr","ga","he","hu","it","ja","ja_easy","ko","nb","nl","oc","pl","pt","ro","ru","te","uk","zh","zh_Hant","messages","en","require","setLanguage","language","setLocaleMessage","findFirstUsable","slots","findIndex","renderOnlyFocused","onSwitch","activeTab","scrollableTabs","sideTabBar","bodyScrollLock","active","activeIndex","slot","isActive","tabName","settingsModalVisible","settingsModalState","beforeUpdate","clickTab","setTab","Fragment","contents","tabs","classesTab","classesWrapper","label","fullHeight","renderSlot","showImmediately","noIdUpdate","faCheck","faUserPlus","faUser","faSuitcaseRolling","Notification","getUser","usersObject","updater","targetUser","targetUserProfileLink","needMute","faFilter","filters","toggleNotificationFilter","Notifications","NotificationFilters","minimalMode","filterMode","disableTeleport","bottomedOut","seenToDisplayCount","mainClass","unseenNotifications","filteredNotifications","unseenCount","unseenCountTitle","unreadChatCount","layoutType","teleportTarget","wide","mobile","notificationsToDisplay","FaviconService","drawFaviconBadge","clearFaviconBadge","markAsSeen","fetchOlderNotifications","seenCount","notificationsFetcher","fetchAndUpdate","older","notifs","sizes","hidingLong","minimal","audio","attachmentsRemaining","currentRow","attachmentsDimensionalScore","row","tooManyAttachments","onNaturalSizeLoad","rowStyle","itemStyle","total","getAspectRatio","flex","toggleHidingLong","openGallery","onMedia","rowIndex","attachmentIndex","removeAttachment","shift-up","shiftUpAttachment","shift-dn","shiftDnAttachment","hide-description","number","expanded","mentionsComputed","extraMentions","manyMentions","exponent","units","log","toFixed","timelineData","POSITIVE_INFINITY","fetchNotifications","readNotifsIds","update","messageKey","messageArgs","startFetching","boundFetchAndUpdate","favicons","isImageLoaded","initFaviconService","favcanvas","favimg","Image","crossOrigin","favcontext","clearRect","toDataURL","badgeColor","getPropertyValue","fillStyle","beginPath","arc","faviconWidth","PI","fill","progress","defaultState","expertLevel","customTheme","customThemeSource","hideISP","hideInstanceWallpaper","hideShoutbox","padEmoji","loopVideo","loopVideoSilentOnly","streaming","alwaysShowNewPostButton","autohideFloatingPostButton","pauseOnUnfocused","thirdColumnMode","chatMention","webPushNotifications","interfaceLanguage","useStreamingApi","sidebarRight","disableStickyHeaders","showScrollbars","virtualScrolling","conversationDisplay","conversationTreeAdvanced","conversationOtherRepliesButton","conversationTreeFadeAncestors","maxDepthInThread","instanceDefaultProperties","defaultConfig","mutations","setOption","setHighlight","actions","loadSettings","knownKeys","presentKeys","intersection","Cookies","statusSummary","muteWord","desktopNotificationOpts","permission","desktopNotificationSilence","desktopNotification","ignorePadding","offsetTop","offsetLeft","findPadding","topPadding","leftPadding","leftPaddingStr","newExporter","filename","getExportedObject","exportData","stringified","btoa","display","newImporter","onImport","onImportFailure","validator","importData","filePicker","reader","FileReader","parsed","validationResult","readAsText","ruffleInstance","RuffleService","getRuffle","RufflePlayer","polyfills","publicPath","onabort","oncancel","faExclamationTriangle","player","loaded","openPlayer","ruffle","newest","createPlayer","letterbox","container","load","requestFollow","requested","fetchRelationship","attempt","sent","inProgress","isPressed","labelFollowing","unfollow","follow","requestUnfollow","blocksSuspend","hasAudio","onPlaying","setHasAudio","looping","onPaused","srcElement","webkitAudioDecodedByteCount","mozHasAudio","audioTracks","preload","loop","playsinline","imageLoaded","useImage","censored","hideNsfwConfig","useDescription","newImg","provider_name","slicedUsers","emojiCurry","suggestEmoji","usersCurry","suggestUsers","firstChar","noPrefix","substr","aScore","bScore","previousQuery","cancelUserSearch","debounceUserSearch","userSearch","newSuggestions","detailText","for","promptText","controlledLanguage","currentScope","initialScope","showNothing","showPublic","showUnlisted","showPrivate","showDirect","originalScope","shouldShow","showLocal","css","selected","unlisted","private","direct","userDefault","onScopeChange","defaultApi","path","notificationsApi","oldValue","settingsMap","serverSideConfig","confirmServerSideOption","wipeServerSideOption","wipeAllServerSideOptions","setCurrentUser","setServerSideOption","logout","getComponentProps","Component","isFunction","getComponentOptions","addPositionToWords","words","word","start","end","previous","splitByWhitespaceBoundary","currentWord","currentChar","completion","wordAtPosition","pos","wordsWithPosition","replaceWord","toReplace","faBoxOpen","faStickyNote","filterByKeyword","keyword","keywordLowercase","indexOfKeyword","EmojiPicker","enableStickerPicker","activeGroup","showingStickers","groupsScrolledClass","keepOpen","customEmojiBufferSlice","customEmojiTimeout","customEmojiLoadAllConfirmed","StickerPicker","onStickerUploaded","onStickerUploadFailed","onEmoji","insertion","onScroll","updateScrolledClass","scrolledGroup","triggerLoadMore","setShowStickers","scrollTopMax","scrollerBottom","scrollerTop","scrollerMax","loadEmoji","emojisView","group","customEmojiBuffer","filteredEmoji","startEmojiLoad","forceUpdate","bufferSize","bufferPrefilledAll","toggleStickers","activeGroupView","stickersAvailable","stickers","standardEmojis","customEmojis","stickerPickerEnabled","enableEmojiPicker","hideEmojiButton","newlineOnCtrlEnter","blurTimeout","showPicker","temporarilyHideSuggestions","disableClickOutside","showSuggestions","textAtCaret","wordAtCaret","Completion","root","onBlur","onFocus","onPaste","onKeyUp","onKeyDown","onClickInput","onTransition","onInput","newValue","newWord","firstchar","matchedSuggestions","focusPickerInput","pickerEl","picker","pickerInput","scrollIntoView","togglePicker","insert","surroundingSpace","before","after","isSpaceRegex","spaceBefore","spaceAfter","replaceText","suggestion","len","cycleBackward","cycleForward","rootRef","rootBottomBorder","setCaret","ctrlKey","shiftKey","panelBody","offsetBottom","setPlacement","overflowsBottom","ctx","normalize","_normalize","interpolate","_interpolate","named","_named","_list","plural","_plural","EventTargetPolyfill","interfaceMod","settingsModalLoaded","settingsModalTargetTab","currentSaveStateNotice","noticeClearTimeout","notificationPermission","CSS","supports","globalNotices","layoutHeight","lastTimeline","settingsSaved","success","errorData","setNotificationPermission","setLayoutType","closeSettingsModal","togglePeekSettingsModal","openSettingsModal","setSettingsModalTargetTab","pushGlobalNotice","removeGlobalNotice","setLayoutHeight","setLayoutWidth","layoutWidth","setLastTimeline","setPageTitle","clearSettingsModalTargetTab","openSettingsModalTab","newNotice","normalOrMobile","registrationOpen","vapidPublicKey","defaultBanner","hideSitename","loginMethod","logo","logoMargin","logoMask","logoLeft","redirectRootLogin","redirectRootNoLogin","showFeaturesPanel","showInstanceSpecificPanel","customEmojiFetched","emojiFetched","pleromaBackend","knownDomains","shoutAvailable","gopherAvailable","suggestionsEnabled","suggestionsWeb","instanceSpecificPanelContent","tos","backendVersion","frontendVersion","setInstanceOption","setKnownDomains","domains","instanceDefaultConfig","hostname","getStaticEmoji","getCustomEmoji","image_url","setTheme","themeName","themeSource","fetchEmoji","getKnownDomains","emptyTl","statusesObject","faves","visibleStatuses","visibleStatusesObject","newStatusCount","minVisibleId","followers","flushMarker","emptyNotifications","idStore","conversationsObject","timelines","publicAndExternal","mergeOrAdd","arr","oldItem","new","prepareStatus","sortTimeline","addStatusToGlobalStorage","conversationId","updateNotificationsMinMaxId","addNewStatuses","timelineObject","minNew","maxNew","newer","addStatus","resultForCurrentTimeline","addToTimeline","processors","counter","favoriteStatus","deletion","removeStatusFromGlobalStorage","unknown","addNewNotifications","newNotificationSideEffects","visibleNotificationTypes","removeStatus","showNewStatuses","oldTimeline","resetStatuses","emptyState","clearTimeline","excludeUserId","clearNotifications","setFavorited","setFavoritedConfirm","setMutedStatus","setRetweeted","setRetweetedConfirm","setBookmarked","setBookmarkedConfirm","setDeleted","setManyDeleted","condition","setLoading","setNsfw","setNotificationsLoading","setNotificationsSilence","markSingleNotificationAsSeen","dismissNotifications","finder","updateNotification","queueFlush","queueFlushAll","addRepeats","rebloggedByUsers","addFavs","favoritedByUsers","addEmojiReactionsBy","addOwnReaction","reactionIndex","newReaction","removeOwnReaction","updateStatusWithPoll","setVirtualHeight","virtualHeight","deleteStatusById","markStatusesAsDeleted","bookmark","unbookmark","dismissNotificationLocal","fetchFavsAndRepeats","fetchEmojiReactionsBy","fetchFavs","fetchRepeats","search","numStatusesBeforeFetch","ccTimeline","timelineFetcher","followRequestFetcher","requests","backendInteractorService","startFetchingTimeline","startFetchingNotifications","startFetchingFollowRequests","startUserSocket","windowWidth","documentElement","windowHeight","REDIRECT_URI","location","getOrCreateApp","clientId","clientSecret","___pleromafe_commit_hash","toISOString","app","client_id","client_secret","getClientToken","oauth","login","response_type","redirect_uri","dataString","encoded","getToken","getTokenWithCredentials","verifyOTPCode","mfaToken","verifyRecoveryCode","revokeToken","isPushSupported","getOrCreateServiceWorker","runtime","deleteSubscriptionFromBackEnd","registerPushNotifications","isEnabled","registration","base64String","base64","rawData","subscribeOptions","userVisibleOnly","applicationServerKey","repeat","atob","Uint8Array","charCodeAt","pushManager","subscribe","subscribePush","subscription","alerts","favourite","move","responseData","sendSubscriptionToBackEnd","mergeArrayLength","predictedRelationship","relationships","loggingIn","lastLoginName","signUpPending","signUpErrors","newTags","updateRight","newRights","updateActivationStatus","clearCurrentUser","beginLogin","endLogin","saveFriendIds","friendIds","saveFollowerIds","followerIds","clearFriends","clearFollowers","addNewUsers","updateUserRelationship","saveBlockIds","blockIds","addBlockId","blockId","saveMuteIds","muteIds","addMuteId","muteId","mascotUrl","saveDomainMutes","domainMutes","addDomainMute","removeDomainMute","setPinnedToUser","pinnedStatusIds","setUserForStatus","setUserForNotification","setColor","signUpSuccess","signUpFailure","fetchUserIfMissing","blocks","blockUsers","unblockUsers","mutes","hideReblogs","showReblogs","muteUsers","unmuteUsers","muteDomains","unmuteDomains","unregisterPushNotifications","getSubscription","subscribtion","unsubscribe","unsubscribePush","unregister","retweetedUsers","targetUsers","notificationIds","notificationsObject","relevantNotifications","signUp","userInfo","oauthApi","userToken","loginUser","requestPermission","latest","maybeShowChatNotification","currentChatId","account_id","retryMultiplier","fetchers","mastoUserSocket","mastoUserSocketStatus","followRequests","setBackendInteractor","addFetcher","fetcherName","fetcher","removeFetcher","setWsToken","wsToken","setSocket","setFollowRequests","setMastoUserSocketStatus","incrementRetryMultiplier","resetRetryMultiplier","enableMastoSockets","initial","CLOSED","CLOSING","STARTING_INITIAL","STARTING","disableMastoSockets","DISABLED","startMastoUserSocket","ERROR","JOINED","closeEvent","ignoreCodes","stopMastoUserSocket","stopFetchingTimeline","stopFetchingNotifications","stopFetchingFollowRequests","removeFollowRequest","initializeSocket","Socket","connect","disconnectFromSocket","disconnect","shout","channel","joined","setChannel","addMessage","setMessages","setJoined","initializeShout","joinPush","receive","onClose","on","msg","appToken","setClientData","setAppToken","setToken","clearToken","getUserToken","resetState","strategy","initStrategy","namespaced","requiredPassword","requiredToken","requiredTOTP","requiredRecovery","setInitialStrategy","requirePassword","requireToken","requireMFA","requireRecovery","requireTOTP","abortMFA","supportedTypes","mediaViewer","currentIndex","activated","setCurrentMedia","current","closeMediaViewer","oauthTokens","tokens","fetchTokens","swapTokens","reports","preTickedIds","modalActivated","openUserReportingModal","closeUserReportingModal","preTickedStatuses","trackedPolls","mergeOrAddPoll","existingPoll","trackPoll","currentValue","untrackPoll","updateTrackedPoll","votePoll","openPostStatusModal","closePostStatusModal","isConfirmation","storage","idempotencyKeyIndex","ChatService","newMessages","updateMaxId","fakeId","fakeMessage","idIndex","lastSeenMessageId","newMessageCount","getView","currentMessageChainId","firstMessage","previousMessage","setHours","getTime","afterDate","nextMessage","messageChainId","deleteMessage","cullOlderMessages","maxIndex","minIndex","resetNewMessageCount","failedMessageIds","handleMessageError","isRetry","lastPersistedMessage","oldId","chatList","chatListFetcher","openedChats","reactive","openedChatMessageServices","lastReadMessageId","getChatById","currentChat","currentChatMessageService","findOpenedChatByRecipientId","recipientId","sortedChatList","startFetchingChats","stopFetchingChats","fetchChats","addNewChats","newChatMessageSideEffects","updateChat","startFetchingCurrentChat","setCurrentChatFetcher","addOpenedChat","addChatMessages","resetChatNewMessageCount","clearCurrentChat","isNewMessage","resetChats","clearOpenedChats","setChatListFetcher","prevFetcher","_dispatch","chatService","setCurrentChatId","updatedChat","_rootGetters","deleteChat","conversation","last_status","setChatsLoading","chatMessageService","_value","defaultReducer","paths","substate","saveImmedeatelyActions","defaultStorage","localforage","createPersistedState","getItem","setState","setItem","reducer","subscriber","savedState","usersState","replaceState","merge","mutation","webPushNotification","isUserMutation","isVapidMutation","isPermMutation","isUserConfigMutation","isVisibilityMutation","LoginForm","isPasswordAuth","isTokenAuth","mapMutations","mapActions","submit","submitToken","submitPassword","identifier","passwordResetRequested","focusOnPasswordInput","passwordInput","mfa","authSettings","mfa_token","mfaApi","AuthForm","resolveComponent","authForm","MFARecoveryForm","MFATOTPForm","UserPanel","signedIn","hide-bio","faUsers","faHome","TimelineMenuContent","privateMode","federating","faComments","faInfoCircle","faStream","NavPanel","showTimelines","toggleTimelines","followRequestCount","InstanceSpecificPanel","FeaturesPanel","pleromaChatMessages","gopher","whoToFollow","mediaProxy","getWhoToFollow","usersToFollow","toFollow","shuffled","externalUser","showWhoToFollow","WhoToFollowPanel","oldUser","faBullhorn","shoutPanel","currentMessage","collapsed","togglePanel","scrollEl","floating","author","isOpen","noBackground","retry","getResettableAsyncComponent","asyncComponent","asyncComponentFactory","loader","observe","shallowReactive","onResetAsyncComponent","faWindowMinimize","faFileUpload","faFileDownload","SettingsModal","dataImporter","importValidator","dataThemeExporter","generateExport","dataExporter","Modal","SettingsModalContent","loadingComponent","PanelLoading","errorComponent","AsyncComponentError","delay","closeModal","peekModal","_pleroma_settings_version","major","minor","fileMajor","feMajor","restore","backup","backupWithTheme","sample","ignoreList","clone","modalOpenedOnce","modalPeeked","is-open","no-background","model-value","setTransform","scale","PinchZoom","$attrs","deltaCoord","oldCoord","newCoord","touchEventCoord","touch","touches","screenX","screenY","pointerEventCoord","clientX","clientY","vectorLength","sqrt","perpendicular","dotProduct","v1","v2","project","scalar","GestureService","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","swipeGesture","onSwipe","threshold","perpendicularTolerance","_startPos","_swiping","beginSwipe","gesture","updateSwipe","delta","towardsDir","perpendicularDir","towardsPerpendicular","SwipeAndClickGesture","swipePreviewCallback","swipeEndCallback","swipeCancelCallback","swipelessClickCallback","disableClickThreshold","nop","_reset","_pointerId","_swiped","_preventNextClick","pointerId","coord","sign","isPositive","pointerType","SwipeClick","handlePointerDown","$gesture","handlePointerMove","handlePointerUp","handlePointerCancel","cancel","handleNativeClick","offsets","faChevronLeft","faChevronRight","MediaModal","swipeDirection","swipeThreshold","pinchZoomMinScale","pinchZoomScaleResetLimit","showing","currentMedia","canNavigate","getType","hide","hideIfNotSwiped","comp","swipeClick","goPrev","prevIndex","newMedia","goNext","nextIndex","onImageLoaded","handleSwipePreview","pinchZoom","handleSwipeEnd","handleKeyupEvent","keyCode","handleKeydownEvent","selector","reach-min-scale-strategy","stop-propagate-handled","allow-pan-min-scale","min-scale","reset-to-min-scale-limit","faSignInAlt","faSignOutAlt","faSearch","faTachometerAlt","faCog","SideDrawer","closed","closeGesture","toggleDrawer","unseenNotificationsCount","sitename","timelinesRoute","doLogout","touchStart","touchMove","faPen","HIDDEN_FOR_PAGES","MobilePostStatusButton","scrollingDown","inputActive","oldScrollPos","amountScrolled","activateFloatingPostButtonAutohide","handleOSK","deactivateFloatingPostButtonAutohide","isLoggedIn","isHidden","isPersistent","handleScrollStart","handleScrollEnd","openPostForm","smallPhone","smallPhoneKbOpen","biggerPhoneKbOpen","leading","trailing","faBars","MobileNav","notificationsCloseGesture","notificationsOpen","closeMobileNotifications","isChat","toggleMobileSidebar","sideDrawer","openMobileNotifications","notificationsTouchStart","notificationsTouchMove","scrollToTop","scrollTo","active-class","SearchBar","searchTerm","route","searchInput","searchBarHidden","supportsMask","enableMask","logoStyle","logoMaskStyle","logoBgStyle","onSearchBarToggled","UserReportingModal","List","statusIdsToReport","processing","remoteInstance","isChecked","toggleStatus","in-conversation","PostStatusModal","resettingForm","isFormVisible","oldVal","GlobalNoticeList","notices","closeNotice","ShoutPanel","DesktopNav","mobileActivePanel","updateMobileState","reverseLayout","noSticky","newPostButtonShown","userBackground","instanceBackground","bgStyle","isChats","shoutboxPosition","reverseSetting","faAngleDoubleDown","ThreadTree","depth","collapsable","isExpanded","pinnedStatusIdsObject","getReplies","simple","threadDisplayStatus","showThreadRecursively","totalReplyCount","totalReplyDepth","statusContentProperties","setStatusContentProperty","toggleStatusContentProperty","selfSuspendable","statusComponent","childComponent","reverseLookupTable","table","currentReplies","statusById","currentProp","collapseThread","showThread","showAllSubthreads","toggleCurrentProp","setCurrentProp","inline-expanded","show-pinned","in-profile","profile-user-id","simple-tree","controlled-thread-display-status","controlled-toggle-thread-display","controlled-replying","controlled-media-playing","controlled-toggle-replying","controlled-set-media-playing","replyStatus","is-expanded","pinned-status-ids-object","get-replies","set-highlight","toggle-expanded","toggle-thread-display","thread-display-status","show-thread-recursively","total-reply-count","total-reply-depth","status-content-properties","set-status-content-property","toggle-status-content-property","numStatus","faAngleDoubleLeft","idA","idB","threadDisplayStatusObject","statusContentPropertiesObject","inlineDivePosition","isPage","maxDepthToShowByDefault","maxDepth","displayStyle","isTreeView","isLinearView","treeViewIsSimple","shouldFadeAncestors","otherRepliesButtonPosition","showOtherRepliesButtonBelowStatus","showOtherRepliesButtonInsideStatus","prop","virtualHidden","originalStatusId","getConversationId","statusIndex","sortAndFilterConversation","statusMap","threadTree","walk","forest","topLevel","processed","cur","replyIds","subTreeSizeFor","cid","depths","subTreeDepthFor","tl","otherTopLevelCount","showingTopLevel","canDive","diveRoot","parentOf","diveDepth","diveMode","shouldShowAllConversationButton","shouldShowAncestors","ancestorsOf","irid","hiddenStyle","isReplying","maybeHighlight","newConversationId","oldConversationId","resetDisplayState","getHighlight","setThreadDisplay","nextStatus","setThreadDisplayRecursively","leastVisibleAncestor","diveIntoStatus","preventScroll","tryScrollTo","diveToTopLevel","topLevelAncestorOrSelfId","undive","goToCurrent","parentId","parentOrSelf","show-other-replies-as-button","TimelineMenu","openMenu","blockOpen","timelineName","i18nkey","faFont","faWrench","TimelineQuickSettings","setReplyVisibility","openTab","replyVisibilitySelf","replyVisibilityFollowing","replyVisibilityAll","hideMedia","Timeline","paused","unfocused","virtualScrollIndex","blockingClicks","Conversation","filteredVisibleStatuses","filteredPinnedStatusIds","showLoadButton","loadButtonString","rootClasses","embedded","statusesToDisplay","statusesPerSide","nonPinnedIndex","virtualScrollingEnabled","handleScroll","handleVisibilityChange","handleShortKey","determineVisibleStatuses","stopBlockingClicks","blockClicksTemporarily","fetchOlderStatuses","cappedScrollIndex","pageYOffset","centerOfScreen","approxIndex","virtualScrollIndexY","scrollLoad","bodyBRect","doc","clientTop","virtual-hidden","footerSlipgate","PublicTimeline","timeline-name","PublicAndExternalTimeline","FriendsTimeline","TagTimeline","Bookmarks","conversationPage","is-page","tabModeDict","Interactions","allowFollowingMove","onModeSwitch","TabSwitcher","on-switch","minimal-mode","filter-mode","DMs","htmlTitle","getUserProfileLink","withAvatar","ChatListItem","ChatTitle","attachmentInfo","messageForStatusContent","messageEmojis","messagePreview","_e","chatNew","userIds","availableUsers","goBack","goToChat","addUser","selectedUserIds","removeUser","ChatList","ChatNew","isNew","cancelNewChat","newChat","displayDate","today","toLocaleDateString","day","month","ChatMessage","ChatMessageDate","createdAt","chatViewItem","toLocaleTimeString","hour","minute","hour12","isCurrentUser","isMessage","hasAttachment","popoverMarginStyle","hovered","menuOpened","onHover","bool","isHovered","hoveredMessageChain","bound-to-selector","full-content","getScrollPosition","Chat","jumpToBottomButtonVisible","hoveredMessageChainId","lastScrollPosition","scrollableContainerHeight","errorLoadingChat","messageRetriers","handleResize","recipient","formPlaceholder","chatViewItems","streamingEnabled","bottomedOutBeforeUpdate","scrollDown","fetchChat","isFirstFetch","onMessageHover","onFilesDropped","forceRead","expand","diff","totalHeight","isBottomedOut","reachedTop","cullOlderCheck","handleScrollUp","positionBeforeLoading","previousPosition","newPosition","positionAfterLoading","fetchLatest","fetchOlderMessages","positionBeforeUpdate","doStartFetching","handleAttachmentPosting","sendMessage","buildFakeMessage","doSendMessage","retriesLeft","with-avatar","chat-view-item","hovered-message-chain","disable-subject","disable-scope-selector","disable-notice","disable-lock-warning","disable-polls","disable-sensitivity-checkbox","disable-submit","disable-preview","optimistic-posting","post-handler","submit-on-enter","preserve-focus","auto-focus","file-limit","max-height","emoji-picker-placement","FollowCard","isMe","noFollowsYou","label-following","withLoadMore","select","childPropName","additionalPropNames","WrappedComponent","fetchEntries","updateEntries","newEntries","FollowerList","destroy","FriendList","UserProfile","footerRef","routeParams","stopFetching","isUs","followsTabVisible","followersTabVisible","setFooterRef","userNameOrId","loadById","reason","errorMessage","switchUser","onTabSwitch","viewing","allow-zooming-avatar","active-tab","render-only-focused","pinned-status-ids","no-follows-you","Search","hashtags","currenResultTab","newQuery","getActiveTab","resultCount","onResultTabSwitch","lastHistoryRecord","uses","setup","v$","useVuelidate","fullname","captcha","InterfaceLanguageSwitcher","validations","requiredIf","accountActivationRequired","sameAs","accountApprovalRequired","setCaptcha","bioPlaceholder","replaceNewlines","reasonPlaceholder","isPending","serverValidationErrors","termsOfService","captcha_solution","solution","captcha_token","captcha_answer_data","answer_data","$touch","$invalid","cpt","$error","$model","bio","sameAsPassword","prompt-text","set-language","autocorrect","autocapitalize","spellcheck","resetPassword","passwordReset","throttled","mailerEnabled","dismissError","passwordResetApi","FollowRequestCard","findFollowRequestNotificationId","notif","notifId","FollowRequests","oac","WhoToFollow","TermsOfServicePanel","StaffPanel","staffAccounts","groupedStaffAccounts","groupBy","toInstanceReasonObject","instances","info","MRFTransparencyPanel","federationPolicy","mrfPolicies","quarantineInstances","acceptInstances","rejectInstances","ftlRemovalInstances","mediaNsfwInstances","mediaRemovalInstances","keywordsFtlRemoval","keywordsReject","keywordsReplace","hasInstanceSpecificPolicies","hasKeywordPolicies","About","policy","pattern","RemoteUserResolver","redirect","previousNavPaddingRight","previousAppBgWrapperRight","validateAuthenticatedRoute","routes","_to","component","beforeEnter","BookmarkTimeline","ConversationPage","dontScroll","Registration","PasswordReset","OAuthCallback","lockerEls","disableBodyScroll","scrollBarGap","reserveScrollBarGap","navEl","getElementById","paddingRight","appBgWrapperEl","enableBodyScroll","directive","binding","Vue","staticInitialResults","decodeUTF8Base64","TextDecoder","decode","preloadFetch","decoded","requestData","getInstanceConfig","max_toot_chars","vapid_public_key","approval_required","getBackendProvidedConfig","pleroma_fe","getStaticConfig","setSettings","apiConfig","staticConfig","overrides","___pleromafe_dev_overrides","env","___pleromafe_mode","NODE_ENV","staticConfigPreference","copyInstanceOption","getTOS","getInstancePanel","getStickers","resPack","pack","getAppSecret","resolveStaffAccounts","getNodeInfo","metadata","features","nodeName","openRegistrations","uploadLimits","general","fieldsLimits","enabled","web","software","version","priv","federation","mrf_policies","setConfig","configInfos","checkOAuthToken","afterStoreSetup","router","createRouter","createWebHistory","scrollBehavior","_from","savedPosition","matched","createApp","App","use","vClickOutside","VBodyScrollLock","FontAwesomeIcon","FontAwesomeLayers","mount","currentLocale","createI18n","fallbackLocale","persistedStateOptions","storageError","plugins","pushNotifications","persistedState","createStore","global","interfaceModule","instanceModule","usersModule","statusesModule","apiModule","configModule","serverSideConfigModule","shoutModule","oauthModule","authFlow","authFlowModule","mediaViewerModule","oauthTokensModule","reportsModule","pollsModule","postStatusModule","chatsModule","strict","process","COMMIT_HASH","DEV_OVERRIDES"],"mappings":"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Q,8BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,8BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,+CCAA,Q,gCCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,gCCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,+BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,+CCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,+CCAA,Q,6BCAA,Q,8BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,mGCEA,IAEE,IAAIz+D,YAEJ,MAAOnW,GACP6E,OAAOsR,YAAci/D,ICPvB,IA+JeC,EA1IM,CACnBzvD,MAtBmB,CACnB61C,mBAAoB,SACpB6Z,qBAAqB,EACrBC,uBAAwB,KACxBn0D,SAAU,CACRo0D,uBAAwB,KACxBC,mBAAoB,KACpBC,uBAAwB,MAE1Bn1C,eAAgB,CACdC,UAAW37B,OAAO8wE,KAAO9wE,OAAO8wE,IAAIC,WAClC/wE,OAAO8wE,IAAIC,SAAS,SAAU,qBAC9B/wE,OAAO8wE,IAAIC,SAAS,iBAAkB,sBAG1C1X,WAAY,SACZ2X,cAAe,GACfC,aAAc,EACdC,aAAc,MAKdjR,UAAW,CACTkR,cADS,SACMpwD,EADN,GACiC,IAAlBqwD,EAAkB,EAAlBA,QAASxzE,EAAS,EAATA,MAC3BwzE,GACErwD,EAAM6vD,oBACR/yE,aAAakjB,EAAM6vD,oBAErB7vD,EAAMxE,SAASo0D,uBAAyB,CAAE/yE,OAAO,EAAO5E,KAAMo4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","file":"static/js/app.23b7ec270c69f4f99782.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t0: 0\n \t};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"static/js/\" + ({}[chunkId]||chunkId) + \".\" + {\"2\":\"eb2c361cdcbd8c4f7638\",\"3\":\"6817af5c7ddbbd72fbf1\",\"4\":\"927a84e2225924985925\",\"5\":\"bbbe2165b2726754babd\",\"6\":\"c6e50a831e6b09d426c7\",\"7\":\"7a9d3de7e3eb6affa8fa\",\"8\":\"6e10d130a82421e5de97\",\"9\":\"4c310a18d1e30d64ab78\",\"10\":\"b67f1d16d8fdcd03f775\",\"11\":\"88732498617afe7ab4fa\",\"12\":\"21fb2f8c9787acc40766\",\"13\":\"bd887f6f8965a89629f1\",\"14\":\"8d076150d2d32a70c85c\",\"15\":\"458ea2a090159a1c312d\",\"16\":\"b026bc770b996a75ab86\",\"17\":\"37f97cc3eab74f285530\",\"18\":\"5e155da6b34cb233975a\",\"19\":\"4449616295c79e9feb82\",\"20\":\"c3c9f56f752974bf19cf\",\"21\":\"13590b4f67813801857e\",\"22\":\"af3b6f25635a9809f6e8\",\"23\":\"27002d630c581d75786b\",\"24\":\"17fecccd566085bc7273\",\"25\":\"d92131b48359fae551a4\",\"26\":\"8e2b950cad8e4bb7145f\",\"27\":\"b70f29d1c24421eeb8e0\",\"28\":\"3eeac63a0c7d7ca9f57e\",\"29\":\"a9703e50212c8482b1b8\",\"30\":\"ccdf2a34d5a00135f6b7\",\"31\":\"079c61206f2e6ac69873\",\"32\":\"2c5f6af0c5d2d87ad611\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"2\":1,\"3\":1,\"4\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"static/css/\" + ({}[chunkId]||chunkId) + \".\" + {\"2\":\"4e6541aa0979ab5fe8ab\",\"3\":\"2f4099421df47087d7d1\",\"4\":\"10e378d3da0e7f32661d\",\"5\":\"31d6cfe0d16ae931b73c\",\"6\":\"31d6cfe0d16ae931b73c\",\"7\":\"31d6cfe0d16ae931b73c\",\"8\":\"31d6cfe0d16ae931b73c\",\"9\":\"31d6cfe0d16ae931b73c\",\"10\":\"31d6cfe0d16ae931b73c\",\"11\":\"31d6cfe0d16ae931b73c\",\"12\":\"31d6cfe0d16ae931b73c\",\"13\":\"31d6cfe0d16ae931b73c\",\"14\":\"31d6cfe0d16ae931b73c\",\"15\":\"31d6cfe0d16ae931b73c\",\"16\":\"31d6cfe0d16ae931b73c\",\"17\":\"31d6cfe0d16ae931b73c\",\"18\":\"31d6cfe0d16ae931b73c\",\"19\":\"31d6cfe0d16ae931b73c\",\"20\":\"31d6cfe0d16ae931b73c\",\"21\":\"31d6cfe0d16ae931b73c\",\"22\":\"31d6cfe0d16ae931b73c\",\"23\":\"31d6cfe0d16ae931b73c\",\"24\":\"31d6cfe0d16ae931b73c\",\"25\":\"31d6cfe0d16ae931b73c\",\"26\":\"31d6cfe0d16ae931b73c\",\"27\":\"31d6cfe0d16ae931b73c\",\"28\":\"31d6cfe0d16ae931b73c\",\"29\":\"31d6cfe0d16ae931b73c\",\"30\":\"31d6cfe0d16ae931b73c\",\"31\":\"31d6cfe0d16ae931b73c\",\"32\":\"31d6cfe0d16ae931b73c\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([593,1]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import escape from 'escape-html'\nimport parseLinkHeader from 'parse-link-header'\nimport { isStatusNotification } from '../notification_utils/notification_utils.js'\nimport punycode from 'punycode.js'\n\n/** NOTICE! **\n * Do not initialize UI-generated data here.\n * It will override existing data.\n *\n * i.e. user.pinnedStatusIds was set to [] here\n * UI code would update it with data but upon next user fetch\n * it would be reverted back to []\n */\n\nconst qvitterStatusType = (status) => {\n  if (status.is_post_verb) {\n    return 'status'\n  }\n\n  if (status.retweeted_status) {\n    return 'retweet'\n  }\n\n  if ((typeof status.uri === 'string' && status.uri.match(/(fave|objectType=Favourite)/)) ||\n      (typeof status.text === 'string' && status.text.match(/favorited/))) {\n    return 'favorite'\n  }\n\n  if (status.text.match(/deleted notice {{tag/) || status.qvitter_delete_notice) {\n    return 'deletion'\n  }\n\n  if (status.text.match(/started following/) || status.activity_type === 'follow') {\n    return 'follow'\n  }\n\n  return 'unknown'\n}\n\nexport const parseUser = (data) => {\n  const output = {}\n  const masto = data.hasOwnProperty('acct')\n  // case for users in \"mentions\" property for statuses in MastoAPI\n  const mastoShort = masto && !data.hasOwnProperty('avatar')\n\n  output.id = String(data.id)\n  output._original = data // used for server-side settings\n\n  if (masto) {\n    output.screen_name = data.acct\n    output.statusnet_profile_url = data.url\n\n    // There's nothing else to get\n    if (mastoShort) {\n      return output\n    }\n\n    output.emoji = data.emojis\n    output.name = escape(data.display_name)\n    output.name_html = output.name\n    output.name_unescaped = data.display_name\n\n    output.description = data.note\n    // TODO cleanup this shit, output.description is overriden with source data\n    output.description_html = data.note\n\n    output.fields = data.fields\n    output.fields_html = data.fields.map(field => {\n      return {\n        name: escape(field.name),\n        value: field.value\n      }\n    })\n    output.fields_text = data.fields.map(field => {\n      return {\n        name: unescape(field.name.replace(/<[^>]*>/g, '')),\n        value: unescape(field.value.replace(/<[^>]*>/g, ''))\n      }\n    })\n\n    // Utilize avatar_static for gif avatars?\n    output.profile_image_url = data.avatar\n    output.profile_image_url_original = data.avatar\n\n    // Same, utilize header_static?\n    output.cover_photo = data.header\n\n    output.friends_count = data.following_count\n\n    output.bot = data.bot\n\n    if (data.pleroma) {\n      const relationship = data.pleroma.relationship\n\n      output.background_image = data.pleroma.background_image\n      output.favicon = data.pleroma.favicon\n      output.token = data.pleroma.chat_token\n\n      if (relationship) {\n        output.relationship = relationship\n      }\n\n      output.allow_following_move = data.pleroma.allow_following_move\n\n      output.hide_follows = data.pleroma.hide_follows\n      output.hide_followers = data.pleroma.hide_followers\n      output.hide_follows_count = data.pleroma.hide_follows_count\n      output.hide_followers_count = data.pleroma.hide_followers_count\n\n      output.rights = {\n        moderator: data.pleroma.is_moderator,\n        admin: data.pleroma.is_admin\n      }\n      // TODO: Clean up in UI? This is duplication from what BE does for qvitterapi\n      if (output.rights.admin) {\n        output.role = 'admin'\n      } else if (output.rights.moderator) {\n        output.role = 'moderator'\n      } else {\n        output.role = 'member'\n      }\n    }\n\n    if (data.source) {\n      output.description = data.source.note\n      output.default_scope = data.source.privacy\n      output.fields = data.source.fields\n      if (data.source.pleroma) {\n        output.no_rich_text = data.source.pleroma.no_rich_text\n        output.show_role = data.source.pleroma.show_role\n        output.discoverable = data.source.pleroma.discoverable\n      }\n    }\n\n    // TODO: handle is_local\n    output.is_local = !output.screen_name.includes('@')\n  } else {\n    output.screen_name = data.screen_name\n\n    output.name = data.name\n    output.name_html = data.name_html\n\n    output.description = data.description\n    output.description_html = data.description_html\n\n    output.profile_image_url = data.profile_image_url\n    output.profile_image_url_original = data.profile_image_url_original\n\n    output.cover_photo = data.cover_photo\n\n    output.friends_count = data.friends_count\n\n    // output.bot = ??? missing\n\n    output.statusnet_profile_url = data.statusnet_profile_url\n\n    output.is_local = data.is_local\n    output.role = data.role\n    output.show_role = data.show_role\n\n    if (data.rights) {\n      output.rights = {\n        moderator: data.rights.delete_others_notice,\n        admin: data.rights.admin\n      }\n    }\n    output.no_rich_text = data.no_rich_text\n    output.default_scope = data.default_scope\n    output.hide_follows = data.hide_follows\n    output.hide_followers = data.hide_followers\n    output.hide_follows_count = data.hide_follows_count\n    output.hide_followers_count = data.hide_followers_count\n    output.background_image = data.background_image\n    // Websocket token\n    output.token = data.token\n\n    // Convert relationsip data to expected format\n    output.relationship = {\n      muting: data.muted,\n      blocking: data.statusnet_blocking,\n      followed_by: data.follows_you,\n      following: data.following\n    }\n  }\n\n  output.created_at = new Date(data.created_at)\n  output.locked = data.locked\n  output.followers_count = data.followers_count\n  output.statuses_count = data.statuses_count\n\n  if (data.pleroma) {\n    output.follow_request_count = data.pleroma.follow_request_count\n\n    output.tags = data.pleroma.tags\n\n    // deactivated was changed to is_active in Pleroma 2.3.0\n    // so check if is_active is present\n    output.deactivated = typeof data.pleroma.is_active !== 'undefined'\n      ? !data.pleroma.is_active // new backend\n      : data.pleroma.deactivated // old backend\n\n    output.notification_settings = data.pleroma.notification_settings\n    output.unread_chat_count = data.pleroma.unread_chat_count\n  }\n\n  output.tags = output.tags || []\n  output.rights = output.rights || {}\n  output.notification_settings = output.notification_settings || {}\n\n  // Convert punycode to unicode for UI\n  output.screen_name_ui = output.screen_name\n  if (output.screen_name && output.screen_name.includes('@')) {\n    const parts = output.screen_name.split('@')\n    let unicodeDomain = punycode.toUnicode(parts[1])\n    if (unicodeDomain !== parts[1]) {\n      // Add some identifier so users can potentially spot spoofing attempts:\n      // lain.com and xn--lin-6cd.com would appear identical otherwise.\n      unicodeDomain = '🌏' + unicodeDomain\n      output.screen_name_ui = [parts[0], unicodeDomain].join('@')\n    }\n  }\n\n  return output\n}\n\nexport const parseAttachment = (data) => {\n  const output = {}\n  const masto = !data.hasOwnProperty('oembed')\n\n  if (masto) {\n    // Not exactly same...\n    output.mimetype = data.pleroma ? data.pleroma.mime_type : data.type\n    output.meta = data.meta // not present in BE yet\n    output.id = data.id\n  } else {\n    output.mimetype = data.mimetype\n    // output.meta = ??? missing\n  }\n\n  output.url = data.url\n  output.large_thumb_url = data.preview_url\n  output.description = data.description\n\n  return output\n}\n\nexport const parseStatus = (data) => {\n  const output = {}\n  const masto = data.hasOwnProperty('account')\n\n  if (masto) {\n    output.favorited = data.favourited\n    output.fave_num = data.favourites_count\n\n    output.repeated = data.reblogged\n    output.repeat_num = data.reblogs_count\n\n    output.bookmarked = data.bookmarked\n\n    output.type = data.reblog ? 'retweet' : 'status'\n    output.nsfw = data.sensitive\n\n    output.raw_html = data.content\n    output.emojis = data.emojis\n\n    output.tags = data.tags\n\n    if (data.pleroma) {\n      const { pleroma } = data\n      output.text = pleroma.content ? data.pleroma.content['text/plain'] : data.content\n      output.summary = pleroma.spoiler_text ? data.pleroma.spoiler_text['text/plain'] : data.spoiler_text\n      output.statusnet_conversation_id = data.pleroma.conversation_id\n      output.is_local = pleroma.local\n      output.in_reply_to_screen_name = data.pleroma.in_reply_to_account_acct\n      output.thread_muted = pleroma.thread_muted\n      output.emoji_reactions = pleroma.emoji_reactions\n      output.parent_visible = pleroma.parent_visible === undefined ? true : pleroma.parent_visible\n    } else {\n      output.text = data.content\n      output.summary = data.spoiler_text\n    }\n\n    if (data.akkoma) {\n      const { akkoma } = data\n      if (akkoma && akkoma.source && akkoma.source.mediaType === 'text/x.misskeymarkdown') {\n        output.mfm_content = akkoma.source.content\n      }\n    } else {\n      output.mfm_content = null\n    }\n\n    output.in_reply_to_status_id = data.in_reply_to_id\n    output.in_reply_to_user_id = data.in_reply_to_account_id\n    output.replies_count = data.replies_count\n\n    if (output.type === 'retweet') {\n      output.retweeted_status = parseStatus(data.reblog)\n    }\n\n    output.summary_raw_html = escape(data.spoiler_text)\n    output.external_url = data.url\n    output.poll = data.poll\n    if (output.poll) {\n      output.poll.options = (output.poll.options || []).map(field => ({\n        ...field,\n        title_html: escape(field.title)\n      }))\n    }\n    output.pinned = data.pinned\n    output.muted = data.muted\n  } else {\n    output.favorited = data.favorited\n    output.fave_num = data.fave_num\n\n    output.repeated = data.repeated\n    output.repeat_num = data.repeat_num\n\n    // catchall, temporary\n    // Object.assign(output, data)\n\n    output.type = qvitterStatusType(data)\n\n    if (data.nsfw === undefined) {\n      output.nsfw = isNsfw(data)\n      if (data.retweeted_status) {\n        output.nsfw = data.retweeted_status.nsfw\n      }\n    } else {\n      output.nsfw = data.nsfw\n    }\n\n    output.raw_html = data.statusnet_html\n    output.text = data.text\n\n    output.in_reply_to_status_id = data.in_reply_to_status_id\n    output.in_reply_to_user_id = data.in_reply_to_user_id\n    output.in_reply_to_screen_name = data.in_reply_to_screen_name\n    output.statusnet_conversation_id = data.statusnet_conversation_id\n\n    if (output.type === 'retweet') {\n      output.retweeted_status = parseStatus(data.retweeted_status)\n    }\n\n    output.summary = data.summary\n    output.summary_html = data.summary_html\n    output.external_url = data.external_url\n    output.is_local = data.is_local\n  }\n\n  output.id = String(data.id)\n  output.visibility = data.visibility\n  output.card = data.card\n  output.created_at = new Date(data.created_at)\n\n  // Converting to string, the right way.\n  output.in_reply_to_status_id = output.in_reply_to_status_id\n    ? String(output.in_reply_to_status_id)\n    : null\n  output.in_reply_to_user_id = output.in_reply_to_user_id\n    ? String(output.in_reply_to_user_id)\n    : null\n\n  output.user = parseUser(masto ? data.account : data.user)\n\n  output.attentions = ((masto ? data.mentions : data.attentions) || []).map(parseUser)\n\n  output.attachments = ((masto ? data.media_attachments : data.attachments) || [])\n    .map(parseAttachment)\n\n  const retweetedStatus = masto ? data.reblog : data.retweeted_status\n  if (retweetedStatus) {\n    output.retweeted_status = parseStatus(retweetedStatus)\n  }\n\n  output.favoritedBy = []\n  output.rebloggedBy = []\n\n  return output\n}\n\nexport const parseNotification = (data) => {\n  const mastoDict = {\n    'favourite': 'like',\n    'reblog': 'repeat'\n  }\n  const masto = !data.hasOwnProperty('ntype')\n  const output = {}\n\n  if (masto) {\n    output.type = mastoDict[data.type] || data.type\n    output.seen = data.pleroma.is_seen\n    output.status = isStatusNotification(output.type) ? parseStatus(data.status) : null\n    output.action = output.status // TODO: Refactor, this is unneeded\n    output.target = output.type !== 'move'\n      ? null\n      : parseUser(data.target)\n    output.from_profile = parseUser(data.account)\n    output.emoji = data.emoji\n    output.emoji_url = data.emoji_url\n  } else {\n    const parsedNotice = parseStatus(data.notice)\n    output.type = data.ntype\n    output.seen = Boolean(data.is_seen)\n    output.status = output.type === 'like'\n      ? parseStatus(data.notice.favorited_status)\n      : parsedNotice\n    output.action = parsedNotice\n    output.from_profile = output.type === 'pleroma:chat_mention' ? parseUser(data.account) : parseUser(data.from_profile)\n  }\n\n  output.created_at = new Date(data.created_at)\n  output.id = parseInt(data.id)\n\n  return output\n}\n\nconst isNsfw = (status) => {\n  const nsfwRegex = /#nsfw/i\n  return (status.tags || []).includes('nsfw') || !!(status.text || '').match(nsfwRegex)\n}\n\nexport const parseLinkHeaderPagination = (linkHeader, opts = {}) => {\n  const flakeId = opts.flakeId\n  const parsedLinkHeader = parseLinkHeader(linkHeader)\n  if (!parsedLinkHeader) return\n  const maxId = parsedLinkHeader.next.max_id\n  const minId = parsedLinkHeader.prev.min_id\n\n  return {\n    maxId: flakeId ? maxId : parseInt(maxId, 10),\n    minId: flakeId ? minId : parseInt(minId, 10)\n  }\n}\n\nexport const parseChat = (chat) => {\n  const output = {}\n  output.id = chat.id\n  output.account = parseUser(chat.account)\n  output.unread = chat.unread\n  output.lastMessage = parseChatMessage(chat.last_message)\n  output.updated_at = new Date(chat.updated_at)\n  return output\n}\n\nexport const parseChatMessage = (message) => {\n  if (!message) { return }\n  if (message.isNormalized) { return message }\n  const output = message\n  output.id = message.id\n  output.created_at = new Date(message.created_at)\n  output.chat_id = message.chat_id\n  output.emojis = message.emojis\n  output.content = message.content\n  if (message.attachment) {\n    output.attachments = [parseAttachment(message.attachment)]\n  } else {\n    output.attachments = []\n  }\n  output.pending = !!message.pending\n  output.error = false\n  output.idempotency_key = message.idempotency_key\n  output.isNormalized = true\n  return output\n}\n","import { humanizeErrors } from '../../modules/errors'\n\nexport function StatusCodeError (statusCode, body, options, response) {\n  this.name = 'StatusCodeError'\n  this.statusCode = statusCode\n  this.message = statusCode + ' - ' + (JSON && JSON.stringify ? JSON.stringify(body) : body)\n  this.error = body // legacy attribute\n  this.options = options\n  this.response = response\n\n  if (Error.captureStackTrace) { // required for non-V8 environments\n    Error.captureStackTrace(this)\n  }\n}\nStatusCodeError.prototype = Object.create(Error.prototype)\nStatusCodeError.prototype.constructor = StatusCodeError\n\nexport class RegistrationError extends Error {\n  constructor (error) {\n    super()\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(this)\n    }\n\n    try {\n      // the error is probably a JSON object with a single key, \"errors\", whose value is another JSON object containing the real errors\n      if (typeof error === 'string') {\n        error = JSON.parse(error)\n        if (error.hasOwnProperty('error')) {\n          error = JSON.parse(error.error)\n        }\n      }\n\n      if (typeof error === 'object') {\n        const errorContents = JSON.parse(error.error)\n        // keys will have the property that has the error, for example 'ap_id',\n        // 'email' or 'captcha', the value will be an array of its error\n        // like \"ap_id\": [\"has been taken\"] or \"captcha\": [\"Invalid CAPTCHA\"]\n\n        // replace ap_id with username\n        if (errorContents.ap_id) {\n          errorContents.username = errorContents.ap_id\n          delete errorContents.ap_id\n        }\n\n        this.message = humanizeErrors(errorContents)\n      } else {\n        this.message = error\n      }\n    } catch (e) {\n      // can't parse it, so just treat it like a string\n      this.message = error\n    }\n  }\n}\n","import { capitalize } from 'lodash'\n\nexport function humanizeErrors (errors) {\n  return Object.entries(errors).reduce((errs, [k, val]) => {\n    let message = val.reduce((acc, message) => {\n      let key = capitalize(k.replace(/_/g, ' '))\n      return acc + [key, message].join(' ') + '. '\n    }, '')\n    return [...errs, message]\n  }, [])\n}\n","import { each, map, concat, last, get } from 'lodash'\nimport { parseStatus, parseUser, parseNotification, parseAttachment, parseChat, parseLinkHeaderPagination } from '../entity_normalizer/entity_normalizer.service.js'\nimport { RegistrationError, StatusCodeError } from '../errors/errors'\n\n/* eslint-env browser */\nconst MUTES_IMPORT_URL = '/api/pleroma/mutes_import'\nconst BLOCKS_IMPORT_URL = '/api/pleroma/blocks_import'\nconst FOLLOW_IMPORT_URL = '/api/pleroma/follow_import'\nconst DELETE_ACCOUNT_URL = '/api/pleroma/delete_account'\nconst CHANGE_EMAIL_URL = '/api/pleroma/change_email'\nconst CHANGE_PASSWORD_URL = '/api/pleroma/change_password'\nconst TAG_USER_URL = '/api/pleroma/admin/users/tag'\nconst PERMISSION_GROUP_URL = (screenName, right) => `/api/pleroma/admin/users/${screenName}/permission_group/${right}`\nconst ACTIVATE_USER_URL = '/api/pleroma/admin/users/activate'\nconst DEACTIVATE_USER_URL = '/api/pleroma/admin/users/deactivate'\nconst ADMIN_USERS_URL = '/api/pleroma/admin/users'\nconst SUGGESTIONS_URL = '/api/v1/suggestions'\nconst NOTIFICATION_SETTINGS_URL = '/api/pleroma/notification_settings'\nconst NOTIFICATION_READ_URL = '/api/v1/pleroma/notifications/read'\n\nconst MFA_SETTINGS_URL = '/api/pleroma/accounts/mfa'\nconst MFA_BACKUP_CODES_URL = '/api/pleroma/accounts/mfa/backup_codes'\n\nconst MFA_SETUP_OTP_URL = '/api/pleroma/accounts/mfa/setup/totp'\nconst MFA_CONFIRM_OTP_URL = '/api/pleroma/accounts/mfa/confirm/totp'\nconst MFA_DISABLE_OTP_URL = '/api/pleroma/accounts/mfa/totp'\n\nconst MASTODON_LOGIN_URL = '/api/v1/accounts/verify_credentials'\nconst MASTODON_REGISTRATION_URL = '/api/v1/accounts'\nconst MASTODON_USER_FAVORITES_TIMELINE_URL = '/api/v1/favourites'\nconst MASTODON_USER_NOTIFICATIONS_URL = '/api/v1/notifications'\nconst MASTODON_DISMISS_NOTIFICATION_URL = id => `/api/v1/notifications/${id}/dismiss`\nconst MASTODON_FAVORITE_URL = id => `/api/v1/statuses/${id}/favourite`\nconst MASTODON_UNFAVORITE_URL = id => `/api/v1/statuses/${id}/unfavourite`\nconst MASTODON_RETWEET_URL = id => `/api/v1/statuses/${id}/reblog`\nconst MASTODON_UNRETWEET_URL = id => `/api/v1/statuses/${id}/unreblog`\nconst MASTODON_DELETE_URL = id => `/api/v1/statuses/${id}`\nconst MASTODON_FOLLOW_URL = id => `/api/v1/accounts/${id}/follow`\nconst MASTODON_UNFOLLOW_URL = id => `/api/v1/accounts/${id}/unfollow`\nconst MASTODON_FOLLOWING_URL = id => `/api/v1/accounts/${id}/following`\nconst MASTODON_FOLLOWERS_URL = id => `/api/v1/accounts/${id}/followers`\nconst MASTODON_FOLLOW_REQUESTS_URL = '/api/v1/follow_requests'\nconst MASTODON_APPROVE_USER_URL = id => `/api/v1/follow_requests/${id}/authorize`\nconst MASTODON_DENY_USER_URL = id => `/api/v1/follow_requests/${id}/reject`\nconst MASTODON_DIRECT_MESSAGES_TIMELINE_URL = '/api/v1/timelines/direct'\nconst MASTODON_PUBLIC_TIMELINE = '/api/v1/timelines/public'\nconst MASTODON_USER_HOME_TIMELINE_URL = '/api/v1/timelines/home'\nconst MASTODON_STATUS_URL = id => `/api/v1/statuses/${id}`\nconst MASTODON_STATUS_CONTEXT_URL = id => `/api/v1/statuses/${id}/context`\nconst MASTODON_USER_URL = '/api/v1/accounts'\nconst MASTODON_USER_RELATIONSHIPS_URL = '/api/v1/accounts/relationships'\nconst MASTODON_USER_TIMELINE_URL = id => `/api/v1/accounts/${id}/statuses`\nconst MASTODON_TAG_TIMELINE_URL = tag => `/api/v1/timelines/tag/${tag}`\nconst MASTODON_BOOKMARK_TIMELINE_URL = '/api/v1/bookmarks'\nconst MASTODON_USER_BLOCKS_URL = '/api/v1/blocks/'\nconst MASTODON_USER_MUTES_URL = '/api/v1/mutes/'\nconst MASTODON_BLOCK_USER_URL = id => `/api/v1/accounts/${id}/block`\nconst MASTODON_UNBLOCK_USER_URL = id => `/api/v1/accounts/${id}/unblock`\nconst MASTODON_MUTE_USER_URL = id => `/api/v1/accounts/${id}/mute`\nconst MASTODON_UNMUTE_USER_URL = id => `/api/v1/accounts/${id}/unmute`\nconst MASTODON_SUBSCRIBE_USER = id => `/api/v1/pleroma/accounts/${id}/subscribe`\nconst MASTODON_UNSUBSCRIBE_USER = id => `/api/v1/pleroma/accounts/${id}/unsubscribe`\nconst MASTODON_BOOKMARK_STATUS_URL = id => `/api/v1/statuses/${id}/bookmark`\nconst MASTODON_UNBOOKMARK_STATUS_URL = id => `/api/v1/statuses/${id}/unbookmark`\nconst MASTODON_POST_STATUS_URL = '/api/v1/statuses'\nconst MASTODON_MEDIA_UPLOAD_URL = '/api/v1/media'\nconst MASTODON_VOTE_URL = id => `/api/v1/polls/${id}/votes`\nconst MASTODON_POLL_URL = id => `/api/v1/polls/${id}`\nconst MASTODON_STATUS_FAVORITEDBY_URL = id => `/api/v1/statuses/${id}/favourited_by`\nconst MASTODON_STATUS_REBLOGGEDBY_URL = id => `/api/v1/statuses/${id}/reblogged_by`\nconst MASTODON_PROFILE_UPDATE_URL = '/api/v1/accounts/update_credentials'\nconst MASTODON_REPORT_USER_URL = '/api/v1/reports'\nconst MASTODON_PIN_OWN_STATUS = id => `/api/v1/statuses/${id}/pin`\nconst MASTODON_UNPIN_OWN_STATUS = id => `/api/v1/statuses/${id}/unpin`\nconst MASTODON_MUTE_CONVERSATION = id => `/api/v1/statuses/${id}/mute`\nconst MASTODON_UNMUTE_CONVERSATION = id => `/api/v1/statuses/${id}/unmute`\nconst MASTODON_SEARCH_2 = `/api/v2/search`\nconst MASTODON_USER_SEARCH_URL = '/api/v1/accounts/search'\nconst MASTODON_MASCOT_URL = '/api/v1/pleroma/mascot'\nconst MASTODON_DOMAIN_BLOCKS_URL = '/api/v1/domain_blocks'\nconst MASTODON_STREAMING = '/api/v1/streaming'\nconst MASTODON_KNOWN_DOMAIN_LIST_URL = '/api/v1/instance/peers'\nconst PLEROMA_EMOJI_REACTIONS_URL = id => `/api/v1/pleroma/statuses/${id}/reactions`\nconst PLEROMA_EMOJI_REACT_URL = (id, emoji) => `/api/v1/pleroma/statuses/${id}/reactions/${emoji}`\nconst PLEROMA_EMOJI_UNREACT_URL = (id, emoji) => `/api/v1/pleroma/statuses/${id}/reactions/${emoji}`\nconst PLEROMA_CHATS_URL = `/api/v1/pleroma/chats`\nconst PLEROMA_CHAT_URL = id => `/api/v1/pleroma/chats/by-account-id/${id}`\nconst PLEROMA_CHAT_MESSAGES_URL = id => `/api/v1/pleroma/chats/${id}/messages`\nconst PLEROMA_CHAT_READ_URL = id => `/api/v1/pleroma/chats/${id}/read`\nconst PLEROMA_DELETE_CHAT_MESSAGE_URL = (chatId, messageId) => `/api/v1/pleroma/chats/${chatId}/messages/${messageId}`\n\nconst oldfetch = window.fetch\n\nlet fetch = (url, options) => {\n  options = options || {}\n  const baseUrl = ''\n  const fullUrl = baseUrl + url\n  options.credentials = 'same-origin'\n  return oldfetch(fullUrl, options)\n}\n\nconst promisedRequest = ({ method, url, params, payload, credentials, headers = {} }) => {\n  const options = {\n    method,\n    headers: {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json',\n      ...headers\n    }\n  }\n  if (params) {\n    url += '?' + Object.entries(params)\n      .map(([key, value]) => encodeURIComponent(key) + '=' + encodeURIComponent(value))\n      .join('&')\n  }\n  if (payload) {\n    options.body = JSON.stringify(payload)\n  }\n  if (credentials) {\n    options.headers = {\n      ...options.headers,\n      ...authHeaders(credentials)\n    }\n  }\n  return fetch(url, options)\n    .then((response) => {\n      return new Promise((resolve, reject) => response.json()\n        .then((json) => {\n          if (!response.ok) {\n            return reject(new StatusCodeError(response.status, json, { url, options }, response))\n          }\n          return resolve(json)\n        })\n        .catch((error) => {\n          return reject(new StatusCodeError(response.status, error, { url, options }, response))\n        })\n      )\n    })\n}\n\nconst updateNotificationSettings = ({ credentials, settings }) => {\n  const form = new FormData()\n\n  each(settings, (value, key) => {\n    form.append(key, value)\n  })\n\n  return fetch(NOTIFICATION_SETTINGS_URL, {\n    headers: authHeaders(credentials),\n    method: 'PUT',\n    body: form\n  }).then((data) => data.json())\n}\n\nconst updateProfileImages = ({ credentials, avatar = null, avatarName = null, banner = null, background = null }) => {\n  const form = new FormData()\n  if (avatar !== null) {\n    if (avatarName !== null) {\n      form.append('avatar', avatar, avatarName)\n    } else {\n      form.append('avatar', avatar)\n    }\n  }\n  if (banner !== null) form.append('header', banner)\n  if (background !== null) form.append('pleroma_background_image', background)\n  return fetch(MASTODON_PROFILE_UPDATE_URL, {\n    headers: authHeaders(credentials),\n    method: 'PATCH',\n    body: form\n  })\n    .then((data) => data.json())\n    .then((data) => {\n      if (data.error) {\n        throw new Error(data.error)\n      }\n      return parseUser(data)\n    })\n}\n\nconst updateProfile = ({ credentials, params }) => {\n  return promisedRequest({\n    url: MASTODON_PROFILE_UPDATE_URL,\n    method: 'PATCH',\n    payload: params,\n    credentials\n  }).then((data) => parseUser(data))\n}\n\n// Params needed:\n// nickname\n// email\n// fullname\n// password\n// password_confirm\n//\n// Optional\n// bio\n// homepage\n// location\n// token\n// language\nconst register = ({ params, credentials }) => {\n  const { nickname, ...rest } = params\n  return fetch(MASTODON_REGISTRATION_URL, {\n    method: 'POST',\n    headers: {\n      ...authHeaders(credentials),\n      'Content-Type': 'application/json'\n    },\n    body: JSON.stringify({\n      nickname,\n      locale: 'en_US',\n      agreement: true,\n      ...rest\n    })\n  })\n    .then((response) => {\n      if (response.ok) {\n        return response.json()\n      } else {\n        return response.json().then((error) => { throw new RegistrationError(error) })\n      }\n    })\n}\n\nconst getCaptcha = () => fetch('/api/pleroma/captcha').then(resp => resp.json())\n\nconst authHeaders = (accessToken) => {\n  if (accessToken) {\n    return { 'Authorization': `Bearer ${accessToken}` }\n  } else {\n    return { }\n  }\n}\n\nconst followUser = ({ id, credentials, ...options }) => {\n  let url = MASTODON_FOLLOW_URL(id)\n  const form = {}\n  if (options.reblogs !== undefined) { form['reblogs'] = options.reblogs }\n  return fetch(url, {\n    body: JSON.stringify(form),\n    headers: {\n      ...authHeaders(credentials),\n      'Content-Type': 'application/json'\n    },\n    method: 'POST'\n  }).then((data) => data.json())\n}\n\nconst unfollowUser = ({ id, credentials }) => {\n  let url = MASTODON_UNFOLLOW_URL(id)\n  return fetch(url, {\n    headers: authHeaders(credentials),\n    method: 'POST'\n  }).then((data) => data.json())\n}\n\nconst pinOwnStatus = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_PIN_OWN_STATUS(id), credentials, method: 'POST' })\n    .then((data) => parseStatus(data))\n}\n\nconst unpinOwnStatus = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_UNPIN_OWN_STATUS(id), credentials, method: 'POST' })\n    .then((data) => parseStatus(data))\n}\n\nconst muteConversation = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_MUTE_CONVERSATION(id), credentials, method: 'POST' })\n    .then((data) => parseStatus(data))\n}\n\nconst unmuteConversation = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_UNMUTE_CONVERSATION(id), credentials, method: 'POST' })\n    .then((data) => parseStatus(data))\n}\n\nconst blockUser = ({ id, credentials }) => {\n  return fetch(MASTODON_BLOCK_USER_URL(id), {\n    headers: authHeaders(credentials),\n    method: 'POST'\n  }).then((data) => data.json())\n}\n\nconst unblockUser = ({ id, credentials }) => {\n  return fetch(MASTODON_UNBLOCK_USER_URL(id), {\n    headers: authHeaders(credentials),\n    method: 'POST'\n  }).then((data) => data.json())\n}\n\nconst approveUser = ({ id, credentials }) => {\n  let url = MASTODON_APPROVE_USER_URL(id)\n  return fetch(url, {\n    headers: authHeaders(credentials),\n    method: 'POST'\n  }).then((data) => data.json())\n}\n\nconst denyUser = ({ id, credentials }) => {\n  let url = MASTODON_DENY_USER_URL(id)\n  return fetch(url, {\n    headers: authHeaders(credentials),\n    method: 'POST'\n  }).then((data) => data.json())\n}\n\nconst fetchUser = ({ id, credentials }) => {\n  let url = `${MASTODON_USER_URL}/${id}`\n  return promisedRequest({ url, credentials })\n    .then((data) => parseUser(data))\n}\n\nconst fetchUserRelationship = ({ id, credentials }) => {\n  let url = `${MASTODON_USER_RELATIONSHIPS_URL}/?id=${id}`\n  return fetch(url, { headers: authHeaders(credentials) })\n    .then((response) => {\n      return new Promise((resolve, reject) => response.json()\n        .then((json) => {\n          if (!response.ok) {\n            return reject(new StatusCodeError(response.status, json, { url }, response))\n          }\n          return resolve(json)\n        }))\n    })\n}\n\nconst fetchFriends = ({ id, maxId, sinceId, limit = 20, credentials }) => {\n  let url = MASTODON_FOLLOWING_URL(id)\n  const args = [\n    maxId && `max_id=${maxId}`,\n    sinceId && `since_id=${sinceId}`,\n    limit && `limit=${limit}`,\n    `with_relationships=true`\n  ].filter(_ => _).join('&')\n\n  url = url + (args ? '?' + args : '')\n  return fetch(url, { headers: authHeaders(credentials) })\n    .then((data) => data.json())\n    .then((data) => data.map(parseUser))\n}\n\nconst exportFriends = ({ id, credentials }) => {\n  return new Promise(async (resolve, reject) => {\n    try {\n      let friends = []\n      let more = true\n      while (more) {\n        const maxId = friends.length > 0 ? last(friends).id : undefined\n        const users = await fetchFriends({ id, maxId, credentials })\n        friends = concat(friends, users)\n        if (users.length === 0) {\n          more = false\n        }\n      }\n      resolve(friends)\n    } catch (err) {\n      reject(err)\n    }\n  })\n}\n\nconst fetchFollowers = ({ id, maxId, sinceId, limit = 20, credentials }) => {\n  let url = MASTODON_FOLLOWERS_URL(id)\n  const args = [\n    maxId && `max_id=${maxId}`,\n    sinceId && `since_id=${sinceId}`,\n    limit && `limit=${limit}`,\n    `with_relationships=true`\n  ].filter(_ => _).join('&')\n\n  url += args ? '?' + args : ''\n  return fetch(url, { headers: authHeaders(credentials) })\n    .then((data) => data.json())\n    .then((data) => data.map(parseUser))\n}\n\nconst fetchFollowRequests = ({ credentials }) => {\n  const url = MASTODON_FOLLOW_REQUESTS_URL\n  return fetch(url, { headers: authHeaders(credentials) })\n    .then((data) => data.json())\n    .then((data) => data.map(parseUser))\n}\n\nconst fetchConversation = ({ id, credentials }) => {\n  let urlContext = MASTODON_STATUS_CONTEXT_URL(id)\n  return fetch(urlContext, { headers: authHeaders(credentials) })\n    .then((data) => {\n      if (data.ok) {\n        return data\n      }\n      throw new Error('Error fetching timeline', data)\n    })\n    .then((data) => data.json())\n    .then(({ ancestors, descendants }) => ({\n      ancestors: ancestors.map(parseStatus),\n      descendants: descendants.map(parseStatus)\n    }))\n}\n\nconst fetchStatus = ({ id, credentials }) => {\n  let url = MASTODON_STATUS_URL(id)\n  return fetch(url, { headers: authHeaders(credentials) })\n    .then((data) => {\n      if (data.ok) {\n        return data\n      }\n      throw new Error('Error fetching timeline', data)\n    })\n    .then((data) => data.json())\n    .then((data) => parseStatus(data))\n}\n\nconst tagUser = ({ tag, credentials, user }) => {\n  const screenName = user.screen_name\n  const form = {\n    nicknames: [screenName],\n    tags: [tag]\n  }\n\n  const headers = authHeaders(credentials)\n  headers['Content-Type'] = 'application/json'\n\n  return fetch(TAG_USER_URL, {\n    method: 'PUT',\n    headers: headers,\n    body: JSON.stringify(form)\n  })\n}\n\nconst untagUser = ({ tag, credentials, user }) => {\n  const screenName = user.screen_name\n  const body = {\n    nicknames: [screenName],\n    tags: [tag]\n  }\n\n  const headers = authHeaders(credentials)\n  headers['Content-Type'] = 'application/json'\n\n  return fetch(TAG_USER_URL, {\n    method: 'DELETE',\n    headers: headers,\n    body: JSON.stringify(body)\n  })\n}\n\nconst addRight = ({ right, credentials, user }) => {\n  const screenName = user.screen_name\n\n  return fetch(PERMISSION_GROUP_URL(screenName, right), {\n    method: 'POST',\n    headers: authHeaders(credentials),\n    body: {}\n  })\n}\n\nconst deleteRight = ({ right, credentials, user }) => {\n  const screenName = user.screen_name\n\n  return fetch(PERMISSION_GROUP_URL(screenName, right), {\n    method: 'DELETE',\n    headers: authHeaders(credentials),\n    body: {}\n  })\n}\n\nconst activateUser = ({ credentials, user: { screen_name: nickname } }) => {\n  return promisedRequest({\n    url: ACTIVATE_USER_URL,\n    method: 'PATCH',\n    credentials,\n    payload: {\n      nicknames: [nickname]\n    }\n  }).then(response => get(response, 'users.0'))\n}\n\nconst deactivateUser = ({ credentials, user: { screen_name: nickname } }) => {\n  return promisedRequest({\n    url: DEACTIVATE_USER_URL,\n    method: 'PATCH',\n    credentials,\n    payload: {\n      nicknames: [nickname]\n    }\n  }).then(response => get(response, 'users.0'))\n}\n\nconst deleteUser = ({ credentials, user }) => {\n  const screenName = user.screen_name\n  const headers = authHeaders(credentials)\n\n  return fetch(`${ADMIN_USERS_URL}?nickname=${screenName}`, {\n    method: 'DELETE',\n    headers: headers\n  })\n}\n\nconst fetchTimeline = ({\n  timeline,\n  credentials,\n  since = false,\n  until = false,\n  userId = false,\n  tag = false,\n  withMuted = false,\n  replyVisibility = 'all'\n}) => {\n  const timelineUrls = {\n    public: MASTODON_PUBLIC_TIMELINE,\n    friends: MASTODON_USER_HOME_TIMELINE_URL,\n    dms: MASTODON_DIRECT_MESSAGES_TIMELINE_URL,\n    notifications: MASTODON_USER_NOTIFICATIONS_URL,\n    'publicAndExternal': MASTODON_PUBLIC_TIMELINE,\n    user: MASTODON_USER_TIMELINE_URL,\n    media: MASTODON_USER_TIMELINE_URL,\n    favorites: MASTODON_USER_FAVORITES_TIMELINE_URL,\n    tag: MASTODON_TAG_TIMELINE_URL,\n    bookmarks: MASTODON_BOOKMARK_TIMELINE_URL\n  }\n  const isNotifications = timeline === 'notifications'\n  const params = []\n\n  let url = timelineUrls[timeline]\n\n  if (timeline === 'user' || timeline === 'media') {\n    url = url(userId)\n  }\n\n  if (since) {\n    params.push(['since_id', since])\n  }\n  if (until) {\n    params.push(['max_id', until])\n  }\n  if (tag) {\n    url = url(tag)\n  }\n  if (timeline === 'media') {\n    params.push(['only_media', 1])\n  }\n  if (timeline === 'public') {\n    params.push(['local', true])\n  }\n  if (timeline === 'public' || timeline === 'publicAndExternal') {\n    params.push(['only_media', false])\n  }\n  if (timeline !== 'favorites' && timeline !== 'bookmarks') {\n    params.push(['with_muted', withMuted])\n  }\n  if (replyVisibility !== 'all') {\n    params.push(['reply_visibility', replyVisibility])\n  }\n\n  params.push(['limit', 20])\n\n  const queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')\n  url += `?${queryString}`\n\n  let status = ''\n  let statusText = ''\n\n  let pagination = {}\n  return fetch(url, { headers: authHeaders(credentials) })\n    .then((data) => {\n      status = data.status\n      statusText = data.statusText\n      pagination = parseLinkHeaderPagination(data.headers.get('Link'), {\n        flakeId: timeline !== 'bookmarks' && timeline !== 'notifications'\n      })\n      return data\n    })\n    .then((data) => data.json())\n    .then((data) => {\n      if (!data.errors) {\n        return { data: data.map(isNotifications ? parseNotification : parseStatus), pagination }\n      } else {\n        data.status = status\n        data.statusText = statusText\n        return data\n      }\n    })\n}\n\nconst fetchPinnedStatuses = ({ id, credentials }) => {\n  const url = MASTODON_USER_TIMELINE_URL(id) + '?pinned=true'\n  return promisedRequest({ url, credentials })\n    .then((data) => data.map(parseStatus))\n}\n\nconst verifyCredentials = (user) => {\n  return fetch(MASTODON_LOGIN_URL, {\n    headers: authHeaders(user)\n  })\n    .then((response) => {\n      if (response.ok) {\n        return response.json()\n      } else {\n        return {\n          error: response\n        }\n      }\n    })\n    .then((data) => data.error ? data : parseUser(data))\n}\n\nconst favorite = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_FAVORITE_URL(id), method: 'POST', credentials })\n    .then((data) => parseStatus(data))\n}\n\nconst unfavorite = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_UNFAVORITE_URL(id), method: 'POST', credentials })\n    .then((data) => parseStatus(data))\n}\n\nconst retweet = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_RETWEET_URL(id), method: 'POST', credentials })\n    .then((data) => parseStatus(data))\n}\n\nconst unretweet = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_UNRETWEET_URL(id), method: 'POST', credentials })\n    .then((data) => parseStatus(data))\n}\n\nconst bookmarkStatus = ({ id, credentials }) => {\n  return promisedRequest({\n    url: MASTODON_BOOKMARK_STATUS_URL(id),\n    headers: authHeaders(credentials),\n    method: 'POST'\n  })\n}\n\nconst unbookmarkStatus = ({ id, credentials }) => {\n  return promisedRequest({\n    url: MASTODON_UNBOOKMARK_STATUS_URL(id),\n    headers: authHeaders(credentials),\n    method: 'POST'\n  })\n}\n\nconst postStatus = ({\n  credentials,\n  status,\n  spoilerText,\n  visibility,\n  sensitive,\n  poll,\n  mediaIds = [],\n  inReplyToStatusId,\n  contentType,\n  preview,\n  idempotencyKey\n}) => {\n  const form = new FormData()\n  const pollOptions = poll.options || []\n\n  form.append('status', status)\n  form.append('source', 'Pleroma FE')\n  if (spoilerText) form.append('spoiler_text', spoilerText)\n  if (visibility) form.append('visibility', visibility)\n  if (sensitive) form.append('sensitive', sensitive)\n  if (contentType) form.append('content_type', contentType)\n  mediaIds.forEach(val => {\n    form.append('media_ids[]', val)\n  })\n  if (pollOptions.some(option => option !== '')) {\n    const normalizedPoll = {\n      expires_in: poll.expiresIn,\n      multiple: poll.multiple\n    }\n    Object.keys(normalizedPoll).forEach(key => {\n      form.append(`poll[${key}]`, normalizedPoll[key])\n    })\n\n    pollOptions.forEach(option => {\n      form.append('poll[options][]', option)\n    })\n  }\n  if (inReplyToStatusId) {\n    form.append('in_reply_to_id', inReplyToStatusId)\n  }\n  if (preview) {\n    form.append('preview', 'true')\n  }\n\n  let postHeaders = authHeaders(credentials)\n  if (idempotencyKey) {\n    postHeaders['idempotency-key'] = idempotencyKey\n  }\n\n  return fetch(MASTODON_POST_STATUS_URL, {\n    body: form,\n    method: 'POST',\n    headers: postHeaders\n  })\n    .then((response) => {\n      return response.json()\n    })\n    .then((data) => data.error ? data : parseStatus(data))\n}\n\nconst deleteStatus = ({ id, credentials }) => {\n  return fetch(MASTODON_DELETE_URL(id), {\n    headers: authHeaders(credentials),\n    method: 'DELETE'\n  })\n}\n\nconst uploadMedia = ({ formData, credentials }) => {\n  return fetch(MASTODON_MEDIA_UPLOAD_URL, {\n    body: formData,\n    method: 'POST',\n    headers: authHeaders(credentials)\n  })\n    .then((data) => data.json())\n    .then((data) => parseAttachment(data))\n}\n\nconst setMediaDescription = ({ id, description, credentials }) => {\n  return promisedRequest({\n    url: `${MASTODON_MEDIA_UPLOAD_URL}/${id}`,\n    method: 'PUT',\n    headers: authHeaders(credentials),\n    payload: {\n      description\n    }\n  }).then((data) => parseAttachment(data))\n}\n\nconst importMutes = ({ file, credentials }) => {\n  const formData = new FormData()\n  formData.append('list', file)\n  return fetch(MUTES_IMPORT_URL, {\n    body: formData,\n    method: 'POST',\n    headers: authHeaders(credentials)\n  })\n    .then((response) => response.ok)\n}\n\nconst importBlocks = ({ file, credentials }) => {\n  const formData = new FormData()\n  formData.append('list', file)\n  return fetch(BLOCKS_IMPORT_URL, {\n    body: formData,\n    method: 'POST',\n    headers: authHeaders(credentials)\n  })\n    .then((response) => response.ok)\n}\n\nconst importFollows = ({ file, credentials }) => {\n  const formData = new FormData()\n  formData.append('list', file)\n  return fetch(FOLLOW_IMPORT_URL, {\n    body: formData,\n    method: 'POST',\n    headers: authHeaders(credentials)\n  })\n    .then((response) => response.ok)\n}\n\nconst deleteAccount = ({ credentials, password }) => {\n  const form = new FormData()\n\n  form.append('password', password)\n\n  return fetch(DELETE_ACCOUNT_URL, {\n    body: form,\n    method: 'POST',\n    headers: authHeaders(credentials)\n  })\n    .then((response) => response.json())\n}\n\nconst changeEmail = ({ credentials, email, password }) => {\n  const form = new FormData()\n\n  form.append('email', email)\n  form.append('password', password)\n\n  return fetch(CHANGE_EMAIL_URL, {\n    body: form,\n    method: 'POST',\n    headers: authHeaders(credentials)\n  })\n    .then((response) => response.json())\n}\n\nconst changePassword = ({ credentials, password, newPassword, newPasswordConfirmation }) => {\n  const form = new FormData()\n\n  form.append('password', password)\n  form.append('new_password', newPassword)\n  form.append('new_password_confirmation', newPasswordConfirmation)\n\n  return fetch(CHANGE_PASSWORD_URL, {\n    body: form,\n    method: 'POST',\n    headers: authHeaders(credentials)\n  })\n    .then((response) => response.json())\n}\n\nconst settingsMFA = ({ credentials }) => {\n  return fetch(MFA_SETTINGS_URL, {\n    headers: authHeaders(credentials),\n    method: 'GET'\n  }).then((data) => data.json())\n}\n\nconst mfaDisableOTP = ({ credentials, password }) => {\n  const form = new FormData()\n\n  form.append('password', password)\n\n  return fetch(MFA_DISABLE_OTP_URL, {\n    body: form,\n    method: 'DELETE',\n    headers: authHeaders(credentials)\n  })\n    .then((response) => response.json())\n}\n\nconst mfaConfirmOTP = ({ credentials, password, token }) => {\n  const form = new FormData()\n\n  form.append('password', password)\n  form.append('code', token)\n\n  return fetch(MFA_CONFIRM_OTP_URL, {\n    body: form,\n    headers: authHeaders(credentials),\n    method: 'POST'\n  }).then((data) => data.json())\n}\nconst mfaSetupOTP = ({ credentials }) => {\n  return fetch(MFA_SETUP_OTP_URL, {\n    headers: authHeaders(credentials),\n    method: 'GET'\n  }).then((data) => data.json())\n}\nconst generateMfaBackupCodes = ({ credentials }) => {\n  return fetch(MFA_BACKUP_CODES_URL, {\n    headers: authHeaders(credentials),\n    method: 'GET'\n  }).then((data) => data.json())\n}\n\nconst fetchMutes = ({ credentials }) => {\n  return promisedRequest({ url: MASTODON_USER_MUTES_URL, credentials })\n    .then((users) => users.map(parseUser))\n}\n\nconst muteUser = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_MUTE_USER_URL(id), credentials, method: 'POST' })\n}\n\nconst unmuteUser = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_UNMUTE_USER_URL(id), credentials, method: 'POST' })\n}\n\nconst fetchMascot = ({ credentials }) => {\n  return promisedRequest({ url: MASTODON_MASCOT_URL, credentials })\n}\n\nconst updateMascot = ({ mascot, credentials }) => {\n  const form = new FormData()\n  form.append('file', mascot)\n  return fetch(MASTODON_MASCOT_URL, {\n    headers: authHeaders(credentials),\n    method: 'PUT',\n    body: form\n  }).then((data) => data.json())\n}\n\nconst subscribeUser = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_SUBSCRIBE_USER(id), credentials, method: 'POST' })\n}\n\nconst unsubscribeUser = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_UNSUBSCRIBE_USER(id), credentials, method: 'POST' })\n}\n\nconst fetchBlocks = ({ credentials }) => {\n  return promisedRequest({ url: MASTODON_USER_BLOCKS_URL, credentials })\n    .then((users) => users.map(parseUser))\n}\n\nconst fetchOAuthTokens = ({ credentials }) => {\n  const url = '/api/oauth_tokens.json'\n\n  return fetch(url, {\n    headers: authHeaders(credentials)\n  }).then((data) => {\n    if (data.ok) {\n      return data.json()\n    }\n    throw new Error('Error fetching auth tokens', data)\n  })\n}\n\nconst revokeOAuthToken = ({ id, credentials }) => {\n  const url = `/api/oauth_tokens/${id}`\n\n  return fetch(url, {\n    headers: authHeaders(credentials),\n    method: 'DELETE'\n  })\n}\n\nconst suggestions = ({ credentials }) => {\n  return fetch(SUGGESTIONS_URL, {\n    headers: authHeaders(credentials)\n  }).then((data) => data.json())\n}\n\nconst markNotificationsAsSeen = ({ id, credentials, single = false }) => {\n  const body = new FormData()\n\n  if (single) {\n    body.append('id', id)\n  } else {\n    body.append('max_id', id)\n  }\n\n  return fetch(NOTIFICATION_READ_URL, {\n    body,\n    headers: authHeaders(credentials),\n    method: 'POST'\n  }).then((data) => data.json())\n}\n\nconst vote = ({ pollId, choices, credentials }) => {\n  const form = new FormData()\n  form.append('choices', choices)\n\n  return promisedRequest({\n    url: MASTODON_VOTE_URL(encodeURIComponent(pollId)),\n    method: 'POST',\n    credentials,\n    payload: {\n      choices: choices\n    }\n  })\n}\n\nconst fetchPoll = ({ pollId, credentials }) => {\n  return promisedRequest(\n    {\n      url: MASTODON_POLL_URL(encodeURIComponent(pollId)),\n      method: 'GET',\n      credentials\n    }\n  )\n}\n\nconst fetchFavoritedByUsers = ({ id, credentials }) => {\n  return promisedRequest({\n    url: MASTODON_STATUS_FAVORITEDBY_URL(id),\n    method: 'GET',\n    credentials\n  }).then((users) => users.map(parseUser))\n}\n\nconst fetchRebloggedByUsers = ({ id, credentials }) => {\n  return promisedRequest({\n    url: MASTODON_STATUS_REBLOGGEDBY_URL(id),\n    method: 'GET',\n    credentials\n  }).then((users) => users.map(parseUser))\n}\n\nconst fetchEmojiReactions = ({ id, credentials }) => {\n  return promisedRequest({ url: PLEROMA_EMOJI_REACTIONS_URL(id), credentials })\n    .then((reactions) => reactions.map(r => {\n      r.accounts = r.accounts.map(parseUser)\n      return r\n    }))\n}\n\nconst reactWithEmoji = ({ id, emoji, credentials }) => {\n  return promisedRequest({\n    url: PLEROMA_EMOJI_REACT_URL(id, emoji),\n    method: 'PUT',\n    credentials\n  }).then(parseStatus)\n}\n\nconst unreactWithEmoji = ({ id, emoji, credentials }) => {\n  return promisedRequest({\n    url: PLEROMA_EMOJI_UNREACT_URL(id, emoji),\n    method: 'DELETE',\n    credentials\n  }).then(parseStatus)\n}\n\nconst reportUser = ({ credentials, userId, statusIds, comment, forward }) => {\n  return promisedRequest({\n    url: MASTODON_REPORT_USER_URL,\n    method: 'POST',\n    payload: {\n      'account_id': userId,\n      'status_ids': statusIds,\n      comment,\n      forward\n    },\n    credentials\n  })\n}\n\nconst searchUsers = ({ credentials, query }) => {\n  return promisedRequest({\n    url: MASTODON_USER_SEARCH_URL,\n    params: {\n      q: query,\n      resolve: true\n    },\n    credentials\n  })\n    .then((data) => data.map(parseUser))\n}\n\nconst search2 = ({ credentials, q, resolve, limit, offset, following }) => {\n  let url = MASTODON_SEARCH_2\n  let params = []\n\n  if (q) {\n    params.push(['q', encodeURIComponent(q)])\n  }\n\n  if (resolve) {\n    params.push(['resolve', resolve])\n  }\n\n  if (limit) {\n    params.push(['limit', limit])\n  }\n\n  if (offset) {\n    params.push(['offset', offset])\n  }\n\n  if (following) {\n    params.push(['following', true])\n  }\n\n  params.push(['with_relationships', true])\n\n  let queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')\n  url += `?${queryString}`\n\n  return fetch(url, { headers: authHeaders(credentials) })\n    .then((data) => {\n      if (data.ok) {\n        return data\n      }\n      throw new Error('Error fetching search result', data)\n    })\n    .then((data) => { return data.json() })\n    .then((data) => {\n      data.accounts = data.accounts.slice(0, limit).map(u => parseUser(u))\n      data.statuses = data.statuses.slice(0, limit).map(s => parseStatus(s))\n      return data\n    })\n}\n\nconst fetchKnownDomains = ({ credentials }) => {\n  return promisedRequest({ url: MASTODON_KNOWN_DOMAIN_LIST_URL, credentials })\n}\n\nconst fetchDomainMutes = ({ credentials }) => {\n  return promisedRequest({ url: MASTODON_DOMAIN_BLOCKS_URL, credentials })\n}\n\nconst muteDomain = ({ domain, credentials }) => {\n  return promisedRequest({\n    url: MASTODON_DOMAIN_BLOCKS_URL,\n    method: 'POST',\n    payload: { domain },\n    credentials\n  })\n}\n\nconst unmuteDomain = ({ domain, credentials }) => {\n  return promisedRequest({\n    url: MASTODON_DOMAIN_BLOCKS_URL,\n    method: 'DELETE',\n    payload: { domain },\n    credentials\n  })\n}\n\nconst dismissNotification = ({ credentials, id }) => {\n  return promisedRequest({\n    url: MASTODON_DISMISS_NOTIFICATION_URL(id),\n    method: 'POST',\n    payload: { id },\n    credentials\n  })\n}\n\nexport const getMastodonSocketURI = ({ credentials, stream, args = {} }) => {\n  return Object.entries({\n    ...(credentials\n      ? { access_token: credentials }\n      : {}\n    ),\n    stream,\n    ...args\n  }).reduce((acc, [key, val]) => {\n    return acc + `${key}=${val}&`\n  }, MASTODON_STREAMING + '?')\n}\n\nconst MASTODON_STREAMING_EVENTS = new Set([\n  'update',\n  'notification',\n  'delete',\n  'filters_changed'\n])\n\nconst PLEROMA_STREAMING_EVENTS = new Set([\n  'pleroma:chat_update'\n])\n\n// A thin wrapper around WebSocket API that allows adding a pre-processor to it\n// Uses EventTarget and a CustomEvent to proxy events\nexport const ProcessedWS = ({\n  url,\n  preprocessor = handleMastoWS,\n  id = 'Unknown'\n}) => {\n  const eventTarget = new EventTarget()\n  const socket = new WebSocket(url)\n  if (!socket) throw new Error(`Failed to create socket ${id}`)\n  const proxy = (original, eventName, processor = a => a) => {\n    original.addEventListener(eventName, (eventData) => {\n      eventTarget.dispatchEvent(new CustomEvent(\n        eventName,\n        { detail: processor(eventData) }\n      ))\n    })\n  }\n  socket.addEventListener('open', (wsEvent) => {\n    console.debug(`[WS][${id}] Socket connected`, wsEvent)\n  })\n  socket.addEventListener('error', (wsEvent) => {\n    console.debug(`[WS][${id}] Socket errored`, wsEvent)\n  })\n  socket.addEventListener('close', (wsEvent) => {\n    console.debug(\n      `[WS][${id}] Socket disconnected with code ${wsEvent.code}`,\n      wsEvent\n    )\n  })\n  // Commented code reason: very spammy, uncomment to enable message debug logging\n  /*\n  socket.addEventListener('message', (wsEvent) => {\n    console.debug(\n      `[WS][${id}] Message received`,\n      wsEvent\n    )\n  })\n  /**/\n\n  proxy(socket, 'open')\n  proxy(socket, 'close')\n  proxy(socket, 'message', preprocessor)\n  proxy(socket, 'error')\n\n  // 1000 = Normal Closure\n  eventTarget.close = () => { socket.close(1000, 'Shutting down socket') }\n  eventTarget.getState = () => socket.readyState\n\n  return eventTarget\n}\n\nexport const handleMastoWS = (wsEvent) => {\n  const { data } = wsEvent\n  if (!data) return\n  const parsedEvent = JSON.parse(data)\n  const { event, payload } = parsedEvent\n  if (MASTODON_STREAMING_EVENTS.has(event) || PLEROMA_STREAMING_EVENTS.has(event)) {\n    // MastoBE and PleromaBE both send payload for delete as a PLAIN string\n    if (event === 'delete') {\n      return { event, id: payload }\n    }\n    const data = payload ? JSON.parse(payload) : null\n    if (event === 'update') {\n      return { event, status: parseStatus(data) }\n    } else if (event === 'notification') {\n      return { event, notification: parseNotification(data) }\n    } else if (event === 'pleroma:chat_update') {\n      return { event, chatUpdate: parseChat(data) }\n    }\n  } else {\n    console.warn('Unknown event', wsEvent)\n    return null\n  }\n}\n\nexport const WSConnectionStatus = Object.freeze({\n  'JOINED': 1,\n  'CLOSED': 2,\n  'ERROR': 3,\n  'DISABLED': 4,\n  'STARTING': 5,\n  'STARTING_INITIAL': 6\n})\n\nconst chats = ({ credentials }) => {\n  return fetch(PLEROMA_CHATS_URL, { headers: authHeaders(credentials) })\n    .then((data) => data.json())\n    .then((data) => {\n      return { chats: data.map(parseChat).filter(c => c) }\n    })\n}\n\nconst getOrCreateChat = ({ accountId, credentials }) => {\n  return promisedRequest({\n    url: PLEROMA_CHAT_URL(accountId),\n    method: 'POST',\n    credentials\n  })\n}\n\nconst chatMessages = ({ id, credentials, maxId, sinceId, limit = 20 }) => {\n  let url = PLEROMA_CHAT_MESSAGES_URL(id)\n  const args = [\n    maxId && `max_id=${maxId}`,\n    sinceId && `since_id=${sinceId}`,\n    limit && `limit=${limit}`\n  ].filter(_ => _).join('&')\n\n  url = url + (args ? '?' + args : '')\n\n  return promisedRequest({\n    url,\n    method: 'GET',\n    credentials\n  })\n}\n\nconst sendChatMessage = ({ id, content, mediaId = null, idempotencyKey, credentials }) => {\n  const payload = {\n    'content': content\n  }\n\n  if (mediaId) {\n    payload['media_id'] = mediaId\n  }\n\n  const headers = {}\n\n  if (idempotencyKey) {\n    headers['idempotency-key'] = idempotencyKey\n  }\n\n  return promisedRequest({\n    url: PLEROMA_CHAT_MESSAGES_URL(id),\n    method: 'POST',\n    payload: payload,\n    credentials,\n    headers\n  })\n}\n\nconst readChat = ({ id, lastReadId, credentials }) => {\n  return promisedRequest({\n    url: PLEROMA_CHAT_READ_URL(id),\n    method: 'POST',\n    payload: {\n      'last_read_id': lastReadId\n    },\n    credentials\n  })\n}\n\nconst deleteChatMessage = ({ chatId, messageId, credentials }) => {\n  return promisedRequest({\n    url: PLEROMA_DELETE_CHAT_MESSAGE_URL(chatId, messageId),\n    method: 'DELETE',\n    credentials\n  })\n}\n\nconst apiService = {\n  verifyCredentials,\n  fetchTimeline,\n  fetchPinnedStatuses,\n  fetchConversation,\n  fetchStatus,\n  fetchFriends,\n  exportFriends,\n  fetchFollowers,\n  followUser,\n  unfollowUser,\n  pinOwnStatus,\n  unpinOwnStatus,\n  muteConversation,\n  unmuteConversation,\n  blockUser,\n  unblockUser,\n  fetchUser,\n  fetchUserRelationship,\n  favorite,\n  unfavorite,\n  retweet,\n  unretweet,\n  bookmarkStatus,\n  unbookmarkStatus,\n  postStatus,\n  deleteStatus,\n  uploadMedia,\n  setMediaDescription,\n  fetchMutes,\n  muteUser,\n  unmuteUser,\n  subscribeUser,\n  unsubscribeUser,\n  fetchBlocks,\n  fetchOAuthTokens,\n  revokeOAuthToken,\n  tagUser,\n  untagUser,\n  deleteUser,\n  addRight,\n  deleteRight,\n  activateUser,\n  deactivateUser,\n  register,\n  getCaptcha,\n  updateProfileImages,\n  updateProfile,\n  importMutes,\n  importBlocks,\n  importFollows,\n  deleteAccount,\n  changeEmail,\n  changePassword,\n  settingsMFA,\n  mfaDisableOTP,\n  generateMfaBackupCodes,\n  mfaSetupOTP,\n  mfaConfirmOTP,\n  fetchFollowRequests,\n  approveUser,\n  denyUser,\n  suggestions,\n  markNotificationsAsSeen,\n  dismissNotification,\n  vote,\n  fetchPoll,\n  fetchFavoritedByUsers,\n  fetchRebloggedByUsers,\n  fetchMascot,\n  updateMascot,\n  fetchEmojiReactions,\n  reactWithEmoji,\n  unreactWithEmoji,\n  reportUser,\n  updateNotificationSettings,\n  search2,\n  searchUsers,\n  fetchKnownDomains,\n  fetchDomainMutes,\n  muteDomain,\n  unmuteDomain,\n  chats,\n  getOrCreateChat,\n  chatMessages,\n  sendChatMessage,\n  readChat,\n  deleteChatMessage\n}\n\nexport default apiService\n","import { invertLightness, contrastRatio } from 'chromatism'\n\n// useful for visualizing color when debugging\nexport const consoleColor = (color) => console.log('%c##########', 'background: ' + color + '; color: ' + color)\n\n/**\n * Convert r, g, b values into hex notation. All components are [0-255]\n *\n * @param {Number|String|Object} r - Either red component, {r,g,b} object, or hex string\n * @param {Number} [g] - Green component\n * @param {Number} [b] - Blue component\n */\nexport const rgb2hex = (r, g, b) => {\n  if (r === null || typeof r === 'undefined') {\n    return undefined\n  }\n  // TODO: clean up this mess\n  if (r[0] === '#' || r === 'transparent') {\n    return r\n  }\n  if (typeof r === 'object') {\n    ({ r, g, b } = r)\n  }\n  [r, g, b] = [r, g, b].map(val => {\n    val = Math.ceil(val)\n    val = val < 0 ? 0 : val\n    val = val > 255 ? 255 : val\n    return val\n  })\n  return `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`\n}\n\n/**\n * Converts 8-bit RGB component into linear component\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/relative-luminance.xml\n * https://en.wikipedia.org/wiki/SRGB#The_reverse_transformation\n *\n * @param {Number} bit - color component [0..255]\n * @returns {Number} linear component [0..1]\n */\nconst c2linear = (bit) => {\n  // W3C gives 0.03928 while wikipedia states 0.04045\n  // what those magical numbers mean - I don't know.\n  // something about gamma-correction, i suppose.\n  // Sticking with W3C example.\n  const c = bit / 255\n  if (c < 0.03928) {\n    return c / 12.92\n  } else {\n    return Math.pow((c + 0.055) / 1.055, 2.4)\n  }\n}\n\n/**\n * Converts sRGB into linear RGB\n * @param {Object} srgb - sRGB color\n * @returns {Object} linear rgb color\n */\nconst srgbToLinear = (srgb) => {\n  return 'rgb'.split('').reduce((acc, c) => { acc[c] = c2linear(srgb[c]); return acc }, {})\n}\n\n/**\n * Calculates relative luminance for given color\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/relative-luminance.xml\n *\n * @param {Object} srgb - sRGB color\n * @returns {Number} relative luminance\n */\nexport const relativeLuminance = (srgb) => {\n  const { r, g, b } = srgbToLinear(srgb)\n  return 0.2126 * r + 0.7152 * g + 0.0722 * b\n}\n\n/**\n * Generates color ratio between two colors. Order is unimporant\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\n *\n * @param {Object} a - sRGB color\n * @param {Object} b - sRGB color\n * @returns {Number} color ratio\n */\nexport const getContrastRatio = (a, b) => {\n  const la = relativeLuminance(a)\n  const lb = relativeLuminance(b)\n  const [l1, l2] = la > lb ? [la, lb] : [lb, la]\n\n  return (l1 + 0.05) / (l2 + 0.05)\n}\n\n/**\n * Same as `getContrastRatio` but for multiple layers in-between\n *\n * @param {Object} text - text color (topmost layer)\n * @param {[Object, Number]} layers[] - layers between text and bedrock\n * @param {Object} bedrock - layer at the very bottom\n */\nexport const getContrastRatioLayers = (text, layers, bedrock) => {\n  return getContrastRatio(alphaBlendLayers(bedrock, layers), text)\n}\n\n/**\n * This performs alpha blending between solid background and semi-transparent foreground\n *\n * @param {Object} fg - top layer color\n * @param {Number} fga - top layer's alpha\n * @param {Object} bg - bottom layer color\n * @returns {Object} sRGB of resulting color\n */\nexport const alphaBlend = (fg, fga, bg) => {\n  if (fga === 1 || typeof fga === 'undefined') return fg\n  return 'rgb'.split('').reduce((acc, c) => {\n    // Simplified https://en.wikipedia.org/wiki/Alpha_compositing#Alpha_blending\n    // for opaque bg and transparent fg\n    acc[c] = (fg[c] * fga + bg[c] * (1 - fga))\n    return acc\n  }, {})\n}\n\n/**\n * Same as `alphaBlend` but for multiple layers in-between\n *\n * @param {Object} bedrock - layer at the very bottom\n * @param {[Object, Number]} layers[] - layers between text and bedrock\n */\nexport const alphaBlendLayers = (bedrock, layers) => layers.reduce((acc, [color, opacity]) => {\n  return alphaBlend(color, opacity, acc)\n}, bedrock)\n\nexport const invert = (rgb) => {\n  return 'rgb'.split('').reduce((acc, c) => {\n    acc[c] = 255 - rgb[c]\n    return acc\n  }, {})\n}\n\n/**\n * Converts #rrggbb hex notation into an {r, g, b} object\n *\n * @param {String} hex - #rrggbb string\n * @returns {Object} rgb representation of the color, values are 0-255\n */\nexport const hex2rgb = (hex) => {\n  const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n  return result ? {\n    r: parseInt(result[1], 16),\n    g: parseInt(result[2], 16),\n    b: parseInt(result[3], 16)\n  } : null\n}\n\n/**\n * Old somewhat weird function for mixing two colors together\n *\n * @param {Object} a - one color (rgb)\n * @param {Object} b - other color (rgb)\n * @returns {Object} result\n */\nexport const mixrgb = (a, b) => {\n  return 'rgb'.split('').reduce((acc, k) => {\n    acc[k] = (a[k] + b[k]) / 2\n    return acc\n  }, {})\n}\n/**\n * Converts rgb object into a CSS rgba() color\n *\n * @param {Object} color - rgb\n * @returns {String} CSS rgba() color\n */\nexport const rgba2css = function (rgba) {\n  return `rgba(${Math.floor(rgba.r)}, ${Math.floor(rgba.g)}, ${Math.floor(rgba.b)}, ${rgba.a})`\n}\n\n/**\n * Get text color for given background color and intended text color\n * This checks if text and background don't have enough color and inverts\n * text color's lightness if needed. If text color is still not enough it\n * will fall back to black or white\n *\n * @param {Object} bg - background color\n * @param {Object} text - intended text color\n * @param {Boolean} preserve - try to preserve intended text color's hue/saturation (i.e. no BW)\n */\nexport const getTextColor = function (bg, text, preserve) {\n  const contrast = getContrastRatio(bg, text)\n\n  if (contrast < 4.5) {\n    const base = typeof text.a !== 'undefined' ? { a: text.a } : {}\n    const result = Object.assign(base, invertLightness(text).rgb)\n    if (!preserve && getContrastRatio(bg, result) < 4.5) {\n      // B&W\n      return contrastRatio(bg, text).rgb\n    }\n    // Inverted color\n    return result\n  }\n  return text\n}\n\n/**\n * Converts color to CSS Color value\n *\n * @param {Object|String} input - color\n * @param {Number} [a] - alpha value\n * @returns {String} a CSS Color value\n */\nexport const getCssColor = (input, a) => {\n  let rgb = {}\n  if (typeof input === 'object') {\n    rgb = input\n  } else if (typeof input === 'string') {\n    if (input.startsWith('#')) {\n      rgb = hex2rgb(input)\n    } else {\n      return input\n    }\n  }\n  return rgba2css({ ...rgb, a })\n}\n","import StillImage from '../still-image/still-image.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\n\nimport {\n  faRobot\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faRobot\n)\n\nconst UserAvatar = {\n  props: [\n    'user',\n    'betterShadow',\n    'compact',\n    'bot'\n  ],\n  data () {\n    return {\n      showPlaceholder: false,\n      defaultAvatar: `${this.$store.state.instance.server + this.$store.state.instance.defaultAvatar}`\n    }\n  },\n  components: {\n    StillImage\n  },\n  methods: {\n    imgSrc (src) {\n      return (!src || this.showPlaceholder) ? this.defaultAvatar : src\n    },\n    imageLoadError () {\n      this.showPlaceholder = true\n    }\n  }\n}\n\nexport default UserAvatar\n","import { render } from \"./user_avatar.vue?vue&type=template&id=764c87f9\"\nimport script from \"./user_avatar.js?vue&type=script&lang=js\"\nexport * from \"./user_avatar.js?vue&type=script&lang=js\"\n\nimport \"./user_avatar.vue?vue&type=style&index=0&id=764c87f9&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <span\n    class=\"Avatar\"\n    :class=\"{ '-compact': compact }\"\n  >\n    <StillImage\n      v-if=\"user\"\n      class=\"avatar\"\n      :alt=\"user.screen_name_ui\"\n      :title=\"user.screen_name_ui\"\n      :src=\"imgSrc(user.profile_image_url_original)\"\n      :image-load-error=\"imageLoadError\"\n      :class=\"{ '-compact': compact, '-better-shadow': betterShadow }\"\n    />\n    <div\n      v-else\n      class=\"avatar -placeholder\"\n      :class=\"{ '-compact': compact }\"\n    />\n    <FAIcon\n      v-if=\"bot\"\n      icon=\"robot\"\n      class=\"bot-indicator\"\n    />\n  </span>\n</template>\n\n<script src=\"./user_avatar.js\"></script>\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.Avatar {\n  --_avatarShadowBox: var(--avatarStatusShadow);\n  --_avatarShadowFilter: var(--avatarStatusShadowFilter);\n  --_avatarShadowInset: var(--avatarStatusShadowInset);\n  --_still-image-label-visibility: hidden;\n\n  display: inline-block;\n  position: relative;\n  width: 48px;\n  height: 48px;\n\n  &.-compact {\n    width: 32px;\n    height: 32px;\n    border-radius: $fallback--avatarAltRadius;\n    border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n  }\n\n  .avatar {\n    width: 100%;\n    height: 100%;\n    box-shadow: var(--_avatarShadowBox);\n    border-radius: $fallback--avatarRadius;\n    border-radius: var(--avatarRadius, $fallback--avatarRadius);\n\n    &.-better-shadow {\n      box-shadow: var(--_avatarShadowInset);\n      filter: var(--_avatarShadowFilter);\n    }\n\n    &.-animated::before {\n      display: none;\n    }\n\n    &.-compact {\n      border-radius: $fallback--avatarAltRadius;\n      border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n    }\n\n    &.-placeholder {\n      background-color: $fallback--fg;\n      background-color: var(--fg, $fallback--fg);\n    }\n  }\n\n  img {\n    width: 100%;\n    height: 100%;\n  }\n\n  .bot-indicator {\n    position: absolute;\n    bottom: 0;\n    right: 0;\n    margin: -0.2em;\n    padding: 0.2em;\n    background: rgba(127, 127, 127, 0.5);\n    color: #fff;\n    border-radius: var(--tooltipRadius);\n  }\n\n}\n</style>\n","import { includes } from 'lodash'\n\nconst generateProfileLink = (id, screenName, restrictedNicknames) => {\n  const complicated = !screenName || (isExternal(screenName) || includes(restrictedNicknames, screenName))\n  return {\n    name: (complicated ? 'external-user-profile' : 'user-profile'),\n    params: (complicated ? { id } : { name: screenName })\n  }\n}\n\nconst isExternal = screenName => screenName && screenName.includes('@')\n\nexport default generateProfileLink\n","const Popover = {\n  name: 'Popover',\n  props: {\n    // Action to trigger popover: either 'hover' or 'click'\n    trigger: String,\n\n    // Either 'top' or 'bottom'\n    placement: String,\n\n    // Takes object with properties 'x' and 'y', values of these can be\n    // 'container' for using offsetParent as boundaries for either axis\n    // or 'viewport'\n    boundTo: Object,\n\n    // Takes a selector to use as a replacement for the parent container\n    // for getting boundaries for x an y axis\n    boundToSelector: String,\n\n    // Takes a top/bottom/left/right object, how much space to leave\n    // between boundary and popover element\n    margin: Object,\n\n    // Takes a x/y object and tells how many pixels to offset from\n    // anchor point on either axis\n    offset: Object,\n\n    // Replaces the classes you may want for the popover container.\n    // Use 'popover-default' in addition to get the default popover\n    // styles with your custom class.\n    popoverClass: String,\n\n    // If true, subtract padding when calculating position for the popover,\n    // use it when popover offset looks to be different on top vs bottom.\n    removePadding: Boolean\n  },\n  data () {\n    return {\n      hidden: true,\n      styles: { opacity: 0 },\n      oldSize: { width: 0, height: 0 }\n    }\n  },\n  methods: {\n    containerBoundingClientRect () {\n      const container = this.boundToSelector ? this.$el.closest(this.boundToSelector) : this.$el.offsetParent\n      return container.getBoundingClientRect()\n    },\n    updateStyles () {\n      if (this.hidden) {\n        this.styles = {\n          opacity: 0\n        }\n        return\n      }\n\n      // Popover will be anchored around this element, trigger ref is the container, so\n      // its children are what are inside the slot. Expect only one v-slot:trigger.\n      const anchorEl = (this.$refs.trigger && this.$refs.trigger.children[0]) || this.$el\n      // SVGs don't have offsetWidth/Height, use fallback\n      const anchorWidth = anchorEl.offsetWidth || anchorEl.clientWidth\n      const anchorHeight = anchorEl.offsetHeight || anchorEl.clientHeight\n      const screenBox = anchorEl.getBoundingClientRect()\n      // Screen position of the origin point for popover\n      const origin = { x: screenBox.left + screenBox.width * 0.5, y: screenBox.top }\n      const content = this.$refs.content\n      // Minor optimization, don't call a slow reflow call if we don't have to\n      const parentBounds = this.boundTo &&\n        (this.boundTo.x === 'container' || this.boundTo.y === 'container') &&\n        this.containerBoundingClientRect()\n\n      const margin = this.margin || {}\n\n      // What are the screen bounds for the popover? Viewport vs container\n      // when using viewport, using default margin values to dodge the navbar\n      const xBounds = this.boundTo && this.boundTo.x === 'container' ? {\n        min: parentBounds.left + (margin.left || 0),\n        max: parentBounds.right - (margin.right || 0)\n      } : {\n        min: 0 + (margin.left || 10),\n        max: window.innerWidth - (margin.right || 10)\n      }\n\n      const yBounds = this.boundTo && this.boundTo.y === 'container' ? {\n        min: parentBounds.top + (margin.top || 0),\n        max: parentBounds.bottom - (margin.bottom || 0)\n      } : {\n        min: 0 + (margin.top || 50),\n        max: window.innerHeight - (margin.bottom || 5)\n      }\n\n      let horizOffset = 0\n\n      // If overflowing from left, move it so that it doesn't\n      if ((origin.x - content.offsetWidth * 0.5) < xBounds.min) {\n        horizOffset += -(origin.x - content.offsetWidth * 0.5) + xBounds.min\n      }\n\n      // If overflowing from right, move it so that it doesn't\n      if ((origin.x + horizOffset + content.offsetWidth * 0.5) > xBounds.max) {\n        horizOffset -= (origin.x + horizOffset + content.offsetWidth * 0.5) - xBounds.max\n      }\n\n      // Default to whatever user wished with placement prop\n      let usingTop = this.placement !== 'bottom'\n\n      // Handle special cases, first force to displaying on top if there's not space on bottom,\n      // regardless of what placement value was. Then check if there's not space on top, and\n      // force to bottom, again regardless of what placement value was.\n      if (origin.y + content.offsetHeight > yBounds.max) usingTop = true\n      if (origin.y - content.offsetHeight < yBounds.min) usingTop = false\n\n      let vPadding = 0\n      if (this.removePadding && usingTop) {\n        const anchorStyle = getComputedStyle(anchorEl)\n        vPadding = parseFloat(anchorStyle.paddingTop) + parseFloat(anchorStyle.paddingBottom)\n      }\n\n      const yOffset = (this.offset && this.offset.y) || 0\n      const translateY = usingTop\n        ? -anchorHeight + vPadding - yOffset - content.offsetHeight\n        : yOffset\n\n      const xOffset = (this.offset && this.offset.x) || 0\n      const translateX = anchorWidth * 0.5 - content.offsetWidth * 0.5 + horizOffset + xOffset\n\n      // Note, separate translateX and translateY avoids blurry text on chromium,\n      // single translate or translate3d resulted in blurry text.\n      this.styles = {\n        opacity: 1,\n        transform: `translateX(${Math.round(translateX)}px) translateY(${Math.round(translateY)}px)`\n      }\n    },\n    showPopover () {\n      const wasHidden = this.hidden\n      this.hidden = false\n      this.$nextTick(() => {\n        if (wasHidden) this.$emit('show')\n        this.updateStyles()\n      })\n    },\n    hidePopover () {\n      if (!this.hidden) this.$emit('close')\n      this.hidden = true\n      this.styles = { opacity: 0 }\n    },\n    onMouseenter (e) {\n      if (this.trigger === 'hover') this.showPopover()\n    },\n    onMouseleave (e) {\n      if (this.trigger === 'hover') this.hidePopover()\n    },\n    onClick (e) {\n      if (this.trigger === 'click') {\n        if (this.hidden) {\n          this.showPopover()\n        } else {\n          this.hidePopover()\n        }\n      }\n    },\n    onClickOutside (e) {\n      if (this.hidden) return\n      if (this.$el.contains(e.target)) return\n      this.hidePopover()\n    }\n  },\n  updated () {\n    // Monitor changes to content size, update styles only when content sizes have changed,\n    // that should be the only time we need to move the popover box if we don't care about scroll\n    // or resize\n    const content = this.$refs.content\n    if (!content) return\n    if (this.oldSize.width !== content.offsetWidth || this.oldSize.height !== content.offsetHeight) {\n      this.updateStyles()\n      this.oldSize = { width: content.offsetWidth, height: content.offsetHeight }\n    }\n  },\n  created () {\n    document.addEventListener('click', this.onClickOutside)\n  },\n  unmounted () {\n    document.removeEventListener('click', this.onClickOutside)\n    this.hidePopover()\n  }\n}\n\nexport default Popover\n","import { render } from \"./popover.vue?vue&type=template&id=24420bf0\"\nimport script from \"./popover.js?vue&type=script&lang=js\"\nexport * from \"./popover.js?vue&type=script&lang=js\"\n\nimport \"./popover.vue?vue&type=style&index=0&id=24420bf0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    @mouseenter=\"onMouseenter\"\n    @mouseleave=\"onMouseleave\"\n  >\n    <button\n      ref=\"trigger\"\n      class=\"button-unstyled popover-trigger-button\"\n      type=\"button\"\n      @click=\"onClick\"\n    >\n      <slot name=\"trigger\" />\n    </button>\n    <div\n      v-if=\"!hidden\"\n      ref=\"content\"\n      :style=\"styles\"\n      class=\"popover\"\n      :class=\"popoverClass || 'popover-default'\"\n    >\n      <slot\n        name=\"content\"\n        class=\"popover-inner\"\n        :close=\"hidePopover\"\n      />\n    </div>\n  </div>\n</template>\n\n<script src=\"./popover.js\" />\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.popover-trigger-button {\n  display: inline-block;\n}\n\n.popover {\n  z-index: 500;\n  position: absolute;\n  min-width: 0;\n}\n\n.popover-default {\n  transition: opacity 0.3s;\n\n  &:after {\n    content: '';\n    position: absolute;\n    top: 0;\n    bottom: 0;\n    left: 0;\n    right: 0;\n    z-index: 3;\n    box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.6);\n    box-shadow: var(--panelShadow);\n    pointer-events: none;\n  }\n\n  border-radius: $fallback--btnRadius;\n  border-radius: var(--btnRadius, $fallback--btnRadius);\n\n  background-color: $fallback--bg;\n  background-color: var(--popover, $fallback--bg);\n  color: $fallback--text;\n  color: var(--popoverText, $fallback--text);\n  --faint: var(--popoverFaintText, $fallback--faint);\n  --faintLink: var(--popoverFaintLink, $fallback--faint);\n  --lightText: var(--popoverLightText, $fallback--lightText);\n  --postLink: var(--popoverPostLink, $fallback--link);\n  --postFaintLink: var(--popoverPostFaintLink, $fallback--link);\n  --icon: var(--popoverIcon, $fallback--icon);\n}\n\n.dropdown-menu {\n  display: block;\n  padding: .5rem 0;\n  font-size: 1em;\n  text-align: left;\n  list-style: none;\n  max-width: 100vw;\n  z-index: 200;\n  white-space: nowrap;\n\n  .dropdown-divider {\n    height: 0;\n    margin: .5rem 0;\n    overflow: hidden;\n    border-top: 1px solid $fallback--border;\n    border-top: 1px solid var(--border, $fallback--border);\n  }\n\n  .dropdown-item {\n    line-height: 21px;\n    overflow: hidden;\n    display: block;\n    padding: 0.5em 0.75em;\n    clear: both;\n    font-weight: 400;\n    text-align: inherit;\n    white-space: nowrap;\n    border: none;\n    border-radius: 0px;\n    background-color: transparent;\n    box-shadow: none;\n    width: 100%;\n    height: 100%;\n    box-sizing: border-box;\n\n    --btnText: var(--popoverText, $fallback--text);\n\n    &-icon {\n      svg {\n        width: 22px;\n        margin-right: 0.75rem;\n        color: var(--menuPopoverIcon, $fallback--icon)\n      }\n    }\n\n    &:active, &:hover {\n      background-color: $fallback--lightBg;\n      background-color: var(--selectedMenuPopover, $fallback--lightBg);\n      box-shadow: none;\n      --btnText: var(--selectedMenuPopoverText, $fallback--link);\n      --faint: var(--selectedMenuPopoverFaintText, $fallback--faint);\n      --faintLink: var(--selectedMenuPopoverFaintLink, $fallback--faint);\n      --lightText: var(--selectedMenuPopoverLightText, $fallback--lightText);\n      --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n      svg {\n        color: var(--selectedMenuPopoverIcon, $fallback--icon);\n        --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n      }\n    }\n\n    .menu-checkbox {\n      display: inline-block;\n      vertical-align: middle;\n      min-width: 22px;\n      max-width: 22px;\n      min-height: 22px;\n      max-height: 22px;\n      line-height: 22px;\n      text-align: center;\n      border-radius: 0px;\n      background-color: $fallback--fg;\n      background-color: var(--input, $fallback--fg);\n      box-shadow: 0px 0px 2px black inset;\n      box-shadow: var(--inputShadow);\n      margin-right: 0.75em;\n\n      &.menu-checkbox-checked::after {\n        font-size: 1.25em;\n        content: '✓';\n      }\n\n      &.-radio {\n        border-radius: 9999px;\n\n        &.menu-checkbox-checked::after {\n          font-size: 2em;\n          content: '•';\n        }\n      }\n    }\n\n  }\n\n  .button-default.dropdown-item {\n    &,\n    i[class*=icon-] {\n      color: $fallback--text;\n      color: var(--btnText, $fallback--text);\n    }\n\n    &:active {\n      background-color: $fallback--lightBg;\n      background-color: var(--selectedMenuPopover, $fallback--lightBg);\n      color: $fallback--link;\n      color: var(--selectedMenuPopoverText, $fallback--link);\n    }\n\n    &:disabled {\n      color: $fallback--text;\n      color: var(--btnDisabledText, $fallback--text);\n    }\n\n    &.toggled {\n      color: $fallback--text;\n      color: var(--btnToggledText, $fallback--text);\n    }\n  }\n}\n</style>\n","/**\n * Extract tag name from tag opener/closer.\n *\n * @param {String} tag - tag string, i.e. '<a href=\"...\">'\n * @return {String} - tagname, i.e. \"div\"\n */\nexport const getTagName = (tag) => {\n  const result = /(?:<\\/(\\w+)>|<(\\w+)\\s?.*?\\/?>)/gi.exec(tag)\n  return result && (result[1] || result[2])\n}\n\n/**\n * Extract attributes from tag opener.\n *\n * @param {String} tag - tag string, i.e. '<a href=\"...\">'\n * @return {Object} - map of attributes key = attribute name, value = attribute value\n *   attributes without values represented as boolean true\n */\nexport const getAttrs = tag => {\n  const innertag = tag\n    .substring(1, tag.length - 1)\n    .replace(new RegExp('^' + getTagName(tag)), '')\n    .replace(/\\/?$/, '')\n    .trim()\n  const attrs = Array.from(innertag.matchAll(/([a-z0-9-]+)(?:=(\"[^\"]+?\"|'[^']+?'))?/gi))\n    .map(([trash, key, value]) => [key, value])\n    .map(([k, v]) => {\n      if (!v) return [k, true]\n      return [k, v.substring(1, v.length - 1)]\n    })\n  return Object.fromEntries(attrs)\n}\n\n/**\n * Finds shortcodes in text\n *\n * @param {String} text - original text to find emojis in\n * @param {{ url: String, shortcode: Sring }[]} emoji - list of shortcodes to find\n * @param {Function} processor - function to call on each encountered emoji,\n *   function is passed single object containing matching emoji ({ url, shortcode })\n *   return value will be inserted into resulting array instead of :shortcode:\n * @return {Array} resulting array with non-emoji parts of text and whatever {processor}\n *   returned for emoji\n */\nexport const processTextForEmoji = (text, emojis, processor) => {\n  const buffer = []\n  let textBuffer = ''\n  for (let i = 0; i < text.length; i++) {\n    const char = text[i]\n    if (char === ':') {\n      const next = text.slice(i + 1)\n      let found = false\n      for (let emoji of emojis) {\n        if (next.slice(0, emoji.shortcode.length + 1) === (emoji.shortcode + ':')) {\n          found = emoji\n          break\n        }\n      }\n      if (found) {\n        buffer.push(textBuffer)\n        textBuffer = ''\n        buffer.push(processor(found))\n        i += found.shortcode.length + 1\n      } else {\n        textBuffer += char\n      }\n    } else {\n      textBuffer += char\n    }\n  }\n  if (textBuffer) buffer.push(textBuffer)\n  return buffer\n}\n","import { getTagName } from './utility.service.js'\n\n/**\n * This is a tiny purpose-built HTML parser/processor. This basically detects\n * any type of visual newline and converts entire HTML into a array structure.\n *\n * Text nodes are represented as object with single property - text - containing\n * the visual line. Intended usage is to process the array with .map() in which\n * map function returns a string and resulting array can be converted back to html\n * with a .join('').\n *\n * Generally this isn't very useful except for when you really need to either\n * modify visual lines (greentext i.e. simple quoting) or do something with\n * first/last line.\n *\n * known issue: doesn't handle CDATA so nested CDATA might not work well\n *\n * @param {Object} input - input data\n * @return {(string|{ text: string })[]} processed html in form of a list.\n */\nexport const convertHtmlToLines = (html = '') => {\n  // Elements that are implicitly self-closing\n  // https://developer.mozilla.org/en-US/docs/Glossary/empty_element\n  const emptyElements = new Set([\n    'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input',\n    'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr'\n  ])\n  // Block-level element (they make a visual line)\n  // https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements\n  const blockElements = new Set([\n    'address', 'article', 'aside', 'blockquote', 'details', 'dialog', 'dd',\n    'div', 'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer', 'form',\n    'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hgroup', 'hr', 'li', 'main',\n    'nav', 'ol', 'p', 'pre', 'section', 'table', 'ul'\n  ])\n  // br is very weird in a way that it's technically not block-level, it's\n  // essentially converted to a \\n (or \\r\\n). There's also wbr but it doesn't\n  // guarantee linebreak, only suggest it.\n  const linebreakElements = new Set(['br'])\n\n  const visualLineElements = new Set([\n    ...blockElements.values(),\n    ...linebreakElements.values()\n  ])\n\n  // All block-level elements that aren't empty elements, i.e. not <hr>\n  const nonEmptyElements = new Set(visualLineElements)\n  // Difference\n  for (let elem of emptyElements) {\n    nonEmptyElements.delete(elem)\n  }\n\n  // All elements that we are recognizing\n  const allElements = new Set([\n    ...nonEmptyElements.values(),\n    ...emptyElements.values()\n  ])\n\n  let buffer = [] // Current output buffer\n  const level = [] // How deep we are in tags and which tags were there\n  let textBuffer = '' // Current line content\n  let tagBuffer = null // Current tag buffer, if null = we are not currently reading a tag\n\n  const flush = () => { // Processes current line buffer, adds it to output buffer and clears line buffer\n    if (textBuffer.trim().length > 0) {\n      buffer.push({ level: [...level], text: textBuffer })\n    } else {\n      buffer.push(textBuffer)\n    }\n    textBuffer = ''\n  }\n\n  const handleBr = (tag) => { // handles single newlines/linebreaks/selfclosing\n    flush()\n    buffer.push(tag)\n  }\n\n  const handleOpen = (tag) => { // handles opening tags\n    flush()\n    buffer.push(tag)\n    level.unshift(getTagName(tag))\n  }\n\n  const handleClose = (tag) => { // handles closing tags\n    if (level[0] === getTagName(tag)) {\n      flush()\n      buffer.push(tag)\n      level.shift()\n    } else { // Broken case\n      textBuffer += tag\n    }\n  }\n\n  for (let i = 0; i < html.length; i++) {\n    const char = html[i]\n    if (char === '<' && tagBuffer === null) {\n      tagBuffer = char\n    } else if (char !== '>' && tagBuffer !== null) {\n      tagBuffer += char\n    } else if (char === '>' && tagBuffer !== null) {\n      tagBuffer += char\n      const tagFull = tagBuffer\n      tagBuffer = null\n      const tagName = getTagName(tagFull)\n      if (allElements.has(tagName)) {\n        if (linebreakElements.has(tagName)) {\n          handleBr(tagFull)\n        } else if (nonEmptyElements.has(tagName)) {\n          if (tagFull[1] === '/') {\n            handleClose(tagFull)\n          } else if (tagFull[tagFull.length - 2] === '/') {\n            // self-closing\n            handleBr(tagFull)\n          } else {\n            handleOpen(tagFull)\n          }\n        } else {\n          textBuffer += tagFull\n        }\n      } else {\n        textBuffer += tagFull\n      }\n    } else if (char === '\\n') {\n      handleBr(char)\n    } else {\n      textBuffer += char\n    }\n  }\n  if (tagBuffer) {\n    textBuffer += tagBuffer\n  }\n\n  flush()\n\n  return buffer\n}\n","<template>\n  <span\n    class=\"HashtagLink\"\n  >\n    <!-- eslint-disable vue/no-v-html -->\n    <a\n      :href=\"url\"\n      class=\"original\"\n      target=\"_blank\"\n      @click.prevent=\"onClick\"\n      v-html=\"content\"\n    />\n    <!-- eslint-enable vue/no-v-html -->\n  </span>\n</template>\n\n<script src=\"./hashtag_link.js\"/>\n\n<style lang=\"scss\" src=\"./hashtag_link.scss\"/>\n","export const mentionMatchesUrl = (attention, url) => {\n  if (url === attention.statusnet_profile_url) {\n    return true\n  }\n  const [namepart, instancepart] = attention.screen_name.split('@')\n  const matchstring = new RegExp('://' + instancepart + '/.*' + namepart + '$', 'g')\n\n  return !!url.match(matchstring)\n}\n\n/**\n * Extract tag name from pleroma or mastodon url.\n * i.e https://bikeshed.party/tag/photo or https://quey.org/tags/sky\n * @param {string} url\n */\nexport const extractTagFromUrl = (url) => {\n  const regex = /tag[s]*\\/(\\w+)$/g\n  const result = regex.exec(url)\n  if (!result) {\n    return false\n  }\n  return result[1]\n}\n","import { extractTagFromUrl } from 'src/services/matcher/matcher.service.js'\n\nconst HashtagLink = {\n  name: 'HashtagLink',\n  props: {\n    url: {\n      required: true,\n      type: String\n    },\n    content: {\n      required: true,\n      type: String\n    },\n    tag: {\n      required: false,\n      type: String,\n      default: ''\n    }\n  },\n  methods: {\n    onClick () {\n      const tag = this.tag || extractTagFromUrl(this.url)\n      if (tag) {\n        const link = this.generateTagLink(tag)\n        this.$router.push(link)\n      } else {\n        window.open(this.url, '_blank')\n      }\n    },\n    generateTagLink (tag) {\n      return `/tag/${tag}`\n    }\n  }\n}\n\nexport default HashtagLink\n","import { render } from \"./hashtag_link.vue?vue&type=template&id=c545d9d6\"\nimport script from \"./hashtag_link.js?vue&type=script&lang=js\"\nexport * from \"./hashtag_link.js?vue&type=script&lang=js\"\n\nimport \"./hashtag_link.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { unescape, flattenDeep } from 'lodash'\nimport { getTagName, processTextForEmoji, getAttrs } from 'src/services/html_converter/utility.service.js'\nimport { convertHtmlToTree } from 'src/services/html_converter/html_tree_converter.service.js'\nimport { convertHtmlToLines } from 'src/services/html_converter/html_line_converter.service.js'\nimport StillImage from 'src/components/still-image/still-image.vue'\nimport MentionsLine, { MENTIONS_LIMIT } from 'src/components/mentions_line/mentions_line.vue'\nimport HashtagLink from 'src/components/hashtag_link/hashtag_link.vue'\n\nimport './rich_content.scss'\n\n/**\n * RichContent, The Über-powered component for rendering Post HTML.\n *\n * This takes post HTML and does multiple things to it:\n * - Groups all mentions into <MentionsLine>, this affects all mentions regardles\n *   of where they are (beginning/middle/end), even single mentions are converted\n *   to a <MentionsLine> containing single <MentionLink>.\n * - Replaces emoji shortcodes with <StillImage>'d images.\n *\n * There are two problems with this component's architecture:\n * 1. Parsing HTML and rendering are inseparable. Attempts to separate the two\n *    proven to be a massive overcomplication due to amount of things done here.\n * 2. We need to output both render and some extra data, which seems to be imp-\n *    possible in vue. Current solution is to emit 'parseReady' event when parsing\n *    is done within render() function.\n *\n * Apart from that one small hiccup with emit in render this _should_ be vue3-ready\n */\nexport default {\n  name: 'RichContent',\n  components: {\n    MentionsLine,\n    HashtagLink\n  },\n  props: {\n    // Original html content\n    html: {\n      required: true,\n      type: String\n    },\n    attentions: {\n      required: false,\n      default: () => []\n    },\n    // Emoji object, as in status.emojis, note the \"s\" at the end...\n    emoji: {\n      required: true,\n      type: Array\n    },\n    // Whether to handle links or not (posts: yes, everything else: no)\n    handleLinks: {\n      required: false,\n      type: Boolean,\n      default: false\n    },\n    // Meme arrows\n    greentext: {\n      required: false,\n      type: Boolean,\n      default: false\n    }\n  },\n  // NEVER EVER TOUCH DATA INSIDE RENDER\n  render () {\n    // Pre-process HTML\n    const { newHtml: html } = preProcessPerLine(this.html, this.greentext)\n    let currentMentions = null // Current chain of mentions, we group all mentions together\n    // This is used to recover spacing removed when parsing mentions\n    let lastSpacing = ''\n\n    const lastTags = [] // Tags that appear at the end of post body\n    const writtenMentions = [] // All mentions that appear in post body\n    const invisibleMentions = [] // All mentions that go beyond the limiter (see MentionsLine)\n    // to collapse too many mentions in a row\n    const writtenTags = [] // All tags that appear in post body\n    // unique index for vue \"tag\" property\n    let mentionIndex = 0\n    let tagsIndex = 0\n\n    const renderImage = (tag) => {\n      return <StillImage\n        {...getAttrs(tag)}\n        class=\"img\"\n      />\n    }\n\n    const renderHashtag = (attrs, children, encounteredTextReverse) => {\n      const { index, ...linkData } = getLinkData(attrs, children, tagsIndex++)\n      writtenTags.push(linkData)\n      if (!encounteredTextReverse) {\n        lastTags.push(linkData)\n      }\n      const { url, tag, content } = linkData\n      return <HashtagLink url={url} tag={tag} content={content}/>\n    }\n\n    const renderMention = (attrs, children) => {\n      const linkData = getLinkData(attrs, children, mentionIndex++)\n      linkData.notifying = this.attentions.some(a => a.statusnet_profile_url === linkData.url)\n      writtenMentions.push(linkData)\n      if (currentMentions === null) {\n        currentMentions = []\n      }\n      currentMentions.push(linkData)\n      if (currentMentions.length > MENTIONS_LIMIT) {\n        invisibleMentions.push(linkData)\n      }\n      if (currentMentions.length === 1) {\n        return <MentionsLine mentions={ currentMentions } />\n      } else {\n        return ''\n      }\n    }\n\n    const renderLink = (attrs, children) => {\n      const updatedLink = attrs['href'].replace(/&amp;/g, '&')\n      const updatedChildren = children.map(child => {\n        if (typeof child === 'string') {\n          return child.replace(attrs['href'], updatedLink)\n        }\n        if (child[0] === '<span>') {\n          return <span>\n            { child[1] }\n          </span>\n        }\n        return child[1]\n      })\n      return <a {...{ attrs }} href={updatedLink}>\n        { ...updatedChildren }\n      </a>\n    }\n    // Processor to use with html_tree_converter\n    const processItem = (item, index, array, what) => {\n      // Handle text nodes - just add emoji\n      if (typeof item === 'string') {\n        const emptyText = item.trim() === ''\n        if (item.includes('\\n')) {\n          currentMentions = null\n        }\n        if (emptyText) {\n          // don't include spaces when processing mentions - we'll include them\n          // in MentionsLine\n          lastSpacing = item\n          // Don't remove last space in a container (fixes poast mentions)\n          return (index !== array.length - 1) && (currentMentions !== null) ? item.trim() : item\n        }\n\n        currentMentions = null\n        if (item.includes(':')) {\n          item = ['', processTextForEmoji(\n            item,\n            this.emoji,\n            ({ shortcode, url }) => {\n              return <StillImage\n                class=\"emoji img\"\n                src={url}\n                title={`:${shortcode}:`}\n                alt={`:${shortcode}:`}\n              />\n            }\n          )]\n        }\n        return item\n      }\n\n      // Handle tag nodes\n      if (Array.isArray(item)) {\n        const [opener, children, closer] = item\n        const Tag = getTagName(opener)\n        const attrs = getAttrs(opener)\n        const previouslyMentions = currentMentions !== null\n        /* During grouping of mentions we trim all the empty text elements\n         * This padding is added to recover last space removed in case\n         * we have a tag right next to mentions\n         */\n        const mentionsLinePadding =\n              // Padding is only needed if we just finished parsing mentions\n              previouslyMentions &&\n              // Don't add padding if content is string and has padding already\n              !(children && typeof children[0] === 'string' && children[0].match(/^\\s/))\n                ? lastSpacing\n                : ''\n        switch (Tag) {\n          case 'br':\n            currentMentions = null\n            break\n          case 'img': // replace images with StillImage\n            return ['', [mentionsLinePadding, renderImage(opener)], '']\n          case 'a': // replace mentions with MentionLink\n            if (!this.handleLinks) break\n            if (attrs['class'] && attrs['class'].includes('mention')) {\n              // Handling mentions here\n              return renderMention(attrs, children)\n            } else {\n              currentMentions = null\n              if (attrs['href']) {\n                return renderLink(attrs, children)\n              }\n              break\n            }\n          case 'span':\n            if (this.handleLinks && attrs['class'] && attrs['class'].includes('h-card')) {\n              return ['', children.map(processItem), '']\n            }\n        }\n\n        if (children !== undefined) {\n          return [\n            '',\n            [\n              mentionsLinePadding,\n              [opener, children.map(processItem), closer]\n            ],\n            ''\n          ]\n        } else {\n          return ['', [mentionsLinePadding, item], '']\n        }\n      }\n    }\n\n    // Processor for back direction (for finding \"last\" stuff, just easier this way)\n    let encounteredTextReverse = false\n    const processItemReverse = (item, index, array, what) => {\n      // Handle text nodes - just add emoji\n      if (typeof item === 'string') {\n        const emptyText = item.trim() === ''\n        if (emptyText) return item\n        if (!encounteredTextReverse) encounteredTextReverse = true\n        return unescape(item)\n      } else if (Array.isArray(item)) {\n        // Handle tag nodes\n        const [opener, children] = item\n        const Tag = opener === '' ? '' : getTagName(opener)\n        switch (Tag) {\n          case 'a': // replace mentions with MentionLink\n            if (!this.handleLinks) break\n            const attrs = getAttrs(opener)\n            // should only be this\n            if (\n              (attrs['class'] && attrs['class'].includes('hashtag')) || // Pleroma style\n                (attrs['rel'] === 'tag') // Mastodon style\n            ) {\n              return renderHashtag(attrs, children, encounteredTextReverse)\n            } else {\n              attrs.target = '_blank'\n              const newChildren = [...children].reverse().map(processItemReverse).reverse()\n\n              return <a {...attrs}>\n                { newChildren }\n              </a>\n            }\n          case '':\n            return [...children].reverse().map(processItemReverse).reverse()\n        }\n\n        // Render tag as is\n        if (children !== undefined) {\n          const newChildren = Array.isArray(children)\n            ? [...children].reverse().map(processItemReverse).reverse()\n            : children\n          return <Tag {...getAttrs(opener)}>\n            { newChildren }\n          </Tag>\n        } else {\n          return <Tag/>\n        }\n      }\n      return item\n    }\n\n    const pass1 = convertHtmlToTree(html).map(processItem)\n    const pass2 = [...pass1].reverse().map(processItemReverse).reverse()\n    // DO NOT USE SLOTS they cause a re-render feedback loop here.\n    // slots updated -> rerender -> emit -> update up the tree -> rerender -> ...\n    // at least until vue3?\n    const result = <span class=\"RichContent\">\n      { pass2 }\n    </span>\n\n    const event = {\n      lastTags,\n      writtenMentions,\n      writtenTags,\n      invisibleMentions\n    }\n\n    // DO NOT MOVE TO UPDATE. BAD IDEA.\n    this.$emit('parseReady', event)\n\n    return result\n  }\n}\n\nconst getLinkData = (attrs, children, index) => {\n  const stripTags = (item) => {\n    if (typeof item === 'string') {\n      return item\n    } else {\n      return item[1].map(stripTags).join('')\n    }\n  }\n  const textContent = children.map(stripTags).join('')\n  return {\n    index,\n    url: attrs.href,\n    tag: attrs['data-tag'],\n    content: flattenDeep(children).join(''),\n    textContent\n  }\n}\n\n/** Pre-processing HTML\n *\n * Currently this does one thing:\n * - add green/cyantexting\n *\n * @param {String} html - raw HTML to process\n * @param {Boolean} greentext - whether to enable greentexting or not\n */\nexport const preProcessPerLine = (html, greentext) => {\n  const greentextHandle = new Set(['p', 'div'])\n\n  const lines = convertHtmlToLines(html)\n  const newHtml = lines.reverse().map((item, index, array) => {\n    if (!item.text) return item\n    const string = item.text\n\n    // Greentext stuff\n    if (\n      // Only if greentext is engaged\n      greentext &&\n        // Only handle p's and divs. Don't want to affect blockquotes, code etc\n        item.level.every(l => greentextHandle.has(l)) &&\n        // Only if line begins with '>' or '<'\n        (string.includes('&gt;') || string.includes('&lt;'))\n    ) {\n      const cleanedString = string.replace(/<[^>]+?>/gi, '') // remove all tags\n        .replace(/@\\w+/gi, '') // remove mentions (even failed ones)\n        .trim()\n      if (cleanedString.startsWith('&gt;')) {\n        return `<span class='greentext'>${string}</span>`\n      } else if (cleanedString.startsWith('&lt;')) {\n        return `<span class='cyantext'>${string}</span>`\n      }\n    }\n\n    return string\n  }).reverse().join('')\n\n  return { newHtml }\n}\n","import { getTagName } from './utility.service.js'\nimport { unescape } from 'lodash'\n\n/**\n * This is a not-so-tiny purpose-built HTML parser/processor. This parses html\n * and converts it into a tree structure representing tag openers/closers and\n * children.\n *\n * Structure follows this pattern: [opener, [...children], closer] except root\n * node which is just [...children]. Text nodes can only be within children and\n * are represented as strings.\n *\n * Intended use is to convert HTML structure and then recursively iterate over it\n * most likely using a map. Very useful for dynamically rendering html replacing\n * tags with JSX elements in a render function.\n *\n * known issue: doesn't handle CDATA so CDATA might not work well\n * known issue: doesn't handle HTML comments\n *\n * @param {Object} input - input data\n * @return {string} processed html\n */\nexport const convertHtmlToTree = (html = '') => {\n  // Elements that are implicitly self-closing\n  // https://developer.mozilla.org/en-US/docs/Glossary/empty_element\n  const emptyElements = new Set([\n    'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input',\n    'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr'\n  ])\n  // TODO For future - also parse HTML5 multi-source components?\n\n  const buffer = [] // Current output buffer\n  const levels = [['', buffer]] // How deep we are in tags and which tags were there\n  let textBuffer = '' // Current line content\n  let tagBuffer = null // Current tag buffer, if null = we are not currently reading a tag\n\n  const getCurrentBuffer = () => {\n    return levels[levels.length - 1][1]\n  }\n\n  const flushText = () => { // Processes current line buffer, adds it to output buffer and clears line buffer\n    if (textBuffer === '') return\n    getCurrentBuffer().push(textBuffer)\n    textBuffer = ''\n  }\n\n  const handleSelfClosing = (tag) => {\n    getCurrentBuffer().push([tag])\n  }\n\n  const handleOpen = (tag) => {\n    const curBuf = getCurrentBuffer()\n    const newLevel = [unescape(tag), []]\n    levels.push(newLevel)\n    curBuf.push(newLevel)\n  }\n\n  const handleClose = (tag) => {\n    const currentTag = levels[levels.length - 1]\n    if (getTagName(levels[levels.length - 1][0]) === getTagName(tag)) {\n      currentTag.push(tag)\n      levels.pop()\n    } else {\n      getCurrentBuffer().push(tag)\n    }\n  }\n\n  for (let i = 0; i < html.length; i++) {\n    const char = html[i]\n    if (char === '<' && tagBuffer === null) {\n      flushText()\n      tagBuffer = char\n    } else if (char !== '>' && tagBuffer !== null) {\n      tagBuffer += char\n    } else if (char === '>' && tagBuffer !== null) {\n      tagBuffer += char\n      const tagFull = tagBuffer\n      tagBuffer = null\n      const tagName = getTagName(tagFull)\n      if (tagFull[1] === '/') {\n        handleClose(tagFull)\n      } else if (emptyElements.has(tagName) || tagFull[tagFull.length - 2] === '/') {\n        // self-closing\n        handleSelfClosing(tagFull)\n      } else {\n        handleOpen(tagFull)\n      }\n    } else {\n      textBuffer += char\n    }\n  }\n  if (tagBuffer) {\n    textBuffer += tagBuffer\n  }\n\n  flushText()\n  return buffer\n}\n","import { filter, sortBy, includes } from 'lodash'\nimport { muteWordHits } from '../status_parser/status_parser.js'\nimport { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js'\n\nexport const notificationsFromStore = store => store.state.statuses.notifications.data\n\nexport const visibleTypes = store => {\n  const rootState = store.rootState || store.state\n\n  return ([\n    rootState.config.notificationVisibility.likes && 'like',\n    rootState.config.notificationVisibility.mentions && 'mention',\n    rootState.config.notificationVisibility.repeats && 'repeat',\n    rootState.config.notificationVisibility.follows && 'follow',\n    rootState.config.notificationVisibility.followRequest && 'follow_request',\n    rootState.config.notificationVisibility.moves && 'move',\n    rootState.config.notificationVisibility.emojiReactions && 'pleroma:emoji_reaction',\n    rootState.config.notificationVisibility.polls && 'poll'\n  ].filter(_ => _))\n}\n\nconst statusNotifications = ['like', 'mention', 'repeat', 'pleroma:emoji_reaction', 'poll']\n\nexport const isStatusNotification = (type) => includes(statusNotifications, type)\n\nexport const isValidNotification = (notification) => {\n  if (isStatusNotification(notification.type) && !notification.status) {\n    return false\n  }\n  return true\n}\n\nconst sortById = (a, b) => {\n  const seqA = Number(a.id)\n  const seqB = Number(b.id)\n  const isSeqA = !Number.isNaN(seqA)\n  const isSeqB = !Number.isNaN(seqB)\n  if (isSeqA && isSeqB) {\n    return seqA > seqB ? -1 : 1\n  } else if (isSeqA && !isSeqB) {\n    return 1\n  } else if (!isSeqA && isSeqB) {\n    return -1\n  } else {\n    return a.id > b.id ? -1 : 1\n  }\n}\n\nconst isMutedNotification = (store, notification) => {\n  if (!notification.status) return\n  return notification.status.muted || muteWordHits(notification.status, store.rootGetters.mergedConfig.muteWords).length > 0\n}\n\nexport const maybeShowNotification = (store, notification) => {\n  const rootState = store.rootState || store.state\n\n  if (notification.seen) return\n  if (!visibleTypes(store).includes(notification.type)) return\n  if (notification.type === 'mention' && isMutedNotification(store, notification)) return\n\n  const notificationObject = prepareNotificationObject(notification, store.rootGetters.i18n)\n  showDesktopNotification(rootState, notificationObject)\n}\n\nexport const filteredNotificationsFromStore = (store, types) => {\n  // map is just to clone the array since sort mutates it and it causes some issues\n  let sortedNotifications = notificationsFromStore(store).map(_ => _).sort(sortById)\n  sortedNotifications = sortBy(sortedNotifications, 'seen')\n  return sortedNotifications.filter(\n    (notification) => (types || visibleTypes(store)).includes(notification.type)\n  )\n}\n\nexport const unseenNotificationsFromStore = store =>\n  filter(filteredNotificationsFromStore(store), ({ seen }) => !seen)\n\nexport const prepareNotificationObject = (notification, i18n) => {\n  const notifObj = {\n    tag: notification.id\n  }\n  const status = notification.status\n  const title = notification.from_profile.name\n  notifObj.title = title\n  notifObj.icon = notification.from_profile.profile_image_url\n  let i18nString\n  switch (notification.type) {\n    case 'like':\n      i18nString = 'favorited_you'\n      break\n    case 'repeat':\n      i18nString = 'repeated_you'\n      break\n    case 'follow':\n      i18nString = 'followed_you'\n      break\n    case 'move':\n      i18nString = 'migrated_to'\n      break\n    case 'follow_request':\n      i18nString = 'follow_request'\n      break\n    case 'poll':\n      i18nString = 'poll_ended'\n      break\n  }\n\n  if (notification.type === 'pleroma:emoji_reaction') {\n    notifObj.body = i18n.t('notifications.reacted_with', [notification.emoji])\n  } else if (i18nString) {\n    notifObj.body = i18n.t('notifications.' + i18nString)\n  } else if (isStatusNotification(notification.type)) {\n    notifObj.body = notification.status.text\n  }\n\n  // Shows first attached non-nsfw image, if any. Should add configuration for this somehow...\n  if (status && status.attachments && status.attachments.length > 0 && !status.nsfw &&\n    status.attachments[0].mimetype.startsWith('image/')) {\n    notifObj.image = status.attachments[0].url\n  }\n\n  return notifObj\n}\n","import { hex2rgb } from '../color_convert/color_convert.js'\nconst highlightStyle = (prefs) => {\n  if (prefs === undefined) return\n  const { color, type } = prefs\n  if (typeof color !== 'string') return\n  const rgb = hex2rgb(color)\n  if (rgb == null) return\n  const solidColor = `rgb(${Math.floor(rgb.r)}, ${Math.floor(rgb.g)}, ${Math.floor(rgb.b)})`\n  const tintColor = `rgba(${Math.floor(rgb.r)}, ${Math.floor(rgb.g)}, ${Math.floor(rgb.b)}, .1)`\n  const tintColor2 = `rgba(${Math.floor(rgb.r)}, ${Math.floor(rgb.g)}, ${Math.floor(rgb.b)}, .2)`\n  const customProps = {\n    '--____highlight-solidColor': solidColor,\n    '--____highlight-tintColor': tintColor,\n    '--____highlight-tintColor2': tintColor2\n  }\n  if (type === 'striped') {\n    return {\n      backgroundImage: [\n        'repeating-linear-gradient(135deg,',\n        `${tintColor} ,`,\n        `${tintColor} 20px,`,\n        `${tintColor2} 20px,`,\n        `${tintColor2} 40px`\n      ].join(' '),\n      backgroundPosition: '0 0',\n      ...customProps\n    }\n  } else if (type === 'solid') {\n    return {\n      backgroundColor: tintColor2,\n      ...customProps\n    }\n  } else if (type === 'side') {\n    return {\n      backgroundImage: [\n        'linear-gradient(to right,',\n        `${solidColor} ,`,\n        `${solidColor} 2px,`,\n        `transparent 6px`\n      ].join(' '),\n      backgroundPosition: '0 0',\n      ...customProps\n    }\n  }\n}\n\nconst highlightClass = (user) => {\n  return 'USER____' + user.screen_name\n    .replace(/\\./g, '_')\n    .replace(/@/g, '_AT_')\n}\n\nexport {\n  highlightClass,\n  highlightStyle\n}\n","// TODO this func might as well take the entire file and use its mimetype\n// or the entire service could be just mimetype service that only operates\n// on mimetypes and not files. Currently the naming is confusing.\nconst fileType = mimetype => {\n  if (mimetype.match(/flash/)) {\n    return 'flash'\n  }\n\n  if (mimetype.match(/text\\/html/)) {\n    return 'html'\n  }\n\n  if (mimetype.match(/image/)) {\n    return 'image'\n  }\n\n  if (mimetype.match(/video/)) {\n    return 'video'\n  }\n\n  if (mimetype.match(/audio/)) {\n    return 'audio'\n  }\n\n  return 'unknown'\n}\n\nconst fileMatchesSomeType = (types, file) =>\n  types.some(type => fileType(file.mimetype) === type)\n\nconst fileTypeService = {\n  fileType,\n  fileMatchesSomeType\n}\n\nexport default fileTypeService\n","<template>\n  <div\n    v-if=\"!hideStatus\"\n    ref=\"root\"\n    class=\"Status\"\n    :class=\"[{ '-focused': isFocused }, { '-conversation': inlineExpanded }]\"\n  >\n    <div\n      v-if=\"error\"\n      class=\"alert error\"\n    >\n      {{ error }}\n      <span\n        class=\"fa-scale-110 fa-old-padding\"\n        @click=\"clearError\"\n      >\n        <FAIcon icon=\"times\" />\n      </span>\n    </div>\n    <template v-if=\"muted && !isPreview\">\n      <div class=\"status-container muted\">\n        <small class=\"status-username\">\n          <FAIcon\n            v-if=\"muted && retweet\"\n            class=\"fa-scale-110 fa-old-padding repeat-icon\"\n            icon=\"retweet\"\n          />\n          <router-link :to=\"userProfileLink\">\n            {{ status.user.screen_name_ui }}\n          </router-link>\n        </small>\n        <small\n          v-if=\"showReasonMutedThread\"\n          class=\"mute-thread\"\n        >\n          {{ $t('status.thread_muted') }}\n        </small>\n        <small\n          v-if=\"showReasonMutedThread && muteWordHits.length > 0\"\n          class=\"mute-thread\"\n        >\n          {{ $t('status.thread_muted_and_words') }}\n        </small>\n        <small\n          class=\"mute-words\"\n          :title=\"muteWordHits.join(', ')\"\n        >\n          {{ muteWordHits.join(', ') }}\n        </small>\n        <button\n          class=\"unmute button-unstyled\"\n          @click.prevent=\"toggleMute\"\n        >\n          <FAIcon\n            icon=\"eye-slash\"\n            class=\"fa-scale-110 fa-old-padding\"\n          />\n        </button>\n      </div>\n    </template>\n    <template v-else>\n      <div\n        v-if=\"showPinned\"\n        class=\"pin\"\n      >\n        <FAIcon\n          icon=\"thumbtack\"\n          class=\"faint\"\n        />\n        <span class=\"faint\">{{ $t('status.pinned') }}</span>\n      </div>\n      <div\n        v-if=\"retweet && !noHeading && !inConversation\"\n        :class=\"[repeaterClass, { highlighted: repeaterStyle }]\"\n        :style=\"[repeaterStyle]\"\n        class=\"status-container repeat-info\"\n      >\n        <UserAvatar\n          v-if=\"retweet\"\n          class=\"left-side repeater-avatar\"\n          :bot=\"rtBotIndicator\"\n          :better-shadow=\"betterShadow\"\n          :user=\"statusoid.user\"\n        />\n        <div class=\"right-side faint\">\n          <span\n            class=\"status-username repeater-name\"\n            :title=\"retweeter\"\n          >\n            <router-link\n              v-if=\"retweeterHtml\"\n              :to=\"retweeterProfileLink\"\n            >\n              <RichContent\n                :html=\"retweeterHtml\"\n                :emoji=\"retweeterUser.emoji\"\n              />\n            </router-link>\n            <router-link\n              v-else\n              :to=\"retweeterProfileLink\"\n            >{{ retweeter }}</router-link>\n          </span>\n          {{ ' ' }}\n          <FAIcon\n            icon=\"retweet\"\n            class=\"repeat-icon\"\n            :title=\"$t('tool_tip.repeat')\"\n          />\n          {{ $t('timeline.repeated') }}\n        </div>\n      </div>\n\n      <div\n        v-if=\"!deleted\"\n        :class=\"[userClass, { highlighted: userStyle, '-repeat': retweet && !inConversation }]\"\n        :style=\"[ userStyle ]\"\n        class=\"status-container\"\n        :data-tags=\"tags\"\n      >\n        <div\n          v-if=\"!noHeading\"\n          class=\"left-side\"\n        >\n          <a\n            :href=\"$router.resolve(userProfileLink).href\"\n            @click.stop.prevent.capture=\"toggleUserExpanded\"\n          >\n            <UserAvatar\n              class=\"post-avatar\"\n              :bot=\"botIndicator\"\n              :compact=\"compact\"\n              :better-shadow=\"betterShadow\"\n              :user=\"status.user\"\n            />\n          </a>\n        </div>\n        <div class=\"right-side\">\n          <UserCard\n            v-if=\"userExpanded\"\n            :user-id=\"status.user.id\"\n            :rounded=\"true\"\n            :bordered=\"true\"\n            class=\"usercard\"\n          />\n          <div\n            v-if=\"!noHeading\"\n            class=\"status-heading\"\n          >\n            <div class=\"heading-name-row\">\n              <div class=\"heading-left\">\n                <h4\n                  v-if=\"status.user.name_html\"\n                  class=\"status-username\"\n                  :title=\"status.user.name\"\n                >\n                  <RichContent\n                    :html=\"status.user.name\"\n                    :emoji=\"status.user.emoji\"\n                  />\n                </h4>\n                <h4\n                  v-else\n                  class=\"status-username\"\n                  :title=\"status.user.name\"\n                >\n                  {{ status.user.name }}\n                </h4>\n                <router-link\n                  class=\"account-name\"\n                  :title=\"status.user.screen_name_ui\"\n                  :to=\"userProfileLink\"\n                >\n                  {{ status.user.screen_name_ui }}\n                </router-link>\n                <img\n                  v-if=\"!!(status.user && status.user.favicon)\"\n                  class=\"status-favicon\"\n                  :src=\"status.user.favicon\"\n                >\n              </div>\n\n              <span class=\"heading-right\">\n                <router-link\n                  class=\"timeago faint-link\"\n                  :to=\"{ name: 'conversation', params: { id: status.id } }\"\n                >\n                  <Timeago\n                    :time=\"status.created_at\"\n                    :auto-update=\"60\"\n                  />\n                </router-link>\n                <span\n                  v-if=\"status.visibility\"\n                  class=\"visibility-icon\"\n                  :title=\"visibilityLocalized\"\n                >\n                  <FAIcon\n                    fixed-width\n                    class=\"fa-scale-110\"\n                    :icon=\"visibilityIcon(status.visibility)\"\n                  />\n                </span>\n                <button\n                  v-if=\"expandable && !isPreview\"\n                  class=\"button-unstyled\"\n                  :title=\"$t('status.expand')\"\n                  @click.prevent=\"toggleExpanded\"\n                >\n                  <FAIcon\n                    fixed-width\n                    class=\"fa-scale-110\"\n                    icon=\"plus-square\"\n                  />\n                </button>\n                <button\n                  v-if=\"unmuted\"\n                  class=\"button-unstyled\"\n                  @click.prevent=\"toggleMute\"\n                >\n                  <FAIcon\n                    fixed-width\n                    icon=\"eye-slash\"\n                    class=\"fa-scale-110\"\n                  />\n                </button>\n                <button\n                  v-if=\"inThreadForest && replies && replies.length && !simpleTree\"\n                  class=\"button-unstyled\"\n                  :title=\"threadShowing ? $t('status.thread_hide') : $t('status.thread_show')\"\n                  :aria-expanded=\"threadShowing ? 'true' : 'false'\"\n                  @click.prevent=\"toggleThreadDisplay\"\n                >\n                  <FAIcon\n                    fixed-width\n                    class=\"fa-scale-110\"\n                    :icon=\"threadShowing ? 'chevron-up' : 'chevron-down'\"\n                  />\n                </button>\n                <button\n                  v-if=\"dive && !simpleTree\"\n                  class=\"button-unstyled\"\n                  :title=\"$t('status.show_only_conversation_under_this')\"\n                  @click.prevent=\"dive\"\n                >\n                  <FAIcon\n                    fixed-width\n                    class=\"fa-scale-110\"\n                    :icon=\"'angle-double-right'\"\n                  />\n                </button>\n              </span>\n            </div>\n            <div\n              v-if=\"isReply || hasMentionsLine\"\n              class=\"heading-reply-row\"\n            >\n              <span\n                v-if=\"isReply\"\n                class=\"glued-label reply-glued-label\"\n              >\n                <StatusPopover\n                  v-if=\"!isPreview\"\n                  :status-id=\"status.parent_visible && status.in_reply_to_status_id\"\n                  class=\"reply-to-popover\"\n                  style=\"min-width: 0\"\n                  :class=\"{ '-strikethrough': !status.parent_visible }\"\n                >\n                  <button\n                    class=\"button-unstyled reply-to\"\n                    :aria-label=\"$t('tool_tip.reply')\"\n                    @click.prevent=\"gotoOriginal(status.in_reply_to_status_id)\"\n                  >\n                    <FAIcon\n                      class=\"fa-scale-110 fa-old-padding\"\n                      icon=\"reply\"\n                      flip=\"horizontal\"\n                    />\n                    {{ ' ' }}\n                    <span\n                      class=\"reply-to-text\"\n                    >\n                      {{ $t('status.reply_to') }}\n                    </span>\n                  </button>\n                </StatusPopover>\n\n                <span\n                  v-else\n                  class=\"reply-to-no-popover\"\n                >\n                  <span class=\"reply-to-text\">{{ $t('status.reply_to') }}</span>\n                </span>\n                <MentionLink\n                  :content=\"replyToName\"\n                  :url=\"replyProfileLink\"\n                  :user-id=\"status.in_reply_to_user_id\"\n                  :user-screen-name=\"status.in_reply_to_screen_name\"\n                />\n              </span>\n\n              <!-- This little wrapper is made for sole purpose of \"gluing\" -->\n              <!-- \"Mentions\" label to the first mention -->\n              <span\n                v-if=\"hasMentionsLine\"\n                class=\"glued-label\"\n              >\n                <span\n                  class=\"mentions\"\n                  :aria-label=\"$t('tool_tip.mentions')\"\n                  @click.prevent=\"gotoOriginal(status.in_reply_to_status_id)\"\n                >\n                  <span\n                    class=\"mentions-text\"\n                  >\n                    {{ $t('status.mentions') }}\n                  </span>\n                </span>\n                <MentionsLine\n                  v-if=\"hasMentionsLine\"\n                  :mentions=\"mentionsLine.slice(0, 1)\"\n                  class=\"mentions-line-first\"\n                />\n              </span>\n              <MentionsLine\n                v-if=\"hasMentionsLine\"\n                :mentions=\"mentionsLine.slice(1)\"\n                class=\"mentions-line\"\n              />\n            </div>\n          </div>\n\n          <StatusContent\n            ref=\"content\"\n            :status=\"status\"\n            :no-heading=\"noHeading\"\n            :highlight=\"highlight\"\n            :focused=\"isFocused\"\n            :controlled-showing-tall=\"controlledShowingTall\"\n            :controlled-expanding-subject=\"controlledExpandingSubject\"\n            :controlled-showing-long-subject=\"controlledShowingLongSubject\"\n            :controlled-toggle-showing-tall=\"controlledToggleShowingTall\"\n            :controlled-toggle-expanding-subject=\"controlledToggleExpandingSubject\"\n            :controlled-toggle-showing-long-subject=\"controlledToggleShowingLongSubject\"\n            @mediaplay=\"addMediaPlaying($event)\"\n            @mediapause=\"removeMediaPlaying($event)\"\n            @parseReady=\"setHeadTailLinks\"\n          />\n\n          <div\n            v-if=\"inConversation && !isPreview && replies && replies.length\"\n            class=\"replies\"\n          >\n            <button\n              v-if=\"showOtherRepliesAsButton && replies.length > 1\"\n              class=\"button-unstyled -link faint\"\n              :title=\"$tc('status.ancestor_follow', replies.length - 1, { numReplies: replies.length - 1 })\"\n              @click.prevent=\"dive\"\n            >\n              {{ $tc('status.replies_list_with_others', replies.length - 1, { numReplies: replies.length - 1 }) }}\n            </button>\n            <span\n              v-else\n              class=\"faint\"\n            >\n              {{ $t('status.replies_list') }}\n            </span>\n            <StatusPopover\n              v-for=\"reply in replies\"\n              :key=\"reply.id\"\n              :status-id=\"reply.id\"\n            >\n              <button\n                class=\"button-unstyled -link reply-link\"\n                @click.prevent=\"gotoOriginal(reply.id)\"\n              >\n                {{ reply.name }}\n              </button>\n            </StatusPopover>\n          </div>\n\n          <transition name=\"fade\">\n            <div\n              v-if=\"!hidePostStats && isFocused && combinedFavsAndRepeatsUsers.length > 0\"\n              class=\"favs-repeated-users\"\n            >\n              <div class=\"stats\">\n                <UserListPopover\n                  v-if=\"statusFromGlobalRepository.rebloggedBy && statusFromGlobalRepository.rebloggedBy.length > 0\"\n                  :users=\"statusFromGlobalRepository.rebloggedBy\"\n                >\n                  <div class=\"stat-count\">\n                    <a class=\"stat-title\">{{ $t('status.repeats') }}</a>\n                    <div class=\"stat-number\">\n                      {{ statusFromGlobalRepository.rebloggedBy.length }}\n                    </div>\n                  </div>\n                </UserListPopover>\n                <UserListPopover\n                  v-if=\"statusFromGlobalRepository.favoritedBy && statusFromGlobalRepository.favoritedBy.length > 0\"\n                  :users=\"statusFromGlobalRepository.favoritedBy\"\n                >\n                  <div\n                    class=\"stat-count\"\n                  >\n                    <a class=\"stat-title\">{{ $t('status.favorites') }}</a>\n                    <div class=\"stat-number\">\n                      {{ statusFromGlobalRepository.favoritedBy.length }}\n                    </div>\n                  </div>\n                </UserListPopover>\n                <div class=\"avatar-row\">\n                  <AvatarList :users=\"combinedFavsAndRepeatsUsers\" />\n                </div>\n              </div>\n            </div>\n          </transition>\n\n          <EmojiReactions\n            v-if=\"(mergedConfig.emojiReactionsOnTimeline || isFocused) && (!noHeading && !isPreview)\"\n            :status=\"status\"\n          />\n\n          <div\n            v-if=\"!noHeading && !isPreview\"\n            class=\"status-actions\"\n          >\n            <reply-button\n              :replying=\"replying\"\n              :status=\"status\"\n              @toggle=\"toggleReplying\"\n            />\n            <retweet-button\n              :visibility=\"status.visibility\"\n              :logged-in=\"loggedIn\"\n              :status=\"status\"\n            />\n            <favorite-button\n              :logged-in=\"loggedIn\"\n              :status=\"status\"\n            />\n            <ReactButton\n              v-if=\"loggedIn\"\n              :status=\"status\"\n            />\n            <extra-buttons\n              :status=\"status\"\n              @onError=\"showError\"\n              @onSuccess=\"clearError\"\n            />\n          </div>\n        </div>\n      </div>\n      <div\n        v-else\n        class=\"gravestone\"\n      >\n        <div class=\"left-side\">\n          <UserAvatar\n            class=\"post-avatar\"\n            :compact=\"compact\"\n            :bot=\"botIndicator\"\n          />\n        </div>\n        <div class=\"right-side\">\n          <div class=\"deleted-text\">\n            {{ $t('status.status_deleted') }}\n          </div>\n          <reply-button\n            v-if=\"replying\"\n            :replying=\"replying\"\n            :status=\"status\"\n            @toggle=\"toggleReplying\"\n          />\n        </div>\n      </div>\n      <div\n        v-if=\"replying\"\n        class=\"status-container reply-form\"\n      >\n        <PostStatusForm\n          class=\"reply-body\"\n          :reply-to=\"status.id\"\n          :attentions=\"status.attentions\"\n          :replied-user=\"status.user\"\n          :copy-message-scope=\"status.visibility\"\n          :subject=\"replySubject\"\n          @posted=\"toggleReplying\"\n        />\n      </div>\n    </template>\n  </div>\n</template>\n\n<script src=\"./status.js\" ></script>\n\n<style src=\"./status.scss\" lang=\"scss\"></style>\n","<template>\n  <div class=\"ReplyButton\">\n    <button\n      v-if=\"loggedIn\"\n      class=\"button-unstyled interactive\"\n      :class=\"{'-active': replying}\"\n      :title=\"$t('tool_tip.reply')\"\n      @click.prevent=\"$emit('toggle')\"\n    >\n      <FAIcon\n        class=\"fa-scale-110 fa-old-padding\"\n        icon=\"reply\"\n      />\n    </button>\n    <span v-else>\n      <FAIcon\n        icon=\"reply\"\n        class=\"fa-scale-110 fa-old-padding\"\n        :title=\"$t('tool_tip.reply')\"\n      />\n    </span>\n    <span\n      v-if=\"status.replies_count > 0\"\n      class=\"action-counter\"\n    >\n      {{ status.replies_count }}\n    </span>\n  </div>\n</template>\n\n<script src=\"./reply_button.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.ReplyButton {\n  display: flex;\n\n  > :first-child {\n    padding: 10px;\n    margin: -10px -8px -10px -10px;\n  }\n\n  .action-counter {\n    pointer-events: none;\n    user-select: none;\n  }\n\n  .interactive {\n    &:hover .svg-inline--fa,\n    &.-active .svg-inline--fa {\n      color: $fallback--cBlue;\n      color: var(--cBlue, $fallback--cBlue);\n    }\n  }\n\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faReply } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faReply)\n\nconst ReplyButton = {\n  name: 'ReplyButton',\n  props: ['status', 'replying'],\n  computed: {\n    loggedIn () {\n      return !!this.$store.state.users.currentUser\n    }\n  }\n}\n\nexport default ReplyButton\n","import { render } from \"./reply_button.vue?vue&type=template&id=56f413c0\"\nimport script from \"./reply_button.js?vue&type=script&lang=js\"\nexport * from \"./reply_button.js?vue&type=script&lang=js\"\n\nimport \"./reply_button.vue?vue&type=style&index=0&id=56f413c0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"FavoriteButton\">\n    <button\n      v-if=\"loggedIn\"\n      class=\"button-unstyled interactive\"\n      :class=\"status.favorited && '-favorited'\"\n      :title=\"$t('tool_tip.favorite')\"\n      @click.prevent=\"favorite()\"\n    >\n      <FAIcon\n        class=\"fa-scale-110 fa-old-padding\"\n        :icon=\"[status.favorited ? 'fas' : 'far', 'star']\"\n        :spin=\"animated\"\n      />\n    </button>\n    <span v-else>\n      <FAIcon\n        class=\"fa-scale-110 fa-old-padding\"\n        :title=\"$t('tool_tip.favorite')\"\n        :icon=\"['far', 'star']\"\n      />\n    </span>\n    <span\n      v-if=\"!mergedConfig.hidePostStats && status.fave_num > 0\"\n      class=\"action-counter\"\n    >\n      {{ status.fave_num }}\n    </span>\n  </div>\n</template>\n\n<script src=\"./favorite_button.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.FavoriteButton {\n  display: flex;\n\n  > :first-child {\n    padding: 10px;\n    margin: -10px -8px -10px -10px;\n  }\n\n  .action-counter {\n    pointer-events: none;\n    user-select: none;\n  }\n\n  .interactive {\n    .svg-inline--fa {\n      animation-duration: 0.6s;\n    }\n\n    &:hover .svg-inline--fa,\n    &.-favorited .svg-inline--fa {\n      color: $fallback--cOrange;\n      color: var(--cOrange, $fallback--cOrange);\n    }\n  }\n}\n</style>\n","import { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faStar } from '@fortawesome/free-solid-svg-icons'\nimport {\n  faStar as faStarRegular\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n  faStar,\n  faStarRegular\n)\n\nconst FavoriteButton = {\n  props: ['status', 'loggedIn'],\n  data () {\n    return {\n      animated: false\n    }\n  },\n  methods: {\n    favorite () {\n      if (!this.status.favorited) {\n        this.$store.dispatch('favorite', { id: this.status.id })\n      } else {\n        this.$store.dispatch('unfavorite', { id: this.status.id })\n      }\n      this.animated = true\n      setTimeout(() => {\n        this.animated = false\n      }, 500)\n    }\n  },\n  computed: {\n    ...mapGetters(['mergedConfig'])\n  }\n}\n\nexport default FavoriteButton\n","import { render } from \"./favorite_button.vue?vue&type=template&id=21f861d8\"\nimport script from \"./favorite_button.js?vue&type=script&lang=js\"\nexport * from \"./favorite_button.js?vue&type=script&lang=js\"\n\nimport \"./favorite_button.vue?vue&type=style&index=0&id=21f861d8&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Popover\n    trigger=\"click\"\n    class=\"ReactButton\"\n    placement=\"top\"\n    :offset=\"{ y: 5 }\"\n    :bound-to=\"{ x: 'container' }\"\n    remove-padding\n    @show=\"focusInput\"\n  >\n    <template v-slot:content=\"{close}\">\n      <div class=\"reaction-picker-filter\">\n        <input\n          v-model=\"filterWord\"\n          size=\"1\"\n          :placeholder=\"$t('emoji.search_emoji')\"\n        >\n      </div>\n      <div class=\"reaction-picker\">\n        <span\n          v-for=\"emoji in commonEmojis\"\n          :key=\"emoji.replacement\"\n          class=\"emoji-button\"\n          :title=\"emoji.displayText\"\n          @click=\"addReaction($event, emoji.replacement, close)\"\n        >\n          {{ emoji.replacement }}\n        </span>\n        <div class=\"reaction-picker-divider\" />\n        <span\n          v-for=\"(emoji, key) in emojis\"\n          :key=\"key\"\n          class=\"emoji-button\"\n          :title=\"emoji.displayText\"\n          @click=\"addReaction($event, emoji.replacement, close)\"\n        >\n          <img\n            v-if=\"emoji.imageUrl !== false\"\n            :src=\"emoji.imageUrl\"\n            width=\"30px\"\n            class=\"custom-reaction\"\n          >\n          <span v-else>\n            {{ emoji.replacement }}\n          </span>\n        </span>\n        <div class=\"reaction-bottom-fader\" />\n      </div>\n    </template>\n    <template v-slot:trigger>\n      <button\n        class=\"button-unstyled popover-trigger\"\n        :title=\"$t('tool_tip.add_reaction')\"\n      >\n        <FAIcon\n          class=\"fa-scale-110 fa-old-padding\"\n          :icon=\"['far', 'smile-beam']\"\n        />\n      </button>\n    </template>\n  </Popover>\n</template>\n\n<script src=\"./react_button.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.custom-reaction {\n  width: 30px !important;\n}\n\n.ReactButton {\n  .reaction-picker-filter {\n    padding: 0.5em;\n    display: flex;\n\n    input {\n      flex: 1;\n    }\n  }\n\n  .reaction-picker-divider {\n    height: 1px;\n    width: 100%;\n    margin: 0.5em;\n    background-color: var(--border, $fallback--border);\n  }\n\n  .reaction-picker {\n    width: 10em;\n    height: 9em;\n    font-size: 1.5em;\n    overflow-y: scroll;\n    display: flex;\n    flex-wrap: wrap;\n    padding: 0.5em;\n    text-align: center;\n    align-content: flex-start;\n    user-select: none;\n\n    mask: linear-gradient(to top, white 0, transparent 100%) bottom no-repeat,\n          linear-gradient(to bottom, white 0, transparent 100%) top no-repeat,\n          linear-gradient(to top, white, white);\n    transition: mask-size 150ms;\n    mask-size: 100% 20px, 100% 20px, auto;\n\n    /* Autoprefixed seem to ignore this one, and also syntax is different */\n    -webkit-mask-composite: xor;\n    mask-composite: exclude;\n\n    .emoji-button {\n      cursor: pointer;\n\n      flex-basis: 20%;\n      line-height: 1.5;\n      align-content: center;\n\n      &:hover {\n        transform: scale(1.25);\n      }\n    }\n  }\n\n  /* override of popover internal stuff */\n  .popover-trigger-button {\n    width: auto;\n  }\n\n  .popover-trigger {\n    padding: 10px;\n    margin: -10px;\n\n    &:hover .svg-inline--fa {\n      color: $fallback--text;\n      color: var(--text, $fallback--text);\n    }\n  }\n}\n\n</style>\n","import Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faSmileBeam } from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(faSmileBeam)\n\nconst ReactButton = {\n  props: ['status'],\n  data () {\n    return {\n      filterWord: ''\n    }\n  },\n  components: {\n    Popover\n  },\n  methods: {\n    addReaction (event, emoji, close) {\n      const existingReaction = this.status.emoji_reactions.find(r => r.name === emoji)\n      if (existingReaction && existingReaction.me) {\n        this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji })\n      } else {\n        this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji })\n      }\n      close()\n    },\n    focusInput () {\n      this.$nextTick(() => {\n        const input = this.$el.querySelector('input')\n        if (input) input.focus()\n      })\n    }\n  },\n  computed: {\n    commonEmojis () {\n      return [\n        { displayText: 'thumbsup', replacement: '👍' },\n        { displayText: 'angry', replacement: '😠' },\n        { displayText: 'eyes', replacement: '👀' },\n        { displayText: 'joy', replacement: '😂' },\n        { displayText: 'fire', replacement: '🔥' }\n      ]\n    },\n    emojis () {\n      if (this.filterWord !== '') {\n        const filterWordLowercase = this.filterWord.toLowerCase()\n        let orderedEmojiList = []\n        for (const emoji of [\n          ...this.$store.state.instance.emoji,\n          ...this.$store.state.instance.customEmoji\n        ]) {\n          if (emoji.replacement === this.filterWord) return [emoji]\n\n          const indexOfFilterWord = emoji.displayText.toLowerCase().indexOf(filterWordLowercase)\n          if (indexOfFilterWord > -1) {\n            if (!Array.isArray(orderedEmojiList[indexOfFilterWord])) {\n              orderedEmojiList[indexOfFilterWord] = []\n            }\n            orderedEmojiList[indexOfFilterWord].push(emoji)\n          }\n        }\n        return orderedEmojiList.flat()\n      }\n      return [\n        ...this.$store.state.instance.emoji,\n        ...this.$store.state.instance.customEmoji\n      ] || []\n    },\n    mergedConfig () {\n      return this.$store.getters.mergedConfig\n    }\n  }\n}\n\nexport default ReactButton\n","import { render } from \"./react_button.vue?vue&type=template&id=0101edf8\"\nimport script from \"./react_button.js?vue&type=script&lang=js\"\nexport * from \"./react_button.js?vue&type=script&lang=js\"\n\nimport \"./react_button.vue?vue&type=style&index=0&id=0101edf8&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"RetweetButton\">\n    <button\n      v-if=\"visibility !== 'private' && visibility !== 'direct' && loggedIn\"\n      class=\"button-unstyled interactive\"\n      :class=\"status.repeated && '-repeated'\"\n      :title=\"$t('tool_tip.repeat')\"\n      @click.prevent=\"retweet()\"\n    >\n      <FAIcon\n        class=\"fa-scale-110 fa-old-padding\"\n        icon=\"retweet\"\n        :spin=\"animated\"\n      />\n    </button>\n    <span v-else-if=\"loggedIn\">\n      <FAIcon\n        class=\"fa-scale-110 fa-old-padding\"\n        icon=\"lock\"\n        :title=\"$t('timeline.no_retweet_hint')\"\n      />\n    </span>\n    <span v-else>\n      <FAIcon\n        class=\"fa-scale-110 fa-old-padding\"\n        icon=\"retweet\"\n        :title=\"$t('tool_tip.repeat')\"\n      />\n    </span>\n    <span\n      v-if=\"!mergedConfig.hidePostStats && status.repeat_num > 0\"\n      class=\"no-event\"\n    >\n      {{ status.repeat_num }}\n    </span>\n  </div>\n</template>\n\n<script src=\"./retweet_button.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.RetweetButton {\n  display: flex;\n\n  > :first-child {\n    padding: 10px;\n    margin: -10px -8px -10px -10px;\n  }\n\n  .action-counter {\n    pointer-events: none;\n    user-select: none;\n  }\n\n  .interactive {\n    .svg-inline--fa {\n      animation-duration: 0.6s;\n    }\n\n    &:hover .svg-inline--fa,\n    &.-repeated .svg-inline--fa {\n      color: $fallback--cGreen;\n      color: var(--cGreen, $fallback--cGreen);\n    }\n  }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faRetweet } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faRetweet)\n\nconst RetweetButton = {\n  props: ['status', 'loggedIn', 'visibility'],\n  data () {\n    return {\n      animated: false\n    }\n  },\n  methods: {\n    retweet () {\n      if (!this.status.repeated) {\n        this.$store.dispatch('retweet', { id: this.status.id })\n      } else {\n        this.$store.dispatch('unretweet', { id: this.status.id })\n      }\n      this.animated = true\n      setTimeout(() => {\n        this.animated = false\n      }, 500)\n    }\n  },\n  computed: {\n    mergedConfig () {\n      return this.$store.getters.mergedConfig\n    }\n  }\n}\n\nexport default RetweetButton\n","import { render } from \"./retweet_button.vue?vue&type=template&id=46fe49c4\"\nimport script from \"./retweet_button.js?vue&type=script&lang=js\"\nexport * from \"./retweet_button.js?vue&type=script&lang=js\"\n\nimport \"./retweet_button.vue?vue&type=style&index=0&id=46fe49c4&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Popover\n    class=\"ExtraButtons\"\n    trigger=\"click\"\n    placement=\"top\"\n    :offset=\"{ y: 5 }\"\n    :bound-to=\"{ x: 'container' }\"\n    remove-padding\n  >\n    <template v-slot:content=\"{close}\">\n      <div class=\"dropdown-menu\">\n        <button\n          v-if=\"canMute && !status.thread_muted\"\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click.prevent=\"muteConversation\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"eye-slash\"\n          /><span>{{ $t(\"status.mute_conversation\") }}</span>\n        </button>\n        <button\n          v-if=\"canMute && status.thread_muted\"\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click.prevent=\"unmuteConversation\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"eye-slash\"\n          /><span>{{ $t(\"status.unmute_conversation\") }}</span>\n        </button>\n        <button\n          v-if=\"!status.pinned && canPin\"\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click.prevent=\"pinStatus\"\n          @click=\"close\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"thumbtack\"\n          /><span>{{ $t(\"status.pin\") }}</span>\n        </button>\n        <button\n          v-if=\"status.pinned && canPin\"\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click.prevent=\"unpinStatus\"\n          @click=\"close\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"thumbtack\"\n          /><span>{{ $t(\"status.unpin\") }}</span>\n        </button>\n        <button\n          v-if=\"!status.bookmarked\"\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click.prevent=\"bookmarkStatus\"\n          @click=\"close\"\n        >\n          <FAIcon\n            fixed-width\n            :icon=\"['far', 'bookmark']\"\n          /><span>{{ $t(\"status.bookmark\") }}</span>\n        </button>\n        <button\n          v-if=\"status.bookmarked\"\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click.prevent=\"unbookmarkStatus\"\n          @click=\"close\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"bookmark\"\n          /><span>{{ $t(\"status.unbookmark\") }}</span>\n        </button>\n        <button\n          v-if=\"canDelete\"\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click.prevent=\"deleteStatus\"\n          @click=\"close\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"times\"\n          /><span>{{ $t(\"status.delete\") }}</span>\n        </button>\n        <button\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click.prevent=\"copyLink\"\n          @click=\"close\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"share-alt\"\n          /><span>{{ $t(\"status.copy_link\") }}</span>\n        </button>\n        <a\n          v-if=\"!status.is_local\"\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          title=\"Source\"\n          :href=\"status.external_url\"\n          target=\"_blank\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"external-link-alt\"\n          /><span>{{ $t(\"status.external_source\") }}</span>\n        </a>\n        <button\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click.prevent=\"reportStatus\"\n          @click=\"close\"\n        >\n          <FAIcon\n            fixed-width\n            :icon=\"['far', 'flag']\"\n          /><span>{{ $t(\"user_card.report\") }}</span>\n        </button>\n      </div>\n    </template>\n    <template v-slot:trigger>\n      <button class=\"button-unstyled popover-trigger\">\n        <FAIcon\n          class=\"fa-scale-110 fa-old-padding\"\n          icon=\"ellipsis-h\"\n        />\n      </button>\n    </template>\n  </Popover>\n</template>\n\n<script src=\"./extra_buttons.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.ExtraButtons {\n  /* override of popover internal stuff */\n  .popover-trigger-button {\n    width: auto;\n  }\n\n  .popover-trigger {\n    position: static;\n    padding: 10px;\n    margin: -10px;\n\n    &:hover .svg-inline--fa {\n      color: $fallback--text;\n      color: var(--text, $fallback--text);\n    }\n  }\n}\n</style>\n","import Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faEllipsisH,\n  faBookmark,\n  faEyeSlash,\n  faThumbtack,\n  faShareAlt,\n  faExternalLinkAlt\n} from '@fortawesome/free-solid-svg-icons'\nimport {\n  faBookmark as faBookmarkReg,\n  faFlag\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n  faEllipsisH,\n  faBookmark,\n  faBookmarkReg,\n  faEyeSlash,\n  faThumbtack,\n  faShareAlt,\n  faExternalLinkAlt,\n  faFlag\n)\n\nconst ExtraButtons = {\n  props: [ 'status' ],\n  components: { Popover },\n  methods: {\n    deleteStatus () {\n      const confirmed = window.confirm(this.$t('status.delete_confirm'))\n      if (confirmed) {\n        this.$store.dispatch('deleteStatus', { id: this.status.id })\n      }\n    },\n    pinStatus () {\n      this.$store.dispatch('pinStatus', this.status.id)\n        .then(() => this.$emit('onSuccess'))\n        .catch(err => this.$emit('onError', err.error.error))\n    },\n    unpinStatus () {\n      this.$store.dispatch('unpinStatus', this.status.id)\n        .then(() => this.$emit('onSuccess'))\n        .catch(err => this.$emit('onError', err.error.error))\n    },\n    muteConversation () {\n      this.$store.dispatch('muteConversation', this.status.id)\n        .then(() => this.$emit('onSuccess'))\n        .catch(err => this.$emit('onError', err.error.error))\n    },\n    unmuteConversation () {\n      this.$store.dispatch('unmuteConversation', this.status.id)\n        .then(() => this.$emit('onSuccess'))\n        .catch(err => this.$emit('onError', err.error.error))\n    },\n    copyLink () {\n      navigator.clipboard.writeText(this.statusLink)\n        .then(() => this.$emit('onSuccess'))\n        .catch(err => this.$emit('onError', err.error.error))\n    },\n    bookmarkStatus () {\n      this.$store.dispatch('bookmark', { id: this.status.id })\n        .then(() => this.$emit('onSuccess'))\n        .catch(err => this.$emit('onError', err.error.error))\n    },\n    unbookmarkStatus () {\n      this.$store.dispatch('unbookmark', { id: this.status.id })\n        .then(() => this.$emit('onSuccess'))\n        .catch(err => this.$emit('onError', err.error.error))\n    },\n    reportStatus () {\n      this.$store.dispatch('openUserReportingModal', { userId: this.status.user.id, statusIds: [this.status.id] })\n    }\n  },\n  computed: {\n    currentUser () { return this.$store.state.users.currentUser },\n    canDelete () {\n      if (!this.currentUser) { return }\n      const superuser = this.currentUser.rights.moderator || this.currentUser.rights.admin\n      return superuser || this.status.user.id === this.currentUser.id\n    },\n    ownStatus () {\n      return this.status.user.id === this.currentUser.id\n    },\n    canPin () {\n      return this.ownStatus && (this.status.visibility === 'public' || this.status.visibility === 'unlisted')\n    },\n    canMute () {\n      return !!this.currentUser\n    },\n    statusLink () {\n      return `${this.$store.state.instance.server}${this.$router.resolve({ name: 'conversation', params: { id: this.status.id } }).href}`\n    }\n  }\n}\n\nexport default ExtraButtons\n","import { render } from \"./extra_buttons.vue?vue&type=template&id=3a956a44\"\nimport script from \"./extra_buttons.js?vue&type=script&lang=js\"\nexport * from \"./extra_buttons.js?vue&type=script&lang=js\"\n\nimport \"./extra_buttons.vue?vue&type=style&index=0&id=3a956a44&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Popover\n    trigger=\"hover\"\n    popover-class=\"popover-default status-popover\"\n    :bound-to=\"{ x: 'container' }\"\n    @show=\"enter\"\n  >\n    <template v-slot:trigger>\n      <slot />\n    </template>\n    <template v-slot:content>\n      <Status\n        v-if=\"status\"\n        :is-preview=\"true\"\n        :statusoid=\"status\"\n        :compact=\"true\"\n      />\n      <div\n        v-else-if=\"error\"\n        class=\"status-preview-no-content faint\"\n      >\n        {{ $t('status.status_unavailable') }}\n      </div>\n      <div\n        v-else\n        class=\"status-preview-no-content\"\n      >\n        <FAIcon\n          icon=\"circle-notch\"\n          spin\n          size=\"2x\"\n        />\n      </div>\n    </template>\n  </Popover>\n</template>\n\n<script src=\"./status_popover.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n/* popover styles load on-demand, so we need to override */\n.status-popover.popover {\n  font-size: 1rem;\n  min-width: 15em;\n  max-width: 95%;\n\n  border-color: $fallback--border;\n  border-color: var(--border, $fallback--border);\n  border-style: solid;\n  border-width: 1px;\n  border-radius: $fallback--tooltipRadius;\n  border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n  box-shadow: 2px 2px 3px rgba(0, 0, 0, 0.5);\n  box-shadow: var(--popupShadow);\n\n  /* TODO cleanup this */\n  .Status.Status {\n    border: none;\n  }\n\n  .status-preview-no-content {\n    padding: 1em;\n    text-align: center;\n\n    i {\n      font-size: 2em;\n    }\n  }\n}\n\n</style>\n","import { find } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\nimport { defineAsyncComponent } from 'vue'\n\nlibrary.add(\n  faCircleNotch\n)\n\nconst StatusPopover = {\n  name: 'StatusPopover',\n  props: [\n    'statusId'\n  ],\n  data () {\n    return {\n      error: false\n    }\n  },\n  computed: {\n    status () {\n      return find(this.$store.state.statuses.allStatuses, { id: this.statusId })\n    }\n  },\n  components: {\n    Status: defineAsyncComponent(() => import('../status/status.vue')),\n    Popover: defineAsyncComponent(() => import('../popover/popover.vue'))\n  },\n  methods: {\n    enter () {\n      if (!this.status) {\n        if (!this.statusId) {\n          this.error = true\n          return\n        }\n        this.$store.dispatch('fetchStatus', this.statusId)\n          .then(data => (this.error = false))\n          .catch(e => (this.error = true))\n      }\n    }\n  }\n}\n\nexport default StatusPopover\n","import { render } from \"./status_popover.vue?vue&type=template&id=fa4a5d94\"\nimport script from \"./status_popover.js?vue&type=script&lang=js\"\nexport * from \"./status_popover.js?vue&type=script&lang=js\"\n\nimport \"./status_popover.vue?vue&type=style&index=0&id=fa4a5d94&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Popover\n    trigger=\"hover\"\n    placement=\"top\"\n    :offset=\"{ y: 5 }\"\n  >\n    <template v-slot:trigger>\n      <slot />\n    </template>\n    <template v-slot:content>\n      <div class=\"user-list-popover\">\n        <template v-if=\"users.length\">\n          <div\n            v-for=\"(user) in usersCapped\"\n            :key=\"user.id\"\n            class=\"user-list-row\"\n          >\n            <UserAvatar\n              :user=\"user\"\n              class=\"avatar-small\"\n              :compact=\"true\"\n            />\n            <div class=\"user-list-names\">\n              <!-- eslint-disable vue/no-v-html -->\n              <RichContent\n                class=\"username\"\n                :title=\"'@'+user.screen_name_ui\"\n                :html=\"user.name_html\"\n                :emoji=\"user.emoji\"\n              />\n              <!-- eslint-enable vue/no-v-html -->\n              <span class=\"user-list-screen-name\">{{ user.screen_name_ui }}</span>\n            </div>\n          </div>\n        </template>\n        <template v-else>\n          <FAIcon\n            icon=\"circle-notch\"\n            spin\n            size=\"3x\"\n          />\n        </template>\n      </div>\n    </template>\n  </Popover>\n</template>\n\n<script src=\"./user_list_popover.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.user-list-popover {\n  padding: 0.5em;\n\n  --emoji-size: 16px;\n\n  .user-list-row {\n    padding: 0.25em;\n    display: flex;\n    flex-direction: row;\n\n    .user-list-names {\n      display: flex;\n      flex-direction: column;\n      margin-left: 0.5em;\n      min-width: 5em;\n\n      img {\n        width: 1em;\n        height: 1em;\n      }\n    }\n\n    .user-list-screen-name {\n      font-size: 0.65em;\n    }\n  }\n}\n\n</style>\n","import { defineAsyncComponent } from 'vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch\n)\n\nconst UserListPopover = {\n  name: 'UserListPopover',\n  props: [\n    'users'\n  ],\n  components: {\n    RichContent,\n    Popover: defineAsyncComponent(() => import('../popover/popover.vue')),\n    UserAvatar: defineAsyncComponent(() => import('../user_avatar/user_avatar.vue'))\n  },\n  computed: {\n    usersCapped () {\n      return this.users.slice(0, 16)\n    }\n  }\n}\n\nexport default UserListPopover\n","import { render } from \"./user_list_popover.vue?vue&type=template&id=3dc0c2d4\"\nimport script from \"./user_list_popover.js?vue&type=script&lang=js\"\nexport * from \"./user_list_popover.js?vue&type=script&lang=js\"\n\nimport \"./user_list_popover.vue?vue&type=style&index=0&id=3dc0c2d4&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"emoji-reactions\">\n    <UserListPopover\n      v-for=\"(reaction) in emojiReactions\"\n      :key=\"reaction.name\"\n      :users=\"accountsForEmoji[reaction.name]\"\n    >\n      <button\n        class=\"emoji-reaction btn button-default\"\n        :class=\"{ 'picked-reaction': reactedWith(reaction.name), 'not-clickable': !loggedIn }\"\n        @click=\"emojiOnClick(reaction.name, $event)\"\n        @mouseenter=\"fetchEmojiReactionsByIfMissing()\"\n      >\n        <span\n          v-if=\"reaction.url !== null\"\n        >\n          <img\n            :src=\"reaction.url\"\n            :title=\"reaction.name\"\n            class=\"reaction-emoji\"\n            width=\"2.55em\"\n          >\n          {{ reaction.count }}\n        </span>\n        <span v-else>\n          <span class=\"reaction-emoji unicode-emoji\">\n            {{ reaction.name }}\n          </span>\n          <span>{{ reaction.count }}</span>\n        </span>\n      </button>\n    </UserListPopover>\n    <a\n      v-if=\"tooManyReactions\"\n      class=\"emoji-reaction-expand faint\"\n      href=\"javascript:void(0)\"\n      @click=\"toggleShowAll\"\n    >\n      {{ showAll ? $t('general.show_less') : showMoreString }}\n    </a>\n  </div>\n</template>\n\n<script src=\"./emoji_reactions.js\" ></script>\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.emoji-reactions {\n  display: flex;\n  margin-top: 0.25em;\n  flex-wrap: wrap;\n}\n\n.unicode-emoji {\n  font-size: 210%;\n}\n\n.emoji-reaction {\n  padding: 0 0.5em;\n  margin-right: 0.5em;\n  margin-top: 0.5em;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  box-sizing: border-box;\n  .reaction-emoji {\n    width: 2.55em !important;\n    margin-right: 0.25em;\n  }\n  &:focus {\n    outline: none;\n  }\n\n  &.not-clickable {\n    cursor: default;\n    &:hover {\n      box-shadow: $fallback--buttonShadow;\n      box-shadow: var(--buttonShadow);\n    }\n  }\n}\n\n.emoji-reaction-expand {\n  padding: 0 0.5em;\n  margin-right: 0.5em;\n  margin-top: 0.5em;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  &:hover {\n    text-decoration: underline;\n  }\n}\n\n.picked-reaction {\n  border: 1px solid var(--accent, $fallback--link);\n  margin-left: -1px; // offset the border, can't use inset shadows either\n  margin-right: calc(0.5em - 1px);\n}\n\n</style>\n","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport UserListPopover from '../user_list_popover/user_list_popover.vue'\n\nconst EMOJI_REACTION_COUNT_CUTOFF = 12\n\nconst EmojiReactions = {\n  name: 'EmojiReactions',\n  components: {\n    UserAvatar,\n    UserListPopover\n  },\n  props: ['status'],\n  data: () => ({\n    showAll: false\n  }),\n  computed: {\n    tooManyReactions () {\n      return this.status.emoji_reactions.length > EMOJI_REACTION_COUNT_CUTOFF\n    },\n    emojiReactions () {\n      return this.showAll\n        ? this.status.emoji_reactions\n        : this.status.emoji_reactions.slice(0, EMOJI_REACTION_COUNT_CUTOFF)\n    },\n    showMoreString () {\n      return `+${this.status.emoji_reactions.length - EMOJI_REACTION_COUNT_CUTOFF}`\n    },\n    accountsForEmoji () {\n      return this.status.emoji_reactions.reduce((acc, reaction) => {\n        acc[reaction.name] = reaction.accounts || []\n        return acc\n      }, {})\n    },\n    loggedIn () {\n      return !!this.$store.state.users.currentUser\n    }\n  },\n  methods: {\n    toggleShowAll () {\n      this.showAll = !this.showAll\n    },\n    reactedWith (emoji) {\n      return this.status.emoji_reactions.find(r => r.name === emoji).me\n    },\n    fetchEmojiReactionsByIfMissing () {\n      const hasNoAccounts = this.status.emoji_reactions.find(r => !r.accounts)\n      if (hasNoAccounts) {\n        this.$store.dispatch('fetchEmojiReactionsBy', this.status.id)\n      }\n    },\n    reactWith (emoji) {\n      this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji })\n    },\n    unreact (emoji) {\n      this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji })\n    },\n    emojiOnClick (emoji, event) {\n      if (!this.loggedIn) return\n\n      if (this.reactedWith(emoji)) {\n        this.unreact(emoji)\n      } else {\n        this.reactWith(emoji)\n      }\n    }\n  }\n}\n\nexport default EmojiReactions\n","import { render } from \"./emoji_reactions.vue?vue&type=template&id=1bf35779\"\nimport script from \"./emoji_reactions.js?vue&type=script&lang=js\"\nexport * from \"./emoji_reactions.js?vue&type=script&lang=js\"\n\nimport \"./emoji_reactions.vue?vue&type=style&index=0&id=1bf35779&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import ReplyButton from '../reply_button/reply_button.vue'\nimport FavoriteButton from '../favorite_button/favorite_button.vue'\nimport ReactButton from '../react_button/react_button.vue'\nimport RetweetButton from '../retweet_button/retweet_button.vue'\nimport ExtraButtons from '../extra_buttons/extra_buttons.vue'\nimport PostStatusForm from '../post_status_form/post_status_form.vue'\nimport UserCard from '../user_card/user_card.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport AvatarList from '../avatar_list/avatar_list.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport StatusPopover from '../status_popover/status_popover.vue'\nimport UserListPopover from '../user_list_popover/user_list_popover.vue'\nimport EmojiReactions from '../emoji_reactions/emoji_reactions.vue'\nimport MentionsLine from 'src/components/mentions_line/mentions_line.vue'\nimport MentionLink from 'src/components/mention_link/mention_link.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport { muteWordHits } from '../../services/status_parser/status_parser.js'\nimport { unescape, uniqBy } from 'lodash'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faEnvelope,\n  faLock,\n  faLockOpen,\n  faGlobe,\n  faTimes,\n  faRetweet,\n  faReply,\n  faPlusSquare,\n  faSmileBeam,\n  faEllipsisH,\n  faStar,\n  faEyeSlash,\n  faEye,\n  faThumbtack,\n  faChevronUp,\n  faChevronDown,\n  faAngleDoubleRight\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faEnvelope,\n  faGlobe,\n  faLock,\n  faLockOpen,\n  faTimes,\n  faRetweet,\n  faReply,\n  faPlusSquare,\n  faStar,\n  faSmileBeam,\n  faEllipsisH,\n  faEyeSlash,\n  faEye,\n  faThumbtack,\n  faChevronUp,\n  faChevronDown,\n  faAngleDoubleRight\n)\n\nconst camelCase = name => name.charAt(0).toUpperCase() + name.slice(1)\n\nconst controlledOrUncontrolledGetters = list => list.reduce((res, name) => {\n  const camelized = camelCase(name)\n  const toggle = `controlledToggle${camelized}`\n  const controlledName = `controlled${camelized}`\n  const uncontrolledName = `uncontrolled${camelized}`\n  res[name] = function () {\n    return ((this.$data[toggle] !== undefined || this.$props[toggle] !== undefined) && this[toggle]) ? this[controlledName] : this[uncontrolledName]\n  }\n  return res\n}, {})\n\nconst controlledOrUncontrolledToggle = (obj, name) => {\n  const camelized = camelCase(name)\n  const toggle = `controlledToggle${camelized}`\n  const uncontrolledName = `uncontrolled${camelized}`\n  if (obj[toggle]) {\n    obj[toggle]()\n  } else {\n    obj[uncontrolledName] = !obj[uncontrolledName]\n  }\n}\n\nconst controlledOrUncontrolledSet = (obj, name, val) => {\n  const camelized = camelCase(name)\n  const set = `controlledSet${camelized}`\n  const uncontrolledName = `uncontrolled${camelized}`\n  if (obj[set]) {\n    obj[set](val)\n  } else {\n    obj[uncontrolledName] = val\n  }\n}\n\nconst Status = {\n  name: 'Status',\n  components: {\n    ReplyButton,\n    FavoriteButton,\n    ReactButton,\n    RetweetButton,\n    ExtraButtons,\n    PostStatusForm,\n    UserCard,\n    UserAvatar,\n    AvatarList,\n    Timeago,\n    StatusPopover,\n    UserListPopover,\n    EmojiReactions,\n    StatusContent,\n    RichContent,\n    MentionLink,\n    MentionsLine\n  },\n  props: [\n    'statusoid',\n    'expandable',\n    'inConversation',\n    'focused',\n    'highlight',\n    'compact',\n    'replies',\n    'isPreview',\n    'noHeading',\n    'inlineExpanded',\n    'showPinned',\n    'inProfile',\n    'profileUserId',\n\n    'simpleTree',\n    'controlledThreadDisplayStatus',\n    'controlledToggleThreadDisplay',\n    'showOtherRepliesAsButton',\n\n    'controlledShowingTall',\n    'controlledToggleShowingTall',\n    'controlledExpandingSubject',\n    'controlledToggleExpandingSubject',\n    'controlledShowingLongSubject',\n    'controlledToggleShowingLongSubject',\n    'controlledReplying',\n    'controlledToggleReplying',\n    'controlledMediaPlaying',\n    'controlledSetMediaPlaying',\n    'dive'\n  ],\n  data () {\n    return {\n      uncontrolledReplying: false,\n      unmuted: false,\n      userExpanded: false,\n      uncontrolledMediaPlaying: [],\n      suspendable: true,\n      error: null,\n      headTailLinks: null\n    }\n  },\n  computed: {\n    ...controlledOrUncontrolledGetters(['replying', 'mediaPlaying']),\n    muteWords () {\n      return this.mergedConfig.muteWords\n    },\n    showReasonMutedThread () {\n      return (\n        this.status.thread_muted ||\n          (this.status.reblog && this.status.reblog.thread_muted)\n      ) && !this.inConversation\n    },\n    repeaterClass () {\n      const user = this.statusoid.user\n      return highlightClass(user)\n    },\n    userClass () {\n      const user = this.retweet ? (this.statusoid.retweeted_status.user) : this.statusoid.user\n      return highlightClass(user)\n    },\n    deleted () {\n      return this.statusoid.deleted\n    },\n    repeaterStyle () {\n      const user = this.statusoid.user\n      const highlight = this.mergedConfig.highlight\n      return highlightStyle(highlight[user.screen_name])\n    },\n    userStyle () {\n      if (this.noHeading) return\n      const user = this.retweet ? (this.statusoid.retweeted_status.user) : this.statusoid.user\n      const highlight = this.mergedConfig.highlight\n      return highlightStyle(highlight[user.screen_name])\n    },\n    userProfileLink () {\n      return this.generateUserProfileLink(this.status.user.id, this.status.user.screen_name)\n    },\n    replyProfileLink () {\n      if (this.isReply) {\n        const user = this.$store.getters.findUser(this.status.in_reply_to_user_id)\n        // FIXME Why user not found sometimes???\n        return user ? user.statusnet_profile_url : 'NOT_FOUND'\n      }\n    },\n    retweet () { return !!this.statusoid.retweeted_status },\n    retweeterUser () { return this.statusoid.user },\n    retweeter () { return this.statusoid.user.name || this.statusoid.user.screen_name_ui },\n    retweeterHtml () { return this.statusoid.user.name },\n    retweeterProfileLink () { return this.generateUserProfileLink(this.statusoid.user.id, this.statusoid.user.screen_name) },\n    status () {\n      if (this.retweet) {\n        return this.statusoid.retweeted_status\n      } else {\n        return this.statusoid\n      }\n    },\n    statusFromGlobalRepository () {\n      // NOTE: Consider to replace status with statusFromGlobalRepository\n      return this.$store.state.statuses.allStatusesObject[this.status.id]\n    },\n    loggedIn () {\n      return !!this.currentUser\n    },\n    muteWordHits () {\n      return muteWordHits(this.status, this.muteWords)\n    },\n    rtBotStatus () {\n      return this.statusoid.user.bot\n    },\n    botStatus () {\n      return this.status.user.bot\n    },\n    botIndicator () {\n      return this.botStatus && !this.hideBotIndication\n    },\n    rtBotIndicator () {\n      return this.rtBotStatus && !this.hideBotIndication\n    },\n    mentionsLine () {\n      if (!this.headTailLinks) return []\n      const writtenSet = new Set(this.headTailLinks.writtenMentions.map(_ => _.url))\n      return this.status.attentions.filter(attn => {\n        // no reply user\n        return attn.id !== this.status.in_reply_to_user_id &&\n          // no self-replies\n          attn.statusnet_profile_url !== this.status.user.statusnet_profile_url &&\n          // don't include if mentions is written\n          !writtenSet.has(attn.statusnet_profile_url)\n      }).map(attn => ({\n        url: attn.statusnet_profile_url,\n        content: attn.screen_name,\n        userId: attn.id\n      }))\n    },\n    hasMentionsLine () {\n      return this.mentionsLine.length > 0\n    },\n    muted () {\n      if (this.statusoid.user.id === this.currentUser.id) return false\n      const reasonsToMute = this.userIsMuted ||\n        // Thread is muted\n        status.thread_muted ||\n        // Wordfiltered\n        this.muteWordHits.length > 0 ||\n        // bot status\n        (this.muteBotStatuses && this.botStatus && !this.compact)\n      return !this.unmuted && !this.shouldNotMute && reasonsToMute\n    },\n    userIsMuted () {\n      if (this.statusoid.user.id === this.currentUser.id) return false\n      const { status } = this\n      const { reblog } = status\n      const relationship = this.$store.getters.relationship(status.user.id)\n      const relationshipReblog = reblog && this.$store.getters.relationship(reblog.user.id)\n      return status.muted ||\n        // Reprööt of a muted post according to BE\n        (reblog && reblog.muted) ||\n        // Muted user\n        relationship.muting ||\n        // Muted user of a reprööt\n        (relationshipReblog && relationshipReblog.muting)\n    },\n    shouldNotMute () {\n      const { status } = this\n      const { reblog } = status\n      return (\n        (\n          this.inProfile && (\n            // Don't mute user's posts on user timeline (except reblogs)\n            (!reblog && status.user.id === this.profileUserId) ||\n            // Same as above but also allow self-reblogs\n            (reblog && reblog.user.id === this.profileUserId)\n          )\n        ) ||\n        // Don't mute statuses in muted conversation when said conversation is opened\n        (this.inConversation && status.thread_muted)\n        // No excuses if post has muted words\n      ) && !this.muteWordHits.length > 0\n    },\n    hideMutedUsers () {\n      return this.mergedConfig.hideMutedPosts\n    },\n    hideMutedThreads () {\n      return this.mergedConfig.hideMutedThreads\n    },\n    hideFilteredStatuses () {\n      return this.mergedConfig.hideFilteredStatuses\n    },\n    hideWordFilteredPosts () {\n      return this.mergedConfig.hideWordFilteredPosts\n    },\n    hideStatus () {\n      return (!this.shouldNotMute) && (\n        (this.muted && this.hideFilteredStatuses) ||\n        (this.userIsMuted && this.hideMutedUsers) ||\n        (this.status.thread_muted && this.hideMutedThreads) ||\n        (this.muteWordHits.length > 0 && this.hideWordFilteredPosts)\n      )\n    },\n    isFocused () {\n      // retweet or root of an expanded conversation\n      if (this.focused) {\n        return true\n      } else if (!this.inConversation) {\n        return false\n      }\n      // use conversation highlight only when in conversation\n      return this.status.id === this.highlight\n    },\n    isReply () {\n      return !!(this.status.in_reply_to_status_id && this.status.in_reply_to_user_id)\n    },\n    replyToName () {\n      if (this.status.in_reply_to_screen_name) {\n        return this.status.in_reply_to_screen_name\n      } else {\n        const user = this.$store.getters.findUser(this.status.in_reply_to_user_id)\n        return user && user.screen_name_ui\n      }\n    },\n    replySubject () {\n      if (!this.status.summary) return ''\n      const decodedSummary = unescape(this.status.summary)\n      const behavior = this.mergedConfig.subjectLineBehavior\n      const startsWithRe = decodedSummary.match(/^re[: ]/i)\n      if ((behavior !== 'noop' && startsWithRe) || behavior === 'masto') {\n        return decodedSummary\n      } else if (behavior === 'email') {\n        return 're: '.concat(decodedSummary)\n      } else if (behavior === 'noop') {\n        return ''\n      }\n    },\n    combinedFavsAndRepeatsUsers () {\n      // Use the status from the global status repository since favs and repeats are saved in it\n      const combinedUsers = [].concat(\n        this.statusFromGlobalRepository.favoritedBy,\n        this.statusFromGlobalRepository.rebloggedBy\n      )\n      return uniqBy(combinedUsers, 'id')\n    },\n    tags () {\n      return this.status.tags.filter(tagObj => tagObj.hasOwnProperty('name')).map(tagObj => tagObj.name).join(' ')\n    },\n    hidePostStats () {\n      return this.mergedConfig.hidePostStats\n    },\n    muteBotStatuses () {\n      return this.mergedConfig.muteBotStatuses\n    },\n    hideBotIndication () {\n      return this.mergedConfig.hideBotIndication\n    },\n    currentUser () {\n      return this.$store.state.users.currentUser\n    },\n    betterShadow () {\n      return this.$store.state.interface.browserSupport.cssFilter\n    },\n    mergedConfig () {\n      return this.$store.getters.mergedConfig\n    },\n    isSuspendable () {\n      return !this.replying && this.mediaPlaying.length === 0\n    },\n    inThreadForest () {\n      return !!this.controlledThreadDisplayStatus\n    },\n    threadShowing () {\n      return this.controlledThreadDisplayStatus === 'showing'\n    },\n    visibilityLocalized () {\n      return this.$i18n.t('general.scope_in_timeline.' + this.status.visibility)\n    }\n  },\n  methods: {\n    visibilityIcon (visibility) {\n      switch (visibility) {\n        case 'private':\n          return 'lock'\n        case 'unlisted':\n          return 'lock-open'\n        case 'direct':\n          return 'envelope'\n        case 'local':\n          return 'users'\n        default:\n          return 'globe'\n      }\n    },\n    showError (error) {\n      this.error = error\n    },\n    clearError () {\n      this.error = undefined\n    },\n    toggleReplying () {\n      controlledOrUncontrolledToggle(this, 'replying')\n    },\n    gotoOriginal (id) {\n      if (this.inConversation) {\n        this.$emit('goto', id)\n      }\n    },\n    toggleExpanded () {\n      this.$emit('toggleExpanded')\n    },\n    toggleMute () {\n      this.unmuted = !this.unmuted\n    },\n    toggleUserExpanded () {\n      this.userExpanded = !this.userExpanded\n    },\n    generateUserProfileLink (id, name) {\n      return generateProfileLink(id, name, this.$store.state.instance.restrictedNicknames)\n    },\n    addMediaPlaying (id) {\n      controlledOrUncontrolledSet(this, 'mediaPlaying', this.mediaPlaying.concat(id))\n    },\n    removeMediaPlaying (id) {\n      controlledOrUncontrolledSet(this, 'mediaPlaying', this.mediaPlaying.filter(mediaId => mediaId !== id))\n    },\n    setHeadTailLinks (headTailLinks) {\n      this.headTailLinks = headTailLinks\n    },\n    toggleThreadDisplay () {\n      this.controlledToggleThreadDisplay()\n    },\n    scrollIfHighlighted (highlightId) {\n      const id = highlightId\n      if (this.status.id === id) {\n        let rect = this.$el.getBoundingClientRect()\n        if (rect.top < 100) {\n          // Post is above screen, match its top to screen top\n          window.scrollBy(0, rect.top - 100)\n        } else if (rect.height >= (window.innerHeight - 50)) {\n          // Post we want to see is taller than screen so match its top to screen top\n          window.scrollBy(0, rect.top - 100)\n        } else if (rect.bottom > window.innerHeight - 50) {\n          // Post is below screen, match its bottom to screen bottom\n          window.scrollBy(0, rect.bottom - window.innerHeight + 50)\n        }\n      }\n    }\n  },\n  watch: {\n    'highlight': function (id) {\n      this.scrollIfHighlighted(id)\n    },\n    'status.repeat_num': function (num) {\n      // refetch repeats when repeat_num is changed in any way\n      if (this.isFocused && this.statusFromGlobalRepository.rebloggedBy && this.statusFromGlobalRepository.rebloggedBy.length !== num) {\n        this.$store.dispatch('fetchRepeats', this.status.id)\n      }\n    },\n    'status.fave_num': function (num) {\n      // refetch favs when fave_num is changed in any way\n      if (this.isFocused && this.statusFromGlobalRepository.favoritedBy && this.statusFromGlobalRepository.favoritedBy.length !== num) {\n        this.$store.dispatch('fetchFavs', this.status.id)\n      }\n    },\n    'isSuspendable': function (val) {\n      this.suspendable = val\n    }\n  }\n}\n\nexport default Status\n","import { render } from \"./status.vue?vue&type=template&id=7387c01f\"\nimport script from \"./status.js?vue&type=script&lang=js\"\nexport * from \"./status.js?vue&type=script&lang=js\"\n\nimport \"./status.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    class=\"user-card\"\n    :class=\"classes\"\n  >\n    <div\n      :class=\"{ 'hide-bio': hideBio }\"\n      :style=\"style\"\n      class=\"background-image\"\n    />\n    <div class=\"panel-heading -flexible-height\">\n      <div class=\"user-info\">\n        <div class=\"container\">\n          <a\n            v-if=\"allowZoomingAvatar\"\n            class=\"user-info-avatar-link\"\n            @click=\"zoomAvatar\"\n          >\n            <UserAvatar\n              :better-shadow=\"betterShadow\"\n              :user=\"user\"\n            />\n            <div class=\"user-info-avatar-link-overlay\">\n              <FAIcon\n                class=\"fa-scale-110 fa-old-padding\"\n                icon=\"search-plus\"\n              />\n            </div>\n          </a>\n          <router-link\n            v-else\n            :to=\"userProfileLink(user)\"\n          >\n            <UserAvatar\n              :better-shadow=\"betterShadow\"\n              :user=\"user\"\n            />\n          </router-link>\n          <div class=\"user-summary\">\n            <div class=\"top-line\">\n              <RichContent\n                :title=\"user.name\"\n                class=\"user-name\"\n                :html=\"user.name\"\n                :emoji=\"user.emoji\"\n              />\n              <button\n                v-if=\"!isOtherUser && user.is_local\"\n                class=\"button-unstyled edit-profile-button\"\n                @click.stop=\"openProfileTab\"\n              >\n                <FAIcon\n                  fixed-width\n                  class=\"icon\"\n                  icon=\"edit\"\n                  :title=\"$t('user_card.edit_profile')\"\n                />\n              </button>\n              <a\n                v-if=\"isOtherUser && !user.is_local\"\n                :href=\"user.statusnet_profile_url\"\n                target=\"_blank\"\n                class=\"button-unstyled external-link-button\"\n              >\n                <FAIcon\n                  class=\"icon\"\n                  icon=\"external-link-alt\"\n                />\n              </a>\n              <AccountActions\n                v-if=\"isOtherUser && loggedIn\"\n                :user=\"user\"\n                :relationship=\"relationship\"\n              />\n            </div>\n            <div class=\"bottom-line\">\n              <router-link\n                class=\"user-screen-name\"\n                :title=\"user.screen_name_ui\"\n                :to=\"userProfileLink(user)\"\n              >\n                @{{ user.screen_name_ui }}\n              </router-link>\n              <template v-if=\"!hideBio\">\n                <span\n                  v-if=\"user.deactivated\"\n                  class=\"alert user-role\"\n                >\n                  {{ $t('user_card.deactivated') }}\n                </span>\n                <span\n                  v-if=\"!!visibleRole\"\n                  class=\"alert user-role\"\n                >\n                  {{ $t(`general.role.${visibleRole}`) }}\n                </span>\n                <span\n                  v-if=\"user.bot\"\n                  class=\"alert user-role\"\n                >\n                  {{ $t('user_card.bot') }}\n                </span>\n              </template>\n              <span v-if=\"user.locked\">\n                <FAIcon\n                  class=\"lock-icon\"\n                  icon=\"lock\"\n                  size=\"sm\"\n                />\n              </span>\n              <span\n                v-if=\"!mergedConfig.hideUserStats && !hideBio\"\n                class=\"dailyAvg\"\n              >{{ dailyAvg }} {{ $t('user_card.per_day') }}</span>\n            </div>\n          </div>\n        </div>\n        <div class=\"user-meta\">\n          <div\n            v-if=\"relationship.followed_by && loggedIn && isOtherUser\"\n            class=\"following\"\n          >\n            {{ $t('user_card.follows_you') }}\n          </div>\n          <div\n            v-if=\"isOtherUser && (loggedIn || !switcher)\"\n            class=\"highlighter\"\n          >\n            <!-- id's need to be unique, otherwise vue confuses which user-card checkbox belongs to -->\n            <input\n              v-if=\"userHighlightType !== 'disabled'\"\n              :id=\"'userHighlightColorTx'+user.id\"\n              v-model=\"userHighlightColor\"\n              class=\"userHighlightText\"\n              type=\"text\"\n            >\n            <input\n              v-if=\"userHighlightType !== 'disabled'\"\n              :id=\"'userHighlightColor'+user.id\"\n              v-model=\"userHighlightColor\"\n              class=\"userHighlightCl\"\n              type=\"color\"\n            >\n            {{ ' ' }}\n            <Select\n              :id=\"'userHighlightSel'+user.id\"\n              v-model=\"userHighlightType\"\n              class=\"userHighlightSel\"\n            >\n              <option value=\"disabled\">\n                {{ $t('user_card.highlight.disabled') }}\n              </option>\n              <option value=\"solid\">\n                {{ $t('user_card.highlight.solid') }}\n              </option>\n              <option value=\"striped\">\n                {{ $t('user_card.highlight.striped') }}\n              </option>\n              <option value=\"side\">\n                {{ $t('user_card.highlight.side') }}\n              </option>\n            </Select>\n          </div>\n        </div>\n        <div\n          v-if=\"loggedIn && isOtherUser\"\n          class=\"user-interactions\"\n        >\n          <div class=\"btn-group\">\n            <FollowButton\n              :relationship=\"relationship\"\n              :user=\"user\"\n            />\n            <template v-if=\"relationship.following\">\n              <ProgressButton\n                v-if=\"!relationship.subscribing\"\n                class=\"btn button-default\"\n                :click=\"subscribeUser\"\n                :title=\"$t('user_card.subscribe')\"\n              >\n                <FAIcon icon=\"bell\" />\n              </ProgressButton>\n              <ProgressButton\n                v-else\n                class=\"btn button-default toggled\"\n                :click=\"unsubscribeUser\"\n                :title=\"$t('user_card.unsubscribe')\"\n              >\n                <FALayers>\n                  <FAIcon\n                    icon=\"rss\"\n                    transform=\"left-5 shrink-6 up-3 rotate-20\"\n                    flip=\"horizontal\"\n                  />\n                  <FAIcon\n                    icon=\"rss\"\n                    transform=\"right-5 shrink-6 up-3 rotate-20\"\n                  />\n                  <FAIcon icon=\"bell\" />\n                </FALayers>\n              </ProgressButton>\n            </template>\n          </div>\n          <div>\n            <button\n              v-if=\"relationship.muting\"\n              class=\"btn button-default btn-block toggled\"\n              :disabled=\"user.deactivated\"\n              @click=\"unmuteUser\"\n            >\n              {{ $t('user_card.muted') }}\n            </button>\n            <button\n              v-else\n              class=\"btn button-default btn-block\"\n              :disabled=\"user.deactivated\"\n              @click=\"muteUser\"\n            >\n              {{ $t('user_card.mute') }}\n            </button>\n          </div>\n          <div>\n            <button\n              v-if=\"relationship.domain_blocking\"\n              class=\"btn button-default btn-block toggled\"\n              @click=\"unmuteDomain\"\n            >\n              {{ $t('user_card.domain_muted') }}\n            </button>\n            <button\n              v-else\n              class=\"btn button-default btn-block\"\n              @click=\"muteDomain\"\n            >\n              {{ $t('user_card.mute_domain') }}\n            </button>\n          </div>\n          <div>\n            <button\n              class=\"btn button-default btn-block\"\n              :disabled=\"user.deactivated\"\n              @click=\"mentionUser\"\n            >\n              {{ $t('user_card.mention') }}\n            </button>\n          </div>\n          <ModerationTools\n            v-if=\"loggedIn.role === &quot;admin&quot;\"\n            :user=\"user\"\n          />\n        </div>\n        <div\n          v-if=\"!loggedIn && user.is_local\"\n          class=\"user-interactions\"\n        >\n          <RemoteFollow :user=\"user\" />\n        </div>\n      </div>\n    </div>\n    <div\n      v-if=\"!hideBio\"\n      class=\"panel-body\"\n    >\n      <div\n        v-if=\"!mergedConfig.hideUserStats && switcher\"\n        class=\"user-counts\"\n      >\n        <div\n          class=\"user-count\"\n          @click.prevent=\"setProfileView('statuses')\"\n        >\n          <h5>{{ $t('user_card.statuses') }}</h5>\n          <span>{{ user.statuses_count }} <br></span>\n        </div>\n        <div\n          class=\"user-count\"\n          @click.prevent=\"setProfileView('friends')\"\n        >\n          <h5>{{ $t('user_card.followees') }}</h5>\n          <span>{{ hideFollowsCount ? $t('user_card.hidden') : user.friends_count }}</span>\n        </div>\n        <div\n          class=\"user-count\"\n          @click.prevent=\"setProfileView('followers')\"\n        >\n          <h5>{{ $t('user_card.followers') }}</h5>\n          <span>{{ hideFollowersCount ? $t('user_card.hidden') : user.followers_count }}</span>\n        </div>\n      </div>\n      <RichContent\n        v-if=\"!hideBio\"\n        class=\"user-card-bio\"\n        :html=\"user.description_html\"\n        :emoji=\"user.emoji\"\n        :handle-links=\"true\"\n      />\n    </div>\n  </div>\n</template>\n\n<script src=\"./user_card.js\"></script>\n\n<style lang=\"scss\" src=\"./user_card.scss\" />\n","<template>\n  <div>\n    <Popover\n      trigger=\"click\"\n      class=\"moderation-tools-popover\"\n      placement=\"bottom\"\n      :offset=\"{ y: 5 }\"\n      @show=\"setToggled(true)\"\n      @close=\"setToggled(false)\"\n    >\n      <template v-slot:content>\n        <div class=\"dropdown-menu\">\n          <span v-if=\"user.is_local\">\n            <button\n              class=\"button-default dropdown-item\"\n              @click=\"toggleRight(&quot;admin&quot;)\"\n            >\n              {{ $t(!!user.rights.admin ? 'user_card.admin_menu.revoke_admin' : 'user_card.admin_menu.grant_admin') }}\n            </button>\n            <button\n              class=\"button-default dropdown-item\"\n              @click=\"toggleRight(&quot;moderator&quot;)\"\n            >\n              {{ $t(!!user.rights.moderator ? 'user_card.admin_menu.revoke_moderator' : 'user_card.admin_menu.grant_moderator') }}\n            </button>\n            <div\n              role=\"separator\"\n              class=\"dropdown-divider\"\n            />\n          </span>\n          <button\n            class=\"button-default dropdown-item\"\n            @click=\"toggleActivationStatus()\"\n          >\n            {{ $t(!!user.deactivated ? 'user_card.admin_menu.activate_account' : 'user_card.admin_menu.deactivate_account') }}\n          </button>\n          <button\n            class=\"button-default dropdown-item\"\n            @click=\"deleteUserDialog(true)\"\n          >\n            {{ $t('user_card.admin_menu.delete_account') }}\n          </button>\n          <div\n            v-if=\"hasTagPolicy\"\n            role=\"separator\"\n            class=\"dropdown-divider\"\n          />\n          <span v-if=\"hasTagPolicy\">\n            <button\n              class=\"button-default dropdown-item\"\n              @click=\"toggleTag(tags.FORCE_NSFW)\"\n            >\n              <span\n                class=\"menu-checkbox\"\n                :class=\"{ 'menu-checkbox-checked': hasTag(tags.FORCE_NSFW) }\"\n              />\n              {{ $t('user_card.admin_menu.force_nsfw') }}\n            </button>\n            <button\n              class=\"button-default dropdown-item\"\n              @click=\"toggleTag(tags.STRIP_MEDIA)\"\n            >\n              <span\n                class=\"menu-checkbox\"\n                :class=\"{ 'menu-checkbox-checked': hasTag(tags.STRIP_MEDIA) }\"\n              />\n              {{ $t('user_card.admin_menu.strip_media') }}\n            </button>\n            <button\n              class=\"button-default dropdown-item\"\n              @click=\"toggleTag(tags.FORCE_UNLISTED)\"\n            >\n              <span\n                class=\"menu-checkbox\"\n                :class=\"{ 'menu-checkbox-checked': hasTag(tags.FORCE_UNLISTED) }\"\n              />\n              {{ $t('user_card.admin_menu.force_unlisted') }}\n            </button>\n            <button\n              class=\"button-default dropdown-item\"\n              @click=\"toggleTag(tags.SANDBOX)\"\n            >\n              <span\n                class=\"menu-checkbox\"\n                :class=\"{ 'menu-checkbox-checked': hasTag(tags.SANDBOX) }\"\n              />\n              {{ $t('user_card.admin_menu.sandbox') }}\n            </button>\n            <button\n              v-if=\"user.is_local\"\n              class=\"button-default dropdown-item\"\n              @click=\"toggleTag(tags.DISABLE_REMOTE_SUBSCRIPTION)\"\n            >\n              <span\n                class=\"menu-checkbox\"\n                :class=\"{ 'menu-checkbox-checked': hasTag(tags.DISABLE_REMOTE_SUBSCRIPTION) }\"\n              />\n              {{ $t('user_card.admin_menu.disable_remote_subscription') }}\n            </button>\n            <button\n              v-if=\"user.is_local\"\n              class=\"button-default dropdown-item\"\n              @click=\"toggleTag(tags.DISABLE_ANY_SUBSCRIPTION)\"\n            >\n              <span\n                class=\"menu-checkbox\"\n                :class=\"{ 'menu-checkbox-checked': hasTag(tags.DISABLE_ANY_SUBSCRIPTION) }\"\n              />\n              {{ $t('user_card.admin_menu.disable_any_subscription') }}\n            </button>\n            <button\n              v-if=\"user.is_local\"\n              class=\"button-default dropdown-item\"\n              @click=\"toggleTag(tags.QUARANTINE)\"\n            >\n              <span\n                class=\"menu-checkbox\"\n                :class=\"{ 'menu-checkbox-checked': hasTag(tags.QUARANTINE) }\"\n              />\n              {{ $t('user_card.admin_menu.quarantine') }}\n            </button>\n          </span>\n        </div>\n      </template>\n      <template v-slot:trigger>\n        <button\n          class=\"btn button-default btn-block moderation-tools-button\"\n          :class=\"{ toggled }\"\n        >\n          {{ $t('user_card.admin_menu.moderation') }}\n          <FAIcon icon=\"chevron-down\" />\n        </button>\n      </template>\n    </Popover>\n    <teleport to=\"#modal\">\n      <DialogModal\n        v-if=\"showDeleteUserDialog\"\n        :on-cancel=\"deleteUserDialog.bind(this, false)\"\n      >\n        <template v-slot:header>\n          {{ $t('user_card.admin_menu.delete_user') }}\n        </template>\n        <p>{{ $t('user_card.admin_menu.delete_user_confirmation') }}</p>\n        <template v-slot:footer>\n          <button\n            class=\"btn button-default\"\n            @click=\"deleteUserDialog(false)\"\n          >\n            {{ $t('general.cancel') }}\n          </button>\n          <button\n            class=\"btn button-default danger\"\n            @click=\"deleteUser()\"\n          >\n            {{ $t('user_card.admin_menu.delete_user') }}\n          </button>\n        </template>\n      </DialogModal>\n    </teleport>\n  </div>\n</template>\n\n<script src=\"./moderation_tools.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.moderation-tools-popover {\n  height: 100%;\n  .trigger {\n    display: flex !important;\n    height: 100%;\n  }\n}\n\n.moderation-tools-button {\n  svg,i {\n    font-size: 0.8em;\n  }\n}\n</style>\n","<template>\n  <span\n    :class=\"{ 'dark-overlay': darkOverlay }\"\n    @click.self.stop=\"onCancel()\"\n  >\n    <div\n      class=\"dialog-modal panel panel-default\"\n      @click.stop=\"\"\n    >\n      <div class=\"panel-heading dialog-modal-heading\">\n        <div class=\"title\">\n          <slot name=\"header\" />\n        </div>\n      </div>\n      <div class=\"dialog-modal-content\">\n        <slot name=\"default\" />\n      </div>\n      <div class=\"dialog-modal-footer user-interactions panel-footer\">\n        <slot name=\"footer\" />\n      </div>\n    </div>\n  </span>\n</template>\n\n<script src=\"./dialog_modal.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n// TODO: unify with other modals.\n.dark-overlay {\n  &::before {\n    bottom: 0;\n    content: \" \";\n    display: block;\n    cursor: default;\n    left: 0;\n    position: fixed;\n    right: 0;\n    top: 0;\n    background: rgba(27,31,35,.5);\n    z-index: 99;\n  }\n}\n\n.dialog-modal.panel {\n  top: 0;\n  left: 50%;\n  max-height: 80vh;\n  max-width: 90vw;\n  margin: 15vh auto;\n  position: fixed;\n  transform: translateX(-50%);\n  z-index: 999;\n  cursor: default;\n  display: block;\n  background-color: $fallback--bg;\n  background-color: var(--bg, $fallback--bg);\n\n  .dialog-modal-heading {\n    .title {\n      text-align: center;\n    }\n  }\n\n  .dialog-modal-content {\n    margin: 0;\n    padding: 1rem 1rem;\n    background-color: $fallback--bg;\n    background-color: var(--bg, $fallback--bg);\n    white-space: normal;\n  }\n\n  .dialog-modal-footer {\n    margin: 0;\n    padding: .5em .5em;\n    background-color: $fallback--bg;\n    background-color: var(--bg, $fallback--bg);\n    border-top: 1px solid $fallback--border;\n    border-top: 1px solid var(--border, $fallback--border);\n    display: flex;\n    justify-content: flex-end;\n\n    button {\n      width: auto;\n      margin-left: .5rem;\n    }\n  }\n}\n\n</style>\n","const DialogModal = {\n  props: {\n    darkOverlay: {\n      default: true,\n      type: Boolean\n    },\n    onCancel: {\n      default: () => {},\n      type: Function\n    }\n  }\n}\n\nexport default DialogModal\n","import { render } from \"./dialog_modal.vue?vue&type=template&id=202a26c4\"\nimport script from \"./dialog_modal.js?vue&type=script&lang=js\"\nexport * from \"./dialog_modal.js?vue&type=script&lang=js\"\n\nimport \"./dialog_modal.vue?vue&type=style&index=0&id=202a26c4&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faChevronDown } from '@fortawesome/free-solid-svg-icons'\n\nimport DialogModal from '../dialog_modal/dialog_modal.vue'\nimport Popover from '../popover/popover.vue'\n\nlibrary.add(faChevronDown)\n\nconst FORCE_NSFW = 'mrf_tag:media-force-nsfw'\nconst STRIP_MEDIA = 'mrf_tag:media-strip'\nconst FORCE_UNLISTED = 'mrf_tag:force-unlisted'\nconst DISABLE_REMOTE_SUBSCRIPTION = 'mrf_tag:disable-remote-subscription'\nconst DISABLE_ANY_SUBSCRIPTION = 'mrf_tag:disable-any-subscription'\nconst SANDBOX = 'mrf_tag:sandbox'\nconst QUARANTINE = 'mrf_tag:quarantine'\n\nconst ModerationTools = {\n  props: [\n    'user'\n  ],\n  data () {\n    return {\n      tags: {\n        FORCE_NSFW,\n        STRIP_MEDIA,\n        FORCE_UNLISTED,\n        DISABLE_REMOTE_SUBSCRIPTION,\n        DISABLE_ANY_SUBSCRIPTION,\n        SANDBOX,\n        QUARANTINE\n      },\n      showDeleteUserDialog: false,\n      toggled: false\n    }\n  },\n  components: {\n    DialogModal,\n    Popover\n  },\n  computed: {\n    tagsSet () {\n      return new Set(this.user.tags)\n    },\n    hasTagPolicy () {\n      return this.$store.state.instance.tagPolicyAvailable\n    }\n  },\n  methods: {\n    hasTag (tagName) {\n      return this.tagsSet.has(tagName)\n    },\n    toggleTag (tag) {\n      const store = this.$store\n      if (this.tagsSet.has(tag)) {\n        store.state.api.backendInteractor.untagUser({ user: this.user, tag }).then(response => {\n          if (!response.ok) { return }\n          store.commit('untagUser', { user: this.user, tag })\n        })\n      } else {\n        store.state.api.backendInteractor.tagUser({ user: this.user, tag }).then(response => {\n          if (!response.ok) { return }\n          store.commit('tagUser', { user: this.user, tag })\n        })\n      }\n    },\n    toggleRight (right) {\n      const store = this.$store\n      if (this.user.rights[right]) {\n        store.state.api.backendInteractor.deleteRight({ user: this.user, right }).then(response => {\n          if (!response.ok) { return }\n          store.commit('updateRight', { user: this.user, right, value: false })\n        })\n      } else {\n        store.state.api.backendInteractor.addRight({ user: this.user, right }).then(response => {\n          if (!response.ok) { return }\n          store.commit('updateRight', { user: this.user, right, value: true })\n        })\n      }\n    },\n    toggleActivationStatus () {\n      this.$store.dispatch('toggleActivationStatus', { user: this.user })\n    },\n    deleteUserDialog (show) {\n      this.showDeleteUserDialog = show\n    },\n    deleteUser () {\n      const store = this.$store\n      const user = this.user\n      const { id, name } = user\n      store.state.api.backendInteractor.deleteUser({ user })\n        .then(e => {\n          this.$store.dispatch('markStatusesAsDeleted', status => user.id === status.user.id)\n          const isProfile = this.$route.name === 'external-user-profile' || this.$route.name === 'user-profile'\n          const isTargetUser = this.$route.params.name === name || this.$route.params.id === id\n          if (isProfile && isTargetUser) {\n            window.history.back()\n          }\n        })\n    },\n    setToggled (value) {\n      this.toggled = value\n    }\n  }\n}\n\nexport default ModerationTools\n","import { render } from \"./moderation_tools.vue?vue&type=template&id=0ae1f97e\"\nimport script from \"./moderation_tools.js?vue&type=script&lang=js\"\nexport * from \"./moderation_tools.js?vue&type=script&lang=js\"\n\nimport \"./moderation_tools.vue?vue&type=style&index=0&id=0ae1f97e&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"AccountActions\">\n    <Popover\n      trigger=\"click\"\n      placement=\"bottom\"\n      :bound-to=\"{ x: 'container' }\"\n      remove-padding\n    >\n      <template v-slot:content>\n        <div class=\"dropdown-menu\">\n          <template v-if=\"relationship.following\">\n            <button\n              v-if=\"relationship.showing_reblogs\"\n              class=\"btn button-default dropdown-item\"\n              @click=\"hideRepeats\"\n            >\n              {{ $t('user_card.hide_repeats') }}\n            </button>\n            <button\n              v-if=\"!relationship.showing_reblogs\"\n              class=\"btn button-default dropdown-item\"\n              @click=\"showRepeats\"\n            >\n              {{ $t('user_card.show_repeats') }}\n            </button>\n            <div\n              role=\"separator\"\n              class=\"dropdown-divider\"\n            />\n          </template>\n          <button\n            v-if=\"relationship.blocking\"\n            class=\"btn button-default btn-block dropdown-item\"\n            @click=\"unblockUser\"\n          >\n            {{ $t('user_card.unblock') }}\n          </button>\n          <button\n            v-else\n            class=\"btn button-default btn-block dropdown-item\"\n            @click=\"blockUser\"\n          >\n            {{ $t('user_card.block') }}\n          </button>\n          <button\n            class=\"btn button-default btn-block dropdown-item\"\n            @click=\"reportUser\"\n          >\n            {{ $t('user_card.report') }}\n          </button>\n          <button\n            v-if=\"pleromaChatMessagesAvailable\"\n            class=\"btn button-default btn-block dropdown-item\"\n            @click=\"openChat\"\n          >\n            {{ $t('user_card.message') }}\n          </button>\n        </div>\n      </template>\n      <template v-slot:trigger>\n        <button class=\"button-unstyled ellipsis-button\">\n          <FAIcon\n            class=\"icon\"\n            icon=\"ellipsis-v\"\n          />\n        </button>\n      </template>\n    </Popover>\n  </div>\n</template>\n\n<script src=\"./account_actions.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n.AccountActions {\n  .ellipsis-button {\n    width: 2.5em;\n    margin: -0.5em 0;\n    padding: 0.5em 0;\n    text-align: center;\n\n    &:not(:hover) .icon {\n      color: $fallback--lightText;\n      color: var(--lightText, $fallback--lightText);\n    }\n  }\n}\n</style>\n","import { mapState } from 'vuex'\nimport ProgressButton from '../progress_button/progress_button.vue'\nimport Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faEllipsisV\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faEllipsisV\n)\n\nconst AccountActions = {\n  props: [\n    'user', 'relationship'\n  ],\n  data () {\n    return { }\n  },\n  components: {\n    ProgressButton,\n    Popover\n  },\n  methods: {\n    showRepeats () {\n      this.$store.dispatch('showReblogs', this.user.id)\n    },\n    hideRepeats () {\n      this.$store.dispatch('hideReblogs', this.user.id)\n    },\n    blockUser () {\n      this.$store.dispatch('blockUser', this.user.id)\n    },\n    unblockUser () {\n      this.$store.dispatch('unblockUser', this.user.id)\n    },\n    reportUser () {\n      this.$store.dispatch('openUserReportingModal', { userId: this.user.id })\n    },\n    openChat () {\n      this.$router.push({\n        name: 'chat',\n        params: { username: this.$store.state.users.currentUser.screen_name, recipient_id: this.user.id }\n      })\n    }\n  },\n  computed: {\n    ...mapState({\n      pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable\n    })\n  }\n}\n\nexport default AccountActions\n","import { render } from \"./account_actions.vue?vue&type=template&id=cbff36f6\"\nimport script from \"./account_actions.js?vue&type=script&lang=js\"\nexport * from \"./account_actions.js?vue&type=script&lang=js\"\n\nimport \"./account_actions.vue?vue&type=style&index=0&id=cbff36f6&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport RemoteFollow from '../remote_follow/remote_follow.vue'\nimport ProgressButton from '../progress_button/progress_button.vue'\nimport FollowButton from '../follow_button/follow_button.vue'\nimport ModerationTools from '../moderation_tools/moderation_tools.vue'\nimport AccountActions from '../account_actions/account_actions.vue'\nimport Select from '../select/select.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faBell,\n  faRss,\n  faSearchPlus,\n  faExternalLinkAlt,\n  faEdit\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faRss,\n  faBell,\n  faSearchPlus,\n  faExternalLinkAlt,\n  faEdit\n)\n\nexport default {\n  props: [\n    'userId', 'switcher', 'selected', 'hideBio', 'rounded', 'bordered', 'allowZoomingAvatar'\n  ],\n  data () {\n    return {\n      followRequestInProgress: false,\n      betterShadow: this.$store.state.interface.browserSupport.cssFilter\n    }\n  },\n  created () {\n    this.$store.dispatch('fetchUserRelationship', this.user.id)\n  },\n  computed: {\n    user () {\n      return this.$store.getters.findUser(this.userId)\n    },\n    relationship () {\n      return this.$store.getters.relationship(this.userId)\n    },\n    classes () {\n      return [{\n        'user-card-rounded-t': this.rounded === 'top', // set border-top-left-radius and border-top-right-radius\n        'user-card-rounded': this.rounded === true, // set border-radius for all sides\n        'user-card-bordered': this.bordered === true // set border for all sides\n      }]\n    },\n    style () {\n      return {\n        backgroundImage: [\n          `linear-gradient(to bottom, var(--profileTint), var(--profileTint))`,\n          `url(${this.user.cover_photo})`\n        ].join(', ')\n      }\n    },\n    isOtherUser () {\n      return this.user.id !== this.$store.state.users.currentUser.id\n    },\n    subscribeUrl () {\n      // eslint-disable-next-line no-undef\n      const serverUrl = new URL(this.user.statusnet_profile_url)\n      return `${serverUrl.protocol}//${serverUrl.host}/main/ostatus`\n    },\n    loggedIn () {\n      return this.$store.state.users.currentUser\n    },\n    dailyAvg () {\n      const days = Math.ceil((new Date() - new Date(this.user.created_at)) / (60 * 60 * 24 * 1000))\n      return Math.round(this.user.statuses_count / days)\n    },\n    userHighlightType: {\n      get () {\n        const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n        return (data && data.type) || 'disabled'\n      },\n      set (type) {\n        const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n        if (type !== 'disabled') {\n          this.$store.dispatch('setHighlight', { user: this.user.screen_name, color: (data && data.color) || '#FFFFFF', type })\n        } else {\n          this.$store.dispatch('setHighlight', { user: this.user.screen_name, color: undefined })\n        }\n      },\n      ...mapGetters(['mergedConfig'])\n    },\n    userHighlightColor: {\n      get () {\n        const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n        return data && data.color\n      },\n      set (color) {\n        this.$store.dispatch('setHighlight', { user: this.user.screen_name, color })\n      }\n    },\n    visibleRole () {\n      const rights = this.user.rights\n      if (!rights) { return }\n      const validRole = rights.admin || rights.moderator\n      const roleTitle = rights.admin ? 'admin' : 'moderator'\n      return validRole && roleTitle\n    },\n    hideFollowsCount () {\n      return this.isOtherUser && this.user.hide_follows_count\n    },\n    hideFollowersCount () {\n      return this.isOtherUser && this.user.hide_followers_count\n    },\n    ...mapGetters(['mergedConfig'])\n  },\n  components: {\n    UserAvatar,\n    RemoteFollow,\n    ModerationTools,\n    AccountActions,\n    ProgressButton,\n    FollowButton,\n    Select,\n    RichContent\n  },\n  methods: {\n    refetchRelationship () {\n      return this.$store.dispatch('fetchUserRelationship', this.user.id)\n    },\n    muteUser () {\n      this.$store.dispatch('muteUser', this.user.id)\n    },\n    unmuteUser () {\n      this.$store.dispatch('unmuteUser', this.user.id)\n    },\n    muteDomain () {\n      this.$store.dispatch('muteDomain', this.user.screen_name.split('@')[1])\n        .then(() => this.refetchRelationship())\n    },\n    unmuteDomain () {\n      this.$store.dispatch('unmuteDomain', this.user.screen_name.split('@')[1])\n        .then(() => this.refetchRelationship())\n    },\n    subscribeUser () {\n      return this.$store.dispatch('subscribeUser', this.user.id)\n    },\n    unsubscribeUser () {\n      return this.$store.dispatch('unsubscribeUser', this.user.id)\n    },\n    setProfileView (v) {\n      if (this.switcher) {\n        const store = this.$store\n        store.commit('setProfileView', { v })\n      }\n    },\n    linkClicked ({ target }) {\n      if (target.tagName === 'SPAN') {\n        target = target.parentNode\n      }\n      if (target.tagName === 'A') {\n        window.open(target.href, '_blank')\n      }\n    },\n    userProfileLink (user) {\n      return generateProfileLink(\n        user.id, user.screen_name,\n        this.$store.state.instance.restrictedNicknames\n      )\n    },\n    openProfileTab () {\n      this.$store.dispatch('openSettingsModalTab', 'profile')\n    },\n    zoomAvatar () {\n      const attachment = {\n        url: this.user.profile_image_url_original,\n        mimetype: 'image'\n      }\n      this.$store.dispatch('setMedia', [attachment])\n      this.$store.dispatch('setCurrentMedia', attachment)\n    },\n    mentionUser () {\n      this.$store.dispatch('openPostStatusModal', { replyTo: true, repliedUser: this.user })\n    }\n  }\n}\n","import { render } from \"./user_card.vue?vue&type=template&id=3cf2819d\"\nimport script from \"./user_card.js?vue&type=script&lang=js\"\nexport * from \"./user_card.js?vue&type=script&lang=js\"\n\nimport \"./user_card.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { invertLightness, brightness } from 'chromatism'\nimport { alphaBlend, mixrgb } from '../color_convert/color_convert.js'\n/* This is a definition of all layer combinations\n * each key is a topmost layer, each value represents layer underneath\n * this is essentially a simplified tree\n */\nexport const LAYERS = {\n  undelay: null, // root\n  topBar: null, // no transparency support\n  badge: null, //  no transparency support\n  profileTint: null, // doesn't matter\n  fg: null,\n  bg: 'underlay',\n  highlight: 'bg',\n  panel: 'bg',\n  popover: 'bg',\n  selectedMenu: 'popover',\n  btn: 'bg',\n  btnPanel: 'panel',\n  btnTopBar: 'topBar',\n  input: 'bg',\n  inputPanel: 'panel',\n  inputTopBar: 'topBar',\n  alert: 'bg',\n  alertPanel: 'panel',\n  poll: 'bg',\n  chatBg: 'underlay',\n  chatMessage: 'chatBg'\n}\n\n/* By default opacity slots have 1 as default opacity\n * this allows redefining it to something else\n */\nexport const DEFAULT_OPACITY = {\n  profileTint: 0.5,\n  alert: 0.5,\n  input: 0.5,\n  faint: 0.5,\n  underlay: 0.15,\n  alertPopup: 0.95\n}\n\n/**  SUBJECT TO CHANGE IN THE FUTURE, this is all beta\n * Color and opacity slots definitions. Each key represents a slot.\n *\n * Short-hands:\n * String beginning with `--` - value after dashes treated as sole\n *     dependency - i.e. `--value` equivalent to { depends: ['value']}\n * String beginning with `#` - value would be treated as solid color\n *     defined in hexadecimal representation (i.e. #FFFFFF) and will be\n *     used as default. `#FFFFFF` is equivalent to { default: '#FFFFFF'}\n *\n * Full definition:\n * @property {String[]} depends - color slot names this color depends ones.\n *   cyclic dependencies are supported to some extent but not recommended.\n * @property {String} [opacity] - opacity slot used by this color slot.\n *   opacity is inherited from parents. To break inheritance graph use null\n * @property {Number} [priority] - EXPERIMENTAL. used to pre-sort slots so\n *   that slots with higher priority come earlier\n * @property {Function(mod, ...colors)} [color] - function that will be\n *   used to determine the color. By default it just copies first color in\n *   dependency list.\n * @argument {Number} mod - `1` (light-on-dark) or `-1` (dark-on-light)\n *   depending on background color (for textColor)/given color.\n * @argument {...Object} deps - each argument after mod represents each\n *   color from `depends` array. All colors take user customizations into\n *   account and represented by { r, g, b } objects.\n * @returns {Object} resulting color, should be in { r, g, b } form\n *\n * @property {Boolean|String} [textColor] - true to mark color slot as text\n *   color. This enables automatic text color generation for the slot. Use\n *   'preserve' string if you don't want text color to fall back to\n *   black/white. Use 'bw' to only ever use black or white. This also makes\n *   following properties required:\n * @property {String} [layer] - which layer the text sit on top on - used\n *   to account for transparency in text color calculation\n *   layer is inherited from parents. To break inheritance graph use null\n * @property {String} [variant] - which color slot is background (same as\n *   above, used to account for transparency)\n */\nexport const SLOT_INHERITANCE = {\n  bg: {\n    depends: [],\n    opacity: 'bg',\n    priority: 1\n  },\n  wallpaper: {\n    depends: ['bg'],\n    color: (mod, bg) => brightness(-2 * mod, bg).rgb\n  },\n  fg: {\n    depends: [],\n    priority: 1\n  },\n  text: {\n    depends: [],\n    layer: 'bg',\n    opacity: null,\n    priority: 1\n  },\n  underlay: {\n    default: '#000000',\n    opacity: 'underlay'\n  },\n  link: {\n    depends: ['accent'],\n    priority: 1\n  },\n  accent: {\n    depends: ['link'],\n    priority: 1\n  },\n  faint: {\n    depends: ['text'],\n    opacity: 'faint'\n  },\n  faintLink: {\n    depends: ['link'],\n    opacity: 'faint'\n  },\n  postFaintLink: {\n    depends: ['postLink'],\n    opacity: 'faint'\n  },\n\n  cBlue: '#0000ff',\n  cRed: '#FF0000',\n  cGreen: '#00FF00',\n  cOrange: '#E3FF00',\n\n  profileBg: {\n    depends: ['bg'],\n    color: (mod, bg) => ({\n      r: Math.floor(bg.r * 0.53),\n      g: Math.floor(bg.g * 0.56),\n      b: Math.floor(bg.b * 0.59)\n    })\n  },\n  profileTint: {\n    depends: ['bg'],\n    layer: 'profileTint',\n    opacity: 'profileTint'\n  },\n\n  highlight: {\n    depends: ['bg'],\n    color: (mod, bg) => brightness(5 * mod, bg).rgb\n  },\n  highlightLightText: {\n    depends: ['lightText'],\n    layer: 'highlight',\n    textColor: true\n  },\n  highlightPostLink: {\n    depends: ['postLink'],\n    layer: 'highlight',\n    textColor: 'preserve'\n  },\n  highlightFaintText: {\n    depends: ['faint'],\n    layer: 'highlight',\n    textColor: true\n  },\n  highlightFaintLink: {\n    depends: ['faintLink'],\n    layer: 'highlight',\n    textColor: 'preserve'\n  },\n  highlightPostFaintLink: {\n    depends: ['postFaintLink'],\n    layer: 'highlight',\n    textColor: 'preserve'\n  },\n  highlightText: {\n    depends: ['text'],\n    layer: 'highlight',\n    textColor: true\n  },\n  highlightLink: {\n    depends: ['link'],\n    layer: 'highlight',\n    textColor: 'preserve'\n  },\n  highlightIcon: {\n    depends: ['highlight', 'highlightText'],\n    color: (mod, bg, text) => mixrgb(bg, text)\n  },\n\n  popover: {\n    depends: ['bg'],\n    opacity: 'popover'\n  },\n  popoverLightText: {\n    depends: ['lightText'],\n    layer: 'popover',\n    textColor: true\n  },\n  popoverPostLink: {\n    depends: ['postLink'],\n    layer: 'popover',\n    textColor: 'preserve'\n  },\n  popoverFaintText: {\n    depends: ['faint'],\n    layer: 'popover',\n    textColor: true\n  },\n  popoverFaintLink: {\n    depends: ['faintLink'],\n    layer: 'popover',\n    textColor: 'preserve'\n  },\n  popoverPostFaintLink: {\n    depends: ['postFaintLink'],\n    layer: 'popover',\n    textColor: 'preserve'\n  },\n  popoverText: {\n    depends: ['text'],\n    layer: 'popover',\n    textColor: true\n  },\n  popoverLink: {\n    depends: ['link'],\n    layer: 'popover',\n    textColor: 'preserve'\n  },\n  popoverIcon: {\n    depends: ['popover', 'popoverText'],\n    color: (mod, bg, text) => mixrgb(bg, text)\n  },\n\n  selectedPost: '--highlight',\n  selectedPostFaintText: {\n    depends: ['highlightFaintText'],\n    layer: 'highlight',\n    variant: 'selectedPost',\n    textColor: true\n  },\n  selectedPostLightText: {\n    depends: ['highlightLightText'],\n    layer: 'highlight',\n    variant: 'selectedPost',\n    textColor: true\n  },\n  selectedPostPostLink: {\n    depends: ['highlightPostLink'],\n    layer: 'highlight',\n    variant: 'selectedPost',\n    textColor: 'preserve'\n  },\n  selectedPostFaintLink: {\n    depends: ['highlightFaintLink'],\n    layer: 'highlight',\n    variant: 'selectedPost',\n    textColor: 'preserve'\n  },\n  selectedPostText: {\n    depends: ['highlightText'],\n    layer: 'highlight',\n    variant: 'selectedPost',\n    textColor: true\n  },\n  selectedPostLink: {\n    depends: ['highlightLink'],\n    layer: 'highlight',\n    variant: 'selectedPost',\n    textColor: 'preserve'\n  },\n  selectedPostIcon: {\n    depends: ['selectedPost', 'selectedPostText'],\n    color: (mod, bg, text) => mixrgb(bg, text)\n  },\n\n  selectedMenu: {\n    depends: ['bg'],\n    color: (mod, bg) => brightness(5 * mod, bg).rgb\n  },\n  selectedMenuLightText: {\n    depends: ['highlightLightText'],\n    layer: 'selectedMenu',\n    variant: 'selectedMenu',\n    textColor: true\n  },\n  selectedMenuFaintText: {\n    depends: ['highlightFaintText'],\n    layer: 'selectedMenu',\n    variant: 'selectedMenu',\n    textColor: true\n  },\n  selectedMenuFaintLink: {\n    depends: ['highlightFaintLink'],\n    layer: 'selectedMenu',\n    variant: 'selectedMenu',\n    textColor: 'preserve'\n  },\n  selectedMenuText: {\n    depends: ['highlightText'],\n    layer: 'selectedMenu',\n    variant: 'selectedMenu',\n    textColor: true\n  },\n  selectedMenuLink: {\n    depends: ['highlightLink'],\n    layer: 'selectedMenu',\n    variant: 'selectedMenu',\n    textColor: 'preserve'\n  },\n  selectedMenuIcon: {\n    depends: ['selectedMenu', 'selectedMenuText'],\n    color: (mod, bg, text) => mixrgb(bg, text)\n  },\n\n  selectedMenuPopover: {\n    depends: ['popover'],\n    color: (mod, bg) => brightness(5 * mod, bg).rgb\n  },\n  selectedMenuPopoverLightText: {\n    depends: ['selectedMenuLightText'],\n    layer: 'selectedMenuPopover',\n    variant: 'selectedMenuPopover',\n    textColor: true\n  },\n  selectedMenuPopoverFaintText: {\n    depends: ['selectedMenuFaintText'],\n    layer: 'selectedMenuPopover',\n    variant: 'selectedMenuPopover',\n    textColor: true\n  },\n  selectedMenuPopoverFaintLink: {\n    depends: ['selectedMenuFaintLink'],\n    layer: 'selectedMenuPopover',\n    variant: 'selectedMenuPopover',\n    textColor: 'preserve'\n  },\n  selectedMenuPopoverText: {\n    depends: ['selectedMenuText'],\n    layer: 'selectedMenuPopover',\n    variant: 'selectedMenuPopover',\n    textColor: true\n  },\n  selectedMenuPopoverLink: {\n    depends: ['selectedMenuLink'],\n    layer: 'selectedMenuPopover',\n    variant: 'selectedMenuPopover',\n    textColor: 'preserve'\n  },\n  selectedMenuPopoverIcon: {\n    depends: ['selectedMenuPopover', 'selectedMenuText'],\n    color: (mod, bg, text) => mixrgb(bg, text)\n  },\n\n  lightText: {\n    depends: ['text'],\n    layer: 'bg',\n    textColor: 'preserve',\n    color: (mod, text) => brightness(20 * mod, text).rgb\n  },\n\n  postLink: {\n    depends: ['link'],\n    layer: 'bg',\n    textColor: 'preserve'\n  },\n\n  postGreentext: {\n    depends: ['cGreen'],\n    layer: 'bg',\n    textColor: 'preserve'\n  },\n\n  postCyantext: {\n    depends: ['cBlue'],\n    layer: 'bg',\n    textColor: 'preserve'\n  },\n\n  border: {\n    depends: ['fg'],\n    opacity: 'border',\n    color: (mod, fg) => brightness(2 * mod, fg).rgb\n  },\n\n  poll: {\n    depends: ['accent', 'bg'],\n    copacity: 'poll',\n    color: (mod, accent, bg) => alphaBlend(accent, 0.4, bg)\n  },\n  pollText: {\n    depends: ['text'],\n    layer: 'poll',\n    textColor: true\n  },\n\n  icon: {\n    depends: ['bg', 'text'],\n    inheritsOpacity: false,\n    color: (mod, bg, text) => mixrgb(bg, text)\n  },\n\n  // Foreground\n  fgText: {\n    depends: ['text'],\n    layer: 'fg',\n    textColor: true\n  },\n  fgLink: {\n    depends: ['link'],\n    layer: 'fg',\n    textColor: 'preserve'\n  },\n\n  // Panel header\n  panel: {\n    depends: ['fg'],\n    opacity: 'panel'\n  },\n  panelText: {\n    depends: ['text'],\n    layer: 'panel',\n    textColor: true\n  },\n  panelFaint: {\n    depends: ['fgText'],\n    layer: 'panel',\n    opacity: 'faint',\n    textColor: true\n  },\n  panelLink: {\n    depends: ['fgLink'],\n    layer: 'panel',\n    textColor: 'preserve'\n  },\n\n  // Top bar\n  topBar: '--fg',\n  topBarText: {\n    depends: ['fgText'],\n    layer: 'topBar',\n    textColor: true\n  },\n  topBarLink: {\n    depends: ['fgLink'],\n    layer: 'topBar',\n    textColor: 'preserve'\n  },\n\n  // Tabs\n  tab: {\n    depends: ['btn']\n  },\n  tabText: {\n    depends: ['btnText'],\n    layer: 'btn',\n    textColor: true\n  },\n  tabActiveText: {\n    depends: ['text'],\n    layer: 'bg',\n    textColor: true\n  },\n\n  // Buttons\n  btn: {\n    depends: ['fg'],\n    variant: 'btn',\n    opacity: 'btn'\n  },\n  btnText: {\n    depends: ['fgText'],\n    layer: 'btn',\n    textColor: true\n  },\n  btnPanelText: {\n    depends: ['btnText'],\n    layer: 'btnPanel',\n    variant: 'btn',\n    textColor: true\n  },\n  btnTopBarText: {\n    depends: ['btnText'],\n    layer: 'btnTopBar',\n    variant: 'btn',\n    textColor: true\n  },\n\n  // Buttons: pressed\n  btnPressed: {\n    depends: ['btn'],\n    layer: 'btn'\n  },\n  btnPressedText: {\n    depends: ['btnText'],\n    layer: 'btn',\n    variant: 'btnPressed',\n    textColor: true\n  },\n  btnPressedPanel: {\n    depends: ['btnPressed'],\n    layer: 'btn'\n  },\n  btnPressedPanelText: {\n    depends: ['btnPanelText'],\n    layer: 'btnPanel',\n    variant: 'btnPressed',\n    textColor: true\n  },\n  btnPressedTopBar: {\n    depends: ['btnPressed'],\n    layer: 'btn'\n  },\n  btnPressedTopBarText: {\n    depends: ['btnTopBarText'],\n    layer: 'btnTopBar',\n    variant: 'btnPressed',\n    textColor: true\n  },\n\n  // Buttons: toggled\n  btnToggled: {\n    depends: ['btn'],\n    layer: 'btn',\n    color: (mod, btn) => brightness(mod * 20, btn).rgb\n  },\n  btnToggledText: {\n    depends: ['btnText'],\n    layer: 'btn',\n    variant: 'btnToggled',\n    textColor: true\n  },\n  btnToggledPanelText: {\n    depends: ['btnPanelText'],\n    layer: 'btnPanel',\n    variant: 'btnToggled',\n    textColor: true\n  },\n  btnToggledTopBarText: {\n    depends: ['btnTopBarText'],\n    layer: 'btnTopBar',\n    variant: 'btnToggled',\n    textColor: true\n  },\n\n  // Buttons: disabled\n  btnDisabled: {\n    depends: ['btn', 'bg'],\n    color: (mod, btn, bg) => alphaBlend(btn, 0.25, bg)\n  },\n  btnDisabledText: {\n    depends: ['btnText', 'btnDisabled'],\n    layer: 'btn',\n    variant: 'btnDisabled',\n    color: (mod, text, btn) => alphaBlend(text, 0.25, btn)\n  },\n  btnDisabledPanelText: {\n    depends: ['btnPanelText', 'btnDisabled'],\n    layer: 'btnPanel',\n    variant: 'btnDisabled',\n    color: (mod, text, btn) => alphaBlend(text, 0.25, btn)\n  },\n  btnDisabledTopBarText: {\n    depends: ['btnTopBarText', 'btnDisabled'],\n    layer: 'btnTopBar',\n    variant: 'btnDisabled',\n    color: (mod, text, btn) => alphaBlend(text, 0.25, btn)\n  },\n\n  // Input fields\n  input: {\n    depends: ['fg'],\n    opacity: 'input'\n  },\n  inputText: {\n    depends: ['text'],\n    layer: 'input',\n    textColor: true\n  },\n  inputPanelText: {\n    depends: ['panelText'],\n    layer: 'inputPanel',\n    variant: 'input',\n    textColor: true\n  },\n  inputTopbarText: {\n    depends: ['topBarText'],\n    layer: 'inputTopBar',\n    variant: 'input',\n    textColor: true\n  },\n\n  alertError: {\n    depends: ['cRed'],\n    opacity: 'alert'\n  },\n  alertErrorText: {\n    depends: ['text'],\n    layer: 'alert',\n    variant: 'alertError',\n    textColor: true\n  },\n  alertErrorPanelText: {\n    depends: ['panelText'],\n    layer: 'alertPanel',\n    variant: 'alertError',\n    textColor: true\n  },\n\n  alertWarning: {\n    depends: ['cOrange'],\n    opacity: 'alert'\n  },\n  alertWarningText: {\n    depends: ['text'],\n    layer: 'alert',\n    variant: 'alertWarning',\n    textColor: true\n  },\n  alertWarningPanelText: {\n    depends: ['panelText'],\n    layer: 'alertPanel',\n    variant: 'alertWarning',\n    textColor: true\n  },\n\n  alertSuccess: {\n    depends: ['cGreen'],\n    opacity: 'alert'\n  },\n  alertSuccessText: {\n    depends: ['text'],\n    layer: 'alert',\n    variant: 'alertSuccess',\n    textColor: true\n  },\n  alertSuccessPanelText: {\n    depends: ['panelText'],\n    layer: 'alertPanel',\n    variant: 'alertSuccess',\n    textColor: true\n  },\n\n  alertNeutral: {\n    depends: ['text'],\n    opacity: 'alert'\n  },\n  alertNeutralText: {\n    depends: ['text'],\n    layer: 'alert',\n    variant: 'alertNeutral',\n    color: (mod, text) => invertLightness(text).rgb,\n    textColor: true\n  },\n  alertNeutralPanelText: {\n    depends: ['panelText'],\n    layer: 'alertPanel',\n    variant: 'alertNeutral',\n    textColor: true\n  },\n\n  alertPopupError: {\n    depends: ['alertError'],\n    opacity: 'alertPopup'\n  },\n  alertPopupErrorText: {\n    depends: ['alertErrorText'],\n    layer: 'popover',\n    variant: 'alertPopupError',\n    textColor: true\n  },\n\n  alertPopupWarning: {\n    depends: ['alertWarning'],\n    opacity: 'alertPopup'\n  },\n  alertPopupWarningText: {\n    depends: ['alertWarningText'],\n    layer: 'popover',\n    variant: 'alertPopupWarning',\n    textColor: true\n  },\n\n  alertPopupSuccess: {\n    depends: ['alertSuccess'],\n    opacity: 'alertPopup'\n  },\n  alertPopupSuccessText: {\n    depends: ['alertSuccessText'],\n    layer: 'popover',\n    variant: 'alertPopupSuccess',\n    textColor: true\n  },\n\n  alertPopupNeutral: {\n    depends: ['alertNeutral'],\n    opacity: 'alertPopup'\n  },\n  alertPopupNeutralText: {\n    depends: ['alertNeutralText'],\n    layer: 'popover',\n    variant: 'alertPopupNeutral',\n    textColor: true\n  },\n\n  badgeNotification: '--cRed',\n  badgeNotificationText: {\n    depends: ['text', 'badgeNotification'],\n    layer: 'badge',\n    variant: 'badgeNotification',\n    textColor: 'bw'\n  },\n\n  chatBg: {\n    depends: ['bg']\n  },\n\n  chatMessageIncomingBg: {\n    depends: ['chatBg']\n  },\n\n  chatMessageIncomingText: {\n    depends: ['text'],\n    layer: 'chatMessage',\n    variant: 'chatMessageIncomingBg',\n    textColor: true\n  },\n\n  chatMessageIncomingLink: {\n    depends: ['link'],\n    layer: 'chatMessage',\n    variant: 'chatMessageIncomingBg',\n    textColor: 'preserve'\n  },\n\n  chatMessageIncomingBorder: {\n    depends: ['border'],\n    opacity: 'border',\n    color: (mod, border) => brightness(2 * mod, border).rgb\n  },\n\n  chatMessageOutgoingBg: {\n    depends: ['chatMessageIncomingBg'],\n    color: (mod, chatMessage) => brightness(5 * mod, chatMessage).rgb\n  },\n\n  chatMessageOutgoingText: {\n    depends: ['text'],\n    layer: 'chatMessage',\n    variant: 'chatMessageOutgoingBg',\n    textColor: true\n  },\n\n  chatMessageOutgoingLink: {\n    depends: ['link'],\n    layer: 'chatMessage',\n    variant: 'chatMessageOutgoingBg',\n    textColor: 'preserve'\n  },\n\n  chatMessageOutgoingBorder: {\n    depends: ['chatMessageOutgoingBg'],\n    opacity: 'border',\n    color: (mod, border) => brightness(2 * mod, border).rgb\n  }\n}\n","import languagesObject from '../../i18n/messages'\nimport ISO6391 from 'iso-639-1'\nimport _ from 'lodash'\n\nconst specialLanguageCodes = {\n  'ja_easy': 'ja',\n  'zh_Hant': 'zh-HANT',\n  'zh': 'zh-Hans'\n}\n\nconst internalToBrowserLocale = code => specialLanguageCodes[code] || code\n\nconst internalToBackendLocale = code => internalToBrowserLocale(code).replace('_', '-')\n\nconst getLanguageName = (code) => {\n  const specialLanguageNames = {\n    'ja_easy': 'やさしいにほんご',\n    'zh': '简体中文',\n    'zh_Hant': '繁體中文'\n  }\n  const languageName = specialLanguageNames[code] || ISO6391.getNativeName(code)\n  const browserLocale = internalToBrowserLocale(code)\n  return languageName.charAt(0).toLocaleUpperCase(browserLocale) + languageName.slice(1)\n}\n\nconst languages = _.map(languagesObject.languages, (code) => ({ code: code, name: getLanguageName(code) })).sort((a, b) => a.name.localeCompare(b.name))\n\nconst localeService = {\n  internalToBrowserLocale,\n  internalToBackendLocale,\n  languages,\n  getLanguageName\n}\n\nexport default localeService\n","import { convert } from 'chromatism'\nimport { rgb2hex, hex2rgb, rgba2css, getCssColor, relativeLuminance } from '../color_convert/color_convert.js'\nimport { getColors, computeDynamicColor, getOpacitySlot } from '../theme_data/theme_data.service.js'\n\nexport const applyTheme = (input) => {\n  const { rules } = generatePreset(input)\n  const head = document.head\n  const body = document.body\n  body.classList.add('hidden')\n\n  const styleEl = document.createElement('style')\n  head.appendChild(styleEl)\n  const styleSheet = styleEl.sheet\n\n  styleSheet.toString()\n  styleSheet.insertRule(`:root { ${rules.radii} }`, 'index-max')\n  styleSheet.insertRule(`:root { ${rules.colors} }`, 'index-max')\n  styleSheet.insertRule(`:root { ${rules.shadows} }`, 'index-max')\n  styleSheet.insertRule(`:root { ${rules.fonts} }`, 'index-max')\n  body.classList.remove('hidden')\n}\n\nexport const getCssShadow = (input, usesDropShadow) => {\n  if (input.length === 0) {\n    return 'none'\n  }\n\n  return input\n    .filter(_ => usesDropShadow ? _.inset : _)\n    .map((shad) => [\n      shad.x,\n      shad.y,\n      shad.blur,\n      shad.spread\n    ].map(_ => _ + 'px').concat([\n      getCssColor(shad.color, shad.alpha),\n      shad.inset ? 'inset' : ''\n    ]).join(' ')).join(', ')\n}\n\nconst getCssShadowFilter = (input) => {\n  if (input.length === 0) {\n    return 'none'\n  }\n\n  return input\n  // drop-shadow doesn't support inset or spread\n    .filter((shad) => !shad.inset && Number(shad.spread) === 0)\n    .map((shad) => [\n      shad.x,\n      shad.y,\n      // drop-shadow's blur is twice as strong compared to box-shadow\n      shad.blur / 2\n    ].map(_ => _ + 'px').concat([\n      getCssColor(shad.color, shad.alpha)\n    ]).join(' '))\n    .map(_ => `drop-shadow(${_})`)\n    .join(' ')\n}\n\nexport const generateColors = (themeData) => {\n  const sourceColors = !themeData.themeEngineVersion\n    ? colors2to3(themeData.colors || themeData)\n    : themeData.colors || themeData\n\n  const { colors, opacity } = getColors(sourceColors, themeData.opacity || {})\n\n  const htmlColors = Object.entries(colors)\n    .reduce((acc, [k, v]) => {\n      if (!v) return acc\n      acc.solid[k] = rgb2hex(v)\n      acc.complete[k] = typeof v.a === 'undefined' ? rgb2hex(v) : rgba2css(v)\n      return acc\n    }, { complete: {}, solid: {} })\n  return {\n    rules: {\n      colors: Object.entries(htmlColors.complete)\n        .filter(([k, v]) => v)\n        .map(([k, v]) => `--${k}: ${v}`)\n        .join(';')\n    },\n    theme: {\n      colors: htmlColors.solid,\n      opacity\n    }\n  }\n}\n\nexport const generateRadii = (input) => {\n  let inputRadii = input.radii || {}\n  // v1 -> v2\n  if (typeof input.btnRadius !== 'undefined') {\n    inputRadii = Object\n      .entries(input)\n      .filter(([k, v]) => k.endsWith('Radius'))\n      .reduce((acc, e) => { acc[e[0].split('Radius')[0]] = e[1]; return acc }, {})\n  }\n  const radii = Object.entries(inputRadii).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n    acc[k] = v\n    return acc\n  }, {\n    btn: 4,\n    input: 4,\n    checkbox: 2,\n    panel: 10,\n    avatar: 5,\n    avatarAlt: 50,\n    tooltip: 2,\n    attachment: 5,\n    chatMessage: inputRadii.panel\n  })\n\n  return {\n    rules: {\n      radii: Object.entries(radii).filter(([k, v]) => v).map(([k, v]) => `--${k}Radius: ${v}px`).join(';')\n    },\n    theme: {\n      radii\n    }\n  }\n}\n\nexport const generateFonts = (input) => {\n  const fonts = Object.entries(input.fonts || {}).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n    acc[k] = Object.entries(v).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n      acc[k] = v\n      return acc\n    }, acc[k])\n    return acc\n  }, {\n    interface: {\n      family: 'sans-serif'\n    },\n    input: {\n      family: 'inherit'\n    },\n    post: {\n      family: 'inherit'\n    },\n    postCode: {\n      family: 'monospace'\n    }\n  })\n\n  return {\n    rules: {\n      fonts: Object\n        .entries(fonts)\n        .filter(([k, v]) => v)\n        .map(([k, v]) => `--${k}Font: ${v.family}`).join(';')\n    },\n    theme: {\n      fonts\n    }\n  }\n}\n\nconst border = (top, shadow) => ({\n  x: 0,\n  y: top ? 1 : -1,\n  blur: 0,\n  spread: 0,\n  color: shadow ? '#000000' : '#FFFFFF',\n  alpha: 0.2,\n  inset: true\n})\nconst buttonInsetFakeBorders = [border(true, false), border(false, true)]\nconst inputInsetFakeBorders = [border(true, true), border(false, false)]\nconst hoverGlow = {\n  x: 0,\n  y: 0,\n  blur: 4,\n  spread: 0,\n  color: '--faint',\n  alpha: 1\n}\n\nexport const DEFAULT_SHADOWS = {\n  panel: [{\n    x: 1,\n    y: 1,\n    blur: 4,\n    spread: 0,\n    color: '#000000',\n    alpha: 0.6\n  }],\n  topBar: [{\n    x: 0,\n    y: 0,\n    blur: 4,\n    spread: 0,\n    color: '#000000',\n    alpha: 0.6\n  }],\n  popup: [{\n    x: 2,\n    y: 2,\n    blur: 3,\n    spread: 0,\n    color: '#000000',\n    alpha: 0.5\n  }],\n  avatar: [{\n    x: 0,\n    y: 1,\n    blur: 8,\n    spread: 0,\n    color: '#000000',\n    alpha: 0.7\n  }],\n  avatarStatus: [],\n  panelHeader: [],\n  button: [{\n    x: 0,\n    y: 0,\n    blur: 2,\n    spread: 0,\n    color: '#000000',\n    alpha: 1\n  }, ...buttonInsetFakeBorders],\n  buttonHover: [hoverGlow, ...buttonInsetFakeBorders],\n  buttonPressed: [hoverGlow, ...inputInsetFakeBorders],\n  input: [...inputInsetFakeBorders, {\n    x: 0,\n    y: 0,\n    blur: 2,\n    inset: true,\n    spread: 0,\n    color: '#000000',\n    alpha: 1\n  }]\n}\nexport const generateShadows = (input, colors) => {\n  // TODO this is a small hack for `mod` to work with shadows\n  // this is used to get the \"context\" of shadow, i.e. for `mod` properly depend on background color of element\n  const hackContextDict = {\n    button: 'btn',\n    panel: 'bg',\n    top: 'topBar',\n    popup: 'popover',\n    avatar: 'bg',\n    panelHeader: 'panel',\n    input: 'input'\n  }\n\n  const cleanInputShadows = Object.fromEntries(\n    Object.entries(input.shadows || {})\n      .map(([name, shadowSlot]) => [\n        name,\n        // defaulting color to black to avoid potential problems\n        shadowSlot.map(shadowDef => ({ color: '#000000', ...shadowDef }))\n      ])\n  )\n  const inputShadows = cleanInputShadows && !input.themeEngineVersion\n    ? shadows2to3(cleanInputShadows, input.opacity)\n    : cleanInputShadows || {}\n  const shadows = Object.entries({\n    ...DEFAULT_SHADOWS,\n    ...inputShadows\n  }).reduce((shadowsAcc, [slotName, shadowDefs]) => {\n    const slotFirstWord = slotName.replace(/[A-Z].*$/, '')\n    const colorSlotName = hackContextDict[slotFirstWord]\n    const isLightOnDark = relativeLuminance(convert(colors[colorSlotName]).rgb) < 0.5\n    const mod = isLightOnDark ? 1 : -1\n    const newShadow = shadowDefs.reduce((shadowAcc, def) => [\n      ...shadowAcc,\n      {\n        ...def,\n        color: rgb2hex(computeDynamicColor(\n          def.color,\n          (variableSlot) => convert(colors[variableSlot]).rgb,\n          mod\n        ))\n      }\n    ], [])\n    return { ...shadowsAcc, [slotName]: newShadow }\n  }, {})\n\n  return {\n    rules: {\n      shadows: Object\n        .entries(shadows)\n      // TODO for v2.2: if shadow doesn't have non-inset shadows with spread > 0 - optionally\n      // convert all non-inset shadows into filter: drop-shadow() to boost performance\n        .map(([k, v]) => [\n          `--${k}Shadow: ${getCssShadow(v)}`,\n          `--${k}ShadowFilter: ${getCssShadowFilter(v)}`,\n          `--${k}ShadowInset: ${getCssShadow(v, true)}`\n        ].join(';'))\n        .join(';')\n    },\n    theme: {\n      shadows\n    }\n  }\n}\n\nexport const composePreset = (colors, radii, shadows, fonts) => {\n  return {\n    rules: {\n      ...shadows.rules,\n      ...colors.rules,\n      ...radii.rules,\n      ...fonts.rules\n    },\n    theme: {\n      ...shadows.theme,\n      ...colors.theme,\n      ...radii.theme,\n      ...fonts.theme\n    }\n  }\n}\n\nexport const generatePreset = (input) => {\n  const colors = generateColors(input)\n  return composePreset(\n    colors,\n    generateRadii(input),\n    generateShadows(input, colors.theme.colors, colors.mod),\n    generateFonts(input)\n  )\n}\n\nexport const getThemes = () => {\n  const cache = 'no-store'\n\n  return window.fetch('/static/styles.json', { cache })\n    .then((data) => data.json())\n    .then((themes) => {\n      return Object.entries(themes).map(([k, v]) => {\n        let promise = null\n        if (typeof v === 'object') {\n          promise = Promise.resolve(v)\n        } else if (typeof v === 'string') {\n          promise = window.fetch(v, { cache })\n            .then((data) => data.json())\n            .catch((e) => {\n              console.error(e)\n              return null\n            })\n        }\n        return [k, promise]\n      })\n    })\n    .then((promises) => {\n      return promises\n        .reduce((acc, [k, v]) => {\n          acc[k] = v\n          return acc\n        }, {})\n    })\n}\nexport const colors2to3 = (colors) => {\n  return Object.entries(colors).reduce((acc, [slotName, color]) => {\n    const btnPositions = ['', 'Panel', 'TopBar']\n    switch (slotName) {\n      case 'lightBg':\n        return { ...acc, highlight: color }\n      case 'btnText':\n        return {\n          ...acc,\n          ...btnPositions\n            .reduce(\n              (statePositionAcc, position) =>\n                ({ ...statePositionAcc, ['btn' + position + 'Text']: color })\n              , {}\n            )\n        }\n      default:\n        return { ...acc, [slotName]: color }\n    }\n  }, {})\n}\n\n/**\n * This handles compatibility issues when importing v2 theme's shadows to current format\n *\n * Back in v2 shadows allowed you to use dynamic colors however those used pure CSS3 variables\n */\nexport const shadows2to3 = (shadows, opacity) => {\n  return Object.entries(shadows).reduce((shadowsAcc, [slotName, shadowDefs]) => {\n    const isDynamic = ({ color = '#000000' }) => color.startsWith('--')\n    const getOpacity = ({ color }) => opacity[getOpacitySlot(color.substring(2).split(',')[0])]\n    const newShadow = shadowDefs.reduce((shadowAcc, def) => [\n      ...shadowAcc,\n      {\n        ...def,\n        alpha: isDynamic(def) ? getOpacity(def) || 1 : def.alpha\n      }\n    ], [])\n    return { ...shadowsAcc, [slotName]: newShadow }\n  }, {})\n}\n\nexport const getPreset = (val) => {\n  return getThemes()\n    .then((themes) => themes[val] ? themes[val] : themes['pleroma-dark'])\n    .then((theme) => {\n      const isV1 = Array.isArray(theme)\n      const data = isV1 ? {} : theme.theme\n\n      if (isV1) {\n        const bg = hex2rgb(theme[1])\n        const fg = hex2rgb(theme[2])\n        const text = hex2rgb(theme[3])\n        const link = hex2rgb(theme[4])\n\n        const cRed = hex2rgb(theme[5] || '#FF0000')\n        const cGreen = hex2rgb(theme[6] || '#00FF00')\n        const cBlue = hex2rgb(theme[7] || '#0000FF')\n        const cOrange = hex2rgb(theme[8] || '#E3FF00')\n\n        data.colors = { bg, fg, text, link, cRed, cBlue, cGreen, cOrange }\n      }\n\n      return { theme: data, source: theme.source }\n    })\n}\n\nexport const setPreset = (val) => getPreset(val).then(data => applyTheme(data.theme))\n","\n// promiseInterval - replacement for setInterval for promises, starts counting\n// the interval only after a promise is done instead of immediately.\n// - promiseCall is a function that returns a promise, it's called the first\n// time after the first interval.\n// - interval is the interval delay in ms.\n\nexport const promiseInterval = (promiseCall, interval) => {\n  let stopped = false\n  let timeout = null\n\n  const func = () => {\n    const promise = promiseCall()\n    // something unexpected happened and promiseCall did not\n    // return a promise, abort the loop.\n    if (!(promise && promise.finally)) {\n      console.warn('promiseInterval: promise call did not return a promise, stopping interval.')\n      return\n    }\n    promise.finally(() => {\n      if (stopped) return\n      timeout = window.setTimeout(func, interval)\n    })\n  }\n\n  const stopFetcher = () => {\n    stopped = true\n    window.clearTimeout(timeout)\n  }\n\n  timeout = window.setTimeout(func, interval)\n\n  return { stop: stopFetcher }\n}\n","<template>\n  <div\n    class=\"StatusContent\"\n    :class=\"{ '-compact': compact }\"\n  >\n    <slot name=\"header\" />\n    <StatusBody\n      :status=\"status\"\n      :compact=\"compact\"\n      :single-line=\"singleLine\"\n      :showing-tall=\"showingTall\"\n      :expanding-subject=\"expandingSubject\"\n      :showing-long-subject=\"showingLongSubject\"\n      :toggle-showing-tall=\"toggleShowingTall\"\n      :toggle-expanding-subject=\"toggleExpandingSubject\"\n      :toggle-showing-long-subject=\"toggleShowingLongSubject\"\n      @parseReady=\"$emit('parseReady', $event)\"\n    >\n      <div v-if=\"status.poll && status.poll.options && !compact\">\n        <Poll\n          :base-poll=\"status.poll\"\n          :emoji=\"status.emojis\"\n        />\n      </div>\n\n      <div v-else-if=\"status.poll && status.poll.options && compact\">\n        <FAIcon\n          icon=\"poll-h\"\n          size=\"2x\"\n        />\n      </div>\n\n      <gallery\n        v-if=\"status.attachments.length !== 0\"\n        class=\"attachments media-body\"\n        :nsfw=\"nsfwClickthrough\"\n        :attachments=\"status.attachments\"\n        :limit=\"compact ? 1 : 0\"\n        :size=\"attachmentSize\"\n        @play=\"$emit('mediaplay', attachment.id)\"\n        @pause=\"$emit('mediapause', attachment.id)\"\n      />\n\n      <div\n        v-if=\"status.card && !noHeading && !compact\"\n        class=\"link-preview media-body\"\n      >\n        <link-preview\n          :card=\"status.card\"\n          :size=\"attachmentSize\"\n          :nsfw=\"nsfwClickthrough\"\n        />\n      </div>\n    </StatusBody>\n    <slot name=\"footer\" />\n  </div>\n</template>\n\n<script src=\"./status_content.js\" ></script>\n<style lang=\"scss\">\n.StatusContent {\n  flex: 1;\n  min-width: 0;\n\n  img, video {\n    &.emoji {\n      width: 50px;\n      height: 50px;\n    }\n  }\n}\n</style>\n","<template>\n  <div\n    class=\"poll\"\n    :class=\"containerClass\"\n  >\n    <div\n      v-for=\"(option, index) in options\"\n      :key=\"index\"\n      class=\"poll-option\"\n    >\n      <div\n        v-if=\"showResults\"\n        :title=\"resultTitle(option)\"\n        class=\"option-result\"\n      >\n        <div class=\"option-result-label\">\n          <span class=\"result-percentage\">\n            {{ percentageForOption(option.votes_count) }}%\n          </span>\n          <RichContent\n            :html=\"option.title_html\"\n            :handle-links=\"false\"\n            :emoji=\"emoji\"\n          />\n        </div>\n        <div\n          class=\"result-fill\"\n          :style=\"{ 'width': `${percentageForOption(option.votes_count)}%` }\"\n        />\n      </div>\n      <div\n        v-else\n        @click=\"activateOption(index)\"\n      >\n        <input\n          v-if=\"poll.multiple\"\n          type=\"checkbox\"\n          :disabled=\"loading\"\n          :value=\"index\"\n        >\n        <input\n          v-else\n          type=\"radio\"\n          :disabled=\"loading\"\n          :value=\"index\"\n        >\n        <label class=\"option-vote\">\n          <RichContent\n            :html=\"option.title_html\"\n            :handle-links=\"false\"\n            :emoji=\"emoji\"\n          />\n        </label>\n      </div>\n    </div>\n    <div class=\"footer faint\">\n      <button\n        v-if=\"!showResults\"\n        class=\"btn button-default poll-vote-button\"\n        type=\"button\"\n        :disabled=\"isDisabled\"\n        @click=\"vote\"\n      >\n        {{ $t('polls.vote') }}\n      </button>\n      <div class=\"total\">\n        <template v-if=\"typeof poll.voters_count === 'number'\">\n          {{ $tc(\"polls.people_voted_count\", poll.voters_count, { count: poll.voters_count }) }}&nbsp;·&nbsp;\n        </template>\n        <template v-else>\n          {{ $tc(\"polls.votes_count\", poll.votes_count, { count: poll.votes_count }) }}&nbsp;·&nbsp;\n        </template>\n      </div>\n      <span>\n        <i18n-t\n          scope=\"global\"\n          :keypath=\"expired ? 'polls.expired' : 'polls.expires_in'\"\n        >\n          <Timeago\n            :time=\"expiresAt\"\n            :auto-update=\"60\"\n            :now-threshold=\"0\"\n          />\n        </i18n-t>\n      </span>\n    </div>\n  </div>\n</template>\n\n<script src=\"./poll.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.poll {\n  .votes {\n    display: flex;\n    flex-direction: column;\n    margin: 0 0 0.5em;\n  }\n  .poll-option {\n    margin: 0.75em 0.5em;\n  }\n  .option-result {\n    height: 100%;\n    display: flex;\n    flex-direction: row;\n    position: relative;\n    color: $fallback--lightText;\n    color: var(--lightText, $fallback--lightText);\n  }\n  .option-result-label {\n    display: flex;\n    align-items: center;\n    padding: 0.1em 0.25em;\n    z-index: 1;\n    word-break: break-word;\n  }\n  .result-percentage {\n    width: 3.5em;\n    flex-shrink: 0;\n  }\n  .result-fill {\n    height: 100%;\n    position: absolute;\n    color: $fallback--text;\n    color: var(--pollText, $fallback--text);\n    background-color: $fallback--lightBg;\n    background-color: var(--poll, $fallback--lightBg);\n    border-radius: $fallback--panelRadius;\n    border-radius: var(--panelRadius, $fallback--panelRadius);\n    top: 0;\n    left: 0;\n    transition: width 0.5s;\n  }\n  .option-vote {\n    display: flex;\n    align-items: center;\n  }\n  input {\n    width: 3.5em;\n  }\n  .footer {\n    display: flex;\n    align-items: center;\n  }\n  &.loading * {\n    cursor: progress;\n  }\n  .poll-vote-button {\n    padding: 0 0.5em;\n    margin-right: 0.5em;\n  }\n}\n</style>\n","import Timeago from 'components/timeago/timeago.vue'\nimport RichContent from 'components/rich_content/rich_content.jsx'\nimport { forEach, map } from 'lodash'\n\nexport default {\n  name: 'Poll',\n  props: ['basePoll', 'emoji'],\n  components: {\n    Timeago,\n    RichContent\n  },\n  data () {\n    return {\n      loading: false,\n      choices: []\n    }\n  },\n  created () {\n    if (!this.$store.state.polls.pollsObject[this.pollId]) {\n      this.$store.dispatch('mergeOrAddPoll', this.basePoll)\n    }\n    this.$store.dispatch('trackPoll', this.pollId)\n  },\n  unmounted () {\n    this.$store.dispatch('untrackPoll', this.pollId)\n  },\n  computed: {\n    pollId () {\n      return this.basePoll.id\n    },\n    poll () {\n      const storePoll = this.$store.state.polls.pollsObject[this.pollId]\n      return storePoll || {}\n    },\n    options () {\n      return (this.poll && this.poll.options) || []\n    },\n    expiresAt () {\n      return (this.poll && this.poll.expires_at) || 0\n    },\n    expired () {\n      return (this.poll && this.poll.expired) || false\n    },\n    loggedIn () {\n      return this.$store.state.users.currentUser\n    },\n    showResults () {\n      return this.poll.voted || this.expired || !this.loggedIn\n    },\n    totalVotesCount () {\n      return this.poll.votes_count\n    },\n    containerClass () {\n      return {\n        loading: this.loading\n      }\n    },\n    choiceIndices () {\n      // Convert array of booleans into an array of indices of the\n      // items that were 'true', so [true, false, false, true] becomes\n      // [0, 3].\n      return this.choices\n        .map((entry, index) => entry && index)\n        .filter(value => typeof value === 'number')\n    },\n    isDisabled () {\n      const noChoice = this.choiceIndices.length === 0\n      return this.loading || noChoice\n    }\n  },\n  methods: {\n    percentageForOption (count) {\n      return this.totalVotesCount === 0 ? 0 : Math.round(count / this.totalVotesCount * 100)\n    },\n    resultTitle (option) {\n      return `${option.votes_count}/${this.totalVotesCount} ${this.$t('polls.votes')}`\n    },\n    fetchPoll () {\n      this.$store.dispatch('refreshPoll', { id: this.statusId, pollId: this.poll.id })\n    },\n    activateOption (index) {\n      // forgive me father: doing checking the radio/checkboxes\n      // in code because of customized input elements need either\n      // a) an extra element for the actual graphic, or b) use a\n      // pseudo element for the label. We use b) which mandates\n      // using \"for\" and \"id\" matching which isn't nice when the\n      // same poll appears multiple times on the site (notifs and\n      // timeline for example). With code we can make sure it just\n      // works without altering the pseudo element implementation.\n      const allElements = this.$el.querySelectorAll('input')\n      const clickedElement = this.$el.querySelector(`input[value=\"${index}\"]`)\n      if (this.poll.multiple) {\n        // Checkboxes, toggle only the clicked one\n        clickedElement.checked = !clickedElement.checked\n      } else {\n        // Radio button, uncheck everything and check the clicked one\n        forEach(allElements, element => { element.checked = false })\n        clickedElement.checked = true\n      }\n      this.choices = map(allElements, e => e.checked)\n    },\n    optionId (index) {\n      return `poll${this.poll.id}-${index}`\n    },\n    vote () {\n      if (this.choiceIndices.length === 0) return\n      this.loading = true\n      this.$store.dispatch(\n        'votePoll',\n        { id: this.statusId, pollId: this.poll.id, choices: this.choiceIndices }\n      ).then(poll => {\n        this.loading = false\n      })\n    }\n  }\n}\n","import { render } from \"./poll.vue?vue&type=template&id=5e9dea28\"\nimport script from \"./poll.js?vue&type=script&lang=js\"\nexport * from \"./poll.js?vue&type=script&lang=js\"\n\nimport \"./poll.vue?vue&type=style&index=0&id=5e9dea28&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    class=\"StatusBody\"\n    :class=\"{ '-compact': compact }\"\n  >\n    <div class=\"body\">\n      <div\n        v-if=\"status.summary_raw_html\"\n        class=\"summary-wrapper\"\n        :class=\"{ '-tall': (longSubject && !showingLongSubject) }\"\n      >\n        <RichContent\n          class=\"media-body summary\"\n          :html=\"status.summary_raw_html\"\n          :emoji=\"status.emojis\"\n        />\n        <button\n          v-show=\"longSubject && showingLongSubject\"\n          class=\"button-unstyled -link tall-subject-hider\"\n          @click.prevent=\"toggleShowingLongSubject\"\n        >\n          {{ $t(\"status.hide_full_subject\") }}\n        </button>\n        <button\n          v-show=\"longSubject && !showingLongSubject\"\n          class=\"button-unstyled -link tall-subject-hider\"\n          @click.prevent=\"toggleShowingLongSubject\"\n        >\n          {{ $t(\"status.show_full_subject\") }}\n        </button>\n      </div>\n      <div\n        :class=\"{'-tall-status': hideTallStatus}\"\n        class=\"text-wrapper\"\n      >\n        <button\n          v-show=\"hideTallStatus\"\n          class=\"button-unstyled -link tall-status-hider\"\n          :class=\"{ '-focused': focused }\"\n          @click.prevent=\"toggleShowMore\"\n        >\n          {{ $t(\"general.show_more\") }}\n        </button>\n        <div\n          v-if=\"!hideSubjectStatus && !(singleLine && status.summary_raw_html)\"\n        >\n          <MFMContent\n            v-if=\"renderMisskeyMarkdown && status.mfm_content\"\n            class=\"RichContent text media-body mfm-post-content\"\n            :status=\"status\"\n          />\n          <RichContent\n            v-else\n            :class=\"{ '-single-line': singleLine }\"\n            class=\"text media-body\"\n            :html=\"status.raw_html\"\n            :emoji=\"status.emojis\"\n            :handle-links=\"true\"\n            :greentext=\"mergedConfig.greentext\"\n            :attentions=\"status.attentions\"\n            @parseReady=\"onParseReady\"\n          />\n        </div>\n        <button\n          v-show=\"hideSubjectStatus\"\n          class=\"button-unstyled -link cw-status-hider\"\n          @click.prevent=\"toggleShowMore\"\n        >\n          {{ $t(\"status.show_content\") }}\n          <FAIcon\n            v-if=\"attachmentTypes.includes('image')\"\n            icon=\"image\"\n          />\n          <FAIcon\n            v-if=\"attachmentTypes.includes('video')\"\n            icon=\"video\"\n          />\n          <FAIcon\n            v-if=\"attachmentTypes.includes('audio')\"\n            icon=\"music\"\n          />\n          <FAIcon\n            v-if=\"attachmentTypes.includes('unknown')\"\n            icon=\"file\"\n          />\n          <FAIcon\n            v-if=\"status.poll && status.poll.options\"\n            icon=\"poll-h\"\n          />\n          <FAIcon\n            v-if=\"status.card\"\n            icon=\"link\"\n          />\n        </button>\n        <button\n          v-show=\"showingMore && !fullContent\"\n          class=\"button-unstyled -link status-unhider\"\n          @click.prevent=\"toggleShowMore\"\n        >\n          {{ tallStatus ? $t(\"general.show_less\") : $t(\"status.hide_content\") }}\n        </button>\n      </div>\n    </div>\n    <slot v-if=\"!hideSubjectStatus\" />\n  </div>\n</template>\n<script src=\"./status_body.js\" ></script>\n<style lang=\"scss\" src=\"./status_body.scss\" />\n","import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { mapGetters, mapState } from 'vuex'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faAt\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faAt\n)\n\nconst MentionLink = {\n  name: 'MentionLink',\n  components: {\n    UserAvatar\n  },\n  props: {\n    url: {\n      required: true,\n      type: String\n    },\n    content: {\n      required: true,\n      type: String\n    },\n    userId: {\n      required: false,\n      type: String\n    },\n    userScreenName: {\n      required: false,\n      type: String\n    }\n  },\n  methods: {\n    onClick () {\n      const link = generateProfileLink(\n        this.userId || this.user.id,\n        this.userScreenName || this.user.screen_name\n      )\n      this.$router.push(link)\n    }\n  },\n  computed: {\n    user () {\n      return this.url && this.$store && this.$store.getters.findUserByUrl(this.url)\n    },\n    isYou () {\n      // FIXME why user !== currentUser???\n      return this.user && this.user.id === this.currentUser.id\n    },\n    userName () {\n      return this.user && this.userNameFullUi.split('@')[0]\n    },\n    serverName () {\n      // XXX assumed that domain does not contain @\n      return this.user && (this.userNameFullUi.split('@')[1] || this.$store.getters.instanceDomain)\n    },\n    userNameFull () {\n      return this.user && this.user.screen_name\n    },\n    userNameFullUi () {\n      return this.user && this.user.screen_name_ui\n    },\n    highlight () {\n      return this.user && this.mergedConfig.highlight[this.user.screen_name]\n    },\n    highlightType () {\n      return this.highlight && ('-' + this.highlight.type)\n    },\n    highlightClass () {\n      if (this.highlight) return highlightClass(this.user)\n    },\n    style () {\n      if (this.highlight) {\n        const {\n          backgroundColor,\n          backgroundPosition,\n          backgroundImage,\n          ...rest\n        } = highlightStyle(this.highlight)\n        return rest\n      }\n    },\n    classnames () {\n      return [\n        {\n          '-you': this.isYou && this.shouldBoldenYou,\n          '-highlighted': this.highlight\n        },\n        this.highlightType\n      ]\n    },\n    useAtIcon () {\n      return this.mergedConfig.useAtIcon\n    },\n    isRemote () {\n      return this.userName !== this.userNameFull\n    },\n    shouldShowFullUserName () {\n      const conf = this.mergedConfig.mentionLinkDisplay\n      if (conf === 'short') {\n        return false\n      } else if (conf === 'full') {\n        return true\n      } else { // full_for_remote\n        return this.isRemote\n      }\n    },\n    shouldShowTooltip () {\n      return this.mergedConfig.mentionLinkShowTooltip && this.mergedConfig.mentionLinkDisplay === 'short' && this.isRemote\n    },\n    shouldShowAvatar () {\n      return this.mergedConfig.mentionLinkShowAvatar\n    },\n    shouldShowYous () {\n      return this.mergedConfig.mentionLinkShowYous\n    },\n    shouldBoldenYou () {\n      return this.mergedConfig.mentionLinkBoldenYou\n    },\n    shouldFadeDomain () {\n      return this.mergedConfig.mentionLinkFadeDomain\n    },\n    ...mapGetters(['mergedConfig']),\n    ...mapState({\n      currentUser: state => state.users.currentUser\n    })\n  }\n}\n\nexport default MentionLink\n","import { defineComponent, h } from 'vue'\nimport * as mfm from 'mfm-js'\nimport MentionLink from '../mention_link/mention_link.vue'\nimport mention_link from '../mention_link/mention_link'\n\nfunction concat (xss) {\n  return ([]).concat(...xss)\n}\n\nexport const MFM_TAGS = ['tada', 'jelly', 'twitch', 'shake', 'spin', 'jump', 'bounce', 'flip', 'x2', 'x3', 'x4', 'font', 'blur', 'rainbow', 'sparkle', 'rotate'];\n\n\nexport default defineComponent({\n  props: {\n    status: {\n      type: Object,\n      required: true\n    }\n  },\n\n  render () {\n    if (!this.status) return null\n    const ast = mfm.parse(this.status.mfm_content, { fnNameList: MFM_TAGS })\n    const validTime = (t) => {\n      if (t == null) return null\n      return t.match(/^[0-9.]+s$/) ? t : null\n    }\n\n    const genEl = (ast) => concat(ast.map((token) => {\n      switch (token.type) {\n        case 'text': {\n          const text = token.props.text.replace(/(\\r\\n|\\n|\\r)/g, '\\n')\n\n          const res = []\n          for (const t of text.split('\\n')) {\n            res.push(h('br'))\n            res.push(t)\n          }\n          res.shift()\n          return res\n        }\n\n        case 'bold': {\n          return [h('b', genEl(token.children))]\n        }\n\n        case 'strike': {\n          return [h('del', genEl(token.children))]\n        }\n\n        case 'italic': {\n          return h('i', {\n            style: 'font-style: oblique;'\n          }, genEl(token.children))\n        }\n\n        case 'fn': {\n          // TODO: CSSを文字列で組み立てていくと token.props.args.~~~ 経由でCSSインジェクションできるのでよしなにやる\n          let style\n          switch (token.props.name) {\n            case 'tada': {\n              style = `font-size: 150%;` + 'animation: tada 1s linear infinite both;'\n              break\n            }\n            case 'jelly': {\n              const speed = validTime(token.props.args.speed) || '1s'\n              style = `animation: mfm-rubberBand ${speed} linear infinite both;`\n              break\n            }\n            case 'twitch': {\n              const speed = validTime(token.props.args.speed) || '0.5s'\n              style = `animation: mfm-twitch ${speed} ease infinite;`\n              break\n            }\n            case 'shake': {\n              const speed = validTime(token.props.args.speed) || '0.5s'\n              style = `animation: mfm-shake ${speed} ease infinite;`\n              break\n            }\n            case 'spin': {\n              const direction =\n\t\t\t\t\t\t\t\ttoken.props.args.left ? 'reverse'\n\t\t\t\t\t\t\t\t  : token.props.args.alternate ? 'alternate'\n\t\t\t\t\t\t\t\t    : 'normal'\n              const anime =\n\t\t\t\t\t\t\t\ttoken.props.args.x ? 'mfm-spinX'\n\t\t\t\t\t\t\t\t  : token.props.args.y ? 'mfm-spinY'\n\t\t\t\t\t\t\t\t    : 'mfm-spin'\n              const speed = validTime(token.props.args.speed) || '1.5s'\n              style = `animation: ${anime} ${speed} linear infinite; animation-direction: ${direction};`\n              break\n            }\n            case 'jump': {\n              style = 'animation: mfm-jump 0.75s linear infinite;'\n              break\n            }\n            case 'bounce': {\n              style = 'animation: mfm-bounce 0.75s linear infinite; transform-origin: center bottom;'\n              break\n            }\n            case 'flip': {\n              const transform =\n\t\t\t\t\t\t\t\t(token.props.args.h && token.props.args.v) ? 'scale(-1, -1)'\n\t\t\t\t\t\t\t\t  : token.props.args.v ? 'scaleY(-1)'\n\t\t\t\t\t\t\t\t    : 'scaleX(-1)'\n              style = `transform: ${transform};`\n              break\n            }\n            case 'x2': {\n              style = `font-size: 200%;`\n              break\n            }\n            case 'x3': {\n              style = `font-size: 400%;`\n              break\n            }\n            case 'x4': {\n              style = `font-size: 600%;`\n              break\n            }\n            case 'font': {\n              const family =\n\t\t\t\t\t\t\t\ttoken.props.args.serif ? 'serif'\n\t\t\t\t\t\t\t\t  : token.props.args.monospace ? 'monospace'\n\t\t\t\t\t\t\t\t    : token.props.args.cursive ? 'cursive'\n\t\t\t\t\t\t\t\t      : token.props.args.fantasy ? 'fantasy'\n\t\t\t\t\t\t\t\t        : token.props.args.emoji ? 'emoji'\n\t\t\t\t\t\t\t\t          : token.props.args.math ? 'math'\n\t\t\t\t\t\t\t\t            : null\n              if (family) style = `font-family: ${family};`\n              break\n            }\n            case 'blur': {\n              return h('span', {\n                class: '_mfm_blur_'\n              }, genEl(token.children))\n            }\n            case 'rainbow': {\n              style = 'animation: mfm-rainbow 1s linear infinite;'\n              break\n            }\n            case 'sparkle': {\n              return h(MkSparkle, {}, genEl(token.children))\n            }\n            case 'rotate': {\n              const degrees = parseInt(token.props.args.deg) || '90'\n              style = `transform: rotate(${degrees}deg); transform-origin: center center;`\n              break\n            }\n          }\n          if (style == null) {\n            return h('span', {}, ['$[', token.props.name, ' ', ...genEl(token.children), ']'])\n          } else {\n            return h('span', {\n              style: 'display: inline-block;' + style\n            }, genEl(token.children))\n          }\n        }\n\n        case 'small': {\n          return [h('small', {\n            style: 'opacity: 0.7;'\n          }, genEl(token.children))]\n        }\n\n        case 'center': {\n          return [h('div', {\n            style: 'text-align:center;'\n          }, genEl(token.children))]\n        }\n\n        case 'url': {\n          return [h('a', {\n            key: Math.random(),\n            href: token.props.url,\n            rel: 'nofollow noopener'\n          })]\n        }\n\n        case 'link': {\n          return [h('a', {\n            key: Math.random(),\n            href: token.props.url,\n            rel: 'nofollow noopener'\n          }, genEl(token.children))]\n        }\n\n        case 'mention': {\n          const user = this.status.attentions.find((mention) => `@${mention.screen_name}` === token.props.acct || mention.screen_name === token.props.username)\n          if (user) {\n            return [h(MentionLink, {\n              url: user.statusnet_profile_url,\n              content: token.props.acct,\n              userScreenName: token.props.acct\n            })]\n          }\n          return null\n        }\n\n        case 'hashtag': {\n          return [h('a', {\n            rel: 'noopener noreferrer',\n            target: '_blank',\n            key: token.props.hashtag,\n            href: this.status.tags.find((hash) => hash.name === token.props.hashtag).url\n          }, `#${token.props.hashtag}`)]\n        }\n\n        case 'blockCode': {\n          return [h('pre', {\n            key: Math.random(),\n            lang: token.props.lang\n          }, token.props.code)]\n        }\n\n        case 'inlineCode': {\n          return [h('pre', {\n            key: Math.random(),\n            code: token.props.code,\n            inline: true\n          })]\n        }\n\n        case 'quote': {\n          if (!this.nowrap) {\n            return [h('div', {\n              class: 'quote'\n            }, genEl(token.children))]\n          } else {\n            return [h('span', {\n              class: 'quote'\n            }, genEl(token.children))]\n          }\n        }\n\n        case 'emojiCode': {\n          return [h('div', {\n            class: 'still-image emoji img'\n          },\n          [h('img', {\n            key: Math.random(),\n            title: token.props.name,\n            alt: token.props.name,\n            src: this.status.emojis.find((emoji) => emoji.shortcode === token.props.name).static_url\n          })]\n          )]\n        }\n\n        case 'unicodeEmoji': {\n          return token.props.emoji\n        }\n\n        default: {\n          console.error('unrecognized ast type:', token.type)\n\n          return []\n        }\n      }\n    }))\n\n    // Parse ast to DOM\n    return h('span', genEl(ast))\n  }\n})\n","import fileType from 'src/services/file_type/file_type.service'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport MFMContent from 'src/components/mfm_content/mfm_content.jsx'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faFile,\n  faMusic,\n  faImage,\n  faLink,\n  faPollH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faFile,\n  faMusic,\n  faImage,\n  faLink,\n  faPollH\n)\n\nconst StatusContent = {\n  name: 'StatusContent',\n  props: [\n    'compact',\n    'status',\n    'focused',\n    'noHeading',\n    'fullContent',\n    'singleLine',\n    'showingTall',\n    'expandingSubject',\n    'showingLongSubject',\n    'toggleShowingTall',\n    'toggleExpandingSubject',\n    'toggleShowingLongSubject'\n  ],\n  data () {\n    const { renderMisskeyMarkdown } = this.$store.getters.mergedConfig\n    return {\n      postLength: this.status.text.length,\n      parseReadyDone: false,\n      renderMisskeyMarkdown\n    }\n  },\n  computed: {\n    localCollapseSubjectDefault () {\n      return this.mergedConfig.collapseMessageWithSubject\n    },\n    // This is a bit hacky, but we want to approximate post height before rendering\n    // so we count newlines (masto uses <p> for paragraphs, GS uses <br> between them)\n    // as well as approximate line count by counting characters and approximating ~80\n    // per line.\n    //\n    // Using max-height + overflow: auto for status components resulted in false positives\n    // very often with japanese characters, and it was very annoying.\n    tallStatus () {\n      if (this.singleLine || this.compact) return false\n      const lengthScore = this.status.raw_html.split(/<p|<br/).length + this.postLength / 80\n      return lengthScore > 20\n    },\n    longSubject () {\n      return this.status.summary.length > 240\n    },\n    // When a status has a subject and is also tall, we should only have one show more/less button. If the default is to collapse statuses with subjects, we just treat it like a status with a subject; otherwise, we just treat it like a tall status.\n    mightHideBecauseSubject () {\n      return !!this.status.summary && this.localCollapseSubjectDefault\n    },\n    mightHideBecauseTall () {\n      return this.tallStatus && !(this.status.summary && this.localCollapseSubjectDefault)\n    },\n    hideSubjectStatus () {\n      return this.mightHideBecauseSubject && !this.expandingSubject\n    },\n    hideTallStatus () {\n      return this.mightHideBecauseTall && !this.showingTall\n    },\n    showingMore () {\n      return (this.mightHideBecauseTall && this.showingTall) || (this.mightHideBecauseSubject && this.expandingSubject)\n    },\n    attachmentTypes () {\n      return this.status.attachments.map(file => fileType.fileType(file.mimetype))\n    },\n    ...mapGetters(['mergedConfig'])\n  },\n  components: {\n    RichContent,\n    MFMContent\n  },\n  mounted () {\n    this.status.attentions && this.status.attentions.forEach(attn => {\n      const { id } = attn\n      this.$store.dispatch('fetchUserIfMissing', id)\n    })\n  },\n  methods: {\n    onParseReady (event) {\n      if (this.parseReadyDone) return\n      this.parseReadyDone = true\n      this.$emit('parseReady', event)\n      const { writtenMentions, invisibleMentions } = event\n      writtenMentions\n        .filter(mention => !mention.notifying)\n        .forEach(mention => {\n          const { content, url } = mention\n          const cleanedString = content.replace(/<[^>]+?>/gi, '') // remove all tags\n          if (!cleanedString.startsWith('@')) return\n          const handle = cleanedString.slice(1)\n          const host = url.replace(/^https?:\\/\\//, '').replace(/\\/.+?$/, '')\n          this.$store.dispatch('fetchUserIfMissing', `${handle}@${host}`)\n        })\n      /* This is a bit of a hack to make current tall status detector work\n       * with rich mentions. Invisible mentions are detected at RichContent level\n       * and also we generate plaintext version of mentions by stripping tags\n       * so here we subtract from post length by each mention that became invisible\n       * via MentionsLine\n       */\n      this.postLength = invisibleMentions.reduce((acc, mention) => {\n        return acc - mention.textContent.length - 1\n      }, this.postLength)\n    },\n    toggleShowMore () {\n      if (this.mightHideBecauseTall) {\n        this.toggleShowingTall()\n      } else if (this.mightHideBecauseSubject) {\n        this.toggleExpandingSubject()\n      }\n    },\n    generateTagLink (tag) {\n      return `/tag/${tag}`\n    }\n  }\n}\n\nexport default StatusContent\n","import { render } from \"./status_body.vue?vue&type=template&id=591ec5b8\"\nimport script from \"./status_body.js?vue&type=script&lang=js\"\nexport * from \"./status_body.js?vue&type=script&lang=js\"\n\nimport \"./status_body.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Attachment from '../attachment/attachment.vue'\nimport Poll from '../poll/poll.vue'\nimport Gallery from '../gallery/gallery.vue'\nimport StatusBody from 'src/components/status_body/status_body.vue'\nimport LinkPreview from '../link-preview/link-preview.vue'\nimport { mapGetters, mapState } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faCircleNotch,\n  faFile,\n  faMusic,\n  faImage,\n  faLink,\n  faPollH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch,\n  faFile,\n  faMusic,\n  faImage,\n  faLink,\n  faPollH\n)\n\nconst camelCase = name => name.charAt(0).toUpperCase() + name.slice(1)\n\nconst controlledOrUncontrolledGetters = list => list.reduce((res, name) => {\n  const camelized = camelCase(name)\n  const toggle = `controlledToggle${camelized}`\n  const controlledName = `controlled${camelized}`\n  const uncontrolledName = `uncontrolled${camelized}`\n  res[name] = function () {\n    return ((this.$data[toggle] !== undefined || this.$props[toggle] !== undefined) && this[toggle]) ? this[controlledName] : this[uncontrolledName]\n  }\n  return res\n}, {})\n\nconst controlledOrUncontrolledToggle = (obj, name) => {\n  const camelized = camelCase(name)\n  const toggle = `controlledToggle${camelized}`\n  const uncontrolledName = `uncontrolled${camelized}`\n  if (obj[toggle]) {\n    obj[toggle]()\n  } else {\n    obj[uncontrolledName] = !obj[uncontrolledName]\n  }\n}\n\nconst StatusContent = {\n  name: 'StatusContent',\n  props: [\n    'status',\n    'compact',\n    'focused',\n    'noHeading',\n    'fullContent',\n    'singleLine',\n    'controlledShowingTall',\n    'controlledExpandingSubject',\n    'controlledToggleShowingTall',\n    'controlledToggleExpandingSubject',\n    'controlledShowingLongSubject',\n    'controlledToggleShowingLongSubject'\n  ],\n  data () {\n    return {\n      uncontrolledShowingTall: this.fullContent || (this.inConversation && this.focused),\n      uncontrolledShowingLongSubject: false,\n      // not as computed because it sets the initial state which will be changed later\n      uncontrolledExpandingSubject: !this.$store.getters.mergedConfig.collapseMessageWithSubject\n    }\n  },\n  computed: {\n    ...controlledOrUncontrolledGetters(['showingTall', 'expandingSubject', 'showingLongSubject']),\n    hideAttachments () {\n      return (this.mergedConfig.hideAttachments && !this.inConversation) ||\n        (this.mergedConfig.hideAttachmentsInConv && this.inConversation)\n    },\n    nsfwClickthrough () {\n      if (!this.status.nsfw) {\n        return false\n      }\n      if (this.status.summary && this.localCollapseSubjectDefault) {\n        return false\n      }\n      return true\n    },\n    attachmentSize () {\n      if (this.compact) {\n        return 'small'\n      } else if ((this.mergedConfig.hideAttachments && !this.inConversation) ||\n        (this.mergedConfig.hideAttachmentsInConv && this.inConversation) ||\n        (this.status.attachments.length > this.maxThumbnails)) {\n        return 'hide'\n      }\n      return 'normal'\n    },\n    maxThumbnails () {\n      return this.mergedConfig.maxThumbnails\n    },\n    ...mapGetters(['mergedConfig']),\n    ...mapState({\n      currentUser: state => state.users.currentUser\n    })\n  },\n  components: {\n    Attachment,\n    Poll,\n    Gallery,\n    LinkPreview,\n    StatusBody\n  },\n  methods: {\n    toggleShowingTall () {\n      controlledOrUncontrolledToggle(this, 'showingTall')\n    },\n    toggleExpandingSubject () {\n      controlledOrUncontrolledToggle(this, 'expandingSubject')\n    },\n    toggleShowingLongSubject () {\n      controlledOrUncontrolledToggle(this, 'showingLongSubject')\n    },\n    setMedia () {\n      const attachments = this.attachmentSize === 'hide' ? this.status.attachments : this.galleryAttachments\n      return () => this.$store.dispatch('setMedia', attachments)\n    }\n  }\n}\n\nexport default StatusContent\n","import { render } from \"./status_content.vue?vue&type=template&id=475fea91\"\nimport script from \"./status_content.js?vue&type=script&lang=js\"\nexport * from \"./status_content.js?vue&type=script&lang=js\"\n\nimport \"./status_content.vue?vue&type=style&index=0&id=475fea91&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export const SECOND = 1000\nexport const MINUTE = 60 * SECOND\nexport const HOUR = 60 * MINUTE\nexport const DAY = 24 * HOUR\nexport const WEEK = 7 * DAY\nexport const MONTH = 30 * DAY\nexport const YEAR = 365.25 * DAY\n\nexport const relativeTime = (date, nowThreshold = 1) => {\n  if (typeof date === 'string') date = Date.parse(date)\n  const round = Date.now() > date ? Math.floor : Math.ceil\n  const d = Math.abs(Date.now() - date)\n  let r = { num: round(d / YEAR), key: 'time.years' }\n  if (d < nowThreshold * SECOND) {\n    r.num = 0\n    r.key = 'time.now'\n  } else if (d < MINUTE) {\n    r.num = round(d / SECOND)\n    r.key = 'time.seconds'\n  } else if (d < HOUR) {\n    r.num = round(d / MINUTE)\n    r.key = 'time.minutes'\n  } else if (d < DAY) {\n    r.num = round(d / HOUR)\n    r.key = 'time.hours'\n  } else if (d < WEEK) {\n    r.num = round(d / DAY)\n    r.key = 'time.days'\n  } else if (d < MONTH) {\n    r.num = round(d / WEEK)\n    r.key = 'time.weeks'\n  } else if (d < YEAR) {\n    r.num = round(d / MONTH)\n    r.key = 'time.months'\n  }\n  // Remove plural form when singular\n  if (r.num === 1) r.key = r.key.slice(0, -1)\n  return r\n}\n\nexport const relativeTimeShort = (date, nowThreshold = 1) => {\n  const r = relativeTime(date, nowThreshold)\n  r.key += '_short'\n  return r\n}\n","<template>\n  <div\n    class=\"still-image\"\n    :class=\"{ animated: animated }\"\n    :style=\"style\"\n  >\n    <canvas\n      v-if=\"animated\"\n      ref=\"canvas\"\n    />\n    <!-- NOTE: key is required to force to re-render img tag when src is changed -->\n    <img\n      ref=\"src\"\n      :key=\"src\"\n      :alt=\"alt\"\n      :title=\"alt\"\n      :src=\"src\"\n      :referrerpolicy=\"referrerpolicy\"\n      @load=\"onLoad\"\n      @error=\"onError\"\n    >\n    <slot />\n  </div>\n</template>\n\n<script src=\"./still-image.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.still-image {\n  position: relative;\n  line-height: 0;\n  overflow: hidden;\n  display: inline-flex;\n  align-items: center;\n\n  canvas {\n    position: absolute;\n    top: 0;\n    bottom: 0;\n    left: 0;\n    right: 0;\n    width: 100%;\n    height: 100%;\n    object-fit: contain;\n    visibility: var(--_still-image-canvas-visibility, visible);\n  }\n\n  img {\n    width: 100%;\n    height: 100%;\n    object-fit: contain;\n  }\n\n  &.animated {\n    &::before {\n      zoom: var(--_still_image-label-scale, 1);\n      content: 'gif';\n      position: absolute;\n      line-height: 1;\n      font-size: 0.7em;\n      top: 0.5em;\n      left: 0.5em;\n      background: rgba(127, 127, 127, 0.5);\n      color: #fff;\n      display: block;\n      padding: 2px 4px;\n      border-radius: $fallback--tooltipRadius;\n      border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n      z-index: 2;\n      visibility: var(--_still-image-label-visibility, visible);\n    }\n\n    &:hover canvas {\n      display: none;\n    }\n\n    &:hover::before {\n      visibility: var(--_still-image-label-visibility, hidden);\n    }\n\n    img {\n      visibility: var(--_still-image-img-visibility, hidden);\n    }\n\n    &:hover img {\n      visibility: visible;\n    }\n  }\n}\n</style>\n","const StillImage = {\n  props: [\n    'src',\n    'referrerpolicy',\n    'mimetype',\n    'imageLoadError',\n    'imageLoadHandler',\n    'alt',\n    'height',\n    'width'\n  ],\n  data () {\n    return {\n      stopGifs: this.$store.getters.mergedConfig.stopGifs\n    }\n  },\n  computed: {\n    animated () {\n      return this.stopGifs && (this.mimetype === 'image/gif' || this.src.endsWith('.gif'))\n    },\n    style () {\n      const appendPx = (str) => /\\d$/.test(str) ? str + 'px' : str\n      return {\n        height: this.height ? appendPx(this.height) : null,\n        width: this.width ? appendPx(this.width) : null\n      }\n    }\n  },\n  methods: {\n    onLoad () {\n      const image = this.$refs.src\n      if (!image) return\n      this.imageLoadHandler && this.imageLoadHandler(image)\n      const canvas = this.$refs.canvas\n      if (!canvas) return\n      const width = image.naturalWidth\n      const height = image.naturalHeight\n      canvas.width = width\n      canvas.height = height\n      canvas.getContext('2d').drawImage(image, 0, 0, width, height)\n    },\n    onError () {\n      this.imageLoadError && this.imageLoadError()\n    }\n  }\n}\n\nexport default StillImage\n","import { render } from \"./still-image.vue?vue&type=template&id=4da90e4a\"\nimport script from \"./still-image.js?vue&type=script&lang=js\"\nexport * from \"./still-image.js?vue&type=script&lang=js\"\n\nimport \"./still-image.vue?vue&type=style&index=0&id=4da90e4a&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <label\n    class=\"checkbox\"\n    :class=\"{ disabled, indeterminate }\"\n  >\n    <input\n      type=\"checkbox\"\n      :disabled=\"disabled\"\n      :checked=\"modelValue\"\n      :indeterminate=\"indeterminate\"\n      @change=\"$emit('update:modelValue', $event.target.checked)\"\n    >\n    <i class=\"checkbox-indicator\" />\n    <span\n      v-if=\"!!$slots.default\"\n      class=\"label\"\n    >\n      <slot />\n    </span>\n  </label>\n</template>\n\n<script>\nexport default {\n  emits: ['update:modelValue'],\n  props: [\n    'modelValue',\n    'indeterminate',\n    'disabled'\n  ]\n}\n</script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.checkbox {\n  position: relative;\n  display: inline-block;\n  min-height: 1.2em;\n\n  &-indicator {\n    position: relative;\n    padding-left: 1.2em;\n  }\n\n  &-indicator::before {\n    position: absolute;\n    right: 0;\n    top: 0;\n    display: block;\n    content: '✓';\n    transition: color 200ms;\n    width: 1.1em;\n    height: 1.1em;\n    border-radius: $fallback--checkboxRadius;\n    border-radius: var(--checkboxRadius, $fallback--checkboxRadius);\n    box-shadow: 0px 0px 2px black inset;\n    box-shadow: var(--inputShadow);\n    background-color: $fallback--fg;\n    background-color: var(--input, $fallback--fg);\n    vertical-align: top;\n    text-align: center;\n    line-height: 1.1em;\n    font-size: 1.1em;\n    color: transparent;\n    overflow: hidden;\n    box-sizing: border-box;\n  }\n\n  &.disabled {\n    .checkbox-indicator::before,\n    .label {\n      opacity: .5;\n    }\n    .label {\n      color: $fallback--faint;\n      color: var(--faint, $fallback--faint);\n    }\n  }\n\n  input[type=checkbox] {\n    display: none;\n\n    &:checked + .checkbox-indicator::before {\n      color: $fallback--text;\n      color: var(--inputText, $fallback--text);\n    }\n\n    &:indeterminate + .checkbox-indicator::before {\n      content: '–';\n      color: $fallback--text;\n      color: var(--inputText, $fallback--text);\n    }\n\n  }\n\n  & > span {\n    margin-left: .5em;\n  }\n}\n</style>\n","import { render } from \"./checkbox.vue?vue&type=template&id=deb5bfe6\"\nimport script from \"./checkbox.vue?vue&type=script&lang=js\"\nexport * from \"./checkbox.vue?vue&type=script&lang=js\"\n\nimport \"./checkbox.vue?vue&type=style&index=0&id=deb5bfe6&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <label\n    class=\"Select input\"\n    :class=\"{ disabled, unstyled }\"\n  >\n    <select\n      :disabled=\"disabled\"\n      :value=\"modelValue\"\n      @change=\"$emit('update:modelValue', $event.target.value)\"\n    >\n      <slot />\n    </select>\n    {{ ' ' }}\n    <FAIcon\n      class=\"select-down-icon\"\n      icon=\"chevron-down\"\n    />\n  </label>\n</template>\n\n<script src=\"./select.js\"> </script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n/* TODO fix order of styles */\nlabel.Select {\n  padding: 0;\n\n  select {\n    -webkit-appearance: none;\n    -moz-appearance: none;\n    appearance: none;\n    background: transparent;\n    border: none;\n    color: $fallback--text;\n    color: var(--inputText, --text, $fallback--text);\n    margin: 0;\n    padding: 0 2em 0 .2em;\n    font-family: sans-serif;\n    font-family: var(--inputFont, sans-serif);\n    font-size: 1em;\n    width: 100%;\n    z-index: 1;\n    height: 2em;\n    line-height: 16px;\n  }\n\n  .select-down-icon {\n    position: absolute;\n    top: 0;\n    bottom: 0;\n    right: 5px;\n    height: 100%;\n    width: 0.875em;\n    color: $fallback--text;\n    color: var(--inputText, $fallback--text);\n    line-height: 2;\n    z-index: 0;\n    pointer-events: none;\n  }\n\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faChevronDown\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faChevronDown\n)\n\nexport default {\n  emits: ['update:modelValue'],\n  props: [\n    'modelValue',\n    'disabled',\n    'unstyled',\n    'kind'\n  ]\n}\n","import { render } from \"./select.vue?vue&type=template&id=099d3e32\"\nimport script from \"./select.js?vue&type=script&lang=js\"\nexport * from \"./select.js?vue&type=script&lang=js\"\n\nimport \"./select.vue?vue&type=style&index=0&id=099d3e32&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"basic-user-card\">\n    <router-link :to=\"userProfileLink(user)\">\n      <UserAvatar\n        class=\"avatar\"\n        :user=\"user\"\n        @click.prevent=\"toggleUserExpanded\"\n      />\n    </router-link>\n    <div\n      v-if=\"userExpanded\"\n      class=\"basic-user-card-expanded-content\"\n    >\n      <UserCard\n        :user-id=\"user.id\"\n        :rounded=\"true\"\n        :bordered=\"true\"\n      />\n    </div>\n    <div\n      v-else\n      class=\"basic-user-card-collapsed-content\"\n    >\n      <div\n        :title=\"user.name\"\n        class=\"basic-user-card-user-name\"\n      >\n        <RichContent\n          class=\"basic-user-card-user-name-value\"\n          :html=\"user.name\"\n          :emoji=\"user.emoji\"\n        />\n      </div>\n      <div>\n        <router-link\n          class=\"basic-user-card-screen-name\"\n          :to=\"userProfileLink(user)\"\n        >\n          @{{ user.screen_name_ui }}\n        </router-link>\n      </div>\n      <slot />\n    </div>\n  </div>\n</template>\n\n<script src=\"./basic_user_card.js\"></script>\n\n<style lang=\"scss\">\n.basic-user-card {\n  display: flex;\n  flex: 1 0;\n  margin: 0;\n  padding: 0.6em 1em;\n\n  &-collapsed-content {\n    margin-left: 0.7em;\n    text-align: left;\n    flex: 1;\n    min-width: 0;\n  }\n\n  &-user-name {\n    img {\n      object-fit: contain;\n      height: 16px;\n      width: 16px;\n      vertical-align: middle;\n    }\n  }\n\n  &-user-name-value,\n  &-screen-name {\n    display: inline-block;\n    max-width: 100%;\n    overflow: hidden;\n    white-space: nowrap;\n    text-overflow: ellipsis;\n  }\n\n  &-expanded-content {\n    flex: 1;\n    margin-left: 0.7em;\n    min-width: 0;\n  }\n}\n</style>\n","import UserCard from '../user_card/user_card.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\n\nconst BasicUserCard = {\n  props: [\n    'user'\n  ],\n  data () {\n    return {\n      userExpanded: false\n    }\n  },\n  components: {\n    UserCard,\n    UserAvatar,\n    RichContent\n  },\n  methods: {\n    toggleUserExpanded () {\n      this.userExpanded = !this.userExpanded\n    },\n    userProfileLink (user) {\n      return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n    }\n  }\n}\n\nexport default BasicUserCard\n","import { render } from \"./basic_user_card.vue?vue&type=template&id=dd332bac\"\nimport script from \"./basic_user_card.js?vue&type=script&lang=js\"\nexport * from \"./basic_user_card.js?vue&type=script&lang=js\"\n\nimport \"./basic_user_card.vue?vue&type=style&index=0&id=dd332bac&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { convert, brightness, contrastRatio } from 'chromatism'\nimport { alphaBlendLayers, getTextColor, relativeLuminance } from '../color_convert/color_convert.js'\nimport { LAYERS, DEFAULT_OPACITY, SLOT_INHERITANCE } from './pleromafe.js'\n\n/*\n * # What's all this?\n * Here be theme engine for pleromafe. All of this supposed to ease look\n * and feel customization, making widget styles and make developer's life\n * easier when it comes to supporting themes. Like many other theme systems\n * it operates on color definitions, or \"slots\" - for example you define\n * \"button\" color slot and then in UI component Button's CSS you refer to\n * it as a CSS3 Variable.\n *\n * Some applications allow you to customize colors for certain things.\n * Some UI toolkits allow you to define colors for each type of widget.\n * Most of them are pretty barebones and have no assistance for common\n * problems and cases, and in general themes themselves are very hard to\n * maintain in all aspects. This theme engine tries to solve all of the\n * common problems with themes.\n *\n * You don't have redefine several similar colors if you just want to\n * change one color - all color slots are derived from other ones, so you\n * can have at least one or two \"basic\" colors defined and have all other\n * components inherit and modify basic ones.\n *\n * You don't have to test contrast ratio for colors or pick text color for\n * each element even if you have light-on-dark elements in dark-on-light\n * theme.\n *\n * You don't have to maintain order of code for inheriting slots from othet\n * slots - dependency graph resolving does it for you.\n */\n\n/* This indicates that this version of code outputs similar theme data and\n * should be incremented if output changes - for instance if getTextColor\n * function changes and older themes no longer render text colors as\n * author intended previously.\n */\nexport const CURRENT_VERSION = 3\n\nexport const getLayersArray = (layer, data = LAYERS) => {\n  let array = [layer]\n  let parent = data[layer]\n  while (parent) {\n    array.unshift(parent)\n    parent = data[parent]\n  }\n  return array\n}\n\nexport const getLayers = (layer, variant = layer, opacitySlot, colors, opacity) => {\n  return getLayersArray(layer).map((currentLayer) => ([\n    currentLayer === layer\n      ? colors[variant]\n      : colors[currentLayer],\n    currentLayer === layer\n      ? opacity[opacitySlot] || 1\n      : opacity[currentLayer]\n  ]))\n}\n\nconst getDependencies = (key, inheritance) => {\n  const data = inheritance[key]\n  if (typeof data === 'string' && data.startsWith('--')) {\n    return [data.substring(2)]\n  } else {\n    if (data === null) return []\n    const { depends, layer, variant } = data\n    const layerDeps = layer\n      ? getLayersArray(layer).map(currentLayer => {\n        return currentLayer === layer\n          ? variant || layer\n          : currentLayer\n      })\n      : []\n    if (Array.isArray(depends)) {\n      return [...depends, ...layerDeps]\n    } else {\n      return [...layerDeps]\n    }\n  }\n}\n\n/**\n * Sorts inheritance object topologically - dependant slots come after\n * dependencies\n *\n * @property {Object} inheritance - object defining the nodes\n * @property {Function} getDeps - function that returns dependencies for\n *   given value and inheritance object.\n * @returns {String[]} keys of inheritance object, sorted in topological\n *   order. Additionally, dependency-less nodes will always be first in line\n */\nexport const topoSort = (\n  inheritance = SLOT_INHERITANCE,\n  getDeps = getDependencies\n) => {\n  // This is an implementation of https://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm\n\n  const allKeys = Object.keys(inheritance)\n  const whites = new Set(allKeys)\n  const grays = new Set()\n  const blacks = new Set()\n  const unprocessed = [...allKeys]\n  const output = []\n\n  const step = (node) => {\n    if (whites.has(node)) {\n      // Make node \"gray\"\n      whites.delete(node)\n      grays.add(node)\n      // Do step for each node connected to it (one way)\n      getDeps(node, inheritance).forEach(step)\n      // Make node \"black\"\n      grays.delete(node)\n      blacks.add(node)\n      // Put it into the output list\n      output.push(node)\n    } else if (grays.has(node)) {\n      console.debug('Cyclic depenency in topoSort, ignoring')\n      output.push(node)\n    } else if (blacks.has(node)) {\n      // do nothing\n    } else {\n      throw new Error('Unintended condition in topoSort!')\n    }\n  }\n  while (unprocessed.length > 0) {\n    step(unprocessed.pop())\n  }\n\n  // The index thing is to make sorting stable on browsers\n  // where Array.sort() isn't stable\n  return output.map((data, index) => ({ data, index })).sort(({ data: a, index: ai }, { data: b, index: bi }) => {\n    const depsA = getDeps(a, inheritance).length\n    const depsB = getDeps(b, inheritance).length\n\n    if (depsA === depsB || (depsB !== 0 && depsA !== 0)) return ai - bi\n    if (depsA === 0 && depsB !== 0) return -1\n    if (depsB === 0 && depsA !== 0) return 1\n  }).map(({ data }) => data)\n}\n\nconst expandSlotValue = (value) => {\n  if (typeof value === 'object') return value\n  return {\n    depends: value.startsWith('--') ? [value.substring(2)] : [],\n    default: value.startsWith('#') ? value : undefined\n  }\n}\n/**\n * retrieves opacity slot for given slot. This goes up the depenency graph\n * to find which parent has opacity slot defined for it.\n * TODO refactor this\n */\nexport const getOpacitySlot = (\n  k,\n  inheritance = SLOT_INHERITANCE,\n  getDeps = getDependencies\n) => {\n  const value = expandSlotValue(inheritance[k])\n  if (value.opacity === null) return\n  if (value.opacity) return value.opacity\n  const findInheritedOpacity = (key, visited = [k]) => {\n    const depSlot = getDeps(key, inheritance)[0]\n    if (depSlot === undefined) return\n    const dependency = inheritance[depSlot]\n    if (dependency === undefined) return\n    if (dependency.opacity || dependency === null) {\n      return dependency.opacity\n    } else if (dependency.depends && visited.includes(depSlot)) {\n      return findInheritedOpacity(depSlot, [...visited, depSlot])\n    } else {\n      return null\n    }\n  }\n  if (value.depends) {\n    return findInheritedOpacity(k)\n  }\n}\n\n/**\n * retrieves layer slot for given slot. This goes up the depenency graph\n * to find which parent has opacity slot defined for it.\n * this is basically copypaste of getOpacitySlot except it checks if key is\n * in LAYERS\n * TODO refactor this\n */\nexport const getLayerSlot = (\n  k,\n  inheritance = SLOT_INHERITANCE,\n  getDeps = getDependencies\n) => {\n  const value = expandSlotValue(inheritance[k])\n  if (LAYERS[k]) return k\n  if (value.layer === null) return\n  if (value.layer) return value.layer\n  const findInheritedLayer = (key, visited = [k]) => {\n    const depSlot = getDeps(key, inheritance)[0]\n    if (depSlot === undefined) return\n    const dependency = inheritance[depSlot]\n    if (dependency === undefined) return\n    if (dependency.layer || dependency === null) {\n      return dependency.layer\n    } else if (dependency.depends) {\n      return findInheritedLayer(dependency, [...visited, depSlot])\n    } else {\n      return null\n    }\n  }\n  if (value.depends) {\n    return findInheritedLayer(k)\n  }\n}\n\n/**\n * topologically sorted SLOT_INHERITANCE\n */\nexport const SLOT_ORDERED = topoSort(\n  Object.entries(SLOT_INHERITANCE)\n    .sort(([aK, aV], [bK, bV]) => ((aV && aV.priority) || 0) - ((bV && bV.priority) || 0))\n    .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {})\n)\n\n/**\n * All opacity slots used in color slots, their default values and affected\n * color slots.\n */\nexport const OPACITIES = Object.entries(SLOT_INHERITANCE).reduce((acc, [k, v]) => {\n  const opacity = getOpacitySlot(k, SLOT_INHERITANCE, getDependencies)\n  if (opacity) {\n    return {\n      ...acc,\n      [opacity]: {\n        defaultValue: DEFAULT_OPACITY[opacity] || 1,\n        affectedSlots: [...((acc[opacity] && acc[opacity].affectedSlots) || []), k]\n      }\n    }\n  } else {\n    return acc\n  }\n}, {})\n\n/**\n * Handle dynamic color\n */\nexport const computeDynamicColor = (sourceColor, getColor, mod) => {\n  if (typeof sourceColor !== 'string' || !sourceColor.startsWith('--')) return sourceColor\n  let targetColor = null\n  // Color references other color\n  const [variable, modifier] = sourceColor.split(/,/g).map(str => str.trim())\n  const variableSlot = variable.substring(2)\n  targetColor = getColor(variableSlot)\n  if (modifier) {\n    targetColor = brightness(Number.parseFloat(modifier) * mod, targetColor).rgb\n  }\n  return targetColor\n}\n\n/**\n * THE function you want to use. Takes provided colors and opacities\n * value and uses inheritance data to figure out color needed for the slot.\n */\nexport const getColors = (sourceColors, sourceOpacity) => SLOT_ORDERED.reduce(({ colors, opacity }, key) => {\n  const sourceColor = sourceColors[key]\n  const value = expandSlotValue(SLOT_INHERITANCE[key])\n  const deps = getDependencies(key, SLOT_INHERITANCE)\n  const isTextColor = !!value.textColor\n  const variant = value.variant || value.layer\n\n  let backgroundColor = null\n\n  if (isTextColor) {\n    backgroundColor = alphaBlendLayers(\n      { ...(colors[deps[0]] || convert(sourceColors[key] || '#FF00FF').rgb) },\n      getLayers(\n        getLayerSlot(key) || 'bg',\n        variant || 'bg',\n        getOpacitySlot(variant),\n        colors,\n        opacity\n      )\n    )\n  } else if (variant && variant !== key) {\n    backgroundColor = colors[variant] || convert(sourceColors[variant]).rgb\n  } else {\n    backgroundColor = colors.bg || convert(sourceColors.bg)\n  }\n\n  const isLightOnDark = relativeLuminance(backgroundColor) < 0.5\n  const mod = isLightOnDark ? 1 : -1\n\n  let outputColor = null\n  if (sourceColor) {\n    // Color is defined in source color\n    let targetColor = sourceColor\n    if (targetColor === 'transparent') {\n      // We take only layers below current one\n      const layers = getLayers(\n        getLayerSlot(key),\n        key,\n        getOpacitySlot(key) || key,\n        colors,\n        opacity\n      ).slice(0, -1)\n      targetColor = {\n        ...alphaBlendLayers(\n          convert('#FF00FF').rgb,\n          layers\n        ),\n        a: 0\n      }\n    } else if (typeof sourceColor === 'string' && sourceColor.startsWith('--')) {\n      targetColor = computeDynamicColor(\n        sourceColor,\n        variableSlot => colors[variableSlot] || sourceColors[variableSlot],\n        mod\n      )\n    } else if (typeof sourceColor === 'string' && sourceColor.startsWith('#')) {\n      targetColor = convert(targetColor).rgb\n    }\n    outputColor = { ...targetColor }\n  } else if (value.default) {\n    // same as above except in object form\n    outputColor = convert(value.default).rgb\n  } else {\n    // calculate color\n    const defaultColorFunc = (mod, dep) => ({ ...dep })\n    const colorFunc = value.color || defaultColorFunc\n\n    if (value.textColor) {\n      if (value.textColor === 'bw') {\n        outputColor = contrastRatio(backgroundColor).rgb\n      } else {\n        let color = { ...colors[deps[0]] }\n        if (value.color) {\n          color = colorFunc(mod, ...deps.map((dep) => ({ ...colors[dep] })))\n        }\n        outputColor = getTextColor(\n          backgroundColor,\n          { ...color },\n          value.textColor === 'preserve'\n        )\n      }\n    } else {\n      // background color case\n      outputColor = colorFunc(\n        mod,\n        ...deps.map((dep) => ({ ...colors[dep] }))\n      )\n    }\n  }\n  if (!outputColor) {\n    throw new Error('Couldn\\'t generate color for ' + key)\n  }\n\n  const opacitySlot = value.opacity || getOpacitySlot(key)\n  const ownOpacitySlot = value.opacity\n\n  if (ownOpacitySlot === null) {\n    outputColor.a = 1\n  } else if (sourceColor === 'transparent') {\n    outputColor.a = 0\n  } else {\n    const opacityOverriden = ownOpacitySlot && sourceOpacity[opacitySlot] !== undefined\n\n    const dependencySlot = deps[0]\n    const dependencyColor = dependencySlot && colors[dependencySlot]\n\n    if (!ownOpacitySlot && dependencyColor && !value.textColor && ownOpacitySlot !== null) {\n      // Inheriting color from dependency (weird, i know)\n      // except if it's a text color or opacity slot is set to 'null'\n      outputColor.a = dependencyColor.a\n    } else if (!dependencyColor && !opacitySlot) {\n      // Remove any alpha channel if no dependency and no opacitySlot found\n      delete outputColor.a\n    } else {\n      // Otherwise try to assign opacity\n      if (dependencyColor && dependencyColor.a === 0) {\n        // transparent dependency shall make dependents transparent too\n        outputColor.a = 0\n      } else {\n        // Otherwise check if opacity is overriden and use that or default value instead\n        outputColor.a = Number(\n          opacityOverriden\n            ? sourceOpacity[opacitySlot]\n            : (OPACITIES[opacitySlot] || {}).defaultValue\n        )\n      }\n    }\n  }\n\n  if (Number.isNaN(outputColor.a) || outputColor.a === undefined) {\n    outputColor.a = 1\n  }\n\n  if (opacitySlot) {\n    return {\n      colors: { ...colors, [key]: outputColor },\n      opacity: { ...opacity, [opacitySlot]: outputColor.a }\n    }\n  } else {\n    return {\n      colors: { ...colors, [key]: outputColor },\n      opacity\n    }\n  }\n}, { colors: {}, opacity: {} })\n","<template>\n  <div\n    ref=\"form\"\n    class=\"post-status-form\"\n  >\n    <form\n      autocomplete=\"off\"\n      @submit.prevent\n      @dragover.prevent=\"fileDrag\"\n    >\n      <div class=\"form-group\">\n        <i18n-t\n          v-if=\"!$store.state.users.currentUser.locked && newStatus.visibility == 'private' && !disableLockWarning\"\n          keypath=\"post_status.account_not_locked_warning\"\n          tag=\"p\"\n          class=\"visibility-notice\"\n          scope=\"global\"\n        >\n          <button\n            class=\"button-unstyled -link\"\n            @click=\"openProfileTab\"\n          >\n            {{ $t('post_status.account_not_locked_warning_link') }}\n          </button>\n        </i18n-t>\n        <p\n          v-if=\"!hideScopeNotice && newStatus.visibility === 'public'\"\n          class=\"visibility-notice notice-dismissible\"\n        >\n          <span>{{ $t('post_status.scope_notice.public') }}</span>\n          <a\n            class=\"fa-scale-110 fa-old-padding dismiss\"\n            @click.prevent=\"dismissScopeNotice()\"\n          >\n            <FAIcon icon=\"times\" />\n          </a>\n        </p>\n        <p\n          v-else-if=\"!hideScopeNotice && newStatus.visibility === 'unlisted'\"\n          class=\"visibility-notice notice-dismissible\"\n        >\n          <span>{{ $t('post_status.scope_notice.unlisted') }}</span>\n          <a\n            class=\"fa-scale-110 fa-old-padding dismiss\"\n            @click.prevent=\"dismissScopeNotice()\"\n          >\n            <FAIcon icon=\"times\" />\n          </a>\n        </p>\n        <p\n          v-else-if=\"!hideScopeNotice && newStatus.visibility === 'private' && $store.state.users.currentUser.locked\"\n          class=\"visibility-notice notice-dismissible\"\n        >\n          <span>{{ $t('post_status.scope_notice.private') }}</span>\n          <a\n            class=\"fa-scale-110 fa-old-padding dismiss\"\n            @click.prevent=\"dismissScopeNotice()\"\n          >\n            <FAIcon icon=\"times\" />\n          </a>\n        </p>\n        <p\n          v-else-if=\"newStatus.visibility === 'direct'\"\n          class=\"visibility-notice\"\n        >\n          <span v-if=\"safeDMEnabled\">{{ $t('post_status.direct_warning_to_first_only') }}</span>\n          <span v-else>{{ $t('post_status.direct_warning_to_all') }}</span>\n        </p>\n        <div\n          v-if=\"!disablePreview\"\n          class=\"preview-heading faint\"\n        >\n          <a\n            class=\"preview-toggle faint\"\n            @click.stop.prevent=\"togglePreview\"\n          >\n            {{ $t('post_status.preview') }}\n            <FAIcon :icon=\"showPreview ? 'chevron-left' : 'chevron-right'\" />\n          </a>\n          <div\n            v-show=\"previewLoading\"\n            class=\"preview-spinner\"\n          >\n            <FAIcon\n              class=\"fa-old-padding\"\n              spin\n              icon=\"circle-notch\"\n            />\n          </div>\n        </div>\n        <div\n          v-if=\"showPreview\"\n          class=\"preview-container\"\n        >\n          <div\n            v-if=\"!preview\"\n            class=\"preview-status\"\n          >\n            {{ $t('general.loading') }}\n          </div>\n          <div\n            v-else-if=\"preview.error\"\n            class=\"preview-status preview-error\"\n          >\n            {{ preview.error }}\n          </div>\n          <StatusContent\n            v-else\n            :status=\"preview\"\n            class=\"preview-status\"\n          />\n        </div>\n        <EmojiInput\n          v-if=\"!disableSubject && (newStatus.spoilerText || alwaysShowSubject)\"\n          v-model=\"newStatus.spoilerText\"\n          enable-emoji-picker\n          :suggest=\"emojiSuggestor\"\n          class=\"form-control\"\n        >\n          <input\n            v-model=\"newStatus.spoilerText\"\n            type=\"text\"\n            :placeholder=\"$t('post_status.content_warning')\"\n            :disabled=\"posting && !optimisticPosting\"\n            size=\"1\"\n            class=\"form-post-subject\"\n          >\n        </EmojiInput>\n        <EmojiInput\n          ref=\"emoji-input\"\n          v-model=\"newStatus.status\"\n          :suggest=\"emojiUserSuggestor\"\n          :placement=\"emojiPickerPlacement\"\n          class=\"form-control main-input\"\n          enable-emoji-picker\n          hide-emoji-button\n          :newline-on-ctrl-enter=\"submitOnEnter\"\n          enable-sticker-picker\n          @input=\"onEmojiInputInput\"\n          @sticker-uploaded=\"addMediaFile\"\n          @sticker-upload-failed=\"uploadFailed\"\n          @shown=\"handleEmojiInputShow\"\n        >\n          <textarea\n            ref=\"textarea\"\n            v-model=\"newStatus.status\"\n            :placeholder=\"placeholder || $t('post_status.default')\"\n            rows=\"1\"\n            cols=\"1\"\n            :disabled=\"posting && !optimisticPosting\"\n            class=\"form-post-body\"\n            :class=\"{ 'scrollable-form': !!maxHeight }\"\n            @keydown.exact.enter=\"submitOnEnter && postStatus($event, newStatus)\"\n            @keydown.meta.enter=\"postStatus($event, newStatus)\"\n            @keydown.ctrl.enter=\"!submitOnEnter && postStatus($event, newStatus)\"\n            @input=\"resize\"\n            @compositionupdate=\"resize\"\n            @paste=\"paste\"\n          />\n          <p\n            v-if=\"hasStatusLengthLimit\"\n            class=\"character-counter faint\"\n            :class=\"{ error: isOverLengthLimit }\"\n          >\n            {{ charactersLeft }}\n          </p>\n        </EmojiInput>\n        <div\n          v-if=\"!disableScopeSelector\"\n          class=\"visibility-tray\"\n        >\n          <scope-selector\n            :show-all=\"showAllScopes\"\n            :user-default=\"userDefaultScope\"\n            :original-scope=\"copyMessageScope\"\n            :initial-scope=\"newStatus.visibility\"\n            :on-scope-change=\"changeVis\"\n          />\n\n          <div\n            v-if=\"postFormats.length > 1\"\n            class=\"text-format\"\n          >\n            <Select\n              id=\"post-content-type\"\n              v-model=\"newStatus.contentType\"\n              class=\"form-control\"\n            >\n              <option\n                v-for=\"postFormat in postFormats\"\n                :key=\"postFormat\"\n                :value=\"postFormat\"\n              >\n                {{ $t(`post_status.content_type[\"${postFormat}\"]`) }}\n              </option>\n            </Select>\n          </div>\n          <div\n            v-if=\"postFormats.length === 1 && postFormats[0] !== 'text/plain'\"\n            class=\"text-format\"\n          >\n            <span class=\"only-format\">\n              {{ $t(`post_status.content_type[\"${postFormats[0]}\"]`) }}\n            </span>\n          </div>\n        </div>\n      </div>\n      <poll-form\n        v-if=\"pollsAvailable\"\n        ref=\"pollForm\"\n        :visible=\"pollFormVisible\"\n        @update-poll=\"setPoll\"\n      />\n      <div\n        ref=\"bottom\"\n        class=\"form-bottom\"\n      >\n        <div class=\"form-bottom-left\">\n          <media-upload\n            ref=\"mediaUpload\"\n            class=\"media-upload-icon\"\n            :drop-files=\"dropFiles\"\n            :disabled=\"uploadFileLimitReached\"\n            @uploading=\"startedUploadingFiles\"\n            @uploaded=\"addMediaFile\"\n            @upload-failed=\"uploadFailed\"\n            @all-uploaded=\"finishedUploadingFiles\"\n          />\n          <button\n            class=\"emoji-icon button-unstyled\"\n            :title=\"$t('emoji.add_emoji')\"\n            @click=\"showEmojiPicker\"\n          >\n            <FAIcon icon=\"smile-beam\" />\n          </button>\n          <button\n            v-if=\"pollsAvailable\"\n            class=\"poll-icon button-unstyled\"\n            :class=\"{ selected: pollFormVisible }\"\n            :title=\"$t('polls.add_poll')\"\n            @click=\"togglePollForm\"\n          >\n            <FAIcon icon=\"poll-h\" />\n          </button>\n        </div>\n        <button\n          v-if=\"posting\"\n          disabled\n          class=\"btn button-default\"\n        >\n          {{ $t('post_status.posting') }}\n        </button>\n        <button\n          v-else-if=\"isOverLengthLimit\"\n          disabled\n          class=\"btn button-default\"\n        >\n          {{ $t('post_status.post') }}\n        </button>\n        <!-- touchstart is used to keep the OSK at the same position after a message send -->\n        <button\n          v-else\n          :disabled=\"uploadingFiles || disableSubmit\"\n          class=\"btn button-default\"\n          @touchstart.stop.prevent=\"postStatus($event, newStatus)\"\n          @click.stop.prevent=\"postStatus($event, newStatus)\"\n        >\n          {{ $t('post_status.post') }}\n        </button>\n      </div>\n      <div\n        v-show=\"showDropIcon !== 'hide'\"\n        :style=\"{ animation: showDropIcon === 'show' ? 'fade-in 0.25s' : 'fade-out 0.5s' }\"\n        class=\"drop-indicator\"\n        @dragleave=\"fileDragStop\"\n        @drop.stop=\"fileDrop\"\n      >\n        <FAIcon :icon=\"uploadFileLimitReached ? 'ban' : 'upload'\" />\n      </div>\n      <div\n        v-if=\"error\"\n        class=\"alert error\"\n      >\n        Error: {{ error }}\n        <button\n          class=\"button-unstyled\"\n          @click=\"clearError\"\n        >\n          <FAIcon\n            class=\"fa-scale-110 fa-old-padding\"\n            icon=\"times\"\n          />\n        </button>\n      </div>\n      <gallery\n        v-if=\"newStatus.files && newStatus.files.length > 0\"\n        class=\"attachments\"\n        :grid=\"true\"\n        :nsfw=\"false\"\n        :attachments=\"newStatus.files\"\n        :descriptions=\"newStatus.mediaDescriptions\"\n        :set-media=\"() => $store.dispatch('setMedia', newStatus.files)\"\n        :editable=\"true\"\n        :edit-attachment=\"editAttachment\"\n        :remove-attachment=\"removeMediaFile\"\n        :shift-up-attachment=\"newStatus.files.length > 1 && shiftUpMediaFile\"\n        :shift-dn-attachment=\"newStatus.files.length > 1 && shiftDnMediaFile\"\n        @play=\"$emit('mediaplay', attachment.id)\"\n        @pause=\"$emit('mediapause', attachment.id)\"\n      />\n      <div\n        v-if=\"newStatus.files.length > 0 && !disableSensitivityCheckbox\"\n        class=\"upload_settings\"\n      >\n        <Checkbox v-model=\"newStatus.nsfw\">\n          {{ $t('post_status.attachments_sensitive') }}\n        </Checkbox>\n      </div>\n    </form>\n  </div>\n</template>\n\n<script src=\"./post_status_form.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.post-status-form {\n  position: relative;\n\n  .attachments {\n    margin-bottom: 0.5em;\n  }\n\n  .form-bottom {\n    display: flex;\n    justify-content: space-between;\n    padding: 0.5em;\n    height: 2.5em;\n\n    button {\n      width: 10em;\n    }\n\n    p {\n      margin: 0.35em;\n      padding: 0.35em;\n      display: flex;\n    }\n  }\n\n  .form-bottom-left {\n    display: flex;\n    flex: 1;\n    padding-right: 7px;\n    margin-right: 7px;\n    max-width: 10em;\n  }\n\n  .preview-heading {\n    display: flex;\n    padding-left: 0.5em;\n  }\n\n  .preview-toggle {\n    flex: 1;\n    cursor: pointer;\n    user-select: none;\n\n    &:hover {\n      text-decoration: underline;\n    }\n    svg, i {\n      margin-left: 0.2em;\n      font-size: 0.8em;\n      transform: rotate(90deg);\n    }\n  }\n\n  .preview-container {\n    margin-bottom: 1em;\n  }\n\n  .preview-error {\n    font-style: italic;\n    color: $fallback--faint;\n    color: var(--faint, $fallback--faint);\n  }\n\n  .preview-status {\n    border: 1px solid $fallback--border;\n    border: 1px solid var(--border, $fallback--border);\n    border-radius: $fallback--tooltipRadius;\n    border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n    padding: 0.5em;\n    margin: 0;\n  }\n\n  .text-format {\n    .only-format {\n      color: $fallback--faint;\n      color: var(--faint, $fallback--faint);\n    }\n  }\n\n  .visibility-tray {\n    display: flex;\n    justify-content: space-between;\n    padding-top: 5px;\n    align-items: baseline;\n  }\n\n  .media-upload-icon, .poll-icon, .emoji-icon {\n    font-size: 1.85em;\n    line-height: 1.1;\n    flex: 1;\n    padding: 0 0.1em;\n    display: flex;\n    align-items: center;\n\n    &.selected, &:hover {\n      // needs to be specific to override icon default color\n      svg, i, label {\n        color: $fallback--lightText;\n        color: var(--lightText, $fallback--lightText);\n      }\n    }\n\n    &.disabled {\n      svg, i {\n        cursor: not-allowed;\n        color: $fallback--icon;\n        color: var(--btnDisabledText, $fallback--icon);\n\n        &:hover {\n          color: $fallback--icon;\n          color: var(--btnDisabledText, $fallback--icon);\n        }\n      }\n    }\n  }\n\n  // Order is not necessary but a good indicator\n  .media-upload-icon {\n    order: 1;\n    justify-content: left;\n  }\n\n  .emoji-icon {\n    order: 2;\n    justify-content: center;\n  }\n\n  .poll-icon {\n    order: 3;\n    justify-content: right;\n  }\n\n  .error {\n    text-align: center;\n  }\n\n  .media-upload-wrapper {\n    margin-right: .2em;\n    margin-bottom: .5em;\n    width: 18em;\n\n    img, video {\n      object-fit: contain;\n      max-height: 10em;\n    }\n\n    .video {\n      max-height: 10em;\n    }\n\n    input {\n      flex: 1;\n      width: 100%;\n    }\n  }\n\n  .status-input-wrapper {\n    display: flex;\n    position: relative;\n    width: 100%;\n    flex-direction: column;\n  }\n\n  .btn[disabled] {\n    cursor: not-allowed;\n  }\n\n  form {\n    display: flex;\n    flex-direction: column;\n    margin: 0.6em;\n    position: relative;\n  }\n\n  .form-group {\n    display: flex;\n    flex-direction: column;\n    padding: 0.25em 0.5em 0.5em;\n    line-height: 1.85;\n  }\n\n  .form-post-body {\n    // TODO: make a resizable textarea component?\n    box-sizing: content-box; // needed for easier computation of dynamic size\n    overflow: hidden;\n    transition: min-height 200ms 100ms;\n    // stock padding + 1 line of text (for counter)\n    padding-bottom: calc(var(--_padding) + var(--post-line-height) * 1em);\n    // two lines of text\n    height: calc(var(--post-line-height) * 1em);\n    min-height: calc(var(--post-line-height) * 1em);\n    resize: none;\n\n    &.scrollable-form {\n      overflow-y: auto;\n    }\n  }\n\n  .main-input {\n    position: relative;\n  }\n\n  .character-counter {\n    position: absolute;\n    bottom: 0;\n    right: 0;\n    padding: 0;\n    margin: 0 0.5em;\n\n    &.error {\n      color: $fallback--cRed;\n      color: var(--cRed, $fallback--cRed);\n    }\n  }\n\n  .btn[disabled] {\n    cursor: not-allowed;\n  }\n\n  @keyframes fade-in {\n    from { opacity: 0; }\n    to   { opacity: 0.6; }\n  }\n\n  @keyframes fade-out {\n    from { opacity: 0.6; }\n    to   { opacity: 0; }\n  }\n\n  .drop-indicator {\n    position: absolute;\n    width: 100%;\n    height: 100%;\n    font-size: 5em;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    opacity: 0.6;\n    color: $fallback--text;\n    color: var(--text, $fallback--text);\n    background-color: $fallback--bg;\n    background-color: var(--bg, $fallback--bg);\n    border-radius: $fallback--tooltipRadius;\n    border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n    border: 2px dashed $fallback--text;\n    border: 2px dashed var(--text, $fallback--text);\n  }\n}\n</style>\n","/* eslint-env browser */\nimport statusPosterService from '../../services/status_poster/status_poster.service.js'\nimport fileSizeFormatService from '../../services/file_size_format/file_size_format.js'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faUpload, faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faUpload,\n  faCircleNotch\n)\n\nconst mediaUpload = {\n  data () {\n    return {\n      uploadCount: 0,\n      uploadReady: true\n    }\n  },\n  computed: {\n    uploading () {\n      return this.uploadCount > 0\n    }\n  },\n  methods: {\n    uploadFile (file) {\n      const self = this\n      const store = this.$store\n      if (file.size > store.state.instance.uploadlimit) {\n        const filesize = fileSizeFormatService.fileSizeFormat(file.size)\n        const allowedsize = fileSizeFormatService.fileSizeFormat(store.state.instance.uploadlimit)\n        self.$emit('upload-failed', 'file_too_big', { filesize: filesize.num, filesizeunit: filesize.unit, allowedsize: allowedsize.num, allowedsizeunit: allowedsize.unit })\n        return\n      }\n      const formData = new FormData()\n      formData.append('file', file)\n\n      self.$emit('uploading')\n      self.uploadCount++\n\n      statusPosterService.uploadMedia({ store, formData })\n        .then((fileData) => {\n          self.$emit('uploaded', fileData)\n          self.decreaseUploadCount()\n        }, (error) => { // eslint-disable-line handle-callback-err\n          self.$emit('upload-failed', 'default')\n          self.decreaseUploadCount()\n        })\n    },\n    decreaseUploadCount () {\n      this.uploadCount--\n      if (this.uploadCount === 0) {\n        this.$emit('all-uploaded')\n      }\n    },\n    clearFile () {\n      this.uploadReady = false\n      this.$nextTick(() => {\n        this.uploadReady = true\n      })\n    },\n    multiUpload (files) {\n      for (const file of files) {\n        this.uploadFile(file)\n      }\n    },\n    change ({ target }) {\n      this.multiUpload(target.files)\n    }\n  },\n  props: [\n    'dropFiles',\n    'disabled'\n  ],\n  watch: {\n    'dropFiles': function (fileInfos) {\n      if (!this.uploading) {\n        this.multiUpload(fileInfos)\n      }\n    }\n  }\n}\n\nexport default mediaUpload\n","import { render } from \"./media_upload.vue?vue&type=template&id=8e180d3a\"\nimport script from \"./media_upload.js?vue&type=script&lang=js\"\nexport * from \"./media_upload.js?vue&type=script&lang=js\"\n\nimport \"./media_upload.vue?vue&type=style&index=0&id=8e180d3a&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <label\n    class=\"media-upload\"\n    :class=\"{ disabled: disabled }\"\n    :title=\"$t('tool_tip.media_upload')\"\n  >\n    <FAIcon\n      v-if=\"uploading\"\n      class=\"progress-icon\"\n      icon=\"circle-notch\"\n      spin\n    />\n    <FAIcon\n      v-if=\"!uploading\"\n      class=\"new-icon\"\n      icon=\"upload\"\n    />\n    <input\n      v-if=\"uploadReady\"\n      class=\"hidden-input-file\"\n      :disabled=\"disabled\"\n      type=\"file\"\n      multiple=\"true\"\n      @change=\"change\"\n    >\n  </label>\n</template>\n\n<script src=\"./media_upload.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.media-upload {\n  cursor: pointer; // We use <label> for interactivity... i wonder if it's fine\n\n  .hidden-input-file {\n    display: none;\n  }\n}\n </style>\n","<template>\n  <div\n    v-if=\"visible\"\n    class=\"poll-form\"\n  >\n    <div\n      v-for=\"(option, index) in options\"\n      :key=\"index\"\n      class=\"poll-option\"\n    >\n      <div class=\"input-container\">\n        <input\n          :id=\"`poll-${index}`\"\n          v-model=\"options[index]\"\n          size=\"1\"\n          class=\"poll-option-input\"\n          type=\"text\"\n          :placeholder=\"$t('polls.option')\"\n          :maxlength=\"maxLength\"\n          @change=\"updatePollToParent\"\n          @keydown.enter.stop.prevent=\"nextOption(index)\"\n        >\n      </div>\n      <button\n        v-if=\"options.length > 2\"\n        class=\"delete-option button-unstyled -hover-highlight\"\n        @click=\"deleteOption(index)\"\n      >\n        <FAIcon icon=\"times\" />\n      </button>\n    </div>\n    <button\n      v-if=\"options.length < maxOptions\"\n      class=\"add-option faint button-unstyled -hover-highlight\"\n      @click=\"addOption\"\n    >\n      <FAIcon\n        icon=\"plus\"\n        size=\"sm\"\n      />\n\n      {{ $t(\"polls.add_option\") }}\n    </button>\n    <div class=\"poll-type-expiry\">\n      <div\n        class=\"poll-type\"\n        :title=\"$t('polls.type')\"\n      >\n        <Select\n          v-model=\"pollType\"\n          class=\"poll-type-select\"\n          unstyled=\"true\"\n          @change=\"updatePollToParent\"\n        >\n          <option value=\"single\">\n            {{ $t('polls.single_choice') }}\n          </option>\n          <option value=\"multiple\">\n            {{ $t('polls.multiple_choices') }}\n          </option>\n        </Select>\n      </div>\n      <div\n        class=\"poll-expiry\"\n        :title=\"$t('polls.expiry')\"\n      >\n        <input\n          v-model=\"expiryAmount\"\n          type=\"number\"\n          class=\"expiry-amount hide-number-spinner\"\n          :min=\"minExpirationInCurrentUnit\"\n          :max=\"maxExpirationInCurrentUnit\"\n          @change=\"expiryAmountChange\"\n        >\n        {{ ' ' }}\n        <Select\n          v-model=\"expiryUnit\"\n          unstyled=\"true\"\n          class=\"expiry-unit\"\n          @change=\"expiryAmountChange\"\n        >\n          <option\n            v-for=\"unit in expiryUnits\"\n            :key=\"unit\"\n            :value=\"unit\"\n          >\n            {{ $t(`time.${unit}_short`, ['']) }}\n          </option>\n        </Select>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./poll_form.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.poll-form {\n  display: flex;\n  flex-direction: column;\n  padding: 0 0.5em 0.5em;\n\n  .add-option {\n    align-self: flex-start;\n    padding-top: 0.25em;\n    padding-left: 0.1em;\n  }\n\n  .poll-option {\n    display: flex;\n    align-items: baseline;\n    justify-content: space-between;\n    margin-bottom: 0.25em;\n  }\n\n  .input-container {\n    width: 100%;\n    input {\n      // Hack: dodge the floating X icon\n      padding-right: 2.5em;\n      width: 100%;\n    }\n  }\n\n  .delete-option {\n    // Hack: Move the icon over the input box\n    width: 1.5em;\n    margin-left: -1.5em;\n    z-index: 1;\n  }\n\n  .poll-type-expiry {\n    margin-top: 0.5em;\n    display: flex;\n    width: 100%;\n  }\n\n  .poll-type {\n    margin-right: 0.75em;\n    flex: 1 1 60%;\n\n    .poll-type-select {\n      padding-right: 0.75em;\n    }\n  }\n\n  .poll-expiry {\n    display: flex;\n\n    .expiry-amount {\n      width: 3em;\n      text-align: right;\n    }\n  }\n}\n</style>\n","import * as DateUtils from 'src/services/date_utils/date_utils.js'\nimport { uniq } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport Select from '../select/select.vue'\nimport {\n  faTimes,\n  faPlus\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes,\n  faPlus\n)\n\nexport default {\n  components: {\n    Select\n  },\n  name: 'PollForm',\n  props: ['visible'],\n  data: () => ({\n    pollType: 'single',\n    options: ['', ''],\n    expiryAmount: 10,\n    expiryUnit: 'minutes'\n  }),\n  computed: {\n    pollLimits () {\n      return this.$store.state.instance.pollLimits\n    },\n    maxOptions () {\n      return this.pollLimits.max_options\n    },\n    maxLength () {\n      return this.pollLimits.max_option_chars\n    },\n    expiryUnits () {\n      const allUnits = ['minutes', 'hours', 'days']\n      const expiry = this.convertExpiryFromUnit\n      return allUnits.filter(\n        unit => this.pollLimits.max_expiration >= expiry(unit, 1)\n      )\n    },\n    minExpirationInCurrentUnit () {\n      return Math.ceil(\n        this.convertExpiryToUnit(\n          this.expiryUnit,\n          this.pollLimits.min_expiration\n        )\n      )\n    },\n    maxExpirationInCurrentUnit () {\n      return Math.floor(\n        this.convertExpiryToUnit(\n          this.expiryUnit,\n          this.pollLimits.max_expiration\n        )\n      )\n    }\n  },\n  methods: {\n    clear () {\n      this.pollType = 'single'\n      this.options = ['', '']\n      this.expiryAmount = 10\n      this.expiryUnit = 'minutes'\n    },\n    nextOption (index) {\n      const element = this.$el.querySelector(`#poll-${index + 1}`)\n      if (element) {\n        element.focus()\n      } else {\n        // Try adding an option and try focusing on it\n        const addedOption = this.addOption()\n        if (addedOption) {\n          this.$nextTick(function () {\n            this.nextOption(index)\n          })\n        }\n      }\n    },\n    addOption () {\n      if (this.options.length < this.maxOptions) {\n        this.options.push('')\n        return true\n      }\n      return false\n    },\n    deleteOption (index, event) {\n      if (this.options.length > 2) {\n        this.options.splice(index, 1)\n        this.updatePollToParent()\n      }\n    },\n    convertExpiryToUnit (unit, amount) {\n      // Note: we want seconds and not milliseconds\n      switch (unit) {\n        case 'minutes': return (1000 * amount) / DateUtils.MINUTE\n        case 'hours': return (1000 * amount) / DateUtils.HOUR\n        case 'days': return (1000 * amount) / DateUtils.DAY\n      }\n    },\n    convertExpiryFromUnit (unit, amount) {\n      // Note: we want seconds and not milliseconds\n      switch (unit) {\n        case 'minutes': return 0.001 * amount * DateUtils.MINUTE\n        case 'hours': return 0.001 * amount * DateUtils.HOUR\n        case 'days': return 0.001 * amount * DateUtils.DAY\n      }\n    },\n    expiryAmountChange () {\n      this.expiryAmount =\n        Math.max(this.minExpirationInCurrentUnit, this.expiryAmount)\n      this.expiryAmount =\n        Math.min(this.maxExpirationInCurrentUnit, this.expiryAmount)\n      this.updatePollToParent()\n    },\n    updatePollToParent () {\n      const expiresIn = this.convertExpiryFromUnit(\n        this.expiryUnit,\n        this.expiryAmount\n      )\n\n      const options = uniq(this.options.filter(option => option !== ''))\n      if (options.length < 2) {\n        this.$emit('update-poll', { error: this.$t('polls.not_enough_options') })\n        return\n      }\n      this.$emit('update-poll', {\n        options,\n        multiple: this.pollType === 'multiple',\n        expiresIn\n      })\n    }\n  }\n}\n","import { render } from \"./poll_form.vue?vue&type=template&id=21f5ba7b\"\nimport script from \"./poll_form.js?vue&type=script&lang=js\"\nexport * from \"./poll_form.js?vue&type=script&lang=js\"\n\nimport \"./poll_form.vue?vue&type=style&index=0&id=21f5ba7b&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import statusPoster from '../../services/status_poster/status_poster.service.js'\nimport MediaUpload from '../media_upload/media_upload.vue'\nimport ScopeSelector from '../scope_selector/scope_selector.vue'\nimport EmojiInput from '../emoji_input/emoji_input.vue'\nimport PollForm from '../poll/poll_form.vue'\nimport Attachment from '../attachment/attachment.vue'\nimport Gallery from 'src/components/gallery/gallery.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { findOffset } from '../../services/offset_finder/offset_finder.service.js'\nimport { reject, map, uniqBy, debounce } from 'lodash'\nimport suggestor from '../emoji_input/suggestor.js'\nimport { mapGetters, mapState } from 'vuex'\nimport Checkbox from '../checkbox/checkbox.vue'\nimport Select from '../select/select.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faSmileBeam,\n  faPollH,\n  faUpload,\n  faBan,\n  faTimes,\n  faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faSmileBeam,\n  faPollH,\n  faUpload,\n  faBan,\n  faTimes,\n  faCircleNotch\n)\n\nconst buildMentionsString = ({ user, attentions = [] }, currentUser) => {\n  let allAttentions = [...attentions]\n\n  allAttentions.unshift(user)\n\n  allAttentions = uniqBy(allAttentions, 'id')\n  allAttentions = reject(allAttentions, { id: currentUser.id })\n\n  let mentions = map(allAttentions, (attention) => {\n    return `@${attention.screen_name}`\n  })\n\n  return mentions.length > 0 ? mentions.join(' ') + ' ' : ''\n}\n\n// Converts a string with px to a number like '2px' -> 2\nconst pxStringToNumber = (str) => {\n  return Number(str.substring(0, str.length - 2))\n}\n\nconst PostStatusForm = {\n  props: [\n    'replyTo',\n    'repliedUser',\n    'attentions',\n    'copyMessageScope',\n    'subject',\n    'disableSubject',\n    'disableScopeSelector',\n    'disableNotice',\n    'disableLockWarning',\n    'disablePolls',\n    'disableSensitivityCheckbox',\n    'disableSubmit',\n    'disablePreview',\n    'placeholder',\n    'maxHeight',\n    'postHandler',\n    'preserveFocus',\n    'autoFocus',\n    'fileLimit',\n    'submitOnEnter',\n    'emojiPickerPlacement',\n    'optimisticPosting'\n  ],\n  emits: [\n    'posted',\n    'resize',\n    'mediaplay',\n    'mediapause'\n  ],\n  components: {\n    MediaUpload,\n    EmojiInput,\n    PollForm,\n    ScopeSelector,\n    Checkbox,\n    Select,\n    Attachment,\n    StatusContent,\n    Gallery\n  },\n  mounted () {\n    this.updateIdempotencyKey()\n    this.resize(this.$refs.textarea)\n\n    if (this.replyTo) {\n      const textLength = this.$refs.textarea.value.length\n      this.$refs.textarea.setSelectionRange(textLength, textLength)\n    }\n\n    if (this.replyTo || this.autoFocus) {\n      this.$refs.textarea.focus()\n    }\n  },\n  data () {\n    const preset = this.$route.query.message\n    let statusText = preset || ''\n\n    const { scopeCopy } = this.$store.getters.mergedConfig\n\n    if (this.replyTo) {\n      const currentUser = this.$store.state.users.currentUser\n      statusText = buildMentionsString({ user: this.repliedUser, attentions: this.attentions }, currentUser)\n    }\n\n    const scope = ((this.copyMessageScope && scopeCopy) || this.copyMessageScope === 'direct')\n      ? this.copyMessageScope\n      : this.$store.state.users.currentUser.default_scope\n\n    const { postContentType: contentType, sensitiveByDefault, sensitiveIfSubject } = this.$store.getters.mergedConfig\n\n    return {\n      dropFiles: [],\n      uploadingFiles: false,\n      error: null,\n      posting: false,\n      highlighted: 0,\n      newStatus: {\n        spoilerText: this.subject || '',\n        status: statusText,\n        sensitiveIfSubject,\n        nsfw: !!sensitiveByDefault,\n        files: [],\n        poll: {},\n        mediaDescriptions: {},\n        visibility: scope,\n        contentType\n      },\n      caret: 0,\n      pollFormVisible: false,\n      showDropIcon: 'hide',\n      dropStopTimeout: null,\n      preview: null,\n      previewLoading: false,\n      emojiInputShown: false,\n      idempotencyKey: ''\n    }\n  },\n  computed: {\n    users () {\n      return this.$store.state.users.users\n    },\n    userDefaultScope () {\n      return this.$store.state.users.currentUser.default_scope\n    },\n    showAllScopes () {\n      return !this.mergedConfig.minimalScopesMode\n    },\n    emojiUserSuggestor () {\n      return suggestor({\n        emoji: [\n          ...this.$store.state.instance.emoji,\n          ...this.$store.state.instance.customEmoji\n        ],\n        store: this.$store\n      })\n    },\n    emojiSuggestor () {\n      return suggestor({\n        emoji: [\n          ...this.$store.state.instance.emoji,\n          ...this.$store.state.instance.customEmoji\n        ]\n      })\n    },\n    emoji () {\n      return this.$store.state.instance.emoji || []\n    },\n    customEmoji () {\n      return this.$store.state.instance.customEmoji || []\n    },\n    statusLength () {\n      return this.newStatus.status.length\n    },\n    spoilerTextLength () {\n      return this.newStatus.spoilerText.length\n    },\n    statusLengthLimit () {\n      return this.$store.state.instance.textlimit\n    },\n    hasStatusLengthLimit () {\n      return this.statusLengthLimit > 0\n    },\n    charactersLeft () {\n      return this.statusLengthLimit - (this.statusLength + this.spoilerTextLength)\n    },\n    isOverLengthLimit () {\n      return this.hasStatusLengthLimit && (this.charactersLeft < 0)\n    },\n    minimalScopesMode () {\n      return this.$store.state.instance.minimalScopesMode\n    },\n    alwaysShowSubject () {\n      return this.mergedConfig.alwaysShowSubjectInput\n    },\n    postFormats () {\n      return this.$store.state.instance.postFormats || []\n    },\n    safeDMEnabled () {\n      return this.$store.state.instance.safeDM\n    },\n    pollsAvailable () {\n      return this.$store.state.instance.pollsAvailable &&\n        this.$store.state.instance.pollLimits.max_options >= 2 &&\n        this.disablePolls !== true\n    },\n    hideScopeNotice () {\n      return this.disableNotice || this.$store.getters.mergedConfig.hideScopeNotice\n    },\n    pollContentError () {\n      return this.pollFormVisible &&\n        this.newStatus.poll &&\n        this.newStatus.poll.error\n    },\n    showPreview () {\n      return !this.disablePreview && (!!this.preview || this.previewLoading)\n    },\n    emptyStatus () {\n      return this.newStatus.status.trim() === '' && this.newStatus.files.length === 0\n    },\n    uploadFileLimitReached () {\n      return this.newStatus.files.length >= this.fileLimit\n    },\n    ...mapGetters(['mergedConfig']),\n    ...mapState({\n      mobileLayout: state => state.interface.mobileLayout\n    })\n  },\n  watch: {\n    'newStatus': {\n      deep: true,\n      handler () {\n        this.statusChanged()\n      }\n    }\n  },\n  methods: {\n    statusChanged () {\n      this.autoPreview()\n      this.updateIdempotencyKey()\n    },\n    clearStatus () {\n      const newStatus = this.newStatus\n      this.newStatus = {\n        status: '',\n        spoilerText: '',\n        files: [],\n        visibility: newStatus.visibility,\n        contentType: newStatus.contentType,\n        poll: {},\n        mediaDescriptions: {}\n      }\n      this.pollFormVisible = false\n      this.$refs.mediaUpload && this.$refs.mediaUpload.clearFile()\n      this.clearPollForm()\n      if (this.preserveFocus) {\n        this.$nextTick(() => {\n          this.$refs.textarea.focus()\n        })\n      }\n      let el = this.$el.querySelector('textarea')\n      el.style.height = 'auto'\n      el.style.height = undefined\n      this.error = null\n      if (this.preview) this.previewStatus()\n    },\n    async postStatus (event, newStatus, opts = {}) {\n      const { sensitiveIfSubject } = this.$store.getters.mergedConfig\n\n      if (this.posting && !this.optimisticPosting) { return }\n      if (this.disableSubmit) { return }\n      if (this.emojiInputShown) { return }\n      if (this.submitOnEnter) {\n        event.stopPropagation()\n        event.preventDefault()\n      }\n\n      if (this.optimisticPosting && (this.emptyStatus || this.isOverLengthLimit)) { return }\n\n      if (this.emptyStatus) {\n        this.error = this.$t('post_status.empty_status_error')\n        return\n      }\n\n      const poll = this.pollFormVisible ? this.newStatus.poll : {}\n      if (this.pollContentError) {\n        this.error = this.pollContentError\n        return\n      }\n\n      this.posting = true\n\n      try {\n        await this.setAllMediaDescriptions()\n      } catch (e) {\n        this.error = this.$t('post_status.media_description_error')\n        this.posting = false\n        return\n      }\n\n      const postingOptions = {\n        status: newStatus.status,\n        spoilerText: newStatus.spoilerText || null,\n        visibility: newStatus.visibility,\n        sensitive: (newStatus.nsfw || (sensitiveIfSubject && newStatus.spoilerText)),\n        media: newStatus.files,\n        store: this.$store,\n        inReplyToStatusId: this.replyTo,\n        contentType: newStatus.contentType,\n        poll,\n        idempotencyKey: this.idempotencyKey\n      }\n\n      const postHandler = this.postHandler ? this.postHandler : statusPoster.postStatus\n\n      postHandler(postingOptions).then((data) => {\n        if (!data.error) {\n          this.clearStatus()\n          this.$emit('posted', data)\n        } else {\n          this.error = data.error\n        }\n        this.posting = false\n      })\n    },\n    previewStatus () {\n      if (this.emptyStatus && this.newStatus.spoilerText.trim() === '') {\n        this.preview = { error: this.$t('post_status.preview_empty') }\n        this.previewLoading = false\n        return\n      }\n      const newStatus = this.newStatus\n      this.previewLoading = true\n      statusPoster.postStatus({\n        status: newStatus.status,\n        spoilerText: newStatus.spoilerText || null,\n        visibility: newStatus.visibility,\n        sensitive: newStatus.nsfw,\n        media: [],\n        store: this.$store,\n        inReplyToStatusId: this.replyTo,\n        contentType: newStatus.contentType,\n        poll: {},\n        preview: true\n      }).then((data) => {\n        // Don't apply preview if not loading, because it means\n        // user has closed the preview manually.\n        if (!this.previewLoading) return\n        if (!data.error) {\n          this.preview = data\n        } else {\n          this.preview = { error: data.error }\n        }\n      }).catch((error) => {\n        this.preview = { error }\n      }).finally(() => {\n        this.previewLoading = false\n      })\n    },\n    debouncePreviewStatus: debounce(function () { this.previewStatus() }, 500),\n    autoPreview () {\n      if (!this.preview) return\n      this.previewLoading = true\n      this.debouncePreviewStatus()\n    },\n    closePreview () {\n      this.preview = null\n      this.previewLoading = false\n    },\n    togglePreview () {\n      if (this.showPreview) {\n        this.closePreview()\n      } else {\n        this.previewStatus()\n      }\n    },\n    addMediaFile (fileInfo) {\n      this.newStatus.files.push(fileInfo)\n      this.$emit('resize', { delayed: true })\n    },\n    removeMediaFile (fileInfo) {\n      let index = this.newStatus.files.indexOf(fileInfo)\n      this.newStatus.files.splice(index, 1)\n      this.$emit('resize')\n    },\n    editAttachment (fileInfo, newText) {\n      this.newStatus.mediaDescriptions[fileInfo.id] = newText\n    },\n    shiftUpMediaFile (fileInfo) {\n      const { files } = this.newStatus\n      const index = this.newStatus.files.indexOf(fileInfo)\n      files.splice(index, 1)\n      files.splice(index - 1, 0, fileInfo)\n    },\n    shiftDnMediaFile (fileInfo) {\n      const { files } = this.newStatus\n      const index = this.newStatus.files.indexOf(fileInfo)\n      files.splice(index, 1)\n      files.splice(index + 1, 0, fileInfo)\n    },\n    uploadFailed (errString, templateArgs) {\n      templateArgs = templateArgs || {}\n      this.error = this.$t('upload.error.base') + ' ' + this.$t('upload.error.' + errString, templateArgs)\n    },\n    startedUploadingFiles () {\n      this.uploadingFiles = true\n    },\n    finishedUploadingFiles () {\n      this.$emit('resize')\n      this.uploadingFiles = false\n    },\n    type (fileInfo) {\n      return fileTypeService.fileType(fileInfo.mimetype)\n    },\n    paste (e) {\n      this.autoPreview()\n      this.resize(e)\n      if (e.clipboardData.files.length > 0) {\n        // prevent pasting of file as text\n        e.preventDefault()\n        // Strangely, files property gets emptied after event propagation\n        // Trying to wrap it in array doesn't work. Plus I doubt it's possible\n        // to hold more than one file in clipboard.\n        this.dropFiles = [e.clipboardData.files[0]]\n      }\n    },\n    fileDrop (e) {\n      if (e.dataTransfer && e.dataTransfer.types.includes('Files')) {\n        e.preventDefault() // allow dropping text like before\n        this.dropFiles = e.dataTransfer.files\n        clearTimeout(this.dropStopTimeout)\n        this.showDropIcon = 'hide'\n      }\n    },\n    fileDragStop (e) {\n      // The false-setting is done with delay because just using leave-events\n      // directly caused unwanted flickering, this is not perfect either but\n      // much less noticable.\n      clearTimeout(this.dropStopTimeout)\n      this.showDropIcon = 'fade'\n      this.dropStopTimeout = setTimeout(() => (this.showDropIcon = 'hide'), 500)\n    },\n    fileDrag (e) {\n      e.dataTransfer.dropEffect = this.uploadFileLimitReached ? 'none' : 'copy'\n      if (e.dataTransfer && e.dataTransfer.types.includes('Files')) {\n        clearTimeout(this.dropStopTimeout)\n        this.showDropIcon = 'show'\n      }\n    },\n    onEmojiInputInput (e) {\n      this.$nextTick(() => {\n        this.resize(this.$refs['textarea'])\n      })\n    },\n    resize (e) {\n      const target = e.target || e\n      if (!(target instanceof window.Element)) { return }\n\n      // Reset to default height for empty form, nothing else to do here.\n      if (target.value === '') {\n        target.style.height = null\n        this.$emit('resize')\n        this.$refs['emoji-input'].resize()\n        return\n      }\n\n      const formRef = this.$refs['form']\n      const bottomRef = this.$refs['bottom']\n      /* Scroller is either `window` (replies in TL), sidebar (main post form,\n       * replies in notifs) or mobile post form. Note that getting and setting\n       * scroll is different for `Window` and `Element`s\n       */\n      const bottomBottomPaddingStr = window.getComputedStyle(bottomRef)['padding-bottom']\n      const bottomBottomPadding = pxStringToNumber(bottomBottomPaddingStr)\n\n      const scrollerRef = this.$el.closest('.column.-scrollable') ||\n            this.$el.closest('.post-form-modal-view') ||\n            window\n\n      // Getting info about padding we have to account for, removing 'px' part\n      const topPaddingStr = window.getComputedStyle(target)['padding-top']\n      const bottomPaddingStr = window.getComputedStyle(target)['padding-bottom']\n      const topPadding = pxStringToNumber(topPaddingStr)\n      const bottomPadding = pxStringToNumber(bottomPaddingStr)\n      const vertPadding = topPadding + bottomPadding\n\n      const oldHeight = pxStringToNumber(target.style.height)\n\n      /* Explanation:\n       *\n       * https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight\n       * scrollHeight returns element's scrollable content height, i.e. visible\n       * element + overscrolled parts of it. We use it to determine when text\n       * inside the textarea exceeded its height, so we can set height to prevent\n       * overscroll, i.e. make textarea grow with the text. HOWEVER, since we\n       * explicitly set new height, scrollHeight won't go below that, so we can't\n       * SHRINK the textarea when there's extra space. To workaround that we set\n       * height to 'auto' which makes textarea tiny again, so that scrollHeight\n       * will match text height again. HOWEVER, shrinking textarea can screw with\n       * the scroll since there might be not enough padding around form-bottom to even\n       * warrant a scroll, so it will jump to 0 and refuse to move anywhere,\n       * so we check current scroll position before shrinking and then restore it\n       * with needed delta.\n       */\n\n      // this part has to be BEFORE the content size update\n      const currentScroll = scrollerRef === window\n        ? scrollerRef.scrollY\n        : scrollerRef.scrollTop\n      const scrollerHeight = scrollerRef === window\n        ? scrollerRef.innerHeight\n        : scrollerRef.offsetHeight\n      const scrollerBottomBorder = currentScroll + scrollerHeight\n\n      // BEGIN content size update\n      target.style.height = 'auto'\n      const heightWithoutPadding = Math.floor(target.scrollHeight - vertPadding)\n      let newHeight = this.maxHeight ? Math.min(heightWithoutPadding, this.maxHeight) : heightWithoutPadding\n      // This is a bit of a hack to combat target.scrollHeight being different on every other input\n      // on some browsers for whatever reason. Don't change the height if difference is 1px or less.\n      if (Math.abs(newHeight - oldHeight) <= 1) {\n        newHeight = oldHeight\n      }\n      target.style.height = `${newHeight}px`\n      this.$emit('resize', newHeight)\n      // END content size update\n\n      // We check where the bottom border of form-bottom element is, this uses findOffset\n      // to find offset relative to scrollable container (scroller)\n      const bottomBottomBorder = bottomRef.offsetHeight + findOffset(bottomRef, scrollerRef).top + bottomBottomPadding\n\n      const isBottomObstructed = scrollerBottomBorder < bottomBottomBorder\n      const isFormBiggerThanScroller = scrollerHeight < formRef.offsetHeight\n      const bottomChangeDelta = bottomBottomBorder - scrollerBottomBorder\n      // The intention is basically this;\n      // Keep form-bottom always visible so that submit button is in view EXCEPT\n      // if form element bigger than scroller and caret isn't at the end, so that\n      // if you scroll up and edit middle of text you won't get scrolled back to bottom\n      const shouldScrollToBottom = isBottomObstructed &&\n            !(isFormBiggerThanScroller &&\n              this.$refs.textarea.selectionStart !== this.$refs.textarea.value.length)\n      const totalDelta = shouldScrollToBottom ? bottomChangeDelta : 0\n      const targetScroll = Math.round(currentScroll + totalDelta)\n\n      if (scrollerRef === window) {\n        scrollerRef.scroll(0, targetScroll)\n      } else {\n        scrollerRef.scrollTop = targetScroll\n      }\n\n      this.$refs['emoji-input'].resize()\n    },\n    showEmojiPicker () {\n      this.$refs['textarea'].focus()\n      this.$refs['emoji-input'].triggerShowPicker()\n    },\n    clearError () {\n      this.error = null\n    },\n    changeVis (visibility) {\n      this.newStatus.visibility = visibility\n    },\n    togglePollForm () {\n      this.pollFormVisible = !this.pollFormVisible\n    },\n    setPoll (poll) {\n      this.newStatus.poll = poll\n    },\n    clearPollForm () {\n      if (this.$refs.pollForm) {\n        this.$refs.pollForm.clear()\n      }\n    },\n    dismissScopeNotice () {\n      this.$store.dispatch('setOption', { name: 'hideScopeNotice', value: true })\n    },\n    setMediaDescription (id) {\n      const description = this.newStatus.mediaDescriptions[id]\n      if (!description || description.trim() === '') return\n      return statusPoster.setMediaDescription({ store: this.$store, id, description })\n    },\n    setAllMediaDescriptions () {\n      const ids = this.newStatus.files.map(file => file.id)\n      return Promise.all(ids.map(id => this.setMediaDescription(id)))\n    },\n    handleEmojiInputShow (value) {\n      this.emojiInputShown = value\n    },\n    updateIdempotencyKey () {\n      this.idempotencyKey = Date.now().toString()\n    },\n    openProfileTab () {\n      this.$store.dispatch('openSettingsModalTab', 'profile')\n    }\n  }\n}\n\nexport default PostStatusForm\n","import { render } from \"./post_status_form.vue?vue&type=template&id=ae252da2\"\nimport script from \"./post_status_form.js?vue&type=script&lang=js\"\nexport * from \"./post_status_form.js?vue&type=script&lang=js\"\n\nimport \"./post_status_form.vue?vue&type=style&index=0&id=ae252da2&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <button\n    v-if=\"usePlaceholder\"\n    class=\"Attachment -placeholder button-unstyled\"\n    :class=\"classNames\"\n    @click=\"openModal\"\n  >\n    <a\n      v-if=\"type !== 'html'\"\n      class=\"placeholder\"\n      target=\"_blank\"\n      :href=\"attachment.url\"\n      :alt=\"attachment.description\"\n      :title=\"attachment.description\"\n      @click.prevent\n    >\n      <FAIcon :icon=\"placeholderIconClass\" />\n      <b>{{ nsfw ? \"NSFW / \" : \"\" }}</b>{{ edit ? '' : placeholderName }}\n    </a>\n    <div\n      v-if=\"edit || remove\"\n      class=\"attachment-buttons\"\n    >\n      <button\n        v-if=\"remove\"\n        class=\"button-unstyled attachment-button\"\n        @click.prevent=\"onRemove\"\n      >\n        <FAIcon icon=\"trash-alt\" />\n      </button>\n    </div>\n    <div\n      v-if=\"size !== 'hide' && !hideDescription && (edit || localDescription || showDescription)\"\n      class=\"description-container\"\n      :class=\"{ '-static': !edit }\"\n    >\n      <input\n        v-if=\"edit\"\n        v-model=\"localDescription\"\n        type=\"text\"\n        class=\"description-field\"\n        :placeholder=\"$t('post_status.media_description')\"\n        @keydown.enter.prevent=\"\"\n      >\n      <p v-else>\n        {{ localDescription }}\n      </p>\n    </div>\n  </button>\n  <div\n    v-else\n    class=\"Attachment\"\n    :class=\"classNames\"\n  >\n    <div\n      v-show=\"!isEmpty\"\n      class=\"attachment-wrapper\"\n    >\n      <a\n        v-if=\"hidden\"\n        class=\"image-container\"\n        :href=\"attachment.url\"\n        :alt=\"attachment.description\"\n        :title=\"attachment.description\"\n        @click.prevent.stop=\"toggleHidden\"\n      >\n        <img\n          :key=\"nsfwImage\"\n          class=\"nsfw\"\n          :src=\"nsfwImage\"\n        >\n        <FAIcon\n          v-if=\"type === 'video'\"\n          class=\"play-icon\"\n          icon=\"play-circle\"\n        />\n      </a>\n      <div\n        v-if=\"!hidden\"\n        class=\"attachment-buttons\"\n      >\n        <button\n          v-if=\"type === 'flash' && flashLoaded\"\n          class=\"button-unstyled attachment-button\"\n          :title=\"$t('status.attachment_stop_flash')\"\n          @click.prevent=\"stopFlash\"\n        >\n          <FAIcon icon=\"stop\" />\n        </button>\n        <button\n          v-if=\"attachment.description && size !== 'small' && !edit && type !== 'unknown'\"\n          class=\"button-unstyled attachment-button\"\n          :title=\"$t('status.show_attachment_description')\"\n          @click.prevent=\"toggleDescription\"\n        >\n          <FAIcon icon=\"align-right\" />\n        </button>\n        <button\n          v-if=\"!useModal && type !== 'unknown'\"\n          class=\"button-unstyled attachment-button\"\n          :title=\"$t('status.show_attachment_in_modal')\"\n          @click.prevent=\"openModalForce\"\n        >\n          <FAIcon icon=\"search-plus\" />\n        </button>\n        <button\n          v-if=\"nsfw && hideNsfwLocal\"\n          class=\"button-unstyled attachment-button\"\n          :title=\"$t('status.hide_attachment')\"\n          @click.prevent=\"toggleHidden\"\n        >\n          <FAIcon icon=\"times\" />\n        </button>\n        <button\n          v-if=\"shiftUp\"\n          class=\"button-unstyled attachment-button\"\n          :title=\"$t('status.move_up')\"\n          @click.prevent=\"onShiftUp\"\n        >\n          <FAIcon icon=\"chevron-left\" />\n        </button>\n        <button\n          v-if=\"shiftDn\"\n          class=\"button-unstyled attachment-button\"\n          :title=\"$t('status.move_down')\"\n          @click.prevent=\"onShiftDn\"\n        >\n          <FAIcon icon=\"chevron-right\" />\n        </button>\n        <button\n          v-if=\"remove\"\n          class=\"button-unstyled attachment-button\"\n          :title=\"$t('status.remove_attachment')\"\n          @click.prevent=\"onRemove\"\n        >\n          <FAIcon icon=\"trash-alt\" />\n        </button>\n      </div>\n\n      <a\n        v-if=\"type === 'image' && (!hidden || preloadImage)\"\n        class=\"image-container\"\n        :class=\"{'-hidden': hidden && preloadImage }\"\n        :href=\"attachment.url\"\n        target=\"_blank\"\n        @click.stop.prevent=\"openModal\"\n      >\n        <StillImage\n          class=\"image\"\n          :referrerpolicy=\"referrerpolicy\"\n          :mimetype=\"attachment.mimetype\"\n          :src=\"attachment.large_thumb_url || attachment.url\"\n          :image-load-handler=\"onImageLoad\"\n          :alt=\"attachment.description\"\n        />\n      </a>\n\n      <a\n        v-if=\"type === 'unknown' && !hidden\"\n        class=\"placeholder-container\"\n        :href=\"attachment.url\"\n        target=\"_blank\"\n      >\n        <FAIcon\n          size=\"5x\"\n          :icon=\"placeholderIconClass\"\n        />\n        <p>\n          {{ localDescription }}\n        </p>\n      </a>\n\n      <component\n        :is=\"videoTag\"\n        v-if=\"type === 'video' && !hidden\"\n        class=\"video-container\"\n        :class=\"{ 'button-unstyled': 'isModal' }\"\n        :href=\"attachment.url\"\n        @click.stop.prevent=\"openModal\"\n      >\n        <VideoAttachment\n          class=\"video\"\n          :attachment=\"attachment\"\n          :controls=\"!useModal\"\n          @play=\"$emit('play')\"\n          @pause=\"$emit('pause')\"\n        />\n        <FAIcon\n          v-if=\"useModal\"\n          class=\"play-icon\"\n          icon=\"play-circle\"\n        />\n      </component>\n\n      <span\n        v-if=\"type === 'audio' && !hidden\"\n        class=\"audio-container\"\n        :href=\"attachment.url\"\n        @click.stop.prevent=\"openModal\"\n      >\n        <audio\n          v-if=\"type === 'audio'\"\n          :src=\"attachment.url\"\n          :alt=\"attachment.description\"\n          :title=\"attachment.description\"\n          controls\n          @play=\"$emit('play')\"\n          @pause=\"$emit('pause')\"\n        />\n      </span>\n\n      <div\n        v-if=\"type === 'html' && attachment.oembed\"\n        class=\"oembed-container\"\n        @click.prevent=\"linkClicked\"\n      >\n        <div\n          v-if=\"attachment.thumb_url\"\n          class=\"image\"\n        >\n          <img :src=\"attachment.thumb_url\">\n        </div>\n        <div class=\"text\">\n          <!-- eslint-disable vue/no-v-html -->\n          <h1><a :href=\"attachment.url\">{{ attachment.oembed.title }}</a></h1>\n          <div v-html=\"attachment.oembed.oembedHTML\" />\n          <!-- eslint-enable vue/no-v-html -->\n        </div>\n      </div>\n\n      <span\n        v-if=\"type === 'flash' && !hidden\"\n        class=\"flash-container\"\n        :href=\"attachment.url\"\n        @click.stop.prevent=\"openModal\"\n      >\n        <Flash\n          ref=\"flash\"\n          class=\"flash\"\n          :src=\"attachment.large_thumb_url || attachment.url\"\n          @playerOpened=\"setFlashLoaded(true)\"\n          @playerClosed=\"setFlashLoaded(false)\"\n        />\n      </span>\n    </div>\n    <div\n      v-if=\"size !== 'hide' && !hideDescription && (edit || (localDescription && showDescription))\"\n      class=\"description-container\"\n      :class=\"{ '-static': !edit }\"\n    >\n      <input\n        v-if=\"edit\"\n        v-model=\"localDescription\"\n        type=\"text\"\n        class=\"description-field\"\n        :placeholder=\"$t('post_status.media_description')\"\n        @keydown.enter.prevent=\"\"\n      >\n      <p v-else>\n        {{ localDescription }}\n      </p>\n    </div>\n  </div>\n</template>\n\n<script src=\"./attachment.js\"></script>\n\n<style src=\"./attachment.scss\" lang=\"scss\"></style>\n","import StillImage from '../still-image/still-image.vue'\nimport Flash from '../flash/flash.vue'\nimport VideoAttachment from '../video_attachment/video_attachment.vue'\nimport nsfwImage from '../../assets/nsfw.png'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faFile,\n  faMusic,\n  faImage,\n  faVideo,\n  faPlayCircle,\n  faTimes,\n  faStop,\n  faSearchPlus,\n  faTrashAlt,\n  faPencilAlt,\n  faAlignRight\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faFile,\n  faMusic,\n  faImage,\n  faVideo,\n  faPlayCircle,\n  faTimes,\n  faStop,\n  faSearchPlus,\n  faTrashAlt,\n  faPencilAlt,\n  faAlignRight\n)\n\nconst Attachment = {\n  props: [\n    'attachment',\n    'description',\n    'hideDescription',\n    'nsfw',\n    'size',\n    'setMedia',\n    'remove',\n    'shiftUp',\n    'shiftDn',\n    'edit'\n  ],\n  data () {\n    return {\n      localDescription: this.description || this.attachment.description,\n      nsfwImage: this.$store.state.instance.nsfwCensorImage || nsfwImage,\n      hideNsfwLocal: this.$store.getters.mergedConfig.hideNsfw,\n      preloadImage: this.$store.getters.mergedConfig.preloadImage,\n      loading: false,\n      img: fileTypeService.fileType(this.attachment.mimetype) === 'image' && document.createElement('img'),\n      modalOpen: false,\n      showHidden: false,\n      flashLoaded: false,\n      showDescription: false\n    }\n  },\n  components: {\n    Flash,\n    StillImage,\n    VideoAttachment\n  },\n  computed: {\n    classNames () {\n      return [\n        {\n          '-loading': this.loading,\n          '-nsfw-placeholder': this.hidden,\n          '-editable': this.edit !== undefined\n        },\n        '-type-' + this.type,\n        this.size && '-size-' + this.size,\n        `-${this.useContainFit ? 'contain' : 'cover'}-fit`\n      ]\n    },\n    usePlaceholder () {\n      return this.size === 'hide'\n    },\n    useContainFit () {\n      return this.$store.getters.mergedConfig.useContainFit\n    },\n    placeholderName () {\n      if (this.attachment.description === '' || !this.attachment.description) {\n        return this.type.toUpperCase()\n      }\n      return this.attachment.description\n    },\n    placeholderIconClass () {\n      if (this.type === 'image') return 'image'\n      if (this.type === 'video') return 'video'\n      if (this.type === 'audio') return 'music'\n      return 'file'\n    },\n    referrerpolicy () {\n      return this.$store.state.instance.mediaProxyAvailable ? '' : 'no-referrer'\n    },\n    type () {\n      return fileTypeService.fileType(this.attachment.mimetype)\n    },\n    hidden () {\n      return this.nsfw && this.hideNsfwLocal && !this.showHidden\n    },\n    isEmpty () {\n      return (this.type === 'html' && !this.attachment.oembed)\n    },\n    useModal () {\n      let modalTypes = []\n      switch (this.size) {\n        case 'hide':\n        case 'small':\n          modalTypes = ['image', 'video', 'audio', 'flash']\n          break\n        default:\n          modalTypes = this.mergedConfig.playVideosInModal\n            ? ['image', 'video', 'flash']\n            : ['image']\n          break\n      }\n      return modalTypes.includes(this.type)\n    },\n    videoTag () {\n      return this.useModal ? 'button' : 'span'\n    },\n    ...mapGetters(['mergedConfig'])\n  },\n  watch: {\n    localDescription (newVal) {\n      this.onEdit(newVal)\n    }\n  },\n  methods: {\n    linkClicked ({ target }) {\n      if (target.tagName === 'A') {\n        window.open(target.href, '_blank')\n      }\n    },\n    openModal (event) {\n      if (this.useModal) {\n        this.$emit('setMedia')\n        this.$store.dispatch('setCurrentMedia', this.attachment)\n      } else if (this.type === 'unknown') {\n        window.open(this.attachment.url)\n      }\n    },\n    openModalForce (event) {\n      this.$emit('setMedia')\n      this.$store.dispatch('setCurrentMedia', this.attachment)\n    },\n    onEdit (event) {\n      this.edit && this.edit(this.attachment, event)\n    },\n    onRemove () {\n      this.remove && this.remove(this.attachment)\n    },\n    onShiftUp () {\n      this.shiftUp && this.shiftUp(this.attachment)\n    },\n    onShiftDn () {\n      this.shiftDn && this.shiftDn(this.attachment)\n    },\n    stopFlash () {\n      this.$refs.flash.closePlayer()\n    },\n    setFlashLoaded (event) {\n      this.flashLoaded = event\n    },\n    toggleDescription () {\n      this.showDescription = !this.showDescription\n    },\n    toggleHidden (event) {\n      if (\n        (this.mergedConfig.useOneClickNsfw && !this.showHidden) &&\n        (this.type !== 'video' || this.mergedConfig.playVideosInModal)\n      ) {\n        this.openModal(event)\n        return\n      }\n      if (this.img && !this.preloadImage) {\n        if (this.img.onload) {\n          this.img.onload()\n        } else {\n          this.loading = true\n          this.img.src = this.attachment.url\n          this.img.onload = () => {\n            this.loading = false\n            this.showHidden = !this.showHidden\n          }\n        }\n      } else {\n        this.showHidden = !this.showHidden\n      }\n    },\n    onImageLoad (image) {\n      const width = image.naturalWidth\n      const height = image.naturalHeight\n      this.$emit('naturalSizeLoad', { id: this.attachment.id, width, height })\n    }\n  }\n}\n\nexport default Attachment\n","import { render } from \"./attachment.vue?vue&type=template&id=1177e21f\"\nimport script from \"./attachment.js?vue&type=script&lang=js\"\nexport * from \"./attachment.js?vue&type=script&lang=js\"\n\nimport \"./attachment.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <time\n    :datetime=\"time\"\n    :title=\"localeDateString\"\n  >\n    {{ $t(relativeTime.key, [relativeTime.num]) }}\n  </time>\n</template>\n\n<script>\nimport * as DateUtils from 'src/services/date_utils/date_utils.js'\nimport localeService from 'src/services/locale/locale.service.js'\n\nexport default {\n  name: 'Timeago',\n  props: ['time', 'autoUpdate', 'longFormat', 'nowThreshold'],\n  data () {\n    return {\n      relativeTime: { key: 'time.now', num: 0 },\n      interval: null\n    }\n  },\n  computed: {\n    localeDateString () {\n      const browserLocale = localeService.internalToBrowserLocale(this.$i18n.locale)\n      return typeof this.time === 'string'\n        ? new Date(Date.parse(this.time)).toLocaleString(browserLocale)\n        : this.time.toLocaleString(browserLocale)\n    }\n  },\n  created () {\n    this.refreshRelativeTimeObject()\n  },\n  unmounted () {\n    clearTimeout(this.interval)\n  },\n  methods: {\n    refreshRelativeTimeObject () {\n      const nowThreshold = typeof this.nowThreshold === 'number' ? this.nowThreshold : 1\n      this.relativeTime = this.longFormat\n        ? DateUtils.relativeTime(this.time, nowThreshold)\n        : DateUtils.relativeTimeShort(this.time, nowThreshold)\n\n      if (this.autoUpdate) {\n        this.interval = setTimeout(\n          this.refreshRelativeTimeObject,\n          1000 * this.autoUpdate\n        )\n      }\n    }\n  }\n}\n</script>\n","import { render } from \"./timeago.vue?vue&type=template&id=4a007a5d\"\nimport script from \"./timeago.vue?vue&type=script&lang=js\"\nexport * from \"./timeago.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"list\">\n    <div\n      v-for=\"item in items\"\n      :key=\"getKey(item)\"\n      class=\"list-item\"\n    >\n      <slot\n        name=\"item\"\n        :item=\"item\"\n      />\n    </div>\n    <div\n      v-if=\"items.length === 0 && !!$slots.empty\"\n      class=\"list-empty-content faint\"\n    >\n      <slot name=\"empty\" />\n    </div>\n  </div>\n</template>\n\n<script>\nexport default {\n  props: {\n    items: {\n      type: Array,\n      default: () => []\n    },\n    getKey: {\n      type: Function,\n      default: item => item.id\n    }\n  }\n}\n</script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.list {\n  &-item:not(:last-child) {\n    border-bottom: 1px solid;\n    border-bottom-color: $fallback--border;\n    border-bottom-color: var(--border, $fallback--border);\n  }\n\n  &-empty-content {\n    text-align: center;\n    padding: 10px;\n  }\n}\n</style>\n","import { render } from \"./list.vue?vue&type=template&id=c1790f52\"\nimport script from \"./list.vue?vue&type=script&lang=js\"\nexport * from \"./list.vue?vue&type=script&lang=js\"\n\nimport \"./list.vue?vue&type=style&index=0&id=c1790f52&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// When contributing, please sort JSON before committing so it would be easier to see what's missing and what's being added compared to English and other languages. It's not obligatory, but just an advice.\n// To sort json use jq https://stedolan.github.io/jq and invoke it like `jq -S . xx.json > xx.sorted.json`, AFAIK, there's no inplace edit option like in sed\n// Also, when adding a new language to \"messages\" variable, please do it alphabetically by language code so that users can search or check their custom language easily.\n\n// For anyone contributing to old huge messages.js and in need to quickly convert it to JSON\n// sed command for converting currently formatted JS to JSON:\n// sed -i -e \"s/'//gm\" -e 's/\"/\\\\\"/gm' -re 's/^( +)(.+?): ((.+?))?(,?)(\\{?)$/\\1\"\\2\": \"\\4\"/gm' -e 's/\\\"\\{\\\"/{/g' -e 's/,\"$/\",/g' file.json\n// There's only problem that apostrophe character ' gets replaced by \\\\ so you have to fix it manually, sorry.\n\nconst loaders = {\n  ar: () => import('./ar.json'),\n  ca: () => import('./ca.json'),\n  cs: () => import('./cs.json'),\n  de: () => import('./de.json'),\n  eo: () => import('./eo.json'),\n  es: () => import('./es.json'),\n  et: () => import('./et.json'),\n  eu: () => import('./eu.json'),\n  fi: () => import('./fi.json'),\n  fr: () => import('./fr.json'),\n  ga: () => import('./ga.json'),\n  he: () => import('./he.json'),\n  hu: () => import('./hu.json'),\n  it: () => import('./it.json'),\n  ja: () => import('./ja_pedantic.json'),\n  ja_easy: () => import('./ja_easy.json'),\n  ko: () => import('./ko.json'),\n  nb: () => import('./nb.json'),\n  nl: () => import('./nl.json'),\n  oc: () => import('./oc.json'),\n  pl: () => import('./pl.json'),\n  pt: () => import('./pt.json'),\n  ro: () => import('./ro.json'),\n  ru: () => import('./ru.json'),\n  te: () => import('./te.json'),\n  uk: () => import('./uk.json'),\n  zh: () => import('./zh.json'),\n  zh_Hant: () => import('./zh_Hant.json')\n}\n\nconst messages = {\n  languages: ['en', ...Object.keys(loaders)],\n  default: {\n    en: require('./en.json').default\n  },\n  setLanguage: async (i18n, language) => {\n    if (loaders[language]) {\n      let messages = await loaders[language]()\n      i18n.setLocaleMessage(language, messages.default)\n    }\n    i18n.locale = language\n  }\n}\n\nexport default messages\n","// eslint-disable-next-line no-unused\nimport { h, Fragment } from 'vue'\nimport { mapState } from 'vuex'\nimport { FontAwesomeIcon as FAIcon } from '@fortawesome/vue-fontawesome'\n\nimport './tab_switcher.scss'\n\nconst findFirstUsable = (slots) => slots.findIndex(_ => _.props)\n\nexport default {\n  name: 'TabSwitcher',\n  props: {\n    renderOnlyFocused: {\n      required: false,\n      type: Boolean,\n      default: false\n    },\n    onSwitch: {\n      required: false,\n      type: Function,\n      default: undefined\n    },\n    activeTab: {\n      required: false,\n      type: String,\n      default: undefined\n    },\n    scrollableTabs: {\n      required: false,\n      type: Boolean,\n      default: false\n    },\n    sideTabBar: {\n      required: false,\n      type: Boolean,\n      default: false\n    },\n    bodyScrollLock: {\n      required: false,\n      type: Boolean,\n      default: false\n    }\n  },\n  data () {\n    return {\n      active: findFirstUsable(this.slots())\n    }\n  },\n  computed: {\n    activeIndex () {\n      // In case of controlled component\n      if (this.activeTab) {\n        return this.slots().findIndex(slot => slot && slot.props && this.activeTab === slot.props.key)\n      } else {\n        return this.active\n      }\n    },\n    isActive () {\n      return tabName => {\n        const isWanted = slot => slot.props && slot.props['data-tab-name'] === tabName\n        return this.$slots.default().findIndex(isWanted) === this.activeIndex\n      }\n    },\n    settingsModalVisible () {\n      return this.settingsModalState === 'visible'\n    },\n    ...mapState({\n      settingsModalState: state => state.interface.settingsModalState\n    })\n  },\n  beforeUpdate () {\n    const currentSlot = this.slots()[this.active]\n    if (!currentSlot.props) {\n      this.active = findFirstUsable(this.slots())\n    }\n  },\n  methods: {\n    clickTab (index) {\n      return (e) => {\n        e.preventDefault()\n        this.setTab(index)\n      }\n    },\n    // DO NOT put it to computed, it doesn't work (caching?)\n    slots () {\n      if (this.$slots.default()[0].type === Fragment) {\n        return this.$slots.default()[0].children\n      }\n      return this.$slots.default()\n    },\n    setTab (index) {\n      if (typeof this.onSwitch === 'function') {\n        this.onSwitch.call(null, this.slots()[index].key)\n      }\n      this.active = index\n      if (this.scrollableTabs) {\n        this.$refs.contents.scrollTop = 0\n      }\n    }\n  },\n  render () {\n    const tabs = this.slots()\n      .map((slot, index) => {\n        const props = slot.props\n        if (!props) return\n        const classesTab = ['tab', 'button-default']\n        const classesWrapper = ['tab-wrapper']\n        if (this.activeIndex === index) {\n          classesTab.push('active')\n          classesWrapper.push('active')\n        }\n        if (props.image) {\n          return (\n            <div class={classesWrapper.join(' ')}>\n              <button\n                disabled={props.disabled}\n                onClick={this.clickTab(index)}\n                class={classesTab.join(' ')}\n                type=\"button\"\n              >\n                <img src={props.image} title={props['image-tooltip']}/>\n                {props.label ? '' : props.label}\n              </button>\n            </div>\n          )\n        }\n        return (\n          <div class={classesWrapper.join(' ')}>\n            <button\n              disabled={props.disabled}\n              onClick={this.clickTab(index)}\n              class={classesTab.join(' ')}\n              type=\"button\"\n            >\n              {!props.icon ? '' : (<FAIcon class=\"tab-icon\" size=\"2x\" fixed-width icon={props.icon}/>)}\n              <span class=\"text\">\n                {props.label}\n              </span>\n            </button>\n          </div>\n        )\n      })\n\n    const contents = this.slots().map((slot, index) => {\n      const props = slot.props\n      if (!props) return\n      const active = this.activeIndex === index\n      const classes = [ active ? 'active' : 'hidden' ]\n      if (props.fullHeight) {\n        classes.push('full-height')\n      }\n      const renderSlot = (!this.renderOnlyFocused || active)\n        ? slot\n        : ''\n\n      return (\n        <div class={classes}>\n          {\n            this.sideTabBar\n              ? <h1 class=\"mobile-label\">{props.label}</h1>\n              : ''\n          }\n          {renderSlot}\n        </div>\n      )\n    })\n\n    return (\n      <div class={'tab-switcher ' + (this.sideTabBar ? 'side-tabs' : 'top-tabs')}>\n        <div class=\"tabs\">\n          {tabs}\n        </div>\n        <div\n          ref=\"contents\"\n          class={'contents' + (this.scrollableTabs ? ' scrollable-tabs' : '')}\n          v-body-scroll-lock={this.bodyScrollLock}\n        >\n          {contents}\n        </div>\n      </div>\n    )\n  }\n}\n","import { map } from 'lodash'\nimport apiService from '../api/api.service.js'\n\nconst postStatus = ({\n  store,\n  status,\n  spoilerText,\n  visibility,\n  sensitive,\n  poll,\n  media = [],\n  inReplyToStatusId = undefined,\n  contentType = 'text/plain',\n  preview = false,\n  idempotencyKey = ''\n}) => {\n  const mediaIds = map(media, 'id')\n\n  return apiService.postStatus({\n    credentials: store.state.users.currentUser.credentials,\n    status,\n    spoilerText,\n    visibility,\n    sensitive,\n    mediaIds,\n    inReplyToStatusId,\n    contentType,\n    poll,\n    preview,\n    idempotencyKey\n  })\n    .then((data) => {\n      if (!data.error && !preview) {\n        store.dispatch('addNewStatuses', {\n          statuses: [data],\n          timeline: 'friends',\n          showImmediately: true,\n          noIdUpdate: true // To prevent missing notices on next pull.\n        })\n      }\n      return data\n    })\n    .catch((err) => {\n      return {\n        error: err.message\n      }\n    })\n}\n\nconst uploadMedia = ({ store, formData }) => {\n  const credentials = store.state.users.currentUser.credentials\n  return apiService.uploadMedia({ credentials, formData })\n}\n\nconst setMediaDescription = ({ store, id, description }) => {\n  const credentials = store.state.users.currentUser.credentials\n  return apiService.setMediaDescription({ credentials, id, description })\n}\n\nconst statusPosterService = {\n  postStatus,\n  uploadMedia,\n  setMediaDescription\n}\n\nexport default statusPosterService\n","<template>\n  <teleport :disabled=\"minimalMode || disableTeleport\" :to=\"teleportTarget\">\n    <div\n      :class=\"{ minimal: minimalMode }\"\n      class=\"Notifications\"\n    >\n      <div :class=\"mainClass\">\n        <div\n          v-if=\"!noHeading\"\n          class=\"notifications-heading panel-heading -sticky\"\n        >\n          <div class=\"title\">\n            {{ $t('notifications.notifications') }}\n            <span\n              v-if=\"unseenCount\"\n              class=\"badge badge-notification unseen-count\"\n            >{{ unseenCount }}</span>\n          </div>\n          <button\n            v-if=\"unseenCount\"\n            class=\"button-default read-button\"\n            @click.prevent=\"markAsSeen\"\n          >\n            {{ $t('notifications.read') }}\n          </button>\n          <NotificationFilters />\n        </div>\n        <div class=\"panel-body\">\n          <div\n            v-for=\"notification in notificationsToDisplay\"\n            :key=\"notification.id\"\n            class=\"notification\"\n            :class=\"{unseen: !minimalMode && !notification.seen}\"\n          >\n            <div class=\"notification-overlay\" />\n            <notification :notification=\"notification\" />\n          </div>\n        </div>\n        <div class=\"panel-footer\">\n          <div\n            v-if=\"bottomedOut\"\n            class=\"new-status-notification text-center faint\"\n          >\n            {{ $t('notifications.no_more_notifications') }}\n          </div>\n          <button\n            v-else-if=\"!loading\"\n            class=\"button-unstyled -link -fullwidth\"\n            @click.prevent=\"fetchOlderNotifications()\"\n          >\n            <div class=\"new-status-notification text-center\">\n              {{ minimalMode ? $t('interactions.load_older') : $t('notifications.load_older') }}\n            </div>\n          </button>\n          <div\n            v-else\n            class=\"new-status-notification text-center\"\n          >\n            <FAIcon\n              icon=\"circle-notch\"\n              spin\n              size=\"lg\"\n            />\n          </div>\n        </div>\n      </div>\n    </div>\n  </teleport>\n</template>\n\n<script src=\"./notifications.js\"></script>\n<style lang=\"scss\" src=\"./notifications.scss\"></style>\n","<template>\n  <Status\n    v-if=\"notification.type === 'mention'\"\n    class=\"Notification\"\n    :compact=\"true\"\n    :statusoid=\"notification.status\"\n  />\n  <div v-else>\n    <div\n      v-if=\"needMute && !unmuted\"\n      class=\"Notification container -muted\"\n    >\n      <small>\n        <router-link :to=\"userProfileLink\">\n          {{ notification.from_profile.screen_name_ui }}\n        </router-link>\n      </small>\n      <button\n        class=\"button-unstyled unmute\"\n        @click.prevent=\"toggleMute\"\n      >\n        <FAIcon\n          class=\"fa-scale-110 fa-old-padding\"\n          icon=\"eye-slash\"\n        />\n      </button>\n    </div>\n    <div\n      v-else\n      class=\"Notification non-mention\"\n      :class=\"[userClass, { highlighted: userStyle }, '-type--' + notification.type]\"\n      :style=\"[ userStyle ]\"\n    >\n      <a\n        class=\"avatar-container\"\n        :href=\"$router.resolve(userProfileLink).href\"\n        @click.stop.prevent.capture=\"toggleUserExpanded\"\n      >\n        <UserAvatar\n          :compact=\"true\"\n          :better-shadow=\"betterShadow\"\n          :user=\"notification.from_profile\"\n        />\n      </a>\n      <div class=\"notification-right\">\n        <UserCard\n          v-if=\"userExpanded\"\n          :user-id=\"getUser(notification).id\"\n          :rounded=\"true\"\n          :bordered=\"true\"\n        />\n        <span class=\"notification-details\">\n          <div class=\"name-and-action\">\n            <!-- eslint-disable vue/no-v-html -->\n            <bdi v-if=\"!!notification.from_profile.name_html\">\n              <RichContent\n                class=\"username\"\n                :title=\"'@'+notification.from_profile.screen_name_ui\"\n                :html=\"notification.from_profile.name_html\"\n                :emoji=\"notification.from_profile.emoji\"\n              />\n            </bdi>\n            <!-- eslint-enable vue/no-v-html -->\n            <span\n              v-else\n              class=\"username\"\n              :title=\"'@'+notification.from_profile.screen_name_ui\"\n            >\n              {{ notification.from_profile.name }}\n            </span>\n            {{ ' ' }}\n            <span v-if=\"notification.type === 'like'\">\n              <FAIcon\n                class=\"type-icon\"\n                icon=\"star\"\n              />\n              {{ ' ' }}\n              <small>{{ $t('notifications.favorited_you') }}</small>\n            </span>\n            <span v-if=\"notification.type === 'repeat'\">\n              <FAIcon\n                class=\"type-icon\"\n                icon=\"retweet\"\n                :title=\"$t('tool_tip.repeat')\"\n              />\n              {{ ' ' }}\n              <small>{{ $t('notifications.repeated_you') }}</small>\n            </span>\n            <span v-if=\"notification.type === 'follow'\">\n              <FAIcon\n                class=\"type-icon\"\n                icon=\"user-plus\"\n              />\n              {{ ' ' }}\n              <small>{{ $t('notifications.followed_you') }}</small>\n            </span>\n            <span v-if=\"notification.type === 'follow_request'\">\n              <FAIcon\n                class=\"type-icon\"\n                icon=\"user\"\n              />\n              {{ ' ' }}\n              <small>{{ $t('notifications.follow_request') }}</small>\n            </span>\n            <span v-if=\"notification.type === 'move'\">\n              <FAIcon\n                class=\"type-icon\"\n                icon=\"suitcase-rolling\"\n              />\n              {{ ' ' }}\n              <small>{{ $t('notifications.migrated_to') }}</small>\n            </span>\n            <span v-if=\"notification.type === 'pleroma:emoji_reaction'\">\n              <small>\n                <i18n-t\n                  scope=\"global\"\n                  keypath=\"notifications.reacted_with\"\n                >\n                  <img\n                    v-if=\"notification.emoji_url !== null\"\n                    class=\"notification-reaction-emoji\"\n                    :src=\"notification.emoji_url\"\n                    :name=\"notification.emoji\"\n                  >\n                  <span\n                    v-else\n                    class=\"emoji-reaction-emoji\"\n                  >\n                    {{ notification.emoji }}\n                  </span>\n                </i18n-t>\n              </small>\n            </span>\n            <span v-if=\"notification.type === 'poll'\">\n              <FAIcon\n                class=\"type-icon\"\n                icon=\"poll-h\"\n              />\n              {{ ' ' }}\n              <small>{{ $t('notifications.poll_ended') }}</small>\n            </span>\n          </div>\n          <div\n            v-if=\"isStatusNotification\"\n            class=\"timeago\"\n          >\n            <router-link\n              v-if=\"notification.status\"\n              :to=\"{ name: 'conversation', params: { id: notification.status.id } }\"\n              class=\"faint-link\"\n            >\n              <Timeago\n                :time=\"notification.created_at\"\n                :auto-update=\"240\"\n              />\n            </router-link>\n          </div>\n          <div\n            v-else\n            class=\"timeago\"\n          >\n            <span class=\"faint\">\n              <Timeago\n                :time=\"notification.created_at\"\n                :auto-update=\"240\"\n              />\n            </span>\n          </div>\n          <button\n            v-if=\"needMute\"\n            class=\"button-unstyled\"\n            @click.prevent=\"toggleMute\"\n          >\n            <FAIcon\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"eye-slash\"\n            />\n          </button>\n        </span>\n        <div\n          v-if=\"notification.type === 'follow' || notification.type === 'follow_request'\"\n          class=\"follow-text\"\n        >\n          <router-link\n            :to=\"userProfileLink\"\n            class=\"follow-name\"\n          >\n            @{{ notification.from_profile.screen_name_ui }}\n          </router-link>\n          <div\n            v-if=\"notification.type === 'follow_request'\"\n            style=\"white-space: nowrap;\"\n          >\n            <button\n              class=\"button-unstyled\"\n              :title=\"$t('tool_tip.accept_follow_request')\"\n              @click=\"approveUser()\"\n            >\n              <FAIcon\n                icon=\"check\"\n                class=\"fa-scale-110 fa-old-padding follow-request-accept\"\n              />\n            </button>\n            <button\n              class=\"button-unstyled\"\n              :title=\"$t('tool_tip.reject_follow_request')\"\n              @click=\"denyUser()\"\n            >\n              <FAIcon\n                icon=\"times\"\n                class=\"fa-scale-110 fa-old-padding follow-request-reject\"\n              />\n            </button>\n          </div>\n        </div>\n        <div\n          v-else-if=\"notification.type === 'move'\"\n          class=\"move-text\"\n        >\n          <router-link :to=\"targetUserProfileLink\">\n            @{{ notification.target.screen_name_ui }}\n          </router-link>\n        </div>\n        <template v-else>\n          <StatusContent\n            class=\"faint\"\n            :compact=\"true\"\n            :status=\"notification.action\"\n          />\n        </template>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./notification.js\"></script>\n<style src=\"./notification.scss\" lang=\"scss\"></style>\n","import StatusContent from '../status_content/status_content.vue'\nimport { mapState } from 'vuex'\nimport Status from '../status/status.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport UserCard from '../user_card/user_card.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport { isStatusNotification } from '../../services/notification_utils/notification_utils.js'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faCheck,\n  faTimes,\n  faStar,\n  faRetweet,\n  faUserPlus,\n  faEyeSlash,\n  faUser,\n  faSuitcaseRolling\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCheck,\n  faTimes,\n  faStar,\n  faRetweet,\n  faUserPlus,\n  faUser,\n  faEyeSlash,\n  faSuitcaseRolling\n)\n\nconst Notification = {\n  data () {\n    return {\n      userExpanded: false,\n      betterShadow: this.$store.state.interface.browserSupport.cssFilter,\n      unmuted: false\n    }\n  },\n  props: [ 'notification' ],\n  components: {\n    StatusContent,\n    UserAvatar,\n    UserCard,\n    Timeago,\n    Status,\n    RichContent\n  },\n  methods: {\n    toggleUserExpanded () {\n      this.userExpanded = !this.userExpanded\n    },\n    generateUserProfileLink (user) {\n      return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n    },\n    getUser (notification) {\n      return this.$store.state.users.usersObject[notification.from_profile.id]\n    },\n    toggleMute () {\n      this.unmuted = !this.unmuted\n    },\n    approveUser () {\n      this.$store.state.api.backendInteractor.approveUser({ id: this.user.id })\n      this.$store.dispatch('removeFollowRequest', this.user)\n      this.$store.dispatch('markSingleNotificationAsSeen', { id: this.notification.id })\n      this.$store.dispatch('updateNotification', {\n        id: this.notification.id,\n        updater: notification => {\n          notification.type = 'follow'\n        }\n      })\n    },\n    denyUser () {\n      this.$store.state.api.backendInteractor.denyUser({ id: this.user.id })\n        .then(() => {\n          this.$store.dispatch('dismissNotificationLocal', { id: this.notification.id })\n          this.$store.dispatch('removeFollowRequest', this.user)\n        })\n    }\n  },\n  computed: {\n    userClass () {\n      return highlightClass(this.notification.from_profile)\n    },\n    userStyle () {\n      const highlight = this.$store.getters.mergedConfig.highlight\n      const user = this.notification.from_profile\n      return highlightStyle(highlight[user.screen_name])\n    },\n    user () {\n      return this.$store.getters.findUser(this.notification.from_profile.id)\n    },\n    userProfileLink () {\n      return this.generateUserProfileLink(this.user)\n    },\n    targetUser () {\n      return this.$store.getters.findUser(this.notification.target.id)\n    },\n    targetUserProfileLink () {\n      return this.generateUserProfileLink(this.targetUser)\n    },\n    needMute () {\n      return this.$store.getters.relationship(this.user.id).muting\n    },\n    isStatusNotification () {\n      return isStatusNotification(this.notification.type)\n    },\n    ...mapState({\n      currentUser: state => state.users.currentUser\n    })\n  }\n}\n\nexport default Notification\n","import { render } from \"./notification.vue?vue&type=template&id=437c5ef8\"\nimport script from \"./notification.js?vue&type=script&lang=js\"\nexport * from \"./notification.js?vue&type=script&lang=js\"\n\nimport \"./notification.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Popover\n    trigger=\"click\"\n    class=\"NotificationFilters\"\n    placement=\"bottom\"\n    :bound-to=\"{ x: 'container' }\"\n  >\n    <template v-slot:content>\n      <div class=\"dropdown-menu\">\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"toggleNotificationFilter('likes')\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': filters.likes }\"\n          />{{ $t('settings.notification_visibility_likes') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"toggleNotificationFilter('repeats')\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': filters.repeats }\"\n          />{{ $t('settings.notification_visibility_repeats') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"toggleNotificationFilter('follows')\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': filters.follows }\"\n          />{{ $t('settings.notification_visibility_follows') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"toggleNotificationFilter('mentions')\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': filters.mentions }\"\n          />{{ $t('settings.notification_visibility_mentions') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"toggleNotificationFilter('emojiReactions')\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': filters.emojiReactions }\"\n          />{{ $t('settings.notification_visibility_emoji_reactions') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"toggleNotificationFilter('moves')\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': filters.moves }\"\n          />{{ $t('settings.notification_visibility_moves') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"toggleNotificationFilter('polls')\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': filters.polls }\"\n          />{{ $t('settings.notification_visibility_polls') }}\n        </button>\n      </div>\n    </template>\n    <template v-slot:trigger>\n      <button class=\"filter-trigger-button button-unstyled\">\n        <FAIcon icon=\"filter\" />\n      </button>\n    </template>\n  </Popover>\n</template>\n\n<script>\nimport Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faFilter } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faFilter\n)\n\nexport default {\n  components: { Popover },\n  computed: {\n    filters () {\n      return this.$store.getters.mergedConfig.notificationVisibility\n    }\n  },\n  methods: {\n    toggleNotificationFilter (type) {\n      this.$store.dispatch('setOption', {\n        name: 'notificationVisibility',\n        value: {\n          ...this.filters,\n          [type]: !this.filters[type]\n        }\n      })\n    }\n  }\n}\n</script>\n\n<style lang=\"scss\">\n\n.NotificationFilters {\n  align-self: stretch;\n\n  > button {\n    line-height: 100%;\n    height: 100%;\n    width: var(--__panel-heading-height-inner);\n    text-align: center;\n\n    svg {\n      font-size: 1.2em;\n    }\n  }\n}\n\n</style>\n","import { render } from \"./notification_filters.vue?vue&type=template&id=afbf2f10\"\nimport script from \"./notification_filters.vue?vue&type=script&lang=js\"\nexport * from \"./notification_filters.vue?vue&type=script&lang=js\"\n\nimport \"./notification_filters.vue?vue&type=style&index=0&id=afbf2f10&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapGetters } from 'vuex'\nimport Notification from '../notification/notification.vue'\nimport NotificationFilters from './notification_filters.vue'\nimport notificationsFetcher from '../../services/notifications_fetcher/notifications_fetcher.service.js'\nimport {\n  notificationsFromStore,\n  filteredNotificationsFromStore,\n  unseenNotificationsFromStore\n} from '../../services/notification_utils/notification_utils.js'\nimport FaviconService from '../../services/favicon_service/favicon_service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch\n)\n\nconst DEFAULT_SEEN_TO_DISPLAY_COUNT = 30\n\nconst Notifications = {\n  components: {\n    Notification,\n    NotificationFilters\n  },\n  props: {\n    // Disables panel styles, unread mark, potentially other notification-related actions\n    // meant for \"Interactions\" timeline\n    minimalMode: Boolean,\n    // Custom filter mode, an array of strings, possible values 'mention', 'repeat', 'like', 'follow', used to override global filter for use in \"Interactions\" timeline\n    filterMode: Array,\n    // Disable teleporting (i.e. for /users/user/notifications)\n    disableTeleport: Boolean\n  },\n  data () {\n    return {\n      bottomedOut: false,\n      // How many seen notifications to display in the list. The more there are,\n      // the heavier the page becomes. This count is increased when loading\n      // older notifications, and cut back to default whenever hitting \"Read!\".\n      seenToDisplayCount: DEFAULT_SEEN_TO_DISPLAY_COUNT\n    }\n  },\n  computed: {\n    mainClass () {\n      return this.minimalMode ? '' : 'panel panel-default'\n    },\n    notifications () {\n      return notificationsFromStore(this.$store)\n    },\n    error () {\n      return this.$store.state.statuses.notifications.error\n    },\n    unseenNotifications () {\n      return unseenNotificationsFromStore(this.$store)\n    },\n    filteredNotifications () {\n      return filteredNotificationsFromStore(this.$store, this.filterMode)\n    },\n    unseenCount () {\n      return this.unseenNotifications.length\n    },\n    unseenCountTitle () {\n      return this.unseenCount + (this.unreadChatCount)\n    },\n    loading () {\n      return this.$store.state.statuses.notifications.loading\n    },\n    noHeading () {\n      const { layoutType } = this.$store.state.interface\n      return this.minimalMode || layoutType === 'mobile'\n    },\n    teleportTarget () {\n      const { layoutType } = this.$store.state.interface\n      const map = {\n        wide: '#notifs-column',\n        mobile: '#mobile-notifications'\n      }\n      return map[layoutType] || '#notifs-sidebar'\n    },\n    notificationsToDisplay () {\n      return this.filteredNotifications.slice(0, this.unseenCount + this.seenToDisplayCount)\n    },\n    ...mapGetters(['unreadChatCount'])\n  },\n  watch: {\n    unseenCountTitle (count) {\n      if (count > 0) {\n        FaviconService.drawFaviconBadge()\n        this.$store.dispatch('setPageTitle', `(${count})`)\n      } else {\n        FaviconService.clearFaviconBadge()\n        this.$store.dispatch('setPageTitle', '')\n      }\n    }\n  },\n  methods: {\n    markAsSeen () {\n      this.$store.dispatch('markNotificationsAsSeen')\n      this.seenToDisplayCount = DEFAULT_SEEN_TO_DISPLAY_COUNT\n    },\n    fetchOlderNotifications () {\n      if (this.loading) {\n        return\n      }\n\n      const seenCount = this.filteredNotifications.length - this.unseenCount\n      if (this.seenToDisplayCount < seenCount) {\n        this.seenToDisplayCount = Math.min(this.seenToDisplayCount + 20, seenCount)\n        return\n      } else if (this.seenToDisplayCount > seenCount) {\n        this.seenToDisplayCount = seenCount\n      }\n\n      const store = this.$store\n      const credentials = store.state.users.currentUser.credentials\n      store.commit('setNotificationsLoading', { value: true })\n      notificationsFetcher.fetchAndUpdate({\n        store,\n        credentials,\n        older: true\n      }).then(notifs => {\n        store.commit('setNotificationsLoading', { value: false })\n        if (notifs.length === 0) {\n          this.bottomedOut = true\n        }\n        this.seenToDisplayCount += notifs.length\n      })\n    }\n  }\n}\n\nexport default Notifications\n","import { render } from \"./notifications.vue?vue&type=template&id=8a71648a\"\nimport script from \"./notifications.js?vue&type=script&lang=js\"\nexport * from \"./notifications.js?vue&type=script&lang=js\"\n\nimport \"./notifications.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    ref=\"galleryContainer\"\n    class=\"Gallery\"\n    :class=\"{ '-long': tooManyAttachments && hidingLong }\"\n  >\n    <div class=\"gallery-rows\">\n      <div\n        v-for=\"(row, rowIndex) in rows\"\n        :key=\"rowIndex\"\n        class=\"gallery-row\"\n        :style=\"rowStyle(row)\"\n        :class=\"{ '-audio': row.audio, '-minimal': row.minimal, '-grid': grid }\"\n      >\n        <div\n          class=\"gallery-row-inner\"\n          :class=\"{ '-grid': grid }\"\n        >\n          <Attachment\n            v-for=\"(attachment, attachmentIndex) in row.items\"\n            :key=\"attachment.id\"\n            class=\"gallery-item\"\n            :nsfw=\"nsfw\"\n            :attachment=\"attachment\"\n            :size=\"size\"\n            :editable=\"editable\"\n            :remove=\"removeAttachment\"\n            :shift-up=\"!(attachmentIndex === 0 && rowIndex === 0) && shiftUpAttachment\"\n            :shift-dn=\"!(attachmentIndex === row.items.length - 1 && rowIndex === rows.length - 1) && shiftDnAttachment\"\n            :edit=\"editAttachment\"\n            :description=\"descriptions && descriptions[attachment.id]\"\n            :hide-description=\"size === 'small' || tooManyAttachments && hidingLong\"\n            :style=\"itemStyle(attachment.id, row.items)\"\n            @setMedia=\"onMedia\"\n            @naturalSizeLoad=\"onNaturalSizeLoad\"\n          />\n        </div>\n      </div>\n    </div>\n    <div\n      v-if=\"tooManyAttachments\"\n      class=\"many-attachments\"\n    >\n      <div class=\"many-attachments-text\">\n        {{ $t(\"status.many_attachments\", { number: attachments.length }) }}\n      </div>\n      <div class=\"many-attachments-buttons\">\n        <span\n          v-if=\"!hidingLong\"\n          class=\"many-attachments-button\"\n        >\n          <button\n            class=\"button-unstyled -link\"\n            @click=\"toggleHidingLong(true)\"\n          >\n            {{ $t(\"status.collapse_attachments\") }}\n          </button>\n        </span>\n        <span\n          v-if=\"hidingLong\"\n          class=\"many-attachments-button\"\n        >\n          <button\n            class=\"button-unstyled -link\"\n            @click=\"toggleHidingLong(false)\"\n          >\n            {{ $t(\"status.show_all_attachments\") }}\n          </button>\n        </span>\n        <span\n          v-if=\"hidingLong\"\n          class=\"many-attachments-button\"\n        >\n          <button\n            class=\"button-unstyled -link\"\n            @click=\"openGallery\"\n          >\n            {{ $t(\"status.open_gallery\") }}\n          </button>\n        </span>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src='./gallery.js'></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.Gallery {\n  .gallery-rows {\n    display: flex;\n    flex-direction: column;\n  }\n\n  .gallery-row {\n    position: relative;\n    height: 0;\n    width: 100%;\n    flex-grow: 1;\n\n    &:not(:first-child) {\n      margin-top: 0.5em;\n    }\n  }\n\n  &.-long {\n    .gallery-rows {\n      max-height: 25em;\n      overflow: hidden;\n      mask:\n        linear-gradient(to top, white, transparent) bottom/100% 70px no-repeat,\n        linear-gradient(to top, white, white);\n\n      /* Autoprefixed seem to ignore this one, and also syntax is different */\n      -webkit-mask-composite: xor;\n      mask-composite: exclude;\n    }\n  }\n\n  .many-attachments-text {\n    text-align: center;\n    line-height: 2;\n  }\n\n  .many-attachments-buttons {\n    display: flex;\n  }\n\n  .many-attachments-button {\n    display: flex;\n    flex: 1;\n    justify-content: center;\n    line-height: 2;\n\n    button {\n      padding: 0 2em;\n    }\n  }\n\n  .gallery-row {\n    &.-grid,\n    &.-minimal {\n      height: auto;\n      .gallery-row-inner {\n        position: relative;\n      }\n    }\n  }\n\n  .gallery-row-inner {\n    position: absolute;\n    top: 0;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    display: flex;\n    flex-direction: row;\n    flex-wrap: nowrap;\n    align-content: stretch;\n\n    &.-grid {\n      width: 100%;\n      height: auto;\n      position: relative;\n      display: grid;\n      grid-column-gap: 0.5em;\n      grid-row-gap: 0.5em;\n      grid-template-columns: repeat(auto-fill, minmax(15em, 1fr));\n\n      .gallery-item {\n        margin: 0;\n        height: 200px;\n      }\n    }\n  }\n\n  .gallery-item {\n    margin: 0 0.5em 0 0;\n    flex-grow: 1;\n    height: 100%;\n    box-sizing: border-box;\n    // to make failed images a bit more noticeable on chromium\n    min-width: 2em;\n    &:last-child {\n      margin: 0;\n    }\n  }\n}\n</style>\n","import Attachment from '../attachment/attachment.vue'\nimport { sumBy, set } from 'lodash'\n\nconst Gallery = {\n  props: [\n    'attachments',\n    'limitRows',\n    'descriptions',\n    'limit',\n    'nsfw',\n    'setMedia',\n    'size',\n    'editable',\n    'removeAttachment',\n    'shiftUpAttachment',\n    'shiftDnAttachment',\n    'editAttachment',\n    'grid'\n  ],\n  data () {\n    return {\n      sizes: {},\n      hidingLong: true\n    }\n  },\n  components: { Attachment },\n  computed: {\n    rows () {\n      if (!this.attachments) {\n        return []\n      }\n      const attachments = this.limit > 0\n        ? this.attachments.slice(0, this.limit)\n        : this.attachments\n      if (this.size === 'hide') {\n        return attachments.map(item => ({ minimal: true, items: [item] }))\n      }\n      const rows = this.grid\n        ? [{ grid: true, items: attachments }]\n        : attachments.reduce((acc, attachment, i) => {\n          if (attachment.mimetype.includes('audio')) {\n            return [...acc, { audio: true, items: [attachment] }, { items: [] }]\n          }\n          if (!(\n            attachment.mimetype.includes('image') ||\n              attachment.mimetype.includes('video') ||\n              attachment.mimetype.includes('flash')\n          )) {\n            return [...acc, { minimal: true, items: [attachment] }, { items: [] }]\n          }\n          const maxPerRow = 3\n          const attachmentsRemaining = this.attachments.length - i + 1\n          const currentRow = acc[acc.length - 1].items\n          currentRow.push(attachment)\n          if (currentRow.length >= maxPerRow && attachmentsRemaining > maxPerRow) {\n            return [...acc, { items: [] }]\n          } else {\n            return acc\n          }\n        }, [{ items: [] }]).filter(_ => _.items.length > 0)\n      return rows\n    },\n    attachmentsDimensionalScore () {\n      return this.rows.reduce((acc, row) => {\n        let size = 0\n        if (row.minimal) {\n          size += 1 / 8\n        } else if (row.audio) {\n          size += 1 / 4\n        } else {\n          size += 1 / (row.items.length + 0.6)\n        }\n        return acc + size\n      }, 0)\n    },\n    tooManyAttachments () {\n      if (this.editable || this.size === 'small') {\n        return false\n      } else if (this.size === 'hide') {\n        return this.attachments.length > 8\n      } else {\n        return this.attachmentsDimensionalScore > 1\n      }\n    }\n  },\n  methods: {\n    onNaturalSizeLoad ({ id, width, height }) {\n      set(this.sizes, id, { width, height })\n    },\n    rowStyle (row) {\n      if (row.audio) {\n        return { 'padding-bottom': '25%' } // fixed reduced height for audio\n      } else if (!row.minimal && !row.grid) {\n        return { 'padding-bottom': `${(100 / (row.items.length + 0.6))}%` }\n      }\n    },\n    itemStyle (id, row) {\n      const total = sumBy(row, item => this.getAspectRatio(item.id))\n      return { flex: `${this.getAspectRatio(id) / total} 1 0%` }\n    },\n    getAspectRatio (id) {\n      const size = this.sizes[id]\n      return size ? size.width / size.height : 1\n    },\n    toggleHidingLong (event) {\n      this.hidingLong = event\n    },\n    openGallery () {\n      this.$store.dispatch('setMedia', this.attachments)\n      this.$store.dispatch('setCurrentMedia', this.attachments[0])\n    },\n    onMedia () {\n      this.$store.dispatch('setMedia', this.attachments)\n    }\n  }\n}\n\nexport default Gallery\n","import { render } from \"./gallery.vue?vue&type=template&id=2bf4ca36\"\nimport script from \"./gallery.js?vue&type=script&lang=js\"\nexport * from \"./gallery.js?vue&type=script&lang=js\"\n\nimport \"./gallery.vue?vue&type=style&index=0&id=2bf4ca36&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <span\n    class=\"MentionLink\"\n  >\n    <!-- eslint-disable vue/no-v-html -->\n    <a\n      v-if=\"!user\"\n      :href=\"url\"\n      class=\"original\"\n      target=\"_blank\"\n      v-html=\"content\"\n    /><!-- eslint-enable vue/no-v-html --><span\n      v-if=\"user\"\n      class=\"new\"\n      :style=\"style\"\n      :class=\"classnames\"\n    >\n      <a\n        class=\"short button-unstyled\"\n        :class=\"{ '-with-tooltip': shouldShowTooltip }\"\n        :href=\"url\"\n        @click.prevent=\"onClick\"\n      >\n        <!-- eslint-disable vue/no-v-html -->\n        <span class=\"shortName\">@<span\n          class=\"userName\"\n          v-html=\"userName\"\n        /><span\n          v-if=\"shouldShowFullUserName\"\n          class=\"serverName\"\n          :class=\"{ '-faded': shouldFadeDomain }\"\n          v-html=\"'@' + serverName\"\n        />\n        </span>\n        <span\n          v-if=\"isYou && shouldShowYous\"\n          :class=\"{ '-you': shouldBoldenYou }\"\n        > {{ ' ' + $t('status.you') }}</span>\n        <!-- eslint-enable vue/no-v-html -->\n      </a><span\n        v-if=\"shouldShowTooltip\"\n        class=\"full popover-default\"\n        :class=\"[highlightType]\"\n      >\n        <span\n          class=\"userNameFull\"\n        >\n          <!-- eslint-disable vue/no-v-html -->\n          @<span\n            class=\"userName\"\n            v-html=\"userName\"\n          /><span\n            class=\"serverName\"\n            :class=\"{ '-faded': shouldFadeDomain }\"\n            v-html=\"'@' + serverName\"\n          />\n          <!-- eslint-enable vue/no-v-html -->\n        </span>\n      </span>\n    </span>\n  </span>\n</template>\n\n<script src=\"./mention_link.js\"/>\n\n<style lang=\"scss\" src=\"./mention_link.scss\"/>\n","import { render } from \"./mention_link.vue?vue&type=template&id=eeed6d12\"\nimport script from \"./mention_link.js?vue&type=script&lang=js\"\nexport * from \"./mention_link.js?vue&type=script&lang=js\"\n\nimport \"./mention_link.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <span class=\"MentionsLine\">\n    <MentionLink\n      v-for=\"mention in mentionsComputed\"\n      :key=\"mention.index\"\n      class=\"mention-link\"\n      :content=\"mention.content\"\n      :url=\"mention.url\"\n    /><span\n      v-if=\"manyMentions\"\n      class=\"extraMentions\"\n    >\n      <span\n        v-if=\"expanded\"\n        class=\"fullExtraMentions\"\n      >\n        <MentionLink\n          v-for=\"mention in extraMentions\"\n          :key=\"mention.index\"\n          class=\"mention-link\"\n          :content=\"mention.content\"\n          :url=\"mention.url\"\n        />\n      </span><button\n        v-if=\"!expanded\"\n        class=\"button-unstyled showMoreLess\"\n        @click=\"toggleShowMore\"\n      >\n        {{ $t('status.plus_more', { number: extraMentions.length }) }}\n      </button><button\n        v-if=\"expanded\"\n        class=\"button-unstyled showMoreLess\"\n        @click=\"toggleShowMore\"\n      >\n        {{ $t('general.show_less') }}\n      </button>\n    </span>\n  </span>\n</template>\n<script src=\"./mentions_line.js\" ></script>\n<style lang=\"scss\" src=\"./mentions_line.scss\" />\n","import MentionLink from 'src/components/mention_link/mention_link.vue'\nimport { mapGetters } from 'vuex'\n\nexport const MENTIONS_LIMIT = 5\n\nconst MentionsLine = {\n  name: 'MentionsLine',\n  props: {\n    mentions: {\n      required: true,\n      type: Array\n    }\n  },\n  data: () => ({ expanded: false }),\n  components: {\n    MentionLink\n  },\n  computed: {\n    mentionsComputed () {\n      return this.mentions.slice(0, MENTIONS_LIMIT)\n    },\n    extraMentions () {\n      return this.mentions.slice(MENTIONS_LIMIT)\n    },\n    manyMentions () {\n      return this.extraMentions.length > 0\n    },\n    ...mapGetters(['mergedConfig'])\n  },\n  methods: {\n    toggleShowMore () {\n      this.expanded = !this.expanded\n    }\n  }\n}\n\nexport default MentionsLine\n","import { render } from \"./mentions_line.vue?vue&type=template&id=f231046a\"\nimport script from \"./mentions_line.js?vue&type=script&lang=js\"\nexport * from \"./mentions_line.js?vue&type=script&lang=js\"\n\nimport \"./mentions_line.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","const fileSizeFormat = (num) => {\n  var exponent\n  var unit\n  var units = ['B', 'KiB', 'MiB', 'GiB', 'TiB']\n  if (num < 1) {\n    return num + ' ' + units[0]\n  }\n\n  exponent = Math.min(Math.floor(Math.log(num) / Math.log(1024)), units.length - 1)\n  num = (num / Math.pow(1024, exponent)).toFixed(2) * 1\n  unit = units[exponent]\n  return { num: num, unit: unit }\n}\nconst fileSizeFormatService = {\n  fileSizeFormat\n}\nexport default fileSizeFormatService\n","import apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst update = ({ store, notifications, older }) => {\n  store.dispatch('addNewNotifications', { notifications, older })\n}\n\nconst fetchAndUpdate = ({ store, credentials, older = false, since }) => {\n  const args = { credentials }\n  const { getters } = store\n  const rootState = store.rootState || store.state\n  const timelineData = rootState.statuses.notifications\n  const hideMutedPosts = getters.mergedConfig.hideMutedPosts\n\n  args['withMuted'] = !hideMutedPosts\n\n  args['timeline'] = 'notifications'\n  if (older) {\n    if (timelineData.minId !== Number.POSITIVE_INFINITY) {\n      args['until'] = timelineData.minId\n    }\n    return fetchNotifications({ store, args, older })\n  } else {\n    // fetch new notifications\n    if (since === undefined && timelineData.maxId !== Number.POSITIVE_INFINITY) {\n      args['since'] = timelineData.maxId\n    } else if (since !== null) {\n      args['since'] = since\n    }\n    const result = fetchNotifications({ store, args, older })\n\n    // If there's any unread notifications, try fetch notifications since\n    // the newest read notification to check if any of the unread notifs\n    // have changed their 'seen' state (marked as read in another session), so\n    // we can update the state in this session to mark them as read as well.\n    // The normal maxId-check does not tell if older notifications have changed\n    const notifications = timelineData.data\n    const readNotifsIds = notifications.filter(n => n.seen).map(n => n.id)\n    const numUnseenNotifs = notifications.length - readNotifsIds.length\n    if (numUnseenNotifs > 0 && readNotifsIds.length > 0) {\n      args['since'] = Math.max(...readNotifsIds)\n      fetchNotifications({ store, args, older })\n    }\n\n    return result\n  }\n}\n\nconst fetchNotifications = ({ store, args, older }) => {\n  return apiService.fetchTimeline(args)\n    .then((response) => {\n      if (response.errors) {\n        throw new Error(`${response.status} ${response.statusText}`)\n      }\n      const notifications = response.data\n      update({ store, notifications, older })\n      return notifications\n    })\n    .catch((error) => {\n      store.dispatch('pushGlobalNotice', {\n        level: 'error',\n        messageKey: 'notifications.error',\n        messageArgs: [error.message],\n        timeout: 5000\n      })\n    })\n}\n\nconst startFetching = ({ credentials, store }) => {\n  // Initially there's set flag to silence all desktop notifications so\n  // that there won't spam of them when user just opened up the FE we\n  // reset that flag after a while to show new notifications once again.\n  setTimeout(() => store.dispatch('setNotificationsSilence', false), 10000)\n  const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store })\n  boundFetchAndUpdate()\n  return promiseInterval(boundFetchAndUpdate, 20000)\n}\n\nconst notificationsFetcher = {\n  fetchAndUpdate,\n  startFetching\n}\n\nexport default notificationsFetcher\n","const createFaviconService = () => {\n  const favicons = []\n  const faviconWidth = 128\n  const faviconHeight = 128\n  const badgeRadius = 32\n\n  const initFaviconService = () => {\n    const nodes = document.querySelectorAll('link[rel=\"icon\"]')\n    nodes.forEach(favicon => {\n      if (favicon) {\n        const favcanvas = document.createElement('canvas')\n        favcanvas.width = faviconWidth\n        favcanvas.height = faviconHeight\n        const favimg = new Image()\n        favimg.crossOrigin = 'anonymous'\n        favimg.src = favicon.href\n        const favcontext = favcanvas.getContext('2d')\n        favicons.push({ favcanvas, favimg, favcontext, favicon })\n      }\n    })\n  }\n\n  const isImageLoaded = (img) => img.complete && img.naturalHeight !== 0\n\n  const clearFaviconBadge = () => {\n    if (favicons.length === 0) return\n    favicons.forEach(({ favimg, favcanvas, favcontext, favicon }) => {\n      if (!favimg || !favcontext || !favicon) return\n\n      favcontext.clearRect(0, 0, faviconWidth, faviconHeight)\n      if (isImageLoaded(favimg)) {\n        favcontext.drawImage(favimg, 0, 0, favimg.width, favimg.height, 0, 0, faviconWidth, faviconHeight)\n      }\n      favicon.href = favcanvas.toDataURL('image/png')\n    })\n  }\n\n  const drawFaviconBadge = () => {\n    if (favicons.length === 0) return\n    clearFaviconBadge()\n    favicons.forEach(({ favimg, favcanvas, favcontext, favicon }) => {\n      if (!favimg || !favcontext || !favcontext) return\n\n      const style = getComputedStyle(document.body)\n      const badgeColor = `${style.getPropertyValue('--badgeNotification') || 'rgb(240, 100, 100)'}`\n\n      if (isImageLoaded(favimg)) {\n        favcontext.drawImage(favimg, 0, 0, favimg.width, favimg.height, 0, 0, faviconWidth, faviconHeight)\n      }\n      favcontext.fillStyle = badgeColor\n      favcontext.beginPath()\n      favcontext.arc(faviconWidth - badgeRadius, badgeRadius, badgeRadius, 0, 2 * Math.PI, false)\n      favcontext.fill()\n      favicon.href = favcanvas.toDataURL('image/png')\n    })\n  }\n\n  return {\n    initFaviconService,\n    clearFaviconBadge,\n    drawFaviconBadge\n  }\n}\n\nconst FaviconService = createFaviconService()\n\nexport default FaviconService\n","<template>\n  <button\n    :disabled=\"progress || disabled\"\n    @click=\"onClick\"\n  >\n    <template v-if=\"progress && $slots.progress\">\n      <slot name=\"progress\" />\n    </template>\n    <template v-else>\n      <slot />\n    </template>\n  </button>\n</template>\n\n<script>\nexport default {\n  props: {\n    disabled: {\n      type: Boolean\n    },\n    click: { // click event handler. Must return a promise\n      type: Function,\n      default: () => Promise.resolve()\n    }\n  },\n  data () {\n    return {\n      progress: false\n    }\n  },\n  methods: {\n    onClick () {\n      this.progress = true\n      this.click().then(() => { this.progress = false })\n    }\n  }\n}\n</script>\n","import { render } from \"./progress_button.vue?vue&type=template&id=9f751ae6\"\nimport script from \"./progress_button.vue?vue&type=script&lang=js\"\nexport * from \"./progress_button.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Cookies from 'js-cookie'\nimport { setPreset, applyTheme } from '../services/style_setter/style_setter.js'\nimport messages from '../i18n/messages'\nimport localeService from '../services/locale/locale.service.js'\n\nconst BACKEND_LANGUAGE_COOKIE_NAME = 'userLanguage'\n\nconst browserLocale = (window.navigator.language || 'en').split('-')[0]\n\n/* TODO this is a bit messy.\n * We need to declare settings with their types and also deal with\n * instance-default settings in some way, hopefully try to avoid copy-pasta\n * in general.\n */\nexport const multiChoiceProperties = [\n  'postContentType',\n  'subjectLineBehavior',\n  'conversationDisplay', // tree | linear\n  'conversationOtherRepliesButton', // below | inside\n  'mentionLinkDisplay' // short | full_for_remote | full\n]\n\nexport const defaultState = {\n  expertLevel: 0, // used to track which settings to show and hide\n  colors: {},\n  theme: undefined,\n  customTheme: undefined,\n  customThemeSource: undefined,\n  hideISP: false,\n  hideInstanceWallpaper: false,\n  hideShoutbox: false,\n  // bad name: actually hides posts of muted USERS\n  hideMutedPosts: undefined, // instance default\n  hideMutedThreads: undefined, // instance default\n  hideWordFilteredPosts: undefined, // instance default\n  muteBotStatuses: undefined, // instance default\n  collapseMessageWithSubject: undefined, // instance default\n  padEmoji: true,\n  hideAttachments: false,\n  hideAttachmentsInConv: false,\n  maxThumbnails: 16,\n  hideNsfw: true,\n  preloadImage: true,\n  loopVideo: true,\n  loopVideoSilentOnly: true,\n  streaming: false,\n  emojiReactionsOnTimeline: true,\n  alwaysShowNewPostButton: false,\n  autohideFloatingPostButton: false,\n  pauseOnUnfocused: true,\n  stopGifs: true,\n  replyVisibility: 'all',\n  thirdColumnMode: 'notifications',\n  notificationVisibility: {\n    follows: true,\n    mentions: true,\n    likes: true,\n    repeats: true,\n    moves: true,\n    emojiReactions: true,\n    followRequest: true,\n    chatMention: true,\n    polls: true\n  },\n  webPushNotifications: false,\n  muteWords: [],\n  highlight: {},\n  interfaceLanguage: browserLocale,\n  hideScopeNotice: false,\n  useStreamingApi: true,\n  sidebarRight: undefined, // instance default\n  scopeCopy: undefined, // instance default\n  subjectLineBehavior: undefined, // instance default\n  alwaysShowSubjectInput: undefined, // instance default\n  postContentType: undefined, // instance default\n  minimalScopesMode: undefined, // instance default\n  // This hides statuses filtered via a word filter\n  hideFilteredStatuses: undefined, // instance default\n  playVideosInModal: false,\n  useOneClickNsfw: false,\n  useContainFit: true,\n  disableStickyHeaders: false,\n  showScrollbars: false,\n  greentext: undefined, // instance default\n  useAtIcon: undefined, // instance default\n  mentionLinkDisplay: undefined, // instance default\n  mentionLinkShowTooltip: undefined, // instance default\n  mentionLinkShowAvatar: undefined, // instance default\n  mentionLinkFadeDomain: undefined, // instance default\n  mentionLinkShowYous: undefined, // instance default\n  mentionLinkBoldenYou: undefined, // instance default\n  hidePostStats: undefined, // instance default\n  hideBotIndication: undefined, // instance default\n  hideUserStats: undefined, // instance default\n  virtualScrolling: undefined, // instance default\n  sensitiveByDefault: undefined, // instance default\n  sensitiveIfSubject: undefined,\n  renderMisskeyMarkdown: undefined,\n  conversationDisplay: undefined, // instance default\n  conversationTreeAdvanced: undefined, // instance default\n  conversationOtherRepliesButton: undefined, // instance default\n  conversationTreeFadeAncestors: undefined, // instance default\n  maxDepthInThread: undefined // instance default\n}\n\n// caching the instance default properties\nexport const instanceDefaultProperties = Object.entries(defaultState)\n  .filter(([key, value]) => value === undefined)\n  .map(([key, value]) => key)\n\nconst config = {\n  state: { ...defaultState },\n  getters: {\n    defaultConfig (state, getters, rootState, rootGetters) {\n      const { instance } = rootState\n      return {\n        ...defaultState,\n        ...Object.fromEntries(\n          instanceDefaultProperties.map(key => [key, instance[key]])\n        )\n      }\n    },\n    mergedConfig (state, getters, rootState, rootGetters) {\n      const { defaultConfig } = rootGetters\n      return {\n        ...defaultConfig,\n        // Do not override with undefined\n        ...Object.fromEntries(Object.entries(state).filter(([k, v]) => v !== undefined))\n      }\n    }\n  },\n  mutations: {\n    setOption (state, { name, value }) {\n      state[name] = value\n    },\n    setHighlight (state, { user, color, type }) {\n      const data = this.state.config.highlight[user]\n      if (color || type) {\n        state.highlight[user] = { color: color || data.color, type: type || data.type }\n      } else {\n        delete state.highlight[user]\n      }\n    }\n  },\n  actions: {\n    loadSettings ({ dispatch }, data) {\n      const knownKeys = new Set(Object.keys(defaultState))\n      const presentKeys = new Set(Object.keys(data))\n      const intersection = new Set()\n      for (let elem of presentKeys) {\n        if (knownKeys.has(elem)) {\n          intersection.add(elem)\n        }\n      }\n\n      intersection.forEach(\n        name => dispatch('setOption', { name, value: data[name] })\n      )\n    },\n    setHighlight ({ commit, dispatch }, { user, color, type }) {\n      commit('setHighlight', { user, color, type })\n    },\n    setOption ({ commit, dispatch }, { name, value }) {\n      commit('setOption', { name, value })\n      switch (name) {\n        case 'theme':\n          setPreset(value)\n          break\n        case 'customTheme':\n        case 'customThemeSource':\n          applyTheme(value)\n          break\n        case 'interfaceLanguage':\n          messages.setLanguage(this.getters.i18n, value)\n          Cookies.set(BACKEND_LANGUAGE_COOKIE_NAME, localeService.internalToBackendLocale(value))\n          break\n        case 'thirdColumnMode':\n          dispatch('setLayoutWidth', undefined)\n          break\n      }\n    }\n  }\n}\n\nexport default config\n","import { filter } from 'lodash'\n\nexport const muteWordHits = (status, muteWords) => {\n  const statusText = status.text.toLowerCase()\n  const statusSummary = status.summary.toLowerCase()\n  const hits = filter(muteWords, (muteWord) => {\n    return statusText.includes(muteWord.toLowerCase()) || statusSummary.includes(muteWord.toLowerCase())\n  })\n\n  return hits\n}\n","export const showDesktopNotification = (rootState, desktopNotificationOpts) => {\n  if (!('Notification' in window && window.Notification.permission === 'granted')) return\n  if (rootState.statuses.notifications.desktopNotificationSilence) { return }\n\n  const desktopNotification = new window.Notification(desktopNotificationOpts.title, desktopNotificationOpts)\n  // Chrome is known for not closing notifications automatically\n  // according to MDN, anyway.\n  setTimeout(desktopNotification.close.bind(desktopNotification), 5000)\n}\n","export const findOffset = (child, parent, { top = 0, left = 0 } = {}, ignorePadding = true) => {\n  const result = {\n    top: top + child.offsetTop,\n    left: left + child.offsetLeft\n  }\n  if (!ignorePadding && child !== window) {\n    const { topPadding, leftPadding } = findPadding(child)\n    result.top += ignorePadding ? 0 : topPadding\n    result.left += ignorePadding ? 0 : leftPadding\n  }\n\n  if (child.offsetParent && window.getComputedStyle(child.offsetParent).position !== 'sticky' && (parent === window || parent.contains(child.offsetParent) || parent === child.offsetParent)) {\n    return findOffset(child.offsetParent, parent, result, false)\n  } else {\n    if (parent !== window) {\n      const { topPadding, leftPadding } = findPadding(parent)\n      result.top += topPadding\n      result.left += leftPadding\n    }\n    return result\n  }\n}\n\nconst findPadding = (el) => {\n  const topPaddingStr = window.getComputedStyle(el)['padding-top']\n  const topPadding = Number(topPaddingStr.substring(0, topPaddingStr.length - 2))\n  const leftPaddingStr = window.getComputedStyle(el)['padding-left']\n  const leftPadding = Number(leftPaddingStr.substring(0, leftPaddingStr.length - 2))\n\n  return { topPadding, leftPadding }\n}\n","export const newExporter = ({\n  filename = 'data',\n  getExportedObject\n}) => ({\n  exportData () {\n    const stringified = JSON.stringify(getExportedObject(), null, 2) // Pretty-print and indent with 2 spaces\n\n    // Create an invisible link with a data url and simulate a click\n    const e = document.createElement('a')\n    e.setAttribute('download', `${filename}.json`)\n    e.setAttribute('href', 'data:application/json;base64,' + window.btoa(stringified))\n    e.style.display = 'none'\n\n    document.body.appendChild(e)\n    e.click()\n    document.body.removeChild(e)\n  }\n})\n\nexport const newImporter = ({\n  onImport,\n  onImportFailure,\n  validator = () => true\n}) => ({\n  importData () {\n    const filePicker = document.createElement('input')\n    filePicker.setAttribute('type', 'file')\n    filePicker.setAttribute('accept', '.json')\n\n    filePicker.addEventListener('change', event => {\n      if (event.target.files[0]) {\n        // eslint-disable-next-line no-undef\n        const reader = new FileReader()\n        reader.onload = ({ target }) => {\n          try {\n            const parsed = JSON.parse(target.result)\n            const validationResult = validator(parsed)\n            if (validationResult === true) {\n              onImport(parsed)\n            } else {\n              onImportFailure({ validationResult })\n            }\n          } catch (error) {\n            onImportFailure({ error })\n          }\n        }\n        reader.readAsText(event.target.files[0])\n      }\n    })\n\n    document.body.appendChild(filePicker)\n    filePicker.click()\n    document.body.removeChild(filePicker)\n  }\n})\n","<template>\n  <div class=\"Flash\">\n    <div\n      v-if=\"player === true || player === 'hidden'\"\n      ref=\"container\"\n      class=\"player\"\n      :class=\"{ hidden: player === 'hidden' }\"\n    />\n    <button\n      v-if=\"player !== true\"\n      class=\"button-unstyled placeholder\"\n      @click=\"openPlayer\"\n    >\n      <span\n        v-if=\"player === 'hidden'\"\n        class=\"label\"\n      >\n        {{ $t('general.loading') }}\n      </span>\n      <span\n        v-if=\"player === 'error'\"\n        class=\"label\"\n      >\n        {{ $t('general.flash_fail') }}\n      </span>\n      <span\n        v-else\n        class=\"label\"\n      >\n        <p>\n          {{ $t('general.flash_content') }}\n        </p>\n        <p>\n          <FAIcon icon=\"exclamation-triangle\" />\n          {{ $t('general.flash_security') }}\n        </p>\n      </span>\n    </button>\n  </div>\n</template>\n\n<script src=\"./flash.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n.Flash {\n  display: inline-block;\n  width: 100%;\n  height: 100%;\n  position: relative;\n\n  .player {\n    height: 100%;\n    width: 100%;\n  }\n\n  .placeholder {\n    height: 100%;\n    width: 100%;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    background: var(--bg);\n    color: var(--link);\n  }\n\n  .hider {\n    top: 0;\n  }\n\n  .label {\n    text-align: center;\n    flex: 1 1 0;\n    line-height: 1.2;\n    white-space: normal;\n    word-wrap: normal;\n  }\n\n  .hidden {\n    display: none;\n    visibility: 'hidden';\n  }\n}\n</style>\n","const createRuffleService = () => {\n  let ruffleInstance = null\n\n  const getRuffle = () => new Promise((resolve, reject) => {\n    if (ruffleInstance) {\n      resolve(ruffleInstance)\n      return\n    }\n    // Ruffle needs these to be set before it's loaded\n    // https://github.com/ruffle-rs/ruffle/issues/3952\n    window.RufflePlayer = {}\n    window.RufflePlayer.config = {\n      polyfills: false,\n      publicPath: '/static/ruffle'\n    }\n\n    // Currently it's seems like a better way of loading ruffle\n    // because it needs the wasm publically accessible, but it needs path to it\n    // and filename of wasm seems to be pseudo-randomly generated (is it a hash?)\n    const script = document.createElement('script')\n    // see webpack config, using CopyPlugin to copy it from node_modules\n    // provided via ruffle-mirror\n    script.src = '/static/ruffle/ruffle.js'\n    script.type = 'text/javascript'\n    script.onerror = (e) => { reject(e) }\n    script.onabort = (e) => { reject(e) }\n    script.oncancel = (e) => { reject(e) }\n    script.onload = () => {\n      ruffleInstance = window.RufflePlayer\n      resolve(ruffleInstance)\n    }\n    document.body.appendChild(script)\n  })\n\n  return { getRuffle }\n}\n\nconst RuffleService = createRuffleService()\n\nexport default RuffleService\n","import RuffleService from '../../services/ruffle_service/ruffle_service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faStop,\n  faExclamationTriangle\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faStop,\n  faExclamationTriangle\n)\n\nconst Flash = {\n  props: [ 'src' ],\n  data () {\n    return {\n      player: false, // can be true, \"hidden\", false. hidden = element exists\n      loaded: false,\n      ruffleInstance: null\n    }\n  },\n  methods: {\n    openPlayer () {\n      if (this.player) return // prevent double-loading, or re-loading on failure\n      this.player = 'hidden'\n      RuffleService.getRuffle().then((ruffle) => {\n        const player = ruffle.newest().createPlayer()\n        player.config = {\n          letterbox: 'on'\n        }\n        const container = this.$refs.container\n        container.appendChild(player)\n        player.style.width = '100%'\n        player.style.height = '100%'\n        player.load(this.src).then(() => {\n          this.player = true\n        }).catch((e) => {\n          console.error('Error loading ruffle', e)\n          this.player = 'error'\n        })\n        this.ruffleInstance = player\n        this.$emit('playerOpened')\n      })\n    },\n    closePlayer () {\n      this.ruffleInstance && this.ruffleInstance.remove()\n      this.player = false\n      this.$emit('playerClosed')\n    }\n  }\n}\n\nexport default Flash\n","import { render } from \"./flash.vue?vue&type=template&id=0dec384a\"\nimport script from \"./flash.js?vue&type=script&lang=js\"\nexport * from \"./flash.js?vue&type=script&lang=js\"\n\nimport \"./flash.vue?vue&type=style&index=0&id=0dec384a&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","const fetchRelationship = (attempt, userId, store) => new Promise((resolve, reject) => {\n  setTimeout(() => {\n    store.state.api.backendInteractor.fetchUserRelationship({ id: userId })\n      .then((relationship) => {\n        store.commit('updateUserRelationship', [relationship])\n        return relationship\n      })\n      .then((relationship) => resolve([relationship.following, relationship.requested, relationship.locked, attempt]))\n      .catch((e) => reject(e))\n  }, 500)\n}).then(([following, sent, locked, attempt]) => {\n  if (!following && !(locked && sent) && attempt <= 3) {\n    // If we BE reports that we still not following that user - retry,\n    // increment attempts by one\n    fetchRelationship(++attempt, userId, store)\n  }\n})\n\nexport const requestFollow = (userId, store) => new Promise((resolve, reject) => {\n  store.state.api.backendInteractor.followUser({ id: userId })\n    .then((updated) => {\n      store.commit('updateUserRelationship', [updated])\n\n      if (updated.following || (updated.locked && updated.requested)) {\n        // If we get result immediately or the account is locked, just stop.\n        resolve()\n        return\n      }\n\n      // But usually we don't get result immediately, so we ask server\n      // for updated user profile to confirm if we are following them\n      // Sometimes it takes several tries. Sometimes we end up not following\n      // user anyway, probably because they locked themselves and we\n      // don't know that yet.\n      // Recursive Promise, it will call itself up to 3 times.\n\n      return fetchRelationship(1, updated, store)\n        .then(() => {\n          resolve()\n        })\n    })\n})\n\nexport const requestUnfollow = (userId, store) => new Promise((resolve, reject) => {\n  store.state.api.backendInteractor.unfollowUser({ id: userId })\n    .then((updated) => {\n      store.commit('updateUserRelationship', [updated])\n      resolve({\n        updated\n      })\n    })\n})\n","import { requestFollow, requestUnfollow } from '../../services/follow_manipulate/follow_manipulate'\nexport default {\n  props: ['relationship', 'user', 'labelFollowing', 'buttonClass'],\n  data () {\n    return {\n      inProgress: false\n    }\n  },\n  computed: {\n    isPressed () {\n      return this.inProgress || this.relationship.following\n    },\n    title () {\n      if (this.inProgress || this.relationship.following) {\n        return this.$t('user_card.follow_unfollow')\n      } else if (this.relationship.requested) {\n        return this.$t('user_card.follow_cancel')\n      } else {\n        return this.$t('user_card.follow')\n      }\n    },\n    label () {\n      if (this.inProgress) {\n        return this.$t('user_card.follow_progress')\n      } else if (this.relationship.following) {\n        return this.labelFollowing || this.$t('user_card.following')\n      } else if (this.relationship.requested) {\n        return this.$t('user_card.follow_sent')\n      } else {\n        return this.$t('user_card.follow')\n      }\n    },\n    disabled () {\n      return this.inProgress || this.user.deactivated\n    }\n  },\n  methods: {\n    onClick () {\n      this.relationship.following || this.relationship.requested ? this.unfollow() : this.follow()\n    },\n    follow () {\n      this.inProgress = true\n      requestFollow(this.relationship.id, this.$store).then(() => {\n        this.inProgress = false\n      })\n    },\n    unfollow () {\n      const store = this.$store\n      this.inProgress = true\n      requestUnfollow(this.relationship.id, store).then(() => {\n        this.inProgress = false\n        store.commit('removeStatus', { timeline: 'friends', userId: this.relationship.id })\n      })\n    }\n  }\n}\n","import { render } from \"./follow_button.vue?vue&type=template&id=2c877477\"\nimport script from \"./follow_button.js?vue&type=script&lang=js\"\nexport * from \"./follow_button.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <button\n    class=\"btn button-default follow-button\"\n    :class=\"{ toggled: isPressed }\"\n    :disabled=\"disabled\"\n    :title=\"title\"\n    @click=\"onClick\"\n  >\n    {{ label }}\n  </button>\n</template>\n\n<script src=\"./follow_button.js\"></script>\n","\nconst VideoAttachment = {\n  props: ['attachment', 'controls'],\n  data () {\n    return {\n      blocksSuspend: false,\n      // Start from true because removing \"loop\" property seems buggy in Vue\n      hasAudio: true\n    }\n  },\n  computed: {\n    loopVideo () {\n      if (this.$store.getters.mergedConfig.loopVideoSilentOnly) {\n        return !this.hasAudio\n      }\n      return this.$store.getters.mergedConfig.loopVideo\n    }\n  },\n  methods: {\n    onPlaying (e) {\n      this.setHasAudio(e)\n      if (this.loopVideo) {\n        this.$emit('play', { looping: true })\n        return\n      }\n      this.$emit('play')\n    },\n    onPaused (e) {\n      this.$emit('pause')\n    },\n    setHasAudio (e) {\n      const target = e.srcElement || e.target\n      // If hasAudio is false, we've already marked this video to not have audio,\n      // a video can't gain audio out of nowhere so don't bother checking again.\n      if (!this.hasAudio) return\n      if (typeof target.webkitAudioDecodedByteCount !== 'undefined') {\n        // non-zero if video has audio track\n        if (target.webkitAudioDecodedByteCount > 0) return\n      }\n      if (typeof target.mozHasAudio !== 'undefined') {\n        // true if video has audio track\n        if (target.mozHasAudio) return\n      }\n      if (typeof target.audioTracks !== 'undefined') {\n        if (target.audioTracks.length > 0) return\n      }\n      this.hasAudio = false\n    }\n  }\n}\n\nexport default VideoAttachment\n","import { render } from \"./video_attachment.vue?vue&type=template&id=dda2841a\"\nimport script from \"./video_attachment.js?vue&type=script&lang=js\"\nexport * from \"./video_attachment.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <video\n    class=\"video\"\n    preload=\"metadata\"\n    :src=\"attachment.url\"\n    :loop=\"loopVideo\"\n    :controls=\"controls\"\n    :alt=\"attachment.description\"\n    :title=\"attachment.description\"\n    playsinline\n    @playing=\"onPlaying\"\n    @pause=\"onPaused\"\n  />\n</template>\n\n<script src=\"./video_attachment.js\"></script>\n","<template>\n  <div>\n    <a\n      class=\"link-preview-card\"\n      :href=\"card.url\"\n      target=\"_blank\"\n      rel=\"noopener\"\n    >\n      <div\n        v-if=\"useImage && imageLoaded\"\n        class=\"card-image\"\n      >\n        <img :src=\"card.image\">\n      </div>\n      <div class=\"card-content\">\n        <span class=\"card-host faint\">\n          <span\n            v-if=\"censored\"\n            class=\"nsfw-alert alert warning\"\n          >{{ $t('status.nsfw') }}</span>\n          {{ card.provider_name }}\n        </span>\n        <h4 class=\"card-title\">{{ card.title }}</h4>\n        <p\n          v-if=\"useDescription\"\n          class=\"card-description\"\n        >{{ card.description }}</p>\n      </div>\n    </a>\n  </div>\n</template>\n\n<script src=\"./link-preview.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.link-preview-card {\n  display: flex;\n  flex-direction: row;\n  cursor: pointer;\n  overflow: hidden;\n  margin-top: 0.5em;\n\n  .card-image {\n    flex-shrink: 0;\n    width: 120px;\n    max-width: 25%;\n    img {\n      width: 100%;\n      height: 100%;\n      object-fit: cover;\n      border-radius: $fallback--attachmentRadius;\n      border-radius: var(--attachmentRadius, $fallback--attachmentRadius);\n    }\n  }\n\n  .card-content {\n    max-height: 100%;\n    margin: 0.5em;\n    display: flex;\n    flex-direction: column;\n  }\n\n  .card-host {\n    font-size: 0.85em;\n  }\n\n  .card-description {\n    margin: 0.5em 0 0 0;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    word-break: break-word;\n    line-height: 1.2em;\n    // cap description at 3 lines, the 1px is to clean up some stray pixels\n    // TODO: fancier fade-out at the bottom to show off that it's too long?\n    max-height: calc(1.2em * 3 - 1px);\n  }\n\n  .nsfw-alert {\n    margin: 2em 0;\n  }\n\n  color: $fallback--text;\n  color: var(--text, $fallback--text);\n  border-style: solid;\n  border-width: 1px;\n  border-radius: $fallback--attachmentRadius;\n  border-radius: var(--attachmentRadius, $fallback--attachmentRadius);\n  border-color: $fallback--border;\n  border-color: var(--border, $fallback--border);\n}\n</style>\n","import { mapGetters } from 'vuex'\n\nconst LinkPreview = {\n  name: 'LinkPreview',\n  props: [\n    'card',\n    'size',\n    'nsfw'\n  ],\n  data () {\n    return {\n      imageLoaded: false\n    }\n  },\n  computed: {\n    useImage () {\n      // Currently BE shoudn't give cards if tagged NSFW, this is a bit paranoid\n      // as it makes sure to hide the image if somehow NSFW tagged preview can\n      // exist.\n      return this.card.image && !this.censored && this.size !== 'hide'\n    },\n    censored () {\n      return this.nsfw && this.hideNsfwConfig\n    },\n    useDescription () {\n      return this.card.description && /\\S/.test(this.card.description)\n    },\n    hideNsfwConfig () {\n      return this.mergedConfig.hideNsfw\n    },\n    ...mapGetters([\n      'mergedConfig'\n    ])\n  },\n  created () {\n    if (this.useImage) {\n      const newImg = new Image()\n      newImg.onload = () => {\n        this.imageLoaded = true\n      }\n      newImg.src = this.card.image\n    }\n  }\n}\n\nexport default LinkPreview\n","import { render } from \"./link-preview.vue?vue&type=template&id=03087feb\"\nimport script from \"./link-preview.js?vue&type=script&lang=js\"\nexport * from \"./link-preview.js?vue&type=script&lang=js\"\n\nimport \"./link-preview.vue?vue&type=style&index=0&id=03087feb&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"remote-follow\">\n    <form\n      method=\"POST\"\n      :action=\"subscribeUrl\"\n    >\n      <input\n        type=\"hidden\"\n        name=\"nickname\"\n        :value=\"user.screen_name\"\n      >\n      <input\n        type=\"hidden\"\n        name=\"profile\"\n        value=\"\"\n      >\n      <button\n        click=\"submit\"\n        class=\"button-default remote-button\"\n      >\n        {{ $t('user_card.remote_follow') }}\n      </button>\n    </form>\n  </div>\n</template>\n\n<script src=\"./remote_follow.js\"></script>\n\n<style lang=\"scss\">\n.remote-follow {\n  max-width: 220px;\n\n  .remote-button {\n    width: 100%;\n    min-height: 2em;\n  }\n}\n</style>\n","export default {\n  props: [ 'user' ],\n  computed: {\n    subscribeUrl () {\n      // eslint-disable-next-line no-undef\n      const serverUrl = new URL(this.user.statusnet_profile_url)\n      return `${serverUrl.protocol}//${serverUrl.host}/main/ostatus`\n    }\n  }\n}\n","import { render } from \"./remote_follow.vue?vue&type=template&id=2aed8421\"\nimport script from \"./remote_follow.js?vue&type=script&lang=js\"\nexport * from \"./remote_follow.js?vue&type=script&lang=js\"\n\nimport \"./remote_follow.vue?vue&type=style&index=0&id=2aed8421&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"avatars\">\n    <router-link\n      v-for=\"user in slicedUsers\"\n      :key=\"user.id\"\n      :to=\"userProfileLink(user)\"\n      class=\"avatars-item\"\n    >\n      <UserAvatar\n        :user=\"user\"\n        class=\"avatar-small\"\n      />\n    </router-link>\n  </div>\n</template>\n\n<script src=\"./avatar_list.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.avatars {\n  display: flex;\n  margin: 0;\n  padding: 0;\n\n  // For hiding overflowing elements\n  flex-wrap: wrap;\n  height: 24px;\n\n  .avatars-item {\n    margin: 0 0 5px 5px;\n\n    &:first-child {\n      padding-left: 5px;\n    }\n\n    .avatar-small {\n      border-radius: $fallback--avatarAltRadius;\n      border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n      height: 24px;\n      width: 24px;\n    }\n  }\n}\n</style>\n","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\n\nconst AvatarList = {\n  props: ['users'],\n  computed: {\n    slicedUsers () {\n      return this.users ? this.users.slice(0, 15) : []\n    }\n  },\n  components: {\n    UserAvatar\n  },\n  methods: {\n    userProfileLink (user) {\n      return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n    }\n  }\n}\n\nexport default AvatarList\n","import { render } from \"./avatar_list.vue?vue&type=template&id=4cea5bcf\"\nimport script from \"./avatar_list.js?vue&type=script&lang=js\"\nexport * from \"./avatar_list.js?vue&type=script&lang=js\"\n\nimport \"./avatar_list.vue?vue&type=style&index=0&id=4cea5bcf&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","/**\n * suggest - generates a suggestor function to be used by emoji-input\n * data: object providing source information for specific types of suggestions:\n * data.emoji - optional, an array of all emoji available i.e.\n *   (state.instance.emoji + state.instance.customEmoji)\n * data.users - optional, an array of all known users\n * updateUsersList - optional, a function to search and append to users\n *\n * Depending on data present one or both (or none) can be present, so if field\n * doesn't support user linking you can just provide only emoji.\n */\n\nexport default data => {\n  const emojiCurry = suggestEmoji(data.emoji)\n  const usersCurry = data.store && suggestUsers(data.store)\n  return input => {\n    const firstChar = input[0]\n    if (firstChar === ':' && data.emoji) {\n      return emojiCurry(input)\n    }\n    if (firstChar === '@' && usersCurry) {\n      return usersCurry(input)\n    }\n    return []\n  }\n}\n\nexport const suggestEmoji = emojis => input => {\n  const noPrefix = input.toLowerCase().substr(1)\n  return emojis\n    .filter(({ displayText }) => displayText.toLowerCase().match(noPrefix))\n    .sort((a, b) => {\n      let aScore = 0\n      let bScore = 0\n\n      // An exact match always wins\n      aScore += a.displayText.toLowerCase() === noPrefix ? 200 : 0\n      bScore += b.displayText.toLowerCase() === noPrefix ? 200 : 0\n\n      // Prioritize custom emoji a lot\n      aScore += a.imageUrl ? 100 : 0\n      bScore += b.imageUrl ? 100 : 0\n\n      // Prioritize prefix matches somewhat\n      aScore += a.displayText.toLowerCase().startsWith(noPrefix) ? 10 : 0\n      bScore += b.displayText.toLowerCase().startsWith(noPrefix) ? 10 : 0\n\n      // Sort by length\n      aScore -= a.displayText.length\n      bScore -= b.displayText.length\n\n      // Break ties alphabetically\n      const alphabetically = a.displayText > b.displayText ? 0.5 : -0.5\n\n      return bScore - aScore + alphabetically\n    })\n}\n\nexport const suggestUsers = ({ dispatch, state }) => {\n  // Keep some persistent values in closure, most importantly for the\n  // custom debounce to work. Lodash debounce does not return a promise.\n  let suggestions = []\n  let previousQuery = ''\n  let timeout = null\n  let cancelUserSearch = null\n\n  const userSearch = (query) => dispatch('searchUsers', { query })\n  const debounceUserSearch = (query) => {\n    cancelUserSearch && cancelUserSearch()\n    return new Promise((resolve, reject) => {\n      timeout = setTimeout(() => {\n        userSearch(query).then(resolve).catch(reject)\n      }, 300)\n      cancelUserSearch = () => {\n        clearTimeout(timeout)\n        resolve([])\n      }\n    })\n  }\n\n  return async input => {\n    const noPrefix = input.toLowerCase().substr(1)\n    if (previousQuery === noPrefix) return suggestions\n\n    suggestions = []\n    previousQuery = noPrefix\n    // Fetch more and wait, don't fetch if there's the 2nd @ because\n    // the backend user search can't deal with it.\n    // Reference semantics make it so that we get the updated data after\n    // the await.\n    if (!noPrefix.includes('@')) {\n      await debounceUserSearch(noPrefix)\n    }\n\n    const newSuggestions = state.users.users.filter(\n      user =>\n        user.screen_name.toLowerCase().startsWith(noPrefix) ||\n        user.name.toLowerCase().startsWith(noPrefix)\n    ).slice(0, 20).sort((a, b) => {\n      let aScore = 0\n      let bScore = 0\n\n      // Matches on screen name (i.e. user@instance) makes a priority\n      aScore += a.screen_name.toLowerCase().startsWith(noPrefix) ? 2 : 0\n      bScore += b.screen_name.toLowerCase().startsWith(noPrefix) ? 2 : 0\n\n      // Matches on name takes second priority\n      aScore += a.name.toLowerCase().startsWith(noPrefix) ? 1 : 0\n      bScore += b.name.toLowerCase().startsWith(noPrefix) ? 1 : 0\n\n      const diff = (bScore - aScore) * 10\n\n      // Then sort alphabetically\n      const nameAlphabetically = a.name > b.name ? 1 : -1\n      const screenNameAlphabetically = a.screen_name > b.screen_name ? 1 : -1\n\n      return diff + nameAlphabetically + screenNameAlphabetically\n      /* eslint-disable camelcase */\n    }).map(({ screen_name, screen_name_ui, name, profile_image_url_original }) => ({\n      displayText: screen_name_ui,\n      detailText: name,\n      imageUrl: profile_image_url_original,\n      replacement: '@' + screen_name + ' '\n    }))\n    /* eslint-enable camelcase */\n\n    suggestions = newSuggestions || []\n    return suggestions\n  }\n}\n","<template>\n  <div>\n    <label for=\"interface-language-switcher\">\n      {{ promptText }}\n    </label>\n    {{ ' ' }}\n    <Select\n      id=\"interface-language-switcher\"\n      v-model=\"controlledLanguage\"\n    >\n      <option\n        v-for=\"lang in languages\"\n        :key=\"lang.code\"\n        :value=\"lang.code\"\n      >\n        {{ lang.name }}\n      </option>\n    </Select>\n  </div>\n</template>\n\n<script>\nimport localeService from '../../services/locale/locale.service.js'\nimport Select from '../select/select.vue'\n\nexport default {\n  components: {\n    Select\n  },\n  props: {\n    promptText: {\n      type: String,\n      required: true\n    },\n    language: {\n      type: String,\n      required: true\n    },\n    setLanguage: {\n      type: Function,\n      required: true\n    }\n  },\n  computed: {\n    languages () {\n      return localeService.languages\n    },\n\n    controlledLanguage: {\n      get: function () { return this.language },\n      set: function (val) {\n        this.setLanguage(val)\n      }\n    }\n  },\n\n  methods: {\n    getLanguageName (code) {\n      return localeService.getLanguageName(code)\n    }\n  }\n}\n</script>\n","import { render } from \"./interface_language_switcher.vue?vue&type=template&id=25be3710\"\nimport script from \"./interface_language_switcher.vue?vue&type=script&lang=js\"\nexport * from \"./interface_language_switcher.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    v-if=\"!showNothing\"\n    class=\"ScopeSelector\"\n  >\n    <button\n      v-if=\"showDirect\"\n      class=\"button-unstyled scope\"\n      :class=\"css.direct\"\n      :title=\"$t('post_status.scope.direct')\"\n      type=\"button\"\n      @click=\"changeVis('direct')\"\n    >\n      <FAIcon\n        icon=\"envelope\"\n        class=\"fa-scale-110 fa-old-padding\"\n      />\n    </button>\n    {{ ' ' }}\n    <button\n      v-if=\"showPrivate\"\n      class=\"button-unstyled scope\"\n      :class=\"css.private\"\n      :title=\"$t('post_status.scope.private')\"\n      type=\"button\"\n      @click=\"changeVis('private')\"\n    >\n      <FAIcon\n        icon=\"lock\"\n        class=\"fa-scale-110 fa-old-padding\"\n      />\n    </button>\n    {{ ' ' }}\n    <button\n      v-if=\"showUnlisted\"\n      class=\"button-unstyled scope\"\n      :class=\"css.unlisted\"\n      :title=\"$t('post_status.scope.unlisted')\"\n      type=\"button\"\n      @click=\"changeVis('unlisted')\"\n    >\n      <FAIcon\n        icon=\"lock-open\"\n        class=\"fa-scale-110 fa-old-padding\"\n      />\n    </button>\n    {{ ' ' }}\n    <button\n      v-if=\"showPublic\"\n      class=\"button-unstyled scope\"\n      :class=\"css.public\"\n      :title=\"$t('post_status.scope.public')\"\n      type=\"button\"\n      @click=\"changeVis('public')\"\n    >\n      <FAIcon\n        icon=\"globe\"\n        class=\"fa-scale-110 fa-old-padding\"\n      />\n    </button>\n    <button\n      v-if=\"showLocal\"\n      class=\"button-unstyled scope\"\n      :class=\"css.local\"\n      :title=\"$t('post_status.scope.local')\"\n      type=\"button\"\n      @click=\"changeVis('local')\"\n    >\n      <FAIcon\n        icon=\"users\"\n        class=\"fa-scale-110 fa-old-padding\"\n      />\n    </button>\n  </div>\n</template>\n\n<script src=\"./scope_selector.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.ScopeSelector {\n\n  .scope {\n    display: inline-block;\n    cursor: pointer;\n    min-width: 1.3em;\n    min-height: 1.3em;\n    text-align: center;\n\n    &.selected svg {\n      color: $fallback--lightText;\n      color: var(--lightText, $fallback--lightText);\n    }\n  }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faEnvelope,\n  faLock,\n  faLockOpen,\n  faGlobe\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faEnvelope,\n  faGlobe,\n  faLock,\n  faLockOpen\n)\n\nconst ScopeSelector = {\n  props: [\n    'showAll',\n    'userDefault',\n    'originalScope',\n    'initialScope',\n    'onScopeChange'\n  ],\n  data () {\n    return {\n      currentScope: this.initialScope\n    }\n  },\n  computed: {\n    showNothing () {\n      return !this.showPublic && !this.showUnlisted && !this.showPrivate && !this.showDirect\n    },\n    showPublic () {\n      return this.originalScope !== 'direct' && this.shouldShow('public')\n    },\n    showLocal () {\n      return this.originalScope !== 'direct' && this.shouldShow('local')\n    },\n    showUnlisted () {\n      return this.originalScope !== 'direct' && this.shouldShow('unlisted')\n    },\n    showPrivate () {\n      return this.originalScope !== 'direct' && this.shouldShow('private')\n    },\n    showDirect () {\n      return this.shouldShow('direct')\n    },\n    css () {\n      return {\n        public: { selected: this.currentScope === 'public' },\n        unlisted: { selected: this.currentScope === 'unlisted' },\n        private: { selected: this.currentScope === 'private' },\n        direct: { selected: this.currentScope === 'direct' },\n        local: { selected: this.currentScope === 'local' }\n      }\n    }\n  },\n  methods: {\n    shouldShow (scope) {\n      return this.showAll ||\n        this.currentScope === scope ||\n        this.originalScope === scope ||\n        this.userDefault === scope ||\n        scope === 'direct'\n    },\n    changeVis (scope) {\n      this.currentScope = scope\n      this.onScopeChange && this.onScopeChange(scope)\n    }\n  }\n}\n\nexport default ScopeSelector\n","import { render } from \"./scope_selector.vue?vue&type=template&id=4ebab9b5\"\nimport script from \"./scope_selector.js?vue&type=script&lang=js\"\nexport * from \"./scope_selector.js?vue&type=script&lang=js\"\n\nimport \"./scope_selector.vue?vue&type=style&index=0&id=4ebab9b5&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { get, set } from 'lodash'\n\nconst defaultApi = ({ rootState, commit }, { path, value }) => {\n  const params = {}\n  set(params, path, value)\n  return rootState\n    .api\n    .backendInteractor\n    .updateProfile({ params })\n    .then(result => {\n      commit('addNewUsers', [result])\n      commit('setCurrentUser', result)\n    })\n}\n\nconst notificationsApi = ({ rootState, commit }, { path, value, oldValue }) => {\n  const settings = {}\n  set(settings, path, value)\n  return rootState\n    .api\n    .backendInteractor\n    .updateNotificationSettings({ settings })\n    .then(result => {\n      if (result.status === 'success') {\n        commit('confirmServerSideOption', { name, value })\n      } else {\n        commit('confirmServerSideOption', { name, value: oldValue })\n      }\n    })\n}\n\n/**\n * Map that stores relation between path for reading (from user profile),\n * for writing (into API) an what API to use.\n *\n * Shorthand - instead of { get, set, api? } object it's possible to use string\n * in case default api is used and get = set\n *\n * If no api is specified, defaultApi is used (see above)\n */\nexport const settingsMap = {\n  'defaultScope': 'source.privacy',\n  'defaultNSFW': 'source.sensitive', // BROKEN: pleroma/pleroma#2837\n  'stripRichContent': {\n    get: 'source.pleroma.no_rich_text',\n    set: 'no_rich_text'\n  },\n  // Privacy\n  'locked': 'locked',\n  'acceptChatMessages': {\n    get: 'pleroma.accepts_chat_messages',\n    set: 'accepts_chat_messages'\n  },\n  'allowFollowingMove': {\n    get: 'pleroma.allow_following_move',\n    set: 'allow_following_move'\n  },\n  'discoverable': {\n    get: 'source.pleroma.discoverable',\n    set: 'discoverable'\n  },\n  'hideFavorites': {\n    get: 'pleroma.hide_favorites',\n    set: 'hide_favorites'\n  },\n  'hideFollowers': {\n    get: 'pleroma.hide_followers',\n    set: 'hide_followers'\n  },\n  'hideFollows': {\n    get: 'pleroma.hide_follows',\n    set: 'hide_follows'\n  },\n  'hideFollowersCount': {\n    get: 'pleroma.hide_followers_count',\n    set: 'hide_followers_count'\n  },\n  'hideFollowsCount': {\n    get: 'pleroma.hide_follows_count',\n    set: 'hide_follows_count'\n  },\n  // NotificationSettingsAPIs\n  'webPushHideContents': {\n    get: 'pleroma.notification_settings.hide_notification_contents',\n    set: 'hide_notification_contents',\n    api: notificationsApi\n  },\n  'blockNotificationsFromStrangers': {\n    get: 'pleroma.notification_settings.block_from_strangers',\n    set: 'block_from_strangers',\n    api: notificationsApi\n  }\n}\n\nexport const defaultState = Object.fromEntries(Object.keys(settingsMap).map(key => [key, null]))\n\nconst serverSideConfig = {\n  state: { ...defaultState },\n  mutations: {\n    confirmServerSideOption (state, { name, value }) {\n      set(state, name, value)\n    },\n    wipeServerSideOption (state, { name }) {\n      set(state, name, null)\n    },\n    wipeAllServerSideOptions (state) {\n      Object.keys(settingsMap).forEach(key => {\n        set(state, key, null)\n      })\n    },\n    // Set the settings based on their path location\n    setCurrentUser (state, user) {\n      Object.entries(settingsMap).forEach((map) => {\n        const [name, value] = map\n        const { get: path = value } = value\n        set(state, name, get(user._original, path))\n      })\n    }\n  },\n  actions: {\n    setServerSideOption ({ rootState, state, commit, dispatch }, { name, value }) {\n      const oldValue = get(state, name)\n      const map = settingsMap[name]\n      if (!map) throw new Error('Invalid server-side setting')\n      const { set: path = map, api = defaultApi } = map\n      commit('wipeServerSideOption', { name })\n\n      api({ rootState, commit }, { path, value, oldValue })\n        .catch((e) => {\n          console.warn('Error setting server-side option:', e)\n          commit('confirmServerSideOption', { name, value: oldValue })\n        })\n    },\n    logout ({ commit }) {\n      commit('wipeAllServerSideOptions')\n    }\n  }\n}\n\nexport default serverSideConfig\n","import isFunction from 'lodash/isFunction'\n\nconst getComponentOptions = (Component) => (isFunction(Component)) ? Component.options : Component\n\nconst getComponentProps = (Component) => getComponentOptions(Component).props\n\nexport {\n  getComponentOptions,\n  getComponentProps\n}\n","<template>\n  <div\n    ref=\"root\"\n    v-click-outside=\"onClickOutside\"\n    class=\"emoji-input\"\n    :class=\"{ 'with-picker': !hideEmojiButton }\"\n  >\n    <slot />\n    <template v-if=\"enableEmojiPicker\">\n      <button\n        v-if=\"!hideEmojiButton\"\n        class=\"button-unstyled emoji-picker-icon\"\n        type=\"button\"\n        @click.prevent=\"togglePicker\"\n      >\n        <FAIcon :icon=\"['far', 'smile-beam']\" />\n      </button>\n      <EmojiPicker\n        v-if=\"enableEmojiPicker\"\n        ref=\"picker\"\n        :class=\"{ hide: !showPicker }\"\n        :enable-sticker-picker=\"enableStickerPicker\"\n        class=\"emoji-picker-panel\"\n        @emoji=\"insert\"\n        @sticker-uploaded=\"onStickerUploaded\"\n        @sticker-upload-failed=\"onStickerUploadFailed\"\n      />\n    </template>\n    <div\n      ref=\"panel\"\n      class=\"autocomplete-panel\"\n      :class=\"{ hide: !showSuggestions }\"\n    >\n      <div\n        ref=\"panel-body\"\n        class=\"autocomplete-panel-body\"\n      >\n        <div\n          v-for=\"(suggestion, index) in suggestions\"\n          :key=\"index\"\n          class=\"autocomplete-item\"\n          :class=\"{ highlighted: index === highlighted }\"\n          @click.stop.prevent=\"onClick($event, suggestion)\"\n        >\n          <span class=\"image\">\n            <img\n              v-if=\"suggestion.img\"\n              :src=\"suggestion.img\"\n            >\n            <span v-else>{{ suggestion.replacement }}</span>\n          </span>\n          <div class=\"label\">\n            <span class=\"displayText\">{{ suggestion.displayText }}</span>\n            <span class=\"detailText\">{{ suggestion.detailText }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./emoji_input.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.emoji-input {\n  display: flex;\n  flex-direction: column;\n  position: relative;\n\n  &.with-picker input {\n    padding-right: 30px;\n  }\n\n  .emoji-picker-icon {\n    position: absolute;\n    top: 0;\n    right: 0;\n    margin: .2em .25em;\n    font-size: 1.3em;\n    cursor: pointer;\n    line-height: 24px;\n\n    &:hover i {\n      color: $fallback--text;\n      color: var(--text, $fallback--text);\n    }\n  }\n  .emoji-picker-panel {\n    position: absolute;\n    z-index: 20;\n    margin-top: 2px;\n\n    &.hide {\n      display: none\n    }\n  }\n\n  .autocomplete {\n    &-panel {\n      position: absolute;\n      z-index: 20;\n      margin-top: 2px;\n\n      &.hide {\n        display: none\n      }\n\n      &-body {\n        margin: 0 0.5em 0 0.5em;\n        border-radius: $fallback--tooltipRadius;\n        border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n        box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.5);\n        box-shadow: var(--popupShadow);\n        min-width: 75%;\n        background-color: $fallback--bg;\n        background-color: var(--popover, $fallback--bg);\n        color: $fallback--link;\n        color: var(--popoverText, $fallback--link);\n        --faint: var(--popoverFaintText, $fallback--faint);\n        --faintLink: var(--popoverFaintLink, $fallback--faint);\n        --lightText: var(--popoverLightText, $fallback--lightText);\n        --postLink: var(--popoverPostLink, $fallback--link);\n        --postFaintLink: var(--popoverPostFaintLink, $fallback--link);\n        --icon: var(--popoverIcon, $fallback--icon);\n      }\n    }\n\n    &-item {\n      display: flex;\n      cursor: pointer;\n      padding: 0.2em 0.4em;\n      border-bottom: 1px solid rgba(0, 0, 0, 0.4);\n      height: 32px;\n\n      .image {\n        width: 32px;\n        height: 32px;\n        line-height: 32px;\n        text-align: center;\n        font-size: 32px;\n\n        margin-right: 4px;\n\n        img {\n          width: 32px;\n          height: 32px;\n          object-fit: contain;\n        }\n      }\n\n      .label {\n        display: flex;\n        flex-direction: column;\n        justify-content: center;\n        margin: 0 0.1em 0 0.2em;\n\n        .displayText {\n          line-height: 1.5;\n        }\n\n        .detailText {\n          font-size: 9px;\n          line-height: 9px;\n        }\n      }\n\n      &.highlighted {\n        background-color: $fallback--fg;\n        background-color: var(--selectedMenuPopover, $fallback--fg);\n        color: var(--selectedMenuPopoverText, $fallback--text);\n        --faint: var(--selectedMenuPopoverFaintText, $fallback--faint);\n        --faintLink: var(--selectedMenuPopoverFaintLink, $fallback--faint);\n        --lightText: var(--selectedMenuPopoverLightText, $fallback--lightText);\n        --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n      }\n    }\n  }\n\n  input, textarea {\n    flex: 1 0 auto;\n  }\n}\n</style>\n","import { reduce, find } from 'lodash'\n\nexport const replaceWord = (str, toReplace, replacement) => {\n  return str.slice(0, toReplace.start) + replacement + str.slice(toReplace.end)\n}\n\nexport const wordAtPosition = (str, pos) => {\n  const words = splitByWhitespaceBoundary(str)\n  const wordsWithPosition = addPositionToWords(words)\n\n  return find(wordsWithPosition, ({ start, end }) => start <= pos && end > pos)\n}\n\nexport const addPositionToWords = (words) => {\n  return reduce(words, (result, word) => {\n    const data = {\n      word,\n      start: 0,\n      end: word.length\n    }\n\n    if (result.length > 0) {\n      const previous = result.pop()\n\n      data.start += previous.end\n      data.end += previous.end\n\n      result.push(previous)\n    }\n\n    result.push(data)\n\n    return result\n  }, [])\n}\n\nexport const splitByWhitespaceBoundary = (str) => {\n  let result = []\n  let currentWord = ''\n  for (let i = 0; i < str.length; i++) {\n    const currentChar = str[i]\n    // Starting a new word\n    if (!currentWord) {\n      currentWord = currentChar\n      continue\n    }\n    // current character is whitespace while word isn't, or vice versa:\n    // add our current word to results, start over the current word.\n    if (!!currentChar.trim() !== !!currentWord.trim()) {\n      result.push(currentWord)\n      currentWord = currentChar\n      continue\n    }\n    currentWord += currentChar\n  }\n  // Add the last word we were working on\n  if (currentWord) {\n    result.push(currentWord)\n  }\n  return result\n}\n\nconst completion = {\n  wordAtPosition,\n  addPositionToWords,\n  splitByWhitespaceBoundary,\n  replaceWord\n}\n\nexport default completion\n","<template>\n  <div class=\"emoji-picker panel panel-default panel-body\">\n    <div class=\"heading\">\n      <span class=\"emoji-tabs\">\n        <span\n          v-for=\"group in emojis\"\n          :key=\"group.id\"\n          class=\"emoji-tabs-item\"\n          :class=\"{\n            active: activeGroupView === group.id,\n            disabled: group.emojis.length === 0\n          }\"\n          :title=\"group.text\"\n          @click.prevent=\"highlight(group.id)\"\n        >\n          <FAIcon\n            :icon=\"group.icon\"\n            fixed-width\n          />\n        </span>\n      </span>\n      <span\n        v-if=\"stickerPickerEnabled\"\n        class=\"additional-tabs\"\n      >\n        <span\n          class=\"stickers-tab-icon additional-tabs-item\"\n          :class=\"{active: showingStickers}\"\n          :title=\"$t('emoji.stickers')\"\n          @click.prevent=\"toggleStickers\"\n        >\n          <FAIcon\n            icon=\"sticky-note\"\n            fixed-width\n          />\n        </span>\n      </span>\n    </div>\n    <div class=\"content\">\n      <div\n        class=\"emoji-content\"\n        :class=\"{hidden: showingStickers}\"\n      >\n        <div class=\"emoji-search\">\n          <input\n            v-model=\"keyword\"\n            type=\"text\"\n            class=\"form-control\"\n            :placeholder=\"$t('emoji.search_emoji')\"\n          >\n        </div>\n        <div\n          ref=\"emoji-groups\"\n          class=\"emoji-groups\"\n          :class=\"groupsScrolledClass\"\n          @scroll=\"onScroll\"\n        >\n          <div\n            v-for=\"group in emojisView\"\n            :key=\"group.id\"\n            class=\"emoji-group\"\n          >\n            <h6\n              :ref=\"'group-' + group.id\"\n              class=\"emoji-group-title\"\n            >\n              {{ group.text }}\n            </h6>\n            <span\n              v-for=\"emoji in group.emojis\"\n              :key=\"group.id + emoji.displayText\"\n              :title=\"emoji.displayText\"\n              class=\"emoji-item\"\n              @click.stop.prevent=\"onEmoji(emoji)\"\n            >\n              <span v-if=\"!emoji.imageUrl\">{{ emoji.replacement }}</span>\n              <img\n                v-else\n                :src=\"emoji.imageUrl\"\n              >\n            </span>\n            <span :ref=\"'group-end-' + group.id\" />\n          </div>\n        </div>\n        <div class=\"keep-open\">\n          <Checkbox v-model=\"keepOpen\">\n            {{ $t('emoji.keep_open') }}\n          </Checkbox>\n        </div>\n      </div>\n      <div\n        v-if=\"showingStickers\"\n        class=\"stickers-content\"\n      >\n        <sticker-picker\n          @uploaded=\"onStickerUploaded\"\n          @upload-failed=\"onStickerUploadFailed\"\n        />\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./emoji_picker.js\"></script>\n<style lang=\"scss\" src=\"./emoji_picker.scss\"></style>\n","import { defineAsyncComponent } from 'vue'\nimport Checkbox from '../checkbox/checkbox.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faBoxOpen,\n  faStickyNote,\n  faSmileBeam\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faBoxOpen,\n  faStickyNote,\n  faSmileBeam\n)\n\n// At widest, approximately 20 emoji are visible in a row,\n// loading 3 rows, could be overkill for narrow picker\nconst LOAD_EMOJI_BY = 60\n\n// When to start loading new batch emoji, in pixels\nconst LOAD_EMOJI_MARGIN = 64\n\nconst filterByKeyword = (list, keyword = '') => {\n  if (keyword === '') return list\n\n  const keywordLowercase = keyword.toLowerCase()\n  let orderedEmojiList = []\n  for (const emoji of list) {\n    const indexOfKeyword = emoji.displayText.toLowerCase().indexOf(keywordLowercase)\n    if (indexOfKeyword > -1) {\n      if (!Array.isArray(orderedEmojiList[indexOfKeyword])) {\n        orderedEmojiList[indexOfKeyword] = []\n      }\n      orderedEmojiList[indexOfKeyword].push(emoji)\n    }\n  }\n  return orderedEmojiList.flat()\n}\n\nconst EmojiPicker = {\n  props: {\n    enableStickerPicker: {\n      required: false,\n      type: Boolean,\n      default: false\n    }\n  },\n  data () {\n    return {\n      keyword: '',\n      activeGroup: 'custom',\n      showingStickers: false,\n      groupsScrolledClass: 'scrolled-top',\n      keepOpen: false,\n      customEmojiBufferSlice: LOAD_EMOJI_BY,\n      customEmojiTimeout: null,\n      customEmojiLoadAllConfirmed: false\n    }\n  },\n  components: {\n    StickerPicker: defineAsyncComponent(() => import('../sticker_picker/sticker_picker.vue')),\n    Checkbox\n  },\n  methods: {\n    onStickerUploaded (e) {\n      this.$emit('sticker-uploaded', e)\n    },\n    onStickerUploadFailed (e) {\n      this.$emit('sticker-upload-failed', e)\n    },\n    onEmoji (emoji) {\n      const value = emoji.imageUrl ? `:${emoji.displayText}:` : emoji.replacement\n      this.$emit('emoji', { insertion: value, keepOpen: this.keepOpen })\n    },\n    onScroll (e) {\n      const target = (e && e.target) || this.$refs['emoji-groups']\n      this.updateScrolledClass(target)\n      this.scrolledGroup(target)\n      this.triggerLoadMore(target)\n    },\n    highlight (key) {\n      const ref = this.$refs['group-' + key]\n      const top = ref.offsetTop\n      this.setShowStickers(false)\n      this.activeGroup = key\n      this.$nextTick(() => {\n        this.$refs['emoji-groups'].scrollTop = top + 1\n      })\n    },\n    updateScrolledClass (target) {\n      if (target.scrollTop <= 5) {\n        this.groupsScrolledClass = 'scrolled-top'\n      } else if (target.scrollTop >= target.scrollTopMax - 5) {\n        this.groupsScrolledClass = 'scrolled-bottom'\n      } else {\n        this.groupsScrolledClass = 'scrolled-middle'\n      }\n    },\n    triggerLoadMore (target) {\n      const ref = this.$refs['group-end-custom']\n      if (!ref) return\n      const bottom = ref.offsetTop + ref.offsetHeight\n\n      const scrollerBottom = target.scrollTop + target.clientHeight\n      const scrollerTop = target.scrollTop\n      const scrollerMax = target.scrollHeight\n\n      // Loads more emoji when they come into view\n      const approachingBottom = bottom - scrollerBottom < LOAD_EMOJI_MARGIN\n      // Always load when at the very top in case there's no scroll space yet\n      const atTop = scrollerTop < 5\n      // Don't load when looking at unicode category or at the very bottom\n      const bottomAboveViewport = bottom < scrollerTop || scrollerBottom === scrollerMax\n      if (!bottomAboveViewport && (approachingBottom || atTop)) {\n        this.loadEmoji()\n      }\n    },\n    scrolledGroup (target) {\n      const top = target.scrollTop + 5\n      this.$nextTick(() => {\n        this.emojisView.forEach(group => {\n          const ref = this.$refs['group-' + group.id]\n          if (ref.offsetTop <= top) {\n            this.activeGroup = group.id\n          }\n        })\n      })\n    },\n    loadEmoji () {\n      const allLoaded = this.customEmojiBuffer.length === this.filteredEmoji.length\n\n      if (allLoaded) {\n        return\n      }\n\n      this.customEmojiBufferSlice += LOAD_EMOJI_BY\n    },\n    startEmojiLoad (forceUpdate = false) {\n      if (!forceUpdate) {\n        this.keyword = ''\n      }\n      this.$nextTick(() => {\n        this.$refs['emoji-groups'].scrollTop = 0\n      })\n      const bufferSize = this.customEmojiBuffer.length\n      const bufferPrefilledAll = bufferSize === this.filteredEmoji.length\n      if (bufferPrefilledAll && !forceUpdate) {\n        return\n      }\n      this.customEmojiBufferSlice = LOAD_EMOJI_BY\n    },\n    toggleStickers () {\n      this.showingStickers = !this.showingStickers\n    },\n    setShowStickers (value) {\n      this.showingStickers = value\n    }\n  },\n  watch: {\n    keyword () {\n      this.customEmojiLoadAllConfirmed = false\n      this.onScroll()\n      this.startEmojiLoad(true)\n    }\n  },\n  computed: {\n    activeGroupView () {\n      return this.showingStickers ? '' : this.activeGroup\n    },\n    stickersAvailable () {\n      if (this.$store.state.instance.stickers) {\n        return this.$store.state.instance.stickers.length > 0\n      }\n      return 0\n    },\n    filteredEmoji () {\n      return filterByKeyword(\n        this.$store.state.instance.customEmoji || [],\n        this.keyword\n      )\n    },\n    customEmojiBuffer () {\n      return this.filteredEmoji.slice(0, this.customEmojiBufferSlice)\n    },\n    emojis () {\n      const standardEmojis = this.$store.state.instance.emoji || []\n      const customEmojis = this.customEmojiBuffer\n\n      return [\n        {\n          id: 'custom',\n          text: this.$t('emoji.custom'),\n          icon: 'smile-beam',\n          emojis: customEmojis\n        },\n        {\n          id: 'standard',\n          text: this.$t('emoji.unicode'),\n          icon: 'box-open',\n          emojis: filterByKeyword(standardEmojis, this.keyword)\n        }\n      ]\n    },\n    emojisView () {\n      return this.emojis.filter(value => value.emojis.length > 0)\n    },\n    stickerPickerEnabled () {\n      return (this.$store.state.instance.stickers || []).length !== 0\n    }\n  }\n}\n\nexport default EmojiPicker\n","import { render } from \"./emoji_picker.vue?vue&type=template&id=50bb08b3\"\nimport script from \"./emoji_picker.js?vue&type=script&lang=js\"\nexport * from \"./emoji_picker.js?vue&type=script&lang=js\"\n\nimport \"./emoji_picker.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Completion from '../../services/completion/completion.js'\nimport EmojiPicker from '../emoji_picker/emoji_picker.vue'\nimport { take } from 'lodash'\nimport { findOffset } from '../../services/offset_finder/offset_finder.service.js'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faSmileBeam\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n  faSmileBeam\n)\n\n/**\n * EmojiInput - augmented inputs for emoji and autocomplete support in inputs\n * without having to give up the comfort of <input/> and <textarea/> elements\n *\n * Intended usage is:\n * <EmojiInput v-model=\"something\">\n *   <input v-model=\"something\"/>\n * </EmojiInput>\n *\n * Works only with <input> and <textarea>. Intended to use with only one nested\n * input. It will find first input or textarea and work with that, multiple\n * nested children not tested. You HAVE TO duplicate v-model for both\n * <emoji-input> and <input>/<textarea> otherwise it will not work.\n *\n * Be prepared for CSS troubles though because it still wraps component in a div\n * while TRYING to make it look like nothing happened, but it could break stuff.\n */\n\nconst EmojiInput = {\n  emits: ['update:modelValue', 'shown'],\n  props: {\n    suggest: {\n      /**\n       * suggest: function (input: String) => Suggestion[]\n       *\n       * Function that takes input string which takes string (textAtCaret)\n       * and returns an array of Suggestions\n       *\n       * Suggestion is an object containing following properties:\n       * displayText: string. Main display text, what actual suggestion\n       *    represents (user's screen name/emoji shortcode)\n       * replacement: string. Text that should replace the textAtCaret\n       * detailText: string, optional. Subtitle text, providing additional info\n       *    if present (user's nickname)\n       * imageUrl: string, optional. Image to display alongside with suggestion,\n       *    currently if no image is provided, replacement will be used (for\n       *    unicode emojis)\n       *\n       * TODO: make it asynchronous when adding proper server-provided user\n       * suggestions\n       *\n       * For commonly used suggestors (emoji, users, both) use suggestor.js\n       */\n      required: true,\n      type: Function\n    },\n    modelValue: {\n      /**\n       * Used for v-model\n       */\n      required: true,\n      type: String\n    },\n    enableEmojiPicker: {\n      /**\n       * Enables emoji picker support, this implies that custom emoji are supported\n       */\n      required: false,\n      type: Boolean,\n      default: false\n    },\n    hideEmojiButton: {\n      /**\n       * intended to use with external picker trigger, i.e. you have a button outside\n       * input that will open up the picker, see triggerShowPicker()\n       */\n      required: false,\n      type: Boolean,\n      default: false\n    },\n    enableStickerPicker: {\n      /**\n       * Enables sticker picker support, only makes sense when enableEmojiPicker=true\n       */\n      required: false,\n      type: Boolean,\n      default: false\n    },\n    placement: {\n      /**\n       * Forces the panel to take a specific position relative to the input element.\n       * The 'auto' placement chooses either bottom or top depending on which has the available space (when both have available space, bottom is preferred).\n       */\n      required: false,\n      type: String, // 'auto', 'top', 'bottom'\n      default: 'auto'\n    },\n    newlineOnCtrlEnter: {\n      required: false,\n      type: Boolean,\n      default: false\n    }\n  },\n  data () {\n    return {\n      input: undefined,\n      highlighted: 0,\n      caret: 0,\n      focused: false,\n      blurTimeout: null,\n      showPicker: false,\n      temporarilyHideSuggestions: false,\n      keepOpen: false,\n      disableClickOutside: false,\n      suggestions: []\n    }\n  },\n  components: {\n    EmojiPicker\n  },\n  computed: {\n    padEmoji () {\n      return this.$store.getters.mergedConfig.padEmoji\n    },\n    showSuggestions () {\n      return this.focused &&\n        this.suggestions &&\n        this.suggestions.length > 0 &&\n        !this.showPicker &&\n        !this.temporarilyHideSuggestions\n    },\n    textAtCaret () {\n      return (this.wordAtCaret || {}).word || ''\n    },\n    wordAtCaret () {\n      if (this.modelValue && this.caret) {\n        const word = Completion.wordAtPosition(this.modelValue, this.caret - 1) || {}\n        return word\n      }\n    }\n  },\n  mounted () {\n    const { root } = this.$refs\n    const input = root.querySelector('.emoji-input > input') || root.querySelector('.emoji-input > textarea')\n    if (!input) return\n    this.input = input\n    this.resize()\n    input.addEventListener('blur', this.onBlur)\n    input.addEventListener('focus', this.onFocus)\n    input.addEventListener('paste', this.onPaste)\n    input.addEventListener('keyup', this.onKeyUp)\n    input.addEventListener('keydown', this.onKeyDown)\n    input.addEventListener('click', this.onClickInput)\n    input.addEventListener('transitionend', this.onTransition)\n    input.addEventListener('input', this.onInput)\n  },\n  unmounted () {\n    const { input } = this\n    if (input) {\n      input.removeEventListener('blur', this.onBlur)\n      input.removeEventListener('focus', this.onFocus)\n      input.removeEventListener('paste', this.onPaste)\n      input.removeEventListener('keyup', this.onKeyUp)\n      input.removeEventListener('keydown', this.onKeyDown)\n      input.removeEventListener('click', this.onClickInput)\n      input.removeEventListener('transitionend', this.onTransition)\n      input.removeEventListener('input', this.onInput)\n    }\n  },\n  watch: {\n    showSuggestions: function (newValue) {\n      this.$emit('shown', newValue)\n    },\n    textAtCaret: async function (newWord) {\n      const firstchar = newWord.charAt(0)\n      this.suggestions = []\n      if (newWord === firstchar) return\n      const matchedSuggestions = await this.suggest(newWord)\n      // Async: cancel if textAtCaret has changed during wait\n      if (this.textAtCaret !== newWord) return\n      if (matchedSuggestions.length <= 0) return\n      this.suggestions = take(matchedSuggestions, 5)\n        .map(({ imageUrl, ...rest }) => ({\n          ...rest,\n          img: imageUrl || ''\n        }))\n    },\n    suggestions: {\n      handler (newValue) {\n        this.$nextTick(this.resize)\n      },\n      deep: true\n    }\n  },\n  methods: {\n    focusPickerInput () {\n      const pickerEl = this.$refs.picker.$el\n      if (!pickerEl) return\n      const pickerInput = pickerEl.querySelector('input')\n      if (pickerInput) pickerInput.focus()\n    },\n    triggerShowPicker () {\n      this.showPicker = true\n      this.$refs.picker.startEmojiLoad()\n      this.$nextTick(() => {\n        this.scrollIntoView()\n        this.focusPickerInput()\n      })\n      // This temporarily disables \"click outside\" handler\n      // since external trigger also means click originates\n      // from outside, thus preventing picker from opening\n      this.disableClickOutside = true\n      setTimeout(() => {\n        this.disableClickOutside = false\n      }, 0)\n    },\n    togglePicker () {\n      this.input.focus()\n      this.showPicker = !this.showPicker\n      if (this.showPicker) {\n        this.scrollIntoView()\n        this.$refs.picker.startEmojiLoad()\n        this.$nextTick(this.focusPickerInput)\n      }\n    },\n    replace (replacement) {\n      const newValue = Completion.replaceWord(this.modelValue, this.wordAtCaret, replacement)\n      this.$emit('update:modelValue', newValue)\n      this.caret = 0\n    },\n    insert ({ insertion, keepOpen, surroundingSpace = true }) {\n      const before = this.modelValue.substring(0, this.caret) || ''\n      const after = this.modelValue.substring(this.caret) || ''\n\n      /* Using a bit more smart approach to padding emojis with spaces:\n       * - put a space before cursor if there isn't one already, unless we\n       *   are at the beginning of post or in spam mode\n       * - put a space after emoji if there isn't one already unless we are\n       *   in spam mode\n       *\n       * The idea is that when you put a cursor somewhere in between sentence\n       * inserting just ' :emoji: ' will add more spaces to post which might\n       * break the flow/spacing, as well as the case where user ends sentence\n       * with a space before adding emoji.\n       *\n       * Spam mode is intended for creating multi-part emojis and overall spamming\n       * them, masto seem to be rendering :emoji::emoji: correctly now so why not\n       */\n      const isSpaceRegex = /\\s/\n      const spaceBefore = (surroundingSpace && !isSpaceRegex.exec(before.slice(-1)) && before.length && this.padEmoji > 0) ? ' ' : ''\n      const spaceAfter = (surroundingSpace && !isSpaceRegex.exec(after[0]) && this.padEmoji) ? ' ' : ''\n\n      const newValue = [\n        before,\n        spaceBefore,\n        insertion,\n        spaceAfter,\n        after\n      ].join('')\n      this.keepOpen = keepOpen\n      this.$emit('update:modelValue', newValue)\n      const position = this.caret + (insertion + spaceAfter + spaceBefore).length\n      if (!keepOpen) {\n        this.input.focus()\n      }\n\n      this.$nextTick(function () {\n        // Re-focus inputbox after clicking suggestion\n        // Set selection right after the replacement instead of the very end\n        this.input.setSelectionRange(position, position)\n        this.caret = position\n      })\n    },\n    replaceText (e, suggestion) {\n      const len = this.suggestions.length || 0\n      if (this.textAtCaret.length === 1) { return }\n      if (len > 0 || suggestion) {\n        const chosenSuggestion = suggestion || this.suggestions[this.highlighted]\n        const replacement = chosenSuggestion.replacement\n        const newValue = Completion.replaceWord(this.modelValue, this.wordAtCaret, replacement)\n        this.$emit('update:modelValue', newValue)\n        this.highlighted = 0\n        const position = this.wordAtCaret.start + replacement.length\n\n        this.$nextTick(function () {\n          // Re-focus inputbox after clicking suggestion\n          this.input.focus()\n          // Set selection right after the replacement instead of the very end\n          this.input.setSelectionRange(position, position)\n          this.caret = position\n        })\n        e.preventDefault()\n      }\n    },\n    cycleBackward (e) {\n      const len = this.suggestions.length || 0\n      if (len > 1) {\n        this.highlighted -= 1\n        if (this.highlighted < 0) {\n          this.highlighted = this.suggestions.length - 1\n        }\n        e.preventDefault()\n      } else {\n        this.highlighted = 0\n      }\n    },\n    cycleForward (e) {\n      const len = this.suggestions.length || 0\n      if (len > 1) {\n        this.highlighted += 1\n        if (this.highlighted >= len) {\n          this.highlighted = 0\n        }\n        e.preventDefault()\n      } else {\n        this.highlighted = 0\n      }\n    },\n    scrollIntoView () {\n      const rootRef = this.$refs['picker'].$el\n      /* Scroller is either `window` (replies in TL), sidebar (main post form,\n       * replies in notifs) or mobile post form. Note that getting and setting\n       * scroll is different for `Window` and `Element`s\n       */\n      const scrollerRef = this.$el.closest('.sidebar-scroller') ||\n            this.$el.closest('.post-form-modal-view') ||\n            window\n      const currentScroll = scrollerRef === window\n        ? scrollerRef.scrollY\n        : scrollerRef.scrollTop\n      const scrollerHeight = scrollerRef === window\n        ? scrollerRef.innerHeight\n        : scrollerRef.offsetHeight\n\n      const scrollerBottomBorder = currentScroll + scrollerHeight\n      // We check where the bottom border of root element is, this uses findOffset\n      // to find offset relative to scrollable container (scroller)\n      const rootBottomBorder = rootRef.offsetHeight + findOffset(rootRef, scrollerRef).top\n\n      const bottomDelta = Math.max(0, rootBottomBorder - scrollerBottomBorder)\n      // could also check top delta but there's no case for it\n      const targetScroll = currentScroll + bottomDelta\n\n      if (scrollerRef === window) {\n        scrollerRef.scroll(0, targetScroll)\n      } else {\n        scrollerRef.scrollTop = targetScroll\n      }\n\n      this.$nextTick(() => {\n        const { offsetHeight } = this.input\n        const { picker } = this.$refs\n        const pickerBottom = picker.$el.getBoundingClientRect().bottom\n        if (pickerBottom > window.innerHeight) {\n          picker.$el.style.top = 'auto'\n          picker.$el.style.bottom = offsetHeight + 'px'\n        }\n      })\n    },\n    onTransition (e) {\n      this.resize()\n    },\n    onBlur (e) {\n      // Clicking on any suggestion removes focus from autocomplete,\n      // preventing click handler ever executing.\n      this.blurTimeout = setTimeout(() => {\n        this.focused = false\n        this.setCaret(e)\n        this.resize()\n      }, 200)\n    },\n    onClick (e, suggestion) {\n      this.replaceText(e, suggestion)\n    },\n    onFocus (e) {\n      if (this.blurTimeout) {\n        clearTimeout(this.blurTimeout)\n        this.blurTimeout = null\n      }\n\n      if (!this.keepOpen) {\n        this.showPicker = false\n      }\n      this.focused = true\n      this.setCaret(e)\n      this.resize()\n      this.temporarilyHideSuggestions = false\n    },\n    onKeyUp (e) {\n      const { key } = e\n      this.setCaret(e)\n      this.resize()\n\n      // Setting hider in keyUp to prevent suggestions from blinking\n      // when moving away from suggested spot\n      if (key === 'Escape') {\n        this.temporarilyHideSuggestions = true\n      } else {\n        this.temporarilyHideSuggestions = false\n      }\n    },\n    onPaste (e) {\n      this.setCaret(e)\n      this.resize()\n    },\n    onKeyDown (e) {\n      const { ctrlKey, shiftKey, key } = e\n      if (this.newlineOnCtrlEnter && ctrlKey && key === 'Enter') {\n        this.insert({ insertion: '\\n', surroundingSpace: false })\n        // Ensure only one new line is added on macos\n        e.stopPropagation()\n        e.preventDefault()\n\n        // Scroll the input element to the position of the cursor\n        this.$nextTick(() => {\n          this.input.blur()\n          this.input.focus()\n        })\n      }\n      // Disable suggestions hotkeys if suggestions are hidden\n      if (!this.temporarilyHideSuggestions) {\n        if (key === 'Tab') {\n          if (shiftKey) {\n            this.cycleBackward(e)\n          } else {\n            this.cycleForward(e)\n          }\n        }\n        if (key === 'ArrowUp') {\n          this.cycleBackward(e)\n        } else if (key === 'ArrowDown') {\n          this.cycleForward(e)\n        }\n        if (key === 'Enter') {\n          if (!ctrlKey) {\n            this.replaceText(e)\n          }\n        }\n      }\n      // Probably add optional keyboard controls for emoji picker?\n\n      // Escape hides suggestions, if suggestions are hidden it\n      // de-focuses the element (i.e. default browser behavior)\n      if (key === 'Escape') {\n        if (!this.temporarilyHideSuggestions) {\n          this.input.focus()\n        }\n      }\n\n      this.showPicker = false\n      this.resize()\n    },\n    onInput (e) {\n      this.showPicker = false\n      this.setCaret(e)\n      this.resize()\n      this.$emit('update:modelValue', e.target.value)\n    },\n    onClickInput (e) {\n      this.showPicker = false\n    },\n    onClickOutside (e) {\n      if (this.disableClickOutside) return\n      this.showPicker = false\n    },\n    onStickerUploaded (e) {\n      this.showPicker = false\n      this.$emit('sticker-uploaded', e)\n    },\n    onStickerUploadFailed (e) {\n      this.showPicker = false\n      this.$emit('sticker-upload-Failed', e)\n    },\n    setCaret ({ target: { selectionStart } }) {\n      this.caret = selectionStart\n    },\n    resize () {\n      const panel = this.$refs.panel\n      if (!panel) return\n      const picker = this.$refs.picker.$el\n      const panelBody = this.$refs['panel-body']\n      const { offsetHeight, offsetTop } = this.input\n      const offsetBottom = offsetTop + offsetHeight\n\n      this.setPlacement(panelBody, panel, offsetBottom)\n      this.setPlacement(picker, picker, offsetBottom)\n    },\n    setPlacement (container, target, offsetBottom) {\n      if (!container || !target) return\n\n      target.style.top = offsetBottom + 'px'\n      target.style.bottom = 'auto'\n\n      if (this.placement === 'top' || (this.placement === 'auto' && this.overflowsBottom(container))) {\n        target.style.top = 'auto'\n        target.style.bottom = this.input.offsetHeight + 'px'\n      }\n    },\n    overflowsBottom (el) {\n      return el.getBoundingClientRect().bottom > window.innerHeight\n    }\n  }\n}\n\nexport default EmojiInput\n","import { render } from \"./emoji_input.vue?vue&type=template&id=59b4cd40\"\nimport script from \"./emoji_input.js?vue&type=script&lang=js\"\nexport * from \"./emoji_input.js?vue&type=script&lang=js\"\n\nimport \"./emoji_input.vue?vue&type=style&index=0&id=59b4cd40&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","module.exports = __webpack_public_path__ + \"static/img/nsfw.ca95de9.png\";","export default {\n  \"about\": {\n    \"mrf\": {\n      \"federation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Federation\"])},\n      \"keyword\": {\n        \"keyword_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keyword policies\"])},\n        \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Removal from \\\"The Whole Known Network\\\" Timeline\"])},\n        \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reject\"])},\n        \"replace\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Replace\"])},\n        \"is_replaced_by\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"→\"])}\n      },\n      \"mrf_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enabled MRF policies\"])},\n      \"mrf_policies_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MRF policies manipulate the federation behaviour of the instance.  The following policies are enabled:\"])},\n      \"simple\": {\n        \"simple_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instance-specific policies\"])},\n        \"instance\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instance\"])},\n        \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reason\"])},\n        \"not_applicable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N/A\"])},\n        \"accept\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accept\"])},\n        \"accept_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance only accepts messages from the following instances:\"])},\n        \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reject\"])},\n        \"reject_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance will not accept messages from the following instances:\"])},\n        \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Quarantine\"])},\n        \"quarantine_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance will send only public posts to the following instances:\"])},\n        \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Removal from \\\"Known Network\\\" Timeline\"])},\n        \"ftl_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance removes these instances from \\\"Known Network\\\" timeline:\"])},\n        \"media_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media Removal\"])},\n        \"media_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance removes media from posts on the following instances:\"])},\n        \"media_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media force-set as sensitive\"])},\n        \"media_nsfw_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance forces media to be set sensitive in posts on the following instances:\"])}\n      }\n    },\n    \"staff\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Staff\"])}\n  },\n  \"shoutbox\": {\n    \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shoutbox\"])}\n  },\n  \"domain_mute_card\": {\n    \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute\"])},\n    \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Muting…\"])},\n    \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmute\"])},\n    \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmuting…\"])}\n  },\n  \"exporter\": {\n    \"export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Export\"])},\n    \"processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Processing, you'll soon be asked to download your file\"])}\n  },\n  \"features_panel\": {\n    \"shout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shoutbox\"])},\n    \"pleroma_chat_messages\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma Chat\"])},\n    \"gopher\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gopher\"])},\n    \"media_proxy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media proxy\"])},\n    \"scope_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scope options\"])},\n    \"text_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Text limit\"])},\n    \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Features\"])},\n    \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Who to follow\"])},\n    \"upload_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload limit\"])}\n  },\n  \"finder\": {\n    \"error_fetching_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error fetching user\"])},\n    \"find_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Find user\"])}\n  },\n  \"general\": {\n    \"apply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Apply\"])},\n    \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n    \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More\"])},\n    \"loading\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Loading…\"])},\n    \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"An error occured\"])},\n    \"error_retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Please try again\"])},\n    \"retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Try again\"])},\n    \"optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"optional\"])},\n    \"show_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show more\"])},\n    \"show_less\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show less\"])},\n    \"dismiss\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dismiss\"])},\n    \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])},\n    \"disable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disable\"])},\n    \"enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enable\"])},\n    \"confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirm\"])},\n    \"verify\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verify\"])},\n    \"close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close\"])},\n    \"peek\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Peek\"])},\n    \"role\": {\n      \"admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n      \"moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Moderator\"])}\n    },\n    \"flash_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Click to show Flash content using Ruffle (Experimental, may not work).\"])},\n    \"flash_security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Note that this can be potentially dangerous since Flash content is still arbitrary code.\"])},\n    \"flash_fail\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Failed to load flash content, see console for details.\"])},\n    \"scope_in_timeline\": {\n      \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Direct\"])},\n      \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Followers-only\"])},\n      \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Public\"])},\n      \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unlisted\"])}\n    }\n  },\n  \"image_cropper\": {\n    \"crop_picture\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Crop picture\"])},\n    \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save\"])},\n    \"save_without_cropping\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save without cropping\"])},\n    \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])}\n  },\n  \"importer\": {\n    \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n    \"success\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Imported successfully.\"])},\n    \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"An error occured while importing this file.\"])}\n  },\n  \"login\": {\n    \"login\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in\"])},\n    \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in with OAuth\"])},\n    \"logout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log out\"])},\n    \"password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password\"])},\n    \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g. lain\"])},\n    \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n    \"username\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Username\"])},\n    \"hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in to join the discussion\"])},\n    \"authentication_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Authentication code\"])},\n    \"enter_recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter a recovery code\"])},\n    \"enter_two_factor_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter a two-factor code\"])},\n    \"recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Recovery code\"])},\n    \"heading\": {\n      \"totp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Two-factor authentication\"])},\n      \"recovery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Two-factor recovery\"])}\n    }\n  },\n  \"media_modal\": {\n    \"previous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Previous\"])},\n    \"next\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Next\"])},\n    \"counter\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"current\")), \" / \", _interpolate(_named(\"total\"))])},\n    \"hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close media viewer\"])}\n  },\n  \"nav\": {\n    \"about\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"About\"])},\n    \"administration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n    \"back\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back\"])},\n    \"friend_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow requests\"])},\n    \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mentions\"])},\n    \"interactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interactions\"])},\n    \"dms\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Direct messages\"])},\n    \"public_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Public timeline\"])},\n    \"timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timeline\"])},\n    \"home_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Home timeline\"])},\n    \"twkn\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Known Network\"])},\n    \"bookmarks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bookmarks\"])},\n    \"user_search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Search\"])},\n    \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search\"])},\n    \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Who to follow\"])},\n    \"preferences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preferences\"])},\n    \"timelines\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timelines\"])},\n    \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Chats\"])}\n  },\n  \"notifications\": {\n    \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unknown status, searching for it…\"])},\n    \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Error fetching notifications: \", _interpolate(_list(0))])},\n    \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"favorited your status\"])},\n    \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"followed you\"])},\n    \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wants to follow you\"])},\n    \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load older notifications\"])},\n    \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifications\"])},\n    \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Read!\"])},\n    \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"repeated your status\"])},\n    \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No more notifications\"])},\n    \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"migrated to\"])},\n    \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reacted with \", _interpolate(_list(0))])},\n    \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"poll has ended\"])}\n  },\n  \"polls\": {\n    \"add_poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add poll\"])},\n    \"add_option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add option\"])},\n    \"option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Option\"])},\n    \"votes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"votes\"])},\n    \"people_voted_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" person voted\"]), _normalize([_interpolate(_named(\"count\")), \" people voted\"])])},\n    \"votes_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" vote\"]), _normalize([_interpolate(_named(\"count\")), \" votes\"])])},\n    \"vote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vote\"])},\n    \"type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Poll type\"])},\n    \"single_choice\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Single choice\"])},\n    \"multiple_choices\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Multiple choices\"])},\n    \"expiry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Poll age\"])},\n    \"expires_in\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Poll ends in \", _interpolate(_list(0))])},\n    \"expired\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Poll ended \", _interpolate(_list(0)), \" ago\"])},\n    \"not_enough_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Too few unique options in poll\"])}\n  },\n  \"emoji\": {\n    \"stickers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Stickers\"])},\n    \"emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emoji\"])},\n    \"keep_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep picker open\"])},\n    \"search_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search for an emoji\"])},\n    \"add_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Insert emoji\"])},\n    \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Custom emoji\"])},\n    \"unicode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unicode emoji\"])},\n    \"load_all_hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Loaded first \", _interpolate(_named(\"saneAmount\")), \" emoji, loading all emoji may cause performance issues.\"])},\n    \"load_all\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Loading all \", _interpolate(_named(\"emojiAmount\")), \" emoji\"])}\n  },\n  \"errors\": {\n    \"storage_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma could not access browser storage. Your login or your local settings won't be saved and you might encounter unexpected issues. Try enabling cookies.\"])}\n  },\n  \"interactions\": {\n    \"favs_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeats and favorites\"])},\n    \"follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New follows\"])},\n    \"moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User migrates\"])},\n    \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load older interactions\"])}\n  },\n  \"post_status\": {\n    \"new_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post new status\"])},\n    \"account_not_locked_warning\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Your account is not \", _interpolate(_list(0)), \". Anyone can follow you to view your follower-only posts.\"])},\n    \"account_not_locked_warning_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"locked\"])},\n    \"attachments_sensitive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mark attachments as sensitive\"])},\n    \"media_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media description\"])},\n    \"content_type\": {\n      \"text/plain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Plain text\"])},\n      \"text/html\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"HTML\"])},\n      \"text/markdown\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Markdown\"])},\n      \"text/bbcode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"BBCode\"])},\n      \"text/x.misskeymarkdown\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MFM\"])}\n    },\n    \"content_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Subject (optional)\"])},\n    \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Just landed in L.A.\"])},\n    \"direct_warning_to_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will be visible to all the mentioned users.\"])},\n    \"direct_warning_to_first_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will only be visible to the mentioned users at the beginning of the message.\"])},\n    \"posting\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posting\"])},\n    \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post\"])},\n    \"preview\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preview\"])},\n    \"preview_empty\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Empty\"])},\n    \"empty_status_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Can't post an empty status with no files\"])},\n    \"media_description_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Failed to update media, try again\"])},\n    \"scope_notice\": {\n      \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will be visible to everyone\"])},\n      \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will be visible to your followers only\"])},\n      \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will not be visible in Public Timeline and The Whole Known Network\"])},\n      \"local\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post won't be visible outside of IHBA\"])}\n    },\n    \"scope\": {\n      \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Direct - post to mentioned users only\"])},\n      \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Followers-only - post to followers only\"])},\n      \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Public - post to public timelines\"])},\n      \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unlisted - do not post to public timelines\"])},\n      \"local\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Local - do not federate this post\"])}\n    }\n  },\n  \"registration\": {\n    \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n    \"email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email\"])},\n    \"fullname\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Display name\"])},\n    \"password_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password confirmation\"])},\n    \"registration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration\"])},\n    \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invite token\"])},\n    \"captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"CAPTCHA\"])},\n    \"new_captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Click the image to get a new captcha\"])},\n    \"username_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g. lain\"])},\n    \"fullname_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g. Lain Iwakura\"])},\n    \"bio_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g.\\nHi, I'm Lain.\\nI’m an anime girl living in suburban Japan. You may know me from the Wired.\"])},\n    \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reason to register\"])},\n    \"reason_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance approves registrations manually.\\nLet the administration know why you want to register.\"])},\n    \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n    \"validations\": {\n      \"username_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n      \"fullname_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n      \"email_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n      \"password_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n      \"password_confirmation_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n      \"password_confirmation_match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"should be the same as password\"])}\n    },\n    \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"In which language do you want to receive emails from the server?\"])}\n  },\n  \"remote_user_resolver\": {\n    \"remote_user_resolver\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remote user resolver\"])},\n    \"searching_for\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Searching for\"])},\n    \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Not found.\"])}\n  },\n  \"selectable_list\": {\n    \"select_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Select all\"])}\n  },\n  \"settings\": {\n    \"app_name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App name\"])},\n    \"expert_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show advanced\"])},\n    \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save changes\"])},\n    \"security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Security\"])},\n    \"setting_changed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Setting is different from default\"])},\n    \"setting_server_side\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This setting is tied to your profile and affects all sessions and clients\"])},\n    \"enter_current_password_to_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter your current password to confirm your identity\"])},\n    \"post_look_feel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posts Look & Feel\"])},\n    \"mention_links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mention links\"])},\n    \"mfa\": {\n      \"otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OTP\"])},\n      \"setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Setup OTP\"])},\n      \"wait_pre_setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"presetting OTP\"])},\n      \"confirm_and_enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirm & enable OTP\"])},\n      \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Two-factor Authentication\"])},\n      \"generate_new_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Generate new recovery codes\"])},\n      \"warning_of_generate_new_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"When you generate new recovery codes, your old codes won’t work anymore.\"])},\n      \"recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Recovery codes.\"])},\n      \"waiting_a_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Receiving backup codes…\"])},\n      \"recovery_codes_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Write the codes down or save them somewhere secure - otherwise you won't see them again. If you lose access to your 2FA app and recovery codes you'll be locked out of your account.\"])},\n      \"authentication_methods\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Authentication methods\"])},\n      \"scan\": {\n        \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scan\"])},\n        \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Using your two-factor app, scan this QR code or enter text key:\"])},\n        \"secret_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Key\"])}\n      },\n      \"verify\": {\n        \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"To enable two-factor authentication, enter the code from your two-factor app:\"])}\n      }\n    },\n    \"allow_following_move\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Allow auto-follow when following account moves\"])},\n    \"attachmentRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attachments\"])},\n    \"attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attachments\"])},\n    \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avatar\"])},\n    \"avatarAltRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avatars (notifications)\"])},\n    \"avatarRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avatars\"])},\n    \"background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Background\"])},\n    \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n    \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Language for receiving emails from the server\"])},\n    \"block_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block export\"])},\n    \"block_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Export your blocks to a csv file\"])},\n    \"block_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block import\"])},\n    \"block_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error importing blocks\"])},\n    \"blocks_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocks imported! Processing them will take a while.\"])},\n    \"mute_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute export\"])},\n    \"mute_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Export your mutes to a csv file\"])},\n    \"mute_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute import\"])},\n    \"mute_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error importing mutes\"])},\n    \"mutes_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mutes imported! Processing them will take a while.\"])},\n    \"import_mutes_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Import mutes from a csv file\"])},\n    \"blocks_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocks\"])},\n    \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This is a bot account\"])},\n    \"btnRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Buttons\"])},\n    \"cBlue\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blue (Reply, follow)\"])},\n    \"cGreen\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Green (Retweet)\"])},\n    \"cOrange\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Orange (Favorite)\"])},\n    \"cRed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Red (Cancel)\"])},\n    \"change_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Change email\"])},\n    \"change_email_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"There was an issue changing your email.\"])},\n    \"changed_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email changed successfully!\"])},\n    \"change_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Change password\"])},\n    \"change_password_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"There was an issue changing your password.\"])},\n    \"changed_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password changed successfully!\"])},\n    \"chatMessageRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Chat message\"])},\n    \"collapse_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Collapse posts with subjects\"])},\n    \"composing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Composing\"])},\n    \"confirm_new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirm new password\"])},\n    \"current_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your current avatar\"])},\n    \"current_mascot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your current mascot\"])},\n    \"current_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Current password\"])},\n    \"mutes_and_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mutes and Blocks\"])},\n    \"data_import_export_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Data import / export\"])},\n    \"default_vis\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Default visibility scope\"])},\n    \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete account\"])},\n    \"delete_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Permanently delete your data and deactivate your account.\"])},\n    \"delete_account_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"There was an issue deleting your account. If this persists please contact your instance administrator.\"])},\n    \"delete_account_instructions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Type your password in the input below to confirm account deletion.\"])},\n    \"discoverable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Allow discovery of this account in search results and other services\"])},\n    \"domain_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Domains\"])},\n    \"avatar_size_instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The recommended minimum size for avatar images is 150x150 pixels.\"])},\n    \"pad_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pad emoji with spaces when adding from picker\"])},\n    \"emoji_reactions_on_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show emoji reactions on timeline\"])},\n    \"export_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save preset\"])},\n    \"filtering\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtering\"])},\n    \"wordfilter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wordfilter\"])},\n    \"filtering_explanation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"All statuses containing these words will be muted, one per line\"])},\n    \"word_filter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Word filter\"])},\n    \"follow_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow export\"])},\n    \"follow_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Export your follows to a csv file\"])},\n    \"follow_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow import\"])},\n    \"follow_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error importing followers\"])},\n    \"follows_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follows imported! Processing them will take a while.\"])},\n    \"accent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accent\"])},\n    \"foreground\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Foreground\"])},\n    \"general\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"General\"])},\n    \"hide_attachments_in_convo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide attachments in conversations\"])},\n    \"hide_attachments_in_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide attachments in timeline\"])},\n    \"hide_media_previews\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide media previews\"])},\n    \"hide_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide posts of muted users\"])},\n    \"mute_bot_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute bot posts\"])},\n    \"hide_bot_indication\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide bot indication in posts\"])},\n    \"hide_all_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide muted posts\"])},\n    \"max_thumbnails\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maximum amount of thumbnails per post (empty = no limit)\"])},\n    \"hide_isp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide instance-specific panel\"])},\n    \"hide_shoutbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide instance shoutbox\"])},\n    \"right_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reverse order of columns\"])},\n    \"always_show_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Always show floating New Post button\"])},\n    \"hide_wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide instance wallpaper\"])},\n    \"preload_images\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preload images\"])},\n    \"use_one_click_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open NSFW attachments with just one click\"])},\n    \"hide_post_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide post statistics (e.g. the number of favorites)\"])},\n    \"hide_user_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide user statistics (e.g. the number of followers)\"])},\n    \"hide_filtered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide all filtered posts\"])},\n    \"hide_wordfiltered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide word-filtered statuses\"])},\n    \"hide_muted_threads\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide muted threads\"])},\n    \"import_blocks_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Import blocks from a csv file\"])},\n    \"import_followers_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Import follows from a csv file\"])},\n    \"import_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load preset\"])},\n    \"inputRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input fields\"])},\n    \"checkboxRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Checkboxes\"])},\n    \"instance_default\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(default: \", _interpolate(_named(\"value\")), \")\"])},\n    \"instance_default_simple\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(default)\"])},\n    \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interface\"])},\n    \"interfaceLanguage\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interface language\"])},\n    \"invalid_theme_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The selected file is not a supported Pleroma theme. No changes to your theme were made.\"])},\n    \"limited_availability\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unavailable in your browser\"])},\n    \"links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Links\"])},\n    \"lock_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Restrict your account to approved followers only\"])},\n    \"loop_video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Loop videos\"])},\n    \"loop_video_silent_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Loop only videos without sound (i.e. Mastodon's \\\"gifs\\\")\"])},\n    \"mutes_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mutes\"])},\n    \"play_videos_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Play videos in a popup frame\"])},\n    \"file_export_import\": {\n      \"backup_restore\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Settings backup\"])},\n      \"backup_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Backup settings to file\"])},\n      \"backup_settings_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Backup settings and theme to file\"])},\n      \"restore_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Restore settings from file\"])},\n      \"errors\": {\n        \"invalid_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The selected file is not a supported Pleroma settings backup. No changes were made.\"])},\n        \"file_too_new\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Incompatile major version: \", _interpolate(_named(\"fileMajor\")), \", this PleromaFE (settings ver \", _interpolate(_named(\"feMajor\")), \") is too old to handle it\"])},\n        \"file_too_old\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Incompatile major version: \", _interpolate(_named(\"fileMajor\")), \", file version is too old and not supported (min. set. ver. \", _interpolate(_named(\"feMajor\")), \")\"])},\n        \"file_slightly_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File minor version is different, some settings might not load\"])}\n      }\n    },\n    \"profile_fields\": {\n      \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile metadata\"])},\n      \"add_field\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add field\"])},\n      \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])},\n      \"value\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Content\"])}\n    },\n    \"account_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privacy\"])},\n    \"use_contain_fit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't crop the attachment in thumbnails\"])},\n    \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Name\"])},\n    \"name_bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Name & bio\"])},\n    \"new_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New email\"])},\n    \"new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New password\"])},\n    \"posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posts\"])},\n    \"user_profiles\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Profiles\"])},\n    \"notification_visibility\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Types of notifications to show\"])},\n    \"notification_visibility_follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follows\"])},\n    \"notification_visibility_likes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorites\"])},\n    \"notification_visibility_mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mentions\"])},\n    \"notification_visibility_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeats\"])},\n    \"notification_visibility_moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Migrates\"])},\n    \"notification_visibility_emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reactions\"])},\n    \"notification_visibility_polls\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ends of polls you voted in\"])},\n    \"no_rich_text_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Strip rich text formatting from all posts\"])},\n    \"no_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No blocks\"])},\n    \"no_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No mutes\"])},\n    \"hide_favorites_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show list of my favorites (people still get notified)\"])},\n    \"hide_follows_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show who I'm following\"])},\n    \"hide_followers_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show who's following me\"])},\n    \"hide_follows_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show follow count\"])},\n    \"hide_followers_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show follower count\"])},\n    \"show_admin_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show \\\"Admin\\\" badge in my profile\"])},\n    \"show_moderator_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show \\\"Moderator\\\" badge in my profile\"])},\n    \"nsfw_clickthrough\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide sensitive/NSFW media\"])},\n    \"oauth_tokens\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth tokens\"])},\n    \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Token\"])},\n    \"refresh_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Refresh token\"])},\n    \"valid_until\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Valid until\"])},\n    \"revoke_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revoke\"])},\n    \"panelRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panels\"])},\n    \"pause_on_unfocused\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pause when tab is not focused\"])},\n    \"presets\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Presets\"])},\n    \"profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile background\"])},\n    \"profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile banner\"])},\n    \"profile_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile\"])},\n    \"radii_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set up interface edge rounding (in pixels)\"])},\n    \"replies_in_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Replies in timeline\"])},\n    \"reply_visibility_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show all replies\"])},\n    \"reply_visibility_following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Only show replies directed at me or users I'm following\"])},\n    \"reply_visibility_self\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Only show replies directed at me\"])},\n    \"reply_visibility_following_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show replies to my follows\"])},\n    \"reply_visibility_self_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show replies to self only\"])},\n    \"autohide_floating_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Automatically hide New Post button (mobile)\"])},\n    \"saving_err\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error saving settings\"])},\n    \"saving_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Settings saved\"])},\n    \"search_user_to_block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search whom you want to block\"])},\n    \"search_user_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search whom you want to mute\"])},\n    \"security_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Security\"])},\n    \"scope_copy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Copy scope when replying (DMs are always copied)\"])},\n    \"mascot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mastodon FE Mascot\"])},\n    \"minimal_scopes_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Minimize post scope selection options\"])},\n    \"set_new_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set new avatar\"])},\n    \"set_new_mascot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set new mascot\"])},\n    \"set_new_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set new profile background\"])},\n    \"set_new_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set new profile banner\"])},\n    \"reset_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset avatar\"])},\n    \"reset_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset profile background\"])},\n    \"reset_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset profile banner\"])},\n    \"reset_avatar_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to reset the avatar?\"])},\n    \"reset_banner_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to reset the banner?\"])},\n    \"reset_background_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to reset the background?\"])},\n    \"settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Settings\"])},\n    \"subject_input_always_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Always show subject field\"])},\n    \"subject_line_behavior\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Copy subject when replying\"])},\n    \"subject_line_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Like email: \\\"re: subject\\\"\"])},\n    \"subject_line_mastodon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Like mastodon: copy as is\"])},\n    \"subject_line_noop\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not copy\"])},\n    \"conversation_display\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Conversation display style\"])},\n    \"conversation_display_tree\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tree-style\"])},\n    \"disable_sticky_headers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't stick column headers to top of the screen\"])},\n    \"show_scrollbars\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show side column's scrollbars\"])},\n    \"third_column_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"When there's enough space, show third column containing\"])},\n    \"third_column_mode_none\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show third column at all\"])},\n    \"third_column_mode_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifications column\"])},\n    \"third_column_mode_postform\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Main post form and navigation\"])},\n    \"tree_advanced\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Allow more flexible navigation in tree view\"])},\n    \"tree_fade_ancestors\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Display ancestors of the current status in faint text\"])},\n    \"conversation_display_linear\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Linear-style\"])},\n    \"conversation_other_replies_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show the \\\"other replies\\\" button\"])},\n    \"conversation_other_replies_button_below\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Below statuses\"])},\n    \"conversation_other_replies_button_inside\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inside statuses\"])},\n    \"max_depth_in_thread\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maximum number of levels in thread to display by default\"])},\n    \"post_status_content_type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post status content type\"])},\n    \"sensitive_by_default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mark posts as sensitive by default\"])},\n    \"sensitive_if_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Automatically mark images as sensitive if a subject line is specified\"])},\n    \"render_mfm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Render Misskey Markdown\"])},\n    \"useStreamingApiWarning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"It's cool use it. If it breaks refresh I guess?\"])},\n    \"stop_gifs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pause animated images until you hover on them\"])},\n    \"streaming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Automatically show new posts when scrolled to the top\"])},\n    \"user_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Users\"])},\n    \"useStreamingApi\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Receive posts and notifications real-time\"])},\n    \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Text\"])},\n    \"theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Theme\"])},\n    \"theme_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Use hex color codes (#rrggbb) to customize your color theme.\"])},\n    \"theme_help_v2_1\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You can also override certain component's colors and opacity by toggling the checkbox, use \\\"Clear all\\\" button to clear all overrides.\"])},\n    \"theme_help_v2_2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Icons underneath some entries are background/text contrast indicators, hover over for detailed info. Please keep in mind that when using transparency contrast indicators show the worst possible case.\"])},\n    \"tooltipRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tooltips/alerts\"])},\n    \"type_domains_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search domains to mute\"])},\n    \"upload_a_photo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload a photo\"])},\n    \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Settings\"])},\n    \"values\": {\n      \"false\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no\"])},\n      \"true\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"yes\"])}\n    },\n    \"virtual_scrolling\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Optimize timeline rendering\"])},\n    \"use_at_icon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Display \", \"@\", \" symbol as an icon instead of text\"])},\n    \"mention_link_display\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Display mention links\"])},\n    \"mention_link_display_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"always as short names (e.g. \", \"@\", \"foo)\"])},\n    \"mention_link_display_full_for_remote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"as full names only for remote users (e.g. \", \"@\", \"foo\", \"@\", \"example.org)\"])},\n    \"mention_link_display_full\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"always as full names (e.g. \", \"@\", \"foo\", \"@\", \"example.org)\"])},\n    \"mention_link_show_tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show full user names as tooltip for remote users\"])},\n    \"mention_link_show_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show user avatar beside the link\"])},\n    \"mention_link_fade_domain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fade domains (e.g. \", \"@\", \"example.org in \", \"@\", \"foo\", \"@\", \"example.org)\"])},\n    \"mention_link_bolden_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Highlight mention of you when you are mentioned\"])},\n    \"fun\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fun\"])},\n    \"greentext\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Meme arrows\"])},\n    \"show_yous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show (You)s\"])},\n    \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifications\"])},\n    \"notification_setting_filters\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filters\"])},\n    \"notification_setting_block_from_strangers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block notifications from users who you do not follow\"])},\n    \"notification_setting_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privacy\"])},\n    \"notification_setting_hide_notification_contents\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide the sender and contents of push notifications\"])},\n    \"notification_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"To stop receiving notifications from a specific user, use a mute.\"])},\n    \"notification_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocking a user stops all notifications as well as unsubscribes them.\"])},\n    \"enable_web_push_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enable web push notifications\"])},\n    \"more_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More settings\"])},\n    \"style\": {\n      \"switcher\": {\n        \"keep_color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep colors\"])},\n        \"keep_shadows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep shadows\"])},\n        \"keep_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep opacity\"])},\n        \"keep_roundness\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep roundness\"])},\n        \"keep_fonts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep fonts\"])},\n        \"save_load_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"\\\"Keep\\\" options preserve currently set options when selecting or loading themes, it also stores said options when exporting a theme. When all checkboxes unset, exporting theme will save everything.\"])},\n        \"reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset\"])},\n        \"clear_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Clear all\"])},\n        \"clear_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Clear opacity\"])},\n        \"load_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load theme\"])},\n        \"keep_as_is\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep as is\"])},\n        \"use_snapshot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Old version\"])},\n        \"use_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New version\"])},\n        \"help\": {\n          \"upgraded_from_v2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE has been upgraded, theme could look a little bit different than you remember.\"])},\n          \"v2_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File you imported was made for older FE. We try to maximize compatibility but there still could be inconsistencies.\"])},\n          \"future_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File you imported was made in newer version of FE.\"])},\n          \"older_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File you imported was made in older version of FE.\"])},\n          \"snapshot_present\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Theme snapshot is loaded, so all values are overriden. You can load theme's actual data instead.\"])},\n          \"snapshot_missing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No theme snapshot was in the file so it could look different than originally envisioned.\"])},\n          \"fe_upgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE's theme engine upgraded after version update.\"])},\n          \"fe_downgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE's version rolled back.\"])},\n          \"migration_snapshot_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Just to be safe, theme snapshot loaded. You can try loading theme data.\"])},\n          \"migration_napshot_gone\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"For whatever reason snapshot was missing, some stuff could look different than you remember.\"])},\n          \"snapshot_source_mismatch\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versions conflict: most likely FE was rolled back and updated again, if you changed theme using older version of FE you most likely want to use old version, otherwise use new version.\"])}\n        }\n      },\n      \"common\": {\n        \"color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Color\"])},\n        \"opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Opacity\"])},\n        \"contrast\": {\n          \"hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Contrast ratio is \", _interpolate(_named(\"ratio\")), \", it \", _interpolate(_named(\"level\")), \" \", _interpolate(_named(\"context\"))])},\n          \"level\": {\n            \"aa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"meets Level AA guideline (minimal)\"])},\n            \"aaa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"meets Level AAA guideline (recommended)\"])},\n            \"bad\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"doesn't meet any accessibility guidelines\"])}\n          },\n          \"context\": {\n            \"18pt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"for large (18pt+) text\"])},\n            \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"for text\"])}\n          }\n        }\n      },\n      \"common_colors\": {\n        \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Common\"])},\n        \"main\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Common colors\"])},\n        \"foreground_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"See \\\"Advanced\\\" tab for more detailed control\"])},\n        \"rgbo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Icons, accents, badges\"])}\n      },\n      \"advanced_colors\": {\n        \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Advanced\"])},\n        \"alert\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alert background\"])},\n        \"alert_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error\"])},\n        \"alert_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Warning\"])},\n        \"alert_neutral\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neutral\"])},\n        \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posts/User bios\"])},\n        \"badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Badge background\"])},\n        \"popover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tooltips, menus, popovers\"])},\n        \"badge_notification\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notification\"])},\n        \"panel_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panel header\"])},\n        \"top_bar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Top bar\"])},\n        \"borders\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Borders\"])},\n        \"buttons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Buttons\"])},\n        \"inputs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input fields\"])},\n        \"faint_text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Faded text\"])},\n        \"underlay\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Underlay\"])},\n        \"wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wallpaper\"])},\n        \"poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Poll graph\"])},\n        \"icons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Icons\"])},\n        \"highlight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Highlighted elements\"])},\n        \"pressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pressed\"])},\n        \"selectedPost\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Selected post\"])},\n        \"selectedMenu\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Selected menu item\"])},\n        \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disabled\"])},\n        \"toggled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toggled\"])},\n        \"tabs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tabs\"])},\n        \"chat\": {\n          \"incoming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Incoming\"])},\n          \"outgoing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Outgoing\"])},\n          \"border\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Border\"])}\n        }\n      },\n      \"radii\": {\n        \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Roundness\"])}\n      },\n      \"shadows\": {\n        \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shadow and lighting\"])},\n        \"component\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Component\"])},\n        \"override\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Override\"])},\n        \"shadow_id\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Shadow #\", _interpolate(_named(\"value\"))])},\n        \"blur\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blur\"])},\n        \"spread\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Spread\"])},\n        \"inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inset\"])},\n        \"hintV3\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"For shadows you can also use the \", _interpolate(_list(0)), \" notation to use other color slot.\"])},\n        \"filter_hint\": {\n          \"always_drop_shadow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Warning, this shadow always uses \", _interpolate(_list(0)), \" when browser supports it.\"])},\n          \"drop_shadow_syntax\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" does not support \", _interpolate(_list(1)), \" parameter and \", _interpolate(_list(2)), \" keyword.\"])},\n          \"avatar_inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Please note that combining both inset and non-inset shadows on avatars might give unexpected results with transparent avatars.\"])},\n          \"spread_zero\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shadows with spread > 0 will appear as if it was set to zero\"])},\n          \"inset_classic\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Inset shadows will be using \", _interpolate(_list(0))])}\n        },\n        \"components\": {\n          \"panel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panel\"])},\n          \"panelHeader\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panel header\"])},\n          \"topBar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Top bar\"])},\n          \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User avatar (in profile view)\"])},\n          \"avatarStatus\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User avatar (in post display)\"])},\n          \"popup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Popups and tooltips\"])},\n          \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button\"])},\n          \"buttonHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button (hover)\"])},\n          \"buttonPressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button (pressed)\"])},\n          \"buttonPressedHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button (pressed+hover)\"])},\n          \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input field\"])}\n        }\n      },\n      \"fonts\": {\n        \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fonts\"])},\n        \"help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Select font to use for elements of UI. For \\\"custom\\\" you have to enter exact font name as it appears in system.\"])},\n        \"components\": {\n          \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interface\"])},\n          \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input fields\"])},\n          \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post text\"])},\n          \"postCode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Monospaced text in a post (rich text)\"])}\n        },\n        \"family\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Font name\"])},\n        \"size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Size (in px)\"])},\n        \"weight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weight (boldness)\"])},\n        \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Custom\"])}\n      },\n      \"preview\": {\n        \"header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preview\"])},\n        \"content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Content\"])},\n        \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Example error\"])},\n        \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button\"])},\n        \"text\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"A bunch of more \", _interpolate(_list(0)), \" and \", _interpolate(_list(1))])},\n        \"mono\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"content\"])},\n        \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Just landed in L.A.\"])},\n        \"faint_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"helpful manual\"])},\n        \"fine_print\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Read our \", _interpolate(_list(0)), \" to learn nothing useful!\"])},\n        \"header_faint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This is fine\"])},\n        \"checkbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"I have skimmed over terms and conditions\"])},\n        \"link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"a nice lil' link\"])}\n      }\n    },\n    \"version\": {\n      \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Version\"])},\n      \"backend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Backend version\"])},\n      \"frontend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Frontend version\"])}\n    }\n  },\n  \"time\": {\n    \"day\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" day\"])},\n    \"days\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" days\"])},\n    \"day_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"d\"])},\n    \"days_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"d\"])},\n    \"hour\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" hour\"])},\n    \"hours\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" hours\"])},\n    \"hour_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"h\"])},\n    \"hours_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"h\"])},\n    \"in_future\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"in \", _interpolate(_list(0))])},\n    \"in_past\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" ago\"])},\n    \"minute\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" minute\"])},\n    \"minutes\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" minutes\"])},\n    \"minute_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"min\"])},\n    \"minutes_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"min\"])},\n    \"month\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" month\"])},\n    \"months\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" months\"])},\n    \"month_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"mo\"])},\n    \"months_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"mo\"])},\n    \"now\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"just now\"])},\n    \"now_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"now\"])},\n    \"second\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" second\"])},\n    \"seconds\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" seconds\"])},\n    \"second_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"s\"])},\n    \"seconds_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"s\"])},\n    \"week\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" week\"])},\n    \"weeks\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" weeks\"])},\n    \"week_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"w\"])},\n    \"weeks_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"w\"])},\n    \"year\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" year\"])},\n    \"years\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" years\"])},\n    \"year_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"y\"])},\n    \"years_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"y\"])}\n  },\n  \"timeline\": {\n    \"collapse\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Collapse\"])},\n    \"conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Conversation\"])},\n    \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Error fetching timeline: \", _interpolate(_list(0))])},\n    \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load older statuses\"])},\n    \"no_retweet_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post is marked as followers-only or direct and cannot be repeated\"])},\n    \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"repeated\"])},\n    \"show_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show new\"])},\n    \"reload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reload\"])},\n    \"up_to_date\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Up-to-date\"])},\n    \"no_more_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No more statuses\"])},\n    \"no_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No statuses\"])},\n    \"socket_reconnected\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Realtime connection established\"])},\n    \"socket_broke\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Realtime connection lost: CloseEvent code \", _interpolate(_list(0))])}\n  },\n  \"status\": {\n    \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorites\"])},\n    \"repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeats\"])},\n    \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete status\"])},\n    \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pin on profile\"])},\n    \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unpin from profile\"])},\n    \"pinned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pinned\"])},\n    \"bookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bookmark\"])},\n    \"unbookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unbookmark\"])},\n    \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to delete this status?\"])},\n    \"reply_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reply to\"])},\n    \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mentions\"])},\n    \"replies_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Replies:\"])},\n    \"replies_list_with_others\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Replies (+\", _interpolate(_named(\"numReplies\")), \" other):\"]), _normalize([\"Replies (+\", _interpolate(_named(\"numReplies\")), \" others):\"])])},\n    \"mute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute conversation\"])},\n    \"unmute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmute conversation\"])},\n    \"status_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Status unavailable\"])},\n    \"copy_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Copy link to status\"])},\n    \"external_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"External source\"])},\n    \"thread_muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Thread muted\"])},\n    \"thread_muted_and_words\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\", has words:\"])},\n    \"show_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show full subject\"])},\n    \"hide_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide full subject\"])},\n    \"show_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show content\"])},\n    \"hide_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide content\"])},\n    \"status_deleted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post was deleted\"])},\n    \"nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NSFW\"])},\n    \"expand\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Expand\"])},\n    \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(You)\"])},\n    \"plus_more\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"+\", _interpolate(_named(\"number\")), \" more\"])},\n    \"many_attachments\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Post has \", _interpolate(_named(\"number\")), \" attachment(s)\"])},\n    \"collapse_attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Collapse attachments\"])},\n    \"show_all_attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show all attachments\"])},\n    \"show_attachment_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show in media modal\"])},\n    \"show_attachment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preview description (open attachment for full description)\"])},\n    \"hide_attachment\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide attachment\"])},\n    \"remove_attachment\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove attachment\"])},\n    \"attachment_stop_flash\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Stop Flash player\"])},\n    \"move_up\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shift attachment left\"])},\n    \"move_down\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shift attachment right\"])},\n    \"open_gallery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open gallery\"])},\n    \"thread_hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide this thread\"])},\n    \"thread_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show this thread\"])},\n    \"thread_show_full\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Show everything under this thread (\", _interpolate(_named(\"numStatus\")), \" status in total, max depth \", _interpolate(_named(\"depth\")), \")\"]), _normalize([\"Show everything under this thread (\", _interpolate(_named(\"numStatus\")), \" statuses in total, max depth \", _interpolate(_named(\"depth\")), \")\"])])},\n    \"thread_show_full_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n    \"thread_follow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"See the remaining part of this thread (\", _interpolate(_named(\"numStatus\")), \" status in total)\"]), _normalize([\"See the remaining part of this thread (\", _interpolate(_named(\"numStatus\")), \" statuses in total)\"])])},\n    \"thread_follow_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n    \"ancestor_follow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"See \", _interpolate(_named(\"numReplies\")), \" other reply under this status\"]), _normalize([\"See \", _interpolate(_named(\"numReplies\")), \" other replies under this status\"])])},\n    \"ancestor_follow_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n    \"show_all_conversation_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n    \"show_all_conversation\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Show full conversation (\", _interpolate(_named(\"numStatus\")), \" other status)\"]), _normalize([\"Show full conversation (\", _interpolate(_named(\"numStatus\")), \" other statuses)\"])])},\n    \"show_only_conversation_under_this\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Only show replies to this status\"])}\n  },\n  \"user_card\": {\n    \"approve\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Approve\"])},\n    \"block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block\"])},\n    \"blocked\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocked!\"])},\n    \"deactivated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deactivated\"])},\n    \"deny\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deny\"])},\n    \"edit_profile\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit profile\"])},\n    \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorites\"])},\n    \"follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow\"])},\n    \"follow_cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel request\"])},\n    \"follow_sent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Request sent!\"])},\n    \"follow_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Requesting…\"])},\n    \"follow_unfollow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unfollow\"])},\n    \"followees\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Following\"])},\n    \"followers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Followers\"])},\n    \"following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Following!\"])},\n    \"follows_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follows you!\"])},\n    \"hidden\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hidden\"])},\n    \"its_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"It's you!\"])},\n    \"media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media\"])},\n    \"mention\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mention\"])},\n    \"message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Message\"])},\n    \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute\"])},\n    \"muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Muted\"])},\n    \"per_day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"per day\"])},\n    \"remote_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remote follow\"])},\n    \"report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Report\"])},\n    \"statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statuses\"])},\n    \"subscribe\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Subscribe\"])},\n    \"unsubscribe\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unsubscribe\"])},\n    \"unblock\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unblock\"])},\n    \"unblock_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unblocking…\"])},\n    \"block_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocking…\"])},\n    \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmute\"])},\n    \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmuting…\"])},\n    \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Muting…\"])},\n    \"hide_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide repeats\"])},\n    \"show_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show repeats\"])},\n    \"domain_muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unblock domain\"])},\n    \"mute_domain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block domain\"])},\n    \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bot\"])},\n    \"admin_menu\": {\n      \"moderation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Moderation\"])},\n      \"grant_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Grant Admin\"])},\n      \"revoke_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revoke Admin\"])},\n      \"grant_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Grant Moderator\"])},\n      \"revoke_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revoke Moderator\"])},\n      \"activate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activate account\"])},\n      \"deactivate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deactivate account\"])},\n      \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete account\"])},\n      \"force_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mark all posts as NSFW\"])},\n      \"strip_media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove media from posts\"])},\n      \"force_unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Force posts to be unlisted\"])},\n      \"sandbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Force posts to be followers-only\"])},\n      \"disable_remote_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disallow following user from remote instances\"])},\n      \"disable_any_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disallow following user at all\"])},\n      \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disallow user posts from federating\"])},\n      \"delete_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete user\"])},\n      \"delete_user_confirmation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you absolutely sure? This action cannot be undone.\"])}\n    },\n    \"highlight\": {\n      \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No highlight\"])},\n      \"solid\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Solid bg\"])},\n      \"striped\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Striped bg\"])},\n      \"side\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Side stripe\"])}\n    }\n  },\n  \"user_profile\": {\n    \"timeline_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User timeline\"])},\n    \"profile_does_not_exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, this profile does not exist.\"])},\n    \"profile_loading_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, there was an error loading this profile.\"])}\n  },\n  \"user_reporting\": {\n    \"title\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Reporting \", _interpolate(_list(0))])},\n    \"add_comment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:\"])},\n    \"additional_comments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Additional comments\"])},\n    \"forward_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The account is from another server. Send a copy of the report there as well?\"])},\n    \"forward_to\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Forward to \", _interpolate(_list(0))])},\n    \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n    \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"An error occurred while processing your request.\"])}\n  },\n  \"who_to_follow\": {\n    \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More\"])},\n    \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Who to follow\"])}\n  },\n  \"tool_tip\": {\n    \"media_upload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload media\"])},\n    \"repeat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeat\"])},\n    \"reply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reply\"])},\n    \"favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorite\"])},\n    \"add_reaction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add Reaction\"])},\n    \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Settings\"])},\n    \"accept_follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accept follow request\"])},\n    \"reject_follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reject follow request\"])},\n    \"bookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bookmark\"])}\n  },\n  \"upload\": {\n    \"error\": {\n      \"base\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload failed.\"])},\n      \"message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Upload failed: \", _interpolate(_list(0))])},\n      \"file_too_big\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"File too big [\", _interpolate(_named(\"filesize\")), _interpolate(_named(\"filesizeunit\")), \" / \", _interpolate(_named(\"allowedsize\")), _interpolate(_named(\"allowedsizeunit\")), \"]\"])},\n      \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Try again later\"])}\n    },\n    \"file_size_units\": {\n      \"B\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"B\"])},\n      \"KiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"KiB\"])},\n      \"MiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MiB\"])},\n      \"GiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"GiB\"])},\n      \"TiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"TiB\"])}\n    }\n  },\n  \"search\": {\n    \"people\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"People\"])},\n    \"hashtags\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hashtags\"])},\n    \"person_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" person talking\"])},\n    \"people_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" people talking\"])},\n    \"no_results\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No results\"])}\n  },\n  \"password_reset\": {\n    \"forgot_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forgot password?\"])},\n    \"password_reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password reset\"])},\n    \"instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter your email address or username. We will send you a link to reset your password.\"])},\n    \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your email or username\"])},\n    \"check_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Check your email for a link to reset your password.\"])},\n    \"return_home\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Return to the home page\"])},\n    \"too_many_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You have reached the limit of attempts, try again later.\"])},\n    \"password_reset_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password reset is disabled. Please contact your instance administrator.\"])},\n    \"password_reset_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You must reset your password to log in.\"])},\n    \"password_reset_required_but_mailer_is_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You must reset your password, but password reset is disabled. Please contact your instance administrator.\"])}\n  },\n  \"chats\": {\n    \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You:\"])},\n    \"message_user\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Message \", _interpolate(_named(\"nickname\"))])},\n    \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete\"])},\n    \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Chats\"])},\n    \"new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New Chat\"])},\n    \"empty_message_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cannot post empty message\"])},\n    \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More\"])},\n    \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to delete this message?\"])},\n    \"error_loading_chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Something went wrong when loading the chat.\"])},\n    \"error_sending_message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Something went wrong when sending the message.\"])},\n    \"empty_chat_list_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You don't have any chats yet. Start a new chat!\"])}\n  },\n  \"file_type\": {\n    \"audio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Audio\"])},\n    \"video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Video\"])},\n    \"image\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Image\"])},\n    \"file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File\"])}\n  },\n  \"display_date\": {\n    \"today\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Today\"])}\n  }\n}","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./login_form.vue?vue&type=style&index=0&id=9e104930&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./media_upload.vue?vue&type=style&index=0&id=8e180d3a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./scope_selector.vue?vue&type=style&index=0&id=4ebab9b5&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./checkbox.vue?vue&type=style&index=0&id=deb5bfe6&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./emoji_picker.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./emoji_input.vue?vue&type=style&index=0&id=59b4cd40&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./select.vue?vue&type=style&index=0&id=099d3e32&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./poll_form.vue?vue&type=style&index=0&id=21f5ba7b&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./still-image.vue?vue&type=style&index=0&id=4da90e4a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./flash.vue?vue&type=style&index=0&id=0dec384a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./attachment.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./gallery.vue?vue&type=style&index=0&id=2bf4ca36&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./user_avatar.vue?vue&type=style&index=0&id=764c87f9&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./mention_link.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./mentions_line.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./hashtag_link.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./poll.vue?vue&type=style&index=0&id=5e9dea28&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./status_body.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./link-preview.vue?vue&type=style&index=0&id=03087feb&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./status_content.vue?vue&type=style&index=0&id=475fea91&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./post_status_form.vue?vue&type=style&index=0&id=ae252da2&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./remote_follow.vue?vue&type=style&index=0&id=2aed8421&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./dialog_modal.vue?vue&type=style&index=0&id=202a26c4&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./popover.vue?vue&type=style&index=0&id=24420bf0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./moderation_tools.vue?vue&type=style&index=0&id=0ae1f97e&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./account_actions.vue?vue&type=style&index=0&id=cbff36f6&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./user_card.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./user_panel.vue?vue&type=style&index=0&id=460aaa4a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./nav_panel.vue?vue&type=style&index=0&id=fdfe5e92&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./features_panel.vue?vue&type=style&index=0&id=9d4c35f4&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./who_to_follow_panel.vue?vue&type=style&index=0&id=b4d31272&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./shout_panel.vue?vue&type=style&index=0&id=3464bd9c&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./modal.vue?vue&type=style&index=0&id=1b320182&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./panel_loading.vue?vue&type=style&index=0&id=595215a2&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./async_component_error.vue?vue&type=style&index=0&id=26dcc164&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./settings_modal.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./media_modal.vue?vue&type=style&index=0&id=85a073e6&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./side_drawer.vue?vue&type=style&index=0&id=4a50df4d&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./mobile_post_status_button.vue?vue&type=style&index=0&id=9a586640&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./reply_button.vue?vue&type=style&index=0&id=56f413c0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./favorite_button.vue?vue&type=style&index=0&id=21f861d8&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./react_button.vue?vue&type=style&index=0&id=0101edf8&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./retweet_button.vue?vue&type=style&index=0&id=46fe49c4&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./extra_buttons.vue?vue&type=style&index=0&id=3a956a44&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./avatar_list.vue?vue&type=style&index=0&id=4cea5bcf&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./status_popover.vue?vue&type=style&index=0&id=fa4a5d94&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./user_list_popover.vue?vue&type=style&index=0&id=3dc0c2d4&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./emoji_reactions.vue?vue&type=style&index=0&id=1bf35779&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./status.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./notification.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./notification_filters.vue?vue&type=style&index=0&id=afbf2f10&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./notifications.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./mobile_nav.vue?vue&type=style&index=0&id=cab8ee52&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./search_bar.vue?vue&type=style&index=0&id=105122b7&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./desktop_nav.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./list.vue?vue&type=style&index=0&id=c1790f52&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./user_reporting_modal.vue?vue&type=style&index=0&id=116c0e28&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./post_status_modal.vue?vue&type=style&index=0&id=b6b8d3a2&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./global_notice_list.vue?vue&type=style&index=0&id=5e034d4c&lang=scss\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js!../node_modules/css-loader/index.js!../node_modules/vue-loader/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js!../node_modules/sass-loader/lib/loader.js!./App.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./thread_tree.vue?vue&type=style&index=0&id=38969046&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./conversation.vue?vue&type=style&index=0&id=ee2f7a9a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./timeline_menu.vue?vue&type=style&index=0&id=0d348974&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./timeline_quick_settings.vue?vue&type=style&index=0&id=ad1076ec&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./timeline.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./chat_title.vue?vue&type=style&index=0&id=113f5355&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./chat_list_item.vue?vue&type=style&index=0&id=0623aed7&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./basic_user_card.vue?vue&type=style&index=0&id=dd332bac&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./chat_new.vue?vue&type=style&index=0&id=54e93eee&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./chat_list.vue?vue&type=style&index=0&id=598ab446&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./chat_message.vue?vue&type=style&index=0&id=3566ce4a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./chat.vue?vue&type=style&index=0&id=9416a190&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./follow_card.vue?vue&type=style&index=0&id=4030f5aa&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./user_profile.vue?vue&type=style&index=0&id=56ed1f7e&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./search.vue?vue&type=style&index=0&id=52f57ebe&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./registration.vue?vue&type=style&index=0&id=c19f87d0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./password_reset.vue?vue&type=style&index=0&id=3a677309&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./follow_request_card.vue?vue&type=style&index=0&id=84be1288&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./terms_of_service_panel.vue?vue&type=style&index=0&id=687e38f6&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./staff_panel.vue?vue&type=style&index=0&id=31dce24a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./mrf_transparency_panel.vue?vue&type=style&index=0&id=7f2ca562&lang=scss\"","import EventTargetPolyfill from '@ungap/event-target'\n\ntry {\n  /* eslint-disable no-new  */\n  new EventTarget()\n  /* eslint-enable no-new  */\n} catch (e) {\n  window.EventTarget = EventTargetPolyfill\n}\n","const defaultState = {\n  settingsModalState: 'hidden',\n  settingsModalLoaded: false,\n  settingsModalTargetTab: null,\n  settings: {\n    currentSaveStateNotice: null,\n    noticeClearTimeout: null,\n    notificationPermission: null\n  },\n  browserSupport: {\n    cssFilter: window.CSS && window.CSS.supports && (\n      window.CSS.supports('filter', 'drop-shadow(0 0)') ||\n      window.CSS.supports('-webkit-filter', 'drop-shadow(0 0)')\n    )\n  },\n  layoutType: 'normal',\n  globalNotices: [],\n  layoutHeight: 0,\n  lastTimeline: null\n}\n\nconst interfaceMod = {\n  state: defaultState,\n  mutations: {\n    settingsSaved (state, { success, error }) {\n      if (success) {\n        if (state.noticeClearTimeout) {\n          clearTimeout(state.noticeClearTimeout)\n        }\n        state.settings.currentSaveStateNotice = { error: false, data: success }\n        state.settings.noticeClearTimeout = setTimeout(() => delete state.settings.currentSaveStateNotice, 2000)\n      } else {\n        state.settings.currentSaveStateNotice = { error: true, errorData: error }\n      }\n    },\n    setNotificationPermission (state, permission) {\n      state.notificationPermission = permission\n    },\n    setLayoutType (state, value) {\n      state.layoutType = value\n    },\n    closeSettingsModal (state) {\n      state.settingsModalState = 'hidden'\n    },\n    togglePeekSettingsModal (state) {\n      switch (state.settingsModalState) {\n        case 'minimized':\n          state.settingsModalState = 'visible'\n          return\n        case 'visible':\n          state.settingsModalState = 'minimized'\n          return\n        default:\n          throw new Error('Illegal minimization state of settings modal')\n      }\n    },\n    openSettingsModal (state) {\n      state.settingsModalState = 'visible'\n      if (!state.settingsModalLoaded) {\n        state.settingsModalLoaded = true\n      }\n    },\n    setSettingsModalTargetTab (state, value) {\n      state.settingsModalTargetTab = value\n    },\n    pushGlobalNotice (state, notice) {\n      state.globalNotices.push(notice)\n    },\n    removeGlobalNotice (state, notice) {\n      state.globalNotices = state.globalNotices.filter(n => n !== notice)\n    },\n    setLayoutHeight (state, value) {\n      state.layoutHeight = value\n    },\n    setLayoutWidth (state, value) {\n      state.layoutWidth = value\n    },\n    setLastTimeline (state, value) {\n      state.lastTimeline = value\n    }\n  },\n  actions: {\n    setPageTitle ({ rootState }, option = '') {\n      document.title = `${option} ${rootState.instance.name}`\n    },\n    settingsSaved ({ commit, dispatch }, { success, error }) {\n      commit('settingsSaved', { success, error })\n    },\n    setNotificationPermission ({ commit }, permission) {\n      commit('setNotificationPermission', permission)\n    },\n    closeSettingsModal ({ commit }) {\n      commit('closeSettingsModal')\n    },\n    openSettingsModal ({ commit }) {\n      commit('openSettingsModal')\n    },\n    togglePeekSettingsModal ({ commit }) {\n      commit('togglePeekSettingsModal')\n    },\n    clearSettingsModalTargetTab ({ commit }) {\n      commit('setSettingsModalTargetTab', null)\n    },\n    openSettingsModalTab ({ commit }, value) {\n      commit('setSettingsModalTargetTab', value)\n      commit('openSettingsModal')\n    },\n    pushGlobalNotice (\n      { commit, dispatch, state },\n      {\n        messageKey,\n        messageArgs = {},\n        level = 'error',\n        timeout = 0\n      }) {\n      const notice = {\n        messageKey,\n        messageArgs,\n        level\n      }\n      commit('pushGlobalNotice', notice)\n      // Adding a new element to array wraps it in a Proxy, which breaks the comparison\n      // TODO: Generate UUID or something instead or relying on !== operator?\n      const newNotice = state.globalNotices[state.globalNotices.length - 1]\n      if (timeout) {\n        setTimeout(() => dispatch('removeGlobalNotice', newNotice), timeout)\n      }\n      return newNotice\n    },\n    removeGlobalNotice ({ commit }, notice) {\n      commit('removeGlobalNotice', notice)\n    },\n    setLayoutHeight ({ commit }, value) {\n      commit('setLayoutHeight', value)\n    },\n    // value is optional, assuming it was cached prior\n    setLayoutWidth ({ commit, state, rootGetters, rootState }, value) {\n      let width = value\n      if (value !== undefined) {\n        commit('setLayoutWidth', value)\n      } else {\n        width = state.layoutWidth\n      }\n      const mobileLayout = width <= 800\n      const normalOrMobile = mobileLayout ? 'mobile' : 'normal'\n      const { thirdColumnMode } = rootGetters.mergedConfig\n      if (thirdColumnMode === 'none' || !rootState.users.currentUser) {\n        commit('setLayoutType', normalOrMobile)\n      } else {\n        const wideLayout = width >= 1300\n        commit('setLayoutType', wideLayout ? 'wide' : normalOrMobile)\n      }\n    },\n    setLastTimeline ({ commit }, value) {\n      commit('setLastTimeline', value)\n    }\n  }\n}\n\nexport default interfaceMod\n","import { getPreset, applyTheme } from '../services/style_setter/style_setter.js'\nimport { CURRENT_VERSION } from '../services/theme_data/theme_data.service.js'\nimport apiService from '../services/api/api.service.js'\nimport { instanceDefaultProperties } from './config.js'\n\nconst defaultState = {\n  // Stuff from apiConfig\n  name: 'Pleroma FE',\n  registrationOpen: true,\n  server: 'http://localhost:4040/',\n  textlimit: 5000,\n  themeData: undefined,\n  vapidPublicKey: undefined,\n\n  // Stuff from static/config.json\n  alwaysShowSubjectInput: true,\n  defaultAvatar: '/images/avi.png',\n  defaultBanner: '/images/banner.png',\n  background: '/static/aurora_borealis.jpg',\n  collapseMessageWithSubject: false,\n  greentext: false,\n  useAtIcon: false,\n  mentionLinkDisplay: 'short',\n  mentionLinkShowTooltip: true,\n  mentionLinkShowAvatar: false,\n  mentionLinkFadeDomain: true,\n  mentionLinkShowYous: false,\n  mentionLinkBoldenYou: true,\n  hideFilteredStatuses: false,\n  // bad name: actually hides posts of muted USERS\n  hideMutedPosts: false,\n  hideMutedThreads: true,\n  hideWordFilteredPosts: false,\n  hidePostStats: false,\n  hideBotIndication: false,\n  hideSitename: false,\n  hideUserStats: false,\n  muteBotStatuses: false,\n  loginMethod: 'password',\n  logo: '/static/logo.svg',\n  logoMargin: '.2em',\n  logoMask: true,\n  logoLeft: false,\n  minimalScopesMode: false,\n  nsfwCensorImage: undefined,\n  postContentType: 'text/plain',\n  redirectRootLogin: '/main/friends',\n  redirectRootNoLogin: '/main/all',\n  scopeCopy: true,\n  showFeaturesPanel: true,\n  showInstanceSpecificPanel: false,\n  sidebarRight: false,\n  subjectLineBehavior: 'email',\n  theme: 'pleroma-dark',\n  virtualScrolling: true,\n  sensitiveByDefault: false,\n  sensitiveIfSubject: false,\n  renderMisskeyMarkdown: false,\n  conversationDisplay: 'linear',\n  conversationTreeAdvanced: false,\n  conversationOtherRepliesButton: 'below',\n  conversationTreeFadeAncestors: false,\n  maxDepthInThread: 6,\n\n  // Nasty stuff\n  customEmoji: [],\n  customEmojiFetched: false,\n  emoji: [],\n  emojiFetched: false,\n  pleromaBackend: true,\n  postFormats: [],\n  restrictedNicknames: [],\n  safeDM: true,\n  knownDomains: [],\n\n  // Feature-set, apparently, not everything here is reported...\n  shoutAvailable: false,\n  pleromaChatMessagesAvailable: false,\n  gopherAvailable: false,\n  mediaProxyAvailable: false,\n  suggestionsEnabled: false,\n  suggestionsWeb: '',\n\n  // Html stuff\n  instanceSpecificPanelContent: '',\n  tos: '',\n\n  // Version Information\n  backendVersion: '',\n  frontendVersion: '',\n\n  pollsAvailable: false,\n  pollLimits: {\n    max_options: 4,\n    max_option_chars: 255,\n    min_expiration: 60,\n    max_expiration: 60 * 60 * 24\n  }\n}\n\nconst instance = {\n  state: defaultState,\n  mutations: {\n    setInstanceOption (state, { name, value }) {\n      if (typeof value !== 'undefined') {\n        state[name] = value\n      }\n    },\n    setKnownDomains (state, domains) {\n      state.knownDomains = domains\n    }\n  },\n  getters: {\n    instanceDefaultConfig (state) {\n      return instanceDefaultProperties\n        .map(key => [key, state[key]])\n        .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {})\n    },\n    instanceDomain (state) {\n      return new URL(state.server).hostname\n    }\n  },\n  actions: {\n    setInstanceOption ({ commit, dispatch }, { name, value }) {\n      commit('setInstanceOption', { name, value })\n      switch (name) {\n        case 'name':\n          dispatch('setPageTitle')\n          break\n        case 'shoutAvailable':\n          if (value) {\n            dispatch('initializeSocket')\n          }\n          break\n        case 'theme':\n          dispatch('setTheme', value)\n          break\n      }\n    },\n    async getStaticEmoji ({ commit }) {\n      try {\n        const res = await window.fetch('/static/emoji.json')\n        if (res.ok) {\n          const values = await res.json()\n          const emoji = Object.keys(values).map((key) => {\n            return {\n              displayText: key,\n              imageUrl: false,\n              replacement: values[key]\n            }\n          }).sort((a, b) => a.name > b.name ? 1 : -1)\n          commit('setInstanceOption', { name: 'emoji', value: emoji })\n        } else {\n          throw (res)\n        }\n      } catch (e) {\n        console.warn(\"Can't load static emoji\")\n        console.warn(e)\n      }\n    },\n\n    async getCustomEmoji ({ commit, state }) {\n      try {\n        const res = await window.fetch('/api/pleroma/emoji.json')\n        if (res.ok) {\n          const result = await res.json()\n          const values = Array.isArray(result) ? Object.assign({}, ...result) : result\n          const emoji = Object.entries(values).map(([key, value]) => {\n            const imageUrl = value.image_url\n            return {\n              displayText: key,\n              imageUrl: imageUrl ? state.server + imageUrl : value,\n              tags: imageUrl ? value.tags.sort((a, b) => a > b ? 1 : 0) : ['utf'],\n              replacement: `:${key}: `\n            }\n            // Technically could use tags but those are kinda useless right now,\n            // should have been \"pack\" field, that would be more useful\n          }).sort((a, b) => a.displayText.toLowerCase() > b.displayText.toLowerCase() ? 1 : -1)\n          commit('setInstanceOption', { name: 'customEmoji', value: emoji })\n        } else {\n          throw (res)\n        }\n      } catch (e) {\n        console.warn(\"Can't load custom emojis\")\n        console.warn(e)\n      }\n    },\n\n    setTheme ({ commit, rootState }, themeName) {\n      commit('setInstanceOption', { name: 'theme', value: themeName })\n      getPreset(themeName)\n        .then(themeData => {\n          commit('setInstanceOption', { name: 'themeData', value: themeData })\n          // No need to apply theme if there's user theme already\n          const { customTheme } = rootState.config\n          if (customTheme) return\n\n          // New theme presets don't have 'theme' property, they use 'source'\n          const themeSource = themeData.source\n          if (!themeData.theme || (themeSource && themeSource.themeEngineVersion === CURRENT_VERSION)) {\n            applyTheme(themeSource)\n          } else {\n            applyTheme(themeData.theme)\n          }\n        })\n    },\n    fetchEmoji ({ dispatch, state }) {\n      if (!state.customEmojiFetched) {\n        state.customEmojiFetched = true\n        dispatch('getCustomEmoji')\n      }\n      if (!state.emojiFetched) {\n        state.emojiFetched = true\n        dispatch('getStaticEmoji')\n      }\n    },\n\n    async getKnownDomains ({ commit, rootState }) {\n      try {\n        const result = await apiService.fetchKnownDomains({\n          credentials: rootState.users.currentUser.credentials\n        })\n        commit('setKnownDomains', result)\n      } catch (e) {\n        console.warn(\"Can't load known domains\")\n        console.warn(e)\n      }\n    }\n  }\n}\n\nexport default instance\n","import {\n  remove,\n  slice,\n  each,\n  findIndex,\n  find,\n  maxBy,\n  minBy,\n  merge,\n  first,\n  last,\n  isArray,\n  omitBy\n} from 'lodash'\nimport {\n  isStatusNotification,\n  isValidNotification,\n  maybeShowNotification\n} from '../services/notification_utils/notification_utils.js'\nimport apiService from '../services/api/api.service.js'\n\nconst emptyTl = (userId = 0) => ({\n  statuses: [],\n  statusesObject: {},\n  faves: [],\n  visibleStatuses: [],\n  visibleStatusesObject: {},\n  newStatusCount: 0,\n  maxId: 0,\n  minId: 0,\n  minVisibleId: 0,\n  loading: false,\n  followers: [],\n  friends: [],\n  userId,\n  flushMarker: 0\n})\n\nconst emptyNotifications = () => ({\n  desktopNotificationSilence: true,\n  maxId: 0,\n  minId: Number.POSITIVE_INFINITY,\n  data: [],\n  idStore: {},\n  loading: false\n})\n\nexport const defaultState = () => ({\n  allStatuses: [],\n  allStatusesObject: {},\n  conversationsObject: {},\n  maxId: 0,\n  notifications: emptyNotifications(),\n  favorites: new Set(),\n  timelines: {\n    mentions: emptyTl(),\n    public: emptyTl(),\n    user: emptyTl(),\n    favorites: emptyTl(),\n    media: emptyTl(),\n    publicAndExternal: emptyTl(),\n    friends: emptyTl(),\n    tag: emptyTl(),\n    dms: emptyTl(),\n    bookmarks: emptyTl()\n  }\n})\n\nexport const prepareStatus = (status) => {\n  // Set deleted flag\n  status.deleted = false\n\n  // To make the array reactive\n  status.attachments = status.attachments || []\n\n  return status\n}\n\nconst mergeOrAdd = (arr, obj, item) => {\n  const oldItem = obj[item.id]\n\n  if (oldItem) {\n    // We already have this, so only merge the new info.\n    // We ignore null values to avoid overwriting existing properties with missing data\n    // we also skip 'user' because that is handled by users module\n    merge(oldItem, omitBy(item, (v, k) => v === null || k === 'user'))\n    // Reactivity fix.\n    oldItem.attachments.splice(oldItem.attachments.length)\n    return { item: oldItem, new: false }\n  } else {\n    // This is a new item, prepare it\n    prepareStatus(item)\n    arr.push(item)\n    obj[item.id] = item\n    return { item, new: true }\n  }\n}\n\nconst sortById = (a, b) => {\n  const seqA = Number(a.id)\n  const seqB = Number(b.id)\n  const isSeqA = !Number.isNaN(seqA)\n  const isSeqB = !Number.isNaN(seqB)\n  if (isSeqA && isSeqB) {\n    return seqA > seqB ? -1 : 1\n  } else if (isSeqA && !isSeqB) {\n    return 1\n  } else if (!isSeqA && isSeqB) {\n    return -1\n  } else {\n    return a.id > b.id ? -1 : 1\n  }\n}\n\nconst sortTimeline = (timeline) => {\n  timeline.visibleStatuses = timeline.visibleStatuses.sort(sortById)\n  timeline.statuses = timeline.statuses.sort(sortById)\n  timeline.minVisibleId = (last(timeline.visibleStatuses) || {}).id\n  return timeline\n}\n\n// Add status to the global storages (arrays and objects maintaining statuses) except timelines\nconst addStatusToGlobalStorage = (state, data) => {\n  const result = mergeOrAdd(state.allStatuses, state.allStatusesObject, data)\n  if (result.new) {\n    // Add to conversation\n    const status = result.item\n    const conversationsObject = state.conversationsObject\n    const conversationId = status.statusnet_conversation_id\n    if (conversationsObject[conversationId]) {\n      conversationsObject[conversationId].push(status)\n    } else {\n      conversationsObject[conversationId] = [status]\n    }\n  }\n  return result\n}\n\n// Remove status from the global storages (arrays and objects maintaining statuses) except timelines\nconst removeStatusFromGlobalStorage = (state, status) => {\n  remove(state.allStatuses, { id: status.id })\n\n  // TODO: Need to remove from allStatusesObject?\n\n  // Remove possible notification\n  remove(state.notifications.data, ({ action: { id } }) => id === status.id)\n\n  // Remove from conversation\n  const conversationId = status.statusnet_conversation_id\n  if (state.conversationsObject[conversationId]) {\n    remove(state.conversationsObject[conversationId], { id: status.id })\n  }\n}\n\nconst addNewStatuses = (state, { statuses, showImmediately = false, timeline, user = {}, noIdUpdate = false, userId, pagination = {} }) => {\n  // Sanity check\n  if (!isArray(statuses)) {\n    return false\n  }\n\n  const allStatuses = state.allStatuses\n  const timelineObject = state.timelines[timeline]\n\n  // Mismatch between API pagination and our internal minId/maxId tracking systems:\n  // pagination.maxId is the oldest of the returned statuses when fetching older,\n  // and pagination.minId is the newest when fetching newer. The names come directly\n  // from the arguments they're supposed to be passed as for the next fetch.\n  const minNew = pagination.maxId || (statuses.length > 0 ? minBy(statuses, 'id').id : 0)\n  const maxNew = pagination.minId || (statuses.length > 0 ? maxBy(statuses, 'id').id : 0)\n\n  const newer = timeline && (maxNew > timelineObject.maxId || timelineObject.maxId === 0) && statuses.length > 0\n  const older = timeline && (minNew < timelineObject.minId || timelineObject.minId === 0) && statuses.length > 0\n\n  if (!noIdUpdate && newer) {\n    timelineObject.maxId = maxNew\n  }\n  if (!noIdUpdate && older) {\n    timelineObject.minId = minNew\n  }\n\n  // This makes sure that user timeline won't get data meant for other\n  // user. I.e. opening different user profiles makes request which could\n  // return data late after user already viewing different user profile\n  if ((timeline === 'user' || timeline === 'media') && timelineObject.userId !== userId) {\n    return\n  }\n\n  const addStatus = (data, showImmediately, addToTimeline = true) => {\n    const result = addStatusToGlobalStorage(state, data)\n    const status = result.item\n\n    if (result.new) {\n      // We are mentioned in a post\n      if (status.type === 'status' && find(status.attentions, { id: user.id })) {\n        const mentions = state.timelines.mentions\n\n        // Add the mention to the mentions timeline\n        if (timelineObject !== mentions) {\n          mergeOrAdd(mentions.statuses, mentions.statusesObject, status)\n          mentions.newStatusCount += 1\n\n          sortTimeline(mentions)\n        }\n      }\n      if (status.visibility === 'direct') {\n        const dms = state.timelines.dms\n\n        mergeOrAdd(dms.statuses, dms.statusesObject, status)\n        dms.newStatusCount += 1\n\n        sortTimeline(dms)\n      }\n    }\n\n    // Decide if we should treat the status as new for this timeline.\n    let resultForCurrentTimeline\n    // Some statuses should only be added to the global status repository.\n    if (timeline && addToTimeline) {\n      resultForCurrentTimeline = mergeOrAdd(timelineObject.statuses, timelineObject.statusesObject, status)\n    }\n\n    if (timeline && showImmediately) {\n      // Add it directly to the visibleStatuses, don't change\n      // newStatusCount\n      mergeOrAdd(timelineObject.visibleStatuses, timelineObject.visibleStatusesObject, status)\n    } else if (timeline && addToTimeline && resultForCurrentTimeline.new) {\n      // Just change newStatuscount\n      timelineObject.newStatusCount += 1\n    }\n\n    return status\n  }\n\n  const favoriteStatus = (favorite, counter) => {\n    const status = find(allStatuses, { id: favorite.in_reply_to_status_id })\n    if (status) {\n      // This is our favorite, so the relevant bit.\n      if (favorite.user.id === user.id) {\n        status.favorited = true\n      } else {\n        status.fave_num += 1\n      }\n    }\n    return status\n  }\n\n  const processors = {\n    'status': (status) => {\n      addStatus(status, showImmediately)\n    },\n    'retweet': (status) => {\n      // RetweetedStatuses are never shown immediately\n      const retweetedStatus = addStatus(status.retweeted_status, false, false)\n\n      let retweet\n      // If the retweeted status is already there, don't add the retweet\n      // to the timeline.\n      if (timeline && find(timelineObject.statuses, (s) => {\n        if (s.retweeted_status) {\n          return s.id === retweetedStatus.id || s.retweeted_status.id === retweetedStatus.id\n        } else {\n          return s.id === retweetedStatus.id\n        }\n      })) {\n        // Already have it visible (either as the original or another RT), don't add to timeline, don't show.\n        retweet = addStatus(status, false, false)\n      } else {\n        retweet = addStatus(status, showImmediately)\n      }\n\n      retweet.retweeted_status = retweetedStatus\n    },\n    'favorite': (favorite) => {\n      // Only update if this is a new favorite.\n      // Ignore our own favorites because we get info about likes as response to like request\n      if (!state.favorites.has(favorite.id)) {\n        state.favorites.add(favorite.id)\n        favoriteStatus(favorite)\n      }\n    },\n    'deletion': (deletion) => {\n      const uri = deletion.uri\n      const status = find(allStatuses, { uri })\n      if (!status) {\n        return\n      }\n\n      removeStatusFromGlobalStorage(state, status)\n\n      if (timeline) {\n        remove(timelineObject.statuses, { uri })\n        remove(timelineObject.visibleStatuses, { uri })\n      }\n    },\n    'follow': (follow) => {\n      // NOOP, it is known status but we don't do anything about it for now\n    },\n    'default': (unknown) => {\n      console.log('unknown status type')\n      console.log(unknown)\n    }\n  }\n\n  each(statuses, (status) => {\n    const type = status.type\n    const processor = processors[type] || processors['default']\n    processor(status)\n  })\n\n  // Keep the visible statuses sorted\n  if (timeline && !(timeline === 'bookmarks')) {\n    sortTimeline(timelineObject)\n  }\n}\n\nconst updateNotificationsMinMaxId = (state, notification) => {\n  state.notifications.maxId = notification.id > state.notifications.maxId\n    ? notification.id\n    : state.notifications.maxId\n  state.notifications.minId = notification.id < state.notifications.minId\n    ? notification.id\n    : state.notifications.minId\n}\n\nconst addNewNotifications = (state, { dispatch, notifications, older, visibleNotificationTypes, rootGetters, newNotificationSideEffects }) => {\n  each(notifications, (notification) => {\n    // If invalid notification, update ids but don't add it to store\n    if (!isValidNotification(notification)) {\n      console.error('Invalid notification:', notification)\n      updateNotificationsMinMaxId(state, notification)\n      return\n    }\n\n    if (isStatusNotification(notification.type)) {\n      notification.action = addStatusToGlobalStorage(state, notification.action).item\n      notification.status = notification.status && addStatusToGlobalStorage(state, notification.status).item\n    }\n\n    if (notification.type === 'pleroma:emoji_reaction') {\n      dispatch('fetchEmojiReactionsBy', notification.status.id)\n    }\n\n    // Only add a new notification if we don't have one for the same action\n    if (!state.notifications.idStore.hasOwnProperty(notification.id)) {\n      updateNotificationsMinMaxId(state, notification)\n\n      state.notifications.data.push(notification)\n      state.notifications.idStore[notification.id] = notification\n\n      newNotificationSideEffects(notification)\n    } else if (notification.seen) {\n      state.notifications.idStore[notification.id].seen = true\n    }\n  })\n}\n\nconst removeStatus = (state, { timeline, userId }) => {\n  const timelineObject = state.timelines[timeline]\n  if (userId) {\n    remove(timelineObject.statuses, { user: { id: userId } })\n    remove(timelineObject.visibleStatuses, { user: { id: userId } })\n    timelineObject.minVisibleId = timelineObject.visibleStatuses.length > 0 ? last(timelineObject.visibleStatuses).id : 0\n    timelineObject.maxId = timelineObject.statuses.length > 0 ? first(timelineObject.statuses).id : 0\n  }\n}\n\nexport const mutations = {\n  addNewStatuses,\n  addNewNotifications,\n  removeStatus,\n  showNewStatuses (state, { timeline }) {\n    const oldTimeline = (state.timelines[timeline])\n\n    oldTimeline.newStatusCount = 0\n    oldTimeline.visibleStatuses = slice(oldTimeline.statuses, 0, 50)\n    oldTimeline.minVisibleId = last(oldTimeline.visibleStatuses).id\n    oldTimeline.minId = oldTimeline.minVisibleId\n    oldTimeline.visibleStatusesObject = {}\n    each(oldTimeline.visibleStatuses, (status) => { oldTimeline.visibleStatusesObject[status.id] = status })\n  },\n  resetStatuses (state) {\n    const emptyState = defaultState()\n    Object.entries(emptyState).forEach(([key, value]) => {\n      state[key] = value\n    })\n  },\n  clearTimeline (state, { timeline, excludeUserId = false }) {\n    const userId = excludeUserId ? state.timelines[timeline].userId : undefined\n    state.timelines[timeline] = emptyTl(userId)\n  },\n  clearNotifications (state) {\n    state.notifications = emptyNotifications()\n  },\n  setFavorited (state, { status, value }) {\n    const newStatus = state.allStatusesObject[status.id]\n\n    if (newStatus.favorited !== value) {\n      if (value) {\n        newStatus.fave_num++\n      } else {\n        newStatus.fave_num--\n      }\n    }\n\n    newStatus.favorited = value\n  },\n  setFavoritedConfirm (state, { status, user }) {\n    const newStatus = state.allStatusesObject[status.id]\n    newStatus.favorited = status.favorited\n    newStatus.fave_num = status.fave_num\n    const index = findIndex(newStatus.favoritedBy, { id: user.id })\n    if (index !== -1 && !newStatus.favorited) {\n      newStatus.favoritedBy.splice(index, 1)\n    } else if (index === -1 && newStatus.favorited) {\n      newStatus.favoritedBy.push(user)\n    }\n  },\n  setMutedStatus (state, status) {\n    const newStatus = state.allStatusesObject[status.id]\n    newStatus.thread_muted = status.thread_muted\n\n    if (newStatus.thread_muted !== undefined) {\n      state.conversationsObject[newStatus.statusnet_conversation_id].forEach(status => { status.thread_muted = newStatus.thread_muted })\n    }\n  },\n  setRetweeted (state, { status, value }) {\n    const newStatus = state.allStatusesObject[status.id]\n\n    if (newStatus.repeated !== value) {\n      if (value) {\n        newStatus.repeat_num++\n      } else {\n        newStatus.repeat_num--\n      }\n    }\n\n    newStatus.repeated = value\n  },\n  setRetweetedConfirm (state, { status, user }) {\n    const newStatus = state.allStatusesObject[status.id]\n    newStatus.repeated = status.repeated\n    newStatus.repeat_num = status.repeat_num\n    const index = findIndex(newStatus.rebloggedBy, { id: user.id })\n    if (index !== -1 && !newStatus.repeated) {\n      newStatus.rebloggedBy.splice(index, 1)\n    } else if (index === -1 && newStatus.repeated) {\n      newStatus.rebloggedBy.push(user)\n    }\n  },\n  setBookmarked (state, { status, value }) {\n    const newStatus = state.allStatusesObject[status.id]\n    newStatus.bookmarked = value\n  },\n  setBookmarkedConfirm (state, { status }) {\n    const newStatus = state.allStatusesObject[status.id]\n    newStatus.bookmarked = status.bookmarked\n  },\n  setDeleted (state, { status }) {\n    const newStatus = state.allStatusesObject[status.id]\n    if (newStatus) newStatus.deleted = true\n  },\n  setManyDeleted (state, condition) {\n    Object.values(state.allStatusesObject).forEach(status => {\n      if (condition(status)) {\n        status.deleted = true\n      }\n    })\n  },\n  setLoading (state, { timeline, value }) {\n    state.timelines[timeline].loading = value\n  },\n  setNsfw (state, { id, nsfw }) {\n    const newStatus = state.allStatusesObject[id]\n    newStatus.nsfw = nsfw\n  },\n  setNotificationsLoading (state, { value }) {\n    state.notifications.loading = value\n  },\n  setNotificationsSilence (state, { value }) {\n    state.notifications.desktopNotificationSilence = value\n  },\n  markNotificationsAsSeen (state) {\n    each(state.notifications.data, (notification) => {\n      notification.seen = true\n    })\n  },\n  markSingleNotificationAsSeen (state, { id }) {\n    const notification = find(state.notifications.data, n => n.id === id)\n    if (notification) notification.seen = true\n  },\n  dismissNotification (state, { id }) {\n    state.notifications.data = state.notifications.data.filter(n => n.id !== id)\n  },\n  dismissNotifications (state, { finder }) {\n    state.notifications.data = state.notifications.data.filter(n => finder)\n  },\n  updateNotification (state, { id, updater }) {\n    const notification = find(state.notifications.data, n => n.id === id)\n    notification && updater(notification)\n  },\n  queueFlush (state, { timeline, id }) {\n    state.timelines[timeline].flushMarker = id\n  },\n  queueFlushAll (state) {\n    Object.keys(state.timelines).forEach((timeline) => {\n      state.timelines[timeline].flushMarker = state.timelines[timeline].maxId\n    })\n  },\n  addRepeats (state, { id, rebloggedByUsers, currentUser }) {\n    const newStatus = state.allStatusesObject[id]\n    newStatus.rebloggedBy = rebloggedByUsers.filter(_ => _)\n    // repeats stats can be incorrect based on polling condition, let's update them using the most recent data\n    newStatus.repeat_num = newStatus.rebloggedBy.length\n    newStatus.repeated = !!newStatus.rebloggedBy.find(({ id }) => currentUser.id === id)\n  },\n  addFavs (state, { id, favoritedByUsers, currentUser }) {\n    const newStatus = state.allStatusesObject[id]\n    newStatus.favoritedBy = favoritedByUsers.filter(_ => _)\n    // favorites stats can be incorrect based on polling condition, let's update them using the most recent data\n    newStatus.fave_num = newStatus.favoritedBy.length\n    newStatus.favorited = !!newStatus.favoritedBy.find(({ id }) => currentUser.id === id)\n  },\n  addEmojiReactionsBy (state, { id, emojiReactions, currentUser }) {\n    const status = state.allStatusesObject[id]\n    status['emoji_reactions'] = emojiReactions\n  },\n  addOwnReaction (state, { id, emoji, currentUser }) {\n    const status = state.allStatusesObject[id]\n    const reactionIndex = findIndex(status.emoji_reactions, { name: emoji })\n    const reaction = status.emoji_reactions[reactionIndex] || { name: emoji, count: 0, accounts: [] }\n\n    const newReaction = {\n      ...reaction,\n      count: reaction.count + 1,\n      me: true,\n      accounts: [\n        ...reaction.accounts,\n        currentUser\n      ]\n    }\n\n    // Update count of existing reaction if it exists, otherwise append at the end\n    if (reactionIndex >= 0) {\n      status.emoji_reactions[reactionIndex] = newReaction\n    } else {\n      status['emoji_reactions'] = [...status.emoji_reactions, newReaction]\n    }\n  },\n  removeOwnReaction (state, { id, emoji, currentUser }) {\n    const status = state.allStatusesObject[id]\n    const reactionIndex = findIndex(status.emoji_reactions, { name: emoji })\n    if (reactionIndex < 0) return\n\n    const reaction = status.emoji_reactions[reactionIndex]\n    const accounts = reaction.accounts || []\n\n    const newReaction = {\n      ...reaction,\n      count: reaction.count - 1,\n      me: false,\n      accounts: accounts.filter(acc => acc.id !== currentUser.id)\n    }\n\n    if (newReaction.count > 0) {\n      status.emoji_reactions[reactionIndex] = newReaction\n    } else {\n      status['emoji_reactions'] = status.emoji_reactions.filter(r => r.name !== emoji)\n    }\n  },\n  updateStatusWithPoll (state, { id, poll }) {\n    const status = state.allStatusesObject[id]\n    status.poll = poll\n  },\n  setVirtualHeight (state, { statusId, height }) {\n    state.allStatusesObject[statusId].virtualHeight = height\n  }\n}\n\nconst statuses = {\n  state: defaultState(),\n  actions: {\n    addNewStatuses ({ rootState, commit }, { statuses, showImmediately = false, timeline = false, noIdUpdate = false, userId, pagination }) {\n      commit('addNewStatuses', { statuses, showImmediately, timeline, noIdUpdate, user: rootState.users.currentUser, userId, pagination })\n    },\n    addNewNotifications (store, { notifications, older }) {\n      const { commit, dispatch, rootGetters } = store\n\n      const newNotificationSideEffects = (notification) => {\n        maybeShowNotification(store, notification)\n      }\n      commit('addNewNotifications', { dispatch, notifications, older, rootGetters, newNotificationSideEffects })\n    },\n    setNotificationsLoading ({ rootState, commit }, { value }) {\n      commit('setNotificationsLoading', { value })\n    },\n    setNotificationsSilence ({ rootState, commit }, { value }) {\n      commit('setNotificationsSilence', { value })\n    },\n    fetchStatus ({ rootState, dispatch }, id) {\n      return rootState.api.backendInteractor.fetchStatus({ id })\n        .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n    },\n    deleteStatus ({ rootState, commit }, status) {\n      commit('setDeleted', { status })\n      apiService.deleteStatus({ id: status.id, credentials: rootState.users.currentUser.credentials })\n    },\n    deleteStatusById ({ rootState, commit }, id) {\n      const status = rootState.statuses.allStatusesObject[id]\n      commit('setDeleted', { status })\n    },\n    markStatusesAsDeleted ({ commit }, condition) {\n      commit('setManyDeleted', condition)\n    },\n    favorite ({ rootState, commit }, status) {\n      // Optimistic favoriting...\n      commit('setFavorited', { status, value: true })\n      rootState.api.backendInteractor.favorite({ id: status.id })\n        .then(status => commit('setFavoritedConfirm', { status, user: rootState.users.currentUser }))\n    },\n    unfavorite ({ rootState, commit }, status) {\n      // Optimistic unfavoriting...\n      commit('setFavorited', { status, value: false })\n      rootState.api.backendInteractor.unfavorite({ id: status.id })\n        .then(status => commit('setFavoritedConfirm', { status, user: rootState.users.currentUser }))\n    },\n    fetchPinnedStatuses ({ rootState, dispatch }, userId) {\n      rootState.api.backendInteractor.fetchPinnedStatuses({ id: userId })\n        .then(statuses => dispatch('addNewStatuses', { statuses, timeline: 'user', userId, showImmediately: true, noIdUpdate: true }))\n    },\n    pinStatus ({ rootState, dispatch }, statusId) {\n      return rootState.api.backendInteractor.pinOwnStatus({ id: statusId })\n        .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n    },\n    unpinStatus ({ rootState, dispatch }, statusId) {\n      rootState.api.backendInteractor.unpinOwnStatus({ id: statusId })\n        .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n    },\n    muteConversation ({ rootState, commit }, statusId) {\n      return rootState.api.backendInteractor.muteConversation({ id: statusId })\n        .then((status) => commit('setMutedStatus', status))\n    },\n    unmuteConversation ({ rootState, commit }, statusId) {\n      return rootState.api.backendInteractor.unmuteConversation({ id: statusId })\n        .then((status) => commit('setMutedStatus', status))\n    },\n    retweet ({ rootState, commit }, status) {\n      // Optimistic retweeting...\n      commit('setRetweeted', { status, value: true })\n      rootState.api.backendInteractor.retweet({ id: status.id })\n        .then(status => commit('setRetweetedConfirm', { status: status.retweeted_status, user: rootState.users.currentUser }))\n    },\n    unretweet ({ rootState, commit }, status) {\n      // Optimistic unretweeting...\n      commit('setRetweeted', { status, value: false })\n      rootState.api.backendInteractor.unretweet({ id: status.id })\n        .then(status => commit('setRetweetedConfirm', { status, user: rootState.users.currentUser }))\n    },\n    bookmark ({ rootState, commit }, status) {\n      commit('setBookmarked', { status, value: true })\n      rootState.api.backendInteractor.bookmarkStatus({ id: status.id })\n        .then(status => {\n          commit('setBookmarkedConfirm', { status })\n        })\n    },\n    unbookmark ({ rootState, commit }, status) {\n      commit('setBookmarked', { status, value: false })\n      rootState.api.backendInteractor.unbookmarkStatus({ id: status.id })\n        .then(status => {\n          commit('setBookmarkedConfirm', { status })\n        })\n    },\n    queueFlush ({ rootState, commit }, { timeline, id }) {\n      commit('queueFlush', { timeline, id })\n    },\n    queueFlushAll ({ rootState, commit }) {\n      commit('queueFlushAll')\n    },\n    markNotificationsAsSeen ({ rootState, commit }) {\n      commit('markNotificationsAsSeen')\n      apiService.markNotificationsAsSeen({\n        id: rootState.statuses.notifications.maxId,\n        credentials: rootState.users.currentUser.credentials\n      })\n    },\n    markSingleNotificationAsSeen ({ rootState, commit }, { id }) {\n      commit('markSingleNotificationAsSeen', { id })\n      apiService.markNotificationsAsSeen({\n        single: true,\n        id,\n        credentials: rootState.users.currentUser.credentials\n      })\n    },\n    dismissNotificationLocal ({ rootState, commit }, { id }) {\n      commit('dismissNotification', { id })\n    },\n    dismissNotification ({ rootState, commit }, { id }) {\n      commit('dismissNotification', { id })\n      rootState.api.backendInteractor.dismissNotification({ id })\n    },\n    updateNotification ({ rootState, commit }, { id, updater }) {\n      commit('updateNotification', { id, updater })\n    },\n    fetchFavsAndRepeats ({ rootState, commit }, id) {\n      Promise.all([\n        rootState.api.backendInteractor.fetchFavoritedByUsers({ id }),\n        rootState.api.backendInteractor.fetchRebloggedByUsers({ id })\n      ]).then(([favoritedByUsers, rebloggedByUsers]) => {\n        commit('addFavs', { id, favoritedByUsers, currentUser: rootState.users.currentUser })\n        commit('addRepeats', { id, rebloggedByUsers, currentUser: rootState.users.currentUser })\n      })\n    },\n    reactWithEmoji ({ rootState, dispatch, commit }, { id, emoji }) {\n      const currentUser = rootState.users.currentUser\n      if (!currentUser) return\n\n      commit('addOwnReaction', { id, emoji, currentUser })\n      rootState.api.backendInteractor.reactWithEmoji({ id, emoji }).then(\n        ok => {\n          dispatch('fetchEmojiReactionsBy', id)\n        }\n      )\n    },\n    unreactWithEmoji ({ rootState, dispatch, commit }, { id, emoji }) {\n      const currentUser = rootState.users.currentUser\n      if (!currentUser) return\n\n      commit('removeOwnReaction', { id, emoji, currentUser })\n      rootState.api.backendInteractor.unreactWithEmoji({ id, emoji }).then(\n        ok => {\n          dispatch('fetchEmojiReactionsBy', id)\n        }\n      )\n    },\n    fetchEmojiReactionsBy ({ rootState, commit }, id) {\n      rootState.api.backendInteractor.fetchEmojiReactions({ id }).then(\n        emojiReactions => {\n          commit('addEmojiReactionsBy', { id, emojiReactions, currentUser: rootState.users.currentUser })\n        }\n      )\n    },\n    fetchFavs ({ rootState, commit }, id) {\n      rootState.api.backendInteractor.fetchFavoritedByUsers({ id })\n        .then(favoritedByUsers => commit('addFavs', { id, favoritedByUsers, currentUser: rootState.users.currentUser }))\n    },\n    fetchRepeats ({ rootState, commit }, id) {\n      rootState.api.backendInteractor.fetchRebloggedByUsers({ id })\n        .then(rebloggedByUsers => commit('addRepeats', { id, rebloggedByUsers, currentUser: rootState.users.currentUser }))\n    },\n    search (store, { q, resolve, limit, offset, following }) {\n      return store.rootState.api.backendInteractor.search2({ q, resolve, limit, offset, following })\n        .then((data) => {\n          store.commit('addNewUsers', data.accounts)\n          store.commit('addNewStatuses', { statuses: data.statuses })\n          return data\n        })\n    },\n    setVirtualHeight ({ commit }, { statusId, height }) {\n      commit('setVirtualHeight', { statusId, height })\n    }\n  },\n  mutations\n}\n\nexport default statuses\n","import { camelCase } from 'lodash'\n\nimport apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst update = ({ store, statuses, timeline, showImmediately, userId, pagination }) => {\n  const ccTimeline = camelCase(timeline)\n\n  store.dispatch('addNewStatuses', {\n    timeline: ccTimeline,\n    userId,\n    statuses,\n    showImmediately,\n    pagination\n  })\n}\n\nconst fetchAndUpdate = ({\n  store,\n  credentials,\n  timeline = 'friends',\n  older = false,\n  showImmediately = false,\n  userId = false,\n  tag = false,\n  until,\n  since\n}) => {\n  const args = { timeline, credentials }\n  const rootState = store.rootState || store.state\n  const { getters } = store\n  const timelineData = rootState.statuses.timelines[camelCase(timeline)]\n  const { hideMutedPosts, replyVisibility } = getters.mergedConfig\n  const loggedIn = !!rootState.users.currentUser\n\n  if (older) {\n    args['until'] = until || timelineData.minId\n  } else {\n    if (since === undefined) {\n      args['since'] = timelineData.maxId\n    } else if (since !== null) {\n      args['since'] = since\n    }\n  }\n\n  args['userId'] = userId\n  args['tag'] = tag\n  args['withMuted'] = !hideMutedPosts\n  if (loggedIn && ['friends', 'public', 'publicAndExternal'].includes(timeline)) {\n    args['replyVisibility'] = replyVisibility\n  }\n\n  const numStatusesBeforeFetch = timelineData.statuses.length\n\n  return apiService.fetchTimeline(args)\n    .then(response => {\n      if (response.errors) {\n        throw new Error(`${response.status} ${response.statusText}`)\n      }\n\n      const { data: statuses, pagination } = response\n      if (!older && statuses.length >= 20 && !timelineData.loading && numStatusesBeforeFetch > 0) {\n        store.dispatch('queueFlush', { timeline: timeline, id: timelineData.maxId })\n      }\n      update({ store, statuses, timeline, showImmediately, userId, pagination })\n      return { statuses, pagination }\n    })\n    .catch((error) => {\n      store.dispatch('pushGlobalNotice', {\n        level: 'error',\n        messageKey: 'timeline.error',\n        messageArgs: [error.message],\n        timeout: 5000\n      })\n    })\n}\n\nconst startFetching = ({ timeline = 'friends', credentials, store, userId = false, tag = false }) => {\n  const rootState = store.rootState || store.state\n  const timelineData = rootState.statuses.timelines[camelCase(timeline)]\n  const showImmediately = timelineData.visibleStatuses.length === 0\n  timelineData.userId = userId\n  fetchAndUpdate({ timeline, credentials, store, showImmediately, userId, tag })\n  const boundFetchAndUpdate = () =>\n    fetchAndUpdate({ timeline, credentials, store, userId, tag })\n  return promiseInterval(boundFetchAndUpdate, 20000)\n}\nconst timelineFetcher = {\n  fetchAndUpdate,\n  startFetching\n}\n\nexport default timelineFetcher\n","import apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst fetchAndUpdate = ({ store, credentials }) => {\n  return apiService.fetchFollowRequests({ credentials })\n    .then((requests) => {\n      store.commit('setFollowRequests', requests)\n      store.commit('addNewUsers', requests)\n    }, () => {})\n    .catch(() => {})\n}\n\nconst startFetching = ({ credentials, store }) => {\n  const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store })\n  boundFetchAndUpdate()\n  return promiseInterval(boundFetchAndUpdate, 240000)\n}\n\nconst followRequestFetcher = {\n  startFetching\n}\n\nexport default followRequestFetcher\n","import apiService, { getMastodonSocketURI, ProcessedWS } from '../api/api.service.js'\nimport timelineFetcher from '../timeline_fetcher/timeline_fetcher.service.js'\nimport notificationsFetcher from '../notifications_fetcher/notifications_fetcher.service.js'\nimport followRequestFetcher from '../../services/follow_request_fetcher/follow_request_fetcher.service'\n\nconst backendInteractorService = credentials => ({\n  startFetchingTimeline ({ timeline, store, userId = false, tag }) {\n    return timelineFetcher.startFetching({ timeline, store, credentials, userId, tag })\n  },\n\n  fetchTimeline (args) {\n    return timelineFetcher.fetchAndUpdate({ ...args, credentials })\n  },\n\n  startFetchingNotifications ({ store }) {\n    return notificationsFetcher.startFetching({ store, credentials })\n  },\n\n  fetchNotifications (args) {\n    return notificationsFetcher.fetchAndUpdate({ ...args, credentials })\n  },\n\n  startFetchingFollowRequests ({ store }) {\n    return followRequestFetcher.startFetching({ store, credentials })\n  },\n\n  startUserSocket ({ store }) {\n    const serv = store.rootState.instance.server.replace('http', 'ws')\n    const url = serv + getMastodonSocketURI({ credentials, stream: 'user' })\n    return ProcessedWS({ url, id: 'User' })\n  },\n\n  ...Object.entries(apiService).reduce((acc, [key, func]) => {\n    return {\n      ...acc,\n      [key]: (args) => func({ credentials, ...args })\n    }\n  }, {}),\n\n  verifyCredentials: apiService.verifyCredentials\n})\n\nexport default backendInteractorService\n","\nexport const windowWidth = () =>\n  window.innerWidth ||\n  document.documentElement.clientWidth ||\n  document.body.clientWidth\n\nexport const windowHeight = () =>\n  window.innerHeight ||\n  document.documentElement.clientHeight ||\n  document.body.clientHeight\n","import { reduce } from 'lodash'\n\nconst REDIRECT_URI = `${window.location.origin}/oauth-callback`\n\nexport const getOrCreateApp = ({ clientId, clientSecret, instance, commit }) => {\n  if (clientId && clientSecret) {\n    return Promise.resolve({ clientId, clientSecret })\n  }\n\n  const url = `${instance}/api/v1/apps`\n  const form = new window.FormData()\n\n  form.append('client_name', `PleromaFE_${window.___pleromafe_commit_hash}_${(new Date()).toISOString()}`)\n  form.append('redirect_uris', REDIRECT_URI)\n  form.append('scopes', 'read write follow push admin')\n\n  return window.fetch(url, {\n    method: 'POST',\n    body: form\n  })\n    .then((data) => data.json())\n    .then((app) => ({ clientId: app.client_id, clientSecret: app.client_secret }))\n    .then((app) => commit('setClientData', app) || app)\n}\n\nconst login = ({ instance, clientId }) => {\n  const data = {\n    response_type: 'code',\n    client_id: clientId,\n    redirect_uri: REDIRECT_URI,\n    scope: 'read write follow push admin'\n  }\n\n  const dataString = reduce(data, (acc, v, k) => {\n    const encoded = `${k}=${encodeURIComponent(v)}`\n    if (!acc) {\n      return encoded\n    } else {\n      return `${acc}&${encoded}`\n    }\n  }, false)\n\n  // Do the redirect...\n  const url = `${instance}/oauth/authorize?${dataString}`\n\n  window.location.href = url\n}\n\nconst getTokenWithCredentials = ({ clientId, clientSecret, instance, username, password }) => {\n  const url = `${instance}/oauth/token`\n  const form = new window.FormData()\n\n  form.append('client_id', clientId)\n  form.append('client_secret', clientSecret)\n  form.append('grant_type', 'password')\n  form.append('username', username)\n  form.append('password', password)\n\n  return window.fetch(url, {\n    method: 'POST',\n    body: form\n  }).then((data) => data.json())\n}\n\nconst getToken = ({ clientId, clientSecret, instance, code }) => {\n  const url = `${instance}/oauth/token`\n  const form = new window.FormData()\n\n  form.append('client_id', clientId)\n  form.append('client_secret', clientSecret)\n  form.append('grant_type', 'authorization_code')\n  form.append('code', code)\n  form.append('redirect_uri', `${window.location.origin}/oauth-callback`)\n\n  return window.fetch(url, {\n    method: 'POST',\n    body: form\n  })\n    .then((data) => data.json())\n}\n\nexport const getClientToken = ({ clientId, clientSecret, instance }) => {\n  const url = `${instance}/oauth/token`\n  const form = new window.FormData()\n\n  form.append('client_id', clientId)\n  form.append('client_secret', clientSecret)\n  form.append('grant_type', 'client_credentials')\n  form.append('redirect_uri', `${window.location.origin}/oauth-callback`)\n\n  return window.fetch(url, {\n    method: 'POST',\n    body: form\n  }).then((data) => data.json())\n}\nconst verifyOTPCode = ({ app, instance, mfaToken, code }) => {\n  const url = `${instance}/oauth/mfa/challenge`\n  const form = new window.FormData()\n\n  form.append('client_id', app.client_id)\n  form.append('client_secret', app.client_secret)\n  form.append('mfa_token', mfaToken)\n  form.append('code', code)\n  form.append('challenge_type', 'totp')\n\n  return window.fetch(url, {\n    method: 'POST',\n    body: form\n  }).then((data) => data.json())\n}\n\nconst verifyRecoveryCode = ({ app, instance, mfaToken, code }) => {\n  const url = `${instance}/oauth/mfa/challenge`\n  const form = new window.FormData()\n\n  form.append('client_id', app.client_id)\n  form.append('client_secret', app.client_secret)\n  form.append('mfa_token', mfaToken)\n  form.append('code', code)\n  form.append('challenge_type', 'recovery')\n\n  return window.fetch(url, {\n    method: 'POST',\n    body: form\n  }).then((data) => data.json())\n}\n\nconst revokeToken = ({ app, instance, token }) => {\n  const url = `${instance}/oauth/revoke`\n  const form = new window.FormData()\n\n  form.append('client_id', app.clientId)\n  form.append('client_secret', app.clientSecret)\n  form.append('token', token)\n\n  return window.fetch(url, {\n    method: 'POST',\n    body: form\n  }).then((data) => data.json())\n}\n\nconst oauth = {\n  login,\n  getToken,\n  getTokenWithCredentials,\n  getOrCreateApp,\n  verifyOTPCode,\n  verifyRecoveryCode,\n  revokeToken\n}\n\nexport default oauth\n","import runtime from 'serviceworker-webpack-plugin/lib/runtime'\n\nfunction urlBase64ToUint8Array (base64String) {\n  const padding = '='.repeat((4 - base64String.length % 4) % 4)\n  const base64 = (base64String + padding)\n    .replace(/-/g, '+')\n    .replace(/_/g, '/')\n\n  const rawData = window.atob(base64)\n  return Uint8Array.from([...rawData].map((char) => char.charCodeAt(0)))\n}\n\nfunction isPushSupported () {\n  return 'serviceWorker' in navigator && 'PushManager' in window\n}\n\nfunction getOrCreateServiceWorker () {\n  return runtime.register()\n    .catch((err) => console.error('Unable to get or create a service worker.', err))\n}\n\nfunction subscribePush (registration, isEnabled, vapidPublicKey) {\n  if (!isEnabled) return Promise.reject(new Error('Web Push is disabled in config'))\n  if (!vapidPublicKey) return Promise.reject(new Error('VAPID public key is not found'))\n\n  const subscribeOptions = {\n    userVisibleOnly: true,\n    applicationServerKey: urlBase64ToUint8Array(vapidPublicKey)\n  }\n  return registration.pushManager.subscribe(subscribeOptions)\n}\n\nfunction unsubscribePush (registration) {\n  return registration.pushManager.getSubscription()\n    .then((subscribtion) => {\n      if (subscribtion === null) { return }\n      return subscribtion.unsubscribe()\n    })\n}\n\nfunction deleteSubscriptionFromBackEnd (token) {\n  return window.fetch('/api/v1/push/subscription/', {\n    method: 'DELETE',\n    headers: {\n      'Content-Type': 'application/json',\n      'Authorization': `Bearer ${token}`\n    }\n  }).then((response) => {\n    if (!response.ok) throw new Error('Bad status code from server.')\n    return response\n  })\n}\n\nfunction sendSubscriptionToBackEnd (subscription, token, notificationVisibility) {\n  return window.fetch('/api/v1/push/subscription/', {\n    method: 'POST',\n    headers: {\n      'Content-Type': 'application/json',\n      'Authorization': `Bearer ${token}`\n    },\n    body: JSON.stringify({\n      subscription,\n      data: {\n        alerts: {\n          follow: notificationVisibility.follows,\n          favourite: notificationVisibility.likes,\n          mention: notificationVisibility.mentions,\n          reblog: notificationVisibility.repeats,\n          move: notificationVisibility.moves\n        }\n      }\n    })\n  }).then((response) => {\n    if (!response.ok) throw new Error('Bad status code from server.')\n    return response.json()\n  }).then((responseData) => {\n    if (!responseData.id) throw new Error('Bad response from server.')\n    return responseData\n  })\n}\n\nexport function registerPushNotifications (isEnabled, vapidPublicKey, token, notificationVisibility) {\n  if (isPushSupported()) {\n    getOrCreateServiceWorker()\n      .then((registration) => subscribePush(registration, isEnabled, vapidPublicKey))\n      .then((subscription) => sendSubscriptionToBackEnd(subscription, token, notificationVisibility))\n      .catch((e) => console.warn(`Failed to setup Web Push Notifications: ${e.message}`))\n  }\n}\n\nexport function unregisterPushNotifications (token) {\n  if (isPushSupported()) {\n    Promise.all([\n      deleteSubscriptionFromBackEnd(token),\n      getOrCreateServiceWorker()\n        .then((registration) => {\n          return unsubscribePush(registration).then((result) => [registration, result])\n        })\n        .then(([registration, unsubResult]) => {\n          if (!unsubResult) {\n            console.warn('Push subscription cancellation wasn\\'t successful, killing SW anyway...')\n          }\n          return registration.unregister().then((result) => {\n            if (!result) {\n              console.warn('Failed to kill SW')\n            }\n          })\n        })\n    ]).catch((e) => console.warn(`Failed to disable Web Push Notifications: ${e.message}`))\n  }\n}\n","import backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { windowWidth, windowHeight } from '../services/window_utils/window_utils'\nimport oauthApi from '../services/new_api/oauth.js'\nimport { compact, map, each, mergeWith, last, concat, uniq, isArray } from 'lodash'\nimport { registerPushNotifications, unregisterPushNotifications } from '../services/push/push.js'\n\n// TODO: Unify with mergeOrAdd in statuses.js\nexport const mergeOrAdd = (arr, obj, item) => {\n  if (!item) { return false }\n  const oldItem = obj[item.id]\n  if (oldItem) {\n    // We already have this, so only merge the new info.\n    mergeWith(oldItem, item, mergeArrayLength)\n    return { item: oldItem, new: false }\n  } else {\n    // This is a new item, prepare it\n    arr.push(item)\n    obj[item.id] = item\n    if (item.screen_name && !item.screen_name.includes('@')) {\n      obj[item.screen_name.toLowerCase()] = item\n    }\n    return { item, new: true }\n  }\n}\n\nconst mergeArrayLength = (oldValue, newValue) => {\n  if (isArray(oldValue) && isArray(newValue)) {\n    oldValue.length = newValue.length\n    return mergeWith(oldValue, newValue, mergeArrayLength)\n  }\n}\n\nconst getNotificationPermission = () => {\n  const Notification = window.Notification\n\n  if (!Notification) return Promise.resolve(null)\n  if (Notification.permission === 'default') return Notification.requestPermission()\n  return Promise.resolve(Notification.permission)\n}\n\nconst blockUser = (store, id) => {\n  return store.rootState.api.backendInteractor.blockUser({ id })\n    .then((relationship) => {\n      store.commit('updateUserRelationship', [relationship])\n      store.commit('addBlockId', id)\n      store.commit('removeStatus', { timeline: 'friends', userId: id })\n      store.commit('removeStatus', { timeline: 'public', userId: id })\n      store.commit('removeStatus', { timeline: 'publicAndExternal', userId: id })\n    })\n}\n\nconst unblockUser = (store, id) => {\n  return store.rootState.api.backendInteractor.unblockUser({ id })\n    .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst muteUser = (store, id) => {\n  const predictedRelationship = store.state.relationships[id] || { id }\n  predictedRelationship.muting = true\n  store.commit('updateUserRelationship', [predictedRelationship])\n  store.commit('addMuteId', id)\n\n  return store.rootState.api.backendInteractor.muteUser({ id })\n    .then((relationship) => {\n      store.commit('updateUserRelationship', [relationship])\n      store.commit('addMuteId', id)\n    })\n}\n\nconst unmuteUser = (store, id) => {\n  const predictedRelationship = store.state.relationships[id] || { id }\n  predictedRelationship.muting = false\n  store.commit('updateUserRelationship', [predictedRelationship])\n\n  return store.rootState.api.backendInteractor.unmuteUser({ id })\n    .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst hideReblogs = (store, userId) => {\n  return store.rootState.api.backendInteractor.followUser({ id: userId, reblogs: false })\n    .then((relationship) => {\n      store.commit('updateUserRelationship', [relationship])\n    })\n}\n\nconst showReblogs = (store, userId) => {\n  return store.rootState.api.backendInteractor.followUser({ id: userId, reblogs: true })\n    .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst fetchMascot = (store) => {\n  return store.rootState.api.backendInteractor.fetchMascot()\n    .then(({ url }) => store.commit('updateMascot', url))\n}\nconst muteDomain = (store, domain) => {\n  return store.rootState.api.backendInteractor.muteDomain({ domain })\n    .then(() => store.commit('addDomainMute', domain))\n}\n\nconst unmuteDomain = (store, domain) => {\n  return store.rootState.api.backendInteractor.unmuteDomain({ domain })\n    .then(() => store.commit('removeDomainMute', domain))\n}\n\nexport const mutations = {\n  tagUser (state, { user: { id }, tag }) {\n    const user = state.usersObject[id]\n    const tags = user.tags || []\n    const newTags = tags.concat([tag])\n    user['tags'] = newTags\n  },\n  untagUser (state, { user: { id }, tag }) {\n    const user = state.usersObject[id]\n    const tags = user.tags || []\n    const newTags = tags.filter(t => t !== tag)\n    user['tags'] = newTags\n  },\n  updateRight (state, { user: { id }, right, value }) {\n    const user = state.usersObject[id]\n    let newRights = user.rights\n    newRights[right] = value\n    user['rights'] = newRights\n  },\n  updateActivationStatus (state, { user: { id }, deactivated }) {\n    const user = state.usersObject[id]\n    user['deactivated'] = deactivated\n  },\n  setCurrentUser (state, user) {\n    state.lastLoginName = user.screen_name\n    state.currentUser = mergeWith(state.currentUser || {}, user, mergeArrayLength)\n  },\n  clearCurrentUser (state) {\n    state.currentUser = false\n    state.lastLoginName = false\n  },\n  beginLogin (state) {\n    state.loggingIn = true\n  },\n  endLogin (state) {\n    state.loggingIn = false\n  },\n  saveFriendIds (state, { id, friendIds }) {\n    const user = state.usersObject[id]\n    user.friendIds = uniq(concat(user.friendIds || [], friendIds))\n  },\n  saveFollowerIds (state, { id, followerIds }) {\n    const user = state.usersObject[id]\n    user.followerIds = uniq(concat(user.followerIds || [], followerIds))\n  },\n  // Because frontend doesn't have a reason to keep these stuff in memory\n  // outside of viewing someones user profile.\n  clearFriends (state, userId) {\n    const user = state.usersObject[userId]\n    if (user) {\n      user['friendIds'] = []\n    }\n  },\n  clearFollowers (state, userId) {\n    const user = state.usersObject[userId]\n    if (user) {\n      user['followerIds'] = []\n    }\n  },\n  addNewUsers (state, users) {\n    each(users, (user) => {\n      if (user.relationship) {\n        state.relationships[user.relationship.id] = user.relationship\n      }\n      mergeOrAdd(state.users, state.usersObject, user)\n    })\n  },\n  updateUserRelationship (state, relationships) {\n    relationships.forEach((relationship) => {\n      state.relationships[relationship.id] = relationship\n    })\n  },\n  saveBlockIds (state, blockIds) {\n    state.currentUser.blockIds = blockIds\n  },\n  addBlockId (state, blockId) {\n    if (state.currentUser.blockIds.indexOf(blockId) === -1) {\n      state.currentUser.blockIds.push(blockId)\n    }\n  },\n  saveMuteIds (state, muteIds) {\n    state.currentUser.muteIds = muteIds\n  },\n  addMuteId (state, muteId) {\n    if (state.currentUser.muteIds.indexOf(muteId) === -1) {\n      state.currentUser.muteIds.push(muteId)\n    }\n  },\n  updateMascot (state, mascotUrl) {\n    state.currentUser.mascot = mascotUrl\n  },\n  saveDomainMutes (state, domainMutes) {\n    state.currentUser.domainMutes = domainMutes\n  },\n  addDomainMute (state, domain) {\n    if (state.currentUser.domainMutes.indexOf(domain) === -1) {\n      state.currentUser.domainMutes.push(domain)\n    }\n  },\n  removeDomainMute (state, domain) {\n    const index = state.currentUser.domainMutes.indexOf(domain)\n    if (index !== -1) {\n      state.currentUser.domainMutes.splice(index, 1)\n    }\n  },\n  setPinnedToUser (state, status) {\n    const user = state.usersObject[status.user.id]\n    user.pinnedStatusIds = user.pinnedStatusIds || []\n    const index = user.pinnedStatusIds.indexOf(status.id)\n\n    if (status.pinned && index === -1) {\n      user.pinnedStatusIds.push(status.id)\n    } else if (!status.pinned && index !== -1) {\n      user.pinnedStatusIds.splice(index, 1)\n    }\n  },\n  setUserForStatus (state, status) {\n    status.user = state.usersObject[status.user.id]\n  },\n  setUserForNotification (state, notification) {\n    if (notification.type !== 'follow') {\n      notification.action.user = state.usersObject[notification.action.user.id]\n    }\n    notification.from_profile = state.usersObject[notification.from_profile.id]\n  },\n  setColor (state, { user: { id }, highlighted }) {\n    const user = state.usersObject[id]\n    user['highlight'] = highlighted\n  },\n  signUpPending (state) {\n    state.signUpPending = true\n    state.signUpErrors = []\n  },\n  signUpSuccess (state) {\n    state.signUpPending = false\n  },\n  signUpFailure (state, errors) {\n    state.signUpPending = false\n    state.signUpErrors = errors\n  }\n}\n\nexport const getters = {\n  findUser: state => query => {\n    const result = state.usersObject[query]\n    // In case it's a screen_name, we can try searching case-insensitive\n    if (!result && typeof query === 'string') {\n      return state.usersObject[query.toLowerCase()]\n    }\n    return result\n  },\n  findUserByUrl: state => query => {\n    return state.users\n      .find(u => u.statusnet_profile_url &&\n            u.statusnet_profile_url.toLowerCase() === query.toLowerCase())\n  },\n  relationship: state => id => {\n    const rel = id && state.relationships[id]\n    return rel || { id, loading: true }\n  }\n}\n\nexport const defaultState = {\n  loggingIn: false,\n  lastLoginName: false,\n  currentUser: false,\n  users: [],\n  usersObject: {},\n  signUpPending: false,\n  signUpErrors: [],\n  relationships: {}\n}\n\nconst users = {\n  state: defaultState,\n  mutations,\n  getters,\n  actions: {\n    fetchUserIfMissing (store, id) {\n      if (!store.getters.findUser(id)) {\n        store.dispatch('fetchUser', id)\n      }\n    },\n    fetchUser (store, id) {\n      return store.rootState.api.backendInteractor.fetchUser({ id })\n        .then((user) => {\n          store.commit('addNewUsers', [user])\n          return user\n        })\n    },\n    fetchUserRelationship (store, id) {\n      if (store.state.currentUser) {\n        store.rootState.api.backendInteractor.fetchUserRelationship({ id })\n          .then((relationships) => store.commit('updateUserRelationship', relationships))\n      }\n    },\n    fetchBlocks (store) {\n      return store.rootState.api.backendInteractor.fetchBlocks()\n        .then((blocks) => {\n          store.commit('saveBlockIds', map(blocks, 'id'))\n          store.commit('addNewUsers', blocks)\n          return blocks\n        })\n    },\n    blockUser (store, id) {\n      return blockUser(store, id)\n    },\n    unblockUser (store, id) {\n      return unblockUser(store, id)\n    },\n    blockUsers (store, ids = []) {\n      return Promise.all(ids.map(id => blockUser(store, id)))\n    },\n    unblockUsers (store, ids = []) {\n      return Promise.all(ids.map(id => unblockUser(store, id)))\n    },\n    fetchMutes (store) {\n      return store.rootState.api.backendInteractor.fetchMutes()\n        .then((mutes) => {\n          store.commit('saveMuteIds', map(mutes, 'id'))\n          store.commit('addNewUsers', mutes)\n          return mutes\n        })\n    },\n    muteUser (store, id) {\n      return muteUser(store, id)\n    },\n    unmuteUser (store, id) {\n      return unmuteUser(store, id)\n    },\n    hideReblogs (store, id) {\n      return hideReblogs(store, id)\n    },\n    showReblogs (store, id) {\n      return showReblogs(store, id)\n    },\n    muteUsers (store, ids = []) {\n      return Promise.all(ids.map(id => muteUser(store, id)))\n    },\n    unmuteUsers (store, ids = []) {\n      return Promise.all(ids.map(id => unmuteUser(store, id)))\n    },\n    fetchMascot (store) {\n      return fetchMascot(store)\n    },\n    fetchDomainMutes (store) {\n      return store.rootState.api.backendInteractor.fetchDomainMutes()\n        .then((domainMutes) => {\n          store.commit('saveDomainMutes', domainMutes)\n          return domainMutes\n        })\n    },\n    muteDomain (store, domain) {\n      return muteDomain(store, domain)\n    },\n    unmuteDomain (store, domain) {\n      return unmuteDomain(store, domain)\n    },\n    muteDomains (store, domains = []) {\n      return Promise.all(domains.map(domain => muteDomain(store, domain)))\n    },\n    unmuteDomains (store, domain = []) {\n      return Promise.all(domain.map(domain => unmuteDomain(store, domain)))\n    },\n    fetchFriends ({ rootState, commit }, id) {\n      const user = rootState.users.usersObject[id]\n      const maxId = last(user.friendIds)\n      return rootState.api.backendInteractor.fetchFriends({ id, maxId })\n        .then((friends) => {\n          commit('addNewUsers', friends)\n          commit('saveFriendIds', { id, friendIds: map(friends, 'id') })\n          return friends\n        })\n    },\n    fetchFollowers ({ rootState, commit }, id) {\n      const user = rootState.users.usersObject[id]\n      const maxId = last(user.followerIds)\n      return rootState.api.backendInteractor.fetchFollowers({ id, maxId })\n        .then((followers) => {\n          commit('addNewUsers', followers)\n          commit('saveFollowerIds', { id, followerIds: map(followers, 'id') })\n          return followers\n        })\n    },\n    clearFriends ({ commit }, userId) {\n      commit('clearFriends', userId)\n    },\n    clearFollowers ({ commit }, userId) {\n      commit('clearFollowers', userId)\n    },\n    subscribeUser ({ rootState, commit }, id) {\n      return rootState.api.backendInteractor.subscribeUser({ id })\n        .then((relationship) => commit('updateUserRelationship', [relationship]))\n    },\n    unsubscribeUser ({ rootState, commit }, id) {\n      return rootState.api.backendInteractor.unsubscribeUser({ id })\n        .then((relationship) => commit('updateUserRelationship', [relationship]))\n    },\n    toggleActivationStatus ({ rootState, commit }, { user }) {\n      const api = user.deactivated ? rootState.api.backendInteractor.activateUser : rootState.api.backendInteractor.deactivateUser\n      api({ user })\n        .then((user) => { let deactivated = !user.is_active; commit('updateActivationStatus', { user, deactivated }) })\n    },\n    registerPushNotifications (store) {\n      const token = store.state.currentUser.credentials\n      const vapidPublicKey = store.rootState.instance.vapidPublicKey\n      const isEnabled = store.rootState.config.webPushNotifications\n      const notificationVisibility = store.rootState.config.notificationVisibility\n\n      registerPushNotifications(isEnabled, vapidPublicKey, token, notificationVisibility)\n    },\n    unregisterPushNotifications (store) {\n      const token = store.state.currentUser.credentials\n\n      unregisterPushNotifications(token)\n    },\n    addNewUsers ({ commit }, users) {\n      commit('addNewUsers', users)\n    },\n    addNewStatuses (store, { statuses }) {\n      const users = map(statuses, 'user')\n      const retweetedUsers = compact(map(statuses, 'retweeted_status.user'))\n      store.commit('addNewUsers', users)\n      store.commit('addNewUsers', retweetedUsers)\n\n      each(statuses, (status) => {\n        // Reconnect users to statuses\n        store.commit('setUserForStatus', status)\n        // Set pinned statuses to user\n        store.commit('setPinnedToUser', status)\n      })\n      each(compact(map(statuses, 'retweeted_status')), (status) => {\n        // Reconnect users to retweets\n        store.commit('setUserForStatus', status)\n        // Set pinned retweets to user\n        store.commit('setPinnedToUser', status)\n      })\n    },\n    addNewNotifications (store, { notifications }) {\n      const users = map(notifications, 'from_profile')\n      const targetUsers = map(notifications, 'target').filter(_ => _)\n      const notificationIds = notifications.map(_ => _.id)\n      store.commit('addNewUsers', users)\n      store.commit('addNewUsers', targetUsers)\n\n      const notificationsObject = store.rootState.statuses.notifications.idStore\n      const relevantNotifications = Object.entries(notificationsObject)\n        .filter(([k, val]) => notificationIds.includes(k))\n        .map(([k, val]) => val)\n\n      // Reconnect users to notifications\n      each(relevantNotifications, (notification) => {\n        store.commit('setUserForNotification', notification)\n      })\n    },\n    searchUsers ({ rootState, commit }, { query }) {\n      return rootState.api.backendInteractor.searchUsers({ query })\n        .then((users) => {\n          commit('addNewUsers', users)\n          return users\n        })\n    },\n    async signUp (store, userInfo) {\n      store.commit('signUpPending')\n\n      let rootState = store.rootState\n\n      try {\n        let data = await rootState.api.backendInteractor.register(\n          { params: { ...userInfo } }\n        )\n        store.commit('signUpSuccess')\n        store.commit('setToken', data.access_token)\n        store.dispatch('loginUser', data.access_token)\n      } catch (e) {\n        let errors = e.message\n        store.commit('signUpFailure', errors)\n        throw e\n      }\n    },\n    async getCaptcha (store) {\n      return store.rootState.api.backendInteractor.getCaptcha()\n    },\n\n    logout (store) {\n      const { oauth, instance } = store.rootState\n\n      const data = {\n        ...oauth,\n        commit: store.commit,\n        instance: instance.server\n      }\n\n      return oauthApi.getOrCreateApp(data)\n        .then((app) => {\n          const params = {\n            app,\n            instance: data.instance,\n            token: oauth.userToken\n          }\n\n          return oauthApi.revokeToken(params)\n        })\n        .then(() => {\n          store.commit('clearCurrentUser')\n          store.dispatch('disconnectFromSocket')\n          store.commit('clearToken')\n          store.dispatch('stopFetchingTimeline', 'friends')\n          store.commit('setBackendInteractor', backendInteractorService(store.getters.getToken()))\n          store.dispatch('stopFetchingNotifications')\n          store.dispatch('stopFetchingFollowRequests')\n          store.commit('clearNotifications')\n          store.commit('resetStatuses')\n          store.dispatch('resetChats')\n          store.dispatch('setLastTimeline', 'public-timeline')\n          store.dispatch('setLayoutWidth', windowWidth())\n          store.dispatch('setLayoutHeight', windowHeight())\n        })\n    },\n    loginUser (store, accessToken) {\n      return new Promise((resolve, reject) => {\n        const commit = store.commit\n        commit('beginLogin')\n        store.rootState.api.backendInteractor.verifyCredentials(accessToken)\n          .then((data) => {\n            if (!data.error) {\n              const user = data\n              // user.credentials = userCredentials\n              user.credentials = accessToken\n              user.blockIds = []\n              user.muteIds = []\n              user.domainMutes = []\n              commit('setCurrentUser', user)\n              commit('addNewUsers', [user])\n\n              store.dispatch('fetchEmoji')\n\n              getNotificationPermission()\n                .then(permission => commit('setNotificationPermission', permission))\n\n              // Set our new backend interactor\n              commit('setBackendInteractor', backendInteractorService(accessToken))\n\n              if (user.token) {\n                store.dispatch('setWsToken', user.token)\n\n                // Initialize the shout socket.\n                store.dispatch('initializeSocket')\n              }\n\n              const startPolling = () => {\n                // Start getting fresh posts.\n                store.dispatch('startFetchingTimeline', { timeline: 'friends' })\n\n                // Start fetching notifications\n                store.dispatch('startFetchingNotifications')\n\n                // Start fetching chats\n                store.dispatch('startFetchingChats')\n              }\n\n              if (store.getters.mergedConfig.useStreamingApi) {\n                store.dispatch('fetchTimeline', 'friends', { since: null })\n                store.dispatch('fetchNotifications', { since: null })\n                store.dispatch('enableMastoSockets', true).catch((error) => {\n                  console.error('Failed initializing MastoAPI Streaming socket', error)\n                }).then(() => {\n                  store.dispatch('fetchChats', { latest: true })\n                  setTimeout(() => store.dispatch('setNotificationsSilence', false), 10000)\n                })\n              } else {\n                startPolling()\n              }\n\n              // Get user mutes\n              store.dispatch('fetchMutes')\n\n              store.dispatch('setLayoutWidth', windowWidth())\n              store.dispatch('setLayoutHeight', windowHeight())\n\n              // Fetch our friends\n              store.rootState.api.backendInteractor.fetchFriends({ id: user.id })\n                .then((friends) => commit('addNewUsers', friends))\n            } else {\n              const response = data.error\n              // Authentication failed\n              commit('endLogin')\n              if (response.status === 401) {\n                reject(new Error('Wrong username or password'))\n              } else {\n                reject(new Error('An error occurred, please try again'))\n              }\n            }\n            commit('endLogin')\n            resolve()\n          })\n          .catch((error) => {\n            console.log(error)\n            commit('endLogin')\n            reject(new Error('Failed to connect to server, try again'))\n          })\n      })\n    }\n  }\n}\n\nexport default users\n","import { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js'\n\nexport const maybeShowChatNotification = (store, chat) => {\n  if (!chat.lastMessage) return\n  if (store.rootState.chats.currentChatId === chat.id && !document.hidden) return\n  if (store.rootState.users.currentUser.id === chat.lastMessage.account_id) return\n\n  const opts = {\n    tag: chat.lastMessage.id,\n    title: chat.account.name,\n    icon: chat.account.profile_image_url,\n    body: chat.lastMessage.content\n  }\n\n  if (chat.lastMessage.attachment && chat.lastMessage.attachment.type === 'image') {\n    opts.image = chat.lastMessage.attachment.preview_url\n  }\n\n  showDesktopNotification(store.rootState, opts)\n}\n\nexport const buildFakeMessage = ({ content, chatId, attachments, userId, idempotencyKey }) => {\n  const fakeMessage = {\n    content,\n    chat_id: chatId,\n    created_at: new Date(),\n    id: `${new Date().getTime()}`,\n    attachments: attachments,\n    account_id: userId,\n    idempotency_key: idempotencyKey,\n    emojis: [],\n    pending: true,\n    isNormalized: true\n  }\n\n  if (attachments[0]) {\n    fakeMessage.attachment = attachments[0]\n  }\n\n  return fakeMessage\n}\n","import backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { WSConnectionStatus } from '../services/api/api.service.js'\nimport { maybeShowChatNotification } from '../services/chat_utils/chat_utils.js'\nimport { Socket } from 'phoenix'\n\nconst retryTimeout = (multiplier) => 1000 * multiplier\n\nconst api = {\n  state: {\n    retryMultiplier: 1,\n    backendInteractor: backendInteractorService(),\n    fetchers: {},\n    socket: null,\n    mastoUserSocket: null,\n    mastoUserSocketStatus: null,\n    followRequests: []\n  },\n  mutations: {\n    setBackendInteractor (state, backendInteractor) {\n      state.backendInteractor = backendInteractor\n    },\n    addFetcher (state, { fetcherName, fetcher }) {\n      state.fetchers[fetcherName] = fetcher\n    },\n    removeFetcher (state, { fetcherName, fetcher }) {\n      state.fetchers[fetcherName].stop()\n      delete state.fetchers[fetcherName]\n    },\n    setWsToken (state, token) {\n      state.wsToken = token\n    },\n    setSocket (state, socket) {\n      state.socket = socket\n    },\n    setFollowRequests (state, value) {\n      state.followRequests = value\n    },\n    setMastoUserSocketStatus (state, value) {\n      state.mastoUserSocketStatus = value\n    },\n    incrementRetryMultiplier (state) {\n      state.retryMultiplier = Math.max(++state.retryMultiplier, 3)\n    },\n    resetRetryMultiplier (state) {\n      state.retryMultiplier = 1\n    }\n  },\n  actions: {\n    /**\n     * Global MastoAPI socket control, in future should disable ALL sockets/(re)start relevant sockets\n     *\n     * @param {Boolean} [initial] - whether this enabling happened at boot time or not\n     */\n    enableMastoSockets (store, initial) {\n      const { state, dispatch, commit } = store\n      // Do not initialize unless nonexistent or closed\n      if (\n        state.mastoUserSocket &&\n          ![\n            WebSocket.CLOSED,\n            WebSocket.CLOSING\n          ].includes(state.mastoUserSocket.getState())\n      ) {\n        return\n      }\n      if (initial) {\n        commit('setMastoUserSocketStatus', WSConnectionStatus.STARTING_INITIAL)\n      } else {\n        commit('setMastoUserSocketStatus', WSConnectionStatus.STARTING)\n      }\n      return dispatch('startMastoUserSocket')\n    },\n    disableMastoSockets (store) {\n      const { state, dispatch, commit } = store\n      if (!state.mastoUserSocket) return\n      commit('setMastoUserSocketStatus', WSConnectionStatus.DISABLED)\n      return dispatch('stopMastoUserSocket')\n    },\n\n    // MastoAPI 'User' sockets\n    startMastoUserSocket (store) {\n      return new Promise((resolve, reject) => {\n        try {\n          const { state, commit, dispatch, rootState } = store\n          const timelineData = rootState.statuses.timelines.friends\n          state.mastoUserSocket = state.backendInteractor.startUserSocket({ store })\n          state.mastoUserSocket.addEventListener(\n            'message',\n            ({ detail: message }) => {\n              if (!message) return // pings\n              if (message.event === 'notification') {\n                dispatch('addNewNotifications', {\n                  notifications: [message.notification],\n                  older: false\n                })\n              } else if (message.event === 'update') {\n                dispatch('addNewStatuses', {\n                  statuses: [message.status],\n                  userId: false,\n                  showImmediately: timelineData.visibleStatuses.length === 0,\n                  timeline: 'friends'\n                })\n              } else if (message.event === 'delete') {\n                dispatch('deleteStatusById', message.id)\n              } else if (message.event === 'pleroma:chat_update') {\n                // The setTimeout wrapper is a temporary band-aid to avoid duplicates for the user's own messages when doing optimistic sending.\n                // The cause of the duplicates is the WS event arriving earlier than the HTTP response.\n                // This setTimeout wrapper can be removed once the commit `8e41baff` is in the stable Pleroma release.\n                // (`8e41baff` adds the idempotency key to the chat message entity, which PleromaFE uses when it's available, and it makes this artificial delay unnecessary).\n                setTimeout(() => {\n                  dispatch('addChatMessages', {\n                    chatId: message.chatUpdate.id,\n                    messages: [message.chatUpdate.lastMessage]\n                  })\n                  dispatch('updateChat', { chat: message.chatUpdate })\n                  maybeShowChatNotification(store, message.chatUpdate)\n                }, 100)\n              }\n            }\n          )\n          state.mastoUserSocket.addEventListener('open', () => {\n            // Do not show notification when we just opened up the page\n            if (state.mastoUserSocketStatus !== WSConnectionStatus.STARTING_INITIAL) {\n              dispatch('pushGlobalNotice', {\n                level: 'success',\n                messageKey: 'timeline.socket_reconnected',\n                timeout: 5000\n              })\n            }\n            // Stop polling if we were errored or disabled\n            if (new Set([\n              WSConnectionStatus.ERROR,\n              WSConnectionStatus.DISABLED\n            ]).has(state.mastoUserSocketStatus)) {\n              dispatch('stopFetchingTimeline', { timeline: 'friends' })\n              dispatch('stopFetchingNotifications')\n              dispatch('stopFetchingChats')\n            }\n            commit('resetRetryMultiplier')\n            commit('setMastoUserSocketStatus', WSConnectionStatus.JOINED)\n          })\n          state.mastoUserSocket.addEventListener('error', ({ detail: error }) => {\n            console.error('Error in MastoAPI websocket:', error)\n            // TODO is this needed?\n            dispatch('clearOpenedChats')\n          })\n          state.mastoUserSocket.addEventListener('close', ({ detail: closeEvent }) => {\n            const ignoreCodes = new Set([\n              1000, // Normal (intended) closure\n              1001 // Going away\n            ])\n            const { code } = closeEvent\n            if (ignoreCodes.has(code)) {\n              console.debug(`Not restarting socket becasue of closure code ${code} is in ignore list`)\n              commit('setMastoUserSocketStatus', WSConnectionStatus.CLOSED)\n            } else {\n              console.warn(`MastoAPI websocket disconnected, restarting. CloseEvent code: ${code}`)\n              setTimeout(() => {\n                dispatch('startMastoUserSocket')\n              }, retryTimeout(state.retryMultiplier))\n              commit('incrementRetryMultiplier')\n              if (state.mastoUserSocketStatus !== WSConnectionStatus.ERROR) {\n                dispatch('startFetchingTimeline', { timeline: 'friends' })\n                dispatch('startFetchingNotifications')\n                dispatch('startFetchingChats')\n                dispatch('pushGlobalNotice', {\n                  level: 'error',\n                  messageKey: 'timeline.socket_broke',\n                  messageArgs: [code],\n                  timeout: 5000\n                })\n              }\n              commit('setMastoUserSocketStatus', WSConnectionStatus.ERROR)\n            }\n            dispatch('clearOpenedChats')\n          })\n          resolve()\n        } catch (e) {\n          reject(e)\n        }\n      })\n    },\n    stopMastoUserSocket ({ state, dispatch }) {\n      dispatch('startFetchingTimeline', { timeline: 'friends' })\n      dispatch('startFetchingNotifications')\n      dispatch('startFetchingChats')\n      state.mastoUserSocket.close()\n    },\n\n    // Timelines\n    startFetchingTimeline (store, {\n      timeline = 'friends',\n      tag = false,\n      userId = false\n    }) {\n      if (store.state.fetchers[timeline]) return\n\n      const fetcher = store.state.backendInteractor.startFetchingTimeline({\n        timeline, store, userId, tag\n      })\n      store.commit('addFetcher', { fetcherName: timeline, fetcher })\n    },\n    stopFetchingTimeline (store, timeline) {\n      const fetcher = store.state.fetchers[timeline]\n      if (!fetcher) return\n      store.commit('removeFetcher', { fetcherName: timeline, fetcher })\n    },\n    fetchTimeline (store, timeline, { ...rest }) {\n      store.state.backendInteractor.fetchTimeline({\n        store,\n        timeline,\n        ...rest\n      })\n    },\n\n    // Notifications\n    startFetchingNotifications (store) {\n      if (store.state.fetchers.notifications) return\n      const fetcher = store.state.backendInteractor.startFetchingNotifications({ store })\n      store.commit('addFetcher', { fetcherName: 'notifications', fetcher })\n    },\n    stopFetchingNotifications (store) {\n      const fetcher = store.state.fetchers.notifications\n      if (!fetcher) return\n      store.commit('removeFetcher', { fetcherName: 'notifications', fetcher })\n    },\n    fetchNotifications (store, { ...rest }) {\n      store.state.backendInteractor.fetchNotifications({\n        store,\n        ...rest\n      })\n    },\n\n    // Follow requests\n    startFetchingFollowRequests (store) {\n      if (store.state.fetchers['followRequests']) return\n      const fetcher = store.state.backendInteractor.startFetchingFollowRequests({ store })\n\n      store.commit('addFetcher', { fetcherName: 'followRequests', fetcher })\n    },\n    stopFetchingFollowRequests (store) {\n      const fetcher = store.state.fetchers.followRequests\n      if (!fetcher) return\n      store.commit('removeFetcher', { fetcherName: 'followRequests', fetcher })\n    },\n    removeFollowRequest (store, request) {\n      let requests = store.state.followRequests.filter((it) => it !== request)\n      store.commit('setFollowRequests', requests)\n    },\n\n    // Pleroma websocket\n    setWsToken (store, token) {\n      store.commit('setWsToken', token)\n    },\n    initializeSocket ({ dispatch, commit, state, rootState }) {\n      // Set up websocket connection\n      const token = state.wsToken\n      if (rootState.instance.shoutAvailable && typeof token !== 'undefined' && state.socket === null) {\n        const socket = new Socket('/socket', { params: { token } })\n        socket.connect()\n\n        commit('setSocket', socket)\n        dispatch('initializeShout', socket)\n      }\n    },\n    disconnectFromSocket ({ commit, state }) {\n      state.socket && state.socket.disconnect()\n      commit('setSocket', null)\n    }\n  }\n}\n\nexport default api\n","const shout = {\n  state: {\n    messages: [],\n    channel: { state: '' },\n    joined: false\n  },\n  mutations: {\n    setChannel (state, channel) {\n      state.channel = channel\n    },\n    addMessage (state, message) {\n      state.messages.push(message)\n      state.messages = state.messages.slice(-19, 20)\n    },\n    setMessages (state, messages) {\n      state.messages = messages.slice(-19, 20)\n    },\n    setJoined (state, joined) {\n      state.joined = joined\n    }\n  },\n  actions: {\n    initializeShout (store, socket) {\n      const channel = socket.channel('chat:public')\n      channel.joinPush.receive('ok', () => {\n        store.commit('setJoined', true)\n      })\n      channel.onClose(() => {\n        store.commit('setJoined', false)\n      })\n      channel.onError(() => {\n        store.commit('setJoined', false)\n      })\n      channel.on('new_msg', (msg) => {\n        store.commit('addMessage', msg)\n      })\n      channel.on('messages', ({ messages }) => {\n        store.commit('setMessages', messages)\n      })\n      channel.join()\n      store.commit('setChannel', channel)\n    }\n  }\n}\n\nexport default shout\n","const oauth = {\n  state: {\n    clientId: false,\n    clientSecret: false,\n    /* App token is authentication for app without any user, used mostly for\n     * MastoAPI's registration of new users, stored so that we can fall back to\n     * it on logout\n     */\n    appToken: false,\n    /* User token is authentication for app with user, this is for every calls\n     * that need authorized user to be successful (i.e. posting, liking etc)\n     */\n    userToken: false\n  },\n  mutations: {\n    setClientData (state, { clientId, clientSecret }) {\n      state.clientId = clientId\n      state.clientSecret = clientSecret\n    },\n    setAppToken (state, token) {\n      state.appToken = token\n    },\n    setToken (state, token) {\n      state.userToken = token\n    },\n    clearToken (state) {\n      state.userToken = false\n      // state.token is userToken with older name, coming from persistent state\n      // let's clear it as well, since it is being used as a fallback of state.userToken\n      delete state.token\n    }\n  },\n  getters: {\n    getToken: state => () => {\n      // state.token is userToken with older name, coming from persistent state\n      // added here for smoother transition, otherwise user will be logged out\n      return state.userToken || state.token || state.appToken\n    },\n    getUserToken: state => () => {\n      // state.token is userToken with older name, coming from persistent state\n      // added here for smoother transition, otherwise user will be logged out\n      return state.userToken || state.token\n    }\n  }\n}\n\nexport default oauth\n","const PASSWORD_STRATEGY = 'password'\nconst TOKEN_STRATEGY = 'token'\n\n// MFA strategies\nconst TOTP_STRATEGY = 'totp'\nconst RECOVERY_STRATEGY = 'recovery'\n\n// initial state\nconst state = {\n  settings: {},\n  strategy: PASSWORD_STRATEGY,\n  initStrategy: PASSWORD_STRATEGY // default strategy from config\n}\n\nconst resetState = (state) => {\n  state.strategy = state.initStrategy\n  state.settings = {}\n}\n\n// getters\nconst getters = {\n  settings: (state, getters) => {\n    return state.settings\n  },\n  requiredPassword: (state, getters, rootState) => {\n    return state.strategy === PASSWORD_STRATEGY\n  },\n  requiredToken: (state, getters, rootState) => {\n    return state.strategy === TOKEN_STRATEGY\n  },\n  requiredTOTP: (state, getters, rootState) => {\n    return state.strategy === TOTP_STRATEGY\n  },\n  requiredRecovery: (state, getters, rootState) => {\n    return state.strategy === RECOVERY_STRATEGY\n  }\n}\n\n// mutations\nconst mutations = {\n  setInitialStrategy (state, strategy) {\n    if (strategy) {\n      state.initStrategy = strategy\n      state.strategy = strategy\n    }\n  },\n  requirePassword (state) {\n    state.strategy = PASSWORD_STRATEGY\n  },\n  requireToken (state) {\n    state.strategy = TOKEN_STRATEGY\n  },\n  requireMFA (state, { settings }) {\n    state.settings = settings\n    state.strategy = TOTP_STRATEGY // default strategy of MFA\n  },\n  requireRecovery (state) {\n    state.strategy = RECOVERY_STRATEGY\n  },\n  requireTOTP (state) {\n    state.strategy = TOTP_STRATEGY\n  },\n  abortMFA (state) {\n    resetState(state)\n  }\n}\n\n// actions\nconst actions = {\n  // eslint-disable-next-line camelcase\n  async login ({ state, dispatch, commit }, { access_token }) {\n    commit('setToken', access_token, { root: true })\n    await dispatch('loginUser', access_token, { root: true })\n    resetState(state)\n  }\n}\n\nexport default {\n  namespaced: true,\n  state,\n  getters,\n  mutations,\n  actions\n}\n","import fileTypeService from '../services/file_type/file_type.service.js'\nconst supportedTypes = new Set(['image', 'video', 'audio', 'flash'])\n\nconst mediaViewer = {\n  state: {\n    media: [],\n    currentIndex: 0,\n    activated: false\n  },\n  mutations: {\n    setMedia (state, media) {\n      state.media = media\n    },\n    setCurrentMedia (state, index) {\n      state.activated = true\n      state.currentIndex = index\n    },\n    close (state) {\n      state.activated = false\n    }\n  },\n  actions: {\n    setMedia ({ commit }, attachments) {\n      const media = attachments.filter(attachment => {\n        const type = fileTypeService.fileType(attachment.mimetype)\n        return supportedTypes.has(type)\n      })\n      commit('setMedia', media)\n    },\n    setCurrentMedia ({ commit, state }, current) {\n      const index = state.media.indexOf(current)\n      commit('setCurrentMedia', index || 0)\n    },\n    closeMediaViewer ({ commit }) {\n      commit('close')\n    }\n  }\n}\n\nexport default mediaViewer\n","const oauthTokens = {\n  state: {\n    tokens: []\n  },\n  actions: {\n    fetchTokens ({ rootState, commit }) {\n      rootState.api.backendInteractor.fetchOAuthTokens().then((tokens) => {\n        commit('swapTokens', tokens)\n      })\n    },\n    revokeToken ({ rootState, commit, state }, id) {\n      rootState.api.backendInteractor.revokeOAuthToken({ id }).then((response) => {\n        if (response.status === 201) {\n          commit('swapTokens', state.tokens.filter(token => token.id !== id))\n        }\n      })\n    }\n  },\n  mutations: {\n    swapTokens (state, tokens) {\n      state.tokens = tokens\n    }\n  }\n}\n\nexport default oauthTokens\n","import filter from 'lodash/filter'\n\nconst reports = {\n  state: {\n    userId: null,\n    statuses: [],\n    preTickedIds: [],\n    modalActivated: false\n  },\n  mutations: {\n    openUserReportingModal (state, { userId, statuses, preTickedIds }) {\n      state.userId = userId\n      state.statuses = statuses\n      state.preTickedIds = preTickedIds\n      state.modalActivated = true\n    },\n    closeUserReportingModal (state) {\n      state.modalActivated = false\n    }\n  },\n  actions: {\n    openUserReportingModal ({ rootState, commit }, { userId, statusIds = [] }) {\n      const preTickedStatuses = statusIds.map(id => rootState.statuses.allStatusesObject[id])\n      const preTickedIds = statusIds\n      const statuses = preTickedStatuses.concat(\n        filter(rootState.statuses.allStatuses,\n          status => status.user.id === userId && !preTickedIds.includes(status.id)\n        )\n      )\n      commit('openUserReportingModal', { userId, statuses, preTickedIds })\n    },\n    closeUserReportingModal ({ commit }) {\n      commit('closeUserReportingModal')\n    }\n  }\n}\n\nexport default reports\n","import { merge } from 'lodash'\n\nconst polls = {\n  state: {\n    // Contains key = id, value = number of trackers for this poll\n    trackedPolls: {},\n    pollsObject: {}\n  },\n  mutations: {\n    mergeOrAddPoll (state, poll) {\n      const existingPoll = state.pollsObject[poll.id]\n      // Make expired-state change trigger re-renders properly\n      poll.expired = Date.now() > Date.parse(poll.expires_at)\n      if (existingPoll) {\n        state.pollsObject[poll.id] = merge(existingPoll, poll)\n      } else {\n        state.pollsObject[poll.id] = poll\n      }\n    },\n    trackPoll (state, pollId) {\n      const currentValue = state.trackedPolls[pollId]\n      if (currentValue) {\n        state.trackedPolls[pollId] = currentValue + 1\n      } else {\n        state.trackedPolls[pollId] = 1\n      }\n    },\n    untrackPoll (state, pollId) {\n      const currentValue = state.trackedPolls[pollId]\n      if (currentValue) {\n        state.trackedPolls[pollId] = currentValue - 1\n      } else {\n        state.trackedPolls[pollId] = 0\n      }\n    }\n  },\n  actions: {\n    mergeOrAddPoll ({ commit }, poll) {\n      commit('mergeOrAddPoll', poll)\n    },\n    updateTrackedPoll ({ rootState, dispatch, commit }, pollId) {\n      rootState.api.backendInteractor.fetchPoll({ pollId }).then(poll => {\n        setTimeout(() => {\n          if (rootState.polls.trackedPolls[pollId]) {\n            dispatch('updateTrackedPoll', pollId)\n          }\n        }, 30 * 1000)\n        commit('mergeOrAddPoll', poll)\n      })\n    },\n    trackPoll ({ rootState, commit, dispatch }, pollId) {\n      if (!rootState.polls.trackedPolls[pollId]) {\n        setTimeout(() => dispatch('updateTrackedPoll', pollId), 30 * 1000)\n      }\n      commit('trackPoll', pollId)\n    },\n    untrackPoll ({ commit }, pollId) {\n      commit('untrackPoll', pollId)\n    },\n    votePoll ({ rootState, commit }, { id, pollId, choices }) {\n      return rootState.api.backendInteractor.vote({ pollId, choices }).then(poll => {\n        commit('mergeOrAddPoll', poll)\n        return poll\n      })\n    }\n  }\n}\n\nexport default polls\n","const postStatus = {\n  state: {\n    params: null,\n    modalActivated: false\n  },\n  mutations: {\n    openPostStatusModal (state, params) {\n      state.params = params\n      state.modalActivated = true\n    },\n    closePostStatusModal (state) {\n      state.modalActivated = false\n    }\n  },\n  actions: {\n    openPostStatusModal ({ commit }, params) {\n      commit('openPostStatusModal', params)\n    },\n    closePostStatusModal ({ commit }) {\n      commit('closePostStatusModal')\n    }\n  }\n}\n\nexport default postStatus\n","import _ from 'lodash'\n\nconst empty = (chatId) => {\n  return {\n    idIndex: {},\n    idempotencyKeyIndex: {},\n    messages: [],\n    newMessageCount: 0,\n    lastSeenMessageId: '0',\n    chatId: chatId,\n    minId: undefined,\n    maxId: undefined\n  }\n}\n\nconst clear = (storage) => {\n  const failedMessageIds = []\n\n  for (const message of storage.messages) {\n    if (message.error) {\n      failedMessageIds.push(message.id)\n    } else {\n      delete storage.idIndex[message.id]\n      delete storage.idempotencyKeyIndex[message.idempotency_key]\n    }\n  }\n\n  storage.messages = storage.messages.filter(m => failedMessageIds.includes(m.id))\n  storage.newMessageCount = 0\n  storage.lastSeenMessageId = '0'\n  storage.minId = undefined\n  storage.maxId = undefined\n}\n\nconst deleteMessage = (storage, messageId) => {\n  if (!storage) { return }\n  storage.messages = storage.messages.filter(m => m.id !== messageId)\n  delete storage.idIndex[messageId]\n\n  if (storage.maxId === messageId) {\n    const lastMessage = _.maxBy(storage.messages, 'id')\n    storage.maxId = lastMessage.id\n  }\n\n  if (storage.minId === messageId) {\n    const firstMessage = _.minBy(storage.messages, 'id')\n    storage.minId = firstMessage.id\n  }\n}\n\nconst cullOlderMessages = (storage) => {\n  const maxIndex = storage.messages.length\n  const minIndex = maxIndex - 50\n  if (maxIndex <= 50) return\n\n  storage.messages = _.sortBy(storage.messages, ['id'])\n  storage.minId = storage.messages[minIndex].id\n  for (const message of storage.messages) {\n    if (message.id < storage.minId) {\n      delete storage.idIndex[message.id]\n      delete storage.idempotencyKeyIndex[message.idempotency_key]\n    }\n  }\n  storage.messages = storage.messages.slice(minIndex, maxIndex)\n}\n\nconst handleMessageError = (storage, fakeId, isRetry) => {\n  if (!storage) { return }\n  const fakeMessage = storage.idIndex[fakeId]\n  if (fakeMessage) {\n    fakeMessage.error = true\n    fakeMessage.pending = false\n    if (!isRetry) {\n      // Ensure the failed message doesn't stay at the bottom of the list.\n      const lastPersistedMessage = _.orderBy(storage.messages, ['pending', 'id'], ['asc', 'desc'])[0]\n      if (lastPersistedMessage) {\n        const oldId = fakeMessage.id\n        fakeMessage.id = `${lastPersistedMessage.id}-${new Date().getTime()}`\n        storage.idIndex[fakeMessage.id] = fakeMessage\n        delete storage.idIndex[oldId]\n      }\n    }\n  }\n}\n\nconst add = (storage, { messages: newMessages, updateMaxId = true }) => {\n  if (!storage) { return }\n  for (let i = 0; i < newMessages.length; i++) {\n    const message = newMessages[i]\n\n    // sanity check\n    if (message.chat_id !== storage.chatId) { return }\n\n    if (message.fakeId) {\n      const fakeMessage = storage.idIndex[message.fakeId]\n      if (fakeMessage) {\n        // In case the same id exists (chat update before POST response)\n        // make sure to remove the older duplicate message.\n        if (storage.idIndex[message.id]) {\n          delete storage.idIndex[message.id]\n          storage.messages = storage.messages.filter(msg => msg.id !== message.id)\n        }\n        Object.assign(fakeMessage, message, { error: false })\n        delete fakeMessage['fakeId']\n        storage.idIndex[fakeMessage.id] = fakeMessage\n        delete storage.idIndex[message.fakeId]\n\n        return\n      }\n    }\n\n    if (!storage.minId || (!message.pending && message.id < storage.minId)) {\n      storage.minId = message.id\n    }\n\n    if (!storage.maxId || message.id > storage.maxId) {\n      if (updateMaxId) {\n        storage.maxId = message.id\n      }\n    }\n\n    if (!storage.idIndex[message.id] && !isConfirmation(storage, message)) {\n      if (storage.lastSeenMessageId < message.id) {\n        storage.newMessageCount++\n      }\n      storage.idIndex[message.id] = message\n      storage.messages.push(storage.idIndex[message.id])\n      storage.idempotencyKeyIndex[message.idempotency_key] = true\n    }\n  }\n}\n\nconst isConfirmation = (storage, message) => {\n  if (!message.idempotency_key) return\n  return storage.idempotencyKeyIndex[message.idempotency_key]\n}\n\nconst resetNewMessageCount = (storage) => {\n  if (!storage) { return }\n  storage.newMessageCount = 0\n  storage.lastSeenMessageId = storage.maxId\n}\n\n// Inserts date separators and marks the head and tail if it's the chain of messages made by the same user\nconst getView = (storage) => {\n  if (!storage) { return [] }\n\n  const result = []\n  const messages = _.orderBy(storage.messages, ['pending', 'id'], ['asc', 'asc'])\n  const firstMessage = messages[0]\n  let previousMessage = messages[messages.length - 1]\n  let currentMessageChainId\n\n  if (firstMessage) {\n    const date = new Date(firstMessage.created_at)\n    date.setHours(0, 0, 0, 0)\n    result.push({\n      type: 'date',\n      date,\n      id: date.getTime().toString()\n    })\n  }\n\n  let afterDate = false\n\n  for (let i = 0; i < messages.length; i++) {\n    const message = messages[i]\n    const nextMessage = messages[i + 1]\n\n    const date = new Date(message.created_at)\n    date.setHours(0, 0, 0, 0)\n\n    // insert date separator and start a new message chain\n    if (previousMessage && previousMessage.date < date) {\n      result.push({\n        type: 'date',\n        date,\n        id: date.getTime().toString()\n      })\n\n      previousMessage['isTail'] = true\n      currentMessageChainId = undefined\n      afterDate = true\n    }\n\n    const object = {\n      type: 'message',\n      data: message,\n      date,\n      id: message.id,\n      messageChainId: currentMessageChainId\n    }\n\n    // end a message chian\n    if ((nextMessage && nextMessage.account_id) !== message.account_id) {\n      object['isTail'] = true\n      currentMessageChainId = undefined\n    }\n\n    // start a new message chain\n    if ((previousMessage && previousMessage.data && previousMessage.data.account_id) !== message.account_id || afterDate) {\n      currentMessageChainId = _.uniqueId()\n      object['isHead'] = true\n      object['messageChainId'] = currentMessageChainId\n    }\n\n    result.push(object)\n    previousMessage = object\n    afterDate = false\n  }\n\n  return result\n}\n\nconst ChatService = {\n  add,\n  empty,\n  getView,\n  deleteMessage,\n  cullOlderMessages,\n  resetNewMessageCount,\n  clear,\n  handleMessageError\n}\n\nexport default ChatService\n","import { reactive } from 'vue'\nimport { find, omitBy, orderBy, sumBy } from 'lodash'\nimport chatService from '../services/chat_service/chat_service.js'\nimport { parseChat, parseChatMessage } from '../services/entity_normalizer/entity_normalizer.service.js'\nimport { maybeShowChatNotification } from '../services/chat_utils/chat_utils.js'\nimport { promiseInterval } from '../services/promise_interval/promise_interval.js'\n\nconst emptyChatList = () => ({\n  data: [],\n  idStore: {}\n})\n\nconst defaultState = {\n  chatList: emptyChatList(),\n  chatListFetcher: null,\n  openedChats: reactive({}),\n  openedChatMessageServices: reactive({}),\n  fetcher: undefined,\n  currentChatId: null,\n  lastReadMessageId: null\n}\n\nconst getChatById = (state, id) => {\n  return find(state.chatList.data, { id })\n}\n\nconst sortedChatList = (state) => {\n  return orderBy(state.chatList.data, ['updated_at'], ['desc'])\n}\n\nconst unreadChatCount = (state) => {\n  return sumBy(state.chatList.data, 'unread')\n}\n\nconst chats = {\n  state: { ...defaultState },\n  getters: {\n    currentChat: state => state.openedChats[state.currentChatId],\n    currentChatMessageService: state => state.openedChatMessageServices[state.currentChatId],\n    findOpenedChatByRecipientId: state => recipientId => find(state.openedChats, c => c.account.id === recipientId),\n    sortedChatList,\n    unreadChatCount\n  },\n  actions: {\n    // Chat list\n    startFetchingChats ({ dispatch, commit }) {\n      const fetcher = () => dispatch('fetchChats', { latest: true })\n      fetcher()\n      commit('setChatListFetcher', {\n        fetcher: () => promiseInterval(fetcher, 60000)\n      })\n    },\n    stopFetchingChats ({ commit }) {\n      commit('setChatListFetcher', { fetcher: undefined })\n    },\n    fetchChats ({ dispatch, rootState, commit }, params = {}) {\n      return rootState.api.backendInteractor.chats()\n        .then(({ chats }) => {\n          dispatch('addNewChats', { chats })\n          return chats\n        })\n    },\n    addNewChats (store, { chats }) {\n      const { commit, dispatch, rootGetters } = store\n      const newChatMessageSideEffects = (chat) => {\n        maybeShowChatNotification(store, chat)\n      }\n      commit('addNewChats', { dispatch, chats, rootGetters, newChatMessageSideEffects })\n    },\n    updateChat ({ commit }, { chat }) {\n      commit('updateChat', { chat })\n    },\n\n    // Opened Chats\n    startFetchingCurrentChat ({ commit, dispatch }, { fetcher }) {\n      dispatch('setCurrentChatFetcher', { fetcher })\n    },\n    setCurrentChatFetcher ({ rootState, commit }, { fetcher }) {\n      commit('setCurrentChatFetcher', { fetcher })\n    },\n    addOpenedChat ({ rootState, commit, dispatch }, { chat }) {\n      commit('addOpenedChat', { dispatch, chat: parseChat(chat) })\n      dispatch('addNewUsers', [chat.account])\n    },\n    addChatMessages ({ commit }, value) {\n      commit('addChatMessages', { commit, ...value })\n    },\n    resetChatNewMessageCount ({ commit }, value) {\n      commit('resetChatNewMessageCount', value)\n    },\n    clearCurrentChat ({ rootState, commit, dispatch }, value) {\n      commit('setCurrentChatId', { chatId: undefined })\n      commit('setCurrentChatFetcher', { fetcher: undefined })\n    },\n    readChat ({ rootState, commit, dispatch }, { id, lastReadId }) {\n      const isNewMessage = rootState.chats.lastReadMessageId !== lastReadId\n\n      dispatch('resetChatNewMessageCount')\n      commit('readChat', { id, lastReadId })\n\n      if (isNewMessage) {\n        rootState.api.backendInteractor.readChat({ id, lastReadId })\n      }\n    },\n    deleteChatMessage ({ rootState, commit }, value) {\n      rootState.api.backendInteractor.deleteChatMessage(value)\n      commit('deleteChatMessage', { commit, ...value })\n    },\n    resetChats ({ commit, dispatch }) {\n      dispatch('clearCurrentChat')\n      commit('resetChats', { commit })\n    },\n    clearOpenedChats ({ rootState, commit, dispatch, rootGetters }) {\n      commit('clearOpenedChats', { commit })\n    },\n    handleMessageError ({ commit }, value) {\n      commit('handleMessageError', { commit, ...value })\n    },\n    cullOlderMessages ({ commit }, chatId) {\n      commit('cullOlderMessages', chatId)\n    }\n  },\n  mutations: {\n    setChatListFetcher (state, { commit, fetcher }) {\n      const prevFetcher = state.chatListFetcher\n      if (prevFetcher) {\n        prevFetcher.stop()\n      }\n      state.chatListFetcher = fetcher && fetcher()\n    },\n    setCurrentChatFetcher (state, { fetcher }) {\n      const prevFetcher = state.fetcher\n      if (prevFetcher) {\n        prevFetcher.stop()\n      }\n      state.fetcher = fetcher && fetcher()\n    },\n    addOpenedChat (state, { _dispatch, chat }) {\n      state.currentChatId = chat.id\n      state.openedChats[chat.id] = chat\n\n      if (!state.openedChatMessageServices[chat.id]) {\n        state.openedChatMessageServices[chat.id] = chatService.empty(chat.id)\n      }\n    },\n    setCurrentChatId (state, { chatId }) {\n      state.currentChatId = chatId\n    },\n    addNewChats (state, { chats, newChatMessageSideEffects }) {\n      chats.forEach((updatedChat) => {\n        const chat = getChatById(state, updatedChat.id)\n\n        if (chat) {\n          const isNewMessage = (chat.lastMessage && chat.lastMessage.id) !== (updatedChat.lastMessage && updatedChat.lastMessage.id)\n          chat.lastMessage = updatedChat.lastMessage\n          chat.unread = updatedChat.unread\n          chat.updated_at = updatedChat.updated_at\n          if (isNewMessage && chat.unread) {\n            newChatMessageSideEffects(updatedChat)\n          }\n        } else {\n          state.chatList.data.push(updatedChat)\n          state.chatList.idStore[updatedChat.id] = updatedChat\n        }\n      })\n    },\n    updateChat (state, { _dispatch, chat: updatedChat, _rootGetters }) {\n      const chat = getChatById(state, updatedChat.id)\n      if (chat) {\n        chat.lastMessage = updatedChat.lastMessage\n        chat.unread = updatedChat.unread\n        chat.updated_at = updatedChat.updated_at\n      }\n      if (!chat) { state.chatList.data.unshift(updatedChat) }\n      state.chatList.idStore[updatedChat.id] = updatedChat\n    },\n    deleteChat (state, { _dispatch, id, _rootGetters }) {\n      state.chats.data = state.chats.data.filter(conversation =>\n        conversation.last_status.id !== id\n      )\n      state.chats.idStore = omitBy(state.chats.idStore, conversation => conversation.last_status.id === id)\n    },\n    resetChats (state, { commit }) {\n      state.chatList = emptyChatList()\n      state.currentChatId = null\n      commit('setChatListFetcher', { fetcher: undefined })\n      for (const chatId in state.openedChats) {\n        chatService.clear(state.openedChatMessageServices[chatId])\n        delete state.openedChats[chatId]\n        delete state.openedChatMessageServices[chatId]\n      }\n    },\n    setChatsLoading (state, { value }) {\n      state.chats.loading = value\n    },\n    addChatMessages (state, { chatId, messages, updateMaxId }) {\n      const chatMessageService = state.openedChatMessageServices[chatId]\n      if (chatMessageService) {\n        chatService.add(chatMessageService, { messages: messages.map(parseChatMessage), updateMaxId })\n      }\n    },\n    deleteChatMessage (state, { chatId, messageId }) {\n      const chatMessageService = state.openedChatMessageServices[chatId]\n      if (chatMessageService) {\n        chatService.deleteMessage(chatMessageService, messageId)\n      }\n    },\n    resetChatNewMessageCount (state, _value) {\n      const chatMessageService = state.openedChatMessageServices[state.currentChatId]\n      chatService.resetNewMessageCount(chatMessageService)\n    },\n    // Used when a connection loss occurs\n    clearOpenedChats (state) {\n      const currentChatId = state.currentChatId\n      for (const chatId in state.openedChats) {\n        if (currentChatId !== chatId) {\n          chatService.clear(state.openedChatMessageServices[chatId])\n          delete state.openedChats[chatId]\n          delete state.openedChatMessageServices[chatId]\n        }\n      }\n    },\n    readChat (state, { id, lastReadId }) {\n      state.lastReadMessageId = lastReadId\n      const chat = getChatById(state, id)\n      if (chat) {\n        chat.unread = 0\n      }\n    },\n    handleMessageError (state, { chatId, fakeId, isRetry }) {\n      const chatMessageService = state.openedChatMessageServices[chatId]\n      chatService.handleMessageError(chatMessageService, fakeId, isRetry)\n    },\n    cullOlderMessages (state, chatId) {\n      chatService.cullOlderMessages(state.openedChatMessageServices[chatId])\n    }\n  }\n}\n\nexport default chats\n","import merge from 'lodash.merge'\nimport localforage from 'localforage'\nimport { each, get, set, cloneDeep } from 'lodash'\n\nlet loaded = false\n\nconst defaultReducer = (state, paths) => (\n  paths.length === 0 ? state : paths.reduce((substate, path) => {\n    set(substate, path, get(state, path))\n    return substate\n  }, {})\n)\n\nconst saveImmedeatelyActions = [\n  'markNotificationsAsSeen',\n  'clearCurrentUser',\n  'setCurrentUser',\n  'setHighlight',\n  'setOption',\n  'setClientData',\n  'setToken',\n  'clearToken'\n]\n\nconst defaultStorage = (() => {\n  return localforage\n})()\n\nexport default function createPersistedState ({\n  key = 'vuex-lz',\n  paths = [],\n  getState = (key, storage) => {\n    let value = storage.getItem(key)\n    return value\n  },\n  setState = (key, state, storage) => {\n    if (!loaded) {\n      console.log('waiting for old state to be loaded...')\n      return Promise.resolve()\n    } else {\n      return storage.setItem(key, state)\n    }\n  },\n  reducer = defaultReducer,\n  storage = defaultStorage,\n  subscriber = store => handler => store.subscribe(handler)\n} = {}) {\n  return getState(key, storage).then((savedState) => {\n    return store => {\n      try {\n        if (savedState !== null && typeof savedState === 'object') {\n          // build user cache\n          const usersState = savedState.users || {}\n          usersState.usersObject = {}\n          const users = usersState.users || []\n          each(users, (user) => { usersState.usersObject[user.id] = user })\n          savedState.users = usersState\n\n          store.replaceState(\n            merge({}, store.state, savedState)\n          )\n        }\n        loaded = true\n      } catch (e) {\n        console.log(\"Couldn't load state\")\n        console.error(e)\n        loaded = true\n      }\n      subscriber(store)((mutation, state) => {\n        try {\n          if (saveImmedeatelyActions.includes(mutation.type)) {\n            setState(key, reducer(cloneDeep(state), paths), storage)\n              .then(success => {\n                if (typeof success !== 'undefined') {\n                  if (mutation.type === 'setOption' || mutation.type === 'setCurrentUser') {\n                    store.dispatch('settingsSaved', { success })\n                  }\n                }\n              }, error => {\n                if (mutation.type === 'setOption' || mutation.type === 'setCurrentUser') {\n                  store.dispatch('settingsSaved', { error })\n                }\n              })\n          }\n        } catch (e) {\n          console.log(\"Couldn't persist state:\")\n          console.log(e)\n        }\n      })\n    }\n  })\n}\n","export default (store) => {\n  store.subscribe((mutation, state) => {\n    const vapidPublicKey = state.instance.vapidPublicKey\n    const webPushNotification = state.config.webPushNotifications\n    const permission = state.interface.notificationPermission === 'granted'\n    const user = state.users.currentUser\n\n    const isUserMutation = mutation.type === 'setCurrentUser'\n    const isVapidMutation = mutation.type === 'setInstanceOption' && mutation.payload.name === 'vapidPublicKey'\n    const isPermMutation = mutation.type === 'setNotificationPermission' && mutation.payload === 'granted'\n    const isUserConfigMutation = mutation.type === 'setOption' && mutation.payload.name === 'webPushNotifications'\n    const isVisibilityMutation = mutation.type === 'setOption' && mutation.payload.name === 'notificationVisibility'\n\n    if (isUserMutation || isVapidMutation || isPermMutation || isUserConfigMutation || isVisibilityMutation) {\n      if (user && vapidPublicKey && permission && webPushNotification) {\n        return store.dispatch('registerPushNotifications')\n      } else if (isUserConfigMutation && !webPushNotification) {\n        return store.dispatch('unregisterPushNotifications')\n      }\n    }\n  })\n}\n","<template>\n  <div\n    id=\"app-loaded\"\n    :style=\"bgStyle\"\n  >\n    <div\n      id=\"app_bg_wrapper\"\n      class=\"app-bg-wrapper\"\n    />\n    <MobileNav v-if=\"layoutType === 'mobile'\" />\n    <DesktopNav v-else />\n    <Notifications v-if=\"currentUser\" />\n    <div\n      id=\"content\"\n      class=\"app-layout container\"\n      :class=\"classes\"\n    >\n      <div class=\"underlay\"/>\n      <div id=\"sidebar\" class=\"column -scrollable\" :class=\"{ '-show-scrollbar': showScrollbars }\">\n        <user-panel />\n        <template v-if=\"layoutType !== 'mobile'\">\n          <nav-panel />\n          <instance-specific-panel v-if=\"showInstanceSpecificPanel\" />\n          <features-panel v-if=\"!currentUser && showFeaturesPanel\" />\n          <who-to-follow-panel v-if=\"currentUser && suggestionsEnabled\" />\n          <div id=\"notifs-sidebar\" />\n        </template>\n      </div>\n      <div id=\"main-scroller\" class=\"column main\" :class=\"{ '-full-height': isChats }\">\n        <div\n          v-if=\"!currentUser\"\n          class=\"login-hint panel panel-default\"\n        >\n          <router-link\n            :to=\"{ name: 'login' }\"\n            class=\"panel-body\"\n          >\n            {{ $t(\"login.hint\") }}\n          </router-link>\n        </div>\n        <router-view />\n      </div>\n      <div id=\"notifs-column\" class=\"column -scrollable\" :class=\"{ '-show-scrollbar': showScrollbars }\"/>\n    </div>\n    <media-modal />\n    <shout-panel\n      v-if=\"currentUser && shout && !hideShoutbox\"\n      :floating=\"true\"\n      class=\"floating-shout mobile-hidden\"\n      :class=\"{ '-left': shoutboxPosition }\"\n    />\n    <MobilePostStatusButton />\n    <UserReportingModal />\n    <PostStatusModal />\n    <SettingsModal />\n    <div id=\"modal\" />\n    <GlobalNoticeList />\n  </div>\n</template>\n\n<script src=\"./App.js\"></script>\n<style lang=\"scss\" src=\"./App.scss\"></style>\n","<template>\n  <div class=\"user-panel\">\n    <div\n      v-if=\"signedIn\"\n      key=\"user-panel-signed\"\n      class=\"panel panel-default signed-in\"\n    >\n      <UserCard\n        :user-id=\"user.id\"\n        :hide-bio=\"true\"\n        rounded=\"top\"\n      />\n      <PostStatusForm />\n    </div>\n    <auth-form\n      v-else\n      key=\"user-panel\"\n    />\n  </div>\n</template>\n\n<script src=\"./user_panel.js\"></script>\n\n<style lang=\"scss\">\n.user-panel .signed-in {\n  overflow: visible;\n  z-index: 10;\n}\n</style>\n","<template>\n  <div class=\"login panel panel-default\">\n    <!-- Default panel contents -->\n\n    <div class=\"panel-heading\">\n      {{ $t('login.login') }}\n    </div>\n\n    <div class=\"panel-body\">\n      <form\n        class=\"login-form\"\n        @submit.prevent=\"submit\"\n      >\n        <template v-if=\"isPasswordAuth\">\n          <div class=\"form-group\">\n            <label for=\"username\">{{ $t('login.username') }}</label>\n            <input\n              id=\"username\"\n              v-model=\"user.username\"\n              :disabled=\"loggingIn\"\n              class=\"form-control\"\n              :placeholder=\"$t('login.placeholder')\"\n            >\n          </div>\n          <div class=\"form-group\">\n            <label for=\"password\">{{ $t('login.password') }}</label>\n            <input\n              id=\"password\"\n              ref=\"passwordInput\"\n              v-model=\"user.password\"\n              :disabled=\"loggingIn\"\n              class=\"form-control\"\n              type=\"password\"\n            >\n          </div>\n          <div class=\"form-group\">\n            <router-link :to=\"{name: 'password-reset'}\">\n              {{ $t('password_reset.forgot_password') }}\n            </router-link>\n          </div>\n        </template>\n\n        <div\n          v-if=\"isTokenAuth\"\n          class=\"form-group\"\n        >\n          <p>{{ $t('login.description') }}</p>\n        </div>\n\n        <div class=\"form-group\">\n          <div class=\"login-bottom\">\n            <div>\n              <router-link\n                v-if=\"registrationOpen\"\n                :to=\"{name: 'registration'}\"\n                class=\"register\"\n              >\n                {{ $t('login.register') }}\n              </router-link>\n            </div>\n            <button\n              :disabled=\"loggingIn\"\n              type=\"submit\"\n              class=\"btn button-default\"\n            >\n              {{ $t('login.login') }}\n            </button>\n          </div>\n        </div>\n      </form>\n    </div>\n\n    <div\n      v-if=\"error\"\n      class=\"form-group\"\n    >\n      <div class=\"alert error\">\n        {{ error }}\n        <button\n          class=\"button-unstyled\"\n          @click=\"clearError\"\n        >\n          <FAIcon\n            class=\"fa-scale-110 fa-old-padding\"\n            icon=\"times\"\n          />\n        </button>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./login_form.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.login-form {\n  display: flex;\n  flex-direction: column;\n  padding: 0.6em;\n\n  .btn {\n    min-height: 2em;\n    width: 10em;\n  }\n\n  .register {\n    flex: 1 1;\n  }\n\n  .login-bottom {\n    margin-top: 1.0em;\n    display: flex;\n    flex-direction: row;\n    align-items: center;\n    justify-content: space-between;\n  }\n\n  .form-group {\n    display: flex;\n    flex-direction: column;\n    padding: 0.3em 0.5em 0.6em;\n    line-height:24px;\n  }\n\n  .form-bottom {\n    display: flex;\n    padding: 0.5em;\n    height: 32px;\n\n    button {\n      width: 10em;\n    }\n\n    p {\n      margin: 0.35em;\n      padding: 0.35em;\n      display: flex;\n    }\n  }\n\n  .error {\n    text-align: center;\n\n    animation-name: shakeError;\n    animation-duration: 0.4s;\n    animation-timing-function: ease-in-out;\n  }\n}\n</style>\n","import { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport oauthApi from '../../services/new_api/oauth.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes\n)\n\nconst LoginForm = {\n  data: () => ({\n    user: {},\n    error: false\n  }),\n  computed: {\n    isPasswordAuth () { return this.requiredPassword },\n    isTokenAuth () { return this.requiredToken },\n    ...mapState({\n      registrationOpen: state => state.instance.registrationOpen,\n      instance: state => state.instance,\n      loggingIn: state => state.users.loggingIn,\n      oauth: state => state.oauth\n    }),\n    ...mapGetters(\n      'authFlow', ['requiredPassword', 'requiredToken', 'requiredMFA']\n    )\n  },\n  methods: {\n    ...mapMutations('authFlow', ['requireMFA']),\n    ...mapActions({ login: 'authFlow/login' }),\n    submit () {\n      this.isTokenAuth ? this.submitToken() : this.submitPassword()\n    },\n    submitToken () {\n      const { clientId, clientSecret } = this.oauth\n      const data = {\n        clientId,\n        clientSecret,\n        instance: this.instance.server,\n        commit: this.$store.commit\n      }\n\n      oauthApi.getOrCreateApp(data)\n        .then((app) => { oauthApi.login({ ...app, ...data }) })\n    },\n    submitPassword () {\n      const { clientId } = this.oauth\n      const data = {\n        clientId,\n        oauth: this.oauth,\n        instance: this.instance.server,\n        commit: this.$store.commit\n      }\n      this.error = false\n\n      oauthApi.getOrCreateApp(data).then((app) => {\n        oauthApi.getTokenWithCredentials(\n          {\n            ...app,\n            instance: data.instance,\n            username: this.user.username,\n            password: this.user.password\n          }\n        ).then((result) => {\n          if (result.error) {\n            if (result.error === 'mfa_required') {\n              this.requireMFA({ settings: result })\n            } else if (result.identifier === 'password_reset_required') {\n              this.$router.push({ name: 'password-reset', params: { passwordResetRequested: true } })\n            } else {\n              this.error = result.error\n              this.focusOnPasswordInput()\n            }\n            return\n          }\n          this.login(result).then(() => {\n            this.$router.push({ name: 'friends' })\n          })\n        })\n      })\n    },\n    clearError () { this.error = false },\n    focusOnPasswordInput () {\n      let passwordInput = this.$refs.passwordInput\n      passwordInput.focus()\n      passwordInput.setSelectionRange(0, passwordInput.value.length)\n    }\n  }\n}\n\nexport default LoginForm\n","import { render } from \"./login_form.vue?vue&type=template&id=9e104930\"\nimport script from \"./login_form.js?vue&type=script&lang=js\"\nexport * from \"./login_form.js?vue&type=script&lang=js\"\n\nimport \"./login_form.vue?vue&type=style&index=0&id=9e104930&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"login panel panel-default\">\n    <!-- Default panel contents -->\n\n    <div class=\"panel-heading\">\n      {{ $t('login.heading.recovery') }}\n    </div>\n\n    <div class=\"panel-body\">\n      <form\n        class=\"login-form\"\n        @submit.prevent=\"submit\"\n      >\n        <div class=\"form-group\">\n          <label for=\"code\">{{ $t('login.recovery_code') }}</label>\n          <input\n            id=\"code\"\n            v-model=\"code\"\n            class=\"form-control\"\n          >\n        </div>\n\n        <div class=\"form-group\">\n          <div class=\"login-bottom\">\n            <div>\n              <button\n                class=\"button-unstyled -link\"\n                type=\"button\"\n                @click.prevent=\"requireTOTP\"\n              >\n                {{ $t('login.enter_two_factor_code') }}\n              </button>\n              <br>\n              <button\n                class=\"button-unstyled -link\"\n                type=\"button\"\n                @click.prevent=\"abortMFA\"\n              >\n                {{ $t('general.cancel') }}\n              </button>\n            </div>\n            <button\n              type=\"submit\"\n              class=\"btn button-default\"\n            >\n              {{ $t('general.verify') }}\n            </button>\n          </div>\n        </div>\n      </form>\n    </div>\n\n    <div\n      v-if=\"error\"\n      class=\"form-group\"\n    >\n      <div class=\"alert error\">\n        {{ error }}\n        <button\n          class=\"button-unstyled\"\n          @click=\"clearError\"\n        >\n          <FAIcon\n            class=\"fa-scale-110 fa-old-padding\"\n            icon=\"times\"\n          />\n        </button>\n      </div>\n    </div>\n  </div>\n</template>\n<script src=\"./recovery_form.js\" ></script>\n","const verifyOTPCode = ({ clientId, clientSecret, instance, mfaToken, code }) => {\n  const url = `${instance}/oauth/mfa/challenge`\n  const form = new window.FormData()\n\n  form.append('client_id', clientId)\n  form.append('client_secret', clientSecret)\n  form.append('mfa_token', mfaToken)\n  form.append('code', code)\n  form.append('challenge_type', 'totp')\n\n  return window.fetch(url, {\n    method: 'POST',\n    body: form\n  }).then((data) => data.json())\n}\n\nconst verifyRecoveryCode = ({ clientId, clientSecret, instance, mfaToken, code }) => {\n  const url = `${instance}/oauth/mfa/challenge`\n  const form = new window.FormData()\n\n  form.append('client_id', clientId)\n  form.append('client_secret', clientSecret)\n  form.append('mfa_token', mfaToken)\n  form.append('code', code)\n  form.append('challenge_type', 'recovery')\n\n  return window.fetch(url, {\n    method: 'POST',\n    body: form\n  }).then((data) => data.json())\n}\n\nconst mfa = {\n  verifyOTPCode,\n  verifyRecoveryCode\n}\n\nexport default mfa\n","import mfaApi from '../../services/new_api/mfa.js'\nimport { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes\n)\n\nexport default {\n  data: () => ({\n    code: null,\n    error: false\n  }),\n  computed: {\n    ...mapGetters({\n      authSettings: 'authFlow/settings'\n    }),\n    ...mapState({\n      instance: 'instance',\n      oauth: 'oauth'\n    })\n  },\n  methods: {\n    ...mapMutations('authFlow', ['requireTOTP', 'abortMFA']),\n    ...mapActions({ login: 'authFlow/login' }),\n    clearError () { this.error = false },\n    submit () {\n      const { clientId, clientSecret } = this.oauth\n\n      const data = {\n        clientId,\n        clientSecret,\n        instance: this.instance.server,\n        mfaToken: this.authSettings.mfa_token,\n        code: this.code\n      }\n\n      mfaApi.verifyRecoveryCode(data).then((result) => {\n        if (result.error) {\n          this.error = result.error\n          this.code = null\n          return\n        }\n\n        this.login(result).then(() => {\n          this.$router.push({ name: 'friends' })\n        })\n      })\n    }\n  }\n}\n","import { render } from \"./recovery_form.vue?vue&type=template&id=13ff0678\"\nimport script from \"./recovery_form.js?vue&type=script&lang=js\"\nexport * from \"./recovery_form.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"login panel panel-default\">\n    <!-- Default panel contents -->\n\n    <div class=\"panel-heading\">\n      {{ $t('login.heading.totp') }}\n    </div>\n\n    <div class=\"panel-body\">\n      <form\n        class=\"login-form\"\n        @submit.prevent=\"submit\"\n      >\n        <div class=\"form-group\">\n          <label for=\"code\">\n            {{ $t('login.authentication_code') }}\n          </label>\n          <input\n            id=\"code\"\n            v-model=\"code\"\n            class=\"form-control\"\n          >\n        </div>\n\n        <div class=\"form-group\">\n          <div class=\"login-bottom\">\n            <div>\n              <button\n                class=\"button-unstyled -link\"\n                type=\"button\"\n                @click.prevent=\"requireRecovery\"\n              >\n                {{ $t('login.enter_recovery_code') }}\n              </button>\n              <br>\n              <button\n                class=\"button-unstyled -link\"\n                type=\"button\"\n                @click.prevent=\"abortMFA\"\n              >\n                {{ $t('general.cancel') }}\n              </button>\n            </div>\n            <button\n              type=\"submit\"\n              class=\"btn button-default\"\n            >\n              {{ $t('general.verify') }}\n            </button>\n          </div>\n        </div>\n      </form>\n    </div>\n\n    <div\n      v-if=\"error\"\n      class=\"form-group\"\n    >\n      <div class=\"alert error\">\n        {{ error }}\n        <button\n          class=\"button-unstyled\"\n          @click=\"clearError\"\n        >\n          <FAIcon\n            size=\"lg\"\n            class=\"fa-scale-110 fa-old-padding\"\n            icon=\"times\"\n          />\n        </button>\n      </div>\n    </div>\n  </div>\n</template>\n<script src=\"./totp_form.js\"></script>\n","import mfaApi from '../../services/new_api/mfa.js'\nimport { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes\n)\n\nexport default {\n  data: () => ({\n    code: null,\n    error: false\n  }),\n  computed: {\n    ...mapGetters({\n      authSettings: 'authFlow/settings'\n    }),\n    ...mapState({\n      instance: 'instance',\n      oauth: 'oauth'\n    })\n  },\n  methods: {\n    ...mapMutations('authFlow', ['requireRecovery', 'abortMFA']),\n    ...mapActions({ login: 'authFlow/login' }),\n    clearError () { this.error = false },\n    submit () {\n      const { clientId, clientSecret } = this.oauth\n\n      const data = {\n        clientId,\n        clientSecret,\n        instance: this.instance.server,\n        mfaToken: this.authSettings.mfa_token,\n        code: this.code\n      }\n\n      mfaApi.verifyOTPCode(data).then((result) => {\n        if (result.error) {\n          this.error = result.error\n          this.code = null\n          return\n        }\n\n        this.login(result).then(() => {\n          this.$router.push({ name: 'friends' })\n        })\n      })\n    }\n  }\n}\n","import { render } from \"./totp_form.vue?vue&type=template&id=6fb04413\"\nimport script from \"./totp_form.js?vue&type=script&lang=js\"\nexport * from \"./totp_form.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { h, resolveComponent } from 'vue'\nimport LoginForm from '../login_form/login_form.vue'\nimport MFARecoveryForm from '../mfa_form/recovery_form.vue'\nimport MFATOTPForm from '../mfa_form/totp_form.vue'\nimport { mapGetters } from 'vuex'\n\nconst AuthForm = {\n  name: 'AuthForm',\n  render () {\n    return h(resolveComponent(this.authForm))\n  },\n  computed: {\n    authForm () {\n      if (this.requiredTOTP) { return 'MFATOTPForm' }\n      if (this.requiredRecovery) { return 'MFARecoveryForm' }\n      return 'LoginForm'\n    },\n    ...mapGetters('authFlow', ['requiredTOTP', 'requiredRecovery'])\n  },\n  components: {\n    MFARecoveryForm,\n    MFATOTPForm,\n    LoginForm\n  }\n}\n\nexport default AuthForm\n","import AuthForm from '../auth_form/auth_form.js'\nimport PostStatusForm from '../post_status_form/post_status_form.vue'\nimport UserCard from '../user_card/user_card.vue'\nimport { mapState } from 'vuex'\n\nconst UserPanel = {\n  computed: {\n    signedIn () { return this.user },\n    ...mapState({ user: state => state.users.currentUser })\n  },\n  components: {\n    AuthForm,\n    PostStatusForm,\n    UserCard\n  }\n}\n\nexport default UserPanel\n","import { render } from \"./user_panel.vue?vue&type=template&id=460aaa4a\"\nimport script from \"./user_panel.js?vue&type=script&lang=js\"\nexport * from \"./user_panel.js?vue&type=script&lang=js\"\n\nimport \"./user_panel.vue?vue&type=style&index=0&id=460aaa4a&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"NavPanel\">\n    <div class=\"panel panel-default\">\n      <ul>\n        <li v-if=\"currentUser || !privateMode\">\n          <button\n            class=\"button-unstyled menu-item\"\n            @click=\"toggleTimelines\"\n          >\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110\"\n              icon=\"stream\"\n            />{{ $t(\"nav.timelines\") }}\n            <FAIcon\n              class=\"timelines-chevron\"\n              fixed-width\n              :icon=\"showTimelines ? 'chevron-up' : 'chevron-down'\"\n            />\n          </button>\n          <div\n            v-show=\"showTimelines\"\n            class=\"timelines-background\"\n          >\n            <TimelineMenuContent class=\"timelines\" />\n          </div>\n        </li>\n        <li v-if=\"currentUser\">\n          <router-link\n            class=\"menu-item\"\n            :to=\"{ name: 'interactions', params: { username: currentUser.screen_name } }\"\n          >\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110\"\n              icon=\"bell\"\n            />{{ $t(\"nav.interactions\") }}\n          </router-link>\n        </li>\n        <li v-if=\"currentUser && pleromaChatMessagesAvailable\">\n          <router-link\n            class=\"menu-item\"\n            :to=\"{ name: 'chats', params: { username: currentUser.screen_name } }\"\n          >\n            <div\n              v-if=\"unreadChatCount\"\n              class=\"badge badge-notification\"\n            >\n              {{ unreadChatCount }}\n            </div>\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110\"\n              icon=\"comments\"\n            />{{ $t(\"nav.chats\") }}\n          </router-link>\n        </li>\n        <li v-if=\"currentUser && currentUser.locked\">\n          <router-link\n            class=\"menu-item\"\n            :to=\"{ name: 'friend-requests' }\"\n          >\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110\"\n              icon=\"user-plus\"\n            />{{ $t(\"nav.friend_requests\") }}\n            <span\n              v-if=\"followRequestCount > 0\"\n              class=\"badge badge-notification\"\n            >\n              {{ followRequestCount }}\n            </span>\n          </router-link>\n        </li>\n        <li>\n          <router-link\n            class=\"menu-item\"\n            :to=\"{ name: 'about' }\"\n          >\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110\"\n              icon=\"info-circle\"\n            />{{ $t(\"nav.about\") }}\n          </router-link>\n        </li>\n      </ul>\n    </div>\n  </div>\n</template>\n\n<script src=\"./nav_panel.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.NavPanel {\n  .panel {\n    overflow: hidden;\n    box-shadow: var(--panelShadow);\n  }\n\n  ul {\n    list-style: none;\n    margin: 0;\n    padding: 0;\n  }\n\n  li {\n    position: relative;\n    border-bottom: 1px solid;\n    border-color: $fallback--border;\n    border-color: var(--border, $fallback--border);\n    padding: 0;\n\n    &:first-child .menu-item {\n      border-top-right-radius: $fallback--panelRadius;\n      border-top-right-radius: var(--panelRadius, $fallback--panelRadius);\n      border-top-left-radius: $fallback--panelRadius;\n      border-top-left-radius: var(--panelRadius, $fallback--panelRadius);\n    }\n\n    &:last-child .menu-item {\n      border-bottom-right-radius: $fallback--panelRadius;\n      border-bottom-right-radius: var(--panelRadius, $fallback--panelRadius);\n      border-bottom-left-radius: $fallback--panelRadius;\n      border-bottom-left-radius: var(--panelRadius, $fallback--panelRadius);\n    }\n  }\n\n  li:last-child {\n    border: none;\n  }\n\n  .menu-item {\n    display: block;\n    box-sizing: border-box;\n    height: 3.5em;\n    line-height: 3.5em;\n    padding: 0 1em;\n    width: 100%;\n    color: $fallback--link;\n    color: var(--link, $fallback--link);\n\n    &:hover {\n      background-color: $fallback--lightBg;\n      background-color: var(--selectedMenu, $fallback--lightBg);\n      color: $fallback--link;\n      color: var(--selectedMenuText, $fallback--link);\n      --faint: var(--selectedMenuFaintText, $fallback--faint);\n      --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n      --lightText: var(--selectedMenuLightText, $fallback--lightText);\n      --icon: var(--selectedMenuIcon, $fallback--icon);\n    }\n\n    &.router-link-active {\n      font-weight: bolder;\n      background-color: $fallback--lightBg;\n      background-color: var(--selectedMenu, $fallback--lightBg);\n      color: $fallback--text;\n      color: var(--selectedMenuText, $fallback--text);\n      --faint: var(--selectedMenuFaintText, $fallback--faint);\n      --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n      --lightText: var(--selectedMenuLightText, $fallback--lightText);\n      --icon: var(--selectedMenuIcon, $fallback--icon);\n\n      &:hover {\n        text-decoration: underline;\n      }\n    }\n  }\n\n  .timelines-chevron {\n    margin-left: 0.8em;\n    font-size: 1.1em;\n  }\n\n  .timelines-background {\n    padding: 0 0 0 0.6em;\n    background-color: $fallback--lightBg;\n    background-color: var(--selectedMenu, $fallback--lightBg);\n    border-top: 1px solid;\n    border-color: $fallback--border;\n    border-color: var(--border, $fallback--border);\n  }\n\n  .timelines {\n    background-color: $fallback--bg;\n    background-color: var(--bg, $fallback--bg);\n  }\n\n  .fa-scale-110 {\n    margin-right: 0.8em;\n  }\n\n  .badge {\n    position: absolute;\n    right: 0.6rem;\n    top: 1.25em;\n  }\n}\n</style>\n","import { mapState } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faUsers,\n  faGlobe,\n  faBookmark,\n  faEnvelope,\n  faHome\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faUsers,\n  faGlobe,\n  faBookmark,\n  faEnvelope,\n  faHome\n)\n\nconst TimelineMenuContent = {\n  computed: {\n    ...mapState({\n      currentUser: state => state.users.currentUser,\n      privateMode: state => state.instance.private,\n      federating: state => state.instance.federating\n    })\n  }\n}\n\nexport default TimelineMenuContent\n","import { render } from \"./timeline_menu_content.vue?vue&type=template&id=9e3b525a\"\nimport script from \"./timeline_menu_content.js?vue&type=script&lang=js\"\nexport * from \"./timeline_menu_content.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <ul>\n    <li v-if=\"currentUser\">\n      <router-link\n        class=\"menu-item\"\n        :to=\"{ name: 'friends' }\"\n      >\n        <FAIcon\n          fixed-width\n          class=\"fa-scale-110 fa-old-padding \"\n          icon=\"home\"\n        />{{ $t(\"nav.home_timeline\") }}\n      </router-link>\n    </li>\n    <li v-if=\"currentUser || !privateMode\">\n      <router-link\n        class=\"menu-item\"\n        :to=\"{ name: 'public-timeline' }\"\n      >\n        <FAIcon\n          fixed-width\n          class=\"fa-scale-110 fa-old-padding \"\n          icon=\"users\"\n        />{{ $t(\"nav.public_tl\") }}\n      </router-link>\n    </li>\n    <li v-if=\"federating && (currentUser || !privateMode)\">\n      <router-link\n        class=\"menu-item\"\n        :to=\"{ name: 'public-external-timeline' }\"\n      >\n        <FAIcon\n          fixed-width\n          class=\"fa-scale-110 fa-old-padding \"\n          icon=\"globe\"\n        />{{ $t(\"nav.twkn\") }}\n      </router-link>\n    </li>\n    <li v-if=\"currentUser\">\n      <router-link\n        class=\"menu-item\"\n        :to=\"{ name: 'bookmarks'}\"\n      >\n        <FAIcon\n          fixed-width\n          class=\"fa-scale-110 fa-old-padding \"\n          icon=\"bookmark\"\n        />{{ $t(\"nav.bookmarks\") }}\n      </router-link>\n    </li>\n    <li v-if=\"currentUser\">\n      <router-link\n        class=\"menu-item\"\n        :to=\"{ name: 'dms', params: { username: currentUser.screen_name } }\"\n      >\n        <FAIcon\n          fixed-width\n          class=\"fa-scale-110 fa-old-padding \"\n          icon=\"envelope\"\n        />{{ $t(\"nav.dms\") }}\n      </router-link>\n    </li>\n  </ul>\n</template>\n\n<script src=\"./timeline_menu_content.js\" ></script>\n","import TimelineMenuContent from '../timeline_menu/timeline_menu_content.vue'\nimport { mapState, mapGetters } from 'vuex'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faUsers,\n  faGlobe,\n  faBookmark,\n  faEnvelope,\n  faChevronDown,\n  faChevronUp,\n  faComments,\n  faBell,\n  faInfoCircle,\n  faStream\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faUsers,\n  faGlobe,\n  faBookmark,\n  faEnvelope,\n  faChevronDown,\n  faChevronUp,\n  faComments,\n  faBell,\n  faInfoCircle,\n  faStream\n)\n\nconst NavPanel = {\n  created () {\n    if (this.currentUser && this.currentUser.locked) {\n      this.$store.dispatch('startFetchingFollowRequests')\n    }\n  },\n  components: {\n    TimelineMenuContent\n  },\n  data () {\n    return {\n      showTimelines: false\n    }\n  },\n  methods: {\n    toggleTimelines () {\n      this.showTimelines = !this.showTimelines\n    }\n  },\n  computed: {\n    ...mapState({\n      currentUser: state => state.users.currentUser,\n      followRequestCount: state => state.api.followRequests.length,\n      privateMode: state => state.instance.private,\n      federating: state => state.instance.federating,\n      pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable\n    }),\n    ...mapGetters(['unreadChatCount'])\n  }\n}\n\nexport default NavPanel\n","import { render } from \"./nav_panel.vue?vue&type=template&id=fdfe5e92\"\nimport script from \"./nav_panel.js?vue&type=script&lang=js\"\nexport * from \"./nav_panel.js?vue&type=script&lang=js\"\n\nimport \"./nav_panel.vue?vue&type=style&index=0&id=fdfe5e92&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"instance-specific-panel\">\n    <div class=\"panel panel-default\">\n      <div class=\"panel-body\">\n        <!-- eslint-disable vue/no-v-html -->\n        <div v-html=\"instanceSpecificPanelContent\" />\n        <!-- eslint-enable vue/no-v-html -->\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./instance_specific_panel.js\" ></script>\n","const InstanceSpecificPanel = {\n  computed: {\n    instanceSpecificPanelContent () {\n      return this.$store.state.instance.instanceSpecificPanelContent\n    }\n  }\n}\n\nexport default InstanceSpecificPanel\n","import { render } from \"./instance_specific_panel.vue?vue&type=template&id=5b01187b\"\nimport script from \"./instance_specific_panel.js?vue&type=script&lang=js\"\nexport * from \"./instance_specific_panel.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"features-panel\">\n    <div class=\"panel panel-default base01-background\">\n      <div class=\"panel-heading timeline-heading base02-background base04\">\n        <div class=\"title\">\n          {{ $t('features_panel.title') }}\n        </div>\n      </div>\n      <div class=\"panel-body features-panel\">\n        <ul>\n          <li v-if=\"shout\">\n            {{ $t('features_panel.shout') }}\n          </li>\n          <li v-if=\"pleromaChatMessages\">\n            {{ $t('features_panel.pleroma_chat_messages') }}\n          </li>\n          <li v-if=\"gopher\">\n            {{ $t('features_panel.gopher') }}\n          </li>\n          <li v-if=\"whoToFollow\">\n            {{ $t('features_panel.who_to_follow') }}\n          </li>\n          <li v-if=\"mediaProxy\">\n            {{ $t('features_panel.media_proxy') }}\n          </li>\n          <li>{{ $t('features_panel.scope_options') }}</li>\n          <li>{{ $t('features_panel.text_limit') }} = {{ textlimit }}</li>\n          <li>{{ $t('features_panel.upload_limit') }} = {{ uploadlimit.num }} {{ $t('upload.file_size_units.' + uploadlimit.unit) }}</li>\n        </ul>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./features_panel.js\" ></script>\n\n<style lang=\"scss\">\n  .features-panel li {\n    line-height: 24px;\n  }\n</style>\n","import fileSizeFormatService from '../../services/file_size_format/file_size_format.js'\n\nconst FeaturesPanel = {\n  computed: {\n    shout: function () { return this.$store.state.instance.shoutAvailable },\n    pleromaChatMessages: function () { return this.$store.state.instance.pleromaChatMessagesAvailable },\n    gopher: function () { return this.$store.state.instance.gopherAvailable },\n    whoToFollow: function () { return this.$store.state.instance.suggestionsEnabled },\n    mediaProxy: function () { return this.$store.state.instance.mediaProxyAvailable },\n    minimalScopesMode: function () { return this.$store.state.instance.minimalScopesMode },\n    textlimit: function () { return this.$store.state.instance.textlimit },\n    uploadlimit: function () { return fileSizeFormatService.fileSizeFormat(this.$store.state.instance.uploadlimit) }\n  }\n}\n\nexport default FeaturesPanel\n","import { render } from \"./features_panel.vue?vue&type=template&id=9d4c35f4\"\nimport script from \"./features_panel.js?vue&type=script&lang=js\"\nexport * from \"./features_panel.js?vue&type=script&lang=js\"\n\nimport \"./features_panel.vue?vue&type=style&index=0&id=9d4c35f4&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"who-to-follow-panel\">\n    <div class=\"panel panel-default base01-background\">\n      <div class=\"panel-heading timeline-heading base02-background base04\">\n        <div class=\"title\">\n          {{ $t('who_to_follow.who_to_follow') }}\n        </div>\n      </div>\n      <div class=\"who-to-follow\">\n        <p\n          v-for=\"user in usersToFollow\"\n          :key=\"user.id\"\n          class=\"who-to-follow-items\"\n        >\n          <img :src=\"user.img\">\n          <router-link :to=\"userProfileLink(user.id, user.name)\">\n            {{ user.name }}\n          </router-link><br>\n        </p>\n        <p class=\"who-to-follow-more\">\n          <router-link :to=\"{ name: 'who-to-follow' }\">\n            {{ $t('who_to_follow.more') }}\n          </router-link>\n        </p>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./who_to_follow_panel.js\" ></script>\n\n<style lang=\"scss\">\n  .who-to-follow * {\n    vertical-align: middle;\n  }\n  .who-to-follow img {\n    width: 32px;\n    height: 32px;\n  }\n  .who-to-follow {\n    padding: 0em 1em;\n    margin: 0px;\n  }\n  .who-to-follow-items {\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    padding: 0px;\n    margin: 1em 0em;\n  }\n  .who-to-follow-more {\n    padding: 0px;\n    margin: 1em 0em;\n    text-align: center;\n  }\n</style>\n","import apiService from '../../services/api/api.service.js'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { shuffle } from 'lodash'\n\nfunction showWhoToFollow (panel, reply) {\n  const shuffled = shuffle(reply)\n\n  panel.usersToFollow.forEach((toFollow, index) => {\n    let user = shuffled[index]\n    let img = user.avatar || this.$store.state.instance.defaultAvatar\n    let name = user.acct\n\n    toFollow.img = img\n    toFollow.name = name\n\n    panel.$store.state.api.backendInteractor.fetchUser({ id: name })\n      .then((externalUser) => {\n        if (!externalUser.error) {\n          panel.$store.commit('addNewUsers', [externalUser])\n          toFollow.id = externalUser.id\n        }\n      })\n  })\n}\n\nfunction getWhoToFollow (panel) {\n  var credentials = panel.$store.state.users.currentUser.credentials\n  if (credentials) {\n    panel.usersToFollow.forEach(toFollow => {\n      toFollow.name = 'Loading...'\n    })\n    apiService.suggestions({ credentials: credentials })\n      .then((reply) => {\n        showWhoToFollow(panel, reply)\n      })\n  }\n}\n\nconst WhoToFollowPanel = {\n  data: () => ({\n    usersToFollow: []\n  }),\n  computed: {\n    user: function () {\n      return this.$store.state.users.currentUser.screen_name\n    },\n    suggestionsEnabled () {\n      return this.$store.state.instance.suggestionsEnabled\n    }\n  },\n  methods: {\n    userProfileLink (id, name) {\n      return generateProfileLink(id, name, this.$store.state.instance.restrictedNicknames)\n    }\n  },\n  watch: {\n    user: function (user, oldUser) {\n      if (this.suggestionsEnabled) {\n        getWhoToFollow(this)\n      }\n    }\n  },\n  mounted:\n    function () {\n      this.usersToFollow = new Array(3).fill().map(x => (\n        {\n          img: this.$store.state.instance.defaultAvatar,\n          name: '',\n          id: 0\n        }\n      ))\n      if (this.suggestionsEnabled) {\n        getWhoToFollow(this)\n      }\n    }\n}\n\nexport default WhoToFollowPanel\n","import { render } from \"./who_to_follow_panel.vue?vue&type=template&id=b4d31272\"\nimport script from \"./who_to_follow_panel.js?vue&type=script&lang=js\"\nexport * from \"./who_to_follow_panel.js?vue&type=script&lang=js\"\n\nimport \"./who_to_follow_panel.vue?vue&type=style&index=0&id=b4d31272&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    v-if=\"!collapsed || !floating\"\n    class=\"shout-panel\"\n  >\n    <div class=\"panel panel-default\">\n      <div\n        class=\"panel-heading timeline-heading\"\n        :class=\"{ 'shout-heading': floating }\"\n        @click.stop.prevent=\"togglePanel\"\n      >\n        <div class=\"title\">\n          {{ $t('shoutbox.title') }}\n          <FAIcon\n            v-if=\"floating\"\n            icon=\"times\"\n            class=\"close-icon\"\n          />\n        </div>\n      </div>\n      <div class=\"shout-window\">\n        <div\n          v-for=\"message in messages\"\n          :key=\"message.id\"\n          class=\"shout-message\"\n        >\n          <span class=\"shout-avatar\">\n            <img :src=\"message.author.avatar\">\n          </span>\n          <div class=\"shout-content\">\n            <router-link\n              class=\"shout-name\"\n              :to=\"userProfileLink(message.author)\"\n            >\n              {{ message.author.username }}\n            </router-link>\n            <br>\n            <span class=\"shout-text\">\n              {{ message.text }}\n            </span>\n          </div>\n        </div>\n      </div>\n      <div class=\"shout-input\">\n        <textarea\n          v-model=\"currentMessage\"\n          class=\"shout-input-textarea\"\n          rows=\"1\"\n          @keyup.enter=\"submit(currentMessage)\"\n        />\n      </div>\n    </div>\n  </div>\n  <div\n    v-else\n    class=\"shout-panel\"\n  >\n    <div class=\"panel panel-default\">\n      <div\n        class=\"panel-heading -stub timeline-heading shout-heading\"\n        @click.stop.prevent=\"togglePanel\"\n      >\n        <div class=\"title\">\n          <FAIcon\n            class=\"icon\"\n            icon=\"bullhorn\"\n          />\n          {{ $t('shoutbox.title') }}\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./shout_panel.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.floating-shout {\n  position: fixed;\n  bottom: 0.5em;\n  z-index: 1000;\n  max-width: 25em;\n\n  &.-left {\n    left: 0.5em;\n  }\n\n  &:not(.-left) {\n    right: 0.5em;\n  }\n}\n\n.shout-panel {\n  .shout-heading {\n    cursor: pointer;\n\n    .icon {\n      color: $fallback--text;\n      color: var(--panelText, $fallback--text);\n      margin-right: 0.5em;\n    }\n\n    .title {\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n  }\n\n  .shout-window {\n    overflow-y: auto;\n    overflow-x: hidden;\n    max-height: 20em;\n  }\n\n  .shout-window-container {\n    height: 100%;\n  }\n\n  .shout-message {\n    display: flex;\n    padding: 0.2em 0.5em;\n  }\n\n  .shout-avatar {\n    img {\n      height: 24px;\n      width: 24px;\n      border-radius: $fallback--avatarRadius;\n      border-radius: var(--avatarRadius, $fallback--avatarRadius);\n      margin-right: 0.5em;\n      margin-top: 0.25em;\n    }\n  }\n\n  .shout-input {\n    display: flex;\n\n    textarea {\n      flex: 1;\n      margin: 0.6em;\n      min-height: 3.5em;\n      resize: none;\n    }\n  }\n\n  .shout-panel {\n    .title {\n      display: flex;\n      justify-content: space-between;\n    }\n  }\n}\n</style>\n","import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faBullhorn,\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faBullhorn,\n  faTimes\n)\n\nconst shoutPanel = {\n  props: [ 'floating' ],\n  data () {\n    return {\n      currentMessage: '',\n      channel: null,\n      collapsed: true\n    }\n  },\n  computed: {\n    messages () {\n      return this.$store.state.shout.messages\n    }\n  },\n  methods: {\n    submit (message) {\n      this.$store.state.shout.channel.push('new_msg', { text: message }, 10000)\n      this.currentMessage = ''\n    },\n    togglePanel () {\n      this.collapsed = !this.collapsed\n    },\n    userProfileLink (user) {\n      return generateProfileLink(user.id, user.username, this.$store.state.instance.restrictedNicknames)\n    }\n  },\n  watch: {\n    messages (newVal) {\n      const scrollEl = this.$el.querySelector('.chat-window')\n      if (!scrollEl) return\n      if (scrollEl.scrollTop + scrollEl.offsetHeight + 20 > scrollEl.scrollHeight) {\n        this.$nextTick(() => {\n          if (!scrollEl) return\n          scrollEl.scrollTop = scrollEl.scrollHeight - scrollEl.offsetHeight\n        })\n      }\n    }\n  }\n}\n\nexport default shoutPanel\n","import { render } from \"./shout_panel.vue?vue&type=template&id=3464bd9c\"\nimport script from \"./shout_panel.js?vue&type=script&lang=js\"\nexport * from \"./shout_panel.js?vue&type=script&lang=js\"\n\nimport \"./shout_panel.vue?vue&type=style&index=0&id=3464bd9c&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Modal\n    :is-open=\"modalActivated\"\n    class=\"settings-modal\"\n    :class=\"{ peek: modalPeeked }\"\n    :no-background=\"modalPeeked\"\n  >\n    <div class=\"settings-modal-panel panel\">\n      <div class=\"panel-heading\">\n        <span class=\"title\">\n          {{ $t('settings.settings') }}\n        </span>\n        <transition name=\"fade\">\n          <div\n            v-if=\"currentSaveStateNotice\"\n            class=\"alert\"\n            :class=\"{ transparent: !currentSaveStateNotice.error, error: currentSaveStateNotice.error}\"\n            @click.prevent\n          >\n            {{ currentSaveStateNotice.error ? $t('settings.saving_err') : $t('settings.saving_ok') }}\n          </div>\n        </transition>\n        <button\n          class=\"btn button-default\"\n          :title=\"$t('general.peek')\"\n          @click=\"peekModal\"\n        >\n          <FAIcon\n            :icon=\"['far', 'window-minimize']\"\n            fixed-width\n          />\n        </button>\n        <button\n          class=\"btn button-default\"\n          :title=\"$t('general.close')\"\n          @click=\"closeModal\"\n        >\n          <FAIcon\n            icon=\"times\"\n            fixed-width\n          />\n        </button>\n      </div>\n      <div class=\"panel-body\">\n        <SettingsModalContent v-if=\"modalOpenedOnce\" />\n      </div>\n      <div class=\"panel-footer settings-footer\">\n        <Popover\n          class=\"export\"\n          trigger=\"click\"\n          placement=\"top\"\n          :offset=\"{ y: 5, x: 5 }\"\n          :bound-to=\"{ x: 'container' }\"\n          remove-padding\n        >\n          <template v-slot:trigger>\n            <button\n              class=\"btn button-default\"\n              :title=\"$t('general.close')\"\n            >\n              <span>{{ $t(\"settings.file_export_import.backup_restore\") }}</span>\n              {{ ' ' }}\n              <FAIcon\n                icon=\"chevron-down\"\n              />\n            </button>\n          </template>\n          <template v-slot:content=\"{close}\">\n            <div class=\"dropdown-menu\">\n              <button\n                class=\"button-default dropdown-item dropdown-item-icon\"\n                @click.prevent=\"backup\"\n                @click=\"close\"\n              >\n                <FAIcon\n                  icon=\"file-download\"\n                  fixed-width\n                /><span>{{ $t(\"settings.file_export_import.backup_settings\") }}</span>\n              </button>\n              <button\n                class=\"button-default dropdown-item dropdown-item-icon\"\n                @click.prevent=\"backupWithTheme\"\n                @click=\"close\"\n              >\n                <FAIcon\n                  icon=\"file-download\"\n                  fixed-width\n                /><span>{{ $t(\"settings.file_export_import.backup_settings_theme\") }}</span>\n              </button>\n              <button\n                class=\"button-default dropdown-item dropdown-item-icon\"\n                @click.prevent=\"restore\"\n                @click=\"close\"\n              >\n                <FAIcon\n                  icon=\"file-upload\"\n                  fixed-width\n                /><span>{{ $t(\"settings.file_export_import.restore_settings\") }}</span>\n              </button>\n            </div>\n          </template>\n        </Popover>\n\n        <Checkbox\n          :model-value=\"!!expertLevel\"\n          @update:modelValue=\"expertLevel = Number($event)\"\n        >\n          {{ $t(\"settings.expert_mode\") }}\n        </Checkbox>\n        <span\n          id=\"unscrolled-content\"\n          class=\"extra-content\"\n        />\n      </div>\n    </div>\n  </Modal>\n</template>\n\n<script src=\"./settings_modal.js\"></script>\n\n<style src=\"./settings_modal.scss\" lang=\"scss\"></style>\n","<template>\n  <div\n    v-show=\"isOpen\"\n    v-body-scroll-lock=\"isOpen && !noBackground\"\n    class=\"modal-view\"\n    :class=\"classes\"\n    @click.self=\"$emit('backdropClicked')\"\n  >\n    <slot />\n  </div>\n</template>\n\n<script>\nexport default {\n  props: {\n    isOpen: {\n      type: Boolean,\n      default: true\n    },\n    noBackground: {\n      type: Boolean,\n      default: false\n    }\n  },\n  computed: {\n    classes () {\n      return {\n        'modal-background': !this.noBackground,\n        'open': this.isOpen\n      }\n    }\n  }\n}\n</script>\n\n<style lang=\"scss\">\n.modal-view {\n  z-index: 2000;\n  position: fixed;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  overflow: auto;\n  pointer-events: none;\n  animation-duration: 0.2s;\n  animation-name: modal-background-fadein;\n  opacity: 0;\n\n  > * {\n    pointer-events: initial;\n  }\n\n  &.modal-background {\n    pointer-events: initial;\n    background-color: rgba(0, 0, 0, 0.5);\n  }\n\n  &.open {\n    opacity: 1;\n  }\n}\n\n@keyframes modal-background-fadein {\n  from {\n    background-color: rgba(0, 0, 0, 0);\n  }\n  to {\n    background-color: rgba(0, 0, 0, 0.5);\n  }\n}\n</style>\n","import { render } from \"./modal.vue?vue&type=template&id=1b320182\"\nimport script from \"./modal.vue?vue&type=script&lang=js\"\nexport * from \"./modal.vue?vue&type=script&lang=js\"\n\nimport \"./modal.vue?vue&type=style&index=0&id=1b320182&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"panel-loading\">\n    <span class=\"loading-text\">\n      <FAIcon\n        icon=\"circle-notch\"\n        spin\n        size=\"3x\"\n      />\n      {{ $t('general.loading') }}\n    </span>\n  </div>\n</template>\n\n<script>\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch\n)\n\nexport default {}\n</script>\n\n<style lang=\"scss\">\n@import 'src/_variables.scss';\n\n.panel-loading {\n  display: flex;\n  height: 100%;\n  align-items: center;\n  justify-content: center;\n  font-size: 2em;\n  color: $fallback--text;\n  color: var(--text, $fallback--text);\n  .loading-text svg {\n    line-height: 0;\n    vertical-align: middle;\n    color: $fallback--text;\n    color: var(--text, $fallback--text);\n  }\n}\n</style>\n","import { render } from \"./panel_loading.vue?vue&type=template&id=595215a2\"\nimport script from \"./panel_loading.vue?vue&type=script&lang=js\"\nexport * from \"./panel_loading.vue?vue&type=script&lang=js\"\n\nimport \"./panel_loading.vue?vue&type=style&index=0&id=595215a2&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"async-component-error\">\n    <div>\n      <h4>\n        {{ $t('general.generic_error') }}\n      </h4>\n      <p>\n        {{ $t('general.error_retry') }}\n      </p>\n      <button\n        class=\"btn button-default\"\n        @click=\"retry\"\n      >\n        {{ $t('general.retry') }}\n      </button>\n    </div>\n  </div>\n</template>\n\n<script>\nexport default {\n  emits: ['resetAsyncComponent'],\n  methods: {\n    retry () {\n      this.$emit('resetAsyncComponent')\n    }\n  }\n}\n</script>\n\n<style lang=\"scss\">\n.async-component-error {\n  display: flex;\n  height: 100%;\n  align-items: center;\n  justify-content: center;\n  .btn {\n    margin: .5em;\n    padding: .5em 2em;\n  }\n}\n</style>\n","import { render } from \"./async_component_error.vue?vue&type=template&id=26dcc164\"\nimport script from \"./async_component_error.vue?vue&type=script&lang=js\"\nexport * from \"./async_component_error.vue?vue&type=script&lang=js\"\n\nimport \"./async_component_error.vue?vue&type=style&index=0&id=26dcc164&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineAsyncComponent, shallowReactive, h } from 'vue'\n\n/* By default async components don't have any way to recover, if component is\n * failed, it is failed forever. This helper tries to remedy that by recreating\n * async component when retry is requested (by user). You need to emit the\n * `resetAsyncComponent` event from child to reset the component. Generally,\n * this should be done from error component but could be done from loading or\n * actual target component itself if needs to be.\n */\nfunction getResettableAsyncComponent (asyncComponent, options) {\n  const asyncComponentFactory = () => () => defineAsyncComponent({\n    loader: asyncComponent,\n    ...options\n  })\n\n  const observe = shallowReactive({ c: asyncComponentFactory() })\n\n  return {\n    render () {\n      //  emit event resetAsyncComponent to reloading\n      return h(observe.c(), {\n        onResetAsyncComponent () {\n          observe.c = asyncComponentFactory()\n        }\n      })\n    }\n  }\n}\n\nexport default getResettableAsyncComponent\n","import Modal from 'src/components/modal/modal.vue'\nimport PanelLoading from 'src/components/panel_loading/panel_loading.vue'\nimport AsyncComponentError from 'src/components/async_component_error/async_component_error.vue'\nimport getResettableAsyncComponent from 'src/services/resettable_async_component.js'\nimport Popover from '../popover/popover.vue'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { cloneDeep } from 'lodash'\nimport {\n  newImporter,\n  newExporter\n} from 'src/services/export_import/export_import.js'\nimport {\n  faTimes,\n  faFileUpload,\n  faFileDownload,\n  faChevronDown\n} from '@fortawesome/free-solid-svg-icons'\nimport {\n  faWindowMinimize\n} from '@fortawesome/free-regular-svg-icons'\n\nconst PLEROMAFE_SETTINGS_MAJOR_VERSION = 1\nconst PLEROMAFE_SETTINGS_MINOR_VERSION = 0\n\nlibrary.add(\n  faTimes,\n  faWindowMinimize,\n  faFileUpload,\n  faFileDownload,\n  faChevronDown\n)\n\nconst SettingsModal = {\n  data () {\n    return {\n      dataImporter: newImporter({\n        validator: this.importValidator,\n        onImport: this.onImport,\n        onImportFailure: this.onImportFailure\n      }),\n      dataThemeExporter: newExporter({\n        filename: 'pleromafe_settings.full',\n        getExportedObject: () => this.generateExport(true)\n      }),\n      dataExporter: newExporter({\n        filename: 'pleromafe_settings',\n        getExportedObject: () => this.generateExport()\n      })\n    }\n  },\n  components: {\n    Modal,\n    Popover,\n    Checkbox,\n    SettingsModalContent: getResettableAsyncComponent(\n      () => import('./settings_modal_content.vue'),\n      {\n        loadingComponent: PanelLoading,\n        errorComponent: AsyncComponentError,\n        delay: 0\n      }\n    )\n  },\n  methods: {\n    closeModal () {\n      this.$store.dispatch('closeSettingsModal')\n    },\n    peekModal () {\n      this.$store.dispatch('togglePeekSettingsModal')\n    },\n    importValidator (data) {\n      if (!Array.isArray(data._pleroma_settings_version)) {\n        return {\n          messageKey: 'settings.file_import_export.invalid_file'\n        }\n      }\n\n      const [major, minor] = data._pleroma_settings_version\n\n      if (major > PLEROMAFE_SETTINGS_MAJOR_VERSION) {\n        return {\n          messageKey: 'settings.file_export_import.errors.file_too_new',\n          messageArgs: {\n            fileMajor: major,\n            feMajor: PLEROMAFE_SETTINGS_MAJOR_VERSION\n          }\n        }\n      }\n\n      if (major < PLEROMAFE_SETTINGS_MAJOR_VERSION) {\n        return {\n          messageKey: 'settings.file_export_import.errors.file_too_old',\n          messageArgs: {\n            fileMajor: major,\n            feMajor: PLEROMAFE_SETTINGS_MAJOR_VERSION\n          }\n        }\n      }\n\n      if (minor > PLEROMAFE_SETTINGS_MINOR_VERSION) {\n        this.$store.dispatch('pushGlobalNotice', {\n          level: 'warning',\n          messageKey: 'settings.file_export_import.errors.file_slightly_new'\n        })\n      }\n\n      return true\n    },\n    onImportFailure (result) {\n      if (result.error) {\n        this.$store.dispatch('pushGlobalNotice', { messageKey: 'settings.invalid_settings_imported', level: 'error' })\n      } else {\n        this.$store.dispatch('pushGlobalNotice', { ...result.validationResult, level: 'error' })\n      }\n    },\n    onImport (data) {\n      if (data) { this.$store.dispatch('loadSettings', data) }\n    },\n    restore () {\n      this.dataImporter.importData()\n    },\n    backup () {\n      this.dataExporter.exportData()\n    },\n    backupWithTheme () {\n      this.dataThemeExporter.exportData()\n    },\n    generateExport (theme = false) {\n      const { config } = this.$store.state\n      let sample = config\n      if (!theme) {\n        const ignoreList = new Set([\n          'customTheme',\n          'customThemeSource',\n          'colors'\n        ])\n        sample = Object.fromEntries(\n          Object\n            .entries(sample)\n            .filter(([key]) => !ignoreList.has(key))\n        )\n      }\n      const clone = cloneDeep(sample)\n      clone._pleroma_settings_version = [\n        PLEROMAFE_SETTINGS_MAJOR_VERSION,\n        PLEROMAFE_SETTINGS_MINOR_VERSION\n      ]\n      return clone\n    }\n  },\n  computed: {\n    currentSaveStateNotice () {\n      return this.$store.state.interface.settings.currentSaveStateNotice\n    },\n    modalActivated () {\n      return this.$store.state.interface.settingsModalState !== 'hidden'\n    },\n    modalOpenedOnce () {\n      return this.$store.state.interface.settingsModalLoaded\n    },\n    modalPeeked () {\n      return this.$store.state.interface.settingsModalState === 'minimized'\n    },\n    expertLevel: {\n      get () {\n        return this.$store.state.config.expertLevel > 0\n      },\n      set (value) {\n        console.log(value)\n        this.$store.dispatch('setOption', { name: 'expertLevel', value: value ? 1 : 0 })\n      }\n    }\n  }\n}\n\nexport default SettingsModal\n","import { render } from \"./settings_modal.vue?vue&type=template&id=417af644\"\nimport script from \"./settings_modal.js?vue&type=script&lang=js\"\nexport * from \"./settings_modal.js?vue&type=script&lang=js\"\n\nimport \"./settings_modal.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Modal\n    v-if=\"showing\"\n    class=\"media-modal-view\"\n    @backdropClicked=\"hideIfNotSwiped\"\n  >\n    <SwipeClick\n      v-if=\"type === 'image'\"\n      ref=\"swipeClick\"\n      class=\"modal-image-container\"\n      :direction=\"swipeDirection\"\n      :threshold=\"swipeThreshold\"\n      @preview-requested=\"handleSwipePreview\"\n      @swipe-finished=\"handleSwipeEnd\"\n      @swipeless-clicked=\"hide\"\n    >\n      <PinchZoom\n        ref=\"pinchZoom\"\n        class=\"modal-image-container-inner\"\n        selector=\".modal-image\"\n        reach-min-scale-strategy=\"reset\"\n        stop-propagate-handled=\"stop-propgate-handled\"\n        :allow-pan-min-scale=\"pinchZoomMinScale\"\n        :min-scale=\"pinchZoomMinScale\"\n        :reset-to-min-scale-limit=\"pinchZoomScaleResetLimit\"\n      >\n        <img\n          :class=\"{ loading }\"\n          class=\"modal-image\"\n          :src=\"currentMedia.url\"\n          :alt=\"currentMedia.description\"\n          :title=\"currentMedia.description\"\n          @load=\"onImageLoaded\"\n        >\n      </PinchZoom>\n    </SwipeClick>\n    <VideoAttachment\n      v-if=\"type === 'video'\"\n      class=\"modal-image\"\n      :attachment=\"currentMedia\"\n      :controls=\"true\"\n    />\n    <audio\n      v-if=\"type === 'audio'\"\n      class=\"modal-image\"\n      :src=\"currentMedia.url\"\n      :alt=\"currentMedia.description\"\n      :title=\"currentMedia.description\"\n      controls\n    />\n    <Flash\n      v-if=\"type === 'flash'\"\n      class=\"modal-image\"\n      :src=\"currentMedia.url\"\n      :alt=\"currentMedia.description\"\n      :title=\"currentMedia.description\"\n    />\n    <button\n      v-if=\"canNavigate\"\n      :title=\"$t('media_modal.previous')\"\n      class=\"modal-view-button modal-view-button-arrow modal-view-button-arrow--prev\"\n      @click.stop.prevent=\"goPrev\"\n    >\n      <FAIcon\n        class=\"button-icon arrow-icon\"\n        icon=\"chevron-left\"\n      />\n    </button>\n    <button\n      v-if=\"canNavigate\"\n      :title=\"$t('media_modal.next')\"\n      class=\"modal-view-button modal-view-button-arrow modal-view-button-arrow--next\"\n      @click.stop.prevent=\"goNext\"\n    >\n      <FAIcon\n        class=\"button-icon arrow-icon\"\n        icon=\"chevron-right\"\n      />\n    </button>\n    <button\n      class=\"modal-view-button modal-view-button-hide\"\n      :title=\"$t('media_modal.hide')\"\n      @click.stop.prevent=\"hide\"\n    >\n      <FAIcon\n        class=\"button-icon\"\n        icon=\"times\"\n      />\n    </button>\n\n    <span\n      v-if=\"description\"\n      class=\"description\"\n    >\n      {{ description }}\n    </span>\n    <span\n      class=\"counter\"\n    >\n      {{ $tc('media_modal.counter', currentIndex + 1, { current: currentIndex + 1, total: media.length }) }}\n    </span>\n    <span\n      v-if=\"loading\"\n      class=\"loading-spinner\"\n    >\n      <FAIcon\n        spin\n        icon=\"circle-notch\"\n        size=\"5x\"\n      />\n    </span>\n  </Modal>\n</template>\n\n<script src=\"./media_modal.js\"></script>\n\n<style lang=\"scss\">\n$modal-view-button-icon-height: 3em;\n$modal-view-button-icon-half-height: calc(#{$modal-view-button-icon-height} / 2);\n$modal-view-button-icon-width: 3em;\n$modal-view-button-icon-margin: 0.5em;\n\n.modal-view.media-modal-view {\n  z-index: 9000;\n  flex-direction: column;\n\n  .modal-view-button-arrow,\n  .modal-view-button-hide {\n    opacity: 0.75;\n\n    &:focus,\n    &:hover {\n      outline: none;\n      box-shadow: none;\n    }\n\n    &:hover {\n      opacity: 1;\n    }\n  }\n  overflow: hidden;\n}\n\n.media-modal-view {\n  @keyframes media-fadein {\n    from {\n      opacity: 0;\n    }\n    to {\n      opacity: 1;\n    }\n  }\n\n  .modal-image-container {\n    display: flex;\n    overflow: hidden;\n    align-items: center;\n    flex-direction: column;\n    max-width: 100%;\n    max-height: 100%;\n    width: 100%;\n    height: 100%;\n    flex-grow: 1;\n    justify-content: center;\n\n    &-inner {\n      width: 100%;\n      height: 100%;\n      flex-grow: 1;\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      justify-content: center;\n    }\n  }\n\n  .description,\n  .counter {\n    /* Hardcoded since background is also hardcoded */\n    color: white;\n    margin-top: 1em;\n    text-shadow: 0 0 10px black, 0 0 10px black;\n    padding: 0.2em 2em;\n  }\n\n  .description {\n    flex: 0 0 auto;\n    overflow-y: auto;\n    min-height: 1em;\n    max-width: 500px;\n    max-height: 9.5em;\n    word-break: break-all;\n  }\n\n  .modal-image {\n    max-width: 100%;\n    max-height: 100%;\n    image-orientation: from-image; // NOTE: only FF supports this\n    animation: 0.1s cubic-bezier(0.7, 0, 1, 0.6) media-fadein;\n\n    &.loading {\n      opacity: 0.5;\n    }\n  }\n\n  .loading-spinner {\n    width: 100%;\n    height: 100%;\n    position: absolute;\n    pointer-events: none;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n\n    svg {\n      color: white;\n    }\n  }\n\n  .modal-view-button {\n    border: 0;\n    padding: 0;\n    opacity: 0;\n    box-shadow: none;\n    background: none;\n    appearance: none;\n    overflow: visible;\n    cursor: pointer;\n    transition: opacity 333ms cubic-bezier(.4,0,.22,1);\n    height: $modal-view-button-icon-height;\n    width: $modal-view-button-icon-width;\n\n    .button-icon {\n      position: absolute;\n      height: $modal-view-button-icon-height;\n      width: $modal-view-button-icon-width;\n      font-size: 1rem;\n      line-height: $modal-view-button-icon-height;\n      color: #FFF;\n      text-align: center;\n      background-color: rgba(0,0,0,.3);\n    }\n  }\n\n  .modal-view-button-arrow {\n    position: absolute;\n    display: block;\n    top: 50%;\n    margin-top: $modal-view-button-icon-half-height;\n    width: $modal-view-button-icon-width;\n    height: $modal-view-button-icon-height;\n\n    .arrow-icon {\n      position: absolute;\n      top: 0;\n      line-height: $modal-view-button-icon-height;\n      color: #FFF;\n      text-align: center;\n      background-color: rgba(0,0,0,.3);\n    }\n\n    &--prev {\n      left: 0;\n      .arrow-icon {\n        left: $modal-view-button-icon-margin;\n      }\n    }\n\n    &--next {\n      right: 0;\n      .arrow-icon {\n        right: $modal-view-button-icon-margin;\n      }\n    }\n  }\n\n  .modal-view-button-hide {\n    position: absolute;\n    top: 0;\n    right: 0;\n    .button-icon {\n      top: $modal-view-button-icon-margin;\n      right: $modal-view-button-icon-margin;\n    }\n  }\n}\n</style>\n","import PinchZoom from '@kazvmoe-infra/pinch-zoom-element'\n\nexport default {\n  methods: {\n    setTransform ({ scale, x, y }) {\n      this.$el.setTransform({ scale, x, y })\n    }\n  },\n  created () {\n    // Make lint happy\n    (() => PinchZoom)()\n  }\n}\n","import { render } from \"./pinch_zoom.vue?vue&type=template&id=4608b5bf\"\nimport script from \"./pinch_zoom.js?vue&type=script&lang=js\"\nexport * from \"./pinch_zoom.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <pinch-zoom\n    class=\"pinch-zoom-parent\"\n    v-bind=\"$attrs\"\n    v-on=\"$listeners\"\n  >\n    <slot />\n  </pinch-zoom>\n</template>\n\n<script src=\"./pinch_zoom.js\"></script>\n","\nconst DIRECTION_LEFT = [-1, 0]\nconst DIRECTION_RIGHT = [1, 0]\nconst DIRECTION_UP = [0, -1]\nconst DIRECTION_DOWN = [0, 1]\n\nconst BUTTON_LEFT = 0\n\nconst deltaCoord = (oldCoord, newCoord) => [newCoord[0] - oldCoord[0], newCoord[1] - oldCoord[1]]\n\nconst touchCoord = touch => [touch.screenX, touch.screenY]\n\nconst touchEventCoord = e => touchCoord(e.touches[0])\n\nconst pointerEventCoord = e => [e.clientX, e.clientY]\n\nconst vectorLength = v => Math.sqrt(v[0] * v[0] + v[1] * v[1])\n\nconst perpendicular = v => [v[1], -v[0]]\n\nconst dotProduct = (v1, v2) => v1[0] * v2[0] + v1[1] * v2[1]\n\nconst project = (v1, v2) => {\n  const scalar = (dotProduct(v1, v2) / dotProduct(v2, v2))\n  return [scalar * v2[0], scalar * v2[1]]\n}\n\n// direction: either use the constants above or an arbitrary 2d vector.\n// threshold: how many Px to move from touch origin before checking if the\n//    callback should be called.\n// divergentTolerance: a scalar for much of divergent direction we tolerate when\n//    above threshold. for example, with 1.0 we only call the callback if\n//    divergent component of delta is < 1.0 * direction component of delta.\nconst swipeGesture = (direction, onSwipe, threshold = 30, perpendicularTolerance = 1.0) => {\n  return {\n    direction,\n    onSwipe,\n    threshold,\n    perpendicularTolerance,\n    _startPos: [0, 0],\n    _swiping: false\n  }\n}\n\nconst beginSwipe = (event, gesture) => {\n  gesture._startPos = touchEventCoord(event)\n  gesture._swiping = true\n}\n\nconst updateSwipe = (event, gesture) => {\n  if (!gesture._swiping) return\n  // movement too small\n  const delta = deltaCoord(gesture._startPos, touchEventCoord(event))\n  if (vectorLength(delta) < gesture.threshold) return\n  // movement is opposite from direction\n  if (dotProduct(delta, gesture.direction) < 0) return\n  // movement perpendicular to direction is too much\n  const towardsDir = project(delta, gesture.direction)\n  const perpendicularDir = perpendicular(gesture.direction)\n  const towardsPerpendicular = project(delta, perpendicularDir)\n  if (\n    vectorLength(towardsDir) * gesture.perpendicularTolerance <\n    vectorLength(towardsPerpendicular)\n  ) return\n\n  gesture.onSwipe()\n  gesture._swiping = false\n}\n\nclass SwipeAndClickGesture {\n  // swipePreviewCallback(offsets: Array[Number])\n  //   offsets: the offset vector which the underlying component should move, from the starting position\n  // swipeEndCallback(sign: 0|-1|1)\n  //   sign: if the swipe does not meet the threshold, 0\n  //         if the swipe meets the threshold in the positive direction, 1\n  //         if the swipe meets the threshold in the negative direction, -1\n  constructor ({\n    direction,\n    // swipeStartCallback\n    swipePreviewCallback,\n    swipeEndCallback,\n    swipeCancelCallback,\n    swipelessClickCallback,\n    threshold = 30,\n    perpendicularTolerance = 1.0,\n    disableClickThreshold = 1\n  }) {\n    const nop = () => {}\n    this.direction = direction\n    this.swipePreviewCallback = swipePreviewCallback || nop\n    this.swipeEndCallback = swipeEndCallback || nop\n    this.swipeCancelCallback = swipeCancelCallback || nop\n    this.swipelessClickCallback = swipelessClickCallback || nop\n    this.threshold = typeof threshold === 'function' ? threshold : () => threshold\n    this.disableClickThreshold = typeof disableClickThreshold === 'function' ? disableClickThreshold : () => disableClickThreshold\n    this.perpendicularTolerance = perpendicularTolerance\n    this._reset()\n  }\n\n  _reset () {\n    this._startPos = [0, 0]\n    this._pointerId = -1\n    this._swiping = false\n    this._swiped = false\n    this._preventNextClick = false\n  }\n\n  start (event) {\n    // Only handle left click\n    if (event.button !== BUTTON_LEFT) {\n      return\n    }\n\n    this._startPos = pointerEventCoord(event)\n    this._pointerId = event.pointerId\n    this._swiping = true\n    this._swiped = false\n  }\n\n  move (event) {\n    if (this._swiping && this._pointerId === event.pointerId) {\n      this._swiped = true\n\n      const coord = pointerEventCoord(event)\n      const delta = deltaCoord(this._startPos, coord)\n\n      this.swipePreviewCallback(delta)\n    }\n  }\n\n  cancel (event) {\n    if (!this._swiping || this._pointerId !== event.pointerId) {\n      return\n    }\n\n    this.swipeCancelCallback()\n  }\n\n  end (event) {\n    if (!this._swiping) {\n      return\n    }\n\n    if (this._pointerId !== event.pointerId) {\n      return\n    }\n\n    this._swiping = false\n\n    // movement too small\n    const coord = pointerEventCoord(event)\n    const delta = deltaCoord(this._startPos, coord)\n\n    const sign = (() => {\n      if (vectorLength(delta) < this.threshold()) {\n        return 0\n      }\n      // movement is opposite from direction\n      const isPositive = dotProduct(delta, this.direction) > 0\n\n      // movement perpendicular to direction is too much\n      const towardsDir = project(delta, this.direction)\n      const perpendicularDir = perpendicular(this.direction)\n      const towardsPerpendicular = project(delta, perpendicularDir)\n      if (\n        vectorLength(towardsDir) * this.perpendicularTolerance <\n          vectorLength(towardsPerpendicular)\n      ) {\n        return 0\n      }\n\n      return isPositive ? 1 : -1\n    })()\n\n    if (this._swiped) {\n      this.swipeEndCallback(sign)\n    }\n    this._reset()\n    // Only a mouse will fire click event when\n    // the end point is far from the starting point\n    // so for other kinds of pointers do not check\n    // whether we have swiped\n    if (vectorLength(delta) >= this.disableClickThreshold() && event.pointerType === 'mouse') {\n      this._preventNextClick = true\n    }\n  }\n\n  click (event) {\n    if (!this._preventNextClick) {\n      this.swipelessClickCallback()\n    }\n    this._reset()\n  }\n}\n\nconst GestureService = {\n  DIRECTION_LEFT,\n  DIRECTION_RIGHT,\n  DIRECTION_UP,\n  DIRECTION_DOWN,\n  swipeGesture,\n  beginSwipe,\n  updateSwipe,\n  SwipeAndClickGesture\n}\n\nexport default GestureService\n","import GestureService from '../../services/gesture_service/gesture_service'\n\n/**\n * props:\n *   direction: a vector that indicates the direction of the intended swipe\n *   threshold: the minimum distance in pixels the swipe has moved on `direction'\n *              for swipe-finished() to have a non-zero sign\n *   perpendicularTolerance: see gesture_service\n *\n * Events:\n *   preview-requested(offsets)\n *     Emitted when the pointer has moved.\n *     offsets: the offsets from the start of the swipe to the current cursor position\n *\n *   swipe-canceled()\n *     Emitted when the swipe has been canceled due to a pointercancel event.\n *\n *   swipe-finished(sign: 0|-1|1)\n *     Emitted when the swipe has finished.\n *     sign: if the swipe does not meet the threshold, 0\n *           if the swipe meets the threshold in the positive direction, 1\n *           if the swipe meets the threshold in the negative direction, -1\n *\n *   swipeless-clicked()\n *     Emitted when there is a click without swipe.\n *     This and swipe-finished() cannot be emitted for the same pointerup event.\n */\nconst SwipeClick = {\n  props: {\n    direction: {\n      type: Array\n    },\n    threshold: {\n      type: Function,\n      default: () => 30\n    },\n    perpendicularTolerance: {\n      type: Number,\n      default: 1.0\n    }\n  },\n  methods: {\n    handlePointerDown (event) {\n      this.$gesture.start(event)\n    },\n    handlePointerMove (event) {\n      this.$gesture.move(event)\n    },\n    handlePointerUp (event) {\n      this.$gesture.end(event)\n    },\n    handlePointerCancel (event) {\n      this.$gesture.cancel(event)\n    },\n    handleNativeClick (event) {\n      this.$gesture.click(event)\n    },\n    preview (offsets) {\n      this.$emit('preview-requested', offsets)\n    },\n    end (sign) {\n      this.$emit('swipe-finished', sign)\n    },\n    click () {\n      this.$emit('swipeless-clicked')\n    },\n    cancel () {\n      this.$emit('swipe-canceled')\n    }\n  },\n  created () {\n    this.$gesture = new GestureService.SwipeAndClickGesture({\n      direction: this.direction,\n      threshold: this.threshold,\n      perpendicularTolerance: this.perpendicularTolerance,\n      swipePreviewCallback: this.preview,\n      swipeEndCallback: this.end,\n      swipeCancelCallback: this.cancel,\n      swipelessClickCallback: this.click\n    })\n  }\n}\n\nexport default SwipeClick\n","import { render } from \"./swipe_click.vue?vue&type=template&id=4c0f684c\"\nimport script from \"./swipe_click.js?vue&type=script&lang=js\"\nexport * from \"./swipe_click.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    v-bind=\"$attrs\"\n    @pointerdown=\"handlePointerDown\"\n    @pointermove=\"handlePointerMove\"\n    @pointerup=\"handlePointerUp\"\n    @pointercancel=\"handlePointerCancel\"\n    @click=\"handleNativeClick\"\n  >\n    <slot />\n  </div>\n</template>\n\n<script src=\"./swipe_click.js\"></script>\n","import StillImage from '../still-image/still-image.vue'\nimport VideoAttachment from '../video_attachment/video_attachment.vue'\nimport Modal from '../modal/modal.vue'\nimport PinchZoom from '../pinch_zoom/pinch_zoom.vue'\nimport SwipeClick from '../swipe_click/swipe_click.vue'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport Flash from 'src/components/flash/flash.vue'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faChevronLeft,\n  faChevronRight,\n  faCircleNotch,\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faChevronLeft,\n  faChevronRight,\n  faCircleNotch,\n  faTimes\n)\n\nconst MediaModal = {\n  components: {\n    StillImage,\n    VideoAttachment,\n    PinchZoom,\n    SwipeClick,\n    Modal,\n    Flash\n  },\n  data () {\n    return {\n      loading: false,\n      swipeDirection: GestureService.DIRECTION_LEFT,\n      swipeThreshold: () => {\n        const considerableMoveRatio = 1 / 4\n        return window.innerWidth * considerableMoveRatio\n      },\n      pinchZoomMinScale: 1,\n      pinchZoomScaleResetLimit: 1.2\n    }\n  },\n  computed: {\n    showing () {\n      return this.$store.state.mediaViewer.activated\n    },\n    media () {\n      return this.$store.state.mediaViewer.media\n    },\n    description () {\n      return this.currentMedia.description\n    },\n    currentIndex () {\n      return this.$store.state.mediaViewer.currentIndex\n    },\n    currentMedia () {\n      return this.media[this.currentIndex]\n    },\n    canNavigate () {\n      return this.media.length > 1\n    },\n    type () {\n      return this.currentMedia ? this.getType(this.currentMedia) : null\n    }\n  },\n  methods: {\n    getType (media) {\n      return fileTypeService.fileType(media.mimetype)\n    },\n    hide () {\n      // HACK: Closing immediately via a touch will cause the click\n      // to be processed on the content below the overlay\n      const transitionTime = 100 // ms\n      setTimeout(() => {\n        this.$store.dispatch('closeMediaViewer')\n      }, transitionTime)\n    },\n    hideIfNotSwiped (event) {\n      // If we have swiped over SwipeClick, do not trigger hide\n      const comp = this.$refs.swipeClick\n      if (!comp) {\n        this.hide()\n      } else {\n        comp.$gesture.click(event)\n      }\n    },\n    goPrev () {\n      if (this.canNavigate) {\n        const prevIndex = this.currentIndex === 0 ? this.media.length - 1 : (this.currentIndex - 1)\n        const newMedia = this.media[prevIndex]\n        if (this.getType(newMedia) === 'image') {\n          this.loading = true\n        }\n        this.$store.dispatch('setCurrentMedia', newMedia)\n      }\n    },\n    goNext () {\n      if (this.canNavigate) {\n        const nextIndex = this.currentIndex === this.media.length - 1 ? 0 : (this.currentIndex + 1)\n        const newMedia = this.media[nextIndex]\n        if (this.getType(newMedia) === 'image') {\n          this.loading = true\n        }\n        this.$store.dispatch('setCurrentMedia', newMedia)\n      }\n    },\n    onImageLoaded () {\n      this.loading = false\n    },\n    handleSwipePreview (offsets) {\n      this.$refs.pinchZoom.setTransform({ scale: 1, x: offsets[0], y: 0 })\n    },\n    handleSwipeEnd (sign) {\n      this.$refs.pinchZoom.setTransform({ scale: 1, x: 0, y: 0 })\n      if (sign > 0) {\n        this.goNext()\n      } else if (sign < 0) {\n        this.goPrev()\n      }\n    },\n    handleKeyupEvent (e) {\n      if (this.showing && e.keyCode === 27) { // escape\n        this.hide()\n      }\n    },\n    handleKeydownEvent (e) {\n      if (!this.showing) {\n        return\n      }\n\n      if (e.keyCode === 39) { // arrow right\n        this.goNext()\n      } else if (e.keyCode === 37) { // arrow left\n        this.goPrev()\n      }\n    }\n  },\n  mounted () {\n    window.addEventListener('popstate', this.hide)\n    document.addEventListener('keyup', this.handleKeyupEvent)\n    document.addEventListener('keydown', this.handleKeydownEvent)\n  },\n  unmounted () {\n    window.removeEventListener('popstate', this.hide)\n    document.removeEventListener('keyup', this.handleKeyupEvent)\n    document.removeEventListener('keydown', this.handleKeydownEvent)\n  }\n}\n\nexport default MediaModal\n","import { render } from \"./media_modal.vue?vue&type=template&id=85a073e6\"\nimport script from \"./media_modal.js?vue&type=script&lang=js\"\nexport * from \"./media_modal.js?vue&type=script&lang=js\"\n\nimport \"./media_modal.vue?vue&type=style&index=0&id=85a073e6&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    class=\"side-drawer-container\"\n    :class=\"{ 'side-drawer-container-closed': closed, 'side-drawer-container-open': !closed }\"\n  >\n    <div\n      class=\"side-drawer-darken\"\n      :class=\"{ 'side-drawer-darken-closed': closed}\"\n    />\n    <div\n      class=\"side-drawer\"\n      :class=\"{'side-drawer-closed': closed}\"\n      @touchstart=\"touchStart\"\n      @touchmove=\"touchMove\"\n    >\n      <div\n        class=\"side-drawer-heading\"\n        @click=\"toggleDrawer\"\n      >\n        <UserCard\n          v-if=\"currentUser\"\n          :user-id=\"currentUser.id\"\n          :hide-bio=\"true\"\n        />\n        <div\n          v-else\n          class=\"side-drawer-logo-wrapper\"\n        >\n          <img :src=\"logo\">\n          <span v-if=\"!hideSitename\">{{ sitename }}</span>\n        </div>\n      </div>\n      <ul>\n        <li\n          v-if=\"!currentUser\"\n          @click=\"toggleDrawer\"\n        >\n          <router-link :to=\"{ name: 'login' }\">\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"sign-in-alt\"\n            /> {{ $t(\"login.login\") }}\n          </router-link>\n        </li>\n        <li\n          v-if=\"currentUser || !privateMode\"\n          @click=\"toggleDrawer\"\n        >\n          <router-link :to=\"{ name: timelinesRoute }\">\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"home\"\n            /> {{ $t(\"nav.timelines\") }}\n          </router-link>\n        </li>\n        <li\n          v-if=\"currentUser && pleromaChatMessagesAvailable\"\n          @click=\"toggleDrawer\"\n        >\n          <router-link\n            :to=\"{ name: 'chats', params: { username: currentUser.screen_name } }\"\n            style=\"position: relative\"\n          >\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"comments\"\n            /> {{ $t(\"nav.chats\") }}\n            <span\n              v-if=\"unreadChatCount\"\n              class=\"badge badge-notification\"\n            >\n              {{ unreadChatCount }}\n            </span>\n          </router-link>\n        </li>\n      </ul>\n      <ul v-if=\"currentUser\">\n        <li @click=\"toggleDrawer\">\n          <router-link :to=\"{ name: 'interactions', params: { username: currentUser.screen_name } }\">\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"bell\"\n            /> {{ $t(\"nav.interactions\") }}\n          </router-link>\n        </li>\n        <li\n          v-if=\"currentUser.locked\"\n          @click=\"toggleDrawer\"\n        >\n          <router-link to=\"/friend-requests\">\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"user-plus\"\n            /> {{ $t(\"nav.friend_requests\") }}\n            <span\n              v-if=\"followRequestCount > 0\"\n              class=\"badge badge-notification\"\n            >\n              {{ followRequestCount }}\n            </span>\n          </router-link>\n        </li>\n        <li\n          v-if=\"shout\"\n          @click=\"toggleDrawer\"\n        >\n          <router-link :to=\"{ name: 'shout-panel' }\">\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"bullhorn\"\n            /> {{ $t(\"shoutbox.title\") }}\n          </router-link>\n        </li>\n      </ul>\n      <ul>\n        <li\n          v-if=\"currentUser || !privateMode\"\n          @click=\"toggleDrawer\"\n        >\n          <router-link :to=\"{ name: 'search' }\">\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"search\"\n            /> {{ $t(\"nav.search\") }}\n          </router-link>\n        </li>\n        <li\n          v-if=\"currentUser && suggestionsEnabled\"\n          @click=\"toggleDrawer\"\n        >\n          <router-link :to=\"{ name: 'who-to-follow' }\">\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"user-plus\"\n            /> {{ $t(\"nav.who_to_follow\") }}\n          </router-link>\n        </li>\n        <li @click=\"toggleDrawer\">\n          <button\n            class=\"button-unstyled -link -fullwidth\"\n            @click=\"openSettingsModal\"\n          >\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"cog\"\n            /> {{ $t(\"settings.settings\") }}\n          </button>\n        </li>\n        <li @click=\"toggleDrawer\">\n          <router-link :to=\"{ name: 'about'}\">\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"info-circle\"\n            /> {{ $t(\"nav.about\") }}\n          </router-link>\n        </li>\n        <li\n          v-if=\"currentUser && currentUser.role === 'admin'\"\n          @click=\"toggleDrawer\"\n        >\n          <a\n            href=\"/pleroma/admin/#/login-pleroma\"\n            target=\"_blank\"\n          >\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"tachometer-alt\"\n            /> {{ $t(\"nav.administration\") }}\n          </a>\n        </li>\n        <li\n          v-if=\"currentUser\"\n          @click=\"toggleDrawer\"\n        >\n          <button\n            class=\"button-unstyled -link -fullwidth\"\n            @click=\"doLogout\"\n          >\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"sign-out-alt\"\n            /> {{ $t(\"login.logout\") }}\n          </button>\n        </li>\n      </ul>\n    </div>\n    <div\n      class=\"side-drawer-click-outside\"\n      :class=\"{'side-drawer-click-outside-closed': closed}\"\n      @click.stop.prevent=\"toggleDrawer\"\n    />\n  </div>\n</template>\n\n<script src=\"./side_drawer.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.side-drawer-container {\n  position: fixed;\n  z-index: 1000;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  display: flex;\n  align-items: stretch;\n  transition-duration: 0s;\n  transition-property: transform;\n}\n\n.side-drawer-container-open {\n  transform: translate(0%);\n}\n\n.side-drawer-container-closed {\n  transition-delay: 0.35s;\n  transform: translate(-100%);\n}\n\n.side-drawer-darken {\n  top: 0;\n  left: 0;\n  width: 100vw;\n  height: 100vh;\n  position: fixed;\n  z-index: -1;\n  transition: 0.35s;\n  transition-property: background-color;\n  background-color: rgba(0, 0, 0, 0.5);\n}\n\n.side-drawer-darken-closed {\n  background-color: rgba(0, 0, 0, 0);\n}\n\n.side-drawer-click-outside {\n  flex: 1 1 100%;\n}\n\n.side-drawer {\n  overflow-x: hidden;\n  transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n  transition: 0.35s;\n  transition-property: transform;\n  margin: 0 0 0 -100px;\n  padding: 0 0 1em 100px;\n  width: 80%;\n  max-width: 20em;\n  flex: 0 0 80%;\n  box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.6);\n  box-shadow: var(--panelShadow);\n  background-color: $fallback--bg;\n  background-color: var(--popover, $fallback--bg);\n  color: $fallback--link;\n  color: var(--popoverText, $fallback--link);\n  --faint: var(--popoverFaintText, $fallback--faint);\n  --faintLink: var(--popoverFaintLink, $fallback--faint);\n  --lightText: var(--popoverLightText, $fallback--lightText);\n  --icon: var(--popoverIcon, $fallback--icon);\n\n  .badge {\n    margin-left: 10px;\n  }\n}\n\n.side-drawer-logo-wrapper {\n  display: flex;\n  align-items: center;\n  padding: 0.85em;\n\n  img {\n    flex: none;\n    height: 50px;\n    margin-right: 0.85em;\n  }\n\n  span {\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n}\n\n.side-drawer-click-outside-closed {\n  flex: 0 0 0;\n}\n\n.side-drawer-closed {\n  transform: translate(-100%);\n}\n\n.side-drawer-heading {\n  background: transparent;\n  flex-direction: column;\n  align-items: stretch;\n  display: flex;\n  padding: 0;\n  margin: 0;\n}\n\n.side-drawer ul {\n  list-style: none;\n  margin: 0;\n  padding: 0;\n\n  border-bottom: 1px solid;\n  border-color: $fallback--border;\n  border-color: var(--border, $fallback--border);\n}\n\n.side-drawer ul:last-child {\n  border: 0;\n}\n\n.side-drawer li {\n  padding: 0;\n\n  a, button {\n    box-sizing: border-box;\n    display: block;\n    height: 3em;\n    line-height: 3em;\n    padding: 0 0.7em;\n\n    &:hover {\n      background-color: $fallback--lightBg;\n      background-color: var(--selectedMenuPopover, $fallback--lightBg);\n      color: $fallback--text;\n      color: var(--selectedMenuPopoverText, $fallback--text);\n      --faint: var(--selectedMenuPopoverFaintText, $fallback--faint);\n      --faintLink: var(--selectedMenuPopoverFaintLink, $fallback--faint);\n      --lightText: var(--selectedMenuPopoverLightText, $fallback--lightText);\n      --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n    }\n  }\n}\n</style>\n","import { mapState, mapGetters } from 'vuex'\nimport UserCard from '../user_card/user_card.vue'\nimport { unseenNotificationsFromStore } from '../../services/notification_utils/notification_utils'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faSignInAlt,\n  faSignOutAlt,\n  faHome,\n  faComments,\n  faBell,\n  faUserPlus,\n  faBullhorn,\n  faSearch,\n  faTachometerAlt,\n  faCog,\n  faInfoCircle\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faSignInAlt,\n  faSignOutAlt,\n  faHome,\n  faComments,\n  faBell,\n  faUserPlus,\n  faBullhorn,\n  faSearch,\n  faTachometerAlt,\n  faCog,\n  faInfoCircle\n)\n\nconst SideDrawer = {\n  props: [ 'logout' ],\n  data: () => ({\n    closed: true,\n    closeGesture: undefined\n  }),\n  created () {\n    this.closeGesture = GestureService.swipeGesture(GestureService.DIRECTION_LEFT, this.toggleDrawer)\n\n    if (this.currentUser && this.currentUser.locked) {\n      this.$store.dispatch('startFetchingFollowRequests')\n    }\n  },\n  components: { UserCard },\n  computed: {\n    currentUser () {\n      return this.$store.state.users.currentUser\n    },\n    shout () { return this.$store.state.shout.joined },\n    unseenNotifications () {\n      return unseenNotificationsFromStore(this.$store)\n    },\n    unseenNotificationsCount () {\n      return this.unseenNotifications.length\n    },\n    suggestionsEnabled () {\n      return this.$store.state.instance.suggestionsEnabled\n    },\n    logo () {\n      return this.$store.state.instance.logo\n    },\n    hideSitename () {\n      return this.$store.state.instance.hideSitename\n    },\n    sitename () {\n      return this.$store.state.instance.name\n    },\n    followRequestCount () {\n      return this.$store.state.api.followRequests.length\n    },\n    privateMode () {\n      return this.$store.state.instance.private\n    },\n    federating () {\n      return this.$store.state.instance.federating\n    },\n    timelinesRoute () {\n      if (this.$store.state.interface.lastTimeline) {\n        return this.$store.state.interface.lastTimeline\n      }\n      return this.currentUser ? 'friends' : 'public-timeline'\n    },\n    ...mapState({\n      pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable\n    }),\n    ...mapGetters(['unreadChatCount'])\n  },\n  methods: {\n    toggleDrawer () {\n      this.closed = !this.closed\n    },\n    doLogout () {\n      this.logout()\n      this.toggleDrawer()\n    },\n    touchStart (e) {\n      GestureService.beginSwipe(e, this.closeGesture)\n    },\n    touchMove (e) {\n      GestureService.updateSwipe(e, this.closeGesture)\n    },\n    openSettingsModal () {\n      this.$store.dispatch('openSettingsModal')\n    }\n  }\n}\n\nexport default SideDrawer\n","import { render } from \"./side_drawer.vue?vue&type=template&id=4a50df4d\"\nimport script from \"./side_drawer.js?vue&type=script&lang=js\"\nexport * from \"./side_drawer.js?vue&type=script&lang=js\"\n\nimport \"./side_drawer.vue?vue&type=style&index=0&id=4a50df4d&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { debounce } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faPen\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faPen\n)\n\nconst HIDDEN_FOR_PAGES = new Set([\n  'chats',\n  'chat'\n])\n\nconst MobilePostStatusButton = {\n  data () {\n    return {\n      hidden: false,\n      scrollingDown: false,\n      inputActive: false,\n      oldScrollPos: 0,\n      amountScrolled: 0\n    }\n  },\n  created () {\n    if (this.autohideFloatingPostButton) {\n      this.activateFloatingPostButtonAutohide()\n    }\n    window.addEventListener('resize', this.handleOSK)\n  },\n  unmounted () {\n    if (this.autohideFloatingPostButton) {\n      this.deactivateFloatingPostButtonAutohide()\n    }\n    window.removeEventListener('resize', this.handleOSK)\n  },\n  computed: {\n    isLoggedIn () {\n      return !!this.$store.state.users.currentUser\n    },\n    isHidden () {\n      if (HIDDEN_FOR_PAGES.has(this.$route.name)) { return true }\n\n      return this.autohideFloatingPostButton && (this.hidden || this.inputActive)\n    },\n    isPersistent () {\n      return !!this.$store.getters.mergedConfig.alwaysShowNewPostButton\n    },\n    autohideFloatingPostButton () {\n      return !!this.$store.getters.mergedConfig.autohideFloatingPostButton\n    }\n  },\n  watch: {\n    autohideFloatingPostButton: function (isEnabled) {\n      if (isEnabled) {\n        this.activateFloatingPostButtonAutohide()\n      } else {\n        this.deactivateFloatingPostButtonAutohide()\n      }\n    }\n  },\n  methods: {\n    activateFloatingPostButtonAutohide () {\n      window.addEventListener('scroll', this.handleScrollStart)\n      window.addEventListener('scroll', this.handleScrollEnd)\n    },\n    deactivateFloatingPostButtonAutohide () {\n      window.removeEventListener('scroll', this.handleScrollStart)\n      window.removeEventListener('scroll', this.handleScrollEnd)\n    },\n    openPostForm () {\n      this.$store.dispatch('openPostStatusModal')\n    },\n    handleOSK () {\n      // This is a big hack: we're guessing from changed window sizes if the\n      // on-screen keyboard is active or not. This is only really important\n      // for phones in portrait mode and it's more important to show the button\n      // in normal scenarios on all phones, than it is to hide it when the\n      // keyboard is active.\n      // Guesswork based on https://www.mydevice.io/#compare-devices\n\n      // for example, iphone 4 and android phones from the same time period\n      const smallPhone = window.innerWidth < 350\n      const smallPhoneKbOpen = smallPhone && window.innerHeight < 345\n\n      const biggerPhone = !smallPhone && window.innerWidth < 450\n      const biggerPhoneKbOpen = biggerPhone && window.innerHeight < 560\n      if (smallPhoneKbOpen || biggerPhoneKbOpen) {\n        this.inputActive = true\n      } else {\n        this.inputActive = false\n      }\n    },\n    handleScrollStart: debounce(function () {\n      if (window.scrollY > this.oldScrollPos) {\n        this.hidden = true\n      } else {\n        this.hidden = false\n      }\n      this.oldScrollPos = window.scrollY\n    }, 100, { leading: true, trailing: false }),\n\n    handleScrollEnd: debounce(function () {\n      this.hidden = false\n      this.oldScrollPos = window.scrollY\n    }, 100, { leading: false, trailing: true })\n  }\n}\n\nexport default MobilePostStatusButton\n","import { render } from \"./mobile_post_status_button.vue?vue&type=template&id=9a586640\"\nimport script from \"./mobile_post_status_button.js?vue&type=script&lang=js\"\nexport * from \"./mobile_post_status_button.js?vue&type=script&lang=js\"\n\nimport \"./mobile_post_status_button.vue?vue&type=style&index=0&id=9a586640&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <button\n    v-if=\"isLoggedIn\"\n    class=\"MobilePostButton button-default new-status-button\"\n    :class=\"{ 'hidden': isHidden, 'always-show': isPersistent }\"\n    @click=\"openPostForm\"\n  >\n    <FAIcon icon=\"pen\" />\n  </button>\n</template>\n\n<script src=\"./mobile_post_status_button.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.MobilePostButton {\n  &.button-default {\n    width: 5em;\n    height: 5em;\n    border-radius: 100%;\n    position: fixed;\n    bottom: 1.5em;\n    right: 1.5em;\n    // TODO: this needs its own color, it has to stand out enough and link color\n    // is not very optimal for this particular use.\n    background-color: $fallback--fg;\n    background-color: var(--btn, $fallback--fg);\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3), 0px 4px 6px rgba(0, 0, 0, 0.3);\n    z-index: 10;\n\n    transition: 0.35s transform;\n    transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n  }\n\n  &.hidden {\n    transform: translateY(150%);\n  }\n\n  svg {\n    font-size: 1.5em;\n    color: $fallback--text;\n    color: var(--text, $fallback--text);\n  }\n}\n\n@media all and (min-width: 801px) {\n  .new-status-button:not(.always-show) {\n    display: none;\n  }\n}\n\n</style>\n","<template>\n  <div\n    class=\"MobileNav\"\n  >\n    <nav\n      id=\"nav\"\n      class=\"mobile-nav\"\n      @click=\"scrollToTop()\"\n    >\n      <div class=\"item\">\n        <button\n          class=\"button-unstyled mobile-nav-button\"\n          @click.stop.prevent=\"toggleMobileSidebar()\"\n        >\n          <FAIcon\n            class=\"fa-scale-110 fa-old-padding\"\n            icon=\"bars\"\n          />\n          <div\n            v-if=\"unreadChatCount\"\n            class=\"alert-dot\"\n          />\n        </button>\n        <router-link\n          v-if=\"!hideSitename\"\n          class=\"site-name\"\n          :to=\"{ name: 'root' }\"\n          active-class=\"home\"\n        >\n          {{ sitename }}\n        </router-link>\n      </div>\n      <div class=\"item right\">\n        <button\n          v-if=\"currentUser\"\n          class=\"button-unstyled mobile-nav-button\"\n          @click.stop.prevent=\"openMobileNotifications()\"\n        >\n          <FAIcon\n            class=\"fa-scale-110 fa-old-padding\"\n            icon=\"bell\"\n          />\n          <div\n            v-if=\"unseenNotificationsCount\"\n            class=\"alert-dot\"\n          />\n        </button>\n      </div>\n    </nav>\n    <div\n      v-if=\"currentUser\"\n      class=\"mobile-notifications-drawer\"\n      :class=\"{ '-closed': !notificationsOpen }\"\n      @touchstart.stop=\"notificationsTouchStart\"\n      @touchmove.stop=\"notificationsTouchMove\"\n    >\n      <div class=\"mobile-notifications-header\">\n        <span class=\"title\">{{ $t('notifications.notifications') }}</span>\n        <a\n          class=\"mobile-nav-button\"\n          @click.stop.prevent=\"closeMobileNotifications()\"\n        >\n          <FAIcon\n            class=\"fa-scale-110 fa-old-padding\"\n            icon=\"times\"\n          />\n        </a>\n      </div>\n      <div\n        class=\"mobile-notifications\"\n        id=\"mobile-notifications\"\n        @scroll=\"onScroll\"\n      >\n      </div>\n    </div>\n    <SideDrawer\n      ref=\"sideDrawer\"\n      :logout=\"logout\"\n    />\n  </div>\n</template>\n\n<script src=\"./mobile_nav.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.MobileNav {\n  .mobile-nav {\n    display: grid;\n    line-height: var(--navbar-height);\n    grid-template-rows: 50px;\n    grid-template-columns: 2fr auto;\n    width: 100%;\n    box-sizing: border-box;\n    a {\n      color: var(--topBarLink, $fallback--link);\n    }\n  }\n\n  .mobile-inner-nav {\n    width: 100%;\n    display: flex;\n    align-items: center;\n  }\n\n  .mobile-nav-button {\n    display: inline-block;\n    text-align: center;\n    padding: 0 1em;\n    position: relative;\n    cursor: pointer;\n  }\n\n  .site-name {\n    padding: 0 .3em;\n    display: inline-block;\n  }\n\n  .item {\n    /* moslty just to get rid of extra whitespaces */\n    display: flex;\n  }\n\n  .alert-dot {\n    border-radius: 100%;\n    height: 8px;\n    width: 8px;\n    position: absolute;\n    left: calc(50% - 4px);\n    top: calc(50% - 4px);\n    margin-left: 6px;\n    margin-top: -6px;\n    background-color: $fallback--cRed;\n    background-color: var(--badgeNotification, $fallback--cRed);\n  }\n\n  .mobile-notifications-drawer {\n    width: 100%;\n    height: 100vh;\n    overflow-x: hidden;\n    position: fixed;\n    top: 0;\n    left: 0;\n    box-shadow: 1px 1px 4px rgba(0,0,0,.6);\n    box-shadow: var(--panelShadow);\n    transition-property: transform;\n    transition-duration: 0.25s;\n    transform: translateX(0);\n    z-index: 1001;\n    -webkit-overflow-scrolling: touch;\n\n    &.-closed {\n      transform: translateX(100%);\n      box-shadow: none;\n    }\n  }\n\n  .mobile-notifications-header {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    z-index: 1;\n    width: 100%;\n    height: 50px;\n    line-height: 50px;\n    position: absolute;\n    color: var(--topBarText);\n    background-color: $fallback--fg;\n    background-color: var(--topBar, $fallback--fg);\n    box-shadow: 0px 0px 4px rgba(0,0,0,.6);\n    box-shadow: var(--topBarShadow);\n\n    .title {\n      font-size: 1.3em;\n      margin-left: 0.6em;\n    }\n  }\n\n  .mobile-notifications {\n    margin-top: 50px;\n    width: 100vw;\n    height: calc(100vh - var(--navbar-height));\n    overflow-x: hidden;\n    overflow-y: scroll;\n\n    color: $fallback--text;\n    color: var(--text, $fallback--text);\n    background-color: $fallback--bg;\n    background-color: var(--bg, $fallback--bg);\n\n    .notifications {\n      padding: 0;\n      border-radius: 0;\n      box-shadow: none;\n      .panel {\n        border-radius: 0;\n        margin: 0;\n        box-shadow: none;\n      }\n      .panel:after {\n        border-radius: 0;\n      }\n      .panel .panel-heading {\n        border-radius: 0;\n        box-shadow: none;\n      }\n    }\n  }\n}\n\n</style>\n","import SideDrawer from '../side_drawer/side_drawer.vue'\nimport Notifications from '../notifications/notifications.vue'\nimport { unseenNotificationsFromStore } from '../../services/notification_utils/notification_utils'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes,\n  faBell,\n  faBars\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes,\n  faBell,\n  faBars\n)\n\nconst MobileNav = {\n  components: {\n    SideDrawer,\n    Notifications\n  },\n  data: () => ({\n    notificationsCloseGesture: undefined,\n    notificationsOpen: false\n  }),\n  created () {\n    this.notificationsCloseGesture = GestureService.swipeGesture(\n      GestureService.DIRECTION_RIGHT,\n      this.closeMobileNotifications,\n      50\n    )\n  },\n  computed: {\n    currentUser () {\n      return this.$store.state.users.currentUser\n    },\n    unseenNotifications () {\n      return unseenNotificationsFromStore(this.$store)\n    },\n    unseenNotificationsCount () {\n      return this.unseenNotifications.length\n    },\n    hideSitename () { return this.$store.state.instance.hideSitename },\n    sitename () { return this.$store.state.instance.name },\n    isChat () {\n      return this.$route.name === 'chat'\n    },\n    ...mapGetters(['unreadChatCount'])\n  },\n  methods: {\n    toggleMobileSidebar () {\n      this.$refs.sideDrawer.toggleDrawer()\n    },\n    openMobileNotifications () {\n      this.notificationsOpen = true\n    },\n    closeMobileNotifications () {\n      if (this.notificationsOpen) {\n        // make sure to mark notifs seen only when the notifs were open and not\n        // from close-calls.\n        this.notificationsOpen = false\n        this.markNotificationsAsSeen()\n      }\n    },\n    notificationsTouchStart (e) {\n      GestureService.beginSwipe(e, this.notificationsCloseGesture)\n    },\n    notificationsTouchMove (e) {\n      GestureService.updateSwipe(e, this.notificationsCloseGesture)\n    },\n    scrollToTop () {\n      window.scrollTo(0, 0)\n    },\n    logout () {\n      this.$router.replace('/main/public')\n      this.$store.dispatch('logout')\n    },\n    markNotificationsAsSeen () {\n      // this.$refs.notifications.markAsSeen()\n      this.$store.dispatch('markNotificationsAsSeen')\n    },\n    onScroll ({ target: { scrollTop, clientHeight, scrollHeight } }) {\n      if (scrollTop + clientHeight >= scrollHeight) {\n        this.$refs.notifications.fetchOlderNotifications()\n      }\n    }\n  },\n  watch: {\n    $route () {\n      // handles closing notificaitons when you press any router-link on the\n      // notifications.\n      this.closeMobileNotifications()\n    }\n  }\n}\n\nexport default MobileNav\n","import { render } from \"./mobile_nav.vue?vue&type=template&id=cab8ee52\"\nimport script from \"./mobile_nav.js?vue&type=script&lang=js\"\nexport * from \"./mobile_nav.js?vue&type=script&lang=js\"\n\nimport \"./mobile_nav.vue?vue&type=style&index=0&id=cab8ee52&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <nav\n    id=\"nav\"\n    class=\"DesktopNav\"\n    :class=\"{ '-logoLeft': logoLeft }\"\n    @click=\"scrollToTop()\"\n  >\n    <div class=\"inner-nav\">\n      <div class=\"item sitename\">\n        <router-link\n          v-if=\"!hideSitename\"\n          class=\"site-name\"\n          :to=\"{ name: 'root' }\"\n          active-class=\"home\"\n        >\n          {{ sitename }}\n        </router-link>\n      </div>\n      <router-link\n        class=\"logo\"\n        :to=\"{ name: 'root' }\"\n        :style=\"logoBgStyle\"\n      >\n        <div\n          class=\"mask\"\n          :style=\"logoMaskStyle\"\n        />\n        <img\n          :src=\"logo\"\n          :style=\"logoStyle\"\n        >\n      </router-link>\n      <div class=\"item right actions\">\n        <search-bar\n          v-if=\"currentUser || !privateMode\"\n          @toggled=\"onSearchBarToggled\"\n          @click.stop\n        />\n        <button\n          class=\"button-unstyled nav-icon\"\n          @click.stop=\"openSettingsModal\"\n        >\n          <FAIcon\n            fixed-width\n            class=\"fa-scale-110 fa-old-padding\"\n            icon=\"cog\"\n            :title=\"$t('nav.preferences')\"\n          />\n        </button>\n        <a\n          v-if=\"currentUser && currentUser.role === 'admin'\"\n          href=\"/pleroma/admin/#/login-pleroma\"\n          class=\"nav-icon\"\n          target=\"_blank\"\n          @click.stop\n        >\n          <FAIcon\n            fixed-width\n            class=\"fa-scale-110 fa-old-padding\"\n            icon=\"tachometer-alt\"\n            :title=\"$t('nav.administration')\"\n          />\n        </a>\n        <button\n          v-if=\"currentUser\"\n          class=\"button-unstyled nav-icon\"\n          @click.prevent=\"logout\"\n        >\n          <FAIcon\n            fixed-width\n            class=\"fa-scale-110 fa-old-padding\"\n            icon=\"sign-out-alt\"\n            :title=\"$t('login.logout')\"\n          />\n        </button>\n      </div>\n    </div>\n  </nav>\n</template>\n<script src=\"./desktop_nav.js\"></script>\n\n<style src=\"./desktop_nav.scss\" lang=\"scss\"></style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes,\n  faSearch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes,\n  faSearch\n)\n\nconst SearchBar = {\n  data: () => ({\n    searchTerm: undefined,\n    hidden: true,\n    error: false\n  }),\n  watch: {\n    '$route': function (route) {\n      if (route.name === 'search') {\n        this.searchTerm = route.query.query\n      }\n    }\n  },\n  methods: {\n    find (searchTerm) {\n      this.$router.push({ name: 'search', query: { query: searchTerm } })\n      this.$refs.searchInput.focus()\n    },\n    toggleHidden () {\n      this.hidden = !this.hidden\n      this.$emit('toggled', this.hidden)\n      this.$nextTick(() => {\n        if (!this.hidden) {\n          this.$refs.searchInput.focus()\n        }\n      })\n    }\n  }\n}\n\nexport default SearchBar\n","import { render } from \"./search_bar.vue?vue&type=template&id=105122b7\"\nimport script from \"./search_bar.js?vue&type=script&lang=js\"\nexport * from \"./search_bar.js?vue&type=script&lang=js\"\n\nimport \"./search_bar.vue?vue&type=style&index=0&id=105122b7&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    class=\"SearchBar\"\n    :class=\"{ '-expanded': !hidden }\"\n  >\n    <button\n      v-if=\"hidden\"\n      class=\"button-unstyled nav-icon\"\n      :title=\"$t('nav.search')\"\n      type=\"button\"\n      @click.prevent.stop=\"toggleHidden\"\n    >\n      <FAIcon\n        fixed-width\n        class=\"fa-scale-110 fa-old-padding\"\n        icon=\"search\"\n      />\n    </button>\n    <template v-else>\n      <input\n        id=\"search-bar-input\"\n        ref=\"searchInput\"\n        v-model=\"searchTerm\"\n        class=\"search-bar-input\"\n        :placeholder=\"$t('nav.search')\"\n        type=\"text\"\n        @keyup.enter=\"find(searchTerm)\"\n      >\n      <button\n        class=\"button-default search-button\"\n        type=\"submit\"\n        @click=\"find(searchTerm)\"\n      >\n        <FAIcon\n          fixed-width\n          icon=\"search\"\n        />\n      </button>\n      <button\n        class=\"button-unstyled cancel-search\"\n        type=\"button\"\n        @click.prevent.stop=\"toggleHidden\"\n      >\n        <FAIcon\n          fixed-width\n          icon=\"times\"\n          class=\"cancel-icon fa-scale-110 fa-old-padding\"\n        />\n      </button>\n    </template>\n  </div>\n</template>\n\n<script src=\"./search_bar.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.SearchBar {\n  display: inline-flex;\n  align-items: baseline;\n  vertical-align: baseline;\n  justify-content: flex-end;\n\n  &.-expanded {\n    width: 100%;\n  }\n\n  .search-bar-input,\n  .search-button {\n    height: 29px;\n  }\n\n  .search-bar-input {\n    flex: 1 0 auto;\n  }\n\n  .cancel-search {\n    height: 50px;\n  }\n\n  .cancel-icon {\n    color: $fallback--text;\n    color: var(--btnTopBarText, $fallback--text);\n  }\n}\n\n</style>\n","import SearchBar from 'components/search_bar/search_bar.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faSignInAlt,\n  faSignOutAlt,\n  faHome,\n  faComments,\n  faBell,\n  faUserPlus,\n  faBullhorn,\n  faSearch,\n  faTachometerAlt,\n  faCog,\n  faInfoCircle\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faSignInAlt,\n  faSignOutAlt,\n  faHome,\n  faComments,\n  faBell,\n  faUserPlus,\n  faBullhorn,\n  faSearch,\n  faTachometerAlt,\n  faCog,\n  faInfoCircle\n)\n\nexport default {\n  components: {\n    SearchBar\n  },\n  data: () => ({\n    searchBarHidden: true,\n    supportsMask: window.CSS && window.CSS.supports && (\n      window.CSS.supports('mask-size', 'contain') ||\n        window.CSS.supports('-webkit-mask-size', 'contain') ||\n        window.CSS.supports('-moz-mask-size', 'contain') ||\n        window.CSS.supports('-ms-mask-size', 'contain') ||\n        window.CSS.supports('-o-mask-size', 'contain')\n    )\n  }),\n  computed: {\n    enableMask () { return this.supportsMask && this.$store.state.instance.logoMask },\n    logoStyle () {\n      return {\n        'visibility': this.enableMask ? 'hidden' : 'visible'\n      }\n    },\n    logoMaskStyle () {\n      return this.enableMask ? {\n        'mask-image': `url(${this.$store.state.instance.logo})`\n      } : {\n        'background-color': this.enableMask ? '' : 'transparent'\n      }\n    },\n    logoBgStyle () {\n      return Object.assign({\n        'margin': `${this.$store.state.instance.logoMargin} 0`,\n        opacity: this.searchBarHidden ? 1 : 0\n      }, this.enableMask ? {} : {\n        'background-color': this.enableMask ? '' : 'transparent'\n      })\n    },\n    logo () { return this.$store.state.instance.logo },\n    sitename () { return this.$store.state.instance.name },\n    hideSitename () { return this.$store.state.instance.hideSitename },\n    logoLeft () { return this.$store.state.instance.logoLeft },\n    currentUser () { return this.$store.state.users.currentUser },\n    privateMode () { return this.$store.state.instance.private }\n  },\n  methods: {\n    scrollToTop () {\n      window.scrollTo(0, 0)\n    },\n    logout () {\n      this.$router.replace('/main/public')\n      this.$store.dispatch('logout')\n    },\n    onSearchBarToggled (hidden) {\n      this.searchBarHidden = hidden\n    },\n    openSettingsModal () {\n      this.$store.dispatch('openSettingsModal')\n    }\n  }\n}\n","import { render } from \"./desktop_nav.vue?vue&type=template&id=a81d722a\"\nimport script from \"./desktop_nav.js?vue&type=script&lang=js\"\nexport * from \"./desktop_nav.js?vue&type=script&lang=js\"\n\nimport \"./desktop_nav.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Modal\n    v-if=\"isOpen\"\n    @backdropClicked=\"closeModal\"\n  >\n    <div class=\"user-reporting-panel panel\">\n      <div class=\"panel-heading\">\n        <div class=\"title\">\n          {{ $t('user_reporting.title', [user.screen_name_ui]) }}\n        </div>\n      </div>\n      <div class=\"panel-body\">\n        <div class=\"user-reporting-panel-left\">\n          <div>\n            <p>{{ $t('user_reporting.add_comment_description') }}</p>\n            <textarea\n              v-model=\"comment\"\n              class=\"form-control\"\n              :placeholder=\"$t('user_reporting.additional_comments')\"\n              rows=\"1\"\n              @input=\"resize\"\n            />\n          </div>\n          <div v-if=\"!user.is_local\">\n            <p>{{ $t('user_reporting.forward_description') }}</p>\n            <Checkbox v-model=\"forward\">\n              {{ $t('user_reporting.forward_to', [remoteInstance]) }}\n            </Checkbox>\n          </div>\n          <div>\n            <button\n              class=\"btn button-default\"\n              :disabled=\"processing\"\n              @click=\"reportUser\"\n            >\n              {{ $t('user_reporting.submit') }}\n            </button>\n            <div\n              v-if=\"error\"\n              class=\"alert error\"\n            >\n              {{ $t('user_reporting.generic_error') }}\n            </div>\n          </div>\n        </div>\n        <div class=\"user-reporting-panel-right\">\n          <List :items=\"statuses\">\n            <template v-slot:item=\"{item}\">\n              <div class=\"status-fadein user-reporting-panel-sitem\">\n                <Status\n                  :in-conversation=\"false\"\n                  :focused=\"false\"\n                  :statusoid=\"item\"\n                />\n                <Checkbox\n                  :model-value=\"isChecked(item.id)\"\n                  @update:model-value=\"checked => toggleStatus(checked, item.id)\"\n                />\n              </div>\n            </template>\n          </List>\n        </div>\n      </div>\n    </div>\n  </Modal>\n</template>\n\n<script src=\"./user_reporting_modal.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.user-reporting-panel {\n  width: 90vw;\n  max-width: 700px;\n  min-height: 20vh;\n  max-height: 80vh;\n\n  .panel-body {\n    display: flex;\n    flex-direction: column-reverse;\n    border-top: 1px solid;\n    border-color: $fallback--border;\n    border-color: var(--border, $fallback--border);\n    overflow: hidden;\n  }\n\n  &-left {\n    padding: 1.1em 0.7em 0.7em;\n    line-height: var(--post-line-height);\n    box-sizing: border-box;\n\n    > div {\n      margin-bottom: 1em;\n\n      &:last-child {\n        margin-bottom: 0;\n      }\n    }\n\n    p {\n      margin-top: 0;\n    }\n\n    textarea.form-control {\n      line-height: 16px;\n      resize: none;\n      overflow: hidden;\n      transition: min-height 200ms 100ms;\n      min-height: 44px;\n      width: 100%;\n    }\n\n    .btn {\n      min-width: 10em;\n      padding: 0 2em;\n    }\n\n    .alert {\n      margin: 1em 0 0 0;\n      line-height: 1.3em;\n    }\n  }\n\n  &-right {\n    display: flex;\n    flex-direction: column;\n    overflow-y: auto;\n  }\n\n  &-sitem {\n    display: flex;\n    justify-content: space-between;\n\n    /* TODO cleanup this */\n    > .Status {\n      flex: 1;\n    }\n\n    > .checkbox {\n      margin: 0.75em;\n    }\n  }\n\n  @media all and (min-width: 801px) {\n    .panel-body {\n      flex-direction: row;\n    }\n\n    &-left {\n      width: 50%;\n      max-width: 320px;\n      border-right: 1px solid;\n      border-color: $fallback--border;\n      border-color: var(--border, $fallback--border);\n      padding: 1.1em;\n\n      > div {\n        margin-bottom: 2em;\n      }\n    }\n\n    &-right {\n      width: 50%;\n      flex: 1 1 auto;\n      margin-bottom: 12px;\n    }\n  }\n}\n</style>\n","\nimport Status from '../status/status.vue'\nimport List from '../list/list.vue'\nimport Checkbox from '../checkbox/checkbox.vue'\nimport Modal from '../modal/modal.vue'\n\nconst UserReportingModal = {\n  components: {\n    Status,\n    List,\n    Checkbox,\n    Modal\n  },\n  data () {\n    return {\n      comment: '',\n      forward: false,\n      statusIdsToReport: [],\n      processing: false,\n      error: false\n    }\n  },\n  computed: {\n    isLoggedIn () {\n      return !!this.$store.state.users.currentUser\n    },\n    isOpen () {\n      return this.isLoggedIn && this.$store.state.reports.modalActivated\n    },\n    userId () {\n      return this.$store.state.reports.userId\n    },\n    user () {\n      return this.$store.getters.findUser(this.userId)\n    },\n    remoteInstance () {\n      return !this.user.is_local && this.user.screen_name.substr(this.user.screen_name.indexOf('@') + 1)\n    },\n    statuses () {\n      return this.$store.state.reports.statuses\n    },\n    preTickedIds () {\n      return this.$store.state.reports.preTickedIds\n    }\n  },\n  watch: {\n    userId: 'resetState',\n    preTickedIds (newValue) {\n      this.statusIdsToReport = newValue\n    }\n  },\n  methods: {\n    resetState () {\n      // Reset state\n      this.comment = ''\n      this.forward = false\n      this.statusIdsToReport = this.preTickedIds\n      this.processing = false\n      this.error = false\n    },\n    closeModal () {\n      this.$store.dispatch('closeUserReportingModal')\n    },\n    reportUser () {\n      this.processing = true\n      this.error = false\n      const params = {\n        userId: this.userId,\n        comment: this.comment,\n        forward: this.forward,\n        statusIds: this.statusIdsToReport\n      }\n      this.$store.state.api.backendInteractor.reportUser({ ...params })\n        .then(() => {\n          this.processing = false\n          this.resetState()\n          this.closeModal()\n        })\n        .catch(() => {\n          this.processing = false\n          this.error = true\n        })\n    },\n    clearError () {\n      this.error = false\n    },\n    isChecked (statusId) {\n      return this.statusIdsToReport.indexOf(statusId) !== -1\n    },\n    toggleStatus (checked, statusId) {\n      if (checked === this.isChecked(statusId)) {\n        return\n      }\n\n      if (checked) {\n        this.statusIdsToReport.push(statusId)\n      } else {\n        this.statusIdsToReport.splice(this.statusIdsToReport.indexOf(statusId), 1)\n      }\n    },\n    resize (e) {\n      const target = e.target || e\n      if (!(target instanceof window.Element)) { return }\n      // Auto is needed to make textbox shrink when removing lines\n      target.style.height = 'auto'\n      target.style.height = `${target.scrollHeight}px`\n      if (target.value === '') {\n        target.style.height = null\n      }\n    }\n  }\n}\n\nexport default UserReportingModal\n","import { render } from \"./user_reporting_modal.vue?vue&type=template&id=116c0e28\"\nimport script from \"./user_reporting_modal.js?vue&type=script&lang=js\"\nexport * from \"./user_reporting_modal.js?vue&type=script&lang=js\"\n\nimport \"./user_reporting_modal.vue?vue&type=style&index=0&id=116c0e28&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Modal\n    v-if=\"isLoggedIn && !resettingForm\"\n    :is-open=\"modalActivated\"\n    class=\"post-form-modal-view\"\n    @backdropClicked=\"closeModal\"\n  >\n    <div class=\"post-form-modal-panel panel\">\n      <div class=\"panel-heading\">\n        {{ $t('post_status.new_status') }}\n      </div>\n      <PostStatusForm\n        class=\"panel-body\"\n        v-bind=\"params\"\n        @posted=\"closeModal\"\n      />\n    </div>\n  </Modal>\n</template>\n\n<script src=\"./post_status_modal.js\"></script>\n\n<style lang=\"scss\">\n.modal-view.post-form-modal-view {\n  align-items: flex-start;\n}\n\n.post-form-modal-panel {\n  flex-shrink: 0;\n  margin-top: 25%;\n  margin-bottom: 2em;\n  width: 100%;\n  max-width: 700px;\n\n  @media (orientation: landscape) {\n    margin-top: 8%;\n  }\n}\n</style>\n","import PostStatusForm from '../post_status_form/post_status_form.vue'\nimport Modal from '../modal/modal.vue'\nimport get from 'lodash/get'\n\nconst PostStatusModal = {\n  components: {\n    PostStatusForm,\n    Modal\n  },\n  data () {\n    return {\n      resettingForm: false\n    }\n  },\n  computed: {\n    isLoggedIn () {\n      return !!this.$store.state.users.currentUser\n    },\n    modalActivated () {\n      return this.$store.state.postStatus.modalActivated\n    },\n    isFormVisible () {\n      return this.isLoggedIn && !this.resettingForm && this.modalActivated\n    },\n    params () {\n      return this.$store.state.postStatus.params || {}\n    }\n  },\n  watch: {\n    params (newVal, oldVal) {\n      if (get(newVal, 'repliedUser.id') !== get(oldVal, 'repliedUser.id')) {\n        this.resettingForm = true\n        this.$nextTick(() => {\n          this.resettingForm = false\n        })\n      }\n    },\n    isFormVisible (val) {\n      if (val) {\n        this.$nextTick(() => this.$el && this.$el.querySelector('textarea').focus())\n      }\n    }\n  },\n  methods: {\n    closeModal () {\n      this.$store.dispatch('closePostStatusModal')\n    }\n  }\n}\n\nexport default PostStatusModal\n","import { render } from \"./post_status_modal.vue?vue&type=template&id=b6b8d3a2\"\nimport script from \"./post_status_modal.js?vue&type=script&lang=js\"\nexport * from \"./post_status_modal.js?vue&type=script&lang=js\"\n\nimport \"./post_status_modal.vue?vue&type=style&index=0&id=b6b8d3a2&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"global-notice-list\">\n    <div\n      v-for=\"(notice, index) in notices\"\n      :key=\"index\"\n      class=\"alert global-notice\"\n      :class=\"{ ['global-' + notice.level]: true }\"\n    >\n      <div class=\"notice-message\">\n        {{ $t(notice.messageKey, notice.messageArgs) }}\n      </div>\n      <button\n        class=\"button-unstyled close-notice\"\n        @click=\"closeNotice(notice)\"\n      >\n        <FAIcon\n          class=\"fa-scale-110 fa-old-padding\"\n          icon=\"times\"\n        />\n      </button>\n    </div>\n  </div>\n</template>\n\n<script src=\"./global_notice_list.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.global-notice-list {\n  position: fixed;\n  top: 50px;\n  width: 100%;\n  pointer-events: none;\n  z-index: 1001;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n\n  .global-notice {\n    pointer-events: auto;\n    text-align: center;\n    width: 40em;\n    max-width: calc(100% - 3em);\n    display: flex;\n    padding-left: 1.5em;\n    line-height: 2;\n    margin-bottom: 0.5em;\n\n    .notice-message {\n      flex: 1 1 100%;\n    }\n  }\n\n  .global-error {\n    background-color: var(--alertPopupError, $fallback--cRed);\n    color: var(--alertPopupErrorText, $fallback--text);\n\n    .svg-inline--fa {\n      color: var(--alertPopupErrorText, $fallback--text);\n    }\n  }\n\n  .global-warning {\n    background-color: var(--alertPopupWarning, $fallback--cOrange);\n    color: var(--alertPopupWarningText, $fallback--text);\n\n    .svg-inline--fa {\n      color: var(--alertPopupWarningText, $fallback--text);\n    }\n  }\n\n  .global-success {\n    background-color: var(--alertPopupSuccess, $fallback--cGreen);\n    color: var(--alertPopupSuccessText, $fallback--text);\n    .svg-inline--fa {\n      color: var(--alertPopupSuccessText, $fallback--text);\n    }\n  }\n\n  .global-info {\n    background-color: var(--alertPopupNeutral, $fallback--fg);\n    color: var(--alertPopupNeutralText, $fallback--text);\n    .svg-inline--fa {\n      color: var(--alertPopupNeutralText, $fallback--text);\n    }\n  }\n\n  .close-notice {\n    padding-right: 0.2em;\n    .svg-inline--fa:hover {\n      opacity: 0.6;\n    }\n  }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes\n)\n\nconst GlobalNoticeList = {\n  computed: {\n    notices () {\n      return this.$store.state.interface.globalNotices\n    }\n  },\n  methods: {\n    closeNotice (notice) {\n      this.$store.dispatch('removeGlobalNotice', notice)\n    }\n  }\n}\n\nexport default GlobalNoticeList\n","import { render } from \"./global_notice_list.vue?vue&type=template&id=5e034d4c\"\nimport script from \"./global_notice_list.js?vue&type=script&lang=js\"\nexport * from \"./global_notice_list.js?vue&type=script&lang=js\"\n\nimport \"./global_notice_list.vue?vue&type=style&index=0&id=5e034d4c&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import UserPanel from './components/user_panel/user_panel.vue'\nimport NavPanel from './components/nav_panel/nav_panel.vue'\nimport InstanceSpecificPanel from './components/instance_specific_panel/instance_specific_panel.vue'\nimport FeaturesPanel from './components/features_panel/features_panel.vue'\nimport WhoToFollowPanel from './components/who_to_follow_panel/who_to_follow_panel.vue'\nimport ShoutPanel from './components/shout_panel/shout_panel.vue'\nimport SettingsModal from './components/settings_modal/settings_modal.vue'\nimport MediaModal from './components/media_modal/media_modal.vue'\nimport SideDrawer from './components/side_drawer/side_drawer.vue'\nimport MobilePostStatusButton from './components/mobile_post_status_button/mobile_post_status_button.vue'\nimport MobileNav from './components/mobile_nav/mobile_nav.vue'\nimport DesktopNav from './components/desktop_nav/desktop_nav.vue'\nimport UserReportingModal from './components/user_reporting_modal/user_reporting_modal.vue'\nimport PostStatusModal from './components/post_status_modal/post_status_modal.vue'\nimport GlobalNoticeList from './components/global_notice_list/global_notice_list.vue'\nimport { windowWidth, windowHeight } from './services/window_utils/window_utils'\nimport { mapGetters } from 'vuex'\nimport { defineAsyncComponent } from 'vue'\n\nexport default {\n  name: 'app',\n  components: {\n    UserPanel,\n    NavPanel,\n    Notifications: defineAsyncComponent(() => import('./components/notifications/notifications.vue')),\n    InstanceSpecificPanel,\n    FeaturesPanel,\n    WhoToFollowPanel,\n    ShoutPanel,\n    MediaModal,\n    SideDrawer,\n    MobilePostStatusButton,\n    MobileNav,\n    DesktopNav,\n    SettingsModal,\n    UserReportingModal,\n    PostStatusModal,\n    GlobalNoticeList\n  },\n  data: () => ({\n    mobileActivePanel: 'timeline'\n  }),\n  created () {\n    // Load the locale from the storage\n    const val = this.$store.getters.mergedConfig.interfaceLanguage\n    this.$store.dispatch('setOption', { name: 'interfaceLanguage', value: val })\n    window.addEventListener('resize', this.updateMobileState)\n  },\n  unmounted () {\n    window.removeEventListener('resize', this.updateMobileState)\n  },\n  computed: {\n    classes () {\n      return [\n        {\n          '-reverse': this.reverseLayout,\n          '-no-sticky-headers': this.noSticky,\n          '-has-new-post-button': this.newPostButtonShown\n        },\n        '-' + this.layoutType\n      ]\n    },\n    currentUser () { return this.$store.state.users.currentUser },\n    userBackground () { return this.currentUser.background_image },\n    instanceBackground () {\n      return this.mergedConfig.hideInstanceWallpaper\n        ? null\n        : this.$store.state.instance.background\n    },\n    background () { return this.userBackground || this.instanceBackground },\n    bgStyle () {\n      if (this.background) {\n        return {\n          '--body-background-image': `url(${this.background})`\n        }\n      }\n    },\n    shout () { return this.$store.state.shout.joined },\n    suggestionsEnabled () { return this.$store.state.instance.suggestionsEnabled },\n    showInstanceSpecificPanel () {\n      return this.$store.state.instance.showInstanceSpecificPanel &&\n        !this.$store.getters.mergedConfig.hideISP &&\n        this.$store.state.instance.instanceSpecificPanelContent\n    },\n    isChats () {\n      return this.$route.name === 'chat' || this.$route.name === 'chats'\n    },\n    newPostButtonShown () {\n      if (this.isChats) return false\n      return this.$store.getters.mergedConfig.alwaysShowNewPostButton || this.layoutType === 'mobile'\n    },\n    showFeaturesPanel () { return this.$store.state.instance.showFeaturesPanel },\n    shoutboxPosition () {\n      return this.$store.getters.mergedConfig.alwaysShowNewPostButton || false\n    },\n    hideShoutbox () {\n      return this.$store.getters.mergedConfig.hideShoutbox\n    },\n    layoutType () { return this.$store.state.interface.layoutType },\n    privateMode () { return this.$store.state.instance.private },\n    reverseLayout () {\n      const { thirdColumnMode, sidebarRight: reverseSetting } = this.$store.getters.mergedConfig\n      if (this.layoutType !== 'wide') {\n        return reverseSetting\n      } else {\n        return thirdColumnMode === 'notifications' ? reverseSetting : !reverseSetting\n      }\n    },\n    noSticky () { return this.$store.getters.mergedConfig.disableStickyHeaders },\n    showScrollbars () { return this.$store.getters.mergedConfig.showScrollbars },\n    ...mapGetters(['mergedConfig'])\n  },\n  methods: {\n    updateMobileState () {\n      this.$store.dispatch('setLayoutWidth', windowWidth())\n      this.$store.dispatch('setLayoutHeight', windowHeight())\n    }\n  }\n}\n","import { render } from \"./App.vue?vue&type=template&id=6df91bcb\"\nimport script from \"./App.js?vue&type=script&lang=js\"\nexport * from \"./App.js?vue&type=script&lang=js\"\n\nimport \"./App.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div :class=\"['Timeline', classes.root]\">\n    <div :class=\"classes.header\">\n      <TimelineMenu v-if=\"!embedded\" />\n      <button\n        v-if=\"showLoadButton\"\n        class=\"button-default loadmore-button\"\n        @click.prevent=\"showNewStatuses\"\n      >\n        {{ loadButtonString }}\n      </button>\n      <div\n        v-else-if=\"!embedded\"\n        class=\"loadmore-text faint\"\n        @click.prevent\n      >\n        {{ $t('timeline.up_to_date') }}\n      </div>\n      <TimelineQuickSettings v-if=\"!embedded\" />\n    </div>\n    <div :class=\"classes.body\">\n      <div\n        ref=\"timeline\"\n        class=\"timeline\"\n      >\n        <conversation\n          v-for=\"statusId in filteredPinnedStatusIds\"\n          :key=\"statusId + '-pinned'\"\n          class=\"status-fadein\"\n          :status-id=\"statusId\"\n          :collapsable=\"true\"\n          :pinned-status-ids-object=\"pinnedStatusIdsObject\"\n          :in-profile=\"inProfile\"\n          :profile-user-id=\"userId\"\n        />\n        <conversation\n          v-for=\"status in filteredVisibleStatuses\"\n          :key=\"status.id\"\n          class=\"status-fadein\"\n          :status-id=\"status.id\"\n          :collapsable=\"true\"\n          :in-profile=\"inProfile\"\n          :profile-user-id=\"userId\"\n          :virtual-hidden=\"virtualScrollingEnabled && !statusesToDisplay.includes(status.id)\"\n        />\n      </div>\n    </div>\n    <div :class=\"classes.footer\">\n      <teleport :to=\"footerSlipgate\" :disabled=\"!embedded || !footerSlipgate\">\n        <div\n          v-if=\"count===0\"\n          class=\"new-status-notification text-center faint\"\n        >\n          {{ $t('timeline.no_statuses') }}\n        </div>\n        <div\n          v-else-if=\"bottomedOut\"\n          class=\"new-status-notification text-center faint\"\n        >\n          {{ $t('timeline.no_more_statuses') }}\n        </div>\n        <button\n          v-else-if=\"!timeline.loading\"\n          class=\"button-unstyled -link\"\n          @click.prevent=\"fetchOlderStatuses()\"\n        >\n          <div class=\"new-status-notification text-center\">\n            {{ $t('timeline.load_older') }}\n          </div>\n        </button>\n        <div\n          v-else\n          class=\"new-status-notification text-center\"\n        >\n          <FAIcon\n            icon=\"circle-notch\"\n            spin\n            size=\"lg\"\n          />\n        </div>\n      </teleport>\n    </div>\n  </div>\n</template>\n\n<script src=\"./timeline.js\"></script>\n\n<style src=\"./timeline.scss\" lang=\"scss\"> </style>\n","<template>\n  <div\n    v-if=\"!hideStatus\"\n    :style=\"hiddenStyle\"\n    class=\"Conversation\"\n    :class=\"{ '-expanded' : isExpanded, 'panel' : isExpanded }\"\n  >\n    <div\n      v-if=\"isExpanded\"\n      class=\"panel-heading conversation-heading -sticky\"\n    >\n      <span class=\"title\"> {{ $t('timeline.conversation') }} </span>\n      <button\n        v-if=\"collapsable\"\n        class=\"button-unstyled -link\"\n        @click.prevent=\"toggleExpanded\"\n      >\n        {{ $t('timeline.collapse') }}\n      </button>\n    </div>\n    <div class=\"conversation-body panel-body\">\n      <div\n        v-if=\"isTreeView\"\n        class=\"thread-body\"\n      >\n        <div\n          v-if=\"shouldShowAllConversationButton\"\n          class=\"conversation-dive-to-top-level-box\"\n        >\n          <i18n-t\n            keypath=\"status.show_all_conversation_with_icon\"\n            tag=\"button\"\n            class=\"button-unstyled -link\"\n            @click.prevent=\"diveToTopLevel\"\n            scope=\"global\"\n          >\n            <template #icon>\n              <FAIcon\n                icon=\"angle-double-left\"\n              />\n            </template>\n            <template #text>\n              <span>\n                {{ $tc('status.show_all_conversation', otherTopLevelCount, { numStatus: otherTopLevelCount }) }}\n              </span>\n            </template>\n          </i18n-t>\n        </div>\n        <div\n          v-if=\"shouldShowAncestors\"\n          class=\"thread-ancestors\"\n        >\n          <div\n            v-for=\"status in ancestorsOf(diveRoot)\"\n            :key=\"status.id\"\n            class=\"thread-ancestor\"\n            :class=\"{'thread-ancestor-has-other-replies': getReplies(status.id).length > 1, '-faded': shouldFadeAncestors}\"\n          >\n            <status\n              ref=\"statusComponent\"\n              :inline-expanded=\"collapsable && isExpanded\"\n              :statusoid=\"status\"\n              :expandable=\"!isExpanded\"\n              :show-pinned=\"pinnedStatusIdsObject && pinnedStatusIdsObject[status.id]\"\n              :focused=\"focused(status.id)\"\n              :in-conversation=\"isExpanded\"\n              :highlight=\"getHighlight()\"\n              :replies=\"getReplies(status.id)\"\n              :in-profile=\"inProfile\"\n              :profile-user-id=\"profileUserId\"\n              class=\"conversation-status status-fadein panel-body\"\n\n              :simple-tree=\"treeViewIsSimple\"\n              :toggle-thread-display=\"toggleThreadDisplay\"\n              :thread-display-status=\"threadDisplayStatus\"\n              :show-thread-recursively=\"showThreadRecursively\"\n              :total-reply-count=\"totalReplyCount\"\n              :total-reply-depth=\"totalReplyDepth\"\n              :show-other-replies-as-button=\"showOtherRepliesButtonInsideStatus\"\n              :dive=\"() => diveIntoStatus(status.id)\"\n\n              :controlled-showing-tall=\"statusContentProperties[status.id].showingTall\"\n              :controlled-expanding-subject=\"statusContentProperties[status.id].expandingSubject\"\n              :controlled-showing-long-subject=\"statusContentProperties[status.id].showingLongSubject\"\n              :controlled-replying=\"statusContentProperties[status.id].replying\"\n              :controlled-media-playing=\"statusContentProperties[status.id].mediaPlaying\"\n              :controlled-toggle-showing-tall=\"() => toggleStatusContentProperty(status.id, 'showingTall')\"\n              :controlled-toggle-expanding-subject=\"() => toggleStatusContentProperty(status.id, 'expandingSubject')\"\n              :controlled-toggle-showing-long-subject=\"() => toggleStatusContentProperty(status.id, 'showingLongSubject')\"\n              :controlled-toggle-replying=\"() => toggleStatusContentProperty(status.id, 'replying')\"\n              :controlled-set-media-playing=\"(newVal) => toggleStatusContentProperty(status.id, 'mediaPlaying', newVal)\"\n\n              @goto=\"setHighlight\"\n              @toggleExpanded=\"toggleExpanded\"\n            />\n            <div\n              v-if=\"showOtherRepliesButtonBelowStatus && getReplies(status.id).length > 1\"\n              class=\"thread-ancestor-dive-box\"\n            >\n              <div\n                class=\"thread-ancestor-dive-box-inner\"\n              >\n                <i18n-t\n                  tag=\"button\"\n                  scope=\"global\"\n                  keypath=\"status.ancestor_follow_with_icon\"\n                  class=\"button-unstyled -link thread-tree-show-replies-button\"\n                  @click.prevent=\"diveIntoStatus(status.id)\"\n                >\n                  <template #icon>\n                    <FAIcon\n                      icon=\"angle-double-right\"\n                    />\n                  </template>\n                  <template #text>\n                    <span>\n                      {{ $tc('status.ancestor_follow', getReplies(status.id).length - 1, { numReplies: getReplies(status.id).length - 1 }) }}\n                    </span>\n                  </template>\n                </i18n-t>\n              </div>\n            </div>\n          </div>\n        </div>\n        <thread-tree\n          v-for=\"status in showingTopLevel\"\n          :key=\"status.id\"\n          ref=\"statusComponent\"\n          :depth=\"0\"\n\n          :status=\"status\"\n          :in-profile=\"inProfile\"\n          :conversation=\"conversation\"\n          :collapsable=\"collapsable\"\n          :is-expanded=\"isExpanded\"\n          :pinned-status-ids-object=\"pinnedStatusIdsObject\"\n          :profile-user-id=\"profileUserId\"\n\n          :focused=\"focused\"\n          :get-replies=\"getReplies\"\n          :highlight=\"maybeHighlight\"\n          :set-highlight=\"setHighlight\"\n          :toggle-expanded=\"toggleExpanded\"\n\n          :simple=\"treeViewIsSimple\"\n          :toggle-thread-display=\"toggleThreadDisplay\"\n          :thread-display-status=\"threadDisplayStatus\"\n          :show-thread-recursively=\"showThreadRecursively\"\n          :total-reply-count=\"totalReplyCount\"\n          :total-reply-depth=\"totalReplyDepth\"\n          :status-content-properties=\"statusContentProperties\"\n          :set-status-content-property=\"setStatusContentProperty\"\n          :toggle-status-content-property=\"toggleStatusContentProperty\"\n          :dive=\"canDive ? diveIntoStatus : undefined\"\n        />\n      </div>\n      <div\n        v-if=\"isLinearView\"\n        class=\"thread-body\"\n      >\n        <status\n          v-for=\"status in conversation\"\n          :key=\"status.id\"\n          ref=\"statusComponent\"\n          :inline-expanded=\"collapsable && isExpanded\"\n          :statusoid=\"status\"\n          :expandable=\"!isExpanded\"\n          :show-pinned=\"pinnedStatusIdsObject && pinnedStatusIdsObject[status.id]\"\n          :focused=\"focused(status.id)\"\n          :in-conversation=\"isExpanded\"\n          :highlight=\"getHighlight()\"\n          :replies=\"getReplies(status.id)\"\n          :in-profile=\"inProfile\"\n          :profile-user-id=\"profileUserId\"\n          class=\"conversation-status status-fadein panel-body\"\n\n          :toggle-thread-display=\"toggleThreadDisplay\"\n          :thread-display-status=\"threadDisplayStatus\"\n          :show-thread-recursively=\"showThreadRecursively\"\n          :total-reply-count=\"totalReplyCount\"\n          :total-reply-depth=\"totalReplyDepth\"\n          :status-content-properties=\"statusContentProperties\"\n          :set-status-content-property=\"setStatusContentProperty\"\n          :toggle-status-content-property=\"toggleStatusContentProperty\"\n\n          @goto=\"setHighlight\"\n          @toggleExpanded=\"toggleExpanded\"\n        />\n      </div>\n    </div>\n  </div>\n  <div\n    v-else\n    :style=\"hiddenStyle\"\n  />\n</template>\n\n<script src=\"./conversation.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.Conversation {\n  z-index: 1;\n\n  .conversation-dive-to-top-level-box {\n    padding: var(--status-margin, $status-margin);\n    border-bottom-width: 1px;\n    border-bottom-style: solid;\n    border-bottom-color: var(--border, $fallback--border);\n    border-radius: 0;\n    /* Make the button stretch along the whole row */\n    display: flex;\n    align-items: stretch;\n    flex-direction: column;\n  }\n\n  .thread-ancestors {\n    margin-left: var(--status-margin, $status-margin);\n    border-left: 2px solid var(--border, $fallback--border);\n  }\n\n  .thread-ancestor.-faded .StatusContent {\n    --link: var(--faintLink);\n    --text: var(--faint);\n    color: var(--text);\n  }\n\n  .thread-ancestor-dive-box {\n    padding-left: var(--status-margin, $status-margin);\n    border-bottom-width: 1px;\n    border-bottom-style: solid;\n    border-bottom-color: var(--border, $fallback--border);\n    border-radius: 0;\n    /* Make the button stretch along the whole row */\n    &, &-inner {\n      display: flex;\n      align-items: stretch;\n      flex-direction: column;\n    }\n  }\n  .thread-ancestor-dive-box-inner {\n    padding: var(--status-margin, $status-margin);\n  }\n\n  .conversation-status {\n    border-bottom-width: 1px;\n    border-bottom-style: solid;\n    border-bottom-color: var(--border, $fallback--border);\n    border-radius: 0;\n  }\n\n  .thread-ancestor-has-other-replies .conversation-status,\n  .thread-ancestor:last-child .conversation-status,\n  .thread-ancestor:last-child .thread-ancestor-dive-box,\n  &:last-child .conversation-status,\n  &.-expanded .thread-tree .conversation-status {\n    border-bottom: none;\n  }\n\n  .thread-ancestors + .thread-tree > .conversation-status {\n    border-top-width: 1px;\n    border-top-style: solid;\n    border-top-color: var(--border, $fallback--border);\n  }\n\n  /* expanded conversation in timeline */\n  &.status-fadein.-expanded .thread-body {\n    border-left-width: 4px;\n    border-left-style: solid;\n    border-left-color: $fallback--cRed;\n    border-left-color: var(--cRed, $fallback--cRed);\n    border-radius: 0 0 $fallback--panelRadius $fallback--panelRadius;\n    border-radius: 0 0 var(--panelRadius, $fallback--panelRadius) var(--panelRadius, $fallback--panelRadius);\n    border-bottom: 1px solid var(--border, $fallback--border);\n  }\n\n  &.-expanded.status-fadein {\n    margin: calc(var(--status-margin, $status-margin) / 2);\n  }\n}\n</style>\n","<template>\n  <div class=\"thread-tree\">\n    <status\n      :key=\"status.id\"\n      ref=\"statusComponent\"\n      :inline-expanded=\"collapsable && isExpanded\"\n      :statusoid=\"status\"\n      :expandable=\"!isExpanded\"\n      :show-pinned=\"pinnedStatusIdsObject && pinnedStatusIdsObject[status.id]\"\n      :focused=\"focused(status.id)\"\n      :in-conversation=\"isExpanded\"\n      :highlight=\"highlight\"\n      :replies=\"getReplies(status.id)\"\n      :in-profile=\"inProfile\"\n      :profile-user-id=\"profileUserId\"\n      class=\"conversation-status conversation-status-treeview status-fadein panel-body\"\n\n      :simple-tree=\"simple\"\n      :controlled-thread-display-status=\"threadDisplayStatus[status.id]\"\n      :controlled-toggle-thread-display=\"() => toggleThreadDisplay(status.id)\"\n\n      :controlled-showing-tall=\"currentProp.showingTall\"\n      :controlled-expanding-subject=\"currentProp.expandingSubject\"\n      :controlled-showing-long-subject=\"currentProp.showingLongSubject\"\n      :controlled-replying=\"currentProp.replying\"\n      :controlled-media-playing=\"currentProp.mediaPlaying\"\n      :controlled-toggle-showing-tall=\"() => toggleCurrentProp('showingTall')\"\n      :controlled-toggle-expanding-subject=\"() => toggleCurrentProp('expandingSubject')\"\n      :controlled-toggle-showing-long-subject=\"() => toggleCurrentProp('showingLongSubject')\"\n      :controlled-toggle-replying=\"() => toggleCurrentProp('replying')\"\n      :controlled-set-media-playing=\"(newVal) => setCurrentProp('mediaPlaying', newVal)\"\n      :dive=\"dive ? () => dive(status.id) : undefined\"\n\n      @goto=\"setHighlight\"\n      @toggleExpanded=\"toggleExpanded\"\n    />\n    <div\n      v-if=\"currentReplies.length && threadShowing\"\n      class=\"thread-tree-replies\"\n    >\n      <thread-tree\n        v-for=\"replyStatus in currentReplies\"\n        :key=\"replyStatus.id\"\n        ref=\"childComponent\"\n        :depth=\"depth + 1\"\n        :status=\"replyStatus\"\n\n        :in-profile=\"inProfile\"\n        :conversation=\"conversation\"\n        :collapsable=\"collapsable\"\n        :is-expanded=\"isExpanded\"\n        :pinned-status-ids-object=\"pinnedStatusIdsObject\"\n        :profile-user-id=\"profileUserId\"\n\n        :focused=\"focused\"\n        :get-replies=\"getReplies\"\n        :highlight=\"highlight\"\n        :set-highlight=\"setHighlight\"\n        :toggle-expanded=\"toggleExpanded\"\n\n        :simple=\"simple\"\n        :toggle-thread-display=\"toggleThreadDisplay\"\n        :thread-display-status=\"threadDisplayStatus\"\n        :show-thread-recursively=\"showThreadRecursively\"\n        :total-reply-count=\"totalReplyCount\"\n        :total-reply-depth=\"totalReplyDepth\"\n        :status-content-properties=\"statusContentProperties\"\n        :set-status-content-property=\"setStatusContentProperty\"\n        :toggle-status-content-property=\"toggleStatusContentProperty\"\n        :dive=\"dive\"\n      />\n    </div>\n    <div\n      v-if=\"currentReplies.length && !threadShowing\"\n      class=\"thread-tree-replies thread-tree-replies-hidden\"\n    >\n      <i18n-t\n        v-if=\"simple\"\n        scope=\"global\"\n        tag=\"button\"\n        keypath=\"status.thread_follow_with_icon\"\n        class=\"button-unstyled -link thread-tree-show-replies-button\"\n        @click.prevent=\"dive(status.id)\"\n      >\n        <template #icon>\n          <FAIcon\n            icon=\"angle-double-right\"\n          />\n        </template>\n        <template #text>\n          <span>\n            {{ $tc('status.thread_follow', totalReplyCount[status.id], { numStatus: totalReplyCount[status.id] }) }}\n          </span>\n        </template>\n      </i18n-t>\n      <i18n-t\n        v-else\n        scope=\"global\"\n        tag=\"button\"\n        keypath=\"status.thread_show_full_with_icon\"\n        class=\"button-unstyled -link thread-tree-show-replies-button\"\n        @click.prevent=\"showThreadRecursively(status.id)\"\n      >\n        <template #icon>\n          <FAIcon\n            icon=\"angle-double-down\"\n          />\n        </template>\n        <template #text>\n          <span>\n            {{ $tc('status.thread_show_full', totalReplyCount[status.id], { numStatus: totalReplyCount[status.id], depth: totalReplyDepth[status.id] }) }}\n          </span>\n        </template>\n      </i18n-t>\n    </div>\n  </div>\n</template>\n\n<script src=\"./thread_tree.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n.thread-tree-replies {\n  margin-left: var(--status-margin, $status-margin);\n  border-left: 2px solid var(--border, $fallback--border);\n}\n\n.thread-tree-replies-hidden {\n  padding: var(--status-margin, $status-margin);\n  /* Make the button stretch along the whole row */\n  display: flex;\n  align-items: stretch;\n  flex-direction: column;\n}\n</style>\n","import Status from '../status/status.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faAngleDoubleDown,\n  faAngleDoubleRight\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faAngleDoubleDown,\n  faAngleDoubleRight\n)\n\nconst ThreadTree = {\n  components: {\n    Status\n  },\n  name: 'ThreadTree',\n  props: {\n    depth: Number,\n    status: Object,\n    inProfile: Boolean,\n    conversation: Array,\n    collapsable: Boolean,\n    isExpanded: Boolean,\n    pinnedStatusIdsObject: Object,\n    profileUserId: String,\n\n    focused: Function,\n    highlight: String,\n    getReplies: Function,\n    setHighlight: Function,\n    toggleExpanded: Function,\n\n    simple: Boolean,\n    // to control display of the whole thread forest\n    toggleThreadDisplay: Function,\n    threadDisplayStatus: Object,\n    showThreadRecursively: Function,\n    totalReplyCount: Object,\n    totalReplyDepth: Object,\n    statusContentProperties: Object,\n    setStatusContentProperty: Function,\n    toggleStatusContentProperty: Function,\n    dive: Function\n  },\n  computed: {\n    suspendable () {\n      const selfSuspendable = this.$refs.statusComponent ? this.$refs.statusComponent.suspendable : true\n      if (this.$refs.childComponent) {\n        return selfSuspendable && this.$refs.childComponent.every(s => s.suspendable)\n      }\n      return selfSuspendable\n    },\n    reverseLookupTable () {\n      return this.conversation.reduce((table, status, index) => {\n        table[status.id] = index\n        return table\n      }, {})\n    },\n    currentReplies () {\n      return this.getReplies(this.status.id).map(({ id }) => this.statusById(id))\n    },\n    threadShowing () {\n      return this.threadDisplayStatus[this.status.id] === 'showing'\n    },\n    currentProp () {\n      return this.statusContentProperties[this.status.id]\n    }\n  },\n  methods: {\n    statusById (id) {\n      return this.conversation[this.reverseLookupTable[id]]\n    },\n    collapseThread () {\n    },\n    showThread () {\n    },\n    showAllSubthreads () {\n    },\n    toggleCurrentProp (name) {\n      this.toggleStatusContentProperty(this.status.id, name)\n    },\n    setCurrentProp (name, newVal) {\n      this.setStatusContentProperty(this.status.id, name)\n    }\n  }\n}\n\nexport default ThreadTree\n","import { render } from \"./thread_tree.vue?vue&type=template&id=38969046\"\nimport script from \"./thread_tree.js?vue&type=script&lang=js\"\nexport * from \"./thread_tree.js?vue&type=script&lang=js\"\n\nimport \"./thread_tree.vue?vue&type=style&index=0&id=38969046&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { reduce, filter, findIndex, clone, get } from 'lodash'\nimport Status from '../status/status.vue'\nimport ThreadTree from '../thread_tree/thread_tree.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faAngleDoubleDown,\n  faAngleDoubleLeft,\n  faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faAngleDoubleDown,\n  faAngleDoubleLeft,\n  faChevronLeft\n)\n\nconst sortById = (a, b) => {\n  const idA = a.type === 'retweet' ? a.retweeted_status.id : a.id\n  const idB = b.type === 'retweet' ? b.retweeted_status.id : b.id\n  const seqA = Number(idA)\n  const seqB = Number(idB)\n  const isSeqA = !Number.isNaN(seqA)\n  const isSeqB = !Number.isNaN(seqB)\n  if (isSeqA && isSeqB) {\n    return seqA < seqB ? -1 : 1\n  } else if (isSeqA && !isSeqB) {\n    return -1\n  } else if (!isSeqA && isSeqB) {\n    return 1\n  } else {\n    return idA < idB ? -1 : 1\n  }\n}\n\nconst sortAndFilterConversation = (conversation, statusoid) => {\n  if (statusoid.type === 'retweet') {\n    conversation = filter(\n      conversation,\n      (status) => (status.type === 'retweet' || status.id !== statusoid.retweeted_status.id)\n    )\n  } else {\n    conversation = filter(conversation, (status) => status.type !== 'retweet')\n  }\n  return conversation.filter(_ => _).sort(sortById)\n}\n\nconst conversation = {\n  data () {\n    return {\n      highlight: null,\n      expanded: false,\n      threadDisplayStatusObject: {}, // id => 'showing' | 'hidden'\n      statusContentPropertiesObject: {},\n      inlineDivePosition: null\n    }\n  },\n  props: [\n    'statusId',\n    'collapsable',\n    'isPage',\n    'pinnedStatusIdsObject',\n    'inProfile',\n    'profileUserId',\n    'virtualHidden'\n  ],\n  created () {\n    if (this.isPage) {\n      this.fetchConversation()\n    }\n  },\n  computed: {\n    maxDepthToShowByDefault () {\n      // maxDepthInThread = max number of depths that is *visible*\n      // since our depth starts with 0 and \"showing\" means \"showing children\"\n      // there is a -2 here\n      const maxDepth = this.$store.getters.mergedConfig.maxDepthInThread - 2\n      return maxDepth >= 1 ? maxDepth : 1\n    },\n    displayStyle () {\n      return this.$store.getters.mergedConfig.conversationDisplay\n    },\n    isTreeView () {\n      return !this.isLinearView\n    },\n    treeViewIsSimple () {\n      return !this.$store.getters.mergedConfig.conversationTreeAdvanced\n    },\n    isLinearView () {\n      return this.displayStyle === 'linear'\n    },\n    shouldFadeAncestors () {\n      return this.$store.getters.mergedConfig.conversationTreeFadeAncestors\n    },\n    otherRepliesButtonPosition () {\n      return this.$store.getters.mergedConfig.conversationOtherRepliesButton\n    },\n    showOtherRepliesButtonBelowStatus () {\n      return this.otherRepliesButtonPosition === 'below'\n    },\n    showOtherRepliesButtonInsideStatus () {\n      return this.otherRepliesButtonPosition === 'inside'\n    },\n    suspendable () {\n      if (this.isTreeView) {\n        return Object.entries(this.statusContentProperties)\n          .every(([k, prop]) => !prop.replying && prop.mediaPlaying.length === 0)\n      }\n      if (this.$refs.statusComponent && this.$refs.statusComponent[0]) {\n        return this.$refs.statusComponent.every(s => s.suspendable)\n      } else {\n        return true\n      }\n    },\n    hideStatus () {\n      return this.virtualHidden && this.suspendable\n    },\n    status () {\n      return this.$store.state.statuses.allStatusesObject[this.statusId]\n    },\n    originalStatusId () {\n      if (this.status.retweeted_status) {\n        return this.status.retweeted_status.id\n      } else {\n        return this.statusId\n      }\n    },\n    conversationId () {\n      return this.getConversationId(this.statusId)\n    },\n    conversation () {\n      if (!this.status) {\n        return []\n      }\n\n      if (!this.isExpanded) {\n        return [this.status]\n      }\n\n      const conversation = clone(this.$store.state.statuses.conversationsObject[this.conversationId])\n      const statusIndex = findIndex(conversation, { id: this.originalStatusId })\n      if (statusIndex !== -1) {\n        conversation[statusIndex] = this.status\n      }\n\n      return sortAndFilterConversation(conversation, this.status)\n    },\n    statusMap () {\n      return this.conversation.reduce((res, s) => {\n        res[s.id] = s\n        return res\n      }, {})\n    },\n    threadTree () {\n      const reverseLookupTable = this.conversation.reduce((table, status, index) => {\n        table[status.id] = index\n        return table\n      }, {})\n\n      const threads = this.conversation.reduce((a, cur) => {\n        const id = cur.id\n        a.forest[id] = this.getReplies(id)\n          .map(s => s.id)\n\n        return a\n      }, {\n        forest: {}\n      })\n\n      const walk = (forest, topLevel, depth = 0, processed = {}) => topLevel.map(id => {\n        if (processed[id]) {\n          return []\n        }\n\n        processed[id] = true\n        return [{\n          status: this.conversation[reverseLookupTable[id]],\n          id,\n          depth\n        }, walk(forest, forest[id], depth + 1, processed)].reduce((a, b) => a.concat(b), [])\n      }).reduce((a, b) => a.concat(b), [])\n\n      const linearized = walk(threads.forest, this.topLevel.map(k => k.id))\n\n      return linearized\n    },\n    replyIds () {\n      return this.conversation.map(k => k.id)\n        .reduce((res, id) => {\n          res[id] = (this.replies[id] || []).map(k => k.id)\n          return res\n        }, {})\n    },\n    totalReplyCount () {\n      const sizes = {}\n      const subTreeSizeFor = (id) => {\n        if (sizes[id]) {\n          return sizes[id]\n        }\n        sizes[id] = 1 + this.replyIds[id].map(cid => subTreeSizeFor(cid)).reduce((a, b) => a + b, 0)\n        return sizes[id]\n      }\n      this.conversation.map(k => k.id).map(subTreeSizeFor)\n      return Object.keys(sizes).reduce((res, id) => {\n        res[id] = sizes[id] - 1 // exclude itself\n        return res\n      }, {})\n    },\n    totalReplyDepth () {\n      const depths = {}\n      const subTreeDepthFor = (id) => {\n        if (depths[id]) {\n          return depths[id]\n        }\n        depths[id] = 1 + this.replyIds[id].map(cid => subTreeDepthFor(cid)).reduce((a, b) => a > b ? a : b, 0)\n        return depths[id]\n      }\n      this.conversation.map(k => k.id).map(subTreeDepthFor)\n      return Object.keys(depths).reduce((res, id) => {\n        res[id] = depths[id] - 1 // exclude itself\n        return res\n      }, {})\n    },\n    depths () {\n      return this.threadTree.reduce((a, k) => {\n        a[k.id] = k.depth\n        return a\n      }, {})\n    },\n    topLevel () {\n      const topLevel = this.conversation.reduce((tl, cur) =>\n        tl.filter(k => this.getReplies(cur.id).map(v => v.id).indexOf(k.id) === -1), this.conversation)\n      return topLevel\n    },\n    otherTopLevelCount () {\n      return this.topLevel.length - 1\n    },\n    showingTopLevel () {\n      if (this.canDive && this.diveRoot) {\n        return [this.statusMap[this.diveRoot]]\n      }\n      return this.topLevel\n    },\n    diveRoot () {\n      const statusId = this.inlineDivePosition || this.statusId\n      const isTopLevel = !this.parentOf(statusId)\n      return isTopLevel ? null : statusId\n    },\n    diveDepth () {\n      return this.canDive && this.diveRoot ? this.depths[this.diveRoot] : 0\n    },\n    diveMode () {\n      return this.canDive && !!this.diveRoot\n    },\n    shouldShowAllConversationButton () {\n      // The \"show all conversation\" button tells the user that there exist\n      // other toplevel statuses, so do not show it if there is only a single root\n      return this.isTreeView && this.isExpanded && this.diveMode && this.topLevel.length > 1\n    },\n    shouldShowAncestors () {\n      return this.isTreeView && this.isExpanded && this.ancestorsOf(this.diveRoot).length\n    },\n    replies () {\n      let i = 1\n      // eslint-disable-next-line camelcase\n      return reduce(this.conversation, (result, { id, in_reply_to_status_id }) => {\n        /* eslint-disable camelcase */\n        const irid = in_reply_to_status_id\n        /* eslint-enable camelcase */\n        if (irid) {\n          result[irid] = result[irid] || []\n          result[irid].push({\n            name: `#${i}`,\n            id: id\n          })\n        }\n        i++\n        return result\n      }, {})\n    },\n    isExpanded () {\n      return !!(this.expanded || this.isPage)\n    },\n    hiddenStyle () {\n      const height = (this.status && this.status.virtualHeight) || '120px'\n      return this.virtualHidden ? { height } : {}\n    },\n    threadDisplayStatus () {\n      return this.conversation.reduce((a, k) => {\n        const id = k.id\n        const depth = this.depths[id]\n        const status = (() => {\n          if (this.threadDisplayStatusObject[id]) {\n            return this.threadDisplayStatusObject[id]\n          }\n          if ((depth - this.diveDepth) <= this.maxDepthToShowByDefault) {\n            return 'showing'\n          } else {\n            return 'hidden'\n          }\n        })()\n\n        a[id] = status\n        return a\n      }, {})\n    },\n    statusContentProperties () {\n      return this.conversation.reduce((a, k) => {\n        const id = k.id\n        const props = (() => {\n          const def = {\n            showingTall: false,\n            expandingSubject: false,\n            showingLongSubject: false,\n            isReplying: false,\n            mediaPlaying: []\n          }\n\n          if (this.statusContentPropertiesObject[id]) {\n            return {\n              ...def,\n              ...this.statusContentPropertiesObject[id]\n            }\n          }\n          return def\n        })()\n\n        a[id] = props\n        return a\n      }, {})\n    },\n    canDive () {\n      return this.isTreeView && this.isExpanded\n    },\n    focused () {\n      return (id) => {\n        return (this.isExpanded) && id === this.highlight\n      }\n    },\n    maybeHighlight () {\n      return this.isExpanded ? this.highlight : null\n    }\n  },\n  components: {\n    Status,\n    ThreadTree\n  },\n  watch: {\n    statusId (newVal, oldVal) {\n      const newConversationId = this.getConversationId(newVal)\n      const oldConversationId = this.getConversationId(oldVal)\n      if (newConversationId && oldConversationId && newConversationId === oldConversationId) {\n        this.setHighlight(this.originalStatusId)\n      } else {\n        this.fetchConversation()\n      }\n    },\n    expanded (value) {\n      if (value) {\n        this.fetchConversation()\n      } else {\n        this.resetDisplayState()\n      }\n    },\n    virtualHidden (value) {\n      this.$store.dispatch(\n        'setVirtualHeight',\n        { statusId: this.statusId, height: `${this.$el.clientHeight}px` }\n      )\n    }\n  },\n  methods: {\n    fetchConversation () {\n      if (this.status) {\n        this.$store.state.api.backendInteractor.fetchConversation({ id: this.statusId })\n          .then(({ ancestors, descendants }) => {\n            this.$store.dispatch('addNewStatuses', { statuses: ancestors })\n            this.$store.dispatch('addNewStatuses', { statuses: descendants })\n            this.setHighlight(this.originalStatusId)\n          })\n      } else {\n        this.$store.state.api.backendInteractor.fetchStatus({ id: this.statusId })\n          .then((status) => {\n            this.$store.dispatch('addNewStatuses', { statuses: [status] })\n            this.fetchConversation()\n          })\n      }\n    },\n    getReplies (id) {\n      return this.replies[id] || []\n    },\n    getHighlight () {\n      return this.isExpanded ? this.highlight : null\n    },\n    setHighlight (id) {\n      if (!id) return\n      this.highlight = id\n      this.$store.dispatch('fetchFavsAndRepeats', id)\n      this.$store.dispatch('fetchEmojiReactionsBy', id)\n    },\n    toggleExpanded () {\n      this.expanded = !this.expanded\n    },\n    getConversationId (statusId) {\n      const status = this.$store.state.statuses.allStatusesObject[statusId]\n      return get(status, 'retweeted_status.statusnet_conversation_id', get(status, 'statusnet_conversation_id'))\n    },\n    setThreadDisplay (id, nextStatus) {\n      this.threadDisplayStatusObject = {\n        ...this.threadDisplayStatusObject,\n        [id]: nextStatus\n      }\n    },\n    toggleThreadDisplay (id) {\n      const curStatus = this.threadDisplayStatus[id]\n      const nextStatus = curStatus === 'showing' ? 'hidden' : 'showing'\n      this.setThreadDisplay(id, nextStatus)\n    },\n    setThreadDisplayRecursively (id, nextStatus) {\n      this.setThreadDisplay(id, nextStatus)\n      this.getReplies(id).map(k => k.id).map(id => this.setThreadDisplayRecursively(id, nextStatus))\n    },\n    showThreadRecursively (id) {\n      this.setThreadDisplayRecursively(id, 'showing')\n    },\n    setStatusContentProperty (id, name, value) {\n      this.statusContentPropertiesObject = {\n        ...this.statusContentPropertiesObject,\n        [id]: {\n          ...this.statusContentPropertiesObject[id],\n          [name]: value\n        }\n      }\n    },\n    toggleStatusContentProperty (id, name) {\n      this.setStatusContentProperty(id, name, !this.statusContentProperties[id][name])\n    },\n    leastVisibleAncestor (id) {\n      let cur = id\n      let parent = this.parentOf(cur)\n      while (cur) {\n        // if the parent is showing it means cur is visible\n        if (this.threadDisplayStatus[parent] === 'showing') {\n          return cur\n        }\n        parent = this.parentOf(parent)\n        cur = this.parentOf(cur)\n      }\n      // nothing found, fall back to toplevel\n      return this.topLevel[0] ? this.topLevel[0].id : undefined\n    },\n    diveIntoStatus (id, preventScroll) {\n      this.tryScrollTo(id)\n    },\n    diveToTopLevel () {\n      this.tryScrollTo(this.topLevelAncestorOrSelfId(this.diveRoot) || this.topLevel[0].id)\n    },\n    // only used when we are not on a page\n    undive () {\n      this.inlineDivePosition = null\n      this.setHighlight(this.statusId)\n    },\n    tryScrollTo (id) {\n      if (!id) {\n        return\n      }\n      if (this.isPage) {\n        // set statusId\n        this.$router.push({ name: 'conversation', params: { id } })\n      } else {\n        this.inlineDivePosition = id\n      }\n      // Because the conversation can be unmounted when out of sight\n      // and mounted again when it comes into sight,\n      // the `mounted` or `created` function in `status` should not\n      // contain scrolling calls, as we do not want the page to jump\n      // when we scroll with an expanded conversation.\n      //\n      // Now the method is to rely solely on the `highlight` watcher\n      // in `status` components.\n      // In linear views, all statuses are rendered at all times, but\n      // in tree views, it is possible that a change in active status\n      // removes and adds status components (e.g. an originally child\n      // status becomes an ancestor status, and thus they will be\n      // different).\n      // Here, let the components be rendered first, in order to trigger\n      // the `highlight` watcher.\n      this.$nextTick(() => {\n        this.setHighlight(id)\n      })\n    },\n    goToCurrent () {\n      this.tryScrollTo(this.diveRoot || this.topLevel[0].id)\n    },\n    statusById (id) {\n      return this.statusMap[id]\n    },\n    parentOf (id) {\n      const status = this.statusById(id)\n      if (!status) {\n        return undefined\n      }\n      const { in_reply_to_status_id: parentId } = status\n      if (!this.statusMap[parentId]) {\n        return undefined\n      }\n      return parentId\n    },\n    parentOrSelf (id) {\n      return this.parentOf(id) || id\n    },\n    // Ancestors of some status, from top to bottom\n    ancestorsOf (id) {\n      const ancestors = []\n      let cur = this.parentOf(id)\n      while (cur) {\n        ancestors.unshift(this.statusMap[cur])\n        cur = this.parentOf(cur)\n      }\n      return ancestors\n    },\n    topLevelAncestorOrSelfId (id) {\n      let cur = id\n      let parent = this.parentOf(id)\n      while (parent) {\n        cur = this.parentOf(cur)\n        parent = this.parentOf(parent)\n      }\n      return cur\n    },\n    resetDisplayState () {\n      this.undive()\n      this.threadDisplayStatusObject = {}\n    }\n  }\n}\n\nexport default conversation\n","import { render } from \"./conversation.vue?vue&type=template&id=ee2f7a9a\"\nimport script from \"./conversation.js?vue&type=script&lang=js\"\nexport * from \"./conversation.js?vue&type=script&lang=js\"\n\nimport \"./conversation.vue?vue&type=style&index=0&id=ee2f7a9a&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Popover\n    trigger=\"click\"\n    class=\"TimelineMenu\"\n    :class=\"{ 'open': isOpen }\"\n    :margin=\"{ left: -15, right: -200 }\"\n    :bound-to=\"{ x: 'container' }\"\n    popover-class=\"timeline-menu-popover-wrap\"\n    @show=\"openMenu\"\n    @close=\"() => isOpen = false\"\n  >\n    <template v-slot:content>\n      <div class=\"timeline-menu-popover popover-default\">\n        <TimelineMenuContent />\n      </div>\n    </template>\n    <template v-slot:trigger>\n      <button class=\"button-unstyled title timeline-menu-title\">\n        <span class=\"timeline-title\">{{ timelineName() }}</span>\n        <span>\n          <FAIcon\n            size=\"sm\"\n            icon=\"chevron-down\"\n          />\n        </span>\n        <span\n          class=\"click-blocker\"\n          @click=\"blockOpen\"\n        />\n      </button>\n    </template>\n  </Popover>\n</template>\n\n<script src=\"./timeline_menu.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.TimelineMenu {\n  flex-shrink: 1;\n  margin-right: auto;\n  min-width: 0;\n  width: 24rem;\n\n  .popover-trigger-button {\n    vertical-align: bottom;\n  }\n\n  .timeline-menu-popover-wrap {\n    overflow: hidden;\n    // Match panel heading padding to line up menu with bottom of heading\n    margin-top: 0.6rem;\n    padding: 0 15px 15px 15px;\n  }\n\n  .timeline-menu-popover {\n    width: 24rem;\n    max-width: 100vw;\n    margin: 0;\n    font-size: 1rem;\n    border-top-right-radius: 0;\n    border-top-left-radius: 0;\n    transform: translateY(-100%);\n    transition: transform 100ms;\n  }\n\n  .panel::after {\n    border-top-right-radius: 0;\n    border-top-left-radius: 0;\n  }\n\n  &.open .timeline-menu-popover {\n    transform: translateY(0);\n  }\n\n  .timeline-menu-title {\n    margin: 0;\n    cursor: pointer;\n    user-select: none;\n    width: 100%;\n    display: flex;\n\n    .timeline-menu-name {\n      overflow: hidden;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n    }\n\n    svg {\n      margin-left: 0.6em;\n      transition: transform 100ms;\n    }\n\n    .click-blocker {\n      cursor: default;\n      flex-grow: 1;\n    }\n  }\n\n  &.open .timeline-menu-title svg {\n    color: $fallback--text;\n    color: var(--panelText, $fallback--text);\n    transform: rotate(180deg);\n  }\n\n  .panel {\n    box-shadow: var(--popoverShadow);\n  }\n\n  ul {\n    list-style: none;\n    margin: 0;\n    padding: 0;\n  }\n\n  li {\n    border-bottom: 1px solid;\n    border-color: $fallback--border;\n    border-color: var(--border, $fallback--border);\n    padding: 0;\n\n    &:last-child a {\n      border-bottom-right-radius: $fallback--panelRadius;\n      border-bottom-right-radius: var(--panelRadius, $fallback--panelRadius);\n      border-bottom-left-radius: $fallback--panelRadius;\n      border-bottom-left-radius: var(--panelRadius, $fallback--panelRadius);\n    }\n\n    &:last-child {\n      border: none;\n    }\n  }\n\n  a {\n    display: block;\n    padding: 0.6em 0.65em;\n\n    &:hover {\n      background-color: $fallback--lightBg;\n      background-color: var(--selectedMenu, $fallback--lightBg);\n      color: $fallback--link;\n      color: var(--selectedMenuText, $fallback--link);\n      --faint: var(--selectedMenuFaintText, $fallback--faint);\n      --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n      --lightText: var(--selectedMenuLightText, $fallback--lightText);\n      --icon: var(--selectedMenuIcon, $fallback--icon);\n    }\n\n    &.router-link-active {\n      font-weight: bolder;\n      background-color: $fallback--lightBg;\n      background-color: var(--selectedMenu, $fallback--lightBg);\n      color: $fallback--text;\n      color: var(--selectedMenuText, $fallback--text);\n      --faint: var(--selectedMenuFaintText, $fallback--faint);\n      --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n      --lightText: var(--selectedMenuLightText, $fallback--lightText);\n      --icon: var(--selectedMenuIcon, $fallback--icon);\n\n      &:hover {\n        text-decoration: underline;\n      }\n    }\n\n    svg {\n      margin-right: 0.4em;\n      margin-left: -0.2em;\n    }\n  }\n}\n\n</style>\n","import Popover from '../popover/popover.vue'\nimport TimelineMenuContent from './timeline_menu_content.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faChevronDown\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faChevronDown)\n\n// Route -> i18n key mapping, exported and not in the computed\n// because nav panel benefits from the same information.\nexport const timelineNames = () => {\n  return {\n    'friends': 'nav.home_timeline',\n    'bookmarks': 'nav.bookmarks',\n    'dms': 'nav.dms',\n    'public-timeline': 'nav.public_tl',\n    'public-external-timeline': 'nav.twkn'\n  }\n}\n\nconst TimelineMenu = {\n  components: {\n    Popover,\n    TimelineMenuContent\n  },\n  data () {\n    return {\n      isOpen: false\n    }\n  },\n  created () {\n    if (timelineNames()[this.$route.name]) {\n      this.$store.dispatch('setLastTimeline', this.$route.name)\n    }\n  },\n  methods: {\n    openMenu () {\n      // $nextTick is too fast, animation won't play back but\n      // instead starts in fully open position. Low values\n      // like 1-5 work on fast machines but not on mobile, 25\n      // seems like a good compromise that plays without significant\n      // added lag.\n      setTimeout(() => {\n        this.isOpen = true\n      }, 25)\n    },\n    blockOpen (event) {\n      // For the blank area inside the button element.\n      // Just setting @click.stop=\"\" makes unintuitive behavior when\n      // menu is open and clicking on the blank area doesn't close it.\n      if (!this.isOpen) {\n        event.stopPropagation()\n      }\n    },\n    timelineName () {\n      const route = this.$route.name\n      if (route === 'tag-timeline') {\n        return '#' + this.$route.params.tag\n      }\n      const i18nkey = timelineNames()[this.$route.name]\n      return i18nkey ? this.$t(i18nkey) : route\n    }\n  }\n}\n\nexport default TimelineMenu\n","import { render } from \"./timeline_menu.vue?vue&type=template&id=0d348974\"\nimport script from \"./timeline_menu.js?vue&type=script&lang=js\"\nexport * from \"./timeline_menu.js?vue&type=script&lang=js\"\n\nimport \"./timeline_menu.vue?vue&type=style&index=0&id=0d348974&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Popover\n    trigger=\"click\"\n    class=\"TimelineQuickSettings\"\n    :bound-to=\"{ x: 'container' }\"\n  >\n    <template v-slot:content>\n      <div class=\"dropdown-menu\">\n        <div v-if=\"loggedIn\">\n          <button\n            class=\"button-default dropdown-item\"\n            @click=\"replyVisibilityAll = true\"\n          >\n            <span\n              class=\"menu-checkbox -radio\"\n              :class=\"{ 'menu-checkbox-checked': replyVisibilityAll }\"\n            />{{ $t('settings.reply_visibility_all') }}\n          </button>\n          <button\n            class=\"button-default dropdown-item\"\n            @click=\"replyVisibilityFollowing = true\"\n          >\n            <span\n              class=\"menu-checkbox -radio\"\n              :class=\"{ 'menu-checkbox-checked': replyVisibilityFollowing }\"\n            />{{ $t('settings.reply_visibility_following_short') }}\n          </button>\n          <button\n            class=\"button-default dropdown-item\"\n            @click=\"replyVisibilitySelf = true\"\n          >\n            <span\n              class=\"menu-checkbox -radio\"\n              :class=\"{ 'menu-checkbox-checked': replyVisibilitySelf }\"\n            />{{ $t('settings.reply_visibility_self_short') }}\n          </button>\n          <div\n            role=\"separator\"\n            class=\"dropdown-divider\"\n          />\n        </div>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"muteBotStatuses = !muteBotStatuses\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': muteBotStatuses }\"\n          />{{ $t('settings.mute_bot_posts') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"hideMedia = !hideMedia\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': hideMedia }\"\n          />{{ $t('settings.hide_media_previews') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"hideMutedPosts = !hideMutedPosts\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': hideMutedPosts }\"\n          />{{ $t('settings.hide_all_muted_posts') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click=\"openTab('filtering')\"\n        >\n          <FAIcon icon=\"font\" />{{ $t('settings.word_filter') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click=\"openTab('general')\"\n        >\n          <FAIcon icon=\"wrench\" />{{ $t('settings.more_settings') }}\n        </button>\n      </div>\n    </template>\n    <template v-slot:trigger>\n      <button class=\"button-unstyled\">\n        <FAIcon icon=\"filter\" />\n      </button>\n    </template>\n  </Popover>\n</template>\n\n<script src=\"./timeline_quick_settings.js\"></script>\n\n<style lang=\"scss\">\n\n.TimelineQuickSettings {\n\n  > button {\n    line-height: 100%;\n    height: 100%;\n    width: var(--__panel-heading-height-inner);\n    text-align: center;\n\n    svg {\n      font-size: 1.2em;\n    }\n  }\n}\n\n</style>\n","import Popover from '../popover/popover.vue'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faFilter, faFont, faWrench } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faFilter,\n  faFont,\n  faWrench\n)\n\nconst TimelineQuickSettings = {\n  components: {\n    Popover\n  },\n  methods: {\n    setReplyVisibility (visibility) {\n      this.$store.dispatch('setOption', { name: 'replyVisibility', value: visibility })\n      this.$store.dispatch('queueFlushAll')\n    },\n    openTab (tab) {\n      this.$store.dispatch('openSettingsModalTab', tab)\n    }\n  },\n  computed: {\n    ...mapGetters(['mergedConfig']),\n    loggedIn () {\n      return !!this.$store.state.users.currentUser\n    },\n    replyVisibilitySelf: {\n      get () { return this.mergedConfig.replyVisibility === 'self' },\n      set () { this.setReplyVisibility('self') }\n    },\n    replyVisibilityFollowing: {\n      get () { return this.mergedConfig.replyVisibility === 'following' },\n      set () { this.setReplyVisibility('following') }\n    },\n    replyVisibilityAll: {\n      get () { return this.mergedConfig.replyVisibility === 'all' },\n      set () { this.setReplyVisibility('all') }\n    },\n    hideMedia: {\n      get () { return this.mergedConfig.hideAttachments || this.mergedConfig.hideAttachmentsInConv },\n      set () {\n        const value = !this.hideMedia\n        this.$store.dispatch('setOption', { name: 'hideAttachments', value })\n        this.$store.dispatch('setOption', { name: 'hideAttachmentsInConv', value })\n      }\n    },\n    hideMutedPosts: {\n      get () { return this.mergedConfig.hideFilteredStatuses },\n      set () {\n        const value = !this.hideMutedPosts\n        this.$store.dispatch('setOption', { name: 'hideFilteredStatuses', value })\n      }\n    },\n    muteBotStatuses: {\n      get () { return this.mergedConfig.muteBotStatuses },\n      set () {\n        const value = !this.muteBotStatuses\n        this.$store.dispatch('setOption', { name: 'muteBotStatuses', value })\n      }\n    }\n  }\n}\n\nexport default TimelineQuickSettings\n","import { render } from \"./timeline_quick_settings.vue?vue&type=template&id=ad1076ec\"\nimport script from \"./timeline_quick_settings.js?vue&type=script&lang=js\"\nexport * from \"./timeline_quick_settings.js?vue&type=script&lang=js\"\n\nimport \"./timeline_quick_settings.vue?vue&type=style&index=0&id=ad1076ec&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Status from '../status/status.vue'\nimport timelineFetcher from '../../services/timeline_fetcher/timeline_fetcher.service.js'\nimport Conversation from '../conversation/conversation.vue'\nimport TimelineMenu from '../timeline_menu/timeline_menu.vue'\nimport TimelineQuickSettings from './timeline_quick_settings.vue'\nimport { debounce, throttle, keyBy } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch, faCog } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch,\n  faCog\n)\n\nconst Timeline = {\n  props: [\n    'timeline',\n    'timelineName',\n    'title',\n    'userId',\n    'tag',\n    'embedded',\n    'count',\n    'pinnedStatusIds',\n    'inProfile',\n    'footerSlipgate' // reference to an element where we should put our footer\n  ],\n  data () {\n    return {\n      paused: false,\n      unfocused: false,\n      bottomedOut: false,\n      virtualScrollIndex: 0,\n      blockingClicks: false\n    }\n  },\n  components: {\n    Status,\n    Conversation,\n    TimelineMenu,\n    TimelineQuickSettings\n  },\n  computed: {\n    filteredVisibleStatuses () {\n      return this.timeline.visibleStatuses.filter(status => this.timelineName !== 'user' || (status.id >= this.timeline.minId && status.id <= this.timeline.maxId))\n    },\n    filteredPinnedStatusIds () {\n      return (this.pinnedStatusIds || []).filter(statusId => this.timeline.statusesObject[statusId])\n    },\n    newStatusCount () {\n      return this.timeline.newStatusCount\n    },\n    showLoadButton () {\n      return this.timeline.newStatusCount > 0 || this.timeline.flushMarker !== 0\n    },\n    loadButtonString () {\n      if (this.timeline.flushMarker !== 0) {\n        return this.$t('timeline.reload')\n      } else {\n        return `${this.$t('timeline.show_new')} (${this.newStatusCount})`\n      }\n    },\n    classes () {\n      let rootClasses = !this.embedded ? ['panel', 'panel-default'] : ['-nonpanel']\n      if (this.blockingClicks) rootClasses = rootClasses.concat(['-blocked', '_misclick-prevention'])\n      return {\n        root: rootClasses,\n        header: ['timeline-heading'].concat(!this.embedded ? ['panel-heading', '-sticky'] : []),\n        body: ['timeline-body'].concat(!this.embedded ? ['panel-body'] : []),\n        footer: ['timeline-footer'].concat(!this.embedded ? ['panel-footer'] : [])\n      }\n    },\n    // id map of statuses which need to be hidden in the main list due to pinning logic\n    pinnedStatusIdsObject () {\n      return keyBy(this.pinnedStatusIds)\n    },\n    statusesToDisplay () {\n      const amount = this.timeline.visibleStatuses.length\n      const statusesPerSide = Math.ceil(Math.max(3, window.innerHeight / 80))\n      const nonPinnedIndex = this.virtualScrollIndex - this.filteredPinnedStatusIds.length\n      const min = Math.max(0, nonPinnedIndex - statusesPerSide)\n      const max = Math.min(amount, nonPinnedIndex + statusesPerSide)\n      return this.timeline.visibleStatuses.slice(min, max).map(_ => _.id)\n    },\n    virtualScrollingEnabled () {\n      return this.$store.getters.mergedConfig.virtualScrolling\n    }\n  },\n  created () {\n    const store = this.$store\n    const credentials = store.state.users.currentUser.credentials\n    const showImmediately = this.timeline.visibleStatuses.length === 0\n\n    window.addEventListener('scroll', this.handleScroll)\n\n    if (store.state.api.fetchers[this.timelineName]) { return false }\n\n    timelineFetcher.fetchAndUpdate({\n      store,\n      credentials,\n      timeline: this.timelineName,\n      showImmediately,\n      userId: this.userId,\n      tag: this.tag\n    })\n  },\n  mounted () {\n    if (typeof document.hidden !== 'undefined') {\n      document.addEventListener('visibilitychange', this.handleVisibilityChange, false)\n      this.unfocused = document.hidden\n    }\n    window.addEventListener('keydown', this.handleShortKey)\n    setTimeout(this.determineVisibleStatuses, 250)\n  },\n  unmounted () {\n    window.removeEventListener('scroll', this.handleScroll)\n    window.removeEventListener('keydown', this.handleShortKey)\n    if (typeof document.hidden !== 'undefined') document.removeEventListener('visibilitychange', this.handleVisibilityChange, false)\n    this.$store.commit('setLoading', { timeline: this.timelineName, value: false })\n  },\n  methods: {\n    stopBlockingClicks: debounce(function () {\n      this.blockingClicks = false\n    }, 1000),\n    blockClicksTemporarily () {\n      if (!this.blockingClicks) {\n        this.blockingClicks = true\n      }\n      this.stopBlockingClicks()\n    },\n    handleShortKey (e) {\n      // Ignore when input fields are focused\n      if (['textarea', 'input'].includes(e.target.tagName.toLowerCase())) return\n      if (e.key === '.') this.showNewStatuses()\n    },\n    showNewStatuses () {\n      if (this.timeline.flushMarker !== 0) {\n        this.$store.commit('clearTimeline', { timeline: this.timelineName, excludeUserId: true })\n        this.$store.commit('queueFlush', { timeline: this.timelineName, id: 0 })\n        this.fetchOlderStatuses()\n      } else {\n        this.blockClicksTemporarily()\n        this.$store.commit('showNewStatuses', { timeline: this.timelineName })\n        this.paused = false\n      }\n      window.scrollTo({ top: 0 })\n    },\n    fetchOlderStatuses: throttle(function () {\n      const store = this.$store\n      const credentials = store.state.users.currentUser.credentials\n      store.commit('setLoading', { timeline: this.timelineName, value: true })\n      timelineFetcher.fetchAndUpdate({\n        store,\n        credentials,\n        timeline: this.timelineName,\n        older: true,\n        showImmediately: true,\n        userId: this.userId,\n        tag: this.tag\n      }).then(({ statuses }) => {\n        if (statuses && statuses.length === 0) {\n          this.bottomedOut = true\n        }\n      }).finally(() =>\n        store.commit('setLoading', { timeline: this.timelineName, value: false })\n      )\n    }, 1000, this),\n    determineVisibleStatuses () {\n      if (!this.$refs.timeline) return\n      if (!this.virtualScrollingEnabled) return\n\n      const statuses = this.$refs.timeline.children\n      const cappedScrollIndex = Math.max(0, Math.min(this.virtualScrollIndex, statuses.length - 1))\n\n      if (statuses.length === 0) return\n\n      const height = Math.max(document.body.offsetHeight, window.pageYOffset)\n\n      const centerOfScreen = window.pageYOffset + (window.innerHeight * 0.5)\n\n      // Start from approximating the index of some visible status by using the\n      // the center of the screen on the timeline.\n      let approxIndex = Math.floor(statuses.length * (centerOfScreen / height))\n      let err = statuses[approxIndex].getBoundingClientRect().y\n\n      // if we have a previous scroll index that can be used, test if it's\n      // closer than the previous approximation, use it if so\n\n      const virtualScrollIndexY = statuses[cappedScrollIndex].getBoundingClientRect().y\n      if (Math.abs(err) > virtualScrollIndexY) {\n        approxIndex = cappedScrollIndex\n        err = virtualScrollIndexY\n      }\n\n      // if the status is too far from viewport, check the next/previous ones if\n      // they happen to be better\n      while (err < -20 && approxIndex < statuses.length - 1) {\n        err += statuses[approxIndex].offsetHeight\n        approxIndex++\n      }\n      while (err > window.innerHeight + 100 && approxIndex > 0) {\n        approxIndex--\n        err -= statuses[approxIndex].offsetHeight\n      }\n\n      // this status is now the center point for virtual scrolling and visible\n      // statuses will be nearby statuses before and after it\n      this.virtualScrollIndex = approxIndex\n    },\n    scrollLoad (e) {\n      const bodyBRect = document.body.getBoundingClientRect()\n      const height = Math.max(bodyBRect.height, -(bodyBRect.y))\n      if (this.timeline.loading === false &&\n          this.$el.offsetHeight > 0 &&\n          (window.innerHeight + window.pageYOffset) >= (height - 750)) {\n        this.fetchOlderStatuses()\n      }\n    },\n    handleScroll: throttle(function (e) {\n      this.determineVisibleStatuses()\n      this.scrollLoad(e)\n    }, 200),\n    handleVisibilityChange () {\n      this.unfocused = document.hidden\n    }\n  },\n  watch: {\n    newStatusCount (count) {\n      if (!this.$store.getters.mergedConfig.streaming) {\n        return\n      }\n      if (count > 0) {\n        // only 'stream' them when you're scrolled to the top\n        const doc = document.documentElement\n        const top = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)\n        if (top < 15 &&\n            !this.paused &&\n            !(this.unfocused && this.$store.getters.mergedConfig.pauseOnUnfocused)\n        ) {\n          this.showNewStatuses()\n        } else {\n          this.paused = true\n        }\n      }\n    }\n  }\n}\n\nexport default Timeline\n","import { render } from \"./timeline.vue?vue&type=template&id=17475b75\"\nimport script from \"./timeline.js?vue&type=script&lang=js\"\nexport * from \"./timeline.js?vue&type=script&lang=js\"\n\nimport \"./timeline.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Timeline from '../timeline/timeline.vue'\nconst PublicTimeline = {\n  components: {\n    Timeline\n  },\n  computed: {\n    timeline () { return this.$store.state.statuses.timelines.public }\n  },\n  created () {\n    this.$store.dispatch('startFetchingTimeline', { timeline: 'public' })\n  },\n  unmounted () {\n    this.$store.dispatch('stopFetchingTimeline', 'public')\n  }\n\n}\n\nexport default PublicTimeline\n","import { render } from \"./public_timeline.vue?vue&type=template&id=5f2a502e\"\nimport script from \"./public_timeline.js?vue&type=script&lang=js\"\nexport * from \"./public_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Timeline\n    :title=\"$t('nav.public_tl')\"\n    :timeline=\"timeline\"\n    :timeline-name=\"'public'\"\n  />\n</template>\n\n<script src=\"./public_timeline.js\"></script>\n","import Timeline from '../timeline/timeline.vue'\nconst PublicAndExternalTimeline = {\n  components: {\n    Timeline\n  },\n  computed: {\n    timeline () { return this.$store.state.statuses.timelines.publicAndExternal }\n  },\n  created () {\n    this.$store.dispatch('startFetchingTimeline', { timeline: 'publicAndExternal' })\n  },\n  unmounted () {\n    this.$store.dispatch('stopFetchingTimeline', 'publicAndExternal')\n  }\n}\n\nexport default PublicAndExternalTimeline\n","import { render } from \"./public_and_external_timeline.vue?vue&type=template&id=f6923484\"\nimport script from \"./public_and_external_timeline.js?vue&type=script&lang=js\"\nexport * from \"./public_and_external_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Timeline\n    :title=\"$t('nav.twkn')\"\n    :timeline=\"timeline\"\n    :timeline-name=\"'publicAndExternal'\"\n  />\n</template>\n\n<script src=\"./public_and_external_timeline.js\"></script>\n","import Timeline from '../timeline/timeline.vue'\nconst FriendsTimeline = {\n  components: {\n    Timeline\n  },\n  computed: {\n    timeline () { return this.$store.state.statuses.timelines.friends }\n  }\n}\n\nexport default FriendsTimeline\n","import { render } from \"./friends_timeline.vue?vue&type=template&id=22490669\"\nimport script from \"./friends_timeline.js?vue&type=script&lang=js\"\nexport * from \"./friends_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Timeline\n    :title=\"$t('nav.timeline')\"\n    :timeline=\"timeline\"\n    :timeline-name=\"'friends'\"\n  />\n</template>\n\n<script src=\"./friends_timeline.js\"></script>\n","import Timeline from '../timeline/timeline.vue'\n\nconst TagTimeline = {\n  created () {\n    this.$store.commit('clearTimeline', { timeline: 'tag' })\n    this.$store.dispatch('startFetchingTimeline', { timeline: 'tag', tag: this.tag })\n  },\n  components: {\n    Timeline\n  },\n  computed: {\n    tag () { return this.$route.params.tag },\n    timeline () { return this.$store.state.statuses.timelines.tag }\n  },\n  watch: {\n    tag () {\n      this.$store.commit('clearTimeline', { timeline: 'tag' })\n      this.$store.dispatch('startFetchingTimeline', { timeline: 'tag', tag: this.tag })\n    }\n  },\n  unmounted () {\n    this.$store.dispatch('stopFetchingTimeline', 'tag')\n  }\n}\n\nexport default TagTimeline\n","import { render } from \"./tag_timeline.vue?vue&type=template&id=047310d3\"\nimport script from \"./tag_timeline.js?vue&type=script&lang=js\"\nexport * from \"./tag_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Timeline\n    :title=\"tag\"\n    :timeline=\"timeline\"\n    :timeline-name=\"'tag'\"\n    :tag=\"tag\"\n  />\n</template>\n\n<script src='./tag_timeline.js'></script>\n","import Timeline from '../timeline/timeline.vue'\n\nconst Bookmarks = {\n  computed: {\n    timeline () {\n      return this.$store.state.statuses.timelines.bookmarks\n    }\n  },\n  components: {\n    Timeline\n  },\n  unmounted () {\n    this.$store.commit('clearTimeline', { timeline: 'bookmarks' })\n  }\n}\n\nexport default Bookmarks\n","import { render } from \"./bookmark_timeline.vue?vue&type=template&id=2b9c8ba0\"\nimport script from \"./bookmark_timeline.js?vue&type=script&lang=js\"\nexport * from \"./bookmark_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Timeline\n    :title=\"$t('nav.bookmarks')\"\n    :timeline=\"timeline\"\n    :timeline-name=\"'bookmarks'\"\n  />\n</template>\n\n<script src=\"./bookmark_timeline.js\"></script>\n","import Conversation from '../conversation/conversation.vue'\n\nconst conversationPage = {\n  components: {\n    Conversation\n  },\n  computed: {\n    statusId () {\n      return this.$route.params.id\n    }\n  }\n}\n\nexport default conversationPage\n","import { render } from \"./conversation-page.vue?vue&type=template&id=46654d24\"\nimport script from \"./conversation-page.js?vue&type=script&lang=js\"\nexport * from \"./conversation-page.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <conversation\n    :collapsable=\"false\"\n    is-page=\"true\"\n    :status-id=\"statusId\"\n  />\n</template>\n\n<script src=\"./conversation-page.js\"></script>\n","<template>\n  <div class=\"panel panel-default\">\n    <div class=\"panel-heading\">\n      <div class=\"title\">\n        {{ $t(\"nav.interactions\") }}\n      </div>\n    </div>\n    <tab-switcher\n      ref=\"tabSwitcher\"\n      :on-switch=\"onModeSwitch\"\n    >\n      <span\n        key=\"mentions\"\n        :label=\"$t('nav.mentions')\"\n      />\n      <span\n        key=\"likes+repeats\"\n        :label=\"$t('interactions.favs_repeats')\"\n      />\n      <span\n        key=\"follows\"\n        :label=\"$t('interactions.follows')\"\n      />\n      <span\n        v-if=\"!allowFollowingMove\"\n        key=\"moves\"\n        :label=\"$t('interactions.moves')\"\n      />\n    </tab-switcher>\n    <Notifications\n      ref=\"notifications\"\n      :no-heading=\"true\"\n      :minimal-mode=\"true\"\n      :filter-mode=\"filterMode\"\n    />\n  </div>\n</template>\n\n<script src=\"./interactions.js\"></script>\n","import Notifications from '../notifications/notifications.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\n\nconst tabModeDict = {\n  mentions: ['mention'],\n  'likes+repeats': ['repeat', 'like'],\n  follows: ['follow'],\n  moves: ['move']\n}\n\nconst Interactions = {\n  data () {\n    return {\n      allowFollowingMove: this.$store.state.users.currentUser.allow_following_move,\n      filterMode: tabModeDict['mentions']\n    }\n  },\n  methods: {\n    onModeSwitch (key) {\n      this.filterMode = tabModeDict[key]\n    }\n  },\n  components: {\n    Notifications,\n    TabSwitcher\n  }\n}\n\nexport default Interactions\n","import { render } from \"./interactions.vue?vue&type=template&id=109005c8\"\nimport script from \"./interactions.js?vue&type=script&lang=js\"\nexport * from \"./interactions.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Timeline from '../timeline/timeline.vue'\n\nconst DMs = {\n  computed: {\n    timeline () {\n      return this.$store.state.statuses.timelines.dms\n    }\n  },\n  components: {\n    Timeline\n  }\n}\n\nexport default DMs\n","import { render } from \"./dm_timeline.vue?vue&type=template&id=294f8b6d\"\nimport script from \"./dm_timeline.js?vue&type=script&lang=js\"\nexport * from \"./dm_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Timeline\n    :title=\"$t('nav.dms')\"\n    :timeline=\"timeline\"\n    :timeline-name=\"'dms'\"\n  />\n</template>\n\n<script src=\"./dm_timeline.js\"></script>\n","<template>\n  <div v-if=\"isNew\">\n    <ChatNew @cancel=\"cancelNewChat\" />\n  </div>\n  <div\n    v-else\n    class=\"chat-list panel panel-default\"\n  >\n    <div class=\"panel-heading -sticky\">\n      <span class=\"title\">\n        {{ $t(\"chats.chats\") }}\n      </span>\n      <button\n        class=\"button-default\"\n        @click=\"newChat\"\n      >\n        {{ $t(\"chats.new\") }}\n      </button>\n    </div>\n    <div class=\"panel-body\">\n      <div\n        v-if=\"sortedChatList.length > 0\"\n        class=\"timeline\"\n      >\n        <List :items=\"sortedChatList\">\n          <template v-slot:item=\"{item}\">\n            <ChatListItem\n              :key=\"item.id\"\n              :compact=\"false\"\n              :chat=\"item\"\n            />\n          </template>\n        </List>\n      </div>\n      <div\n        v-else\n        class=\"emtpy-chat-list-alert\"\n      >\n        <span>{{ $t('chats.empty_chat_list_placeholder') }}</span>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./chat_list.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.chat-list {\n  min-height: 25em;\n  margin-bottom: 0;\n}\n\n.emtpy-chat-list-alert {\n  padding: 3em;\n  font-size: 1.2em;\n  display: flex;\n  justify-content: center;\n  color: $fallback--text;\n  color: var(--faint, $fallback--text);\n}\n\n</style>\n","<template>\n  <div\n    class=\"chat-list-item\"\n    @click.capture.prevent=\"openChat\"\n  >\n    <div class=\"chat-list-item-left\">\n      <UserAvatar\n        :user=\"chat.account\"\n        height=\"48px\"\n        width=\"48px\"\n      />\n    </div>\n    <div class=\"chat-list-item-center\">\n      <div class=\"heading\">\n        <span\n          v-if=\"chat.account\"\n          class=\"name-and-account-name\"\n        >\n          <ChatTitle\n            :user=\"chat.account\"\n          />\n        </span>\n        <span class=\"heading-right\" />\n        <div class=\"time-wrapper\">\n          <Timeago\n            :time=\"chat.updated_at\"\n            :auto-update=\"60\"\n          />\n        </div>\n      </div>\n      <div class=\"chat-preview\">\n        <StatusBody\n          class=\"chat-preview-body\"\n          :status=\"messageForStatusContent\"\n          :single-line=\"true\"\n        />\n        <div\n          v-if=\"chat.unread > 0\"\n          class=\"badge badge-notification unread-chat-count\"\n        >\n          {{ chat.unread }}\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./chat_list_item.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n@import './chat_list_item.scss';\n</style>\n","import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\n\nexport default {\n  name: 'ChatTitle',\n  components: {\n    UserAvatar,\n    RichContent\n  },\n  props: [\n    'user', 'withAvatar'\n  ],\n  computed: {\n    title () {\n      return this.user ? this.user.screen_name_ui : ''\n    },\n    htmlTitle () {\n      return this.user ? this.user.name_html : ''\n    }\n  },\n  methods: {\n    getUserProfileLink (user) {\n      return generateProfileLink(user.id, user.screen_name)\n    }\n  }\n}\n","import { render } from \"./chat_title.vue?vue&type=template&id=113f5355\"\nimport script from \"./chat_title.js?vue&type=script&lang=js\"\nexport * from \"./chat_title.js?vue&type=script&lang=js\"\n\nimport \"./chat_title.vue?vue&type=style&index=0&id=113f5355&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    class=\"chat-title\"\n    :title=\"title\"\n  >\n    <router-link\n      class=\"avatar-container\"\n      v-if=\"withAvatar && user\"\n      :to=\"getUserProfileLink(user)\"\n    >\n      <UserAvatar\n        class=\"titlebar-avatar\"\n        :user=\"user\"\n      />\n    </router-link>\n    <RichContent\n      v-if=\"user\"\n      class=\"username\"\n      :title=\"'@'+(user && user.screen_name_ui)\"\n      :html=\"htmlTitle\"\n      :emoji=\"user.emoji || []\"\n    />\n  </div>\n</template>\n\n<script src=\"./chat_title.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.chat-title {\n  display: flex;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n\n  --emoji-size: 14px;\n\n  .username {\n    max-width: 100%;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    display: inline;\n    word-wrap: break-word;\n    overflow: hidden;\n  }\n\n  .avatar-container {\n    align-self: center;\n    line-height: 1;\n  }\n\n  .titlebar-avatar {\n    margin-right: 0.5em;\n    height: 1.5em;\n    width: 1.5em;\n    border-radius: $fallback--avatarAltRadius;\n    border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n\n    &.animated::before {\n      display: none;\n    }\n  }\n}\n</style>\n","import { mapState } from 'vuex'\nimport StatusBody from '../status_content/status_content.vue'\nimport fileType from 'src/services/file_type/file_type.service'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport AvatarList from '../avatar_list/avatar_list.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport ChatTitle from '../chat_title/chat_title.vue'\n\nconst ChatListItem = {\n  name: 'ChatListItem',\n  props: [\n    'chat'\n  ],\n  components: {\n    UserAvatar,\n    AvatarList,\n    Timeago,\n    ChatTitle,\n    StatusBody\n  },\n  computed: {\n    ...mapState({\n      currentUser: state => state.users.currentUser\n    }),\n    attachmentInfo () {\n      if (this.chat.lastMessage.attachments.length === 0) { return }\n\n      const types = this.chat.lastMessage.attachments.map(file => fileType.fileType(file.mimetype))\n      if (types.includes('video')) {\n        return this.$t('file_type.video')\n      } else if (types.includes('audio')) {\n        return this.$t('file_type.audio')\n      } else if (types.includes('image')) {\n        return this.$t('file_type.image')\n      } else {\n        return this.$t('file_type.file')\n      }\n    },\n    messageForStatusContent () {\n      const message = this.chat.lastMessage\n      const messageEmojis = message ? message.emojis : []\n      const isYou = message && message.account_id === this.currentUser.id\n      const content = message ? (this.attachmentInfo || message.content) : ''\n      const messagePreview = isYou ? `<i>${this.$t('chats.you')}</i> ${content}` : content\n      return {\n        summary: '',\n        emojis: messageEmojis,\n        raw_html: messagePreview,\n        text: messagePreview,\n        attachments: []\n      }\n    }\n  },\n  methods: {\n    openChat (_e) {\n      if (this.chat.id) {\n        this.$router.push({\n          name: 'chat',\n          params: {\n            username: this.currentUser.screen_name,\n            recipient_id: this.chat.account.id\n          }\n        })\n      }\n    }\n  }\n}\n\nexport default ChatListItem\n","import { render } from \"./chat_list_item.vue?vue&type=template&id=0623aed7\"\nimport script from \"./chat_list_item.js?vue&type=script&lang=js\"\nexport * from \"./chat_list_item.js?vue&type=script&lang=js\"\n\nimport \"./chat_list_item.vue?vue&type=style&index=0&id=0623aed7&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    class=\"panel-default panel chat-new\"\n  >\n    <div\n      ref=\"header\"\n      class=\"panel-heading\"\n    >\n      <button\n        class=\"button-unstyled go-back-button\"\n        @click=\"goBack\"\n      >\n        <FAIcon\n          size=\"lg\"\n          icon=\"chevron-left\"\n        />\n      </button>\n    </div>\n    <div class=\"input-wrap\">\n      <div class=\"input-search\">\n        <FAIcon\n          class=\"search-icon fa-scale-110 fa-old-padding\"\n          icon=\"search\"\n        />\n      </div>\n      <input\n        ref=\"search\"\n        v-model=\"query\"\n        placeholder=\"Search people\"\n        @input=\"onInput\"\n      >\n    </div>\n    <div class=\"member-list\">\n      <div\n        v-for=\"user in availableUsers\"\n        :key=\"user.id\"\n        class=\"member\"\n      >\n        <div @click.capture.prevent=\"goToChat(user)\">\n          <BasicUserCard :user=\"user\" />\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./chat_new.js\"></script>\n<style lang=\"scss\">\n@import '../../_variables.scss';\n@import './chat_new.scss';\n</style>\n","import { mapState, mapGetters } from 'vuex'\nimport BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faSearch,\n  faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faSearch,\n  faChevronLeft\n)\n\nconst chatNew = {\n  components: {\n    BasicUserCard,\n    UserAvatar\n  },\n  data () {\n    return {\n      suggestions: [],\n      userIds: [],\n      loading: false,\n      query: ''\n    }\n  },\n  async created () {\n    const { chats } = await this.backendInteractor.chats()\n    chats.forEach(chat => this.suggestions.push(chat.account))\n  },\n  computed: {\n    users () {\n      return this.userIds.map(userId => this.findUser(userId))\n    },\n    availableUsers () {\n      if (this.query.length !== 0) {\n        return this.users\n      } else {\n        return this.suggestions\n      }\n    },\n    ...mapState({\n      currentUser: state => state.users.currentUser,\n      backendInteractor: state => state.api.backendInteractor\n    }),\n    ...mapGetters(['findUser'])\n  },\n  methods: {\n    goBack () {\n      this.$emit('cancel')\n    },\n    goToChat (user) {\n      this.$router.push({ name: 'chat', params: { recipient_id: user.id } })\n    },\n    onInput () {\n      this.search(this.query)\n    },\n    addUser (user) {\n      this.selectedUserIds.push(user.id)\n      this.query = ''\n    },\n    removeUser (userId) {\n      this.selectedUserIds = this.selectedUserIds.filter(id => id !== userId)\n    },\n    search (query) {\n      if (!query) {\n        this.loading = false\n        return\n      }\n\n      this.loading = true\n      this.userIds = []\n      this.$store.dispatch('search', { q: query, resolve: true, type: 'accounts' })\n        .then(data => {\n          this.loading = false\n          this.userIds = data.accounts.map(a => a.id)\n        })\n    }\n  }\n}\n\nexport default chatNew\n","import { render } from \"./chat_new.vue?vue&type=template&id=54e93eee\"\nimport script from \"./chat_new.js?vue&type=script&lang=js\"\nexport * from \"./chat_new.js?vue&type=script&lang=js\"\n\nimport \"./chat_new.vue?vue&type=style&index=0&id=54e93eee&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapState, mapGetters } from 'vuex'\nimport ChatListItem from '../chat_list_item/chat_list_item.vue'\nimport ChatNew from '../chat_new/chat_new.vue'\nimport List from '../list/list.vue'\n\nconst ChatList = {\n  components: {\n    ChatListItem,\n    List,\n    ChatNew\n  },\n  computed: {\n    ...mapState({\n      currentUser: state => state.users.currentUser\n    }),\n    ...mapGetters(['sortedChatList'])\n  },\n  data () {\n    return {\n      isNew: false\n    }\n  },\n  created () {\n    this.$store.dispatch('fetchChats', { latest: true })\n  },\n  methods: {\n    cancelNewChat () {\n      this.isNew = false\n      this.$store.dispatch('fetchChats', { latest: true })\n    },\n    newChat () {\n      this.isNew = true\n    }\n  }\n}\n\nexport default ChatList\n","import { render } from \"./chat_list.vue?vue&type=template&id=598ab446\"\nimport script from \"./chat_list.js?vue&type=script&lang=js\"\nexport * from \"./chat_list.js?vue&type=script&lang=js\"\n\nimport \"./chat_list.vue?vue&type=style&index=0&id=598ab446&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"chat-view\">\n    <div class=\"chat-view-inner\">\n      <div\n        ref=\"inner\"\n        class=\"panel-default panel chat-view-body\"\n      >\n        <div\n          ref=\"header\"\n          class=\"panel-heading -sticky chat-view-heading\"\n        >\n          <button\n            class=\"button-unstyled go-back-button\"\n            @click=\"goBack\"\n          >\n            <FAIcon\n              size=\"lg\"\n              icon=\"chevron-left\"\n            />\n          </button>\n          <div class=\"title text-center\">\n            <ChatTitle\n              :user=\"recipient\"\n              :with-avatar=\"true\"\n            />\n          </div>\n        </div>\n        <div\n          class=\"message-list\"\n          :style=\"{ height: scrollableContainerHeight }\"\n        >\n          <template v-if=\"!errorLoadingChat\">\n            <ChatMessage\n              v-for=\"chatViewItem in chatViewItems\"\n              :key=\"chatViewItem.id\"\n              :author=\"recipient\"\n              :chat-view-item=\"chatViewItem\"\n              :hovered-message-chain=\"chatViewItem.messageChainId === hoveredMessageChainId\"\n              @hover=\"onMessageHover\"\n            />\n          </template>\n          <div\n            v-else\n            class=\"chat-loading-error\"\n          >\n            <div class=\"alert error\">\n              {{ $t('chats.error_loading_chat') }}\n            </div>\n          </div>\n        </div>\n        <div\n          ref=\"footer\"\n          class=\"panel-body footer\"\n        >\n          <div\n            class=\"jump-to-bottom-button\"\n            :class=\"{ 'visible': jumpToBottomButtonVisible }\"\n            @click=\"scrollDown({ behavior: 'smooth' })\"\n          >\n            <span>\n              <FAIcon icon=\"chevron-down\" />\n              <div\n                v-if=\"newMessageCount\"\n                class=\"badge badge-notification unread-chat-count unread-message-count\"\n              >\n                {{ newMessageCount }}\n              </div>\n            </span>\n          </div>\n          <PostStatusForm\n            :disable-subject=\"true\"\n            :disable-scope-selector=\"true\"\n            :disable-notice=\"true\"\n            :disable-lock-warning=\"true\"\n            :disable-polls=\"true\"\n            :disable-sensitivity-checkbox=\"true\"\n            :disable-submit=\"errorLoadingChat || !currentChat\"\n            :disable-preview=\"true\"\n            :optimistic-posting=\"true\"\n            :post-handler=\"sendMessage\"\n            :submit-on-enter=\"!mobileLayout\"\n            :preserve-focus=\"!mobileLayout\"\n            :auto-focus=\"!mobileLayout\"\n            :placeholder=\"formPlaceholder\"\n            :file-limit=\"1\"\n            max-height=\"160\"\n            emoji-picker-placement=\"top\"\n            @resize=\"handleResize\"\n          />\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./chat.js\"></script>\n<style lang=\"scss\">\n@import '../../_variables.scss';\n@import './chat.scss';\n</style>\n","<template>\n  <div\n    v-if=\"isMessage\"\n    class=\"chat-message-wrapper\"\n    :class=\"{ 'hovered-message-chain': hoveredMessageChain }\"\n    @mouseover=\"onHover(true)\"\n    @mouseleave=\"onHover(false)\"\n  >\n    <div\n      class=\"chat-message\"\n      :class=\"[{ 'outgoing': isCurrentUser, 'incoming': !isCurrentUser }]\"\n    >\n      <div\n        v-if=\"!isCurrentUser\"\n        class=\"avatar-wrapper\"\n      >\n        <router-link\n          v-if=\"chatViewItem.isHead\"\n          :to=\"userProfileLink\"\n        >\n          <UserAvatar\n            :compact=\"true\"\n            :better-shadow=\"betterShadow\"\n            :user=\"author\"\n          />\n        </router-link>\n      </div>\n      <div class=\"chat-message-inner\">\n        <div\n          class=\"status-body\"\n          :style=\"{ 'min-width': message.attachment ? '80%' : '' }\"\n        >\n          <div\n            class=\"media status\"\n            :class=\"{ 'without-attachment': !hasAttachment, 'pending': chatViewItem.data.pending, 'error': chatViewItem.data.error }\"\n            style=\"position: relative\"\n            @mouseenter=\"hovered = true\"\n            @mouseleave=\"hovered = false\"\n          >\n            <div\n              class=\"chat-message-menu\"\n              :class=\"{ 'visible': hovered || menuOpened }\"\n            >\n              <Popover\n                trigger=\"click\"\n                placement=\"top\"\n                :bound-to-selector=\"isCurrentUser ? '' : '.scrollable-message-list'\"\n                :bound-to=\"{ x: 'container' }\"\n                :margin=\"popoverMarginStyle\"\n                @show=\"menuOpened = true\"\n                @close=\"menuOpened = false\"\n              >\n                <template v-slot:content>\n                  <div class=\"dropdown-menu\">\n                    <button\n                      class=\"button-default dropdown-item dropdown-item-icon\"\n                      @click=\"deleteMessage\"\n                    >\n                      <FAIcon icon=\"times\" /> {{ $t(\"chats.delete\") }}\n                    </button>\n                  </div>\n                </template>\n                <template v-slot:trigger>\n                  <button\n                    class=\"button-default menu-icon\"\n                    :title=\"$t('chats.more')\"\n                  >\n                    <FAIcon icon=\"ellipsis-h\" />\n                  </button>\n                </template>\n              </Popover>\n            </div>\n            <StatusContent\n              class=\"message-content\"\n              :status=\"messageForStatusContent\"\n              :full-content=\"true\"\n            >\n              <template v-slot:footer>\n                <span\n                  class=\"created-at\"\n                >\n                  {{ createdAt }}\n                </span>\n              </template>\n            </StatusContent>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <div\n    v-else\n    class=\"chat-message-date-separator\"\n  >\n    <ChatMessageDate :date=\"chatViewItem.date\" />\n  </div>\n</template>\n\n<script src=\"./chat_message.js\" ></script>\n<style lang=\"scss\">\n@import './chat_message.scss';\n\n</style>\n","<template>\n  <time>\n    {{ displayDate }}\n  </time>\n</template>\n\n<script>\nimport localeService from 'src/services/locale/locale.service.js'\n\nexport default {\n  name: 'Timeago',\n  props: ['date'],\n  computed: {\n    displayDate () {\n      const today = new Date()\n      today.setHours(0, 0, 0, 0)\n\n      if (this.date.getTime() === today.getTime()) {\n        return this.$t('display_date.today')\n      } else {\n        return this.date.toLocaleDateString(localeService.internalToBrowserLocale(this.$i18n.locale), { day: 'numeric', month: 'long' })\n      }\n    }\n  }\n}\n</script>\n","import { render } from \"./chat_message_date.vue?vue&type=template&id=23377998\"\nimport script from \"./chat_message_date.vue?vue&type=script&lang=js\"\nexport * from \"./chat_message_date.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapState, mapGetters } from 'vuex'\nimport Popover from '../popover/popover.vue'\nimport Attachment from '../attachment/attachment.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport Gallery from '../gallery/gallery.vue'\nimport LinkPreview from '../link-preview/link-preview.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport ChatMessageDate from '../chat_message_date/chat_message_date.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes,\n  faEllipsisH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes,\n  faEllipsisH\n)\n\nconst ChatMessage = {\n  name: 'ChatMessage',\n  props: [\n    'author',\n    'edited',\n    'noHeading',\n    'chatViewItem',\n    'hoveredMessageChain'\n  ],\n  emits: ['hover'],\n  components: {\n    Popover,\n    Attachment,\n    StatusContent,\n    UserAvatar,\n    Gallery,\n    LinkPreview,\n    ChatMessageDate\n  },\n  computed: {\n    // Returns HH:MM (hours and minutes) in local time.\n    createdAt () {\n      const time = this.chatViewItem.data.created_at\n      return time.toLocaleTimeString('en', { hour: '2-digit', minute: '2-digit', hour12: false })\n    },\n    isCurrentUser () {\n      return this.message.account_id === this.currentUser.id\n    },\n    message () {\n      return this.chatViewItem.data\n    },\n    userProfileLink () {\n      return generateProfileLink(this.author.id, this.author.screen_name, this.$store.state.instance.restrictedNicknames)\n    },\n    isMessage () {\n      return this.chatViewItem.type === 'message'\n    },\n    messageForStatusContent () {\n      return {\n        summary: '',\n        emojis: this.message.emojis,\n        raw_html: this.message.content || '',\n        text: this.message.content || '',\n        attachments: this.message.attachments\n      }\n    },\n    hasAttachment () {\n      return this.message.attachments.length > 0\n    },\n    ...mapState({\n      betterShadow: state => state.interface.browserSupport.cssFilter,\n      currentUser: state => state.users.currentUser,\n      restrictedNicknames: state => state.instance.restrictedNicknames\n    }),\n    popoverMarginStyle () {\n      if (this.isCurrentUser) {\n        return {}\n      } else {\n        return { left: 50 }\n      }\n    },\n    ...mapGetters(['mergedConfig', 'findUser'])\n  },\n  data () {\n    return {\n      hovered: false,\n      menuOpened: false\n    }\n  },\n  methods: {\n    onHover (bool) {\n      this.$emit('hover', { isHovered: bool, messageChainId: this.chatViewItem.messageChainId })\n    },\n    async deleteMessage () {\n      const confirmed = window.confirm(this.$t('chats.delete_confirm'))\n      if (confirmed) {\n        await this.$store.dispatch('deleteChatMessage', {\n          messageId: this.chatViewItem.data.id,\n          chatId: this.chatViewItem.data.chat_id\n        })\n      }\n      this.hovered = false\n      this.menuOpened = false\n    }\n  }\n}\n\nexport default ChatMessage\n","import { render } from \"./chat_message.vue?vue&type=template&id=3566ce4a\"\nimport script from \"./chat_message.js?vue&type=script&lang=js\"\nexport * from \"./chat_message.js?vue&type=script&lang=js\"\n\nimport \"./chat_message.vue?vue&type=style&index=0&id=3566ce4a&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// Captures a scroll position\nexport const getScrollPosition = () => {\n  return {\n    scrollTop: window.scrollY,\n    scrollHeight: document.documentElement.scrollHeight,\n    offsetHeight: window.innerHeight\n  }\n}\n\n// A helper function that is used to keep the scroll position fixed as the new elements are added to the top\n// Takes two scroll positions, before and after the update.\nexport const getNewTopPosition = (previousPosition, newPosition) => {\n  return previousPosition.scrollTop + (newPosition.scrollHeight - previousPosition.scrollHeight)\n}\n\nexport const isBottomedOut = (offset = 0) => {\n  const scrollHeight = window.scrollY + offset\n  const totalHeight = document.documentElement.scrollHeight - window.innerHeight\n  return totalHeight <= scrollHeight\n}\n// Returns whether or not the scrollbar is visible.\nexport const isScrollable = () => {\n  return document.documentElement.scrollHeight > window.innerHeight\n}\n","import _ from 'lodash'\nimport { WSConnectionStatus } from '../../services/api/api.service.js'\nimport { mapGetters, mapState } from 'vuex'\nimport ChatMessage from '../chat_message/chat_message.vue'\nimport PostStatusForm from '../post_status_form/post_status_form.vue'\nimport ChatTitle from '../chat_title/chat_title.vue'\nimport chatService from '../../services/chat_service/chat_service.js'\nimport { promiseInterval } from '../../services/promise_interval/promise_interval.js'\nimport { getScrollPosition, getNewTopPosition, isBottomedOut, isScrollable } from './chat_layout_utils.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faChevronDown,\n  faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\nimport { buildFakeMessage } from '../../services/chat_utils/chat_utils.js'\n\nlibrary.add(\n  faChevronDown,\n  faChevronLeft\n)\n\nconst BOTTOMED_OUT_OFFSET = 10\nconst JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET = 10\nconst SAFE_RESIZE_TIME_OFFSET = 100\nconst MARK_AS_READ_DELAY = 1500\nconst MAX_RETRIES = 10\n\nconst Chat = {\n  components: {\n    ChatMessage,\n    ChatTitle,\n    PostStatusForm\n  },\n  data () {\n    return {\n      jumpToBottomButtonVisible: false,\n      hoveredMessageChainId: undefined,\n      lastScrollPosition: {},\n      scrollableContainerHeight: '100%',\n      errorLoadingChat: false,\n      messageRetriers: {}\n    }\n  },\n  created () {\n    this.startFetching()\n    window.addEventListener('resize', this.handleResize)\n  },\n  mounted () {\n    window.addEventListener('scroll', this.handleScroll)\n    if (typeof document.hidden !== 'undefined') {\n      document.addEventListener('visibilitychange', this.handleVisibilityChange, false)\n    }\n\n    this.$nextTick(() => {\n      this.handleResize()\n    })\n  },\n  unmounted () {\n    window.removeEventListener('scroll', this.handleScroll)\n    if (typeof document.hidden !== 'undefined') document.removeEventListener('visibilitychange', this.handleVisibilityChange, false)\n    this.$store.dispatch('clearCurrentChat')\n  },\n  computed: {\n    recipient () {\n      return this.currentChat && this.currentChat.account\n    },\n    recipientId () {\n      return this.$route.params.recipient_id\n    },\n    formPlaceholder () {\n      if (this.recipient) {\n        return this.$t('chats.message_user', { nickname: this.recipient.screen_name_ui })\n      } else {\n        return ''\n      }\n    },\n    chatViewItems () {\n      return chatService.getView(this.currentChatMessageService)\n    },\n    newMessageCount () {\n      return this.currentChatMessageService && this.currentChatMessageService.newMessageCount\n    },\n    streamingEnabled () {\n      return this.mergedConfig.useStreamingApi && this.mastoUserSocketStatus === WSConnectionStatus.JOINED\n    },\n    ...mapGetters([\n      'currentChat',\n      'currentChatMessageService',\n      'findOpenedChatByRecipientId',\n      'mergedConfig'\n    ]),\n    ...mapState({\n      backendInteractor: state => state.api.backendInteractor,\n      mastoUserSocketStatus: state => state.api.mastoUserSocketStatus,\n      mobileLayout: state => state.interface.layoutType === 'mobile',\n      currentUser: state => state.users.currentUser\n    })\n  },\n  watch: {\n    chatViewItems () {\n      // We don't want to scroll to the bottom on a new message when the user is viewing older messages.\n      // Therefore we need to know whether the scroll position was at the bottom before the DOM update.\n      const bottomedOutBeforeUpdate = this.bottomedOut(BOTTOMED_OUT_OFFSET)\n      this.$nextTick(() => {\n        if (bottomedOutBeforeUpdate) {\n          this.scrollDown()\n        }\n      })\n    },\n    '$route': function () {\n      this.startFetching()\n    },\n    mastoUserSocketStatus (newValue) {\n      if (newValue === WSConnectionStatus.JOINED) {\n        this.fetchChat({ isFirstFetch: true })\n      }\n    }\n  },\n  methods: {\n    // Used to animate the avatar near the first message of the message chain when any message belonging to the chain is hovered\n    onMessageHover ({ isHovered, messageChainId }) {\n      this.hoveredMessageChainId = isHovered ? messageChainId : undefined\n    },\n    onFilesDropped () {\n      this.$nextTick(() => {\n        this.handleResize()\n      })\n    },\n    handleVisibilityChange () {\n      this.$nextTick(() => {\n        if (!document.hidden && this.bottomedOut(BOTTOMED_OUT_OFFSET)) {\n          this.scrollDown({ forceRead: true })\n        }\n      })\n    },\n    // \"Sticks\" scroll to bottom instead of top, helps with OSK resizing the viewport\n    handleResize (opts = {}) {\n      const { expand = false, delayed = false } = opts\n\n      if (delayed) {\n        setTimeout(() => {\n          this.handleResize({ ...opts, delayed: false })\n        }, SAFE_RESIZE_TIME_OFFSET)\n        return\n      }\n\n      this.$nextTick(() => {\n        const { offsetHeight = undefined } = getScrollPosition()\n        const diff = this.lastScrollPosition.offsetHeight - offsetHeight\n        if (diff !== 0 || (!this.bottomedOut() && expand)) {\n          this.$nextTick(() => {\n            window.scrollTo({ top: window.scrollY + diff })\n          })\n        }\n        this.lastScrollPosition = getScrollPosition()\n      })\n    },\n    scrollDown (options = {}) {\n      const { behavior = 'auto', forceRead = false } = options\n      this.$nextTick(() => {\n        window.scrollTo({ top: document.documentElement.scrollHeight, behavior })\n      })\n      if (forceRead) {\n        this.readChat()\n      }\n    },\n    readChat () {\n      if (!(this.currentChatMessageService && this.currentChatMessageService.maxId)) { return }\n      if (document.hidden) { return }\n      const lastReadId = this.currentChatMessageService.maxId\n      this.$store.dispatch('readChat', {\n        id: this.currentChat.id,\n        lastReadId\n      })\n    },\n    bottomedOut (offset) {\n      return isBottomedOut(offset)\n    },\n    reachedTop () {\n      return window.scrollY <= 0\n    },\n    cullOlderCheck () {\n      window.setTimeout(() => {\n        if (this.bottomedOut(JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET)) {\n          this.$store.dispatch('cullOlderMessages', this.currentChatMessageService.chatId)\n        }\n      }, 5000)\n    },\n    handleScroll: _.throttle(function () {\n      if (!this.currentChat) { return }\n\n      if (this.reachedTop()) {\n        this.fetchChat({ maxId: this.currentChatMessageService.minId })\n      } else if (this.bottomedOut(JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET)) {\n        this.jumpToBottomButtonVisible = false\n        this.cullOlderCheck()\n        if (this.newMessageCount > 0) {\n          // Use a delay before marking as read to prevent situation where new messages\n          // arrive just as you're leaving the view and messages that you didn't actually\n          // get to see get marked as read.\n          window.setTimeout(() => {\n            // Don't mark as read if the element doesn't exist, user has left chat view\n            if (this.$el) this.readChat()\n          }, MARK_AS_READ_DELAY)\n        }\n      } else {\n        this.jumpToBottomButtonVisible = true\n      }\n    }, 200),\n    handleScrollUp (positionBeforeLoading) {\n      const positionAfterLoading = getScrollPosition()\n      window.scrollTo({\n        top: getNewTopPosition(positionBeforeLoading, positionAfterLoading)\n      })\n    },\n    fetchChat ({ isFirstFetch = false, fetchLatest = false, maxId }) {\n      const chatMessageService = this.currentChatMessageService\n      if (!chatMessageService) { return }\n      if (fetchLatest && this.streamingEnabled) { return }\n\n      const chatId = chatMessageService.chatId\n      const fetchOlderMessages = !!maxId\n      const sinceId = fetchLatest && chatMessageService.maxId\n\n      return this.backendInteractor.chatMessages({ id: chatId, maxId, sinceId })\n        .then((messages) => {\n          // Clear the current chat in case we're recovering from a ws connection loss.\n          if (isFirstFetch) {\n            chatService.clear(chatMessageService)\n          }\n\n          const positionBeforeUpdate = getScrollPosition()\n          this.$store.dispatch('addChatMessages', { chatId, messages }).then(() => {\n            this.$nextTick(() => {\n              if (fetchOlderMessages) {\n                this.handleScrollUp(positionBeforeUpdate)\n              }\n\n              // In vertical screens, the first batch of fetched messages may not always take the\n              // full height of the scrollable container.\n              // If this is the case, we want to fetch the messages until the scrollable container\n              // is fully populated so that the user has the ability to scroll up and load the history.\n              if (!isScrollable() && messages.length > 0) {\n                this.fetchChat({ maxId: this.currentChatMessageService.minId })\n              }\n            })\n          })\n        })\n    },\n    async startFetching () {\n      let chat = this.findOpenedChatByRecipientId(this.recipientId)\n      if (!chat) {\n        try {\n          chat = await this.backendInteractor.getOrCreateChat({ accountId: this.recipientId })\n        } catch (e) {\n          console.error('Error creating or getting a chat', e)\n          this.errorLoadingChat = true\n        }\n      }\n      if (chat) {\n        this.$nextTick(() => {\n          this.scrollDown({ forceRead: true })\n        })\n        this.$store.dispatch('addOpenedChat', { chat })\n        this.doStartFetching()\n      }\n    },\n    doStartFetching () {\n      this.$store.dispatch('startFetchingCurrentChat', {\n        fetcher: () => promiseInterval(() => this.fetchChat({ fetchLatest: true }), 5000)\n      })\n      this.fetchChat({ isFirstFetch: true })\n    },\n    handleAttachmentPosting () {\n      this.$nextTick(() => {\n        this.handleResize()\n        // When the posting form size changes because of a media attachment, we need an extra resize\n        // to account for the potential delay in the DOM update.\n        this.scrollDown({ forceRead: true })\n      })\n    },\n    sendMessage ({ status, media, idempotencyKey }) {\n      const params = {\n        id: this.currentChat.id,\n        content: status,\n        idempotencyKey\n      }\n\n      if (media[0]) {\n        params.mediaId = media[0].id\n      }\n\n      const fakeMessage = buildFakeMessage({\n        attachments: media,\n        chatId: this.currentChat.id,\n        content: status,\n        userId: this.currentUser.id,\n        idempotencyKey\n      })\n\n      this.$store.dispatch('addChatMessages', {\n        chatId: this.currentChat.id,\n        messages: [fakeMessage]\n      }).then(() => {\n        this.handleAttachmentPosting()\n      })\n\n      return this.doSendMessage({ params, fakeMessage, retriesLeft: MAX_RETRIES })\n    },\n    doSendMessage ({ params, fakeMessage, retriesLeft = MAX_RETRIES }) {\n      if (retriesLeft <= 0) return\n\n      this.backendInteractor.sendChatMessage(params)\n        .then(data => {\n          this.$store.dispatch('addChatMessages', {\n            chatId: this.currentChat.id,\n            updateMaxId: false,\n            messages: [{ ...data, fakeId: fakeMessage.id }]\n          })\n\n          return data\n        })\n        .catch(error => {\n          console.error('Error sending message', error)\n          this.$store.dispatch('handleMessageError', {\n            chatId: this.currentChat.id,\n            fakeId: fakeMessage.id,\n            isRetry: retriesLeft !== MAX_RETRIES\n          })\n          if ((error.statusCode >= 500 && error.statusCode < 600) || error.message === 'Failed to fetch') {\n            this.messageRetriers[fakeMessage.id] = setTimeout(() => {\n              this.doSendMessage({ params, fakeMessage, retriesLeft: retriesLeft - 1 })\n            }, 1000 * (2 ** (MAX_RETRIES - retriesLeft)))\n          }\n          return {}\n        })\n\n      return Promise.resolve(fakeMessage)\n    },\n    goBack () {\n      this.$router.push({ name: 'chats', params: { username: this.currentUser.screen_name } })\n    }\n  }\n}\n\nexport default Chat\n","import { render } from \"./chat.vue?vue&type=template&id=9416a190\"\nimport script from \"./chat.js?vue&type=script&lang=js\"\nexport * from \"./chat.js?vue&type=script&lang=js\"\n\nimport \"./chat.vue?vue&type=style&index=0&id=9416a190&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div>\n    <div\n      v-if=\"user\"\n      class=\"user-profile panel panel-default\"\n    >\n      <UserCard\n        :user-id=\"userId\"\n        :switcher=\"true\"\n        :selected=\"timeline.viewing\"\n        :allow-zooming-avatar=\"true\"\n        rounded=\"top\"\n      />\n      <div\n        v-if=\"user.fields_html && user.fields_html.length > 0\"\n        class=\"user-profile-fields\"\n      >\n        <dl\n          v-for=\"(field, index) in user.fields_html\"\n          :key=\"index\"\n          class=\"user-profile-field\"\n        >\n          <dt\n            :title=\"user.fields_text[index].name\"\n            class=\"user-profile-field-name\"\n          >\n            <RichContent\n              :html=\"field.name\"\n              :emoji=\"user.emoji\"\n            />\n          </dt>\n          <dd\n            :title=\"user.fields_text[index].value\"\n            class=\"user-profile-field-value\"\n          >\n            <RichContent\n              :html=\"field.value\"\n              :emoji=\"user.emoji\"\n            />\n          </dd>\n        </dl>\n      </div>\n      <tab-switcher\n        :active-tab=\"tab\"\n        :render-only-focused=\"true\"\n        :on-switch=\"onTabSwitch\"\n      >\n        <Timeline\n          key=\"statuses\"\n          :label=\"$t('user_card.statuses')\"\n          :count=\"user.statuses_count\"\n          :embedded=\"true\"\n          :title=\"$t('user_profile.timeline_title')\"\n          :timeline=\"timeline\"\n          timeline-name=\"user\"\n          :user-id=\"userId\"\n          :pinned-status-ids=\"user.pinnedStatusIds\"\n          :in-profile=\"true\"\n          :footerSlipgate=\"footerRef\"\n        />\n        <div\n          v-if=\"followsTabVisible\"\n          key=\"followees\"\n          :label=\"$t('user_card.followees')\"\n          :disabled=\"!user.friends_count\"\n        >\n          <FriendList :user-id=\"userId\">\n            <template v-slot:item=\"{item}\">\n              <FollowCard :user=\"item\" />\n            </template>\n          </FriendList>\n        </div>\n        <div\n          v-if=\"followersTabVisible\"\n          key=\"followers\"\n          :label=\"$t('user_card.followers')\"\n          :disabled=\"!user.followers_count\"\n        >\n          <FollowerList :user-id=\"userId\">\n            <template v-slot:item=\"{item}\">\n              <FollowCard\n                :user=\"item\"\n                :no-follows-you=\"isUs\"\n              />\n            </template>\n          </FollowerList>\n        </div>\n        <Timeline\n          key=\"media\"\n          :label=\"$t('user_card.media')\"\n          :disabled=\"!media.visibleStatuses.length\"\n          :embedded=\"true\"\n          :title=\"$t('user_card.media')\"\n          timeline-name=\"media\"\n          :timeline=\"media\"\n          :user-id=\"userId\"\n          :in-profile=\"true\"\n          :footerSlipgate=\"footerRef\"\n        />\n        <Timeline\n          v-if=\"isUs\"\n          key=\"favorites\"\n          :label=\"$t('user_card.favorites')\"\n          :disabled=\"!favorites.visibleStatuses.length\"\n          :embedded=\"true\"\n          :title=\"$t('user_card.favorites')\"\n          timeline-name=\"favorites\"\n          :timeline=\"favorites\"\n          :in-profile=\"true\"\n          :footerSlipgate=\"footerRef\"\n        />\n      </tab-switcher>\n      <div class=\"panel-footer\" :ref=\"setFooterRef\"></div>\n    </div>\n    <div\n      v-else\n      class=\"panel user-profile-placeholder\"\n    >\n      <div class=\"panel-heading\">\n        <div class=\"title\">\n          {{ $t('settings.profile_tab') }}\n        </div>\n      </div>\n      <div class=\"panel-body\">\n        <span v-if=\"error\">{{ error }}</span>\n        <FAIcon\n          v-else\n          spin\n          icon=\"circle-notch\"\n        />\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./user_profile.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.user-profile {\n  flex: 2;\n  flex-basis: 500px;\n\n  // No sticky header on user profile\n  --currentPanelStack: 1;\n\n  .user-profile-fields {\n    margin: 0 0.5em;\n\n    img {\n      object-fit: contain;\n      vertical-align: middle;\n      max-width: 100%;\n      max-height: 400px;\n\n      &.emoji {\n        width: 18px;\n        height: 18px;\n      }\n    }\n\n    .user-profile-field {\n      display: flex;\n      margin: 0.25em;\n      border: 1px solid var(--border, $fallback--border);\n      border-radius: $fallback--inputRadius;\n      border-radius: var(--inputRadius, $fallback--inputRadius);\n\n      .user-profile-field-name {\n        flex: 0 1 30%;\n        font-weight: 500;\n        text-align: right;\n        color: var(--lightText);\n        min-width: 120px;\n        border-right: 1px solid var(--border, $fallback--border);\n      }\n\n      .user-profile-field-value {\n        flex: 1 1 70%;\n        color: var(--text);\n        margin: 0 0 0 0.25em;\n      }\n\n      .user-profile-field-name, .user-profile-field-value {\n        line-height: 1.3;\n        text-overflow: ellipsis;\n        white-space: nowrap;\n        overflow: hidden;\n        padding: 0.5em 1.5em;\n        box-sizing: border-box;\n      }\n    }\n  }\n\n  .userlist-placeholder {\n    display: flex;\n    justify-content: center;\n    align-items: middle;\n    padding: 2em;\n  }\n}\n.user-profile-placeholder {\n  .panel-body {\n    display: flex;\n    justify-content: center;\n    align-items: middle;\n    padding: 7em;\n  }\n}\n</style>\n","<template>\n  <basic-user-card :user=\"user\">\n    <div class=\"follow-card-content-container\">\n      <span\n        v-if=\"isMe || (!noFollowsYou && relationship.followed_by)\"\n        class=\"faint\"\n      >\n        {{ isMe ? $t('user_card.its_you') : $t('user_card.follows_you') }}\n      </span>\n      <template v-if=\"!loggedIn\">\n        <div\n          v-if=\"!relationship.following\"\n          class=\"follow-card-follow-button\"\n        >\n          <RemoteFollow :user=\"user\" />\n        </div>\n      </template>\n      <template v-else-if=\"!isMe\">\n        <FollowButton\n          :relationship=\"relationship\"\n          :label-following=\"$t('user_card.follow_unfollow')\"\n          class=\"follow-card-follow-button\"\n          :user=\"user\"\n        />\n      </template>\n    </div>\n  </basic-user-card>\n</template>\n\n<script src=\"./follow_card.js\"></script>\n\n<style lang=\"scss\">\n.follow-card {\n  &-content-container {\n    flex-shrink: 0;\n    display: flex;\n    flex-direction: row;\n    justify-content: space-between;\n    flex-wrap: wrap;\n    line-height: 1.5em;\n  }\n\n  &-follow-button {\n    margin-top: 0.5em;\n    margin-left: auto;\n    width: 10em;\n  }\n}\n</style>\n","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport RemoteFollow from '../remote_follow/remote_follow.vue'\nimport FollowButton from '../follow_button/follow_button.vue'\n\nconst FollowCard = {\n  props: [\n    'user',\n    'noFollowsYou'\n  ],\n  components: {\n    BasicUserCard,\n    RemoteFollow,\n    FollowButton\n  },\n  computed: {\n    isMe () {\n      return this.$store.state.users.currentUser.id === this.user.id\n    },\n    loggedIn () {\n      return this.$store.state.users.currentUser\n    },\n    relationship () {\n      return this.$store.getters.relationship(this.user.id)\n    }\n  }\n}\n\nexport default FollowCard\n","import { render } from \"./follow_card.vue?vue&type=template&id=4030f5aa\"\nimport script from \"./follow_card.js?vue&type=script&lang=js\"\nexport * from \"./follow_card.js?vue&type=script&lang=js\"\n\nimport \"./follow_card.vue?vue&type=style&index=0&id=4030f5aa&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// eslint-disable-next-line no-unused\nimport { h } from 'vue'\nimport isEmpty from 'lodash/isEmpty'\nimport { getComponentProps } from '../../services/component_utils/component_utils'\nimport './with_load_more.scss'\n\nimport { FontAwesomeIcon as FAIcon } from '@fortawesome/vue-fontawesome'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch\n)\n\nconst withLoadMore = ({\n  fetch, // function to fetch entries and return a promise\n  select, // function to select data from store\n  unmounted, // function called at \"destroyed\" lifecycle\n  childPropName = 'entries', // name of the prop to be passed into the wrapped component\n  additionalPropNames = [] // additional prop name list of the wrapper component\n}) => (WrappedComponent) => {\n  const originalProps = Object.keys(getComponentProps(WrappedComponent))\n  const props = originalProps.filter(v => v !== childPropName).concat(additionalPropNames)\n\n  return {\n    props,\n    data () {\n      return {\n        loading: false,\n        bottomedOut: false,\n        error: false,\n        entries: []\n      }\n    },\n    created () {\n      window.addEventListener('scroll', this.scrollLoad)\n      if (this.entries.length === 0) {\n        this.fetchEntries()\n      }\n    },\n    unmounted () {\n      window.removeEventListener('scroll', this.scrollLoad)\n      unmounted && unmounted(this.$props, this.$store)\n    },\n    methods: {\n      // Entries is not a computed because computed can't track the dynamic\n      // selector for changes and won't trigger after fetch.\n      updateEntries () {\n        this.entries = select(this.$props, this.$store) || []\n      },\n      fetchEntries () {\n        if (!this.loading) {\n          this.loading = true\n          this.error = false\n          fetch(this.$props, this.$store)\n            .then((newEntries) => {\n              this.loading = false\n              this.bottomedOut = isEmpty(newEntries)\n            })\n            .catch(() => {\n              this.loading = false\n              this.error = true\n            })\n            .finally(() => {\n              this.updateEntries()\n            })\n        }\n      },\n      scrollLoad (e) {\n        const bodyBRect = document.body.getBoundingClientRect()\n        const height = Math.max(bodyBRect.height, -(bodyBRect.y))\n        if (this.loading === false &&\n          this.bottomedOut === false &&\n          this.$el.offsetHeight > 0 &&\n          (window.innerHeight + window.pageYOffset) >= (height - 750)\n        ) {\n          this.fetchEntries()\n        }\n      }\n    },\n    render () {\n      const props = {\n        ...this.$props,\n        [childPropName]: this.entries\n      }\n      const children = this.$slots\n      return (\n        <div class=\"with-load-more\">\n          <WrappedComponent {...props}>\n            {children}\n          </WrappedComponent>\n          <div class=\"with-load-more-footer\">\n            {this.error &&\n              <button onClick={this.fetchEntries} class=\"button-unstyled -link -fullwidth alert error\">\n                {this.$t('general.generic_error')}\n              </button>\n            }\n            {!this.error && this.loading && <FAIcon spin icon=\"circle-notch\"/>}\n            {!this.error && !this.loading && !this.bottomedOut && <a onClick={this.fetchEntries}>{this.$t('general.more')}</a>}\n          </div>\n        </div>\n      )\n    }\n  }\n}\n\nexport default withLoadMore\n","import get from 'lodash/get'\nimport UserCard from '../user_card/user_card.vue'\nimport FollowCard from '../follow_card/follow_card.vue'\nimport Timeline from '../timeline/timeline.vue'\nimport Conversation from '../conversation/conversation.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport List from '../list/list.vue'\nimport withLoadMore from '../../hocs/with_load_more/with_load_more'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch\n)\n\nconst FollowerList = withLoadMore({\n  fetch: (props, $store) => $store.dispatch('fetchFollowers', props.userId),\n  select: (props, $store) => get($store.getters.findUser(props.userId), 'followerIds', []).map(id => $store.getters.findUser(id)),\n  destroy: (props, $store) => $store.dispatch('clearFollowers', props.userId),\n  childPropName: 'items',\n  additionalPropNames: ['userId']\n})(List)\n\nconst FriendList = withLoadMore({\n  fetch: (props, $store) => $store.dispatch('fetchFriends', props.userId),\n  select: (props, $store) => get($store.getters.findUser(props.userId), 'friendIds', []).map(id => $store.getters.findUser(id)),\n  destroy: (props, $store) => $store.dispatch('clearFriends', props.userId),\n  childPropName: 'items',\n  additionalPropNames: ['userId']\n})(List)\n\nconst defaultTabKey = 'statuses'\n\nconst UserProfile = {\n  data () {\n    return {\n      error: false,\n      userId: null,\n      tab: defaultTabKey,\n      footerRef: null\n    }\n  },\n  created () {\n    const routeParams = this.$route.params\n    this.load(routeParams.name || routeParams.id)\n    this.tab = get(this.$route, 'query.tab', defaultTabKey)\n  },\n  unmounted () {\n    this.stopFetching()\n  },\n  computed: {\n    timeline () {\n      return this.$store.state.statuses.timelines.user\n    },\n    favorites () {\n      return this.$store.state.statuses.timelines.favorites\n    },\n    media () {\n      return this.$store.state.statuses.timelines.media\n    },\n    isUs () {\n      return this.userId && this.$store.state.users.currentUser.id &&\n        this.userId === this.$store.state.users.currentUser.id\n    },\n    user () {\n      return this.$store.getters.findUser(this.userId)\n    },\n    isExternal () {\n      return this.$route.name === 'external-user-profile'\n    },\n    followsTabVisible () {\n      return this.isUs || !this.user.hide_follows\n    },\n    followersTabVisible () {\n      return this.isUs || !this.user.hide_followers\n    }\n  },\n  methods: {\n    setFooterRef (el) {\n      this.footerRef = el\n    },\n    load (userNameOrId) {\n      const startFetchingTimeline = (timeline, userId) => {\n        // Clear timeline only if load another user's profile\n        if (userId !== this.$store.state.statuses.timelines[timeline].userId) {\n          this.$store.commit('clearTimeline', { timeline })\n        }\n        this.$store.dispatch('startFetchingTimeline', { timeline, userId })\n      }\n\n      const loadById = (userId) => {\n        this.userId = userId\n        startFetchingTimeline('user', userId)\n        startFetchingTimeline('media', userId)\n        if (this.isUs) {\n          startFetchingTimeline('favorites', userId)\n        }\n        // Fetch all pinned statuses immediately\n        this.$store.dispatch('fetchPinnedStatuses', userId)\n      }\n\n      // Reset view\n      this.userId = null\n      this.error = false\n\n      // Check if user data is already loaded in store\n      const user = this.$store.getters.findUser(userNameOrId)\n      if (user) {\n        loadById(user.id)\n      } else {\n        this.$store.dispatch('fetchUser', userNameOrId)\n          .then(({ id }) => loadById(id))\n          .catch((reason) => {\n            const errorMessage = get(reason, 'error.error')\n            if (errorMessage === 'No user with such user_id') { // Known error\n              this.error = this.$t('user_profile.profile_does_not_exist')\n            } else if (errorMessage) {\n              this.error = errorMessage\n            } else {\n              this.error = this.$t('user_profile.profile_loading_error')\n            }\n          })\n      }\n    },\n    stopFetching () {\n      this.$store.dispatch('stopFetchingTimeline', 'user')\n      this.$store.dispatch('stopFetchingTimeline', 'favorites')\n      this.$store.dispatch('stopFetchingTimeline', 'media')\n    },\n    switchUser (userNameOrId) {\n      this.stopFetching()\n      this.load(userNameOrId)\n    },\n    onTabSwitch (tab) {\n      this.tab = tab\n      this.$router.replace({ query: { tab } })\n    },\n    linkClicked ({ target }) {\n      if (target.tagName === 'SPAN') {\n        target = target.parentNode\n      }\n      if (target.tagName === 'A') {\n        window.open(target.href, '_blank')\n      }\n    }\n  },\n  watch: {\n    '$route.params.id': function (newVal) {\n      if (newVal) {\n        this.switchUser(newVal)\n      }\n    },\n    '$route.params.name': function (newVal) {\n      if (newVal) {\n        this.switchUser(newVal)\n      }\n    },\n    '$route.query': function (newVal) {\n      this.tab = newVal.tab || defaultTabKey\n    }\n  },\n  components: {\n    UserCard,\n    Timeline,\n    FollowerList,\n    FriendList,\n    FollowCard,\n    TabSwitcher,\n    Conversation,\n    RichContent\n  }\n}\n\nexport default UserProfile\n","import { render } from \"./user_profile.vue?vue&type=template&id=56ed1f7e\"\nimport script from \"./user_profile.js?vue&type=script&lang=js\"\nexport * from \"./user_profile.js?vue&type=script&lang=js\"\n\nimport \"./user_profile.vue?vue&type=style&index=0&id=56ed1f7e&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"panel panel-default\">\n    <div class=\"panel-heading\">\n      <div class=\"title\">\n        {{ $t('nav.search') }}\n      </div>\n    </div>\n    <div class=\"search-input-container\">\n      <input\n        ref=\"searchInput\"\n        v-model=\"searchTerm\"\n        class=\"search-input\"\n        :placeholder=\"$t('nav.search')\"\n        @keyup.enter=\"newQuery(searchTerm)\"\n      >\n      <button\n        class=\"btn button-default search-button\"\n        type=\"submit\"\n        @click=\"newQuery(searchTerm)\"\n      >\n        <FAIcon icon=\"search\" />\n      </button>\n    </div>\n    <div\n      v-if=\"loading\"\n      class=\"text-center loading-icon\"\n    >\n      <FAIcon\n        icon=\"circle-notch\"\n        spin\n        size=\"lg\"\n      />\n    </div>\n    <div v-else-if=\"loaded\">\n      <div class=\"search-nav-heading\">\n        <tab-switcher\n          ref=\"tabSwitcher\"\n          :on-switch=\"onResultTabSwitch\"\n          :active-tab=\"currenResultTab\"\n        >\n          <span\n            key=\"statuses\"\n            :label=\"$t('user_card.statuses') + resultCount('visibleStatuses')\"\n          />\n          <span\n            key=\"people\"\n            :label=\"$t('search.people') + resultCount('users')\"\n          />\n          <span\n            key=\"hashtags\"\n            :label=\"$t('search.hashtags') + resultCount('hashtags')\"\n          />\n        </tab-switcher>\n      </div>\n    </div>\n    <div class=\"panel-body\">\n      <div v-if=\"currenResultTab === 'statuses'\">\n        <div\n          v-if=\"visibleStatuses.length === 0 && !loading && loaded\"\n          class=\"search-result-heading\"\n        >\n          <h4>{{ $t('search.no_results') }}</h4>\n        </div>\n        <Status\n          v-for=\"status in visibleStatuses\"\n          :key=\"status.id\"\n          :collapsable=\"false\"\n          :expandable=\"false\"\n          :compact=\"false\"\n          class=\"search-result\"\n          :statusoid=\"status\"\n          :no-heading=\"false\"\n        />\n      </div>\n      <div v-else-if=\"currenResultTab === 'people'\">\n        <div\n          v-if=\"users.length === 0 && !loading && loaded\"\n          class=\"search-result-heading\"\n        >\n          <h4>{{ $t('search.no_results') }}</h4>\n        </div>\n        <FollowCard\n          v-for=\"user in users\"\n          :key=\"user.id\"\n          :user=\"user\"\n          class=\"list-item search-result\"\n        />\n      </div>\n      <div v-else-if=\"currenResultTab === 'hashtags'\">\n        <div\n          v-if=\"hashtags.length === 0 && !loading && loaded\"\n          class=\"search-result-heading\"\n        >\n          <h4>{{ $t('search.no_results') }}</h4>\n        </div>\n        <div\n          v-for=\"hashtag in hashtags\"\n          :key=\"hashtag.url\"\n          class=\"status trend search-result\"\n        >\n          <div class=\"hashtag\">\n            <router-link :to=\"{ name: 'tag-timeline', params: { tag: hashtag.name } }\">\n              #{{ hashtag.name }}\n            </router-link>\n            <div v-if=\"lastHistoryRecord(hashtag)\">\n              <span v-if=\"lastHistoryRecord(hashtag).accounts == 1\">\n                {{ $t('search.person_talking', { count: lastHistoryRecord(hashtag).accounts }) }}\n              </span>\n              <span v-else>\n                {{ $t('search.people_talking', { count: lastHistoryRecord(hashtag).accounts }) }}\n              </span>\n            </div>\n          </div>\n          <div\n            v-if=\"lastHistoryRecord(hashtag)\"\n            class=\"count\"\n          >\n            {{ lastHistoryRecord(hashtag).uses }}\n          </div>\n        </div>\n      </div>\n    </div>\n    <div class=\"search-result-footer text-center panel-footer faint\" />\n  </div>\n</template>\n\n<script src=\"./search.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.search-result-heading {\n  color: $fallback--faint;\n  color: var(--faint, $fallback--faint);\n  padding: 0.75rem;\n  text-align: center;\n}\n\n@media all and (max-width: 800px) {\n  .search-nav-heading {\n    .tab-switcher .tabs .tab-wrapper {\n      display: block;\n      justify-content: center;\n      flex: 1 1 auto;\n      text-align: center;\n    }\n  }\n}\n\n.search-result {\n  box-sizing: border-box;\n  border-bottom: 1px solid;\n  border-color: $fallback--border;\n  border-color: var(--border, $fallback--border);\n}\n\n.search-result-footer {\n  border-width: 1px 0 0 0;\n  border-style: solid;\n  border-color: var(--border, $fallback--border);\n  padding: 10px;\n  background-color: $fallback--fg;\n  background-color: var(--panel, $fallback--fg);\n}\n\n.search-input-container {\n  padding: 0.8rem;\n  display: flex;\n  justify-content: center;\n\n  .search-input {\n    width: 100%;\n    line-height: 1.125rem;\n    font-size: 1rem;\n    padding: 0.5rem;\n    box-sizing: border-box;\n  }\n\n  .search-button {\n    margin-left: 0.5em;\n  }\n}\n\n.loading-icon {\n  padding: 1em;\n}\n\n.trend {\n  display: flex;\n  align-items: center;\n\n  .hashtag {\n    flex: 1 1 auto;\n    color: $fallback--text;\n    color: var(--text, $fallback--text);\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n\n  .count {\n    flex: 0 0 auto;\n    width: 2rem;\n    font-size: 1.5rem;\n    line-height: 2.25rem;\n    font-weight: 500;\n    text-align: center;\n    color: $fallback--text;\n    color: var(--text, $fallback--text);\n  }\n}\n\n</style>\n","import FollowCard from '../follow_card/follow_card.vue'\nimport Conversation from '../conversation/conversation.vue'\nimport Status from '../status/status.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\nimport map from 'lodash/map'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faCircleNotch,\n  faSearch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch,\n  faSearch\n)\n\nconst Search = {\n  components: {\n    FollowCard,\n    Conversation,\n    Status,\n    TabSwitcher\n  },\n  props: [\n    'query'\n  ],\n  data () {\n    return {\n      loaded: false,\n      loading: false,\n      searchTerm: this.query || '',\n      userIds: [],\n      statuses: [],\n      hashtags: [],\n      currenResultTab: 'statuses'\n    }\n  },\n  computed: {\n    users () {\n      return this.userIds.map(userId => this.$store.getters.findUser(userId))\n    },\n    visibleStatuses () {\n      const allStatusesObject = this.$store.state.statuses.allStatusesObject\n\n      return this.statuses.filter(status =>\n        allStatusesObject[status.id] && !allStatusesObject[status.id].deleted\n      )\n    }\n  },\n  mounted () {\n    this.search(this.query)\n  },\n  watch: {\n    query (newValue) {\n      this.searchTerm = newValue\n      this.search(newValue)\n    }\n  },\n  methods: {\n    newQuery (query) {\n      this.$router.push({ name: 'search', query: { query } })\n      this.$refs.searchInput.focus()\n    },\n    search (query) {\n      if (!query) {\n        this.loading = false\n        return\n      }\n\n      this.loading = true\n      this.userIds = []\n      this.statuses = []\n      this.hashtags = []\n      this.$refs.searchInput.blur()\n\n      this.$store.dispatch('search', { q: query, resolve: true })\n        .then(data => {\n          this.loading = false\n          this.userIds = map(data.accounts, 'id')\n          this.statuses = data.statuses\n          this.hashtags = data.hashtags\n          this.currenResultTab = this.getActiveTab()\n          this.loaded = true\n        })\n    },\n    resultCount (tabName) {\n      const length = this[tabName].length\n      return length === 0 ? '' : ` (${length})`\n    },\n    onResultTabSwitch (key) {\n      this.currenResultTab = key\n    },\n    getActiveTab () {\n      if (this.visibleStatuses.length > 0) {\n        return 'statuses'\n      } else if (this.users.length > 0) {\n        return 'people'\n      } else if (this.hashtags.length > 0) {\n        return 'hashtags'\n      }\n\n      return 'statuses'\n    },\n    lastHistoryRecord (hashtag) {\n      return hashtag.history && hashtag.history[0]\n    }\n  }\n}\n\nexport default Search\n","import { render } from \"./search.vue?vue&type=template&id=52f57ebe\"\nimport script from \"./search.js?vue&type=script&lang=js\"\nexport * from \"./search.js?vue&type=script&lang=js\"\n\nimport \"./search.vue?vue&type=style&index=0&id=52f57ebe&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"settings panel panel-default\">\n    <div class=\"panel-heading\">\n      {{ $t('registration.registration') }}\n    </div>\n    <div class=\"panel-body\">\n      <form\n        class=\"registration-form\"\n        @submit.prevent=\"submit(user)\"\n      >\n        <div class=\"container\">\n          <div class=\"text-fields\">\n            <div\n              class=\"form-group\"\n              :class=\"{ 'form-group--error': v$.user.username.$error }\"\n            >\n              <label\n                class=\"form--label\"\n                for=\"sign-up-username\"\n              >{{ $t('login.username') }}</label>\n              <input\n                id=\"sign-up-username\"\n                v-model.trim=\"v$.user.username.$model\"\n                :disabled=\"isPending\"\n                class=\"form-control\"\n                :placeholder=\"$t('registration.username_placeholder')\"\n              >\n            </div>\n            <div\n              v-if=\"v$.user.username.$dirty\"\n              class=\"form-error\"\n            >\n              <ul>\n                <li v-if=\"!v$.user.username.required\">\n                  <span>{{ $t('registration.validations.username_required') }}</span>\n                </li>\n              </ul>\n            </div>\n\n            <div\n              class=\"form-group\"\n              :class=\"{ 'form-group--error': v$.user.fullname.$error }\"\n            >\n              <label\n                class=\"form--label\"\n                for=\"sign-up-fullname\"\n              >{{ $t('registration.fullname') }}</label>\n              <input\n                id=\"sign-up-fullname\"\n                v-model.trim=\"v$.user.fullname.$model\"\n                :disabled=\"isPending\"\n                class=\"form-control\"\n                :placeholder=\"$t('registration.fullname_placeholder')\"\n              >\n            </div>\n            <div\n              v-if=\"v$.user.fullname.$dirty\"\n              class=\"form-error\"\n            >\n              <ul>\n                <li v-if=\"!v$.user.fullname.required\">\n                  <span>{{ $t('registration.validations.fullname_required') }}</span>\n                </li>\n              </ul>\n            </div>\n\n            <div\n              class=\"form-group\"\n              :class=\"{ 'form-group--error': v$.user.email.$error }\"\n            >\n              <label\n                class=\"form--label\"\n                for=\"email\"\n              >{{ $t('registration.email') }}</label>\n              <input\n                id=\"email\"\n                v-model=\"v$.user.email.$model\"\n                :disabled=\"isPending\"\n                class=\"form-control\"\n                type=\"email\"\n              >\n            </div>\n            <div\n              v-if=\"v$.user.email.$dirty\"\n              class=\"form-error\"\n            >\n              <ul>\n                <li v-if=\"!v$.user.email.required\">\n                  <span>{{ $t('registration.validations.email_required') }}</span>\n                </li>\n              </ul>\n            </div>\n\n            <div class=\"form-group\">\n              <label\n                class=\"form--label\"\n                for=\"bio\"\n              >{{ $t('registration.bio') }} ({{ $t('general.optional') }})</label>\n              <textarea\n                id=\"bio\"\n                v-model=\"user.bio\"\n                :disabled=\"isPending\"\n                class=\"form-control\"\n                :placeholder=\"bioPlaceholder\"\n              />\n            </div>\n\n            <div\n              class=\"form-group\"\n              :class=\"{ 'form-group--error': v$.user.password.$error }\"\n            >\n              <label\n                class=\"form--label\"\n                for=\"sign-up-password\"\n              >{{ $t('login.password') }}</label>\n              <input\n                id=\"sign-up-password\"\n                v-model=\"user.password\"\n                :disabled=\"isPending\"\n                class=\"form-control\"\n                type=\"password\"\n              >\n            </div>\n            <div\n              v-if=\"v$.user.password.$dirty\"\n              class=\"form-error\"\n            >\n              <ul>\n                <li v-if=\"!v$.user.password.required\">\n                  <span>{{ $t('registration.validations.password_required') }}</span>\n                </li>\n              </ul>\n            </div>\n\n            <div\n              class=\"form-group\"\n              :class=\"{ 'form-group--error': v$.user.confirm.$error }\"\n            >\n              <label\n                class=\"form--label\"\n                for=\"sign-up-password-confirmation\"\n              >{{ $t('registration.password_confirm') }}</label>\n              <input\n                id=\"sign-up-password-confirmation\"\n                v-model=\"user.confirm\"\n                :disabled=\"isPending\"\n                class=\"form-control\"\n                type=\"password\"\n              >\n            </div>\n            <div\n              v-if=\"v$.user.confirm.$dirty\"\n              class=\"form-error\"\n            >\n              <ul>\n                <li v-if=\"!v$.user.confirm.required\">\n                  <span>{{ $t('registration.validations.password_confirmation_required') }}</span>\n                </li>\n                <li v-if=\"!v$.user.confirm.sameAsPassword\">\n                  <span>{{ $t('registration.validations.password_confirmation_match') }}</span>\n                </li>\n              </ul>\n            </div>\n\n            <div\n              class=\"form-group\"\n              :class=\"{ 'form-group--error': v$.user.language.$error }\"\n            >\n              <interface-language-switcher\n                for=\"email-language\"\n                :prompt-text=\"$t('registration.email_language')\"\n                :language=\"v$.user.language.$model\"\n                :set-language=\"val => v$.user.language.$model = val\"\n              />\n            </div>\n\n            <div\n              v-if=\"accountApprovalRequired\"\n              class=\"form-group\"\n            >\n              <label\n                class=\"form--label\"\n                for=\"reason\"\n              >{{ $t('registration.reason') }}</label>\n              <textarea\n                id=\"reason\"\n                v-model=\"user.reason\"\n                :disabled=\"isPending\"\n                class=\"form-control\"\n                :placeholder=\"reasonPlaceholder\"\n              />\n            </div>\n\n            <div\n              v-if=\"captcha.type != 'none'\"\n              id=\"captcha-group\"\n              class=\"form-group\"\n            >\n              <label\n                class=\"form--label\"\n                for=\"captcha-label\"\n              >{{ $t('registration.captcha') }}</label>\n\n              <template v-if=\"['kocaptcha', 'native'].includes(captcha.type)\">\n                <img\n                  :src=\"captcha.url\"\n                  @click=\"setCaptcha\"\n                >\n\n                <sub>{{ $t('registration.new_captcha') }}</sub>\n\n                <input\n                  id=\"captcha-answer\"\n                  v-model=\"captcha.solution\"\n                  :disabled=\"isPending\"\n                  class=\"form-control\"\n                  type=\"text\"\n                  autocomplete=\"off\"\n                  autocorrect=\"off\"\n                  autocapitalize=\"off\"\n                  spellcheck=\"false\"\n                >\n              </template>\n            </div>\n\n            <div\n              v-if=\"token\"\n              class=\"form-group\"\n            >\n              <label for=\"token\">{{ $t('registration.token') }}</label>\n              <input\n                id=\"token\"\n                v-model=\"token\"\n                disabled=\"true\"\n                class=\"form-control\"\n                type=\"text\"\n              >\n            </div>\n            <div class=\"form-group\">\n              <button\n                :disabled=\"isPending\"\n                type=\"submit\"\n                class=\"btn button-default\"\n              >\n                {{ $t('registration.register') }}\n              </button>\n            </div>\n          </div>\n\n          <!-- eslint-disable vue/no-v-html -->\n          <div\n            class=\"terms-of-service\"\n            v-html=\"termsOfService\"\n          />\n          <!-- eslint-enable vue/no-v-html -->\n        </div>\n        <div\n          v-if=\"serverValidationErrors.length\"\n          class=\"form-group\"\n        >\n          <div class=\"alert error\">\n            <span\n              v-for=\"error in serverValidationErrors\"\n              :key=\"error\"\n            >{{ error }}</span>\n          </div>\n        </div>\n      </form>\n    </div>\n  </div>\n</template>\n\n<script src=\"./registration.js\"></script>\n<style lang=\"scss\">\n@import '../../_variables.scss';\n$validations-cRed: #f04124;\n\n.registration-form {\n  display: flex;\n  flex-direction: column;\n  margin: 0.6em;\n\n  .container {\n    display: flex;\n    flex-direction: row;\n\n    > * {\n      min-width: 0;\n    }\n  }\n\n  .terms-of-service {\n    flex: 0 1 50%;\n    margin: 0.8em;\n  }\n\n  .text-fields {\n    margin-top: 0.6em;\n    flex: 1 0;\n    display: flex;\n    flex-direction: column;\n  }\n\n  textarea {\n    min-height: 100px;\n    resize: vertical;\n  }\n\n  .form-group {\n    display: flex;\n    flex-direction: column;\n    padding: 0.3em 0;\n    line-height: 2;\n    margin-bottom: 1em;\n  }\n\n  .form-group--error {\n    animation-name: shakeError;\n    animation-duration: .6s;\n    animation-timing-function: ease-in-out;\n  }\n\n  .form-group--error .form--label {\n    color: $validations-cRed;\n    color: var(--cRed, $validations-cRed);\n  }\n\n  .form-error {\n    margin-top: -0.7em;\n    text-align: left;\n\n    span {\n      font-size: 0.85em;\n    }\n  }\n\n  .form-error ul {\n    list-style: none;\n    padding: 0 0 0 5px;\n    margin-top: 0;\n\n    li::before {\n      content: \"• \";\n    }\n  }\n\n  form textarea {\n    line-height:16px;\n    resize: vertical;\n  }\n\n  .captcha {\n    max-width: 350px;\n    margin-bottom: 0.4em;\n  }\n\n  .btn {\n    margin-top: 0.6em;\n    height: 2em;\n  }\n\n  .error {\n    text-align: center;\n  }\n}\n\n@media all and (max-width: 800px) {\n  .registration-form .container {\n    flex-direction: column-reverse;\n  }\n}\n</style>\n","import useVuelidate from '@vuelidate/core'\nimport { required, requiredIf, sameAs } from '@vuelidate/validators'\nimport { mapActions, mapState } from 'vuex'\nimport InterfaceLanguageSwitcher from '../interface_language_switcher/interface_language_switcher.vue'\nimport localeService from '../../services/locale/locale.service.js'\n\nconst registration = {\n  setup () { return { v$: useVuelidate() } },\n  data: () => ({\n    user: {\n      email: '',\n      fullname: '',\n      username: '',\n      password: '',\n      confirm: '',\n      reason: '',\n      language: ''\n    },\n    captcha: {}\n  }),\n  components: {\n    InterfaceLanguageSwitcher\n  },\n  validations () {\n    return {\n      user: {\n        email: { required: requiredIf(() => this.accountActivationRequired) },\n        username: { required },\n        fullname: { required },\n        password: { required },\n        confirm: {\n          required,\n          sameAs: sameAs(this.user.password)\n        },\n        reason: { required: requiredIf(() => this.accountApprovalRequired) },\n        language: {}\n      }\n    }\n  },\n  created () {\n    if ((!this.registrationOpen && !this.token) || this.signedIn) {\n      this.$router.push({ name: 'root' })\n    }\n\n    this.setCaptcha()\n  },\n  computed: {\n    token () { return this.$route.params.token },\n    bioPlaceholder () {\n      return this.replaceNewlines(this.$t('registration.bio_placeholder'))\n    },\n    reasonPlaceholder () {\n      return this.replaceNewlines(this.$t('registration.reason_placeholder'))\n    },\n    ...mapState({\n      registrationOpen: (state) => state.instance.registrationOpen,\n      signedIn: (state) => !!state.users.currentUser,\n      isPending: (state) => state.users.signUpPending,\n      serverValidationErrors: (state) => state.users.signUpErrors,\n      termsOfService: (state) => state.instance.tos,\n      accountActivationRequired: (state) => state.instance.accountActivationRequired,\n      accountApprovalRequired: (state) => state.instance.accountApprovalRequired\n    })\n  },\n  methods: {\n    ...mapActions(['signUp', 'getCaptcha']),\n    async submit () {\n      this.user.nickname = this.user.username\n      this.user.token = this.token\n\n      this.user.captcha_solution = this.captcha.solution\n      this.user.captcha_token = this.captcha.token\n      this.user.captcha_answer_data = this.captcha.answer_data\n      if (this.user.language) {\n        this.user.language = localeService.internalToBackendLocale(this.user.language)\n      }\n\n      this.v$.$touch()\n\n      if (!this.v$.$invalid) {\n        try {\n          await this.signUp(this.user)\n          this.$router.push({ name: 'friends' })\n        } catch (error) {\n          console.warn('Registration failed: ', error)\n          this.setCaptcha()\n        }\n      }\n    },\n    setCaptcha () {\n      this.getCaptcha().then(cpt => { this.captcha = cpt })\n    },\n    replaceNewlines (str) {\n      return str.replace(/\\s*\\n\\s*/g, ' \\n')\n    }\n  }\n}\n\nexport default registration\n","import { render } from \"./registration.vue?vue&type=template&id=c19f87d0\"\nimport script from \"./registration.js?vue&type=script&lang=js\"\nexport * from \"./registration.js?vue&type=script&lang=js\"\n\nimport \"./registration.vue?vue&type=style&index=0&id=c19f87d0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"settings panel panel-default\">\n    <div class=\"panel-heading\">\n      {{ $t('password_reset.password_reset') }}\n    </div>\n    <div class=\"panel-body\">\n      <form\n        class=\"password-reset-form\"\n        @submit.prevent=\"submit\"\n      >\n        <div class=\"container\">\n          <div v-if=\"!mailerEnabled\">\n            <p v-if=\"passwordResetRequested\">\n              {{ $t('password_reset.password_reset_required_but_mailer_is_disabled') }}\n            </p>\n            <p v-else>\n              {{ $t('password_reset.password_reset_disabled') }}\n            </p>\n          </div>\n          <div v-else-if=\"success || throttled\">\n            <p v-if=\"success\">\n              {{ $t('password_reset.check_email') }}\n            </p>\n            <div class=\"form-group text-center\">\n              <router-link :to=\"{name: 'root'}\">\n                {{ $t('password_reset.return_home') }}\n              </router-link>\n            </div>\n          </div>\n          <div v-else>\n            <p\n              v-if=\"passwordResetRequested\"\n              class=\"password-reset-required error\"\n            >\n              {{ $t('password_reset.password_reset_required') }}\n            </p>\n            <p>\n              {{ $t('password_reset.instruction') }}\n            </p>\n            <div class=\"form-group\">\n              <input\n                ref=\"email\"\n                v-model=\"user.email\"\n                :disabled=\"isPending\"\n                :placeholder=\"$t('password_reset.placeholder')\"\n                class=\"form-control\"\n                type=\"input\"\n              >\n            </div>\n            <div class=\"form-group\">\n              <button\n                :disabled=\"isPending\"\n                type=\"submit\"\n                class=\"btn button-default btn-block\"\n              >\n                {{ $t('settings.save') }}\n              </button>\n            </div>\n          </div>\n          <p\n            v-if=\"error\"\n            class=\"alert error notice-dismissible\"\n          >\n            <span>{{ error }}</span>\n            <a\n              class=\"fa-scale-110 fa-old-padding dismiss\"\n              @click.prevent=\"dismissError()\"\n            >\n              <FAIcon icon=\"times\" />\n            </a>\n          </p>\n        </div>\n      </form>\n    </div>\n  </div>\n</template>\n\n<script src=\"./password_reset.js\"></script>\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.password-reset-form {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  margin: 0.6em;\n\n  .container {\n    display: flex;\n    flex: 1 0;\n    flex-direction: column;\n    margin-top: 0.6em;\n    max-width: 18rem;\n\n    > * {\n      min-width: 0;\n    }\n  }\n\n  .form-group {\n    display: flex;\n    flex-direction: column;\n    margin-bottom: 1em;\n    padding: 0.3em 0;\n    line-height: 1.85em;\n  }\n\n  .error {\n    text-align: center;\n    animation-name: shakeError;\n    animation-duration: 0.4s;\n    animation-timing-function: ease-in-out;\n  }\n\n  .alert {\n    padding: 0.5em;\n    margin: 0.3em 0 1em;\n  }\n\n  .password-reset-required {\n    background-color: var(--alertError, $fallback--alertError);\n    padding: 10px 0;\n  }\n\n  .notice-dismissible {\n    padding-right: 2rem;\n  }\n\n  .dismiss {\n    cursor: pointer;\n  }\n}\n\n</style>\n","import { reduce } from 'lodash'\n\nconst MASTODON_PASSWORD_RESET_URL = `/auth/password`\n\nconst resetPassword = ({ instance, email }) => {\n  const params = { email }\n  const query = reduce(params, (acc, v, k) => {\n    const encoded = `${k}=${encodeURIComponent(v)}`\n    return `${acc}&${encoded}`\n  }, '')\n  const url = `${instance}${MASTODON_PASSWORD_RESET_URL}?${query}`\n\n  return window.fetch(url, {\n    method: 'POST'\n  })\n}\n\nexport default resetPassword\n","import { mapState } from 'vuex'\nimport passwordResetApi from '../../services/new_api/password_reset.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes\n)\n\nconst passwordReset = {\n  data: () => ({\n    user: {\n      email: ''\n    },\n    isPending: false,\n    success: false,\n    throttled: false,\n    error: null\n  }),\n  computed: {\n    ...mapState({\n      signedIn: (state) => !!state.users.currentUser,\n      instance: state => state.instance\n    }),\n    mailerEnabled () {\n      return this.instance.mailerEnabled\n    }\n  },\n  created () {\n    if (this.signedIn) {\n      this.$router.push({ name: 'root' })\n    }\n  },\n  props: {\n    passwordResetRequested: {\n      default: false,\n      type: Boolean\n    }\n  },\n  methods: {\n    dismissError () {\n      this.error = null\n    },\n    submit () {\n      this.isPending = true\n      const email = this.user.email\n      const instance = this.instance.server\n\n      passwordResetApi({ instance, email }).then(({ status }) => {\n        this.isPending = false\n        this.user.email = ''\n\n        if (status === 204) {\n          this.success = true\n          this.error = null\n        } else if (status === 429) {\n          this.throttled = true\n          this.error = this.$t('password_reset.too_many_requests')\n        }\n      }).catch(() => {\n        this.isPending = false\n        this.user.email = ''\n        this.error = this.$t('general.generic_error')\n      })\n    }\n  }\n}\n\nexport default passwordReset\n","import { render } from \"./password_reset.vue?vue&type=template&id=3a677309\"\nimport script from \"./password_reset.js?vue&type=script&lang=js\"\nexport * from \"./password_reset.js?vue&type=script&lang=js\"\n\nimport \"./password_reset.vue?vue&type=style&index=0&id=3a677309&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"settings panel panel-default\">\n    <div class=\"panel-heading\">\n      <div class=\"title\">\n        {{ $t('nav.friend_requests') }}\n      </div>\n    </div>\n    <div class=\"panel-body\">\n      <FollowRequestCard\n        v-for=\"request in requests\"\n        :key=\"request.id\"\n        :user=\"request\"\n        class=\"list-item\"\n      />\n    </div>\n  </div>\n</template>\n\n<script src=\"./follow_requests.js\"></script>\n","<template>\n  <basic-user-card :user=\"user\">\n    <div class=\"follow-request-card-content-container\">\n      <button\n        class=\"btn button-default\"\n        @click=\"approveUser\"\n      >\n        {{ $t('user_card.approve') }}\n      </button>\n      <button\n        class=\"btn button-default\"\n        @click=\"denyUser\"\n      >\n        {{ $t('user_card.deny') }}\n      </button>\n    </div>\n  </basic-user-card>\n</template>\n\n<script src=\"./follow_request_card.js\"></script>\n\n<style lang=\"scss\">\n.follow-request-card-content-container {\n  display: flex;\n  flex-direction: row;\n  flex-wrap: wrap;\n  button {\n    margin-top: 0.5em;\n    margin-right: 0.5em;\n    flex: 1 1;\n    max-width: 12em;\n    min-width: 8em;\n\n    &:last-child {\n      margin-right: 0;\n    }\n  }\n}\n</style>\n","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport { notificationsFromStore } from '../../services/notification_utils/notification_utils.js'\n\nconst FollowRequestCard = {\n  props: ['user'],\n  components: {\n    BasicUserCard\n  },\n  methods: {\n    findFollowRequestNotificationId () {\n      const notif = notificationsFromStore(this.$store).find(\n        (notif) => notif.from_profile.id === this.user.id && notif.type === 'follow_request'\n      )\n      return notif && notif.id\n    },\n    approveUser () {\n      this.$store.state.api.backendInteractor.approveUser({ id: this.user.id })\n      this.$store.dispatch('removeFollowRequest', this.user)\n\n      const notifId = this.findFollowRequestNotificationId()\n      this.$store.dispatch('markSingleNotificationAsSeen', { id: notifId })\n      this.$store.dispatch('updateNotification', {\n        id: notifId,\n        updater: notification => {\n          notification.type = 'follow'\n        }\n      })\n    },\n    denyUser () {\n      const notifId = this.findFollowRequestNotificationId()\n      this.$store.state.api.backendInteractor.denyUser({ id: this.user.id })\n        .then(() => {\n          this.$store.dispatch('dismissNotificationLocal', { id: notifId })\n          this.$store.dispatch('removeFollowRequest', this.user)\n        })\n    }\n  }\n}\n\nexport default FollowRequestCard\n","import { render } from \"./follow_request_card.vue?vue&type=template&id=84be1288\"\nimport script from \"./follow_request_card.js?vue&type=script&lang=js\"\nexport * from \"./follow_request_card.js?vue&type=script&lang=js\"\n\nimport \"./follow_request_card.vue?vue&type=style&index=0&id=84be1288&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import FollowRequestCard from '../follow_request_card/follow_request_card.vue'\n\nconst FollowRequests = {\n  components: {\n    FollowRequestCard\n  },\n  computed: {\n    requests () {\n      return this.$store.state.api.followRequests\n    }\n  }\n}\n\nexport default FollowRequests\n","import { render } from \"./follow_requests.vue?vue&type=template&id=62e19784\"\nimport script from \"./follow_requests.js?vue&type=script&lang=js\"\nexport * from \"./follow_requests.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import oauth from '../../services/new_api/oauth.js'\n\nconst oac = {\n  props: ['code'],\n  mounted () {\n    if (this.code) {\n      const { clientId, clientSecret } = this.$store.state.oauth\n\n      oauth.getToken({\n        clientId,\n        clientSecret,\n        instance: this.$store.state.instance.server,\n        code: this.code\n      }).then((result) => {\n        this.$store.commit('setToken', result.access_token)\n        this.$store.dispatch('loginUser', result.access_token)\n        this.$router.push({ name: 'friends' })\n      })\n    }\n  }\n}\n\nexport default oac\n","import { render } from \"./oauth_callback.vue?vue&type=template&id=f514124c\"\nimport script from \"./oauth_callback.js?vue&type=script&lang=js\"\nexport * from \"./oauth_callback.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <h1>...</h1>\n</template>\n\n<script src=\"./oauth_callback.js\"></script>\n","<template>\n  <div class=\"panel panel-default\">\n    <div class=\"panel-heading\">\n      {{ $t('who_to_follow.who_to_follow') }}\n    </div>\n    <div class=\"panel-body\">\n      <FollowCard\n        v-for=\"user in users\"\n        :key=\"user.id\"\n        :user=\"user\"\n        class=\"list-item\"\n      />\n    </div>\n  </div>\n</template>\n\n<script src=\"./who_to_follow.js\"></script>\n\n<style lang=\"scss\">\n</style>\n","import apiService from '../../services/api/api.service.js'\nimport FollowCard from '../follow_card/follow_card.vue'\n\nconst WhoToFollow = {\n  components: {\n    FollowCard\n  },\n  data () {\n    return {\n      users: []\n    }\n  },\n  mounted () {\n    this.getWhoToFollow()\n  },\n  methods: {\n    showWhoToFollow (reply) {\n      reply.forEach((i, index) => {\n        this.$store.state.api.backendInteractor.fetchUser({ id: i.acct })\n          .then((externalUser) => {\n            if (!externalUser.error) {\n              this.$store.commit('addNewUsers', [externalUser])\n              this.users.push(externalUser)\n            }\n          })\n      })\n    },\n    getWhoToFollow () {\n      const credentials = this.$store.state.users.currentUser.credentials\n      if (credentials) {\n        apiService.suggestions({ credentials: credentials })\n          .then((reply) => {\n            this.showWhoToFollow(reply)\n          })\n      }\n    }\n  }\n}\n\nexport default WhoToFollow\n","import { render } from \"./who_to_follow.vue?vue&type=template&id=4f8c3288\"\nimport script from \"./who_to_follow.js?vue&type=script&lang=js\"\nexport * from \"./who_to_follow.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"column-inner\">\n    <instance-specific-panel v-if=\"showInstanceSpecificPanel\" />\n    <staff-panel />\n    <terms-of-service-panel />\n    <MRFTransparencyPanel />\n    <features-panel v-if=\"showFeaturesPanel\" />\n  </div>\n</template>\n\n<script src=\"./about.js\" ></script>\n\n<style lang=\"scss\">\n</style>\n","<template>\n  <div>\n    <div class=\"panel panel-default\">\n      <div class=\"panel-body\">\n        <!-- eslint-disable vue/no-v-html -->\n        <div\n          class=\"tos-content\"\n          v-html=\"content\"\n        />\n      <!-- eslint-enable vue/no-v-html -->\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./terms_of_service_panel.js\" ></script>\n\n<style lang=\"scss\">\n.tos-content {\n  margin: 1em\n}\n</style>\n","const TermsOfServicePanel = {\n  computed: {\n    content () {\n      return this.$store.state.instance.tos\n    }\n  }\n}\n\nexport default TermsOfServicePanel\n","import { render } from \"./terms_of_service_panel.vue?vue&type=template&id=687e38f6\"\nimport script from \"./terms_of_service_panel.js?vue&type=script&lang=js\"\nexport * from \"./terms_of_service_panel.js?vue&type=script&lang=js\"\n\nimport \"./terms_of_service_panel.vue?vue&type=style&index=0&id=687e38f6&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"staff-panel\">\n    <div class=\"panel panel-default base01-background\">\n      <div class=\"panel-heading timeline-heading base02-background\">\n        <div class=\"title\">\n          {{ $t(\"about.staff\") }}\n        </div>\n      </div>\n      <div class=\"panel-body\">\n        <div\n          v-for=\"group in groupedStaffAccounts\"\n          :key=\"group.role\"\n          class=\"staff-group\"\n        >\n          <h4>{{ $t('general.role.' + group.role) }}</h4>\n          <basic-user-card\n            v-for=\"user in group.users\"\n            :key=\"user.screen_name\"\n            :user=\"user\"\n          />\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./staff_panel.js\" ></script>\n\n<style lang=\"scss\">\n\n.staff-group {\n  padding-left: 1em;\n  padding-top: 1em;\n\n  .basic-user-card {\n    padding-left: 0;\n  }\n}\n\n</style>\n","import map from 'lodash/map'\nimport groupBy from 'lodash/groupBy'\nimport { mapGetters, mapState } from 'vuex'\nimport BasicUserCard from '../basic_user_card/basic_user_card.vue'\n\nconst StaffPanel = {\n  created () {\n    const nicknames = this.$store.state.instance.staffAccounts\n    nicknames.forEach(nickname => this.$store.dispatch('fetchUserIfMissing', nickname))\n  },\n  components: {\n    BasicUserCard\n  },\n  computed: {\n    groupedStaffAccounts () {\n      const staffAccounts = map(this.staffAccounts, this.findUser).filter(_ => _)\n      const groupedStaffAccounts = groupBy(staffAccounts, 'role')\n\n      return [\n        { role: 'admin', users: groupedStaffAccounts['admin'] },\n        { role: 'moderator', users: groupedStaffAccounts['moderator'] }\n      ].filter(group => group.users)\n    },\n    ...mapGetters([\n      'findUser'\n    ]),\n    ...mapState({\n      staffAccounts: state => state.instance.staffAccounts\n    })\n  }\n}\n\nexport default StaffPanel\n","import { render } from \"./staff_panel.vue?vue&type=template&id=31dce24a\"\nimport script from \"./staff_panel.js?vue&type=script&lang=js\"\nexport * from \"./staff_panel.js?vue&type=script&lang=js\"\n\nimport \"./staff_panel.vue?vue&type=style&index=0&id=31dce24a&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    v-if=\"federationPolicy\"\n    class=\"mrf-transparency-panel\"\n  >\n    <div class=\"panel panel-default base01-background\">\n      <div class=\"panel-heading timeline-heading base02-background\">\n        <div class=\"title\">\n          {{ $t(\"about.mrf.federation\") }}\n        </div>\n      </div>\n      <div class=\"panel-body\">\n        <div class=\"mrf-section\">\n          <h2>{{ $t(\"about.mrf.mrf_policies\") }}</h2>\n          <p>{{ $t(\"about.mrf.mrf_policies_desc\") }}</p>\n\n          <ul>\n            <li\n              v-for=\"policy in mrfPolicies\"\n              :key=\"policy\"\n              v-text=\"policy\"\n            />\n          </ul>\n\n          <h2 v-if=\"hasInstanceSpecificPolicies\">\n            {{ $t(\"about.mrf.simple.simple_policies\") }}\n          </h2>\n\n          <div v-if=\"acceptInstances.length\">\n            <h4>{{ $t(\"about.mrf.simple.accept\") }}</h4>\n\n            <p>{{ $t(\"about.mrf.simple.accept_desc\") }}</p>\n\n            <table>\n              <tr>\n                <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n                <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n              </tr>\n              <tr\n                v-for=\"entry in acceptInstances\"\n                :key=\"entry.instance + '_accept'\"\n              >\n                <td>{{ entry.instance }}</td>\n                <td v-if=\"entry.reason === ''\">\n                  {{ $t(\"about.mrf.simple.not_applicable\") }}\n                </td>\n                <td v-else>\n                  {{ entry.reason }}\n                </td>\n              </tr>\n            </table>\n          </div>\n\n          <div v-if=\"rejectInstances.length\">\n            <h4>{{ $t(\"about.mrf.simple.reject\") }}</h4>\n\n            <p>{{ $t(\"about.mrf.simple.reject_desc\") }}</p>\n\n            <table>\n              <tr>\n                <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n                <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n              </tr>\n              <tr\n                v-for=\"entry in rejectInstances\"\n                :key=\"entry.instance + '_reject'\"\n              >\n                <td>{{ entry.instance }}</td>\n                <td v-if=\"entry.reason === ''\">\n                  {{ $t(\"about.mrf.simple.not_applicable\") }}\n                </td>\n                <td v-else>\n                  {{ entry.reason }}\n                </td>\n              </tr>\n            </table>\n          </div>\n\n          <div v-if=\"quarantineInstances.length\">\n            <h4>{{ $t(\"about.mrf.simple.quarantine\") }}</h4>\n\n            <p>{{ $t(\"about.mrf.simple.quarantine_desc\") }}</p>\n\n            <table>\n              <tr>\n                <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n                <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n              </tr>\n              <tr\n                v-for=\"entry in quarantineInstances\"\n                :key=\"entry.instance + '_quarantine'\"\n              >\n                <td>{{ entry.instance }}</td>\n                <td v-if=\"entry.reason === ''\">\n                  {{ $t(\"about.mrf.simple.not_applicable\") }}\n                </td>\n                <td v-else>\n                  {{ entry.reason }}\n                </td>\n              </tr>\n            </table>\n          </div>\n\n          <div v-if=\"ftlRemovalInstances.length\">\n            <h4>{{ $t(\"about.mrf.simple.ftl_removal\") }}</h4>\n\n            <p>{{ $t(\"about.mrf.simple.ftl_removal_desc\") }}</p>\n\n            <table>\n              <tr>\n                <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n                <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n              </tr>\n              <tr\n                v-for=\"entry in ftlRemovalInstances\"\n                :key=\"entry.instance + '_ftl_removal'\"\n              >\n                <td>{{ entry.instance }}</td>\n                <td v-if=\"entry.reason === ''\">\n                  {{ $t(\"about.mrf.simple.not_applicable\") }}\n                </td>\n                <td v-else>\n                  {{ entry.reason }}\n                </td>\n              </tr>\n            </table>\n          </div>\n\n          <div v-if=\"mediaNsfwInstances.length\">\n            <h4>{{ $t(\"about.mrf.simple.media_nsfw\") }}</h4>\n\n            <p>{{ $t(\"about.mrf.simple.media_nsfw_desc\") }}</p>\n\n            <table>\n              <tr>\n                <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n                <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n              </tr>\n              <tr\n                v-for=\"entry in mediaNsfwInstances\"\n                :key=\"entry.instance + '_media_nsfw'\"\n              >\n                <td>{{ entry.instance }}</td>\n                <td v-if=\"entry.reason === ''\">\n                  {{ $t(\"about.mrf.simple.not_applicable\") }}\n                </td>\n                <td v-else>\n                  {{ entry.reason }}\n                </td>\n              </tr>\n            </table>\n          </div>\n\n          <div v-if=\"mediaRemovalInstances.length\">\n            <h4>{{ $t(\"about.mrf.simple.media_removal\") }}</h4>\n\n            <p>{{ $t(\"about.mrf.simple.media_removal_desc\") }}</p>\n\n            <table>\n              <tr>\n                <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n                <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n              </tr>\n              <tr\n                v-for=\"entry in mediaRemovalInstances\"\n                :key=\"entry.instance + '_media_removal'\"\n              >\n                <td>{{ entry.instance }}</td>\n                <td v-if=\"entry.reason === ''\">\n                  {{ $t(\"about.mrf.simple.not_applicable\") }}\n                </td>\n                <td v-else>\n                  {{ entry.reason }}\n                </td>\n              </tr>\n            </table>\n          </div>\n\n          <h2 v-if=\"hasKeywordPolicies\">\n            {{ $t(\"about.mrf.keyword.keyword_policies\") }}\n          </h2>\n\n          <div v-if=\"keywordsFtlRemoval.length\">\n            <h4>{{ $t(\"about.mrf.keyword.ftl_removal\") }}</h4>\n\n            <ul>\n              <li\n                v-for=\"keyword in keywordsFtlRemoval\"\n                :key=\"keyword\"\n                v-text=\"keyword\"\n              />\n            </ul>\n          </div>\n\n          <div v-if=\"keywordsReject.length\">\n            <h4>{{ $t(\"about.mrf.keyword.reject\") }}</h4>\n\n            <ul>\n              <li\n                v-for=\"keyword in keywordsReject\"\n                :key=\"keyword\"\n                v-text=\"keyword\"\n              />\n            </ul>\n          </div>\n\n          <div v-if=\"keywordsReplace.length\">\n            <h4>{{ $t(\"about.mrf.keyword.replace\") }}</h4>\n\n            <ul>\n              <li\n                v-for=\"keyword in keywordsReplace\"\n                :key=\"keyword\"\n              >\n                {{ keyword.pattern }}\n                {{ $t(\"about.mrf.keyword.is_replaced_by\") }}\n                {{ keyword.replacement }}\n              </li>\n            </ul>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./mrf_transparency_panel.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n@import './mrf_transparency_panel.scss';\n</style>\n","import { mapState } from 'vuex'\nimport { get } from 'lodash'\n\n/**\n * This is for backwards compatibility. We originally didn't recieve\n * extra info like a reason why an instance was rejected/quarantined/etc.\n * Because we didn't want to break backwards compatibility it was decided\n * to add an extra \"info\" key.\n */\nconst toInstanceReasonObject = (instances, info, key) => {\n  return instances.map(instance => {\n    if (info[key] && info[key][instance] && info[key][instance]['reason']) {\n      return { instance: instance, reason: info[key][instance]['reason'] }\n    }\n    return { instance: instance, reason: '' }\n  })\n}\n\nconst MRFTransparencyPanel = {\n  computed: {\n    ...mapState({\n      federationPolicy: state => get(state, 'instance.federationPolicy'),\n      mrfPolicies: state => get(state, 'instance.federationPolicy.mrf_policies', []),\n      quarantineInstances: state => toInstanceReasonObject(\n        get(state, 'instance.federationPolicy.quarantined_instances', []),\n        get(state, 'instance.federationPolicy.quarantined_instances_info', []),\n        'quarantined_instances'\n      ),\n      acceptInstances: state => toInstanceReasonObject(\n        get(state, 'instance.federationPolicy.mrf_simple.accept', []),\n        get(state, 'instance.federationPolicy.mrf_simple_info', []),\n        'accept'\n      ),\n      rejectInstances: state => toInstanceReasonObject(\n        get(state, 'instance.federationPolicy.mrf_simple.reject', []),\n        get(state, 'instance.federationPolicy.mrf_simple_info', []),\n        'reject'\n      ),\n      ftlRemovalInstances: state => toInstanceReasonObject(\n        get(state, 'instance.federationPolicy.mrf_simple.federated_timeline_removal', []),\n        get(state, 'instance.federationPolicy.mrf_simple_info', []),\n        'federated_timeline_removal'\n      ),\n      mediaNsfwInstances: state => toInstanceReasonObject(\n        get(state, 'instance.federationPolicy.mrf_simple.media_nsfw', []),\n        get(state, 'instance.federationPolicy.mrf_simple_info', []),\n        'media_nsfw'\n      ),\n      mediaRemovalInstances: state => toInstanceReasonObject(\n        get(state, 'instance.federationPolicy.mrf_simple.media_removal', []),\n        get(state, 'instance.federationPolicy.mrf_simple_info', []),\n        'media_removal'\n      ),\n      keywordsFtlRemoval: state => get(state, 'instance.federationPolicy.mrf_keyword.federated_timeline_removal', []),\n      keywordsReject: state => get(state, 'instance.federationPolicy.mrf_keyword.reject', []),\n      keywordsReplace: state => get(state, 'instance.federationPolicy.mrf_keyword.replace', [])\n    }),\n    hasInstanceSpecificPolicies () {\n      return this.quarantineInstances.length ||\n        this.acceptInstances.length ||\n        this.rejectInstances.length ||\n        this.ftlRemovalInstances.length ||\n        this.mediaNsfwInstances.length ||\n        this.mediaRemovalInstances.length\n    },\n    hasKeywordPolicies () {\n      return this.keywordsFtlRemoval.length ||\n        this.keywordsReject.length ||\n        this.keywordsReplace.length\n    }\n  }\n}\n\nexport default MRFTransparencyPanel\n","import { render } from \"./mrf_transparency_panel.vue?vue&type=template&id=7f2ca562\"\nimport script from \"./mrf_transparency_panel.js?vue&type=script&lang=js\"\nexport * from \"./mrf_transparency_panel.js?vue&type=script&lang=js\"\n\nimport \"./mrf_transparency_panel.vue?vue&type=style&index=0&id=7f2ca562&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import InstanceSpecificPanel from '../instance_specific_panel/instance_specific_panel.vue'\nimport FeaturesPanel from '../features_panel/features_panel.vue'\nimport TermsOfServicePanel from '../terms_of_service_panel/terms_of_service_panel.vue'\nimport StaffPanel from '../staff_panel/staff_panel.vue'\nimport MRFTransparencyPanel from '../mrf_transparency_panel/mrf_transparency_panel.vue'\n\nconst About = {\n  components: {\n    InstanceSpecificPanel,\n    FeaturesPanel,\n    TermsOfServicePanel,\n    StaffPanel,\n    MRFTransparencyPanel\n  },\n  computed: {\n    showFeaturesPanel () { return this.$store.state.instance.showFeaturesPanel },\n    showInstanceSpecificPanel () {\n      return this.$store.state.instance.showInstanceSpecificPanel &&\n        !this.$store.getters.mergedConfig.hideISP &&\n        this.$store.state.instance.instanceSpecificPanelContent\n    }\n  }\n}\n\nexport default About\n","import { render } from \"./about.vue?vue&type=template&id=37ac4f64\"\nimport script from \"./about.js?vue&type=script&lang=js\"\nexport * from \"./about.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"panel panel-default\">\n    <div class=\"panel-heading\">\n      {{ $t('remote_user_resolver.remote_user_resolver') }}\n    </div>\n    <div class=\"panel-body\">\n      <p>\n        {{ $t('remote_user_resolver.searching_for') }} @{{ $route.params.username }}@{{ $route.params.hostname }}\n      </p>\n      <p v-if=\"error\">\n        {{ $t('remote_user_resolver.error') }}\n      </p>\n    </div>\n  </div>\n</template>\n\n<script src=\"./remote_user_resolver.js\"></script>\n\n<style lang=\"scss\">\n</style>\n","const RemoteUserResolver = {\n  data: () => ({\n    error: false\n  }),\n  mounted () {\n    this.redirect()\n  },\n  methods: {\n    redirect () {\n      const acct = this.$route.params.username + '@' + this.$route.params.hostname\n      this.$store.state.api.backendInteractor.fetchUser({ id: acct })\n        .then((externalUser) => {\n          if (externalUser.error) {\n            this.error = true\n          } else {\n            this.$store.commit('addNewUsers', [externalUser])\n            const id = externalUser.id\n            this.$router.replace({\n              name: 'external-user-profile',\n              params: { id }\n            })\n          }\n        })\n        .catch(() => {\n          this.error = true\n        })\n    }\n  }\n}\n\nexport default RemoteUserResolver\n","import { render } from \"./remote_user_resolver.vue?vue&type=template&id=198402c4\"\nimport script from \"./remote_user_resolver.js?vue&type=script&lang=js\"\nexport * from \"./remote_user_resolver.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import * as bodyScrollLock from 'body-scroll-lock'\n\nlet previousNavPaddingRight\nlet previousAppBgWrapperRight\nconst lockerEls = new Set([])\n\nconst disableBodyScroll = (el) => {\n  const scrollBarGap = window.innerWidth - document.documentElement.clientWidth\n  bodyScrollLock.disableBodyScroll(el, {\n    reserveScrollBarGap: true\n  })\n  lockerEls.add(el)\n  setTimeout(() => {\n    if (lockerEls.size <= 1) {\n      // If previousNavPaddingRight is already set, don't set it again.\n      if (previousNavPaddingRight === undefined) {\n        const navEl = document.getElementById('nav')\n        previousNavPaddingRight = window.getComputedStyle(navEl).getPropertyValue('padding-right')\n        navEl.style.paddingRight = previousNavPaddingRight ? `calc(${previousNavPaddingRight} + ${scrollBarGap}px)` : `${scrollBarGap}px`\n      }\n      // If previousAppBgWrapeprRight is already set, don't set it again.\n      if (previousAppBgWrapperRight === undefined) {\n        const appBgWrapperEl = document.getElementById('app_bg_wrapper')\n        previousAppBgWrapperRight = window.getComputedStyle(appBgWrapperEl).getPropertyValue('right')\n        appBgWrapperEl.style.right = previousAppBgWrapperRight ? `calc(${previousAppBgWrapperRight} + ${scrollBarGap}px)` : `${scrollBarGap}px`\n      }\n      document.body.classList.add('scroll-locked')\n    }\n  })\n}\n\nconst enableBodyScroll = (el) => {\n  lockerEls.delete(el)\n  setTimeout(() => {\n    if (lockerEls.size === 0) {\n      if (previousNavPaddingRight !== undefined) {\n        document.getElementById('nav').style.paddingRight = previousNavPaddingRight\n        // Restore previousNavPaddingRight to undefined so disableBodyScroll knows it can be set again.\n        previousNavPaddingRight = undefined\n      }\n      if (previousAppBgWrapperRight !== undefined) {\n        document.getElementById('app_bg_wrapper').style.right = previousAppBgWrapperRight\n        // Restore previousAppBgWrapperRight to undefined so disableBodyScroll knows it can be set again.\n        previousAppBgWrapperRight = undefined\n      }\n      document.body.classList.remove('scroll-locked')\n    }\n  })\n  bodyScrollLock.enableBodyScroll(el)\n}\n\nconst directive = {\n  mounted: (el, binding) => {\n    if (binding.value) {\n      disableBodyScroll(el)\n    }\n  },\n  updated: (el, binding) => {\n    if (binding.oldValue === binding.value) {\n      return\n    }\n\n    if (binding.value) {\n      disableBodyScroll(el)\n    } else {\n      enableBodyScroll(el)\n    }\n  },\n  unmounted: (el) => {\n    enableBodyScroll(el)\n  }\n}\n\nexport default (Vue) => {\n  Vue.directive('body-scroll-lock', directive)\n}\n","import PublicTimeline from 'components/public_timeline/public_timeline.vue'\nimport PublicAndExternalTimeline from 'components/public_and_external_timeline/public_and_external_timeline.vue'\nimport FriendsTimeline from 'components/friends_timeline/friends_timeline.vue'\nimport TagTimeline from 'components/tag_timeline/tag_timeline.vue'\nimport BookmarkTimeline from 'components/bookmark_timeline/bookmark_timeline.vue'\nimport ConversationPage from 'components/conversation-page/conversation-page.vue'\nimport Interactions from 'components/interactions/interactions.vue'\nimport DMs from 'components/dm_timeline/dm_timeline.vue'\nimport ChatList from 'components/chat_list/chat_list.vue'\nimport Chat from 'components/chat/chat.vue'\nimport UserProfile from 'components/user_profile/user_profile.vue'\nimport Search from 'components/search/search.vue'\nimport Registration from 'components/registration/registration.vue'\nimport PasswordReset from 'components/password_reset/password_reset.vue'\nimport FollowRequests from 'components/follow_requests/follow_requests.vue'\nimport OAuthCallback from 'components/oauth_callback/oauth_callback.vue'\nimport Notifications from 'components/notifications/notifications.vue'\nimport AuthForm from 'components/auth_form/auth_form.js'\nimport ShoutPanel from 'components/shout_panel/shout_panel.vue'\nimport WhoToFollow from 'components/who_to_follow/who_to_follow.vue'\nimport About from 'components/about/about.vue'\nimport RemoteUserResolver from 'components/remote_user_resolver/remote_user_resolver.vue'\n\nexport default (store) => {\n  const validateAuthenticatedRoute = (to, from, next) => {\n    if (store.state.users.currentUser) {\n      next()\n    } else {\n      next(store.state.instance.redirectRootNoLogin || '/main/all')\n    }\n  }\n\n  let routes = [\n    { name: 'root',\n      path: '/',\n      redirect: _to => {\n        return (store.state.users.currentUser\n          ? store.state.instance.redirectRootLogin\n          : store.state.instance.redirectRootNoLogin) || '/main/all'\n      }\n    },\n    { name: 'public-external-timeline', path: '/main/all', component: PublicAndExternalTimeline },\n    { name: 'public-timeline', path: '/main/public', component: PublicTimeline },\n    { name: 'friends', path: '/main/friends', component: FriendsTimeline, beforeEnter: validateAuthenticatedRoute },\n    { name: 'tag-timeline', path: '/tag/:tag', component: TagTimeline },\n    { name: 'bookmarks', path: '/bookmarks', component: BookmarkTimeline },\n    { name: 'conversation', path: '/notice/:id', component: ConversationPage, meta: { dontScroll: true } },\n    { name: 'remote-user-profile-acct',\n      path: '/remote-users/:_(@)?:username([^/@]+)@:hostname([^/@]+)',\n      component: RemoteUserResolver,\n      beforeEnter: validateAuthenticatedRoute\n    },\n    { name: 'remote-user-profile',\n      path: '/remote-users/:hostname/:username',\n      component: RemoteUserResolver,\n      beforeEnter: validateAuthenticatedRoute\n    },\n    { name: 'external-user-profile', path: '/users/:id', component: UserProfile },\n    { name: 'interactions', path: '/users/:username/interactions', component: Interactions, beforeEnter: validateAuthenticatedRoute },\n    { name: 'dms', path: '/users/:username/dms', component: DMs, beforeEnter: validateAuthenticatedRoute },\n    { name: 'registration', path: '/registration', component: Registration },\n    { name: 'password-reset', path: '/password-reset', component: PasswordReset, props: true },\n    { name: 'registration-token', path: '/registration/:token', component: Registration },\n    { name: 'friend-requests', path: '/friend-requests', component: FollowRequests, beforeEnter: validateAuthenticatedRoute },\n    { name: 'notifications', path: '/:username/notifications', component: Notifications, props: () => ({ disableTeleport: true }), beforeEnter: validateAuthenticatedRoute },\n    { name: 'login', path: '/login', component: AuthForm },\n    { name: 'shout-panel', path: '/shout-panel', component: ShoutPanel, props: () => ({ floating: false }) },\n    { name: 'oauth-callback', path: '/oauth-callback', component: OAuthCallback, props: (route) => ({ code: route.query.code }) },\n    { name: 'search', path: '/search', component: Search, props: (route) => ({ query: route.query.query }) },\n    { name: 'who-to-follow', path: '/who-to-follow', component: WhoToFollow, beforeEnter: validateAuthenticatedRoute },\n    { name: 'about', path: '/about', component: About },\n    { name: 'user-profile', path: '/:_(users)?/:name', component: UserProfile }\n  ]\n\n  if (store.state.instance.pleromaChatMessagesAvailable) {\n    routes = routes.concat([\n      { name: 'chat', path: '/users/:username/chats/:recipient_id', component: Chat, meta: { dontScroll: false }, beforeEnter: validateAuthenticatedRoute },\n      { name: 'chats', path: '/users/:username/chats', component: ChatList, meta: { dontScroll: false }, beforeEnter: validateAuthenticatedRoute }\n    ])\n  }\n\n  return routes\n}\n","import { createApp } from 'vue'\nimport { createRouter, createWebHistory } from 'vue-router'\nimport vClickOutside from 'click-outside-vue3'\n\nimport { FontAwesomeIcon, FontAwesomeLayers } from '@fortawesome/vue-fontawesome'\n\nimport App from '../App.vue'\nimport routes from './routes'\nimport VBodyScrollLock from 'src/directives/body_scroll_lock'\n\nimport { windowWidth, windowHeight } from '../services/window_utils/window_utils'\nimport { getOrCreateApp, getClientToken } from '../services/new_api/oauth.js'\nimport backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { CURRENT_VERSION } from '../services/theme_data/theme_data.service.js'\nimport { applyTheme } from '../services/style_setter/style_setter.js'\nimport FaviconService from '../services/favicon_service/favicon_service.js'\n\nlet staticInitialResults = null\n\nconst parsedInitialResults = () => {\n  if (!document.getElementById('initial-results')) {\n    return null\n  }\n  if (!staticInitialResults) {\n    staticInitialResults = JSON.parse(document.getElementById('initial-results').textContent)\n  }\n  return staticInitialResults\n}\n\nconst decodeUTF8Base64 = (data) => {\n  const rawData = atob(data)\n  const array = Uint8Array.from([...rawData].map((char) => char.charCodeAt(0)))\n  const text = new TextDecoder().decode(array)\n  return text\n}\n\nconst preloadFetch = async (request) => {\n  const data = parsedInitialResults()\n  if (!data || !data[request]) {\n    return window.fetch(request)\n  }\n  const decoded = decodeUTF8Base64(data[request])\n  const requestData = JSON.parse(decoded)\n  return {\n    ok: true,\n    json: () => requestData,\n    text: () => requestData\n  }\n}\n\nconst getInstanceConfig = async ({ store }) => {\n  try {\n    const res = await preloadFetch('/api/v1/instance')\n    if (res.ok) {\n      const data = await res.json()\n      const textlimit = data.max_toot_chars\n      const vapidPublicKey = data.pleroma.vapid_public_key\n\n      store.dispatch('setInstanceOption', { name: 'textlimit', value: textlimit })\n      store.dispatch('setInstanceOption', { name: 'accountApprovalRequired', value: data.approval_required })\n\n      if (vapidPublicKey) {\n        store.dispatch('setInstanceOption', { name: 'vapidPublicKey', value: vapidPublicKey })\n      }\n    } else {\n      throw (res)\n    }\n  } catch (error) {\n    console.error('Could not load instance config, potentially fatal')\n    console.error(error)\n  }\n}\n\nconst getBackendProvidedConfig = async ({ store }) => {\n  try {\n    const res = await window.fetch('/api/pleroma/frontend_configurations')\n    if (res.ok) {\n      const data = await res.json()\n      return data.pleroma_fe\n    } else {\n      throw (res)\n    }\n  } catch (error) {\n    console.error('Could not load backend-provided frontend config, potentially fatal')\n    console.error(error)\n  }\n}\n\nconst getStaticConfig = async () => {\n  try {\n    const res = await window.fetch('/static/config.json')\n    if (res.ok) {\n      return res.json()\n    } else {\n      throw (res)\n    }\n  } catch (error) {\n    console.warn('Failed to load static/config.json, continuing without it.')\n    console.warn(error)\n    return {}\n  }\n}\n\nconst setSettings = async ({ apiConfig, staticConfig, store }) => {\n  const overrides = window.___pleromafe_dev_overrides || {}\n  const env = window.___pleromafe_mode.NODE_ENV\n\n  // This takes static config and overrides properties that are present in apiConfig\n  let config = {}\n  if (overrides.staticConfigPreference && env === 'development') {\n    console.warn('OVERRIDING API CONFIG WITH STATIC CONFIG')\n    config = Object.assign({}, apiConfig, staticConfig)\n  } else {\n    config = Object.assign({}, staticConfig, apiConfig)\n  }\n\n  const copyInstanceOption = (name) => {\n    store.dispatch('setInstanceOption', { name, value: config[name] })\n  }\n\n  copyInstanceOption('nsfwCensorImage')\n  copyInstanceOption('background')\n  copyInstanceOption('hidePostStats')\n  copyInstanceOption('hideBotIndication')\n  copyInstanceOption('hideUserStats')\n  copyInstanceOption('hideFilteredStatuses')\n  copyInstanceOption('logo')\n\n  store.dispatch('setInstanceOption', {\n    name: 'logoMask',\n    value: typeof config.logoMask === 'undefined'\n      ? true\n      : config.logoMask\n  })\n\n  store.dispatch('setInstanceOption', {\n    name: 'logoMargin',\n    value: typeof config.logoMargin === 'undefined'\n      ? 0\n      : config.logoMargin\n  })\n  copyInstanceOption('logoLeft')\n  store.commit('authFlow/setInitialStrategy', config.loginMethod)\n\n  copyInstanceOption('redirectRootNoLogin')\n  copyInstanceOption('redirectRootLogin')\n  copyInstanceOption('showInstanceSpecificPanel')\n  copyInstanceOption('minimalScopesMode')\n  copyInstanceOption('hideMutedPosts')\n  copyInstanceOption('collapseMessageWithSubject')\n  copyInstanceOption('scopeCopy')\n  copyInstanceOption('subjectLineBehavior')\n  copyInstanceOption('postContentType')\n  copyInstanceOption('alwaysShowSubjectInput')\n  copyInstanceOption('showFeaturesPanel')\n  copyInstanceOption('hideSitename')\n  copyInstanceOption('sidebarRight')\n\n  return store.dispatch('setTheme', config['theme'])\n}\n\nconst getTOS = async ({ store }) => {\n  try {\n    const res = await window.fetch('/static/terms-of-service.html')\n    if (res.ok) {\n      const html = await res.text()\n      store.dispatch('setInstanceOption', { name: 'tos', value: html })\n    } else {\n      throw (res)\n    }\n  } catch (e) {\n    console.warn(\"Can't load TOS\")\n    console.warn(e)\n  }\n}\n\nconst getInstancePanel = async ({ store }) => {\n  try {\n    const res = await preloadFetch('/instance/panel.html')\n    if (res.ok) {\n      const html = await res.text()\n      store.dispatch('setInstanceOption', { name: 'instanceSpecificPanelContent', value: html })\n    } else {\n      throw (res)\n    }\n  } catch (e) {\n    console.warn(\"Can't load instance panel\")\n    console.warn(e)\n  }\n}\n\nconst getStickers = async ({ store }) => {\n  try {\n    const res = await window.fetch('/static/stickers.json')\n    if (res.ok) {\n      const values = await res.json()\n      const stickers = (await Promise.all(\n        Object.entries(values).map(async ([name, path]) => {\n          const resPack = await window.fetch(path + 'pack.json')\n          var meta = {}\n          if (resPack.ok) {\n            meta = await resPack.json()\n          }\n          return {\n            pack: name,\n            path,\n            meta\n          }\n        })\n      )).sort((a, b) => {\n        return a.meta.title.localeCompare(b.meta.title)\n      })\n      store.dispatch('setInstanceOption', { name: 'stickers', value: stickers })\n    } else {\n      throw (res)\n    }\n  } catch (e) {\n    console.warn(\"Can't load stickers\")\n    console.warn(e)\n  }\n}\n\nconst getAppSecret = async ({ store }) => {\n  const { state, commit } = store\n  const { oauth, instance } = state\n  return getOrCreateApp({ ...oauth, instance: instance.server, commit })\n    .then((app) => getClientToken({ ...app, instance: instance.server }))\n    .then((token) => {\n      commit('setAppToken', token.access_token)\n      commit('setBackendInteractor', backendInteractorService(store.getters.getToken()))\n    })\n}\n\nconst resolveStaffAccounts = ({ store, accounts }) => {\n  const nicknames = accounts.map(uri => uri.split('/').pop())\n  store.dispatch('setInstanceOption', { name: 'staffAccounts', value: nicknames })\n}\n\nconst getNodeInfo = async ({ store }) => {\n  try {\n    const res = await preloadFetch('/nodeinfo/2.0.json')\n    if (res.ok) {\n      const data = await res.json()\n      const metadata = data.metadata\n      const features = metadata.features\n      store.dispatch('setInstanceOption', { name: 'name', value: metadata.nodeName })\n      store.dispatch('setInstanceOption', { name: 'registrationOpen', value: data.openRegistrations })\n      store.dispatch('setInstanceOption', { name: 'mediaProxyAvailable', value: features.includes('media_proxy') })\n      store.dispatch('setInstanceOption', { name: 'safeDM', value: features.includes('safe_dm_mentions') })\n      store.dispatch('setInstanceOption', { name: 'shoutAvailable', value: features.includes('chat') })\n      store.dispatch('setInstanceOption', { name: 'pleromaChatMessagesAvailable', value: features.includes('pleroma_chat_messages') })\n      store.dispatch('setInstanceOption', { name: 'gopherAvailable', value: features.includes('gopher') })\n      store.dispatch('setInstanceOption', { name: 'pollsAvailable', value: features.includes('polls') })\n      store.dispatch('setInstanceOption', { name: 'pollLimits', value: metadata.pollLimits })\n      store.dispatch('setInstanceOption', { name: 'mailerEnabled', value: metadata.mailerEnabled })\n\n      const uploadLimits = metadata.uploadLimits\n      store.dispatch('setInstanceOption', { name: 'uploadlimit', value: parseInt(uploadLimits.general) })\n      store.dispatch('setInstanceOption', { name: 'avatarlimit', value: parseInt(uploadLimits.avatar) })\n      store.dispatch('setInstanceOption', { name: 'backgroundlimit', value: parseInt(uploadLimits.background) })\n      store.dispatch('setInstanceOption', { name: 'bannerlimit', value: parseInt(uploadLimits.banner) })\n      store.dispatch('setInstanceOption', { name: 'fieldsLimits', value: metadata.fieldsLimits })\n\n      store.dispatch('setInstanceOption', { name: 'restrictedNicknames', value: metadata.restrictedNicknames })\n      store.dispatch('setInstanceOption', { name: 'postFormats', value: metadata.postFormats })\n\n      const suggestions = metadata.suggestions\n      store.dispatch('setInstanceOption', { name: 'suggestionsEnabled', value: suggestions.enabled })\n      store.dispatch('setInstanceOption', { name: 'suggestionsWeb', value: suggestions.web })\n\n      const software = data.software\n      store.dispatch('setInstanceOption', { name: 'backendVersion', value: software.version })\n      store.dispatch('setInstanceOption', { name: 'pleromaBackend', value: software.name === 'pleroma' })\n\n      const priv = metadata.private\n      store.dispatch('setInstanceOption', { name: 'private', value: priv })\n\n      const frontendVersion = window.___pleromafe_commit_hash\n      store.dispatch('setInstanceOption', { name: 'frontendVersion', value: frontendVersion })\n\n      const federation = metadata.federation\n\n      store.dispatch('setInstanceOption', {\n        name: 'tagPolicyAvailable',\n        value: typeof federation.mrf_policies === 'undefined'\n          ? false\n          : metadata.federation.mrf_policies.includes('TagPolicy')\n      })\n\n      store.dispatch('setInstanceOption', { name: 'federationPolicy', value: federation })\n      store.dispatch('setInstanceOption', {\n        name: 'federating',\n        value: typeof federation.enabled === 'undefined'\n          ? true\n          : federation.enabled\n      })\n\n      const accountActivationRequired = metadata.accountActivationRequired\n      store.dispatch('setInstanceOption', { name: 'accountActivationRequired', value: accountActivationRequired })\n\n      const accounts = metadata.staffAccounts\n      resolveStaffAccounts({ store, accounts })\n    } else {\n      throw (res)\n    }\n  } catch (e) {\n    console.warn('Could not load nodeinfo')\n    console.warn(e)\n  }\n}\n\nconst setConfig = async ({ store }) => {\n  // apiConfig, staticConfig\n  const configInfos = await Promise.all([getBackendProvidedConfig({ store }), getStaticConfig()])\n  const apiConfig = configInfos[0]\n  const staticConfig = configInfos[1]\n\n  await setSettings({ store, apiConfig, staticConfig }).then(getAppSecret({ store }))\n}\n\nconst checkOAuthToken = async ({ store }) => {\n  return new Promise(async (resolve, reject) => {\n    if (store.getters.getUserToken()) {\n      try {\n        await store.dispatch('loginUser', store.getters.getUserToken())\n      } catch (e) {\n        console.error(e)\n      }\n    }\n    resolve()\n  })\n}\n\nconst afterStoreSetup = async ({ store, i18n }) => {\n  store.dispatch('setLayoutWidth', windowWidth())\n  store.dispatch('setLayoutHeight', windowHeight())\n\n  FaviconService.initFaviconService()\n\n  const overrides = window.___pleromafe_dev_overrides || {}\n  const server = (typeof overrides.target !== 'undefined') ? overrides.target : window.location.origin\n  store.dispatch('setInstanceOption', { name: 'server', value: server })\n\n  await setConfig({ store })\n\n  const { customTheme, customThemeSource } = store.state.config\n  const { theme } = store.state.instance\n  const customThemePresent = customThemeSource || customTheme\n\n  if (customThemePresent) {\n    if (customThemeSource && customThemeSource.themeEngineVersion === CURRENT_VERSION) {\n      applyTheme(customThemeSource)\n    } else {\n      applyTheme(customTheme)\n    }\n  } else if (theme) {\n    // do nothing, it will load asynchronously\n  } else {\n    console.error('Failed to load any theme!')\n  }\n\n  // Now we can try getting the server settings and logging in\n  // Most of these are preloaded into the index.html so blocking is minimized\n  await Promise.all([\n    checkOAuthToken({ store }),\n    getInstancePanel({ store }),\n    getNodeInfo({ store }),\n    getInstanceConfig({ store })\n  ])\n\n  // Start fetching things that don't need to block the UI\n  store.dispatch('fetchMutes')\n  getTOS({ store })\n  getStickers({ store })\n\n  const router = createRouter({\n    history: createWebHistory(),\n    routes: routes(store),\n    scrollBehavior: (to, _from, savedPosition) => {\n      if (to.matched.some(m => m.meta.dontScroll)) {\n        return false\n      }\n      return savedPosition || { left: 0, top: 0 }\n    }\n  })\n\n  const app = createApp(App)\n\n  app.use(router)\n  app.use(store)\n  app.use(i18n)\n\n  app.use(vClickOutside)\n  app.use(VBodyScrollLock)\n\n  app.component('FAIcon', FontAwesomeIcon)\n  app.component('FALayers', FontAwesomeLayers)\n\n  app.mount('#app')\n\n  return app\n}\n\nexport default afterStoreSetup\n","import { createStore } from 'vuex'\n\nimport 'custom-event-polyfill'\nimport './lib/event_target_polyfill.js'\n\nimport interfaceModule from './modules/interface.js'\nimport instanceModule from './modules/instance.js'\nimport statusesModule from './modules/statuses.js'\nimport usersModule from './modules/users.js'\nimport apiModule from './modules/api.js'\nimport configModule from './modules/config.js'\nimport serverSideConfigModule from './modules/serverSideConfig.js'\nimport shoutModule from './modules/shout.js'\nimport oauthModule from './modules/oauth.js'\nimport authFlowModule from './modules/auth_flow.js'\nimport mediaViewerModule from './modules/media_viewer.js'\nimport oauthTokensModule from './modules/oauth_tokens.js'\nimport reportsModule from './modules/reports.js'\nimport pollsModule from './modules/polls.js'\nimport postStatusModule from './modules/postStatus.js'\nimport chatsModule from './modules/chats.js'\n\nimport { createI18n } from 'vue-i18n'\n\nimport createPersistedState from './lib/persisted_state.js'\nimport pushNotifications from './lib/push_notifications_plugin.js'\n\nimport messages from './i18n/messages.js'\n\nimport afterStoreSetup from './boot/after_store.js'\n\nconst currentLocale = (window.navigator.language || 'en').split('-')[0]\n\nconst i18n = createI18n({\n  // By default, use the browser locale, we will update it if neccessary\n  locale: 'en',\n  fallbackLocale: 'en',\n  messages: messages.default\n})\n\nmessages.setLanguage(i18n, currentLocale)\n\nconst persistedStateOptions = {\n  paths: [\n    'config',\n    'users.lastLoginName',\n    'oauth'\n  ]\n};\n\n(async () => {\n  let storageError = false\n  const plugins = [pushNotifications]\n  try {\n    const persistedState = await createPersistedState(persistedStateOptions)\n    plugins.push(persistedState)\n  } catch (e) {\n    console.error(e)\n    storageError = true\n  }\n  const store = createStore({\n    modules: {\n      i18n: {\n        getters: {\n          i18n: () => i18n.global\n        }\n      },\n      interface: interfaceModule,\n      instance: instanceModule,\n      // TODO refactor users/statuses modules, they depend on each other\n      users: usersModule,\n      statuses: statusesModule,\n      api: apiModule,\n      config: configModule,\n      serverSideConfig: serverSideConfigModule,\n      shout: shoutModule,\n      oauth: oauthModule,\n      authFlow: authFlowModule,\n      mediaViewer: mediaViewerModule,\n      oauthTokens: oauthTokensModule,\n      reports: reportsModule,\n      polls: pollsModule,\n      postStatus: postStatusModule,\n      chats: chatsModule\n    },\n    plugins,\n    strict: false // Socket modifies itself, let's ignore this for now.\n    // strict: process.env.NODE_ENV !== 'production'\n  })\n  if (storageError) {\n    store.dispatch('pushGlobalNotice', { messageKey: 'errors.storage_unavailable', level: 'error' })\n  }\n  afterStoreSetup({ store, i18n })\n})()\n\n// These are inlined by webpack's DefinePlugin\n/* eslint-disable */\nwindow.___pleromafe_mode = process.env\nwindow.___pleromafe_commit_hash = COMMIT_HASH\nwindow.___pleromafe_dev_overrides = DEV_OVERRIDES\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/priv/static/static/js/app.e8949b9a3c7cfdab2e4c.js b/priv/static/static/js/app.e8949b9a3c7cfdab2e4c.js
new file mode 100644 (file)
index 0000000..0cc2b4a
--- /dev/null
@@ -0,0 +1,2 @@
+!function(e){function t(t){for(var r,i,a=t[0],c=t[1],l=t[2],u=0,p=[];u<a.length;u++)i=a[u],Object.prototype.hasOwnProperty.call(o,i)&&o[i]&&p.push(o[i][0]),o[i]=0;for(r in c)Object.prototype.hasOwnProperty.call(c,r)&&(e[r]=c[r]);for(d&&d(t);p.length;)p.shift()();return s.push.apply(s,l||[]),n()}function n(){for(var e,t=0;t<s.length;t++){for(var n=s[t],r=!0,i=1;i<n.length;i++){var c=n[i];0!==o[c]&&(r=!1)}r&&(s.splice(t--,1),e=a(a.s=n[0]))}return e}var r={},i={0:0},o={0:0},s=[];function a(t){if(r[t])return r[t].exports;var n=r[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,a),n.l=!0,n.exports}a.e=function(e){var t=[];i[e]?t.push(i[e]):0!==i[e]&&{2:1,3:1,4:1}[e]&&t.push(i[e]=new Promise((function(t,n){for(var r="static/css/"+({}[e]||e)+"."+{2:"4e6541aa0979ab5fe8ab",3:"2f4099421df47087d7d1",4:"10e378d3da0e7f32661d",5:"31d6cfe0d16ae931b73c",6:"31d6cfe0d16ae931b73c",7:"31d6cfe0d16ae931b73c",8:"31d6cfe0d16ae931b73c",9:"31d6cfe0d16ae931b73c",10:"31d6cfe0d16ae931b73c",11:"31d6cfe0d16ae931b73c",12:"31d6cfe0d16ae931b73c",13:"31d6cfe0d16ae931b73c",14:"31d6cfe0d16ae931b73c",15:"31d6cfe0d16ae931b73c",16:"31d6cfe0d16ae931b73c",17:"31d6cfe0d16ae931b73c",18:"31d6cfe0d16ae931b73c",19:"31d6cfe0d16ae931b73c",20:"31d6cfe0d16ae931b73c",21:"31d6cfe0d16ae931b73c",22:"31d6cfe0d16ae931b73c",23:"31d6cfe0d16ae931b73c",24:"31d6cfe0d16ae931b73c",25:"31d6cfe0d16ae931b73c",26:"31d6cfe0d16ae931b73c",27:"31d6cfe0d16ae931b73c",28:"31d6cfe0d16ae931b73c",29:"31d6cfe0d16ae931b73c",30:"31d6cfe0d16ae931b73c",31:"31d6cfe0d16ae931b73c",32:"31d6cfe0d16ae931b73c"}[e]+".css",o=a.p+r,s=document.getElementsByTagName("link"),c=0;c<s.length;c++){var l=(d=s[c]).getAttribute("data-href")||d.getAttribute("href");if("stylesheet"===d.rel&&(l===r||l===o))return t()}var u=document.getElementsByTagName("style");for(c=0;c<u.length;c++){var d;if((l=(d=u[c]).getAttribute("data-href"))===r||l===o)return t()}var p=document.createElement("link");p.rel="stylesheet",p.type="text/css",p.onload=t,p.onerror=function(t){var r=t&&t.target&&t.target.src||o,s=new Error("Loading CSS chunk "+e+" failed.\n("+r+")");s.code="CSS_CHUNK_LOAD_FAILED",s.request=r,delete i[e],p.parentNode.removeChild(p),n(s)},p.href=o,document.getElementsByTagName("head")[0].appendChild(p)})).then((function(){i[e]=0})));var n=o[e];if(0!==n)if(n)t.push(n[2]);else{var r=new Promise((function(t,r){n=o[e]=[t,r]}));t.push(n[2]=r);var s,c=document.createElement("script");c.charset="utf-8",c.timeout=120,a.nc&&c.setAttribute("nonce",a.nc),c.src=function(e){return a.p+"static/js/"+({}[e]||e)+"."+{2:"55d5f2926c7b22177236",3:"6817af5c7ddbbd72fbf1",4:"927a84e2225924985925",5:"bbbe2165b2726754babd",6:"c6e50a831e6b09d426c7",7:"7a9d3de7e3eb6affa8fa",8:"6e10d130a82421e5de97",9:"4c310a18d1e30d64ab78",10:"b67f1d16d8fdcd03f775",11:"88732498617afe7ab4fa",12:"21fb2f8c9787acc40766",13:"bd887f6f8965a89629f1",14:"8d076150d2d32a70c85c",15:"458ea2a090159a1c312d",16:"b026bc770b996a75ab86",17:"37f97cc3eab74f285530",18:"5e155da6b34cb233975a",19:"4449616295c79e9feb82",20:"c3c9f56f752974bf19cf",21:"13590b4f67813801857e",22:"af3b6f25635a9809f6e8",23:"27002d630c581d75786b",24:"17fecccd566085bc7273",25:"d92131b48359fae551a4",26:"8e2b950cad8e4bb7145f",27:"b70f29d1c24421eeb8e0",28:"3eeac63a0c7d7ca9f57e",29:"a9703e50212c8482b1b8",30:"ccdf2a34d5a00135f6b7",31:"079c61206f2e6ac69873",32:"2c5f6af0c5d2d87ad611"}[e]+".js"}(e);var l=new Error;s=function(t){c.onerror=c.onload=null,clearTimeout(u);var n=o[e];if(0!==n){if(n){var r=t&&("load"===t.type?"missing":t.type),i=t&&t.target&&t.target.src;l.message="Loading chunk "+e+" failed.\n("+r+": "+i+")",l.name="ChunkLoadError",l.type=r,l.request=i,n[1](l)}o[e]=void 0}};var u=setTimeout((function(){s({type:"timeout",target:c})}),12e4);c.onerror=c.onload=s,document.head.appendChild(c)}return Promise.all(t)},a.m=e,a.c=r,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)a.d(n,r,function(t){return e[t]}.bind(null,r));return n},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="/",a.oe=function(e){throw console.error(e),e};var c=window.webpackJsonp=window.webpackJsonp||[],l=c.push.bind(c);c.push=t,c=c.slice();for(var u=0;u<c.length;u++)t(c[u]);var d=l;s.push([593,1]),n()}([,,,,,,,,,,,,,,function(e,t,n){"use strict";n.d(t,"g",(function(){return h})),n.d(t,"a",(function(){return b})),n.d(t,"f",(function(){return m})),n.d(t,"e",(function(){return f})),n.d(t,"d",(function(){return j})),n.d(t,"b",(function(){return g})),n.d(t,"c",(function(){return v}));var r=n(5),i=n.n(r),o=n(103),s=n.n(o),a=n(312),c=n.n(a),l=n(26),u=n(313);function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function p(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?d(Object(n),!0).forEach((function(t){i()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):d(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var h=function(e){var t={},n=e.hasOwnProperty("acct"),r=n&&!e.hasOwnProperty("avatar");if(t.id=String(e.id),t._original=e,n){if(t.screen_name=e.acct,t.statusnet_profile_url=e.url,r)return t;if(t.emoji=e.emojis,t.name=s()(e.display_name),t.name_html=t.name,t.name_unescaped=e.display_name,t.description=e.note,t.description_html=e.note,t.fields=e.fields,t.fields_html=e.fields.map((function(e){return{name:s()(e.name),value:e.value}})),t.fields_text=e.fields.map((function(e){return{name:unescape(e.name.replace(/<[^>]*>/g,"")),value:unescape(e.value.replace(/<[^>]*>/g,""))}})),t.profile_image_url=e.avatar,t.profile_image_url_original=e.avatar,t.cover_photo=e.header,t.friends_count=e.following_count,t.bot=e.bot,e.pleroma){var i=e.pleroma.relationship;t.background_image=e.pleroma.background_image,t.favicon=e.pleroma.favicon,t.token=e.pleroma.chat_token,i&&(t.relationship=i),t.allow_following_move=e.pleroma.allow_following_move,t.hide_follows=e.pleroma.hide_follows,t.hide_followers=e.pleroma.hide_followers,t.hide_follows_count=e.pleroma.hide_follows_count,t.hide_followers_count=e.pleroma.hide_followers_count,t.rights={moderator:e.pleroma.is_moderator,admin:e.pleroma.is_admin},t.rights.admin?t.role="admin":t.rights.moderator?t.role="moderator":t.role="member"}e.source&&(t.description=e.source.note,t.default_scope=e.source.privacy,t.fields=e.source.fields,e.source.pleroma&&(t.no_rich_text=e.source.pleroma.no_rich_text,t.show_role=e.source.pleroma.show_role,t.discoverable=e.source.pleroma.discoverable)),t.is_local=!t.screen_name.includes("@")}else t.screen_name=e.screen_name,t.name=e.name,t.name_html=e.name_html,t.description=e.description,t.description_html=e.description_html,t.profile_image_url=e.profile_image_url,t.profile_image_url_original=e.profile_image_url_original,t.cover_photo=e.cover_photo,t.friends_count=e.friends_count,t.statusnet_profile_url=e.statusnet_profile_url,t.is_local=e.is_local,t.role=e.role,t.show_role=e.show_role,e.rights&&(t.rights={moderator:e.rights.delete_others_notice,admin:e.rights.admin}),t.no_rich_text=e.no_rich_text,t.default_scope=e.default_scope,t.hide_follows=e.hide_follows,t.hide_followers=e.hide_followers,t.hide_follows_count=e.hide_follows_count,t.hide_followers_count=e.hide_followers_count,t.background_image=e.background_image,t.token=e.token,t.relationship={muting:e.muted,blocking:e.statusnet_blocking,followed_by:e.follows_you,following:e.following};if(t.created_at=new Date(e.created_at),t.locked=e.locked,t.followers_count=e.followers_count,t.statuses_count=e.statuses_count,e.pleroma&&(t.follow_request_count=e.pleroma.follow_request_count,t.tags=e.pleroma.tags,t.deactivated=void 0!==e.pleroma.is_active?!e.pleroma.is_active:e.pleroma.deactivated,t.notification_settings=e.pleroma.notification_settings,t.unread_chat_count=e.pleroma.unread_chat_count),t.tags=t.tags||[],t.rights=t.rights||{},t.notification_settings=t.notification_settings||{},t.screen_name_ui=t.screen_name,t.screen_name&&t.screen_name.includes("@")){var o=t.screen_name.split("@"),a=u.a.toUnicode(o[1]);a!==o[1]&&(a="🌏"+a,t.screen_name_ui=[o[0],a].join("@"))}return t},b=function(e){var t={};return!e.hasOwnProperty("oembed")?(t.mimetype=e.pleroma?e.pleroma.mime_type:e.type,t.meta=e.meta,t.id=e.id):t.mimetype=e.mimetype,t.url=e.url,t.large_thumb_url=e.preview_url,t.description=e.description,t},m=function e(t){var n={},r=t.hasOwnProperty("account");if(r){if(n.favorited=t.favourited,n.fave_num=t.favourites_count,n.repeated=t.reblogged,n.repeat_num=t.reblogs_count,n.bookmarked=t.bookmarked,n.type=t.reblog?"retweet":"status",n.nsfw=t.sensitive,n.raw_html=t.content,n.emojis=t.emojis,n.tags=t.tags,t.pleroma){var i=t.pleroma;n.text=i.content?t.pleroma.content["text/plain"]:t.content,n.summary=i.spoiler_text?t.pleroma.spoiler_text["text/plain"]:t.spoiler_text,n.statusnet_conversation_id=t.pleroma.conversation_id,n.is_local=i.local,n.in_reply_to_screen_name=t.pleroma.in_reply_to_account_acct,n.thread_muted=i.thread_muted,n.emoji_reactions=i.emoji_reactions,n.parent_visible=void 0===i.parent_visible||i.parent_visible}else n.text=t.content,n.summary=t.spoiler_text;if(t.akkoma){var o=t.akkoma;o&&o.source&&"text/x.misskeymarkdown"===o.source.mediaType&&(n.mfm_content=o.source.content)}else n.mfm_content=null;n.in_reply_to_status_id=t.in_reply_to_id,n.in_reply_to_user_id=t.in_reply_to_account_id,n.replies_count=t.replies_count,"retweet"===n.type&&(n.retweeted_status=e(t.reblog)),n.summary_raw_html=s()(t.spoiler_text),n.external_url=t.url,n.poll=t.poll,n.poll&&(n.poll.options=(n.poll.options||[]).map((function(e){return p(p({},e),{},{title_html:s()(e.title)})}))),n.pinned=t.pinned,n.muted=t.muted}else n.favorited=t.favorited,n.fave_num=t.fave_num,n.repeated=t.repeated,n.repeat_num=t.repeat_num,n.type=function(e){return e.is_post_verb?"status":e.retweeted_status?"retweet":"string"==typeof e.uri&&e.uri.match(/(fave|objectType=Favourite)/)||"string"==typeof e.text&&e.text.match(/favorited/)?"favorite":e.text.match(/deleted notice {{tag/)||e.qvitter_delete_notice?"deletion":e.text.match(/started following/)||"follow"===e.activity_type?"follow":"unknown"}(t),void 0===t.nsfw?(n.nsfw=O(t),t.retweeted_status&&(n.nsfw=t.retweeted_status.nsfw)):n.nsfw=t.nsfw,n.raw_html=t.statusnet_html,n.text=t.text,n.in_reply_to_status_id=t.in_reply_to_status_id,n.in_reply_to_user_id=t.in_reply_to_user_id,n.in_reply_to_screen_name=t.in_reply_to_screen_name,n.statusnet_conversation_id=t.statusnet_conversation_id,"retweet"===n.type&&(n.retweeted_status=e(t.retweeted_status)),n.summary=t.summary,n.summary_html=t.summary_html,n.external_url=t.external_url,n.is_local=t.is_local;n.id=String(t.id),n.visibility=t.visibility,n.card=t.card,n.created_at=new Date(t.created_at),n.in_reply_to_status_id=n.in_reply_to_status_id?String(n.in_reply_to_status_id):null,n.in_reply_to_user_id=n.in_reply_to_user_id?String(n.in_reply_to_user_id):null,n.user=h(r?t.account:t.user),n.attentions=((r?t.mentions:t.attentions)||[]).map(h),n.attachments=((r?t.media_attachments:t.attachments)||[]).map(b);var a=r?t.reblog:t.retweeted_status;return a&&(n.retweeted_status=e(a)),n.favoritedBy=[],n.rebloggedBy=[],n},f=function(e){var t={};if(!e.hasOwnProperty("ntype"))t.type={favourite:"like",reblog:"repeat"}[e.type]||e.type,t.seen=e.pleroma.is_seen,t.status=Object(l.b)(t.type)?m(e.status):null,t.action=t.status,t.target="move"!==t.type?null:h(e.target),t.from_profile=h(e.account),t.emoji=e.emoji,t.emoji_url=e.emoji_url;else{var n=m(e.notice);t.type=e.ntype,t.seen=Boolean(e.is_seen),t.status="like"===t.type?m(e.notice.favorited_status):n,t.action=n,t.from_profile="pleroma:chat_mention"===t.type?h(e.account):h(e.from_profile)}return t.created_at=new Date(e.created_at),t.id=parseInt(e.id),t},O=function(e){return(e.tags||[]).includes("nsfw")||!!(e.text||"").match(/#nsfw/i)},j=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.flakeId,r=c()(e);if(r){var i=r.next.max_id,o=r.prev.min_id;return{maxId:n?i:parseInt(i,10),minId:n?o:parseInt(o,10)}}},g=function(e){var t={};return t.id=e.id,t.account=h(e.account),t.unread=e.unread,t.lastMessage=v(e.last_message),t.updated_at=new Date(e.updated_at),t},v=function(e){if(e){if(e.isNormalized)return e;var t=e;return t.id=e.id,t.created_at=new Date(e.created_at),t.chat_id=e.chat_id,t.emojis=e.emojis,t.content=e.content,e.attachment?t.attachments=[b(e.attachment)]:t.attachments=[],t.pending=!!e.pending,t.error=!1,t.idempotency_key=e.idempotency_key,t.isNormalized=!0,t}}},function(e,t,n){"use strict";n.d(t,"d",(function(){return xe})),n.d(t,"a",(function(){return Ie})),n.d(t,"b",(function(){return ze}));var r=n(13),i=n.n(r),o=n(40),s=n.n(o),a=n(11),c=n.n(a),l=n(5),u=n.n(l),d=n(16),p=n.n(d),h=n(46),b=n.n(h),m=n(97),f=n.n(m),O=n(21),j=n.n(O),g=n(29),v=n.n(g),y=n(10),w=n.n(y),k=n(14),_=n(28),S=n.n(_),C=n(128),P=n.n(C),x=n(129),D=n.n(x),T=n(165),I=n.n(T),$=n(314),z=n.n($),M=n(315),U=n.n(M),F=n(130),E=n.n(F),L=n(316),R=n.n(L),A=n(12),N=n.n(A),B=n(166),V=n.n(B);function H(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=E()(e);if(t){var i=E()(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return U()(this,n)}}function q(e,t,n,r){this.name="StatusCodeError",this.statusCode=e,this.message=e+" - "+(JSON&&JSON.stringify?JSON.stringify(t):t),this.error=t,this.options=n,this.response=r,Error.captureStackTrace&&Error.captureStackTrace(this)}q.prototype=Object.create(Error.prototype),q.prototype.constructor=q;var J=function(e){z()(n,e);var t=H(n);function n(e){var r,i;D()(this,n),r=t.call(this),Error.captureStackTrace&&Error.captureStackTrace(I()(r));try{if("string"==typeof e&&(e=JSON.parse(e)).hasOwnProperty("error")&&(e=JSON.parse(e.error)),"object"===S()(e)){var o=JSON.parse(e.error);o.ap_id&&(o.username=o.ap_id,delete o.ap_id),r.message=(i=o,Object.entries(i).reduce((function(e,t){var n=c()(t,2),r=n[0],i=n[1].reduce((function(e,t){return e+[V()(r.replace(/_/g," ")),t].join(" ")+". "}),"");return[].concat(N()(e),[i])}),[]))}else r.message=e}catch(t){r.message=e}return r}return P()(n)}(R()(Error)),W=["nickname"],Y=["id","credentials"];function G(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function K(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?G(Object(n),!0).forEach((function(t){u()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):G(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var X=function(e,t){return"/api/pleroma/admin/users/".concat(e,"/permission_group/").concat(t)},Z=function(e){return"/api/v1/notifications/".concat(e,"/dismiss")},Q=function(e){return"/api/v1/statuses/".concat(e,"/favourite")},ee=function(e){return"/api/v1/statuses/".concat(e,"/unfavourite")},te=function(e){return"/api/v1/statuses/".concat(e,"/reblog")},ne=function(e){return"/api/v1/statuses/".concat(e,"/unreblog")},re=function(e){return"/api/v1/accounts/".concat(e,"/statuses")},ie=function(e){return"/api/v1/timelines/tag/".concat(e)},oe=function(e){return"/api/v1/accounts/".concat(e,"/mute")},se=function(e){return"/api/v1/accounts/".concat(e,"/unmute")},ae=function(e){return"/api/v1/pleroma/accounts/".concat(e,"/subscribe")},ce=function(e){return"/api/v1/pleroma/accounts/".concat(e,"/unsubscribe")},le=function(e){return"/api/v1/statuses/".concat(e,"/bookmark")},ue=function(e){return"/api/v1/statuses/".concat(e,"/unbookmark")},de=function(e){return"/api/v1/statuses/".concat(e,"/favourited_by")},pe=function(e){return"/api/v1/statuses/".concat(e,"/reblogged_by")},he=function(e){return"/api/v1/statuses/".concat(e,"/pin")},be=function(e){return"/api/v1/statuses/".concat(e,"/unpin")},me=function(e){return"/api/v1/statuses/".concat(e,"/mute")},fe=function(e){return"/api/v1/statuses/".concat(e,"/unmute")},Oe=function(e){return"/api/v1/pleroma/statuses/".concat(e,"/reactions")},je=function(e,t){return"/api/v1/pleroma/statuses/".concat(e,"/reactions/").concat(t)},ge=function(e,t){return"/api/v1/pleroma/statuses/".concat(e,"/reactions/").concat(t)},ve=function(e){return"/api/v1/pleroma/chats/".concat(e,"/messages")},ye=function(e){return"/api/v1/pleroma/chats/".concat(e,"/read")},we=function(e,t){return"/api/v1/pleroma/chats/".concat(e,"/messages/").concat(t)},ke=window.fetch,_e=function(e,t){var n=""+e;return(t=t||{}).credentials="same-origin",ke(n,t)},Se=function(e){var t=e.method,n=e.url,r=e.params,i=e.payload,o=e.credentials,s=e.headers,a={method:t,headers:K({Accept:"application/json","Content-Type":"application/json"},void 0===s?{}:s)};return r&&(n+="?"+Object.entries(r).map((function(e){var t=c()(e,2),n=t[0],r=t[1];return encodeURIComponent(n)+"="+encodeURIComponent(r)})).join("&")),i&&(a.body=JSON.stringify(i)),o&&(a.headers=K(K({},a.headers),Ce(o))),_e(n,a).then((function(e){return new Promise((function(t,r){return e.json().then((function(i){return e.ok?t(i):r(new q(e.status,i,{url:n,options:a},e))})).catch((function(t){return r(new q(e.status,t,{url:n,options:a},e))}))}))}))},Ce=function(e){return e?{Authorization:"Bearer ".concat(e)}:{}},Pe=function(e){var t=e.id,n=e.maxId,r=e.sinceId,i=e.limit,o=void 0===i?20:i,s=e.credentials,a=function(e){return"/api/v1/accounts/".concat(e,"/following")}(t),c=[n&&"max_id=".concat(n),r&&"since_id=".concat(r),o&&"limit=".concat(o),"with_relationships=true"].filter((function(e){return e})).join("&");return _e(a+=c?"?"+c:"",{headers:Ce(s)}).then((function(e){return e.json()})).then((function(e){return e.map(k.g)}))},xe=function(e){var t=e.credentials,n=e.stream,r=e.args,i=void 0===r?{}:r;return Object.entries(K(K({},t?{access_token:t}:{}),{},{stream:n},i)).reduce((function(e,t){var n=c()(t,2),r=n[0],i=n[1];return e+"".concat(r,"=").concat(i,"&")}),"/api/v1/streaming?")},De=new Set(["update","notification","delete","filters_changed"]),Te=new Set(["pleroma:chat_update"]),Ie=function(e){var t=e.url,n=e.preprocessor,r=void 0===n?$e:n,i=e.id,o=void 0===i?"Unknown":i,s=new EventTarget,a=new WebSocket(t);if(!a)throw new Error("Failed to create socket ".concat(o));var c=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(e){return e};e.addEventListener(t,(function(e){s.dispatchEvent(new CustomEvent(t,{detail:n(e)}))}))};return a.addEventListener("open",(function(e){console.debug("[WS][".concat(o,"] Socket connected"),e)})),a.addEventListener("error",(function(e){console.debug("[WS][".concat(o,"] Socket errored"),e)})),a.addEventListener("close",(function(e){console.debug("[WS][".concat(o,"] Socket disconnected with code ").concat(e.code),e)})),c(a,"open"),c(a,"close"),c(a,"message",r),c(a,"error"),s.close=function(){a.close(1e3,"Shutting down socket")},s.getState=function(){return a.readyState},s},$e=function(e){var t=e.data;if(t){var n=JSON.parse(t),r=n.event,i=n.payload;if(!De.has(r)&&!Te.has(r))return console.warn("Unknown event",e),null;if("delete"===r)return{event:r,id:i};var o=i?JSON.parse(i):null;return"update"===r?{event:r,status:Object(k.f)(o)}:"notification"===r?{event:r,notification:Object(k.e)(o)}:"pleroma:chat_update"===r?{event:r,chatUpdate:Object(k.b)(o)}:void 0}},ze=Object.freeze({JOINED:1,CLOSED:2,ERROR:3,DISABLED:4,STARTING:5,STARTING_INITIAL:6}),Me={verifyCredentials:function(e){return _e("/api/v1/accounts/verify_credentials",{headers:Ce(e)}).then((function(e){return e.ok?e.json():{error:e}})).then((function(e){return e.error?e:Object(k.g)(e)}))},fetchTimeline:function(e){var t=e.timeline,n=e.credentials,r=e.since,i=void 0!==r&&r,o=e.until,s=void 0!==o&&o,a=e.userId,c=void 0!==a&&a,l=e.tag,u=void 0!==l&&l,d=e.withMuted,p=void 0!==d&&d,h=e.replyVisibility,b=void 0===h?"all":h,m="notifications"===t,f=[],O={public:"/api/v1/timelines/public",friends:"/api/v1/timelines/home",dms:"/api/v1/timelines/direct",notifications:"/api/v1/notifications",publicAndExternal:"/api/v1/timelines/public",user:re,media:re,favorites:"/api/v1/favourites",tag:ie,bookmarks:"/api/v1/bookmarks"}[t];"user"!==t&&"media"!==t||(O=O(c)),i&&f.push(["since_id",i]),s&&f.push(["max_id",s]),u&&(O=O(u)),"media"===t&&f.push(["only_media",1]),"public"===t&&f.push(["local",!0]),"public"!==t&&"publicAndExternal"!==t||f.push(["only_media",!1]),"favorites"!==t&&"bookmarks"!==t&&f.push(["with_muted",p]),"all"!==b&&f.push(["reply_visibility",b]),f.push(["limit",20]);var g=j()(f,(function(e){return"".concat(e[0],"=").concat(e[1])})).join("&");O+="?".concat(g);var v="",y="",w={};return _e(O,{headers:Ce(n)}).then((function(e){return v=e.status,y=e.statusText,w=Object(k.d)(e.headers.get("Link"),{flakeId:"bookmarks"!==t&&"notifications"!==t}),e})).then((function(e){return e.json()})).then((function(e){return e.errors?(e.status=v,e.statusText=y,e):{data:e.map(m?k.e:k.f),pagination:w}}))},fetchPinnedStatuses:function(e){var t=e.id,n=e.credentials,r=re(t)+"?pinned=true";return Se({url:r,credentials:n}).then((function(e){return e.map(k.f)}))},fetchConversation:function(e){var t=e.id,n=e.credentials,r=function(e){return"/api/v1/statuses/".concat(e,"/context")}(t);return _e(r,{headers:Ce(n)}).then((function(e){if(e.ok)return e;throw new Error("Error fetching timeline",e)})).then((function(e){return e.json()})).then((function(e){var t=e.ancestors,n=e.descendants;return{ancestors:t.map(k.f),descendants:n.map(k.f)}}))},fetchStatus:function(e){var t=e.id,n=e.credentials,r=function(e){return"/api/v1/statuses/".concat(e)}(t);return _e(r,{headers:Ce(n)}).then((function(e){if(e.ok)return e;throw new Error("Error fetching timeline",e)})).then((function(e){return e.json()})).then((function(e){return Object(k.f)(e)}))},fetchFriends:Pe,exportFriends:function(e){var t,n=e.id,r=e.credentials;return new Promise((t=i()(w.a.mark((function e(t,i){var o,s,a,c;return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.prev=0,o=[],s=!0;case 3:if(!s){e.next=12;break}return a=o.length>0?b()(o).id:void 0,e.next=7,Pe({id:n,maxId:a,credentials:r});case 7:c=e.sent,o=f()(o,c),0===c.length&&(s=!1),e.next=3;break;case 12:t(o),e.next=18;break;case 15:e.prev=15,e.t0=e.catch(0),i(e.t0);case 18:case"end":return e.stop()}}),e,null,[[0,15]])}))),function(e,n){return t.apply(this,arguments)}))},fetchFollowers:function(e){var t=e.id,n=e.maxId,r=e.sinceId,i=e.limit,o=void 0===i?20:i,s=e.credentials,a=function(e){return"/api/v1/accounts/".concat(e,"/followers")}(t),c=[n&&"max_id=".concat(n),r&&"since_id=".concat(r),o&&"limit=".concat(o),"with_relationships=true"].filter((function(e){return e})).join("&");return _e(a+=c?"?"+c:"",{headers:Ce(s)}).then((function(e){return e.json()})).then((function(e){return e.map(k.g)}))},followUser:function(e){var t=e.id,n=e.credentials,r=s()(e,Y),i=function(e){return"/api/v1/accounts/".concat(e,"/follow")}(t),o={};return void 0!==r.reblogs&&(o.reblogs=r.reblogs),_e(i,{body:JSON.stringify(o),headers:K(K({},Ce(n)),{},{"Content-Type":"application/json"}),method:"POST"}).then((function(e){return e.json()}))},unfollowUser:function(e){var t=e.id,n=e.credentials,r=function(e){return"/api/v1/accounts/".concat(e,"/unfollow")}(t);return _e(r,{headers:Ce(n),method:"POST"}).then((function(e){return e.json()}))},pinOwnStatus:function(e){var t=e.id,n=e.credentials;return Se({url:he(t),credentials:n,method:"POST"}).then((function(e){return Object(k.f)(e)}))},unpinOwnStatus:function(e){var t=e.id,n=e.credentials;return Se({url:be(t),credentials:n,method:"POST"}).then((function(e){return Object(k.f)(e)}))},muteConversation:function(e){var t=e.id,n=e.credentials;return Se({url:me(t),credentials:n,method:"POST"}).then((function(e){return Object(k.f)(e)}))},unmuteConversation:function(e){var t=e.id,n=e.credentials;return Se({url:fe(t),credentials:n,method:"POST"}).then((function(e){return Object(k.f)(e)}))},blockUser:function(e){var t=e.id,n=e.credentials;return _e(function(e){return"/api/v1/accounts/".concat(e,"/block")}(t),{headers:Ce(n),method:"POST"}).then((function(e){return e.json()}))},unblockUser:function(e){var t=e.id,n=e.credentials;return _e(function(e){return"/api/v1/accounts/".concat(e,"/unblock")}(t),{headers:Ce(n),method:"POST"}).then((function(e){return e.json()}))},fetchUser:function(e){var t=e.id,n=e.credentials,r="".concat("/api/v1/accounts","/").concat(t);return Se({url:r,credentials:n}).then((function(e){return Object(k.g)(e)}))},fetchUserRelationship:function(e){var t=e.id,n=e.credentials,r="".concat("/api/v1/accounts/relationships","/?id=").concat(t);return _e(r,{headers:Ce(n)}).then((function(e){return new Promise((function(t,n){return e.json().then((function(i){return e.ok?t(i):n(new q(e.status,i,{url:r},e))}))}))}))},favorite:function(e){var t=e.id,n=e.credentials;return Se({url:Q(t),method:"POST",credentials:n}).then((function(e){return Object(k.f)(e)}))},unfavorite:function(e){var t=e.id,n=e.credentials;return Se({url:ee(t),method:"POST",credentials:n}).then((function(e){return Object(k.f)(e)}))},retweet:function(e){var t=e.id,n=e.credentials;return Se({url:te(t),method:"POST",credentials:n}).then((function(e){return Object(k.f)(e)}))},unretweet:function(e){var t=e.id,n=e.credentials;return Se({url:ne(t),method:"POST",credentials:n}).then((function(e){return Object(k.f)(e)}))},bookmarkStatus:function(e){var t=e.id,n=e.credentials;return Se({url:le(t),headers:Ce(n),method:"POST"})},unbookmarkStatus:function(e){var t=e.id,n=e.credentials;return Se({url:ue(t),headers:Ce(n),method:"POST"})},postStatus:function(e){var t=e.credentials,n=e.status,r=e.spoilerText,i=e.visibility,o=e.sensitive,s=e.poll,a=e.mediaIds,c=void 0===a?[]:a,l=e.inReplyToStatusId,u=e.contentType,d=e.preview,p=e.idempotencyKey,h=new FormData,b=s.options||[];if(h.append("status",n),h.append("source","Pleroma FE"),r&&h.append("spoiler_text",r),i&&h.append("visibility",i),o&&h.append("sensitive",o),u&&h.append("content_type",u),c.forEach((function(e){h.append("media_ids[]",e)})),b.some((function(e){return""!==e}))){var m={expires_in:s.expiresIn,multiple:s.multiple};Object.keys(m).forEach((function(e){h.append("poll[".concat(e,"]"),m[e])})),b.forEach((function(e){h.append("poll[options][]",e)}))}l&&h.append("in_reply_to_id",l),d&&h.append("preview","true");var f=Ce(t);return p&&(f["idempotency-key"]=p),_e("/api/v1/statuses",{body:h,method:"POST",headers:f}).then((function(e){return e.json()})).then((function(e){return e.error?e:Object(k.f)(e)}))},deleteStatus:function(e){var t=e.id,n=e.credentials;return _e(function(e){return"/api/v1/statuses/".concat(e)}(t),{headers:Ce(n),method:"DELETE"})},uploadMedia:function(e){var t=e.formData,n=e.credentials;return _e("/api/v1/media",{body:t,method:"POST",headers:Ce(n)}).then((function(e){return e.json()})).then((function(e){return Object(k.a)(e)}))},setMediaDescription:function(e){var t=e.id,n=e.description,r=e.credentials;return Se({url:"".concat("/api/v1/media","/").concat(t),method:"PUT",headers:Ce(r),payload:{description:n}}).then((function(e){return Object(k.a)(e)}))},fetchMutes:function(e){var t=e.credentials;return Se({url:"/api/v1/mutes/",credentials:t}).then((function(e){return e.map(k.g)}))},muteUser:function(e){var t=e.id,n=e.credentials;return Se({url:oe(t),credentials:n,method:"POST"})},unmuteUser:function(e){var t=e.id,n=e.credentials;return Se({url:se(t),credentials:n,method:"POST"})},subscribeUser:function(e){var t=e.id,n=e.credentials;return Se({url:ae(t),credentials:n,method:"POST"})},unsubscribeUser:function(e){var t=e.id,n=e.credentials;return Se({url:ce(t),credentials:n,method:"POST"})},fetchBlocks:function(e){var t=e.credentials;return Se({url:"/api/v1/blocks/",credentials:t}).then((function(e){return e.map(k.g)}))},fetchOAuthTokens:function(e){var t=e.credentials;return _e("/api/oauth_tokens.json",{headers:Ce(t)}).then((function(e){if(e.ok)return e.json();throw new Error("Error fetching auth tokens",e)}))},revokeOAuthToken:function(e){var t=e.id,n=e.credentials,r="/api/oauth_tokens/".concat(t);return _e(r,{headers:Ce(n),method:"DELETE"})},tagUser:function(e){var t=e.tag,n=e.credentials,r={nicknames:[e.user.screen_name],tags:[t]},i=Ce(n);return i["Content-Type"]="application/json",_e("/api/pleroma/admin/users/tag",{method:"PUT",headers:i,body:JSON.stringify(r)})},untagUser:function(e){var t=e.tag,n=e.credentials,r={nicknames:[e.user.screen_name],tags:[t]},i=Ce(n);return i["Content-Type"]="application/json",_e("/api/pleroma/admin/users/tag",{method:"DELETE",headers:i,body:JSON.stringify(r)})},deleteUser:function(e){var t=e.credentials,n=e.user.screen_name,r=Ce(t);return _e("".concat("/api/pleroma/admin/users","?nickname=").concat(n),{method:"DELETE",headers:r})},addRight:function(e){var t=e.right,n=e.credentials,r=e.user.screen_name;return _e(X(r,t),{method:"POST",headers:Ce(n),body:{}})},deleteRight:function(e){var t=e.right,n=e.credentials,r=e.user.screen_name;return _e(X(r,t),{method:"DELETE",headers:Ce(n),body:{}})},activateUser:function(e){var t=e.credentials,n=e.user.screen_name;return Se({url:"/api/pleroma/admin/users/activate",method:"PATCH",credentials:t,payload:{nicknames:[n]}}).then((function(e){return p()(e,"users.0")}))},deactivateUser:function(e){var t=e.credentials,n=e.user.screen_name;return Se({url:"/api/pleroma/admin/users/deactivate",method:"PATCH",credentials:t,payload:{nicknames:[n]}}).then((function(e){return p()(e,"users.0")}))},register:function(e){var t=e.params,n=e.credentials,r=t.nickname,i=s()(t,W);return _e("/api/v1/accounts",{method:"POST",headers:K(K({},Ce(n)),{},{"Content-Type":"application/json"}),body:JSON.stringify(K({nickname:r,locale:"en_US",agreement:!0},i))}).then((function(e){return e.ok?e.json():e.json().then((function(e){throw new J(e)}))}))},getCaptcha:function(){return _e("/api/pleroma/captcha").then((function(e){return e.json()}))},updateProfileImages:function(e){var t=e.credentials,n=e.avatar,r=void 0===n?null:n,i=e.avatarName,o=void 0===i?null:i,s=e.banner,a=void 0===s?null:s,c=e.background,l=void 0===c?null:c,u=new FormData;return null!==r&&(null!==o?u.append("avatar",r,o):u.append("avatar",r)),null!==a&&u.append("header",a),null!==l&&u.append("pleroma_background_image",l),_e("/api/v1/accounts/update_credentials",{headers:Ce(t),method:"PATCH",body:u}).then((function(e){return e.json()})).then((function(e){if(e.error)throw new Error(e.error);return Object(k.g)(e)}))},updateProfile:function(e){var t=e.credentials,n=e.params;return Se({url:"/api/v1/accounts/update_credentials",method:"PATCH",payload:n,credentials:t}).then((function(e){return Object(k.g)(e)}))},importMutes:function(e){var t=e.file,n=e.credentials,r=new FormData;return r.append("list",t),_e("/api/pleroma/mutes_import",{body:r,method:"POST",headers:Ce(n)}).then((function(e){return e.ok}))},importBlocks:function(e){var t=e.file,n=e.credentials,r=new FormData;return r.append("list",t),_e("/api/pleroma/blocks_import",{body:r,method:"POST",headers:Ce(n)}).then((function(e){return e.ok}))},importFollows:function(e){var t=e.file,n=e.credentials,r=new FormData;return r.append("list",t),_e("/api/pleroma/follow_import",{body:r,method:"POST",headers:Ce(n)}).then((function(e){return e.ok}))},deleteAccount:function(e){var t=e.credentials,n=e.password,r=new FormData;return r.append("password",n),_e("/api/pleroma/delete_account",{body:r,method:"POST",headers:Ce(t)}).then((function(e){return e.json()}))},changeEmail:function(e){var t=e.credentials,n=e.email,r=e.password,i=new FormData;return i.append("email",n),i.append("password",r),_e("/api/pleroma/change_email",{body:i,method:"POST",headers:Ce(t)}).then((function(e){return e.json()}))},changePassword:function(e){var t=e.credentials,n=e.password,r=e.newPassword,i=e.newPasswordConfirmation,o=new FormData;return o.append("password",n),o.append("new_password",r),o.append("new_password_confirmation",i),_e("/api/pleroma/change_password",{body:o,method:"POST",headers:Ce(t)}).then((function(e){return e.json()}))},settingsMFA:function(e){var t=e.credentials;return _e("/api/pleroma/accounts/mfa",{headers:Ce(t),method:"GET"}).then((function(e){return e.json()}))},mfaDisableOTP:function(e){var t=e.credentials,n=e.password,r=new FormData;return r.append("password",n),_e("/api/pleroma/accounts/mfa/totp",{body:r,method:"DELETE",headers:Ce(t)}).then((function(e){return e.json()}))},generateMfaBackupCodes:function(e){var t=e.credentials;return _e("/api/pleroma/accounts/mfa/backup_codes",{headers:Ce(t),method:"GET"}).then((function(e){return e.json()}))},mfaSetupOTP:function(e){var t=e.credentials;return _e("/api/pleroma/accounts/mfa/setup/totp",{headers:Ce(t),method:"GET"}).then((function(e){return e.json()}))},mfaConfirmOTP:function(e){var t=e.credentials,n=e.password,r=e.token,i=new FormData;return i.append("password",n),i.append("code",r),_e("/api/pleroma/accounts/mfa/confirm/totp",{body:i,headers:Ce(t),method:"POST"}).then((function(e){return e.json()}))},fetchFollowRequests:function(e){var t=e.credentials;return _e("/api/v1/follow_requests",{headers:Ce(t)}).then((function(e){return e.json()})).then((function(e){return e.map(k.g)}))},approveUser:function(e){var t=e.id,n=e.credentials,r=function(e){return"/api/v1/follow_requests/".concat(e,"/authorize")}(t);return _e(r,{headers:Ce(n),method:"POST"}).then((function(e){return e.json()}))},denyUser:function(e){var t=e.id,n=e.credentials,r=function(e){return"/api/v1/follow_requests/".concat(e,"/reject")}(t);return _e(r,{headers:Ce(n),method:"POST"}).then((function(e){return e.json()}))},suggestions:function(e){var t=e.credentials;return _e("/api/v1/suggestions",{headers:Ce(t)}).then((function(e){return e.json()}))},markNotificationsAsSeen:function(e){var t=e.id,n=e.credentials,r=e.single,i=void 0!==r&&r,o=new FormData;return i?o.append("id",t):o.append("max_id",t),_e("/api/v1/pleroma/notifications/read",{body:o,headers:Ce(n),method:"POST"}).then((function(e){return e.json()}))},dismissNotification:function(e){var t=e.credentials,n=e.id;return Se({url:Z(n),method:"POST",payload:{id:n},credentials:t})},vote:function(e){var t,n=e.pollId,r=e.choices,i=e.credentials;return(new FormData).append("choices",r),Se({url:(t=encodeURIComponent(n),"/api/v1/polls/".concat(t,"/votes")),method:"POST",credentials:i,payload:{choices:r}})},fetchPoll:function(e){var t,n=e.pollId,r=e.credentials;return Se({url:(t=encodeURIComponent(n),"/api/v1/polls/".concat(t)),method:"GET",credentials:r})},fetchFavoritedByUsers:function(e){var t=e.id,n=e.credentials;return Se({url:de(t),method:"GET",credentials:n}).then((function(e){return e.map(k.g)}))},fetchRebloggedByUsers:function(e){var t=e.id,n=e.credentials;return Se({url:pe(t),method:"GET",credentials:n}).then((function(e){return e.map(k.g)}))},fetchMascot:function(e){var t=e.credentials;return Se({url:"/api/v1/pleroma/mascot",credentials:t})},updateMascot:function(e){var t=e.mascot,n=e.credentials,r=new FormData;return r.append("file",t),_e("/api/v1/pleroma/mascot",{headers:Ce(n),method:"PUT",body:r}).then((function(e){return e.json()}))},fetchEmojiReactions:function(e){var t=e.id,n=e.credentials;return Se({url:Oe(t),credentials:n}).then((function(e){return e.map((function(e){return e.accounts=e.accounts.map(k.g),e}))}))},reactWithEmoji:function(e){var t=e.id,n=e.emoji,r=e.credentials;return Se({url:je(t,n),method:"PUT",credentials:r}).then(k.f)},unreactWithEmoji:function(e){var t=e.id,n=e.emoji,r=e.credentials;return Se({url:ge(t,n),method:"DELETE",credentials:r}).then(k.f)},reportUser:function(e){var t=e.credentials,n=e.userId,r=e.statusIds,i=e.comment,o=e.forward;return Se({url:"/api/v1/reports",method:"POST",payload:{account_id:n,status_ids:r,comment:i,forward:o},credentials:t})},updateNotificationSettings:function(e){var t=e.credentials,n=e.settings,r=new FormData;return v()(n,(function(e,t){r.append(t,e)})),_e("/api/pleroma/notification_settings",{headers:Ce(t),method:"PUT",body:r}).then((function(e){return e.json()}))},search2:function(e){var t=e.credentials,n=e.q,r=e.resolve,i=e.limit,o=e.offset,s=e.following,a="/api/v2/search",c=[];n&&c.push(["q",encodeURIComponent(n)]),r&&c.push(["resolve",r]),i&&c.push(["limit",i]),o&&c.push(["offset",o]),s&&c.push(["following",!0]),c.push(["with_relationships",!0]);var l=j()(c,(function(e){return"".concat(e[0],"=").concat(e[1])})).join("&");return a+="?".concat(l),_e(a,{headers:Ce(t)}).then((function(e){if(e.ok)return e;throw new Error("Error fetching search result",e)})).then((function(e){return e.json()})).then((function(e){return e.accounts=e.accounts.slice(0,i).map((function(e){return Object(k.g)(e)})),e.statuses=e.statuses.slice(0,i).map((function(e){return Object(k.f)(e)})),e}))},searchUsers:function(e){var t=e.credentials,n=e.query;return Se({url:"/api/v1/accounts/search",params:{q:n,resolve:!0},credentials:t}).then((function(e){return e.map(k.g)}))},fetchKnownDomains:function(e){var t=e.credentials;return Se({url:"/api/v1/instance/peers",credentials:t})},fetchDomainMutes:function(e){var t=e.credentials;return Se({url:"/api/v1/domain_blocks",credentials:t})},muteDomain:function(e){var t=e.domain,n=e.credentials;return Se({url:"/api/v1/domain_blocks",method:"POST",payload:{domain:t},credentials:n})},unmuteDomain:function(e){var t=e.domain,n=e.credentials;return Se({url:"/api/v1/domain_blocks",method:"DELETE",payload:{domain:t},credentials:n})},chats:function(e){var t=e.credentials;return _e("/api/v1/pleroma/chats",{headers:Ce(t)}).then((function(e){return e.json()})).then((function(e){return{chats:e.map(k.b).filter((function(e){return e}))}}))},getOrCreateChat:function(e){var t,n=e.accountId,r=e.credentials;return Se({url:(t=n,"/api/v1/pleroma/chats/by-account-id/".concat(t)),method:"POST",credentials:r})},chatMessages:function(e){var t=e.id,n=e.credentials,r=e.maxId,i=e.sinceId,o=e.limit,s=void 0===o?20:o,a=ve(t),c=[r&&"max_id=".concat(r),i&&"since_id=".concat(i),s&&"limit=".concat(s)].filter((function(e){return e})).join("&");return Se({url:a+=c?"?"+c:"",method:"GET",credentials:n})},sendChatMessage:function(e){var t=e.id,n=e.content,r=e.mediaId,i=void 0===r?null:r,o=e.idempotencyKey,s=e.credentials,a={content:n};i&&(a.media_id=i);var c={};return o&&(c["idempotency-key"]=o),Se({url:ve(t),method:"POST",payload:a,credentials:s,headers:c})},readChat:function(e){var t=e.id,n=e.lastReadId,r=e.credentials;return Se({url:ye(t),method:"POST",payload:{last_read_id:n},credentials:r})},deleteChatMessage:function(e){var t=e.chatId,n=e.messageId,r=e.credentials;return Se({url:we(t,n),method:"DELETE",credentials:r})}};t.c=Me},,,function(e,t,n){"use strict";n.d(t,"i",(function(){return p})),n.d(t,"h",(function(){return b})),n.d(t,"c",(function(){return f})),n.d(t,"a",(function(){return O})),n.d(t,"b",(function(){return j})),n.d(t,"f",(function(){return g})),n.d(t,"g",(function(){return v})),n.d(t,"j",(function(){return y})),n.d(t,"e",(function(){return w})),n.d(t,"d",(function(){return k}));var r=n(5),i=n.n(r),o=n(11),s=n.n(o),a=n(28),c=n.n(a),l=n(20);function u(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function d(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?u(Object(n),!0).forEach((function(t){i()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):u(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var p=function(e,t,n){if(null!=e){if("#"===e[0]||"transparent"===e)return e;if("object"===c()(e)){var r=e;e=r.r,t=r.g,n=r.b}var i=[e,t,n].map((function(e){return e=(e=(e=Math.ceil(e))<0?0:e)>255?255:e})),o=s()(i,3);return e=o[0],t=o[1],n=o[2],"#".concat(((1<<24)+(e<<16)+(t<<8)+n).toString(16).slice(1))}},h=function(e){return"rgb".split("").reduce((function(t,n){return t[n]=function(e){var t=e/255;return t<.03928?t/12.92:Math.pow((t+.055)/1.055,2.4)}(e[n]),t}),{})},b=function(e){var t=h(e);return.2126*t.r+.7152*t.g+.0722*t.b},m=function(e,t){var n=b(e),r=b(t),i=n>r?[n,r]:[r,n],o=s()(i,2);return(o[0]+.05)/(o[1]+.05)},f=function(e,t,n){return m(j(n,t),e)},O=function(e,t,n){return 1===t||void 0===t?e:"rgb".split("").reduce((function(r,i){return r[i]=e[i]*t+n[i]*(1-t),r}),{})},j=function(e,t){return t.reduce((function(e,t){var n=s()(t,2),r=n[0],i=n[1];return O(r,i,e)}),e)},g=function(e){var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null},v=function(e,t){return"rgb".split("").reduce((function(n,r){return n[r]=(e[r]+t[r])/2,n}),{})},y=function(e){return"rgba(".concat(Math.floor(e.r),", ").concat(Math.floor(e.g),", ").concat(Math.floor(e.b),", ").concat(e.a,")")},w=function(e,t,n){if(m(e,t)<4.5){var r=void 0!==t.a?{a:t.a}:{},i=Object.assign(r,Object(l.invertLightness)(t).rgb);return!n&&m(e,i)<4.5?Object(l.contrastRatio)(e,t).rgb:i}return t},k=function(e,t){var n={};if("object"===c()(e))n=e;else if("string"==typeof e){if(!e.startsWith("#"))return e;n=g(e)}return y(d(d({},n),{},{a:t}))}},,,,function(e,t,n){"use strict";n.r(t);var r=n(0);var i=n(50),o=n(6),s=n(3);o.c.add(s.ab);var a={props:["user","betterShadow","compact","bot"],data:function(){return{showPlaceholder:!1,defaultAvatar:"".concat(this.$store.state.instance.server+this.$store.state.instance.defaultAvatar)}},components:{StillImage:i.a},methods:{imgSrc:function(e){return!e||this.showPlaceholder?this.defaultAvatar:e},imageLoadError:function(){this.showPlaceholder=!0}}},c=(n(512),n(4));const l=n.n(c)()(a,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("StillImage"),c=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("span",{class:Object(r.w)(["Avatar",{"-compact":e.compact}])},[e.user?(Object(r.D)(),Object(r.h)(a,{key:0,class:Object(r.w)(["avatar",{"-compact":e.compact,"-better-shadow":e.betterShadow}]),alt:e.user.screen_name_ui,title:e.user.screen_name_ui,src:e.imgSrc(e.user.profile_image_url_original),"image-load-error":e.imageLoadError},null,8,["alt","title","src","image-load-error","class"])):(Object(r.D)(),Object(r.j)("div",{key:1,class:Object(r.w)(["avatar -placeholder",{"-compact":e.compact}])},null,2)),e.bot?(Object(r.D)(),Object(r.h)(c,{key:2,icon:"robot",class:"bot-indicator"})):Object(r.i)("",!0)],2)}]]);t.default=l},function(e,t,n){"use strict";var r=n(124),i=n.n(r),o=function(e){return e&&e.includes("@")};t.a=function(e,t,n){var r=!t||o(t)||i()(n,t);return{name:r?"external-user-profile":"user-profile",params:r?{id:e}:{name:t}}}},function(e,t,n){"use strict";n.r(t);var r=n(0);var i={name:"Popover",props:{trigger:String,placement:String,boundTo:Object,boundToSelector:String,margin:Object,offset:Object,popoverClass:String,removePadding:Boolean},data:function(){return{hidden:!0,styles:{opacity:0},oldSize:{width:0,height:0}}},methods:{containerBoundingClientRect:function(){return(this.boundToSelector?this.$el.closest(this.boundToSelector):this.$el.offsetParent).getBoundingClientRect()},updateStyles:function(){if(this.hidden)this.styles={opacity:0};else{var e=this.$refs.trigger&&this.$refs.trigger.children[0]||this.$el,t=e.offsetWidth||e.clientWidth,n=e.offsetHeight||e.clientHeight,r=e.getBoundingClientRect(),i=r.left+.5*r.width,o=r.top,s=this.$refs.content,a=this.boundTo&&("container"===this.boundTo.x||"container"===this.boundTo.y)&&this.containerBoundingClientRect(),c=this.margin||{},l=this.boundTo&&"container"===this.boundTo.x?{min:a.left+(c.left||0),max:a.right-(c.right||0)}:{min:0+(c.left||10),max:window.innerWidth-(c.right||10)},u=this.boundTo&&"container"===this.boundTo.y?{min:a.top+(c.top||0),max:a.bottom-(c.bottom||0)}:{min:0+(c.top||50),max:window.innerHeight-(c.bottom||5)},d=0;i-.5*s.offsetWidth<l.min&&(d+=-(i-.5*s.offsetWidth)+l.min),i+d+.5*s.offsetWidth>l.max&&(d-=i+d+.5*s.offsetWidth-l.max);var p="bottom"!==this.placement;o+s.offsetHeight>u.max&&(p=!0),o-s.offsetHeight<u.min&&(p=!1);var h=0;if(this.removePadding&&p){var b=getComputedStyle(e);h=parseFloat(b.paddingTop)+parseFloat(b.paddingBottom)}var m=this.offset&&this.offset.y||0,f=p?-n+h-m-s.offsetHeight:m,O=this.offset&&this.offset.x||0,j=.5*t-.5*s.offsetWidth+d+O;this.styles={opacity:1,transform:"translateX(".concat(Math.round(j),"px) translateY(").concat(Math.round(f),"px)")}}},showPopover:function(){var e=this,t=this.hidden;this.hidden=!1,this.$nextTick((function(){t&&e.$emit("show"),e.updateStyles()}))},hidePopover:function(){this.hidden||this.$emit("close"),this.hidden=!0,this.styles={opacity:0}},onMouseenter:function(e){"hover"===this.trigger&&this.showPopover()},onMouseleave:function(e){"hover"===this.trigger&&this.hidePopover()},onClick:function(e){"click"===this.trigger&&(this.hidden?this.showPopover():this.hidePopover())},onClickOutside:function(e){this.hidden||this.$el.contains(e.target)||this.hidePopover()}},updated:function(){var e=this.$refs.content;e&&(this.oldSize.width===e.offsetWidth&&this.oldSize.height===e.offsetHeight||(this.updateStyles(),this.oldSize={width:e.offsetWidth,height:e.offsetHeight}))},created:function(){document.addEventListener("click",this.onClickOutside)},unmounted:function(){document.removeEventListener("click",this.onClickOutside),this.hidePopover()}},o=(n(527),n(4));const s=n.n(o)()(i,[["render",function(e,t,n,i,o,s){return Object(r.D)(),Object(r.j)("div",{onMouseenter:t[1]||(t[1]=(...t)=>e.onMouseenter&&e.onMouseenter(...t)),onMouseleave:t[2]||(t[2]=(...t)=>e.onMouseleave&&e.onMouseleave(...t))},[Object(r.k)("button",{ref:"trigger",class:"button-unstyled popover-trigger-button",type:"button",onClick:t[0]||(t[0]=(...t)=>e.onClick&&e.onClick(...t))},[Object(r.I)(e.$slots,"trigger")],512),e.hidden?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",{key:0,ref:"content",style:Object(r.x)(e.styles),class:Object(r.w)(["popover",e.popoverClass||"popover-default"])},[Object(r.I)(e.$slots,"content",{class:"popover-inner",close:e.hidePopover})],6))],32)}]]);t.default=s},function(e,t,n){"use strict";var r=n(11),i=n.n(r),o=n(12),s=n.n(o),a=n(40),c=n.n(a),l=n(328),u=n.n(l),d=n(75),p=n.n(d),h=n(0);function b(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return m(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return m(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var f=function(e){var t=/(?:<\/(\w+)>|<(\w+)\s?.*?\/?>)/gi.exec(e);return t&&(t[1]||t[2])},O=function(e){var t=e.substring(1,e.length-1).replace(new RegExp("^"+f(e)),"").replace(/\/?$/,"").trim(),n=Array.from(t.matchAll(/([a-z0-9-]+)(?:=("[^"]+?"|'[^']+?'))?/gi)).map((function(e){var t=i()(e,3);t[0];return[t[1],t[2]]})).map((function(e){var t=i()(e,2),n=t[0],r=t[1];return r?[n,r.substring(1,r.length-1)]:[n,!0]}));return Object.fromEntries(n)},j=function(e,t,n){for(var r=[],i="",o=0;o<e.length;o++){var s=e[o];if(":"===s){var a,c=e.slice(o+1),l=!1,u=b(t);try{for(u.s();!(a=u.n()).done;){var d=a.value;if(c.slice(0,d.shortcode.length+1)===d.shortcode+":"){l=d;break}}}catch(e){u.e(e)}finally{u.f()}l?(r.push(i),i="",r.push(n(l)),o+=l.shortcode.length+1):i+=s}else i+=s}return i&&r.push(i),r};function g(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return v(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return v(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var y=n(50),w=n(81);const k={class:"HashtagLink"},_=["href","innerHTML"];var S={name:"HashtagLink",props:{url:{required:!0,type:String},content:{required:!0,type:String},tag:{required:!1,type:String,default:""}},methods:{onClick:function(){var e,t,n=this.tag||(e=this.url,!!(t=/tag[s]*\/(\w+)$/g.exec(e))&&t[1]);if(n){var r=this.generateTagLink(n);this.$router.push(r)}else window.open(this.url,"_blank")},generateTagLink:function(e){return"/tag/".concat(e)}}},C=(n(515),n(4));var P=n.n(C)()(S,[["render",function(e,t,n,r,i,o){return Object(h.D)(),Object(h.j)("span",k,[Object(h.k)("a",{href:e.url,class:"original",target:"_blank",onClick:t[0]||(t[0]=Object(h.Y)((...t)=>e.onClick&&e.onClick(...t),["prevent"])),innerHTML:e.content},null,8,_)])}]]),x=(n(516),["index"]);t.a={name:"RichContent",components:{MentionsLine:w.b,HashtagLink:P},props:{html:{required:!0,type:String},attentions:{required:!1,default:function(){return[]}},emoji:{required:!0,type:Array},handleLinks:{required:!1,type:Boolean,default:!1},greentext:{required:!1,type:Boolean,default:!1}},render:function(){var e=this,t=T(this.html,this.greentext).newHtml,n=null,r="",o=[],a=[],l=[],u=[],d=0,b=0,m=!1,g=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=new Set(["area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"]),n=[],r=[["",n]],i="",o=null,s=function(){return r[r.length-1][1]},a=function(){""!==i&&(s().push(i),i="")},c=function(e){s().push([e])},l=function(e){var t=s(),n=[p()(e),[]];r.push(n),t.push(n)},u=function(e){var t=r[r.length-1];f(r[r.length-1][0])===f(e)?(t.push(e),r.pop()):s().push(e)},d=0;d<e.length;d++){var h=e[d];if("<"===h&&null===o)a(),o=h;else if(">"!==h&&null!==o)o+=h;else if(">"===h&&null!==o){var b=o+=h;o=null;var m=f(b);"/"===b[1]?u(b):t.has(m)||"/"===b[b.length-2]?c(b):l(b)}else i+=h}return o&&(i+=o),a(),n}(t).map((function t(o,c,u,p){if("string"==typeof o){var b=""===o.trim();return o.includes("\n")&&(n=null),b?(r=o,c!==u.length-1&&null!==n?o.trim():o):(n=null,o.includes(":")&&(o=["",j(o,e.emoji,(function(e){var t=e.shortcode,n=e.url;return Object(h.m)(y.a,{class:"emoji img",src:n,title:":".concat(t,":"),alt:":".concat(t,":")},null)}))]),o)}if(Array.isArray(o)){var m=o,g=i()(m,3),v=g[0],k=g[1],_=g[2],S=f(v),C=O(v),P=!(null!==n)||k&&"string"==typeof k[0]&&k[0].match(/^\s/)?"":r;switch(S){case"br":n=null;break;case"img":return["",[P,(x=v,Object(h.m)(y.a,Object(h.u)(O(x),{class:"img"}),null))],""];case"a":if(!e.handleLinks)break;if(C.class&&C.class.includes("mention"))return function(t,r){var i=D(t,r,d++);return i.notifying=e.attentions.some((function(e){return e.statusnet_profile_url===i.url})),a.push(i),null===n&&(n=[]),n.push(i),n.length>w.a&&l.push(i),1===n.length?Object(h.m)(w.b,{mentions:n},null):""}(C,k);if(n=null,C.href)return function(e,t){var n=e.href.replace(/&amp;/g,"&"),r=t.map((function(t){return"string"==typeof t?t.replace(e.href,n):"<span>"===t[0]?Object(h.m)("span",null,[t[1]]):t[1]}));return Object(h.m)("a",Object(h.u)({attrs:e},{href:n}),s()(r))}(C,k);break;case"span":if(e.handleLinks&&C.class&&C.class.includes("h-card"))return["",k.map(t),""]}return void 0!==k?["",[P,[v,k.map(t),_]],""]:["",[P,o],""]}var x})),v=s()(g).reverse().map((function t(n,r,a,l){var d;if("string"==typeof n)return""===n.trim()?n:(m||(m=!0),p()(n));if(Array.isArray(n)){var j=i()(n,2),g=j[0],v=j[1],y=""===g?"":f(g);switch(y){case"a":if(!e.handleLinks)break;var w=O(g);if(w.class&&w.class.includes("hashtag")||"tag"===w.rel)return function(e,t,n){var r=D(e,t,b++),i=(r.index,c()(r,x));u.push(i),n||o.push(i);var s=i.url,a=i.tag,l=i.content;return Object(h.m)(P,{url:s,tag:a,content:l},null)}(w,v,m);w.target="_blank";var k=s()(v).reverse().map(t).reverse();return Object(h.m)("a",w,[k]);case"":return s()(v).reverse().map(t).reverse()}if(void 0!==v){var _=Array.isArray(v)?s()(v).reverse().map(t).reverse():v;return Object(h.m)(y,O(g),"function"==typeof(d=_)||"[object Object]"===Object.prototype.toString.call(d)&&!Object(h.t)(d)?_:{default:function(){return[_]}})}return Object(h.m)(y,null,null)}return n})).reverse(),k=Object(h.m)("span",{class:"RichContent"},[v]),_={lastTags:o,writtenMentions:a,writtenTags:u,invisibleMentions:l};return this.$emit("parseReady",_),k}};var D=function(e,t,n){var r=t.map((function e(t){return"string"==typeof t?t:t[1].map(e).join("")})).join("");return{index:n,url:e.href,tag:e["data-tag"],content:u()(t).join(""),textContent:r}},T=function(e,t){var n=new Set(["p","div"]);return{newHtml:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=new Set(["area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"]),r=new Set(["address","article","aside","blockquote","details","dialog","dd","div","dl","dt","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","li","main","nav","ol","p","pre","section","table","ul"]),i=new Set(["br"]),o=new Set([].concat(s()(r.values()),s()(i.values()))),a=new Set(o),c=g(n);try{for(c.s();!(e=c.n()).done;){var l=e.value;a.delete(l)}}catch(e){c.e(e)}finally{c.f()}for(var u=new Set([].concat(s()(a.values()),s()(n.values()))),d=[],p=[],h="",b=null,m=function(){h.trim().length>0?d.push({level:[].concat(p),text:h}):d.push(h),h=""},O=function(e){m(),d.push(e)},j=function(e){m(),d.push(e),p.unshift(f(e))},v=function(e){p[0]===f(e)?(m(),d.push(e),p.shift()):h+=e},y=0;y<t.length;y++){var w=t[y];if("<"===w&&null===b)b=w;else if(">"!==w&&null!==b)b+=w;else if(">"===w&&null!==b){var k=b+=w;b=null;var _=f(k);u.has(_)?i.has(_)?O(k):a.has(_)?"/"===k[1]?v(k):"/"===k[k.length-2]?O(k):j(k):h+=k:h+=k}else"\n"===w?O(w):h+=w}return b&&(h+=b),m(),d}(e).reverse().map((function(e,r,i){if(!e.text)return e;var o=e.text;if(t&&e.level.every((function(e){return n.has(e)}))&&(o.includes("&gt;")||o.includes("&lt;"))){var s=o.replace(/<[^>]+?>/gi,"").replace(/@\w+/gi,"").trim();if(s.startsWith("&gt;"))return"<span class='greentext'>".concat(o,"</span>");if(s.startsWith("&lt;"))return"<span class='cyantext'>".concat(o,"</span>")}return o})).reverse().join("")}}},function(e,t,n){"use strict";n.d(t,"e",(function(){return d})),n.d(t,"b",(function(){return b})),n.d(t,"c",(function(){return m})),n.d(t,"d",(function(){return O})),n.d(t,"a",(function(){return j})),n.d(t,"f",(function(){return g}));var r=n(124),i=n.n(r),o=n(125),s=n.n(o),a=n(49),c=n.n(a),l=n(126),u=n(127),d=function(e){return e.state.statuses.notifications.data},p=function(e){var t=e.rootState||e.state;return[t.config.notificationVisibility.likes&&"like",t.config.notificationVisibility.mentions&&"mention",t.config.notificationVisibility.repeats&&"repeat",t.config.notificationVisibility.follows&&"follow",t.config.notificationVisibility.followRequest&&"follow_request",t.config.notificationVisibility.moves&&"move",t.config.notificationVisibility.emojiReactions&&"pleroma:emoji_reaction",t.config.notificationVisibility.polls&&"poll"].filter((function(e){return e}))},h=["like","mention","repeat","pleroma:emoji_reaction","poll"],b=function(e){return i()(h,e)},m=function(e){return!(b(e.type)&&!e.status)},f=function(e,t){var n=Number(e.id),r=Number(t.id),i=!Number.isNaN(n),o=!Number.isNaN(r);return i&&o?n>r?-1:1:i&&!o?1:!i&&o||e.id>t.id?-1:1},O=function(e,t){var n=e.rootState||e.state;if(!t.seen&&p(e).includes(t.type)&&("mention"!==t.type||!function(e,t){if(t.status)return t.status.muted||Object(l.a)(t.status,e.rootGetters.mergedConfig.muteWords).length>0}(e,t))){var r=v(t,e.rootGetters.i18n);Object(u.a)(n,r)}},j=function(e,t){var n=d(e).map((function(e){return e})).sort(f);return(n=s()(n,"seen")).filter((function(n){return(t||p(e)).includes(n.type)}))},g=function(e){return c()(j(e),(function(e){return!e.seen}))},v=function(e,t){var n,r={tag:e.id},i=e.status,o=e.from_profile.name;switch(r.title=o,r.icon=e.from_profile.profile_image_url,e.type){case"like":n="favorited_you";break;case"repeat":n="repeated_you";break;case"follow":n="followed_you";break;case"move":n="migrated_to";break;case"follow_request":n="follow_request";break;case"poll":n="poll_ended"}return"pleroma:emoji_reaction"===e.type?r.body=t.t("notifications.reacted_with",[e.emoji]):n?r.body=t.t("notifications."+n):b(e.type)&&(r.body=e.status.text),i&&i.attachments&&i.attachments.length>0&&!i.nsfw&&i.attachments[0].mimetype.startsWith("image/")&&(r.image=i.attachments[0].url),r}},,,,,function(e,t,n){"use strict";n.d(t,"a",(function(){return l})),n.d(t,"b",(function(){return c}));var r=n(5),i=n.n(r),o=n(18);function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){i()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var c=function(e){if(void 0!==e){var t=e.color,n=e.type;if("string"==typeof t){var r=Object(o.f)(t);if(null!=r){var i="rgb(".concat(Math.floor(r.r),", ").concat(Math.floor(r.g),", ").concat(Math.floor(r.b),")"),s="rgba(".concat(Math.floor(r.r),", ").concat(Math.floor(r.g),", ").concat(Math.floor(r.b),", .1)"),c="rgba(".concat(Math.floor(r.r),", ").concat(Math.floor(r.g),", ").concat(Math.floor(r.b),", .2)"),l={"--____highlight-solidColor":i,"--____highlight-tintColor":s,"--____highlight-tintColor2":c};return"striped"===n?a({backgroundImage:["repeating-linear-gradient(135deg,","".concat(s," ,"),"".concat(s," 20px,"),"".concat(c," 20px,"),"".concat(c," 40px")].join(" "),backgroundPosition:"0 0"},l):"solid"===n?a({backgroundColor:c},l):"side"===n?a({backgroundImage:["linear-gradient(to right,","".concat(i," ,"),"".concat(i," 2px,"),"transparent 6px"].join(" "),backgroundPosition:"0 0"},l):void 0}}}},l=function(e){return"USER____"+e.screen_name.replace(/\./g,"_").replace(/@/g,"_AT_")}},,function(e,t,n){"use strict";var r=function(e){return e.match(/flash/)?"flash":e.match(/text\/html/)?"html":e.match(/image/)?"image":e.match(/video/)?"video":e.match(/audio/)?"audio":"unknown"},i={fileType:r,fileMatchesSomeType:function(e,t){return e.some((function(e){return r(t.mimetype)===e}))}};t.a=i},function(e,t,n){"use strict";n.r(t);var r=n(0);const i={key:0,class:"alert error"},o={key:1,class:"status-container muted"},s={class:"status-username"},a={key:0,class:"mute-thread"},c={key:1,class:"mute-thread"},l=["title"],u={key:0,class:"pin"},d={class:"faint"},p={class:"right-side faint"},h=["title"],b=Object(r.l)(" "+Object(r.O)(" ")+" "),m=["data-tags"],f={key:0,class:"left-side"},O=["href"],j={class:"right-side"},g={key:1,class:"status-heading"},v={class:"heading-name-row"},y={class:"heading-left"},w=["title"],k=["title"],_=["src"],S={class:"heading-right"},C=["title"],P=["title"],x=["title","aria-expanded"],D=["title"],T={key:0,class:"heading-reply-row"},I={key:0,class:"glued-label reply-glued-label"},$=["aria-label"],z=Object(r.l)(" "+Object(r.O)(" ")+" "),M={class:"reply-to-text"},U={key:1,class:"reply-to-no-popover"},F={class:"reply-to-text"},E={key:1,class:"glued-label"},L=["aria-label"],R={class:"mentions-text"},A={key:2,class:"replies"},N=["title"],B={key:1,class:"faint"},V=["onClick"],H={key:0,class:"favs-repeated-users"},q={class:"stats"},J={class:"stat-count"},W={class:"stat-title"},Y={class:"stat-number"},G={class:"stat-count"},K={class:"stat-title"},X={class:"stat-number"},Z={class:"avatar-row"},Q={key:4,class:"status-actions"},ee={key:3,class:"gravestone"},te={class:"left-side"},ne={class:"right-side"},re={class:"deleted-text"},ie={key:4,class:"status-container reply-form"};var oe=n(5),se=n.n(oe),ae=n(136),ce=n.n(ae),le=n(75),ue=n.n(le);const de={class:"ReplyButton"},pe=["title"],he={key:1},be={key:2,class:"action-counter"};var me=n(6),fe=n(3);me.c.add(fe.Y);var Oe={name:"ReplyButton",props:["status","replying"],computed:{loggedIn:function(){return!!this.$store.state.users.currentUser}}},je=(n(546),n(4)),ge=n.n(je);var ve=ge()(Oe,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("div",de,[e.loggedIn?(Object(r.D)(),Object(r.j)("button",{key:0,class:Object(r.w)(["button-unstyled interactive",{"-active":e.replying}]),title:e.$t("tool_tip.reply"),onClick:t[0]||(t[0]=Object(r.Y)(t=>e.$emit("toggle"),["prevent"]))},[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",icon:"reply"})],10,pe)):(Object(r.D)(),Object(r.j)("span",he,[Object(r.m)(a,{icon:"reply",class:"fa-scale-110 fa-old-padding",title:e.$t("tool_tip.reply")},null,8,["title"])])),e.status.replies_count>0?(Object(r.D)(),Object(r.j)("span",be,Object(r.O)(e.status.replies_count),1)):Object(r.i)("",!0)])}]]);const ye={class:"FavoriteButton"},we=["title"],ke={key:1},_e={key:2,class:"action-counter"};var Se=n(8),Ce=n(41);function Pe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}me.c.add(fe.jb,Ce.d);var xe={props:["status","loggedIn"],data:function(){return{animated:!1}},methods:{favorite:function(){var e=this;this.status.favorited?this.$store.dispatch("unfavorite",{id:this.status.id}):this.$store.dispatch("favorite",{id:this.status.id}),this.animated=!0,setTimeout((function(){e.animated=!1}),500)}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Pe(Object(n),!0).forEach((function(t){se()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Pe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Object(Se.c)(["mergedConfig"]))};n(547);var De=ge()(xe,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("div",ye,[e.loggedIn?(Object(r.D)(),Object(r.j)("button",{key:0,class:Object(r.w)(["button-unstyled interactive",e.status.favorited&&"-favorited"]),title:e.$t("tool_tip.favorite"),onClick:t[0]||(t[0]=Object(r.Y)(t=>e.favorite(),["prevent"]))},[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",icon:[e.status.favorited?"fas":"far","star"],spin:e.animated},null,8,["icon","spin"])],10,we)):(Object(r.D)(),Object(r.j)("span",ke,[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",title:e.$t("tool_tip.favorite"),icon:["far","star"]},null,8,["title"])])),!e.mergedConfig.hidePostStats&&e.status.fave_num>0?(Object(r.D)(),Object(r.j)("span",_e,Object(r.O)(e.status.fave_num),1)):Object(r.i)("",!0)])}]]);const Te={class:"reaction-picker-filter"},Ie=["placeholder"],$e={class:"reaction-picker"},ze=["title","onClick"],Me=Object(r.k)("div",{class:"reaction-picker-divider"},null,-1),Ue=["title","onClick"],Fe=["src"],Ee={key:1},Le=Object(r.k)("div",{class:"reaction-bottom-fader"},null,-1),Re=["title"];var Ae=n(12),Ne=n.n(Ae),Be=n(24);me.c.add(Ce.c);var Ve={props:["status"],data:function(){return{filterWord:""}},components:{Popover:Be.default},methods:{addReaction:function(e,t,n){var r=this.status.emoji_reactions.find((function(e){return e.name===t}));r&&r.me?this.$store.dispatch("unreactWithEmoji",{id:this.status.id,emoji:t}):this.$store.dispatch("reactWithEmoji",{id:this.status.id,emoji:t}),n()},focusInput:function(){var e=this;this.$nextTick((function(){var t=e.$el.querySelector("input");t&&t.focus()}))}},computed:{commonEmojis:function(){return[{displayText:"thumbsup",replacement:"👍"},{displayText:"angry",replacement:"😠"},{displayText:"eyes",replacement:"👀"},{displayText:"joy",replacement:"😂"},{displayText:"fire",replacement:"🔥"}]},emojis:function(){if(""!==this.filterWord){for(var e=this.filterWord.toLowerCase(),t=[],n=0,r=[].concat(Ne()(this.$store.state.instance.emoji),Ne()(this.$store.state.instance.customEmoji));n<r.length;n++){var i=r[n];if(i.replacement===this.filterWord)return[i];var o=i.displayText.toLowerCase().indexOf(e);o>-1&&(Array.isArray(t[o])||(t[o]=[]),t[o].push(i))}return t.flat()}return[].concat(Ne()(this.$store.state.instance.emoji),Ne()(this.$store.state.instance.customEmoji))||[]},mergedConfig:function(){return this.$store.getters.mergedConfig}}};n(548);var He=ge()(Ve,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon"),c=Object(r.J)("Popover");return Object(r.D)(),Object(r.h)(c,{trigger:"click",class:"ReactButton",placement:"top",offset:{y:5},"bound-to":{x:"container"},"remove-padding":"",onShow:e.focusInput},{content:Object(r.V)(({close:n})=>[Object(r.k)("div",Te,[Object(r.W)(Object(r.k)("input",{"onUpdate:modelValue":t[0]||(t[0]=t=>e.filterWord=t),size:"1",placeholder:e.$t("emoji.search_emoji")},null,8,Ie),[[r.S,e.filterWord]])]),Object(r.k)("div",$e,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.commonEmojis,t=>(Object(r.D)(),Object(r.j)("span",{key:t.replacement,class:"emoji-button",title:t.displayText,onClick:r=>e.addReaction(r,t.replacement,n)},Object(r.O)(t.replacement),9,ze))),128)),Me,(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.emojis,(t,i)=>(Object(r.D)(),Object(r.j)("span",{key:i,class:"emoji-button",title:t.displayText,onClick:r=>e.addReaction(r,t.replacement,n)},[!1!==t.imageUrl?(Object(r.D)(),Object(r.j)("img",{key:0,src:t.imageUrl,width:"30px",class:"custom-reaction"},null,8,Fe)):(Object(r.D)(),Object(r.j)("span",Ee,Object(r.O)(t.replacement),1))],8,Ue))),128)),Le])]),trigger:Object(r.V)(()=>[Object(r.k)("button",{class:"button-unstyled popover-trigger",title:e.$t("tool_tip.add_reaction")},[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",icon:["far","smile-beam"]})],8,Re)]),_:1},8,["onShow"])}]]);const qe={class:"RetweetButton"},Je=["title"],We={key:1},Ye={key:2},Ge={key:3,class:"no-event"};me.c.add(fe.Z);var Ke={props:["status","loggedIn","visibility"],data:function(){return{animated:!1}},methods:{retweet:function(){var e=this;this.status.repeated?this.$store.dispatch("unretweet",{id:this.status.id}):this.$store.dispatch("retweet",{id:this.status.id}),this.animated=!0,setTimeout((function(){e.animated=!1}),500)}},computed:{mergedConfig:function(){return this.$store.getters.mergedConfig}}};n(549);var Xe=ge()(Ke,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("div",qe,["private"!==e.visibility&&"direct"!==e.visibility&&e.loggedIn?(Object(r.D)(),Object(r.j)("button",{key:0,class:Object(r.w)(["button-unstyled interactive",e.status.repeated&&"-repeated"]),title:e.$t("tool_tip.repeat"),onClick:t[0]||(t[0]=Object(r.Y)(t=>e.retweet(),["prevent"]))},[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",icon:"retweet",spin:e.animated},null,8,["spin"])],10,Je)):e.loggedIn?(Object(r.D)(),Object(r.j)("span",We,[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",icon:"lock",title:e.$t("timeline.no_retweet_hint")},null,8,["title"])])):(Object(r.D)(),Object(r.j)("span",Ye,[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",icon:"retweet",title:e.$t("tool_tip.repeat")},null,8,["title"])])),!e.mergedConfig.hidePostStats&&e.status.repeat_num>0?(Object(r.D)(),Object(r.j)("span",Ge,Object(r.O)(e.status.repeat_num),1)):Object(r.i)("",!0)])}]]);const Ze={class:"dropdown-menu"},Qe=["onClick"],et=["onClick"],tt=["onClick"],nt=["onClick"],rt=["onClick"],it=["onClick"],ot=["href"],st=["onClick"],at={class:"button-unstyled popover-trigger"};me.c.add(fe.w,fe.j,Ce.a,fe.C,fe.qb,fe.fb,fe.A,Ce.b);var ct={props:["status"],components:{Popover:Be.default},methods:{deleteStatus:function(){window.confirm(this.$t("status.delete_confirm"))&&this.$store.dispatch("deleteStatus",{id:this.status.id})},pinStatus:function(){var e=this;this.$store.dispatch("pinStatus",this.status.id).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},unpinStatus:function(){var e=this;this.$store.dispatch("unpinStatus",this.status.id).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},muteConversation:function(){var e=this;this.$store.dispatch("muteConversation",this.status.id).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},unmuteConversation:function(){var e=this;this.$store.dispatch("unmuteConversation",this.status.id).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},copyLink:function(){var e=this;navigator.clipboard.writeText(this.statusLink).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},bookmarkStatus:function(){var e=this;this.$store.dispatch("bookmark",{id:this.status.id}).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},unbookmarkStatus:function(){var e=this;this.$store.dispatch("unbookmark",{id:this.status.id}).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},reportStatus:function(){this.$store.dispatch("openUserReportingModal",{userId:this.status.user.id,statusIds:[this.status.id]})}},computed:{currentUser:function(){return this.$store.state.users.currentUser},canDelete:function(){if(this.currentUser)return this.currentUser.rights.moderator||this.currentUser.rights.admin||this.status.user.id===this.currentUser.id},ownStatus:function(){return this.status.user.id===this.currentUser.id},canPin:function(){return this.ownStatus&&("public"===this.status.visibility||"unlisted"===this.status.visibility)},canMute:function(){return!!this.currentUser},statusLink:function(){return"".concat(this.$store.state.instance.server).concat(this.$router.resolve({name:"conversation",params:{id:this.status.id}}).href)}}};n(550);var lt=ge()(ct,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon"),c=Object(r.J)("Popover");return Object(r.D)(),Object(r.h)(c,{class:"ExtraButtons",trigger:"click",placement:"top",offset:{y:5},"bound-to":{x:"container"},"remove-padding":""},{content:Object(r.V)(({close:n})=>[Object(r.k)("div",Ze,[e.canMute&&!e.status.thread_muted?(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-default dropdown-item dropdown-item-icon",onClick:t[0]||(t[0]=Object(r.Y)((...t)=>e.muteConversation&&e.muteConversation(...t),["prevent"]))},[Object(r.m)(a,{"fixed-width":"",icon:"eye-slash"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.mute_conversation")),1)])):Object(r.i)("",!0),e.canMute&&e.status.thread_muted?(Object(r.D)(),Object(r.j)("button",{key:1,class:"button-default dropdown-item dropdown-item-icon",onClick:t[1]||(t[1]=Object(r.Y)((...t)=>e.unmuteConversation&&e.unmuteConversation(...t),["prevent"]))},[Object(r.m)(a,{"fixed-width":"",icon:"eye-slash"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.unmute_conversation")),1)])):Object(r.i)("",!0),!e.status.pinned&&e.canPin?(Object(r.D)(),Object(r.j)("button",{key:2,class:"button-default dropdown-item dropdown-item-icon",onClick:[t[2]||(t[2]=Object(r.Y)((...t)=>e.pinStatus&&e.pinStatus(...t),["prevent"])),n]},[Object(r.m)(a,{"fixed-width":"",icon:"thumbtack"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.pin")),1)],8,Qe)):Object(r.i)("",!0),e.status.pinned&&e.canPin?(Object(r.D)(),Object(r.j)("button",{key:3,class:"button-default dropdown-item dropdown-item-icon",onClick:[t[3]||(t[3]=Object(r.Y)((...t)=>e.unpinStatus&&e.unpinStatus(...t),["prevent"])),n]},[Object(r.m)(a,{"fixed-width":"",icon:"thumbtack"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.unpin")),1)],8,et)):Object(r.i)("",!0),e.status.bookmarked?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("button",{key:4,class:"button-default dropdown-item dropdown-item-icon",onClick:[t[4]||(t[4]=Object(r.Y)((...t)=>e.bookmarkStatus&&e.bookmarkStatus(...t),["prevent"])),n]},[Object(r.m)(a,{"fixed-width":"",icon:["far","bookmark"]}),Object(r.k)("span",null,Object(r.O)(e.$t("status.bookmark")),1)],8,tt)),e.status.bookmarked?(Object(r.D)(),Object(r.j)("button",{key:5,class:"button-default dropdown-item dropdown-item-icon",onClick:[t[5]||(t[5]=Object(r.Y)((...t)=>e.unbookmarkStatus&&e.unbookmarkStatus(...t),["prevent"])),n]},[Object(r.m)(a,{"fixed-width":"",icon:"bookmark"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.unbookmark")),1)],8,nt)):Object(r.i)("",!0),e.canDelete?(Object(r.D)(),Object(r.j)("button",{key:6,class:"button-default dropdown-item dropdown-item-icon",onClick:[t[6]||(t[6]=Object(r.Y)((...t)=>e.deleteStatus&&e.deleteStatus(...t),["prevent"])),n]},[Object(r.m)(a,{"fixed-width":"",icon:"times"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.delete")),1)],8,rt)):Object(r.i)("",!0),Object(r.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:[t[7]||(t[7]=Object(r.Y)((...t)=>e.copyLink&&e.copyLink(...t),["prevent"])),n]},[Object(r.m)(a,{"fixed-width":"",icon:"share-alt"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.copy_link")),1)],8,it),e.status.is_local?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("a",{key:7,class:"button-default dropdown-item dropdown-item-icon",title:"Source",href:e.status.external_url,target:"_blank"},[Object(r.m)(a,{"fixed-width":"",icon:"external-link-alt"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.external_source")),1)],8,ot)),Object(r.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:[t[8]||(t[8]=Object(r.Y)((...t)=>e.reportStatus&&e.reportStatus(...t),["prevent"])),n]},[Object(r.m)(a,{"fixed-width":"",icon:["far","flag"]}),Object(r.k)("span",null,Object(r.O)(e.$t("user_card.report")),1)],8,st)])]),trigger:Object(r.V)(()=>[Object(r.k)("button",at,[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",icon:"ellipsis-h"})])]),_:1})}]]),ut=n(57),dt=n(35),pt=n(22),ht=n(144),bt=n(59),mt=n(45),ft=n(25);const Ot={key:1,class:"status-preview-no-content faint"},jt={key:2,class:"status-preview-no-content"};var gt=n(30),vt=n.n(gt);me.c.add(fe.r);var yt={name:"StatusPopover",props:["statusId"],data:function(){return{error:!1}},computed:{status:function(){return vt()(this.$store.state.statuses.allStatuses,{id:this.statusId})}},components:{Status:Object(r.n)((function(){return Promise.resolve().then(n.bind(null,34))})),Popover:Object(r.n)((function(){return Promise.resolve().then(n.bind(null,24))}))},methods:{enter:function(){var e=this;if(!this.status){if(!this.statusId)return void(this.error=!0);this.$store.dispatch("fetchStatus",this.statusId).then((function(t){return e.error=!1})).catch((function(t){return e.error=!0}))}}}};n(552);var wt=ge()(yt,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("Status"),c=Object(r.J)("FAIcon"),l=Object(r.J)("Popover");return Object(r.D)(),Object(r.h)(l,{trigger:"hover","popover-class":"popover-default status-popover","bound-to":{x:"container"},onShow:e.enter},{trigger:Object(r.V)(()=>[Object(r.I)(e.$slots,"default")]),content:Object(r.V)(()=>[e.status?(Object(r.D)(),Object(r.h)(a,{key:0,"is-preview":!0,statusoid:e.status,compact:!0},null,8,["statusoid"])):e.error?(Object(r.D)(),Object(r.j)("div",Ot,Object(r.O)(e.$t("status.status_unavailable")),1)):(Object(r.D)(),Object(r.j)("div",jt,[Object(r.m)(c,{icon:"circle-notch",spin:"",size:"2x"})]))]),_:3},8,["onShow"])}]]);const kt={class:"user-list-popover"},_t={class:"user-list-names"},St={class:"user-list-screen-name"};me.c.add(fe.r);var Ct={name:"UserListPopover",props:["users"],components:{RichContent:ft.a,Popover:Object(r.n)((function(){return Promise.resolve().then(n.bind(null,24))})),UserAvatar:Object(r.n)((function(){return Promise.resolve().then(n.bind(null,22))}))},computed:{usersCapped:function(){return this.users.slice(0,16)}}};n(553);var Pt=ge()(Ct,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("UserAvatar"),c=Object(r.J)("RichContent"),l=Object(r.J)("FAIcon"),u=Object(r.J)("Popover");return Object(r.D)(),Object(r.h)(u,{trigger:"hover",placement:"top",offset:{y:5}},{trigger:Object(r.V)(()=>[Object(r.I)(e.$slots,"default")]),content:Object(r.V)(()=>[Object(r.k)("div",kt,[e.users.length?(Object(r.D)(!0),Object(r.j)(r.a,{key:0},Object(r.H)(e.usersCapped,e=>(Object(r.D)(),Object(r.j)("div",{key:e.id,class:"user-list-row"},[Object(r.m)(a,{user:e,class:"avatar-small",compact:!0},null,8,["user"]),Object(r.k)("div",_t,[Object(r.m)(c,{class:"username",title:"@"+e.screen_name_ui,html:e.name_html,emoji:e.emoji},null,8,["title","html","emoji"]),Object(r.k)("span",St,Object(r.O)(e.screen_name_ui),1)])]))),128)):(Object(r.D)(),Object(r.h)(l,{key:1,icon:"circle-notch",spin:"",size:"3x"}))])]),_:3})}]]);const xt={class:"emoji-reactions"},Dt=["onClick"],Tt={key:0},It=["src","title"],$t={key:1},zt={class:"reaction-emoji unicode-emoji"};var Mt={name:"EmojiReactions",components:{UserAvatar:pt.default,UserListPopover:Pt},props:["status"],data:function(){return{showAll:!1}},computed:{tooManyReactions:function(){return this.status.emoji_reactions.length>12},emojiReactions:function(){return this.showAll?this.status.emoji_reactions:this.status.emoji_reactions.slice(0,12)},showMoreString:function(){return"+".concat(this.status.emoji_reactions.length-12)},accountsForEmoji:function(){return this.status.emoji_reactions.reduce((function(e,t){return e[t.name]=t.accounts||[],e}),{})},loggedIn:function(){return!!this.$store.state.users.currentUser}},methods:{toggleShowAll:function(){this.showAll=!this.showAll},reactedWith:function(e){return this.status.emoji_reactions.find((function(t){return t.name===e})).me},fetchEmojiReactionsByIfMissing:function(){this.status.emoji_reactions.find((function(e){return!e.accounts}))&&this.$store.dispatch("fetchEmojiReactionsBy",this.status.id)},reactWith:function(e){this.$store.dispatch("reactWithEmoji",{id:this.status.id,emoji:e})},unreact:function(e){this.$store.dispatch("unreactWithEmoji",{id:this.status.id,emoji:e})},emojiOnClick:function(e,t){this.loggedIn&&(this.reactedWith(e)?this.unreact(e):this.reactWith(e))}}};n(554);var Ut=ge()(Mt,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("UserListPopover");return Object(r.D)(),Object(r.j)("div",xt,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.emojiReactions,n=>(Object(r.D)(),Object(r.h)(a,{key:n.name,users:e.accountsForEmoji[n.name]},{default:Object(r.V)(()=>[Object(r.k)("button",{class:Object(r.w)(["emoji-reaction btn button-default",{"picked-reaction":e.reactedWith(n.name),"not-clickable":!e.loggedIn}]),onClick:t=>e.emojiOnClick(n.name,t),onMouseenter:t[0]||(t[0]=t=>e.fetchEmojiReactionsByIfMissing())},[null!==n.url?(Object(r.D)(),Object(r.j)("span",Tt,[Object(r.k)("img",{src:n.url,title:n.name,class:"reaction-emoji",width:"2.55em"},null,8,It),Object(r.l)(" "+Object(r.O)(n.count),1)])):(Object(r.D)(),Object(r.j)("span",$t,[Object(r.k)("span",zt,Object(r.O)(n.name),1),Object(r.k)("span",null,Object(r.O)(n.count),1)]))],42,Dt)]),_:2},1032,["users"]))),128)),e.tooManyReactions?(Object(r.D)(),Object(r.j)("a",{key:0,class:"emoji-reaction-expand faint",href:"javascript:void(0)",onClick:t[1]||(t[1]=(...t)=>e.toggleShowAll&&e.toggleShowAll(...t))},Object(r.O)(e.showAll?e.$t("general.show_less"):e.showMoreString),1)):Object(r.i)("",!0)])}]]),Ft=n(81),Et=n(79),Lt=n(23),Rt=n(31),At=n(126);function Nt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Bt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Nt(Object(n),!0).forEach((function(t){se()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Nt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}me.c.add(fe.y,fe.I,fe.O,fe.P,fe.rb,fe.Z,fe.Y,fe.W,fe.jb,fe.ib,fe.w,fe.C,fe.B,fe.qb,fe.q,fe.n,fe.e);var Vt,Ht=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},qt=function(e,t,n){var r=Ht(t),i="controlledSet".concat(r),o="uncontrolled".concat(r);e[i]?e[i](n):e[o]=n},Jt={name:"Status",components:{ReplyButton:ve,FavoriteButton:De,ReactButton:He,RetweetButton:Xe,ExtraButtons:lt,PostStatusForm:ut.a,UserCard:dt.a,UserAvatar:pt.default,AvatarList:ht.a,Timeago:bt.a,StatusPopover:wt,UserListPopover:Pt,EmojiReactions:Ut,StatusContent:mt.a,RichContent:ft.a,MentionLink:Et.a,MentionsLine:Ft.b},props:["statusoid","expandable","inConversation","focused","highlight","compact","replies","isPreview","noHeading","inlineExpanded","showPinned","inProfile","profileUserId","simpleTree","controlledThreadDisplayStatus","controlledToggleThreadDisplay","showOtherRepliesAsButton","controlledShowingTall","controlledToggleShowingTall","controlledExpandingSubject","controlledToggleExpandingSubject","controlledShowingLongSubject","controlledToggleShowingLongSubject","controlledReplying","controlledToggleReplying","controlledMediaPlaying","controlledSetMediaPlaying","dive"],data:function(){return{uncontrolledReplying:!1,unmuted:!1,userExpanded:!1,uncontrolledMediaPlaying:[],suspendable:!0,error:null,headTailLinks:null}},computed:Bt(Bt({},(Vt=["replying","mediaPlaying"],Vt.reduce((function(e,t){var n=Ht(t),r="controlledToggle".concat(n),i="controlled".concat(n),o="uncontrolled".concat(n);return e[t]=function(){return void 0===this.$data[r]&&void 0===this.$props[r]||!this[r]?this[o]:this[i]},e}),{}))),{},{muteWords:function(){return this.mergedConfig.muteWords},showReasonMutedThread:function(){return(this.status.thread_muted||this.status.reblog&&this.status.reblog.thread_muted)&&!this.inConversation},repeaterClass:function(){var e=this.statusoid.user;return Object(Rt.a)(e)},userClass:function(){var e=this.retweet?this.statusoid.retweeted_status.user:this.statusoid.user;return Object(Rt.a)(e)},deleted:function(){return this.statusoid.deleted},repeaterStyle:function(){var e=this.statusoid.user,t=this.mergedConfig.highlight;return Object(Rt.b)(t[e.screen_name])},userStyle:function(){if(!this.noHeading){var e=this.retweet?this.statusoid.retweeted_status.user:this.statusoid.user,t=this.mergedConfig.highlight;return Object(Rt.b)(t[e.screen_name])}},userProfileLink:function(){return this.generateUserProfileLink(this.status.user.id,this.status.user.screen_name)},replyProfileLink:function(){if(this.isReply){var e=this.$store.getters.findUser(this.status.in_reply_to_user_id);return e?e.statusnet_profile_url:"NOT_FOUND"}},retweet:function(){return!!this.statusoid.retweeted_status},retweeterUser:function(){return this.statusoid.user},retweeter:function(){return this.statusoid.user.name||this.statusoid.user.screen_name_ui},retweeterHtml:function(){return this.statusoid.user.name},retweeterProfileLink:function(){return this.generateUserProfileLink(this.statusoid.user.id,this.statusoid.user.screen_name)},status:function(){return this.retweet?this.statusoid.retweeted_status:this.statusoid},statusFromGlobalRepository:function(){return this.$store.state.statuses.allStatusesObject[this.status.id]},loggedIn:function(){return!!this.currentUser},muteWordHits:function(){return Object(At.a)(this.status,this.muteWords)},rtBotStatus:function(){return this.statusoid.user.bot},botStatus:function(){return this.status.user.bot},botIndicator:function(){return this.botStatus&&!this.hideBotIndication},rtBotIndicator:function(){return this.rtBotStatus&&!this.hideBotIndication},mentionsLine:function(){var e=this;if(!this.headTailLinks)return[];var t=new Set(this.headTailLinks.writtenMentions.map((function(e){return e.url})));return this.status.attentions.filter((function(n){return n.id!==e.status.in_reply_to_user_id&&n.statusnet_profile_url!==e.status.user.statusnet_profile_url&&!t.has(n.statusnet_profile_url)})).map((function(e){return{url:e.statusnet_profile_url,content:e.screen_name,userId:e.id}}))},hasMentionsLine:function(){return this.mentionsLine.length>0},muted:function(){if(this.statusoid.user.id===this.currentUser.id)return!1;var e=this.userIsMuted||status.thread_muted||this.muteWordHits.length>0||this.muteBotStatuses&&this.botStatus&&!this.compact;return!this.unmuted&&!this.shouldNotMute&&e},userIsMuted:function(){if(this.statusoid.user.id===this.currentUser.id)return!1;var e=this.status,t=e.reblog,n=this.$store.getters.relationship(e.user.id),r=t&&this.$store.getters.relationship(t.user.id);return e.muted||t&&t.muted||n.muting||r&&r.muting},shouldNotMute:function(){var e=this.status,t=e.reblog;return(this.inProfile&&(!t&&e.user.id===this.profileUserId||t&&t.user.id===this.profileUserId)||this.inConversation&&e.thread_muted)&&!this.muteWordHits.length>0},hideMutedUsers:function(){return this.mergedConfig.hideMutedPosts},hideMutedThreads:function(){return this.mergedConfig.hideMutedThreads},hideFilteredStatuses:function(){return this.mergedConfig.hideFilteredStatuses},hideWordFilteredPosts:function(){return this.mergedConfig.hideWordFilteredPosts},hideStatus:function(){return!this.shouldNotMute&&(this.muted&&this.hideFilteredStatuses||this.userIsMuted&&this.hideMutedUsers||this.status.thread_muted&&this.hideMutedThreads||this.muteWordHits.length>0&&this.hideWordFilteredPosts)},isFocused:function(){return!!this.focused||!!this.inConversation&&this.status.id===this.highlight},isReply:function(){return!(!this.status.in_reply_to_status_id||!this.status.in_reply_to_user_id)},replyToName:function(){if(this.status.in_reply_to_screen_name)return this.status.in_reply_to_screen_name;var e=this.$store.getters.findUser(this.status.in_reply_to_user_id);return e&&e.screen_name_ui},replySubject:function(){if(!this.status.summary)return"";var e=ue()(this.status.summary),t=this.mergedConfig.subjectLineBehavior,n=e.match(/^re[: ]/i);return"noop"!==t&&n||"masto"===t?e:"email"===t?"re: ".concat(e):"noop"===t?"":void 0},combinedFavsAndRepeatsUsers:function(){var e=[].concat(this.statusFromGlobalRepository.favoritedBy,this.statusFromGlobalRepository.rebloggedBy);return ce()(e,"id")},tags:function(){return this.status.tags.filter((function(e){return e.hasOwnProperty("name")})).map((function(e){return e.name})).join(" ")},hidePostStats:function(){return this.mergedConfig.hidePostStats},muteBotStatuses:function(){return this.mergedConfig.muteBotStatuses},hideBotIndication:function(){return this.mergedConfig.hideBotIndication},currentUser:function(){return this.$store.state.users.currentUser},betterShadow:function(){return this.$store.state.interface.browserSupport.cssFilter},mergedConfig:function(){return this.$store.getters.mergedConfig},isSuspendable:function(){return!this.replying&&0===this.mediaPlaying.length},inThreadForest:function(){return!!this.controlledThreadDisplayStatus},threadShowing:function(){return"showing"===this.controlledThreadDisplayStatus},visibilityLocalized:function(){return this.$i18n.t("general.scope_in_timeline."+this.status.visibility)}}),methods:{visibilityIcon:function(e){switch(e){case"private":return"lock";case"unlisted":return"lock-open";case"direct":return"envelope";case"local":return"users";default:return"globe"}},showError:function(e){this.error=e},clearError:function(){this.error=void 0},toggleReplying:function(){!function(e,t){var n=Ht(t),r="controlledToggle".concat(n),i="uncontrolled".concat(n);e[r]?e[r]():e[i]=!e[i]}(this,"replying")},gotoOriginal:function(e){this.inConversation&&this.$emit("goto",e)},toggleExpanded:function(){this.$emit("toggleExpanded")},toggleMute:function(){this.unmuted=!this.unmuted},toggleUserExpanded:function(){this.userExpanded=!this.userExpanded},generateUserProfileLink:function(e,t){return Object(Lt.a)(e,t,this.$store.state.instance.restrictedNicknames)},addMediaPlaying:function(e){qt(this,"mediaPlaying",this.mediaPlaying.concat(e))},removeMediaPlaying:function(e){qt(this,"mediaPlaying",this.mediaPlaying.filter((function(t){return t!==e})))},setHeadTailLinks:function(e){this.headTailLinks=e},toggleThreadDisplay:function(){this.controlledToggleThreadDisplay()},scrollIfHighlighted:function(e){var t=e;if(this.status.id===t){var n=this.$el.getBoundingClientRect();n.top<100||n.height>=window.innerHeight-50?window.scrollBy(0,n.top-100):n.bottom>window.innerHeight-50&&window.scrollBy(0,n.bottom-window.innerHeight+50)}}},watch:{highlight:function(e){this.scrollIfHighlighted(e)},"status.repeat_num":function(e){this.isFocused&&this.statusFromGlobalRepository.rebloggedBy&&this.statusFromGlobalRepository.rebloggedBy.length!==e&&this.$store.dispatch("fetchRepeats",this.status.id)},"status.fave_num":function(e){this.isFocused&&this.statusFromGlobalRepository.favoritedBy&&this.statusFromGlobalRepository.favoritedBy.length!==e&&this.$store.dispatch("fetchFavs",this.status.id)},isSuspendable:function(e){this.suspendable=e}}};n(555);const Wt=ge()(Jt,[["render",function(e,t,n,oe,se,ae){const ce=Object(r.J)("FAIcon"),le=Object(r.J)("router-link"),ue=Object(r.J)("UserAvatar"),de=Object(r.J)("RichContent"),pe=Object(r.J)("UserCard"),he=Object(r.J)("Timeago"),be=Object(r.J)("StatusPopover"),me=Object(r.J)("MentionLink"),fe=Object(r.J)("MentionsLine"),Oe=Object(r.J)("StatusContent"),je=Object(r.J)("UserListPopover"),ge=Object(r.J)("AvatarList"),ve=Object(r.J)("EmojiReactions"),ye=Object(r.J)("reply-button"),we=Object(r.J)("retweet-button"),ke=Object(r.J)("favorite-button"),_e=Object(r.J)("ReactButton"),Se=Object(r.J)("extra-buttons"),Ce=Object(r.J)("PostStatusForm");return e.hideStatus?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",{key:0,ref:"root",class:Object(r.w)(["Status",[{"-focused":e.isFocused},{"-conversation":e.inlineExpanded}]])},[e.error?(Object(r.D)(),Object(r.j)("div",i,[Object(r.l)(Object(r.O)(e.error)+" ",1),Object(r.k)("span",{class:"fa-scale-110 fa-old-padding",onClick:t[0]||(t[0]=(...t)=>e.clearError&&e.clearError(...t))},[Object(r.m)(ce,{icon:"times"})])])):Object(r.i)("",!0),e.muted&&!e.isPreview?(Object(r.D)(),Object(r.j)("div",o,[Object(r.k)("small",s,[e.muted&&e.retweet?(Object(r.D)(),Object(r.h)(ce,{key:0,class:"fa-scale-110 fa-old-padding repeat-icon",icon:"retweet"})):Object(r.i)("",!0),Object(r.m)(le,{to:e.userProfileLink},{default:Object(r.V)(()=>[Object(r.l)(Object(r.O)(e.status.user.screen_name_ui),1)]),_:1},8,["to"])]),e.showReasonMutedThread?(Object(r.D)(),Object(r.j)("small",a,Object(r.O)(e.$t("status.thread_muted")),1)):Object(r.i)("",!0),e.showReasonMutedThread&&e.muteWordHits.length>0?(Object(r.D)(),Object(r.j)("small",c,Object(r.O)(e.$t("status.thread_muted_and_words")),1)):Object(r.i)("",!0),Object(r.k)("small",{class:"mute-words",title:e.muteWordHits.join(", ")},Object(r.O)(e.muteWordHits.join(", ")),9,l),Object(r.k)("button",{class:"unmute button-unstyled",onClick:t[1]||(t[1]=Object(r.Y)((...t)=>e.toggleMute&&e.toggleMute(...t),["prevent"]))},[Object(r.m)(ce,{icon:"eye-slash",class:"fa-scale-110 fa-old-padding"})])])):(Object(r.D)(),Object(r.j)(r.a,{key:2},[e.showPinned?(Object(r.D)(),Object(r.j)("div",u,[Object(r.m)(ce,{icon:"thumbtack",class:"faint"}),Object(r.k)("span",d,Object(r.O)(e.$t("status.pinned")),1)])):Object(r.i)("",!0),!e.retweet||e.noHeading||e.inConversation?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",{key:1,class:Object(r.w)([[e.repeaterClass,{highlighted:e.repeaterStyle}],"status-container repeat-info"]),style:Object(r.x)([e.repeaterStyle])},[e.retweet?(Object(r.D)(),Object(r.h)(ue,{key:0,class:"left-side repeater-avatar",bot:e.rtBotIndicator,"better-shadow":e.betterShadow,user:e.statusoid.user},null,8,["bot","better-shadow","user"])):Object(r.i)("",!0),Object(r.k)("div",p,[Object(r.k)("span",{class:"status-username repeater-name",title:e.retweeter},[e.retweeterHtml?(Object(r.D)(),Object(r.h)(le,{key:0,to:e.retweeterProfileLink},{default:Object(r.V)(()=>[Object(r.m)(de,{html:e.retweeterHtml,emoji:e.retweeterUser.emoji},null,8,["html","emoji"])]),_:1},8,["to"])):(Object(r.D)(),Object(r.h)(le,{key:1,to:e.retweeterProfileLink},{default:Object(r.V)(()=>[Object(r.l)(Object(r.O)(e.retweeter),1)]),_:1},8,["to"]))],8,h),b,Object(r.m)(ce,{icon:"retweet",class:"repeat-icon",title:e.$t("tool_tip.repeat")},null,8,["title"]),Object(r.l)(" "+Object(r.O)(e.$t("timeline.repeated")),1)])],6)),e.deleted?(Object(r.D)(),Object(r.j)("div",ee,[Object(r.k)("div",te,[Object(r.m)(ue,{class:"post-avatar",compact:e.compact,bot:e.botIndicator},null,8,["compact","bot"])]),Object(r.k)("div",ne,[Object(r.k)("div",re,Object(r.O)(e.$t("status.status_deleted")),1),e.replying?(Object(r.D)(),Object(r.h)(ye,{key:0,replying:e.replying,status:e.status,onToggle:e.toggleReplying},null,8,["replying","status","onToggle"])):Object(r.i)("",!0)])])):(Object(r.D)(),Object(r.j)("div",{key:2,class:Object(r.w)([[e.userClass,{highlighted:e.userStyle,"-repeat":e.retweet&&!e.inConversation}],"status-container"]),style:Object(r.x)([e.userStyle]),"data-tags":e.tags},[e.noHeading?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",f,[Object(r.k)("a",{href:e.$router.resolve(e.userProfileLink).href,onClickCapture:t[2]||(t[2]=Object(r.Y)((...t)=>e.toggleUserExpanded&&e.toggleUserExpanded(...t),["stop","prevent"]))},[Object(r.m)(ue,{class:"post-avatar",bot:e.botIndicator,compact:e.compact,"better-shadow":e.betterShadow,user:e.status.user},null,8,["bot","compact","better-shadow","user"])],40,O)])),Object(r.k)("div",j,[e.userExpanded?(Object(r.D)(),Object(r.h)(pe,{key:0,"user-id":e.status.user.id,rounded:!0,bordered:!0,class:"usercard"},null,8,["user-id"])):Object(r.i)("",!0),e.noHeading?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",g,[Object(r.k)("div",v,[Object(r.k)("div",y,[e.status.user.name_html?(Object(r.D)(),Object(r.j)("h4",{key:0,class:"status-username",title:e.status.user.name},[Object(r.m)(de,{html:e.status.user.name,emoji:e.status.user.emoji},null,8,["html","emoji"])],8,w)):(Object(r.D)(),Object(r.j)("h4",{key:1,class:"status-username",title:e.status.user.name},Object(r.O)(e.status.user.name),9,k)),Object(r.m)(le,{class:"account-name",title:e.status.user.screen_name_ui,to:e.userProfileLink},{default:Object(r.V)(()=>[Object(r.l)(Object(r.O)(e.status.user.screen_name_ui),1)]),_:1},8,["title","to"]),e.status.user&&e.status.user.favicon?(Object(r.D)(),Object(r.j)("img",{key:2,class:"status-favicon",src:e.status.user.favicon},null,8,_)):Object(r.i)("",!0)]),Object(r.k)("span",S,[Object(r.m)(le,{class:"timeago faint-link",to:{name:"conversation",params:{id:e.status.id}}},{default:Object(r.V)(()=>[Object(r.m)(he,{time:e.status.created_at,"auto-update":60},null,8,["time"])]),_:1},8,["to"]),e.status.visibility?(Object(r.D)(),Object(r.j)("span",{key:0,class:"visibility-icon",title:e.visibilityLocalized},[Object(r.m)(ce,{"fixed-width":"",class:"fa-scale-110",icon:e.visibilityIcon(e.status.visibility)},null,8,["icon"])],8,C)):Object(r.i)("",!0),e.expandable&&!e.isPreview?(Object(r.D)(),Object(r.j)("button",{key:1,class:"button-unstyled",title:e.$t("status.expand"),onClick:t[3]||(t[3]=Object(r.Y)((...t)=>e.toggleExpanded&&e.toggleExpanded(...t),["prevent"]))},[Object(r.m)(ce,{"fixed-width":"",class:"fa-scale-110",icon:"plus-square"})],8,P)):Object(r.i)("",!0),e.unmuted?(Object(r.D)(),Object(r.j)("button",{key:2,class:"button-unstyled",onClick:t[4]||(t[4]=Object(r.Y)((...t)=>e.toggleMute&&e.toggleMute(...t),["prevent"]))},[Object(r.m)(ce,{"fixed-width":"",icon:"eye-slash",class:"fa-scale-110"})])):Object(r.i)("",!0),e.inThreadForest&&e.replies&&e.replies.length&&!e.simpleTree?(Object(r.D)(),Object(r.j)("button",{key:3,class:"button-unstyled",title:e.threadShowing?e.$t("status.thread_hide"):e.$t("status.thread_show"),"aria-expanded":e.threadShowing?"true":"false",onClick:t[5]||(t[5]=Object(r.Y)((...t)=>e.toggleThreadDisplay&&e.toggleThreadDisplay(...t),["prevent"]))},[Object(r.m)(ce,{"fixed-width":"",class:"fa-scale-110",icon:e.threadShowing?"chevron-up":"chevron-down"},null,8,["icon"])],8,x)):Object(r.i)("",!0),e.dive&&!e.simpleTree?(Object(r.D)(),Object(r.j)("button",{key:4,class:"button-unstyled",title:e.$t("status.show_only_conversation_under_this"),onClick:t[6]||(t[6]=Object(r.Y)((...t)=>e.dive&&e.dive(...t),["prevent"]))},[Object(r.m)(ce,{"fixed-width":"",class:"fa-scale-110",icon:"angle-double-right"})],8,D)):Object(r.i)("",!0)])]),e.isReply||e.hasMentionsLine?(Object(r.D)(),Object(r.j)("div",T,[e.isReply?(Object(r.D)(),Object(r.j)("span",I,[e.isPreview?(Object(r.D)(),Object(r.j)("span",U,[Object(r.k)("span",F,Object(r.O)(e.$t("status.reply_to")),1)])):(Object(r.D)(),Object(r.h)(be,{key:0,"status-id":e.status.parent_visible&&e.status.in_reply_to_status_id,class:Object(r.w)(["reply-to-popover",{"-strikethrough":!e.status.parent_visible}]),style:{"min-width":"0"}},{default:Object(r.V)(()=>[Object(r.k)("button",{class:"button-unstyled reply-to","aria-label":e.$t("tool_tip.reply"),onClick:t[7]||(t[7]=Object(r.Y)(t=>e.gotoOriginal(e.status.in_reply_to_status_id),["prevent"]))},[Object(r.m)(ce,{class:"fa-scale-110 fa-old-padding",icon:"reply",flip:"horizontal"}),z,Object(r.k)("span",M,Object(r.O)(e.$t("status.reply_to")),1)],8,$)]),_:1},8,["status-id","class"])),Object(r.m)(me,{content:e.replyToName,url:e.replyProfileLink,"user-id":e.status.in_reply_to_user_id,"user-screen-name":e.status.in_reply_to_screen_name},null,8,["content","url","user-id","user-screen-name"])])):Object(r.i)("",!0),e.hasMentionsLine?(Object(r.D)(),Object(r.j)("span",E,[Object(r.k)("span",{class:"mentions","aria-label":e.$t("tool_tip.mentions"),onClick:t[8]||(t[8]=Object(r.Y)(t=>e.gotoOriginal(e.status.in_reply_to_status_id),["prevent"]))},[Object(r.k)("span",R,Object(r.O)(e.$t("status.mentions")),1)],8,L),e.hasMentionsLine?(Object(r.D)(),Object(r.h)(fe,{key:0,mentions:e.mentionsLine.slice(0,1),class:"mentions-line-first"},null,8,["mentions"])):Object(r.i)("",!0)])):Object(r.i)("",!0),e.hasMentionsLine?(Object(r.D)(),Object(r.h)(fe,{key:2,mentions:e.mentionsLine.slice(1),class:"mentions-line"},null,8,["mentions"])):Object(r.i)("",!0)])):Object(r.i)("",!0)])),Object(r.m)(Oe,{ref:"content",status:e.status,"no-heading":e.noHeading,highlight:e.highlight,focused:e.isFocused,"controlled-showing-tall":e.controlledShowingTall,"controlled-expanding-subject":e.controlledExpandingSubject,"controlled-showing-long-subject":e.controlledShowingLongSubject,"controlled-toggle-showing-tall":e.controlledToggleShowingTall,"controlled-toggle-expanding-subject":e.controlledToggleExpandingSubject,"controlled-toggle-showing-long-subject":e.controlledToggleShowingLongSubject,onMediaplay:t[9]||(t[9]=t=>e.addMediaPlaying(t)),onMediapause:t[10]||(t[10]=t=>e.removeMediaPlaying(t)),onParseReady:e.setHeadTailLinks},null,8,["status","no-heading","highlight","focused","controlled-showing-tall","controlled-expanding-subject","controlled-showing-long-subject","controlled-toggle-showing-tall","controlled-toggle-expanding-subject","controlled-toggle-showing-long-subject","onParseReady"]),e.inConversation&&!e.isPreview&&e.replies&&e.replies.length?(Object(r.D)(),Object(r.j)("div",A,[e.showOtherRepliesAsButton&&e.replies.length>1?(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-unstyled -link faint",title:e.$tc("status.ancestor_follow",e.replies.length-1,{numReplies:e.replies.length-1}),onClick:t[11]||(t[11]=Object(r.Y)((...t)=>e.dive&&e.dive(...t),["prevent"]))},Object(r.O)(e.$tc("status.replies_list_with_others",e.replies.length-1,{numReplies:e.replies.length-1})),9,N)):(Object(r.D)(),Object(r.j)("span",B,Object(r.O)(e.$t("status.replies_list")),1)),(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.replies,t=>(Object(r.D)(),Object(r.h)(be,{key:t.id,"status-id":t.id},{default:Object(r.V)(()=>[Object(r.k)("button",{class:"button-unstyled -link reply-link",onClick:Object(r.Y)(n=>e.gotoOriginal(t.id),["prevent"])},Object(r.O)(t.name),9,V)]),_:2},1032,["status-id"]))),128))])):Object(r.i)("",!0),Object(r.m)(r.e,{name:"fade"},{default:Object(r.V)(()=>[!e.hidePostStats&&e.isFocused&&e.combinedFavsAndRepeatsUsers.length>0?(Object(r.D)(),Object(r.j)("div",H,[Object(r.k)("div",q,[e.statusFromGlobalRepository.rebloggedBy&&e.statusFromGlobalRepository.rebloggedBy.length>0?(Object(r.D)(),Object(r.h)(je,{key:0,users:e.statusFromGlobalRepository.rebloggedBy},{default:Object(r.V)(()=>[Object(r.k)("div",J,[Object(r.k)("a",W,Object(r.O)(e.$t("status.repeats")),1),Object(r.k)("div",Y,Object(r.O)(e.statusFromGlobalRepository.rebloggedBy.length),1)])]),_:1},8,["users"])):Object(r.i)("",!0),e.statusFromGlobalRepository.favoritedBy&&e.statusFromGlobalRepository.favoritedBy.length>0?(Object(r.D)(),Object(r.h)(je,{key:1,users:e.statusFromGlobalRepository.favoritedBy},{default:Object(r.V)(()=>[Object(r.k)("div",G,[Object(r.k)("a",K,Object(r.O)(e.$t("status.favorites")),1),Object(r.k)("div",X,Object(r.O)(e.statusFromGlobalRepository.favoritedBy.length),1)])]),_:1},8,["users"])):Object(r.i)("",!0),Object(r.k)("div",Z,[Object(r.m)(ge,{users:e.combinedFavsAndRepeatsUsers},null,8,["users"])])])])):Object(r.i)("",!0)]),_:1}),!e.mergedConfig.emojiReactionsOnTimeline&&!e.isFocused||e.noHeading||e.isPreview?Object(r.i)("",!0):(Object(r.D)(),Object(r.h)(ve,{key:3,status:e.status},null,8,["status"])),e.noHeading||e.isPreview?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",Q,[Object(r.m)(ye,{replying:e.replying,status:e.status,onToggle:e.toggleReplying},null,8,["replying","status","onToggle"]),Object(r.m)(we,{visibility:e.status.visibility,"logged-in":e.loggedIn,status:e.status},null,8,["visibility","logged-in","status"]),Object(r.m)(ke,{"logged-in":e.loggedIn,status:e.status},null,8,["logged-in","status"]),e.loggedIn?(Object(r.D)(),Object(r.h)(_e,{key:0,status:e.status},null,8,["status"])):Object(r.i)("",!0),Object(r.m)(Se,{status:e.status,onOnError:e.showError,onOnSuccess:e.clearError},null,8,["status","onOnError","onOnSuccess"])]))])],14,m)),e.replying?(Object(r.D)(),Object(r.j)("div",ie,[Object(r.m)(Ce,{class:"reply-body","reply-to":e.status.id,attentions:e.status.attentions,"replied-user":e.status.user,"copy-message-scope":e.status.visibility,subject:e.replySubject,onPosted:e.toggleReplying},null,8,["reply-to","attentions","replied-user","copy-message-scope","subject","onPosted"])])):Object(r.i)("",!0)],64))],2))}]]);t.default=Wt},function(e,t,n){"use strict";var r=n(0);const i={class:"panel-heading -flexible-height"},o={class:"user-info"},s={class:"container"},a={class:"user-info-avatar-link-overlay"},c={class:"user-summary"},l={class:"top-line"},u=["href"],d={class:"bottom-line"},p={key:0,class:"alert user-role"},h={key:1,class:"alert user-role"},b={key:2,class:"alert user-role"},m={key:1},f={key:2,class:"dailyAvg"},O={class:"user-meta"},j={key:0,class:"following"},g={key:1,class:"highlighter"},v=["id"],y=["id"],w=Object(r.l)(" "+Object(r.O)(" ")+" "),k={value:"disabled"},_={value:"solid"},S={value:"striped"},C={value:"side"},P={key:0,class:"user-interactions"},x={class:"btn-group"},D=["disabled"],T=["disabled"],I=["disabled"],$={key:1,class:"user-interactions"},z={key:0,class:"panel-body"},M={key:0,class:"user-counts"},U=Object(r.k)("br",null,null,-1);var F=n(5),E=n.n(F),L=n(22),R=n(143),A=n(104),N=n(140);const B={class:"dropdown-menu"},V={key:0},H=Object(r.k)("div",{role:"separator",class:"dropdown-divider"},null,-1),q={key:1,role:"separator",class:"dropdown-divider"},J={key:2};var W=n(6),Y=n(3);const G={class:"panel-heading dialog-modal-heading"},K={class:"title"},X={class:"dialog-modal-content"},Z={class:"dialog-modal-footer user-interactions panel-footer"};var Q={props:{darkOverlay:{default:!0,type:Boolean},onCancel:{default:function(){},type:Function}}},ee=(n(526),n(4)),te=n.n(ee);var ne=te()(Q,[["render",function(e,t,n,i,o,s){return Object(r.D)(),Object(r.j)("span",{class:Object(r.w)({"dark-overlay":e.darkOverlay}),onClick:t[1]||(t[1]=Object(r.Y)(t=>e.onCancel(),["self","stop"]))},[Object(r.k)("div",{class:"dialog-modal panel panel-default",onClick:t[0]||(t[0]=Object(r.Y)(()=>{},["stop"]))},[Object(r.k)("div",G,[Object(r.k)("div",K,[Object(r.I)(e.$slots,"header")])]),Object(r.k)("div",X,[Object(r.I)(e.$slots,"default")]),Object(r.k)("div",Z,[Object(r.I)(e.$slots,"footer")])])],2)}]]),re=n(24);W.c.add(Y.n);var ie={props:["user"],data:function(){return{tags:{FORCE_NSFW:"mrf_tag:media-force-nsfw",STRIP_MEDIA:"mrf_tag:media-strip",FORCE_UNLISTED:"mrf_tag:force-unlisted",DISABLE_REMOTE_SUBSCRIPTION:"mrf_tag:disable-remote-subscription",DISABLE_ANY_SUBSCRIPTION:"mrf_tag:disable-any-subscription",SANDBOX:"mrf_tag:sandbox",QUARANTINE:"mrf_tag:quarantine"},showDeleteUserDialog:!1,toggled:!1}},components:{DialogModal:ne,Popover:re.default},computed:{tagsSet:function(){return new Set(this.user.tags)},hasTagPolicy:function(){return this.$store.state.instance.tagPolicyAvailable}},methods:{hasTag:function(e){return this.tagsSet.has(e)},toggleTag:function(e){var t=this,n=this.$store;this.tagsSet.has(e)?n.state.api.backendInteractor.untagUser({user:this.user,tag:e}).then((function(r){r.ok&&n.commit("untagUser",{user:t.user,tag:e})})):n.state.api.backendInteractor.tagUser({user:this.user,tag:e}).then((function(r){r.ok&&n.commit("tagUser",{user:t.user,tag:e})}))},toggleRight:function(e){var t=this,n=this.$store;this.user.rights[e]?n.state.api.backendInteractor.deleteRight({user:this.user,right:e}).then((function(r){r.ok&&n.commit("updateRight",{user:t.user,right:e,value:!1})})):n.state.api.backendInteractor.addRight({user:this.user,right:e}).then((function(r){r.ok&&n.commit("updateRight",{user:t.user,right:e,value:!0})}))},toggleActivationStatus:function(){this.$store.dispatch("toggleActivationStatus",{user:this.user})},deleteUserDialog:function(e){this.showDeleteUserDialog=e},deleteUser:function(){var e=this,t=this.$store,n=this.user,r=n.id,i=n.name;t.state.api.backendInteractor.deleteUser({user:n}).then((function(t){e.$store.dispatch("markStatusesAsDeleted",(function(e){return n.id===e.user.id}));var o="external-user-profile"===e.$route.name||"user-profile"===e.$route.name,s=e.$route.params.name===i||e.$route.params.id===r;o&&s&&window.history.back()}))},setToggled:function(e){this.toggled=e}}};n(528);var oe=te()(ie,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon"),c=Object(r.J)("Popover"),l=Object(r.J)("DialogModal");return Object(r.D)(),Object(r.j)("div",null,[Object(r.m)(c,{trigger:"click",class:"moderation-tools-popover",placement:"bottom",offset:{y:5},onShow:t[11]||(t[11]=t=>e.setToggled(!0)),onClose:t[12]||(t[12]=t=>e.setToggled(!1))},{content:Object(r.V)(()=>[Object(r.k)("div",B,[e.user.is_local?(Object(r.D)(),Object(r.j)("span",V,[Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[0]||(t[0]=t=>e.toggleRight("admin"))},Object(r.O)(e.$t(e.user.rights.admin?"user_card.admin_menu.revoke_admin":"user_card.admin_menu.grant_admin")),1),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[1]||(t[1]=t=>e.toggleRight("moderator"))},Object(r.O)(e.$t(e.user.rights.moderator?"user_card.admin_menu.revoke_moderator":"user_card.admin_menu.grant_moderator")),1),H])):Object(r.i)("",!0),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[2]||(t[2]=t=>e.toggleActivationStatus())},Object(r.O)(e.$t(e.user.deactivated?"user_card.admin_menu.activate_account":"user_card.admin_menu.deactivate_account")),1),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[3]||(t[3]=t=>e.deleteUserDialog(!0))},Object(r.O)(e.$t("user_card.admin_menu.delete_account")),1),e.hasTagPolicy?(Object(r.D)(),Object(r.j)("div",q)):Object(r.i)("",!0),e.hasTagPolicy?(Object(r.D)(),Object(r.j)("span",J,[Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[4]||(t[4]=t=>e.toggleTag(e.tags.FORCE_NSFW))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.FORCE_NSFW)}])},null,2),Object(r.l)(" "+Object(r.O)(e.$t("user_card.admin_menu.force_nsfw")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[5]||(t[5]=t=>e.toggleTag(e.tags.STRIP_MEDIA))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.STRIP_MEDIA)}])},null,2),Object(r.l)(" "+Object(r.O)(e.$t("user_card.admin_menu.strip_media")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[6]||(t[6]=t=>e.toggleTag(e.tags.FORCE_UNLISTED))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.FORCE_UNLISTED)}])},null,2),Object(r.l)(" "+Object(r.O)(e.$t("user_card.admin_menu.force_unlisted")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[7]||(t[7]=t=>e.toggleTag(e.tags.SANDBOX))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.SANDBOX)}])},null,2),Object(r.l)(" "+Object(r.O)(e.$t("user_card.admin_menu.sandbox")),1)]),e.user.is_local?(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-default dropdown-item",onClick:t[8]||(t[8]=t=>e.toggleTag(e.tags.DISABLE_REMOTE_SUBSCRIPTION))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.DISABLE_REMOTE_SUBSCRIPTION)}])},null,2),Object(r.l)(" "+Object(r.O)(e.$t("user_card.admin_menu.disable_remote_subscription")),1)])):Object(r.i)("",!0),e.user.is_local?(Object(r.D)(),Object(r.j)("button",{key:1,class:"button-default dropdown-item",onClick:t[9]||(t[9]=t=>e.toggleTag(e.tags.DISABLE_ANY_SUBSCRIPTION))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.DISABLE_ANY_SUBSCRIPTION)}])},null,2),Object(r.l)(" "+Object(r.O)(e.$t("user_card.admin_menu.disable_any_subscription")),1)])):Object(r.i)("",!0),e.user.is_local?(Object(r.D)(),Object(r.j)("button",{key:2,class:"button-default dropdown-item",onClick:t[10]||(t[10]=t=>e.toggleTag(e.tags.QUARANTINE))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.QUARANTINE)}])},null,2),Object(r.l)(" "+Object(r.O)(e.$t("user_card.admin_menu.quarantine")),1)])):Object(r.i)("",!0)])):Object(r.i)("",!0)])]),trigger:Object(r.V)(()=>[Object(r.k)("button",{class:Object(r.w)(["btn button-default btn-block moderation-tools-button",{toggled:e.toggled}])},[Object(r.l)(Object(r.O)(e.$t("user_card.admin_menu.moderation"))+" ",1),Object(r.m)(a,{icon:"chevron-down"})],2)]),_:1}),(Object(r.D)(),Object(r.h)(r.c,{to:"#modal"},[e.showDeleteUserDialog?(Object(r.D)(),Object(r.h)(l,{key:0,"on-cancel":e.deleteUserDialog.bind(this,!1)},{header:Object(r.V)(()=>[Object(r.l)(Object(r.O)(e.$t("user_card.admin_menu.delete_user")),1)]),footer:Object(r.V)(()=>[Object(r.k)("button",{class:"btn button-default",onClick:t[13]||(t[13]=t=>e.deleteUserDialog(!1))},Object(r.O)(e.$t("general.cancel")),1),Object(r.k)("button",{class:"btn button-default danger",onClick:t[14]||(t[14]=t=>e.deleteUser())},Object(r.O)(e.$t("user_card.admin_menu.delete_user")),1)]),default:Object(r.V)(()=>[Object(r.k)("p",null,Object(r.O)(e.$t("user_card.admin_menu.delete_user_confirmation")),1)]),_:1},8,["on-cancel"])):Object(r.i)("",!0)]))])}]]);const se={class:"AccountActions"},ae={class:"dropdown-menu"},ce=Object(r.k)("div",{role:"separator",class:"dropdown-divider"},null,-1),le={class:"button-unstyled ellipsis-button"};var ue=n(8);function de(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}W.c.add(Y.x);var pe={props:["user","relationship"],data:function(){return{}},components:{ProgressButton:A.a,Popover:re.default},methods:{showRepeats:function(){this.$store.dispatch("showReblogs",this.user.id)},hideRepeats:function(){this.$store.dispatch("hideReblogs",this.user.id)},blockUser:function(){this.$store.dispatch("blockUser",this.user.id)},unblockUser:function(){this.$store.dispatch("unblockUser",this.user.id)},reportUser:function(){this.$store.dispatch("openUserReportingModal",{userId:this.user.id})},openChat:function(){this.$router.push({name:"chat",params:{username:this.$store.state.users.currentUser.screen_name,recipient_id:this.user.id}})}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?de(Object(n),!0).forEach((function(t){E()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):de(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Object(ue.e)({pleromaChatMessagesAvailable:function(e){return e.instance.pleromaChatMessagesAvailable}}))};n(529);var he=te()(pe,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon"),c=Object(r.J)("Popover");return Object(r.D)(),Object(r.j)("div",se,[Object(r.m)(c,{trigger:"click",placement:"bottom","bound-to":{x:"container"},"remove-padding":""},{content:Object(r.V)(()=>[Object(r.k)("div",ae,[e.relationship.following?(Object(r.D)(),Object(r.j)(r.a,{key:0},[e.relationship.showing_reblogs?(Object(r.D)(),Object(r.j)("button",{key:0,class:"btn button-default dropdown-item",onClick:t[0]||(t[0]=(...t)=>e.hideRepeats&&e.hideRepeats(...t))},Object(r.O)(e.$t("user_card.hide_repeats")),1)):Object(r.i)("",!0),e.relationship.showing_reblogs?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("button",{key:1,class:"btn button-default dropdown-item",onClick:t[1]||(t[1]=(...t)=>e.showRepeats&&e.showRepeats(...t))},Object(r.O)(e.$t("user_card.show_repeats")),1)),ce],64)):Object(r.i)("",!0),e.relationship.blocking?(Object(r.D)(),Object(r.j)("button",{key:1,class:"btn button-default btn-block dropdown-item",onClick:t[2]||(t[2]=(...t)=>e.unblockUser&&e.unblockUser(...t))},Object(r.O)(e.$t("user_card.unblock")),1)):(Object(r.D)(),Object(r.j)("button",{key:2,class:"btn button-default btn-block dropdown-item",onClick:t[3]||(t[3]=(...t)=>e.blockUser&&e.blockUser(...t))},Object(r.O)(e.$t("user_card.block")),1)),Object(r.k)("button",{class:"btn button-default btn-block dropdown-item",onClick:t[4]||(t[4]=(...t)=>e.reportUser&&e.reportUser(...t))},Object(r.O)(e.$t("user_card.report")),1),e.pleromaChatMessagesAvailable?(Object(r.D)(),Object(r.j)("button",{key:3,class:"btn button-default btn-block dropdown-item",onClick:t[5]||(t[5]=(...t)=>e.openChat&&e.openChat(...t))},Object(r.O)(e.$t("user_card.message")),1)):Object(r.i)("",!0)])]),trigger:Object(r.V)(()=>[Object(r.k)("button",le,[Object(r.m)(a,{class:"icon",icon:"ellipsis-v"})])]),_:1})])}]]),be=n(52),me=n(25),fe=n(23);function Oe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function je(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Oe(Object(n),!0).forEach((function(t){E()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Oe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}W.c.add(Y.bb,Y.i,Y.db,Y.A,Y.v);var ge={props:["userId","switcher","selected","hideBio","rounded","bordered","allowZoomingAvatar"],data:function(){return{followRequestInProgress:!1,betterShadow:this.$store.state.interface.browserSupport.cssFilter}},created:function(){this.$store.dispatch("fetchUserRelationship",this.user.id)},computed:je({user:function(){return this.$store.getters.findUser(this.userId)},relationship:function(){return this.$store.getters.relationship(this.userId)},classes:function(){return[{"user-card-rounded-t":"top"===this.rounded,"user-card-rounded":!0===this.rounded,"user-card-bordered":!0===this.bordered}]},style:function(){return{backgroundImage:["linear-gradient(to bottom, var(--profileTint), var(--profileTint))","url(".concat(this.user.cover_photo,")")].join(", ")}},isOtherUser:function(){return this.user.id!==this.$store.state.users.currentUser.id},subscribeUrl:function(){var e=new URL(this.user.statusnet_profile_url);return"".concat(e.protocol,"//").concat(e.host,"/main/ostatus")},loggedIn:function(){return this.$store.state.users.currentUser},dailyAvg:function(){var e=Math.ceil((new Date-new Date(this.user.created_at))/864e5);return Math.round(this.user.statuses_count/e)},userHighlightType:je({get:function(){var e=this.$store.getters.mergedConfig.highlight[this.user.screen_name];return e&&e.type||"disabled"},set:function(e){var t=this.$store.getters.mergedConfig.highlight[this.user.screen_name];"disabled"!==e?this.$store.dispatch("setHighlight",{user:this.user.screen_name,color:t&&t.color||"#FFFFFF",type:e}):this.$store.dispatch("setHighlight",{user:this.user.screen_name,color:void 0})}},Object(ue.c)(["mergedConfig"])),userHighlightColor:{get:function(){var e=this.$store.getters.mergedConfig.highlight[this.user.screen_name];return e&&e.color},set:function(e){this.$store.dispatch("setHighlight",{user:this.user.screen_name,color:e})}},visibleRole:function(){var e=this.user.rights;if(e){var t=e.admin||e.moderator,n=e.admin?"admin":"moderator";return t&&n}},hideFollowsCount:function(){return this.isOtherUser&&this.user.hide_follows_count},hideFollowersCount:function(){return this.isOtherUser&&this.user.hide_followers_count}},Object(ue.c)(["mergedConfig"])),components:{UserAvatar:L.default,RemoteFollow:R.a,ModerationTools:oe,AccountActions:he,ProgressButton:A.a,FollowButton:N.a,Select:be.a,RichContent:me.a},methods:{refetchRelationship:function(){return this.$store.dispatch("fetchUserRelationship",this.user.id)},muteUser:function(){this.$store.dispatch("muteUser",this.user.id)},unmuteUser:function(){this.$store.dispatch("unmuteUser",this.user.id)},muteDomain:function(){var e=this;this.$store.dispatch("muteDomain",this.user.screen_name.split("@")[1]).then((function(){return e.refetchRelationship()}))},unmuteDomain:function(){var e=this;this.$store.dispatch("unmuteDomain",this.user.screen_name.split("@")[1]).then((function(){return e.refetchRelationship()}))},subscribeUser:function(){return this.$store.dispatch("subscribeUser",this.user.id)},unsubscribeUser:function(){return this.$store.dispatch("unsubscribeUser",this.user.id)},setProfileView:function(e){this.switcher&&this.$store.commit("setProfileView",{v:e})},linkClicked:function(e){var t=e.target;"SPAN"===t.tagName&&(t=t.parentNode),"A"===t.tagName&&window.open(t.href,"_blank")},userProfileLink:function(e){return Object(fe.a)(e.id,e.screen_name,this.$store.state.instance.restrictedNicknames)},openProfileTab:function(){this.$store.dispatch("openSettingsModalTab","profile")},zoomAvatar:function(){var e={url:this.user.profile_image_url_original,mimetype:"image"};this.$store.dispatch("setMedia",[e]),this.$store.dispatch("setCurrentMedia",e)},mentionUser:function(){this.$store.dispatch("openPostStatusModal",{replyTo:!0,repliedUser:this.user})}}};n(530);const ve=te()(ge,[["render",function(e,t,n,F,E,L){const R=Object(r.J)("UserAvatar"),A=Object(r.J)("FAIcon"),N=Object(r.J)("router-link"),B=Object(r.J)("RichContent"),V=Object(r.J)("AccountActions"),H=Object(r.J)("Select"),q=Object(r.J)("FollowButton"),J=Object(r.J)("ProgressButton"),W=Object(r.J)("FALayers"),Y=Object(r.J)("ModerationTools"),G=Object(r.J)("RemoteFollow");return Object(r.D)(),Object(r.j)("div",{class:Object(r.w)(["user-card",e.classes])},[Object(r.k)("div",{class:Object(r.w)([{"hide-bio":e.hideBio},"background-image"]),style:Object(r.x)(e.style)},null,6),Object(r.k)("div",i,[Object(r.k)("div",o,[Object(r.k)("div",s,[e.allowZoomingAvatar?(Object(r.D)(),Object(r.j)("a",{key:0,class:"user-info-avatar-link",onClick:t[0]||(t[0]=(...t)=>e.zoomAvatar&&e.zoomAvatar(...t))},[Object(r.m)(R,{"better-shadow":e.betterShadow,user:e.user},null,8,["better-shadow","user"]),Object(r.k)("div",a,[Object(r.m)(A,{class:"fa-scale-110 fa-old-padding",icon:"search-plus"})])])):(Object(r.D)(),Object(r.h)(N,{key:1,to:e.userProfileLink(e.user)},{default:Object(r.V)(()=>[Object(r.m)(R,{"better-shadow":e.betterShadow,user:e.user},null,8,["better-shadow","user"])]),_:1},8,["to"])),Object(r.k)("div",c,[Object(r.k)("div",l,[Object(r.m)(B,{title:e.user.name,class:"user-name",html:e.user.name,emoji:e.user.emoji},null,8,["title","html","emoji"]),!e.isOtherUser&&e.user.is_local?(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-unstyled edit-profile-button",onClick:t[1]||(t[1]=Object(r.Y)((...t)=>e.openProfileTab&&e.openProfileTab(...t),["stop"]))},[Object(r.m)(A,{"fixed-width":"",class:"icon",icon:"edit",title:e.$t("user_card.edit_profile")},null,8,["title"])])):Object(r.i)("",!0),e.isOtherUser&&!e.user.is_local?(Object(r.D)(),Object(r.j)("a",{key:1,href:e.user.statusnet_profile_url,target:"_blank",class:"button-unstyled external-link-button"},[Object(r.m)(A,{class:"icon",icon:"external-link-alt"})],8,u)):Object(r.i)("",!0),e.isOtherUser&&e.loggedIn?(Object(r.D)(),Object(r.h)(V,{key:2,user:e.user,relationship:e.relationship},null,8,["user","relationship"])):Object(r.i)("",!0)]),Object(r.k)("div",d,[Object(r.m)(N,{class:"user-screen-name",title:e.user.screen_name_ui,to:e.userProfileLink(e.user)},{default:Object(r.V)(()=>[Object(r.l)(" @"+Object(r.O)(e.user.screen_name_ui),1)]),_:1},8,["title","to"]),e.hideBio?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)(r.a,{key:0},[e.user.deactivated?(Object(r.D)(),Object(r.j)("span",p,Object(r.O)(e.$t("user_card.deactivated")),1)):Object(r.i)("",!0),e.visibleRole?(Object(r.D)(),Object(r.j)("span",h,Object(r.O)(e.$t("general.role."+e.visibleRole)),1)):Object(r.i)("",!0),e.user.bot?(Object(r.D)(),Object(r.j)("span",b,Object(r.O)(e.$t("user_card.bot")),1)):Object(r.i)("",!0)],64)),e.user.locked?(Object(r.D)(),Object(r.j)("span",m,[Object(r.m)(A,{class:"lock-icon",icon:"lock",size:"sm"})])):Object(r.i)("",!0),e.mergedConfig.hideUserStats||e.hideBio?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("span",f,Object(r.O)(e.dailyAvg)+" "+Object(r.O)(e.$t("user_card.per_day")),1))])])]),Object(r.k)("div",O,[e.relationship.followed_by&&e.loggedIn&&e.isOtherUser?(Object(r.D)(),Object(r.j)("div",j,Object(r.O)(e.$t("user_card.follows_you")),1)):Object(r.i)("",!0),!e.isOtherUser||!e.loggedIn&&e.switcher?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",g,["disabled"!==e.userHighlightType?Object(r.W)((Object(r.D)(),Object(r.j)("input",{key:0,id:"userHighlightColorTx"+e.user.id,"onUpdate:modelValue":t[2]||(t[2]=t=>e.userHighlightColor=t),class:"userHighlightText",type:"text"},null,8,v)),[[r.S,e.userHighlightColor]]):Object(r.i)("",!0),"disabled"!==e.userHighlightType?Object(r.W)((Object(r.D)(),Object(r.j)("input",{key:1,id:"userHighlightColor"+e.user.id,"onUpdate:modelValue":t[3]||(t[3]=t=>e.userHighlightColor=t),class:"userHighlightCl",type:"color"},null,8,y)),[[r.S,e.userHighlightColor]]):Object(r.i)("",!0),w,Object(r.m)(H,{id:"userHighlightSel"+e.user.id,modelValue:e.userHighlightType,"onUpdate:modelValue":t[4]||(t[4]=t=>e.userHighlightType=t),class:"userHighlightSel"},{default:Object(r.V)(()=>[Object(r.k)("option",k,Object(r.O)(e.$t("user_card.highlight.disabled")),1),Object(r.k)("option",_,Object(r.O)(e.$t("user_card.highlight.solid")),1),Object(r.k)("option",S,Object(r.O)(e.$t("user_card.highlight.striped")),1),Object(r.k)("option",C,Object(r.O)(e.$t("user_card.highlight.side")),1)]),_:1},8,["id","modelValue"])]))]),e.loggedIn&&e.isOtherUser?(Object(r.D)(),Object(r.j)("div",P,[Object(r.k)("div",x,[Object(r.m)(q,{relationship:e.relationship,user:e.user},null,8,["relationship","user"]),e.relationship.following?(Object(r.D)(),Object(r.j)(r.a,{key:0},[e.relationship.subscribing?(Object(r.D)(),Object(r.h)(J,{key:1,class:"btn button-default toggled",click:e.unsubscribeUser,title:e.$t("user_card.unsubscribe")},{default:Object(r.V)(()=>[Object(r.m)(W,null,{default:Object(r.V)(()=>[Object(r.m)(A,{icon:"rss",transform:"left-5 shrink-6 up-3 rotate-20",flip:"horizontal"}),Object(r.m)(A,{icon:"rss",transform:"right-5 shrink-6 up-3 rotate-20"}),Object(r.m)(A,{icon:"bell"})]),_:1})]),_:1},8,["click","title"])):(Object(r.D)(),Object(r.h)(J,{key:0,class:"btn button-default",click:e.subscribeUser,title:e.$t("user_card.subscribe")},{default:Object(r.V)(()=>[Object(r.m)(A,{icon:"bell"})]),_:1},8,["click","title"]))],64)):Object(r.i)("",!0)]),Object(r.k)("div",null,[e.relationship.muting?(Object(r.D)(),Object(r.j)("button",{key:0,class:"btn button-default btn-block toggled",disabled:e.user.deactivated,onClick:t[5]||(t[5]=(...t)=>e.unmuteUser&&e.unmuteUser(...t))},Object(r.O)(e.$t("user_card.muted")),9,D)):(Object(r.D)(),Object(r.j)("button",{key:1,class:"btn button-default btn-block",disabled:e.user.deactivated,onClick:t[6]||(t[6]=(...t)=>e.muteUser&&e.muteUser(...t))},Object(r.O)(e.$t("user_card.mute")),9,T))]),Object(r.k)("div",null,[e.relationship.domain_blocking?(Object(r.D)(),Object(r.j)("button",{key:0,class:"btn button-default btn-block toggled",onClick:t[7]||(t[7]=(...t)=>e.unmuteDomain&&e.unmuteDomain(...t))},Object(r.O)(e.$t("user_card.domain_muted")),1)):(Object(r.D)(),Object(r.j)("button",{key:1,class:"btn button-default btn-block",onClick:t[8]||(t[8]=(...t)=>e.muteDomain&&e.muteDomain(...t))},Object(r.O)(e.$t("user_card.mute_domain")),1))]),Object(r.k)("div",null,[Object(r.k)("button",{class:"btn button-default btn-block",disabled:e.user.deactivated,onClick:t[9]||(t[9]=(...t)=>e.mentionUser&&e.mentionUser(...t))},Object(r.O)(e.$t("user_card.mention")),9,I)]),"admin"===e.loggedIn.role?(Object(r.D)(),Object(r.h)(Y,{key:0,user:e.user},null,8,["user"])):Object(r.i)("",!0)])):Object(r.i)("",!0),!e.loggedIn&&e.user.is_local?(Object(r.D)(),Object(r.j)("div",$,[Object(r.m)(G,{user:e.user},null,8,["user"])])):Object(r.i)("",!0)])]),e.hideBio?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",z,[!e.mergedConfig.hideUserStats&&e.switcher?(Object(r.D)(),Object(r.j)("div",M,[Object(r.k)("div",{class:"user-count",onClick:t[10]||(t[10]=Object(r.Y)(t=>e.setProfileView("statuses"),["prevent"]))},[Object(r.k)("h5",null,Object(r.O)(e.$t("user_card.statuses")),1),Object(r.k)("span",null,[Object(r.l)(Object(r.O)(e.user.statuses_count)+" ",1),U])]),Object(r.k)("div",{class:"user-count",onClick:t[11]||(t[11]=Object(r.Y)(t=>e.setProfileView("friends"),["prevent"]))},[Object(r.k)("h5",null,Object(r.O)(e.$t("user_card.followees")),1),Object(r.k)("span",null,Object(r.O)(e.hideFollowsCount?e.$t("user_card.hidden"):e.user.friends_count),1)]),Object(r.k)("div",{class:"user-count",onClick:t[12]||(t[12]=Object(r.Y)(t=>e.setProfileView("followers"),["prevent"]))},[Object(r.k)("h5",null,Object(r.O)(e.$t("user_card.followers")),1),Object(r.k)("span",null,Object(r.O)(e.hideFollowersCount?e.$t("user_card.hidden"):e.user.followers_count),1)])])):Object(r.i)("",!0),e.hideBio?Object(r.i)("",!0):(Object(r.D)(),Object(r.h)(B,{key:1,class:"user-card-bio",html:e.user.description_html,emoji:e.user.emoji,"handle-links":!0},null,8,["html","emoji"]))]))],2)}]]);t.a=ve},function(e,t,n){"use strict";n.d(t,"b",(function(){return o})),n.d(t,"a",(function(){return s})),n.d(t,"c",(function(){return a}));var r=n(20),i=n(18),o={undelay:null,topBar:null,badge:null,profileTint:null,fg:null,bg:"underlay",highlight:"bg",panel:"bg",popover:"bg",selectedMenu:"popover",btn:"bg",btnPanel:"panel",btnTopBar:"topBar",input:"bg",inputPanel:"panel",inputTopBar:"topBar",alert:"bg",alertPanel:"panel",poll:"bg",chatBg:"underlay",chatMessage:"chatBg"},s={profileTint:.5,alert:.5,input:.5,faint:.5,underlay:.15,alertPopup:.95},a={bg:{depends:[],opacity:"bg",priority:1},wallpaper:{depends:["bg"],color:function(e,t){return Object(r.brightness)(-2*e,t).rgb}},fg:{depends:[],priority:1},text:{depends:[],layer:"bg",opacity:null,priority:1},underlay:{default:"#000000",opacity:"underlay"},link:{depends:["accent"],priority:1},accent:{depends:["link"],priority:1},faint:{depends:["text"],opacity:"faint"},faintLink:{depends:["link"],opacity:"faint"},postFaintLink:{depends:["postLink"],opacity:"faint"},cBlue:"#0000ff",cRed:"#FF0000",cGreen:"#00FF00",cOrange:"#E3FF00",profileBg:{depends:["bg"],color:function(e,t){return{r:Math.floor(.53*t.r),g:Math.floor(.56*t.g),b:Math.floor(.59*t.b)}}},profileTint:{depends:["bg"],layer:"profileTint",opacity:"profileTint"},highlight:{depends:["bg"],color:function(e,t){return Object(r.brightness)(5*e,t).rgb}},highlightLightText:{depends:["lightText"],layer:"highlight",textColor:!0},highlightPostLink:{depends:["postLink"],layer:"highlight",textColor:"preserve"},highlightFaintText:{depends:["faint"],layer:"highlight",textColor:!0},highlightFaintLink:{depends:["faintLink"],layer:"highlight",textColor:"preserve"},highlightPostFaintLink:{depends:["postFaintLink"],layer:"highlight",textColor:"preserve"},highlightText:{depends:["text"],layer:"highlight",textColor:!0},highlightLink:{depends:["link"],layer:"highlight",textColor:"preserve"},highlightIcon:{depends:["highlight","highlightText"],color:function(e,t,n){return Object(i.g)(t,n)}},popover:{depends:["bg"],opacity:"popover"},popoverLightText:{depends:["lightText"],layer:"popover",textColor:!0},popoverPostLink:{depends:["postLink"],layer:"popover",textColor:"preserve"},popoverFaintText:{depends:["faint"],layer:"popover",textColor:!0},popoverFaintLink:{depends:["faintLink"],layer:"popover",textColor:"preserve"},popoverPostFaintLink:{depends:["postFaintLink"],layer:"popover",textColor:"preserve"},popoverText:{depends:["text"],layer:"popover",textColor:!0},popoverLink:{depends:["link"],layer:"popover",textColor:"preserve"},popoverIcon:{depends:["popover","popoverText"],color:function(e,t,n){return Object(i.g)(t,n)}},selectedPost:"--highlight",selectedPostFaintText:{depends:["highlightFaintText"],layer:"highlight",variant:"selectedPost",textColor:!0},selectedPostLightText:{depends:["highlightLightText"],layer:"highlight",variant:"selectedPost",textColor:!0},selectedPostPostLink:{depends:["highlightPostLink"],layer:"highlight",variant:"selectedPost",textColor:"preserve"},selectedPostFaintLink:{depends:["highlightFaintLink"],layer:"highlight",variant:"selectedPost",textColor:"preserve"},selectedPostText:{depends:["highlightText"],layer:"highlight",variant:"selectedPost",textColor:!0},selectedPostLink:{depends:["highlightLink"],layer:"highlight",variant:"selectedPost",textColor:"preserve"},selectedPostIcon:{depends:["selectedPost","selectedPostText"],color:function(e,t,n){return Object(i.g)(t,n)}},selectedMenu:{depends:["bg"],color:function(e,t){return Object(r.brightness)(5*e,t).rgb}},selectedMenuLightText:{depends:["highlightLightText"],layer:"selectedMenu",variant:"selectedMenu",textColor:!0},selectedMenuFaintText:{depends:["highlightFaintText"],layer:"selectedMenu",variant:"selectedMenu",textColor:!0},selectedMenuFaintLink:{depends:["highlightFaintLink"],layer:"selectedMenu",variant:"selectedMenu",textColor:"preserve"},selectedMenuText:{depends:["highlightText"],layer:"selectedMenu",variant:"selectedMenu",textColor:!0},selectedMenuLink:{depends:["highlightLink"],layer:"selectedMenu",variant:"selectedMenu",textColor:"preserve"},selectedMenuIcon:{depends:["selectedMenu","selectedMenuText"],color:function(e,t,n){return Object(i.g)(t,n)}},selectedMenuPopover:{depends:["popover"],color:function(e,t){return Object(r.brightness)(5*e,t).rgb}},selectedMenuPopoverLightText:{depends:["selectedMenuLightText"],layer:"selectedMenuPopover",variant:"selectedMenuPopover",textColor:!0},selectedMenuPopoverFaintText:{depends:["selectedMenuFaintText"],layer:"selectedMenuPopover",variant:"selectedMenuPopover",textColor:!0},selectedMenuPopoverFaintLink:{depends:["selectedMenuFaintLink"],layer:"selectedMenuPopover",variant:"selectedMenuPopover",textColor:"preserve"},selectedMenuPopoverText:{depends:["selectedMenuText"],layer:"selectedMenuPopover",variant:"selectedMenuPopover",textColor:!0},selectedMenuPopoverLink:{depends:["selectedMenuLink"],layer:"selectedMenuPopover",variant:"selectedMenuPopover",textColor:"preserve"},selectedMenuPopoverIcon:{depends:["selectedMenuPopover","selectedMenuText"],color:function(e,t,n){return Object(i.g)(t,n)}},lightText:{depends:["text"],layer:"bg",textColor:"preserve",color:function(e,t){return Object(r.brightness)(20*e,t).rgb}},postLink:{depends:["link"],layer:"bg",textColor:"preserve"},postGreentext:{depends:["cGreen"],layer:"bg",textColor:"preserve"},postCyantext:{depends:["cBlue"],layer:"bg",textColor:"preserve"},border:{depends:["fg"],opacity:"border",color:function(e,t){return Object(r.brightness)(2*e,t).rgb}},poll:{depends:["accent","bg"],copacity:"poll",color:function(e,t,n){return Object(i.a)(t,.4,n)}},pollText:{depends:["text"],layer:"poll",textColor:!0},icon:{depends:["bg","text"],inheritsOpacity:!1,color:function(e,t,n){return Object(i.g)(t,n)}},fgText:{depends:["text"],layer:"fg",textColor:!0},fgLink:{depends:["link"],layer:"fg",textColor:"preserve"},panel:{depends:["fg"],opacity:"panel"},panelText:{depends:["text"],layer:"panel",textColor:!0},panelFaint:{depends:["fgText"],layer:"panel",opacity:"faint",textColor:!0},panelLink:{depends:["fgLink"],layer:"panel",textColor:"preserve"},topBar:"--fg",topBarText:{depends:["fgText"],layer:"topBar",textColor:!0},topBarLink:{depends:["fgLink"],layer:"topBar",textColor:"preserve"},tab:{depends:["btn"]},tabText:{depends:["btnText"],layer:"btn",textColor:!0},tabActiveText:{depends:["text"],layer:"bg",textColor:!0},btn:{depends:["fg"],variant:"btn",opacity:"btn"},btnText:{depends:["fgText"],layer:"btn",textColor:!0},btnPanelText:{depends:["btnText"],layer:"btnPanel",variant:"btn",textColor:!0},btnTopBarText:{depends:["btnText"],layer:"btnTopBar",variant:"btn",textColor:!0},btnPressed:{depends:["btn"],layer:"btn"},btnPressedText:{depends:["btnText"],layer:"btn",variant:"btnPressed",textColor:!0},btnPressedPanel:{depends:["btnPressed"],layer:"btn"},btnPressedPanelText:{depends:["btnPanelText"],layer:"btnPanel",variant:"btnPressed",textColor:!0},btnPressedTopBar:{depends:["btnPressed"],layer:"btn"},btnPressedTopBarText:{depends:["btnTopBarText"],layer:"btnTopBar",variant:"btnPressed",textColor:!0},btnToggled:{depends:["btn"],layer:"btn",color:function(e,t){return Object(r.brightness)(20*e,t).rgb}},btnToggledText:{depends:["btnText"],layer:"btn",variant:"btnToggled",textColor:!0},btnToggledPanelText:{depends:["btnPanelText"],layer:"btnPanel",variant:"btnToggled",textColor:!0},btnToggledTopBarText:{depends:["btnTopBarText"],layer:"btnTopBar",variant:"btnToggled",textColor:!0},btnDisabled:{depends:["btn","bg"],color:function(e,t,n){return Object(i.a)(t,.25,n)}},btnDisabledText:{depends:["btnText","btnDisabled"],layer:"btn",variant:"btnDisabled",color:function(e,t,n){return Object(i.a)(t,.25,n)}},btnDisabledPanelText:{depends:["btnPanelText","btnDisabled"],layer:"btnPanel",variant:"btnDisabled",color:function(e,t,n){return Object(i.a)(t,.25,n)}},btnDisabledTopBarText:{depends:["btnTopBarText","btnDisabled"],layer:"btnTopBar",variant:"btnDisabled",color:function(e,t,n){return Object(i.a)(t,.25,n)}},input:{depends:["fg"],opacity:"input"},inputText:{depends:["text"],layer:"input",textColor:!0},inputPanelText:{depends:["panelText"],layer:"inputPanel",variant:"input",textColor:!0},inputTopbarText:{depends:["topBarText"],layer:"inputTopBar",variant:"input",textColor:!0},alertError:{depends:["cRed"],opacity:"alert"},alertErrorText:{depends:["text"],layer:"alert",variant:"alertError",textColor:!0},alertErrorPanelText:{depends:["panelText"],layer:"alertPanel",variant:"alertError",textColor:!0},alertWarning:{depends:["cOrange"],opacity:"alert"},alertWarningText:{depends:["text"],layer:"alert",variant:"alertWarning",textColor:!0},alertWarningPanelText:{depends:["panelText"],layer:"alertPanel",variant:"alertWarning",textColor:!0},alertSuccess:{depends:["cGreen"],opacity:"alert"},alertSuccessText:{depends:["text"],layer:"alert",variant:"alertSuccess",textColor:!0},alertSuccessPanelText:{depends:["panelText"],layer:"alertPanel",variant:"alertSuccess",textColor:!0},alertNeutral:{depends:["text"],opacity:"alert"},alertNeutralText:{depends:["text"],layer:"alert",variant:"alertNeutral",color:function(e,t){return Object(r.invertLightness)(t).rgb},textColor:!0},alertNeutralPanelText:{depends:["panelText"],layer:"alertPanel",variant:"alertNeutral",textColor:!0},alertPopupError:{depends:["alertError"],opacity:"alertPopup"},alertPopupErrorText:{depends:["alertErrorText"],layer:"popover",variant:"alertPopupError",textColor:!0},alertPopupWarning:{depends:["alertWarning"],opacity:"alertPopup"},alertPopupWarningText:{depends:["alertWarningText"],layer:"popover",variant:"alertPopupWarning",textColor:!0},alertPopupSuccess:{depends:["alertSuccess"],opacity:"alertPopup"},alertPopupSuccessText:{depends:["alertSuccessText"],layer:"popover",variant:"alertPopupSuccess",textColor:!0},alertPopupNeutral:{depends:["alertNeutral"],opacity:"alertPopup"},alertPopupNeutralText:{depends:["alertNeutralText"],layer:"popover",variant:"alertPopupNeutral",textColor:!0},badgeNotification:"--cRed",badgeNotificationText:{depends:["text","badgeNotification"],layer:"badge",variant:"badgeNotification",textColor:"bw"},chatBg:{depends:["bg"]},chatMessageIncomingBg:{depends:["chatBg"]},chatMessageIncomingText:{depends:["text"],layer:"chatMessage",variant:"chatMessageIncomingBg",textColor:!0},chatMessageIncomingLink:{depends:["link"],layer:"chatMessage",variant:"chatMessageIncomingBg",textColor:"preserve"},chatMessageIncomingBorder:{depends:["border"],opacity:"border",color:function(e,t){return Object(r.brightness)(2*e,t).rgb}},chatMessageOutgoingBg:{depends:["chatMessageIncomingBg"],color:function(e,t){return Object(r.brightness)(5*e,t).rgb}},chatMessageOutgoingText:{depends:["text"],layer:"chatMessage",variant:"chatMessageOutgoingBg",textColor:!0},chatMessageOutgoingLink:{depends:["link"],layer:"chatMessage",variant:"chatMessageOutgoingBg",textColor:"preserve"},chatMessageOutgoingBorder:{depends:["chatMessageOutgoingBg"],opacity:"border",color:function(e,t){return Object(r.brightness)(2*e,t).rgb}}}},,function(e,t,n){"use strict";var r=n(21),i=n.n(r),o=n(70),s=n(336),a={ja_easy:"ja",zh_Hant:"zh-HANT",zh:"zh-Hans"},c=function(e){return a[e]||e},l=function(e){var t={ja_easy:"やさしいにほんご",zh:"简体中文",zh_Hant:"繁體中文"}[e]||s.a.getNativeName(e),n=c(e);return t.charAt(0).toLocaleUpperCase(n)+t.slice(1)},u=i()(o.a.languages,(function(e){return{code:e,name:l(e)}})).sort((function(e,t){return e.name.localeCompare(t.name)})),d={internalToBrowserLocale:c,internalToBackendLocale:function(e){return c(e).replace("_","-")},languages:u,getLanguageName:l};t.a=d},,,,,function(e,t,n){"use strict";n.d(t,"b",(function(){return f})),n.d(t,"i",(function(){return O})),n.d(t,"e",(function(){return g})),n.d(t,"g",(function(){return v})),n.d(t,"f",(function(){return y})),n.d(t,"a",(function(){return C})),n.d(t,"h",(function(){return P})),n.d(t,"d",(function(){return x})),n.d(t,"k",(function(){return T})),n.d(t,"c",(function(){return I})),n.d(t,"m",(function(){return $})),n.d(t,"j",(function(){return z})),n.d(t,"l",(function(){return M}));var r=n(28),i=n.n(r),o=n(12),s=n.n(o),a=n(5),c=n.n(a),l=n(11),u=n.n(l),d=n(20),p=n(18),h=n(54);function b(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function m(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?b(Object(n),!0).forEach((function(t){c()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):b(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var f=function(e){var t=D(e).rules,n=document.head,r=document.body;r.classList.add("hidden");var i=document.createElement("style");n.appendChild(i);var o=i.sheet;o.toString(),o.insertRule(":root { ".concat(t.radii," }"),"index-max"),o.insertRule(":root { ".concat(t.colors," }"),"index-max"),o.insertRule(":root { ".concat(t.shadows," }"),"index-max"),o.insertRule(":root { ".concat(t.fonts," }"),"index-max"),r.classList.remove("hidden")},O=function(e,t){return 0===e.length?"none":e.filter((function(e){return t?e.inset:e})).map((function(e){return[e.x,e.y,e.blur,e.spread].map((function(e){return e+"px"})).concat([Object(p.d)(e.color,e.alpha),e.inset?"inset":""]).join(" ")})).join(", ")},j=function(e){return 0===e.length?"none":e.filter((function(e){return!e.inset&&0===Number(e.spread)})).map((function(e){return[e.x,e.y,e.blur/2].map((function(e){return e+"px"})).concat([Object(p.d)(e.color,e.alpha)]).join(" ")})).map((function(e){return"drop-shadow(".concat(e,")")})).join(" ")},g=function(e){var t=e.themeEngineVersion?e.colors||e:I(e.colors||e),n=Object(h.d)(t,e.opacity||{}),r=n.colors,i=n.opacity,o=Object.entries(r).reduce((function(e,t){var n=u()(t,2),r=n[0],i=n[1];return i?(e.solid[r]=Object(p.i)(i),e.complete[r]=void 0===i.a?Object(p.i)(i):Object(p.j)(i),e):e}),{complete:{},solid:{}});return{rules:{colors:Object.entries(o.complete).filter((function(e){var t=u()(e,2);t[0];return t[1]})).map((function(e){var t=u()(e,2),n=t[0],r=t[1];return"--".concat(n,": ").concat(r)})).join(";")},theme:{colors:o.solid,opacity:i}}},v=function(e){var t=e.radii||{};void 0!==e.btnRadius&&(t=Object.entries(e).filter((function(e){var t=u()(e,2),n=t[0];t[1];return n.endsWith("Radius")})).reduce((function(e,t){return e[t[0].split("Radius")[0]]=t[1],e}),{}));var n=Object.entries(t).filter((function(e){var t=u()(e,2);t[0];return t[1]})).reduce((function(e,t){var n=u()(t,2),r=n[0],i=n[1];return e[r]=i,e}),{btn:4,input:4,checkbox:2,panel:10,avatar:5,avatarAlt:50,tooltip:2,attachment:5,chatMessage:t.panel});return{rules:{radii:Object.entries(n).filter((function(e){var t=u()(e,2);t[0];return t[1]})).map((function(e){var t=u()(e,2),n=t[0],r=t[1];return"--".concat(n,"Radius: ").concat(r,"px")})).join(";")},theme:{radii:n}}},y=function(e){var t=Object.entries(e.fonts||{}).filter((function(e){var t=u()(e,2);t[0];return t[1]})).reduce((function(e,t){var n=u()(t,2),r=n[0],i=n[1];return e[r]=Object.entries(i).filter((function(e){var t=u()(e,2);t[0];return t[1]})).reduce((function(e,t){var n=u()(t,2),r=n[0],i=n[1];return e[r]=i,e}),e[r]),e}),{interface:{family:"sans-serif"},input:{family:"inherit"},post:{family:"inherit"},postCode:{family:"monospace"}});return{rules:{fonts:Object.entries(t).filter((function(e){var t=u()(e,2);t[0];return t[1]})).map((function(e){var t=u()(e,2),n=t[0],r=t[1];return"--".concat(n,"Font: ").concat(r.family)})).join(";")},theme:{fonts:t}}},w=function(e,t){return{x:0,y:e?1:-1,blur:0,spread:0,color:t?"#000000":"#FFFFFF",alpha:.2,inset:!0}},k=[w(!0,!1),w(!1,!0)],_=[w(!0,!0),w(!1,!1)],S={x:0,y:0,blur:4,spread:0,color:"--faint",alpha:1},C={panel:[{x:1,y:1,blur:4,spread:0,color:"#000000",alpha:.6}],topBar:[{x:0,y:0,blur:4,spread:0,color:"#000000",alpha:.6}],popup:[{x:2,y:2,blur:3,spread:0,color:"#000000",alpha:.5}],avatar:[{x:0,y:1,blur:8,spread:0,color:"#000000",alpha:.7}],avatarStatus:[],panelHeader:[],button:[{x:0,y:0,blur:2,spread:0,color:"#000000",alpha:1}].concat(k),buttonHover:[S].concat(k),buttonPressed:[S].concat(_),input:[].concat(_,[{x:0,y:0,blur:2,inset:!0,spread:0,color:"#000000",alpha:1}])},P=function(e,t){var n={button:"btn",panel:"bg",top:"topBar",popup:"popover",avatar:"bg",panelHeader:"panel",input:"input"},r=Object.fromEntries(Object.entries(e.shadows||{}).map((function(e){var t=u()(e,2);return[t[0],t[1].map((function(e){return m({color:"#000000"},e)}))]}))),i=r&&!e.themeEngineVersion?$(r,e.opacity):r||{},o=Object.entries(m(m({},C),i)).reduce((function(e,r){var i=u()(r,2),o=i[0],a=i[1],l=o.replace(/[A-Z].*$/,""),b=n[l],f=Object(p.h)(Object(d.convert)(t[b]).rgb)<.5?1:-1,O=a.reduce((function(e,n){return[].concat(s()(e),[m(m({},n),{},{color:Object(p.i)(Object(h.c)(n.color,(function(e){return Object(d.convert)(t[e]).rgb}),f))})])}),[]);return m(m({},e),{},c()({},o,O))}),{});return{rules:{shadows:Object.entries(o).map((function(e){var t=u()(e,2),n=t[0],r=t[1];return["--".concat(n,"Shadow: ").concat(O(r)),"--".concat(n,"ShadowFilter: ").concat(j(r)),"--".concat(n,"ShadowInset: ").concat(O(r,!0))].join(";")})).join(";")},theme:{shadows:o}}},x=function(e,t,n,r){return{rules:m(m(m(m({},n.rules),e.rules),t.rules),r.rules),theme:m(m(m(m({},n.theme),e.theme),t.theme),r.theme)}},D=function(e){var t=g(e);return x(t,v(e),P(e,t.theme.colors,t.mod),y(e))},T=function(){return window.fetch("/static/styles.json",{cache:"no-store"}).then((function(e){return e.json()})).then((function(e){return Object.entries(e).map((function(e){var t=u()(e,2),n=t[0],r=t[1],o=null;return"object"===i()(r)?o=Promise.resolve(r):"string"==typeof r&&(o=window.fetch(r,{cache:"no-store"}).then((function(e){return e.json()})).catch((function(e){return console.error(e),null}))),[n,o]}))})).then((function(e){return e.reduce((function(e,t){var n=u()(t,2),r=n[0],i=n[1];return e[r]=i,e}),{})}))},I=function(e){return Object.entries(e).reduce((function(e,t){var n=u()(t,2),r=n[0],i=n[1];switch(r){case"lightBg":return m(m({},e),{},{highlight:i});case"btnText":return m(m({},e),["","Panel","TopBar"].reduce((function(e,t){return m(m({},e),{},c()({},"btn"+t+"Text",i))}),{}));default:return m(m({},e),{},c()({},r,i))}}),{})},$=function(e,t){return Object.entries(e).reduce((function(e,n){var r=u()(n,2),i=r[0],o=r[1],a=o.reduce((function(e,n){return[].concat(s()(e),[m(m({},n),{},{alpha:(o=n,a=o.color,(void 0===a?"#000000":a).startsWith("--")?(r=n,i=r.color,t[Object(h.f)(i.substring(2).split(",")[0])]||1):n.alpha)})]);var r,i,o,a}),[]);return m(m({},e),{},c()({},i,a))}),{})},z=function(e){return T().then((function(t){return t[e]?t[e]:t["pleroma-dark"]})).then((function(e){var t=Array.isArray(e),n=t?{}:e.theme;if(t){var r=Object(p.f)(e[1]),i=Object(p.f)(e[2]),o=Object(p.f)(e[3]),s=Object(p.f)(e[4]),a=Object(p.f)(e[5]||"#FF0000"),c=Object(p.f)(e[6]||"#00FF00"),l=Object(p.f)(e[7]||"#0000FF"),u=Object(p.f)(e[8]||"#E3FF00");n.colors={bg:r,fg:i,text:o,link:s,cRed:a,cBlue:l,cGreen:c,cOrange:u}}return{theme:n,source:e.source}}))},M=function(e){return z(e).then((function(e){return f(e.theme)}))}},function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r=function(e,t){var n=!1,r=null;return r=window.setTimeout((function i(){var o=e();o&&o.finally?o.finally((function(){n||(r=window.setTimeout(i,t))})):console.warn("promiseInterval: promise call did not return a promise, stopping interval.")}),t),{stop:function(){n=!0,window.clearTimeout(r)}}}},function(e,t,n){"use strict";var r=n(0);const i={key:0},o={key:1},s={key:3,class:"link-preview media-body"};var a=n(5),c=n.n(a),l=n(58);const u=["title"],d={class:"option-result-label"},p={class:"result-percentage"},h=["onClick"],b=["disabled","value"],m=["disabled","value"],f={class:"option-vote"},O={class:"footer faint"},j=["disabled"],g={class:"total"};var v=n(21),y=n.n(v),w=n(164),k=n.n(w),_=n(59),S=n(25),C={name:"Poll",props:["basePoll","emoji"],components:{Timeago:_.a,RichContent:S.a},data:function(){return{loading:!1,choices:[]}},created:function(){this.$store.state.polls.pollsObject[this.pollId]||this.$store.dispatch("mergeOrAddPoll",this.basePoll),this.$store.dispatch("trackPoll",this.pollId)},unmounted:function(){this.$store.dispatch("untrackPoll",this.pollId)},computed:{pollId:function(){return this.basePoll.id},poll:function(){return this.$store.state.polls.pollsObject[this.pollId]||{}},options:function(){return this.poll&&this.poll.options||[]},expiresAt:function(){return this.poll&&this.poll.expires_at||0},expired:function(){return this.poll&&this.poll.expired||!1},loggedIn:function(){return this.$store.state.users.currentUser},showResults:function(){return this.poll.voted||this.expired||!this.loggedIn},totalVotesCount:function(){return this.poll.votes_count},containerClass:function(){return{loading:this.loading}},choiceIndices:function(){return this.choices.map((function(e,t){return e&&t})).filter((function(e){return"number"==typeof e}))},isDisabled:function(){var e=0===this.choiceIndices.length;return this.loading||e}},methods:{percentageForOption:function(e){return 0===this.totalVotesCount?0:Math.round(e/this.totalVotesCount*100)},resultTitle:function(e){return"".concat(e.votes_count,"/").concat(this.totalVotesCount," ").concat(this.$t("polls.votes"))},fetchPoll:function(){this.$store.dispatch("refreshPoll",{id:this.statusId,pollId:this.poll.id})},activateOption:function(e){var t=this.$el.querySelectorAll("input"),n=this.$el.querySelector('input[value="'.concat(e,'"]'));this.poll.multiple?n.checked=!n.checked:(k()(t,(function(e){e.checked=!1})),n.checked=!0),this.choices=y()(t,(function(e){return e.checked}))},optionId:function(e){return"poll".concat(this.poll.id,"-").concat(e)},vote:function(){var e=this;0!==this.choiceIndices.length&&(this.loading=!0,this.$store.dispatch("votePoll",{id:this.statusId,pollId:this.poll.id,choices:this.choiceIndices}).then((function(t){e.loading=!1})))}}},P=(n(517),n(4)),x=n.n(P);var D=x()(C,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("RichContent"),c=Object(r.J)("Timeago"),l=Object(r.J)("i18n-t");return Object(r.D)(),Object(r.j)("div",{class:Object(r.w)(["poll",e.containerClass])},[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.options,(t,n)=>(Object(r.D)(),Object(r.j)("div",{key:n,class:"poll-option"},[e.showResults?(Object(r.D)(),Object(r.j)("div",{key:0,title:e.resultTitle(t),class:"option-result"},[Object(r.k)("div",d,[Object(r.k)("span",p,Object(r.O)(e.percentageForOption(t.votes_count))+"% ",1),Object(r.m)(a,{html:t.title_html,"handle-links":!1,emoji:e.emoji},null,8,["html","emoji"])]),Object(r.k)("div",{class:"result-fill",style:Object(r.x)({width:e.percentageForOption(t.votes_count)+"%"})},null,4)],8,u)):(Object(r.D)(),Object(r.j)("div",{key:1,onClick:t=>e.activateOption(n)},[e.poll.multiple?(Object(r.D)(),Object(r.j)("input",{key:0,type:"checkbox",disabled:e.loading,value:n},null,8,b)):(Object(r.D)(),Object(r.j)("input",{key:1,type:"radio",disabled:e.loading,value:n},null,8,m)),Object(r.k)("label",f,[Object(r.m)(a,{html:t.title_html,"handle-links":!1,emoji:e.emoji},null,8,["html","emoji"])])],8,h))]))),128)),Object(r.k)("div",O,[e.showResults?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("button",{key:0,class:"btn button-default poll-vote-button",type:"button",disabled:e.isDisabled,onClick:t[0]||(t[0]=(...t)=>e.vote&&e.vote(...t))},Object(r.O)(e.$t("polls.vote")),9,j)),Object(r.k)("div",g,["number"==typeof e.poll.voters_count?(Object(r.D)(),Object(r.j)(r.a,{key:0},[Object(r.l)(Object(r.O)(e.$tc("polls.people_voted_count",e.poll.voters_count,{count:e.poll.voters_count}))+" ·  ",1)],64)):(Object(r.D)(),Object(r.j)(r.a,{key:1},[Object(r.l)(Object(r.O)(e.$tc("polls.votes_count",e.poll.votes_count,{count:e.poll.votes_count}))+" ·  ",1)],64))]),Object(r.k)("span",null,[Object(r.m)(l,{scope:"global",keypath:e.expired?"polls.expired":"polls.expires_in"},{default:Object(r.V)(()=>[Object(r.m)(c,{time:e.expiresAt,"auto-update":60,"now-threshold":0},null,8,["time"])]),_:1},8,["keypath"])])])],2)}]]),T=n(78);const I={class:"body"},$={key:0};var z=n(33),M=n(12),U=n.n(M),F=n(329),E=n(79),L=n(40),R=n.n(L),A=n(23),N=n(8),B=n(31),V=n(22),H=n(6),q=n(3),J=["backgroundColor","backgroundPosition","backgroundImage"];function W(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Y(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?W(Object(n),!0).forEach((function(t){c()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):W(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}H.c.add(q.f);V.default,Y(Y({user:function(){return this.url&&this.$store&&this.$store.getters.findUserByUrl(this.url)},isYou:function(){return this.user&&this.user.id===this.currentUser.id},userName:function(){return this.user&&this.userNameFullUi.split("@")[0]},serverName:function(){return this.user&&(this.userNameFullUi.split("@")[1]||this.$store.getters.instanceDomain)},userNameFull:function(){return this.user&&this.user.screen_name},userNameFullUi:function(){return this.user&&this.user.screen_name_ui},highlight:function(){return this.user&&this.mergedConfig.highlight[this.user.screen_name]},highlightType:function(){return this.highlight&&"-"+this.highlight.type},highlightClass:function(){if(this.highlight)return Object(B.a)(this.user)},style:function(){if(this.highlight){var e=Object(B.b)(this.highlight);e.backgroundColor,e.backgroundPosition,e.backgroundImage;return R()(e,J)}},classnames:function(){return[{"-you":this.isYou&&this.shouldBoldenYou,"-highlighted":this.highlight},this.highlightType]},useAtIcon:function(){return this.mergedConfig.useAtIcon},isRemote:function(){return this.userName!==this.userNameFull},shouldShowFullUserName:function(){var e=this.mergedConfig.mentionLinkDisplay;return"short"!==e&&("full"===e||this.isRemote)},shouldShowTooltip:function(){return this.mergedConfig.mentionLinkShowTooltip&&"short"===this.mergedConfig.mentionLinkDisplay&&this.isRemote},shouldShowAvatar:function(){return this.mergedConfig.mentionLinkShowAvatar},shouldShowYous:function(){return this.mergedConfig.mentionLinkShowYous},shouldBoldenYou:function(){return this.mergedConfig.mentionLinkBoldenYou},shouldFadeDomain:function(){return this.mergedConfig.mentionLinkFadeDomain}},Object(N.c)(["mergedConfig"])),Object(N.e)({currentUser:function(e){return e.users.currentUser}}));function G(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return K(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return K(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function K(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var X=["tada","jelly","twitch","shake","spin","jump","bounce","flip","x2","x3","x4","font","blur","rainbow","sparkle","rotate"],Z=Object(r.o)({props:{status:{type:Object,required:!0}},render:function(){var e=this;if(!this.status)return null;var t=F.parse(this.status.mfm_content,{fnNameList:X}),n=function(e){return null==e?null:e.match(/^[0-9.]+s$/)?e:null};return Object(r.q)("span",function t(i){return o=i.map((function(i){switch(i.type){case"text":var o,s=[],a=G(i.props.text.replace(/(\r\n|\n|\r)/g,"\n").split("\n"));try{for(a.s();!(o=a.n()).done;){var c=o.value;s.push(Object(r.q)("br")),s.push(c)}}catch(e){a.e(e)}finally{a.f()}return s.shift(),s;case"bold":return[Object(r.q)("b",t(i.children))];case"strike":return[Object(r.q)("del",t(i.children))];case"italic":return Object(r.q)("i",{style:"font-style: oblique;"},t(i.children));case"fn":var l;switch(i.props.name){case"tada":l="font-size: 150%;animation: tada 1s linear infinite both;";break;case"jelly":var u=n(i.props.args.speed)||"1s";l="animation: mfm-rubberBand ".concat(u," linear infinite both;");break;case"twitch":var d=n(i.props.args.speed)||"0.5s";l="animation: mfm-twitch ".concat(d," ease infinite;");break;case"shake":var p=n(i.props.args.speed)||"0.5s";l="animation: mfm-shake ".concat(p," ease infinite;");break;case"spin":var h=i.props.args.left?"reverse":i.props.args.alternate?"alternate":"normal",b=i.props.args.x?"mfm-spinX":i.props.args.y?"mfm-spinY":"mfm-spin",m=n(i.props.args.speed)||"1.5s";l="animation: ".concat(b," ").concat(m," linear infinite; animation-direction: ").concat(h,";");break;case"jump":l="animation: mfm-jump 0.75s linear infinite;";break;case"bounce":l="animation: mfm-bounce 0.75s linear infinite; transform-origin: center bottom;";break;case"flip":var f=i.props.args.h&&i.props.args.v?"scale(-1, -1)":i.props.args.v?"scaleY(-1)":"scaleX(-1)";l="transform: ".concat(f,";");break;case"x2":l="font-size: 200%;";break;case"x3":l="font-size: 400%;";break;case"x4":l="font-size: 600%;";break;case"font":var O=i.props.args.serif?"serif":i.props.args.monospace?"monospace":i.props.args.cursive?"cursive":i.props.args.fantasy?"fantasy":i.props.args.emoji?"emoji":i.props.args.math?"math":null;O&&(l="font-family: ".concat(O,";"));break;case"blur":return Object(r.q)("span",{class:"_mfm_blur_"},t(i.children));case"rainbow":l="animation: mfm-rainbow 1s linear infinite;";break;case"sparkle":return Object(r.q)(MkSparkle,{},t(i.children));case"rotate":var j=parseInt(i.props.args.deg)||"90";l="transform: rotate(".concat(j,"deg); transform-origin: center center;")}return null==l?Object(r.q)("span",{},["$[",i.props.name," "].concat(U()(t(i.children)),["]"])):Object(r.q)("span",{style:"display: inline-block;"+l},t(i.children));case"small":return[Object(r.q)("small",{style:"opacity: 0.7;"},t(i.children))];case"center":return[Object(r.q)("div",{style:"text-align:center;"},t(i.children))];case"url":return[Object(r.q)("a",{key:Math.random(),href:i.props.url,rel:"nofollow noopener"},i.props.url)];case"link":return console.log(i.props),[Object(r.q)("a",{key:Math.random(),href:i.props.url,rel:"nofollow noopener"},t(i.children))];case"mention":var g=e.status.attentions.find((function(e){return"@".concat(e.screen_name)===i.props.acct||e.screen_name===i.props.username}));return g?[Object(r.q)(E.a,{url:g.statusnet_profile_url,content:i.props.acct,userScreenName:i.props.acct})]:null;case"hashtag":return[Object(r.q)("a",{rel:"noopener noreferrer",target:"_blank",key:i.props.hashtag,href:e.status.tags.find((function(e){return e.name===i.props.hashtag})).url},"#".concat(i.props.hashtag))];case"blockCode":return[Object(r.q)("pre",{key:Math.random(),lang:i.props.lang},i.props.code)];case"inlineCode":return[Object(r.q)("pre",{key:Math.random(),code:i.props.code,inline:!0})];case"quote":return e.nowrap?[Object(r.q)("span",{class:"quote"},t(i.children))]:[Object(r.q)("div",{class:"quote"},t(i.children))];case"emojiCode":return[Object(r.q)("div",{class:"still-image emoji img"},[Object(r.q)("img",{key:Math.random(),title:i.props.name,alt:i.props.name,src:e.status.emojis.find((function(e){return e.shortcode===i.props.name})).static_url})])];case"unicodeEmoji":return i.props.emoji;case"math":return[Object(r.q)("pre",{key:Math.random(),code:i.props.code})];case"mathInline":return[Object(r.q)("pre",{key:Math.random(),code:i.props.code,inline:!0})];default:return console.error("unrecognized ast type:",i.type),[]}})),(s=[]).concat.apply(s,U()(o));var o,s}(t))}});function Q(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}H.c.add(q.D,q.Q,q.K,q.N,q.X);var ee={name:"StatusContent",props:["compact","status","focused","noHeading","fullContent","singleLine","showingTall","expandingSubject","showingLongSubject","toggleShowingTall","toggleExpandingSubject","toggleShowingLongSubject"],data:function(){var e=this.$store.getters.mergedConfig.renderMisskeyMarkdown;return{postLength:this.status.text.length,parseReadyDone:!1,renderMisskeyMarkdown:e}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Q(Object(n),!0).forEach((function(t){c()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Q(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({localCollapseSubjectDefault:function(){return this.mergedConfig.collapseMessageWithSubject},tallStatus:function(){return!this.singleLine&&!this.compact&&this.status.raw_html.split(/<p|<br/).length+this.postLength/80>20},longSubject:function(){return this.status.summary.length>240},mightHideBecauseSubject:function(){return!!this.status.summary&&this.localCollapseSubjectDefault},mightHideBecauseTall:function(){return this.tallStatus&&!(this.status.summary&&this.localCollapseSubjectDefault)},hideSubjectStatus:function(){return this.mightHideBecauseSubject&&!this.expandingSubject},hideTallStatus:function(){return this.mightHideBecauseTall&&!this.showingTall},showingMore:function(){return this.mightHideBecauseTall&&this.showingTall||this.mightHideBecauseSubject&&this.expandingSubject},attachmentTypes:function(){return this.status.attachments.map((function(e){return z.a.fileType(e.mimetype)}))}},Object(N.c)(["mergedConfig"])),components:{RichContent:S.a,MFMContent:Z},mounted:function(){var e=this;this.status.attentions&&this.status.attentions.forEach((function(t){var n=t.id;e.$store.dispatch("fetchUserIfMissing",n)}))},methods:{onParseReady:function(e){var t=this;if(!this.parseReadyDone){this.parseReadyDone=!0,this.$emit("parseReady",e);var n=e.writtenMentions,r=e.invisibleMentions;n.filter((function(e){return!e.notifying})).forEach((function(e){var n=e.content,r=e.url,i=n.replace(/<[^>]+?>/gi,"");if(i.startsWith("@")){var o=i.slice(1),s=r.replace(/^https?:\/\//,"").replace(/\/.+?$/,"");t.$store.dispatch("fetchUserIfMissing","".concat(o,"@").concat(s))}})),this.postLength=r.reduce((function(e,t){return e-t.textContent.length-1}),this.postLength)}},toggleShowMore:function(){this.mightHideBecauseTall?this.toggleShowingTall():this.mightHideBecauseSubject&&this.toggleExpandingSubject()},generateTagLink:function(e){return"/tag/".concat(e)}}};n(521);var te=x()(ee,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("RichContent"),c=Object(r.J)("MFMContent"),l=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("div",{class:Object(r.w)(["StatusBody",{"-compact":e.compact}])},[Object(r.k)("div",I,[e.status.summary_raw_html?(Object(r.D)(),Object(r.j)("div",{key:0,class:Object(r.w)(["summary-wrapper",{"-tall":e.longSubject&&!e.showingLongSubject}])},[Object(r.m)(a,{class:"media-body summary",html:e.status.summary_raw_html,emoji:e.status.emojis},null,8,["html","emoji"]),Object(r.W)(Object(r.k)("button",{class:"button-unstyled -link tall-subject-hider",onClick:t[0]||(t[0]=Object(r.Y)((...t)=>e.toggleShowingLongSubject&&e.toggleShowingLongSubject(...t),["prevent"]))},Object(r.O)(e.$t("status.hide_full_subject")),513),[[r.T,e.longSubject&&e.showingLongSubject]]),Object(r.W)(Object(r.k)("button",{class:"button-unstyled -link tall-subject-hider",onClick:t[1]||(t[1]=Object(r.Y)((...t)=>e.toggleShowingLongSubject&&e.toggleShowingLongSubject(...t),["prevent"]))},Object(r.O)(e.$t("status.show_full_subject")),513),[[r.T,e.longSubject&&!e.showingLongSubject]])],2)):Object(r.i)("",!0),Object(r.k)("div",{class:Object(r.w)([{"-tall-status":e.hideTallStatus},"text-wrapper"])},[Object(r.W)(Object(r.k)("button",{class:Object(r.w)(["button-unstyled -link tall-status-hider",{"-focused":e.focused}]),onClick:t[2]||(t[2]=Object(r.Y)((...t)=>e.toggleShowMore&&e.toggleShowMore(...t),["prevent"]))},Object(r.O)(e.$t("general.show_more")),3),[[r.T,e.hideTallStatus]]),e.hideSubjectStatus||e.singleLine&&e.status.summary_raw_html?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",$,[e.renderMisskeyMarkdown&&e.status.mfm_content?(Object(r.D)(),Object(r.h)(c,{key:0,class:"RichContent text media-body mfm-post-content",status:e.status},null,8,["status"])):(Object(r.D)(),Object(r.h)(a,{key:1,class:Object(r.w)([{"-single-line":e.singleLine},"text media-body"]),html:e.status.raw_html,emoji:e.status.emojis,"handle-links":!0,greentext:e.mergedConfig.greentext,attentions:e.status.attentions,onParseReady:e.onParseReady},null,8,["class","html","emoji","greentext","attentions","onParseReady"]))])),Object(r.W)(Object(r.k)("button",{class:"button-unstyled -link cw-status-hider",onClick:t[3]||(t[3]=Object(r.Y)((...t)=>e.toggleShowMore&&e.toggleShowMore(...t),["prevent"]))},[Object(r.l)(Object(r.O)(e.$t("status.show_content"))+" ",1),e.attachmentTypes.includes("image")?(Object(r.D)(),Object(r.h)(l,{key:0,icon:"image"})):Object(r.i)("",!0),e.attachmentTypes.includes("video")?(Object(r.D)(),Object(r.h)(l,{key:1,icon:"video"})):Object(r.i)("",!0),e.attachmentTypes.includes("audio")?(Object(r.D)(),Object(r.h)(l,{key:2,icon:"music"})):Object(r.i)("",!0),e.attachmentTypes.includes("unknown")?(Object(r.D)(),Object(r.h)(l,{key:3,icon:"file"})):Object(r.i)("",!0),e.status.poll&&e.status.poll.options?(Object(r.D)(),Object(r.h)(l,{key:4,icon:"poll-h"})):Object(r.i)("",!0),e.status.card?(Object(r.D)(),Object(r.h)(l,{key:5,icon:"link"})):Object(r.i)("",!0)],512),[[r.T,e.hideSubjectStatus]]),Object(r.W)(Object(r.k)("button",{class:"button-unstyled -link status-unhider",onClick:t[4]||(t[4]=Object(r.Y)((...t)=>e.toggleShowMore&&e.toggleShowMore(...t),["prevent"]))},Object(r.O)(e.tallStatus?e.$t("general.show_less"):e.$t("status.hide_content")),513),[[r.T,e.showingMore&&!e.fullContent]])],2)]),e.hideSubjectStatus?Object(r.i)("",!0):Object(r.I)(e.$slots,"default",{key:0})],2)}]]),ne=n(142);function re(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ie(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?re(Object(n),!0).forEach((function(t){c()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):re(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}H.c.add(q.r,q.D,q.Q,q.K,q.N,q.X);var oe,se=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},ae=function(e,t){var n=se(t),r="controlledToggle".concat(n),i="uncontrolled".concat(n);e[r]?e[r]():e[i]=!e[i]},ce={name:"StatusContent",props:["status","compact","focused","noHeading","fullContent","singleLine","controlledShowingTall","controlledExpandingSubject","controlledToggleShowingTall","controlledToggleExpandingSubject","controlledShowingLongSubject","controlledToggleShowingLongSubject"],data:function(){return{uncontrolledShowingTall:this.fullContent||this.inConversation&&this.focused,uncontrolledShowingLongSubject:!1,uncontrolledExpandingSubject:!this.$store.getters.mergedConfig.collapseMessageWithSubject}},computed:ie(ie(ie({},(oe=["showingTall","expandingSubject","showingLongSubject"],oe.reduce((function(e,t){var n=se(t),r="controlledToggle".concat(n),i="controlled".concat(n),o="uncontrolled".concat(n);return e[t]=function(){return void 0===this.$data[r]&&void 0===this.$props[r]||!this[r]?this[o]:this[i]},e}),{}))),{},{hideAttachments:function(){return this.mergedConfig.hideAttachments&&!this.inConversation||this.mergedConfig.hideAttachmentsInConv&&this.inConversation},nsfwClickthrough:function(){return!!this.status.nsfw&&(!this.status.summary||!this.localCollapseSubjectDefault)},attachmentSize:function(){return this.compact?"small":this.mergedConfig.hideAttachments&&!this.inConversation||this.mergedConfig.hideAttachmentsInConv&&this.inConversation||this.status.attachments.length>this.maxThumbnails?"hide":"normal"},maxThumbnails:function(){return this.mergedConfig.maxThumbnails}},Object(N.c)(["mergedConfig"])),Object(N.e)({currentUser:function(e){return e.users.currentUser}})),components:{Attachment:l.a,Poll:D,Gallery:T.a,LinkPreview:ne.a,StatusBody:te},methods:{toggleShowingTall:function(){ae(this,"showingTall")},toggleExpandingSubject:function(){ae(this,"expandingSubject")},toggleShowingLongSubject:function(){ae(this,"showingLongSubject")},setMedia:function(){var e=this,t="hide"===this.attachmentSize?this.status.attachments:this.galleryAttachments;return function(){return e.$store.dispatch("setMedia",t)}}}};n(523);const le=x()(ce,[["render",function(e,t,n,a,c,l){const u=Object(r.J)("Poll"),d=Object(r.J)("FAIcon"),p=Object(r.J)("gallery"),h=Object(r.J)("link-preview"),b=Object(r.J)("StatusBody");return Object(r.D)(),Object(r.j)("div",{class:Object(r.w)(["StatusContent",{"-compact":e.compact}])},[Object(r.I)(e.$slots,"header"),Object(r.m)(b,{status:e.status,compact:e.compact,"single-line":e.singleLine,"showing-tall":e.showingTall,"expanding-subject":e.expandingSubject,"showing-long-subject":e.showingLongSubject,"toggle-showing-tall":e.toggleShowingTall,"toggle-expanding-subject":e.toggleExpandingSubject,"toggle-showing-long-subject":e.toggleShowingLongSubject,onParseReady:t[2]||(t[2]=t=>e.$emit("parseReady",t))},{default:Object(r.V)(()=>[e.status.poll&&e.status.poll.options&&!e.compact?(Object(r.D)(),Object(r.j)("div",i,[Object(r.m)(u,{"base-poll":e.status.poll,emoji:e.status.emojis},null,8,["base-poll","emoji"])])):e.status.poll&&e.status.poll.options&&e.compact?(Object(r.D)(),Object(r.j)("div",o,[Object(r.m)(d,{icon:"poll-h",size:"2x"})])):Object(r.i)("",!0),0!==e.status.attachments.length?(Object(r.D)(),Object(r.h)(p,{key:2,class:"attachments media-body",nsfw:e.nsfwClickthrough,attachments:e.status.attachments,limit:e.compact?1:0,size:e.attachmentSize,onPlay:t[0]||(t[0]=t=>e.$emit("mediaplay",e.attachment.id)),onPause:t[1]||(t[1]=t=>e.$emit("mediapause",e.attachment.id))},null,8,["nsfw","attachments","limit","size"])):Object(r.i)("",!0),!e.status.card||e.noHeading||e.compact?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",s,[Object(r.m)(h,{card:e.status.card,size:e.attachmentSize,nsfw:e.nsfwClickthrough},null,8,["card","size","nsfw"])]))]),_:1},8,["status","compact","single-line","showing-tall","expanding-subject","showing-long-subject","toggle-showing-tall","toggle-expanding-subject","toggle-showing-long-subject"]),Object(r.I)(e.$slots,"footer")],2)}]]);t.a=le},,function(e,t,n){"use strict";n.d(t,"c",(function(){return r})),n.d(t,"b",(function(){return i})),n.d(t,"a",(function(){return o})),n.d(t,"d",(function(){return l})),n.d(t,"e",(function(){return u}));var r=6e4,i=60*r,o=24*i,s=7*o,a=30*o,c=365.25*o,l=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;"string"==typeof e&&(e=Date.parse(e));var n=Date.now()>e?Math.floor:Math.ceil,l=Math.abs(Date.now()-e),u={num:n(l/c),key:"time.years"};return l<1e3*t?(u.num=0,u.key="time.now"):l<r?(u.num=n(l/1e3),u.key="time.seconds"):l<i?(u.num=n(l/r),u.key="time.minutes"):l<o?(u.num=n(l/i),u.key="time.hours"):l<s?(u.num=n(l/o),u.key="time.days"):l<a?(u.num=n(l/s),u.key="time.weeks"):l<c&&(u.num=n(l/a),u.key="time.months"),1===u.num&&(u.key=u.key.slice(0,-1)),u},u=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=l(e,t);return n.key+="_short",n}},,,function(e,t,n){"use strict";var r=n(0);const i={key:0,ref:"canvas"},o=["alt","title","src","referrerpolicy"];var s={props:["src","referrerpolicy","mimetype","imageLoadError","imageLoadHandler","alt","height","width"],data:function(){return{stopGifs:this.$store.getters.mergedConfig.stopGifs}},computed:{animated:function(){return this.stopGifs&&("image/gif"===this.mimetype||this.src.endsWith(".gif"))},style:function(){var e=function(e){return/\d$/.test(e)?e+"px":e};return{height:this.height?e(this.height):null,width:this.width?e(this.width):null}}},methods:{onLoad:function(){var e=this.$refs.src;if(e){this.imageLoadHandler&&this.imageLoadHandler(e);var t=this.$refs.canvas;if(t){var n=e.naturalWidth,r=e.naturalHeight;t.width=n,t.height=r,t.getContext("2d").drawImage(e,0,0,n,r)}}},onError:function(){this.imageLoadError&&this.imageLoadError()}}},a=(n(507),n(4));const c=n.n(a)()(s,[["render",function(e,t,n,s,a,c){return Object(r.D)(),Object(r.j)("div",{class:Object(r.w)(["still-image",{animated:e.animated}]),style:Object(r.x)(e.style)},[e.animated?(Object(r.D)(),Object(r.j)("canvas",i,null,512)):Object(r.i)("",!0),(Object(r.D)(),Object(r.j)("img",{ref:"src",key:e.src,alt:e.alt,title:e.alt,src:e.src,referrerpolicy:e.referrerpolicy,onLoad:t[0]||(t[0]=(...t)=>e.onLoad&&e.onLoad(...t)),onError:t[1]||(t[1]=(...t)=>e.onError&&e.onError(...t))},null,40,o)),Object(r.I)(e.$slots,"default")],6)}]]);t.a=c},function(e,t,n){"use strict";var r=n(0);const i=["disabled","checked","indeterminate"],o=Object(r.k)("i",{class:"checkbox-indicator"},null,-1),s={key:0,class:"label"};var a={emits:["update:modelValue"],props:["modelValue","indeterminate","disabled"]},c=(n(502),n(4));const l=n.n(c)()(a,[["render",function(e,t,n,a,c,l){return Object(r.D)(),Object(r.j)("label",{class:Object(r.w)(["checkbox",{disabled:n.disabled,indeterminate:n.indeterminate}])},[Object(r.k)("input",{type:"checkbox",disabled:n.disabled,checked:n.modelValue,indeterminate:n.indeterminate,onChange:t[0]||(t[0]=t=>e.$emit("update:modelValue",t.target.checked))},null,40,i),o,e.$slots.default?(Object(r.D)(),Object(r.j)("span",s,[Object(r.I)(e.$slots,"default")])):Object(r.i)("",!0)],2)}]]);t.a=l},function(e,t,n){"use strict";var r=n(0);const i=["disabled","value"],o=Object(r.l)(" "+Object(r.O)(" ")+" ");var s=n(6),a=n(3);s.c.add(a.n);var c={emits:["update:modelValue"],props:["modelValue","disabled","unstyled","kind"]},l=(n(505),n(4));const u=n.n(l)()(c,[["render",function(e,t,n,s,a,c){const l=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("label",{class:Object(r.w)(["Select input",{disabled:e.disabled,unstyled:e.unstyled}])},[Object(r.k)("select",{disabled:e.disabled,value:e.modelValue,onChange:t[0]||(t[0]=t=>e.$emit("update:modelValue",t.target.value))},[Object(r.I)(e.$slots,"default")],40,i),o,Object(r.m)(l,{class:"select-down-icon",icon:"chevron-down"})],2)}]]);t.a=u},function(e,t,n){"use strict";var r=n(0);const i={class:"basic-user-card"},o={key:0,class:"basic-user-card-expanded-content"},s={key:1,class:"basic-user-card-collapsed-content"},a=["title"];var c=n(35),l=n(22),u=n(25),d=n(23),p={props:["user"],data:function(){return{userExpanded:!1}},components:{UserCard:c.a,UserAvatar:l.default,RichContent:u.a},methods:{toggleUserExpanded:function(){this.userExpanded=!this.userExpanded},userProfileLink:function(e){return Object(d.a)(e.id,e.screen_name,this.$store.state.instance.restrictedNicknames)}}},h=(n(577),n(4));const b=n.n(h)()(p,[["render",function(e,t,n,c,l,u){const d=Object(r.J)("UserAvatar"),p=Object(r.J)("router-link"),h=Object(r.J)("UserCard"),b=Object(r.J)("RichContent");return Object(r.D)(),Object(r.j)("div",i,[Object(r.m)(p,{to:e.userProfileLink(e.user)},{default:Object(r.V)(()=>[Object(r.m)(d,{class:"avatar",user:e.user,onClick:Object(r.Y)(e.toggleUserExpanded,["prevent"])},null,8,["user","onClick"])]),_:1},8,["to"]),e.userExpanded?(Object(r.D)(),Object(r.j)("div",o,[Object(r.m)(h,{"user-id":e.user.id,rounded:!0,bordered:!0},null,8,["user-id"])])):(Object(r.D)(),Object(r.j)("div",s,[Object(r.k)("div",{title:e.user.name,class:"basic-user-card-user-name"},[Object(r.m)(b,{class:"basic-user-card-user-name-value",html:e.user.name,emoji:e.user.emoji},null,8,["html","emoji"])],8,a),Object(r.k)("div",null,[Object(r.m)(p,{class:"basic-user-card-screen-name",to:e.userProfileLink(e.user)},{default:Object(r.V)(()=>[Object(r.l)(" @"+Object(r.O)(e.user.screen_name_ui),1)]),_:1},8,["to"])]),Object(r.I)(e.$slots,"default")]))])}]]);t.a=b},function(e,t,n){"use strict";n.d(t,"a",(function(){return f})),n.d(t,"e",(function(){return j})),n.d(t,"f",(function(){return y})),n.d(t,"b",(function(){return _})),n.d(t,"c",(function(){return S})),n.d(t,"d",(function(){return C}));var r=n(5),i=n.n(r),o=n(11),s=n.n(o),a=n(28),c=n.n(a),l=n(12),u=n.n(l),d=n(20),p=n(18),h=n(36);function b(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function m(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?b(Object(n),!0).forEach((function(t){i()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):b(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var f=3,O=function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:h.b,n=[e],r=t[e];r;)n.unshift(r),r=t[r];return n},j=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e,n=arguments.length>2?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0,i=arguments.length>4?arguments[4]:void 0;return O(e).map((function(o){return[o===e?r[t]:r[o],o===e?i[n]||1:i[o]]}))},g=function(e,t){var n=t[e];if("string"==typeof n&&n.startsWith("--"))return[n.substring(2)];if(null===n)return[];var r=n.depends,i=n.layer,o=n.variant,s=i?O(i).map((function(e){return e===i?o||i:e})):[];return Array.isArray(r)?[].concat(u()(r),u()(s)):u()(s)},v=function(e){return"object"===c()(e)?e:{depends:e.startsWith("--")?[e.substring(2)]:[],default:e.startsWith("#")?e:void 0}},y=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:h.c,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:g,r=v(t[e]);if(null!==r.opacity){if(r.opacity)return r.opacity;var i=function r(i){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[e],s=n(i,t)[0];if(void 0!==s){var a=t[s];if(void 0!==a)return a.opacity||null===a?a.opacity:a.depends&&o.includes(s)?r(s,[].concat(u()(o),[s])):null}};return r.depends?i(e):void 0}},w=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:h.c,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:g,r=v(t[e]);if(h.b[e])return e;if(null!==r.layer){if(r.layer)return r.layer;var i=function r(i){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[e],s=n(i,t)[0];if(void 0!==s){var a=t[s];if(void 0!==a)return a.layer||null===a?a.layer:a.depends?r(a,[].concat(u()(o),[s])):null}};return r.depends?i(e):void 0}},k=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:h.c,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:g,n=Object.keys(e),r=new Set(n),i=new Set,o=new Set,s=u()(n),a=[],c=function n(s){if(r.has(s))r.delete(s),i.add(s),t(s,e).forEach(n),i.delete(s),o.add(s),a.push(s);else if(i.has(s))console.debug("Cyclic depenency in topoSort, ignoring"),a.push(s);else if(!o.has(s))throw new Error("Unintended condition in topoSort!")};s.length>0;)c(s.pop());return a.map((function(e,t){return{data:e,index:t}})).sort((function(n,r){var i=n.data,o=n.index,s=r.data,a=r.index,c=t(i,e).length,l=t(s,e).length;return c===l||0!==l&&0!==c?o-a:0===c&&0!==l?-1:0===l&&0!==c?1:void 0})).map((function(e){return e.data}))}(Object.entries(h.c).sort((function(e,t){var n=s()(e,2),r=(n[0],n[1]),i=s()(t,2),o=(i[0],i[1]);return(r&&r.priority||0)-(o&&o.priority||0)})).reduce((function(e,t){var n=s()(t,2),r=n[0],o=n[1];return m(m({},e),{},i()({},r,o))}),{})),_=Object.entries(h.c).reduce((function(e,t){var n=s()(t,2),r=n[0],o=(n[1],y(r,h.c,g));return o?m(m({},e),{},i()({},o,{defaultValue:h.a[o]||1,affectedSlots:[].concat(u()(e[o]&&e[o].affectedSlots||[]),[r])})):e}),{}),S=function(e,t,n){if("string"!=typeof e||!e.startsWith("--"))return e;var r=null,i=e.split(/,/g).map((function(e){return e.trim()})),o=s()(i,2),a=o[0],c=o[1];return r=t(a.substring(2)),c&&(r=Object(d.brightness)(Number.parseFloat(c)*n,r).rgb),r},C=function(e,t){return k.reduce((function(n,r){var o=n.colors,s=n.opacity,a=e[r],c=v(h.c[r]),l=g(r,h.c),b=!!c.textColor,f=c.variant||c.layer,O=null;O=b?Object(p.b)(m({},o[l[0]]||Object(d.convert)(e[r]||"#FF00FF").rgb),j(w(r)||"bg",f||"bg",y(f),o,s)):f&&f!==r?o[f]||Object(d.convert)(e[f]).rgb:o.bg||Object(d.convert)(e.bg);var k=Object(p.h)(O)<.5?1:-1,C=null;if(a){var P=a;if("transparent"===P){var x=j(w(r),r,y(r)||r,o,s).slice(0,-1);P=m(m({},Object(p.b)(Object(d.convert)("#FF00FF").rgb,x)),{},{a:0})}else"string"==typeof a&&a.startsWith("--")?P=S(a,(function(t){return o[t]||e[t]}),k):"string"==typeof a&&a.startsWith("#")&&(P=Object(d.convert)(P).rgb);C=m({},P)}else if(c.default)C=Object(d.convert)(c.default).rgb;else{var D=c.color||function(e,t){return m({},t)};if(c.textColor)if("bw"===c.textColor)C=Object(d.contrastRatio)(O).rgb;else{var T=m({},o[l[0]]);c.color&&(T=D.apply(void 0,[k].concat(u()(l.map((function(e){return m({},o[e])})))))),C=Object(p.e)(O,m({},T),"preserve"===c.textColor)}else C=D.apply(void 0,[k].concat(u()(l.map((function(e){return m({},o[e])})))))}if(!C)throw new Error("Couldn't generate color for "+r);var I=c.opacity||y(r),$=c.opacity;if(null===$)C.a=1;else if("transparent"===a)C.a=0;else{var z=$&&void 0!==t[I],M=l[0],U=M&&o[M];$||!U||c.textColor||null===$?U||I?U&&0===U.a?C.a=0:C.a=Number(z?t[I]:(_[I]||{}).defaultValue):delete C.a:C.a=U.a}return(Number.isNaN(C.a)||void 0===C.a)&&(C.a=1),I?{colors:m(m({},o),{},i()({},r,C)),opacity:m(m({},s),{},i()({},I,C.a))}:{colors:m(m({},o),{},i()({},r,C)),opacity:s}}),{colors:{},opacity:{}})}},,,function(e,t,n){"use strict";var r=n(0);const i={ref:"form",class:"post-status-form"},o={class:"form-group"},s={key:1,class:"visibility-notice notice-dismissible"},a={key:2,class:"visibility-notice notice-dismissible"},c={key:3,class:"visibility-notice notice-dismissible"},l={key:4,class:"visibility-notice"},u={key:0},d={key:1},p={key:5,class:"preview-heading faint"},h={class:"preview-spinner"},b={key:6,class:"preview-container"},m={key:0,class:"preview-status"},f={key:1,class:"preview-status preview-error"},O=["placeholder","disabled"],j=["placeholder","disabled"],g={key:8,class:"visibility-tray"},v={key:0,class:"text-format"},y=["value"],w={key:1,class:"text-format"},k={class:"only-format"},_={ref:"bottom",class:"form-bottom"},S={class:"form-bottom-left"},C=["title"],P=["title"],x={key:0,disabled:"",class:"btn button-default"},D={key:1,disabled:"",class:"btn button-default"},T=["disabled"],I={key:1,class:"alert error"},$={key:3,class:"upload_settings"};var z=n(13),M=n.n(z),U=n(5),F=n.n(U),E=n(12),L=n.n(E),R=n(56),A=n.n(R),N=n(136),B=n.n(N),V=n(21),H=n.n(V),q=n(224),J=n.n(q),W=n(10),Y=n.n(W),G=n(76);const K=["title"],X=["disabled"];var Z=n(96),Q=n(6),ee=n(3);function te(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return ne(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return ne(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function ne(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}Q.c.add(ee.tb,ee.r);var re={data:function(){return{uploadCount:0,uploadReady:!0}},computed:{uploading:function(){return this.uploadCount>0}},methods:{uploadFile:function(e){var t=this,n=this.$store;if(e.size>n.state.instance.uploadlimit){var r=Z.a.fileSizeFormat(e.size),i=Z.a.fileSizeFormat(n.state.instance.uploadlimit);t.$emit("upload-failed","file_too_big",{filesize:r.num,filesizeunit:r.unit,allowedsize:i.num,allowedsizeunit:i.unit})}else{var o=new FormData;o.append("file",e),t.$emit("uploading"),t.uploadCount++,G.a.uploadMedia({store:n,formData:o}).then((function(e){t.$emit("uploaded",e),t.decreaseUploadCount()}),(function(e){t.$emit("upload-failed","default"),t.decreaseUploadCount()}))}},decreaseUploadCount:function(){this.uploadCount--,0===this.uploadCount&&this.$emit("all-uploaded")},clearFile:function(){var e=this;this.uploadReady=!1,this.$nextTick((function(){e.uploadReady=!0}))},multiUpload:function(e){var t,n=te(e);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.uploadFile(r)}}catch(e){n.e(e)}finally{n.f()}},change:function(e){var t=e.target;this.multiUpload(t.files)}},props:["dropFiles","disabled"],watch:{dropFiles:function(e){this.uploading||this.multiUpload(e)}}},ie=(n(500),n(4)),oe=n.n(ie);var se=oe()(re,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("label",{class:Object(r.w)(["media-upload",{disabled:e.disabled}]),title:e.$t("tool_tip.media_upload")},[e.uploading?(Object(r.D)(),Object(r.h)(a,{key:0,class:"progress-icon",icon:"circle-notch",spin:""})):Object(r.i)("",!0),e.uploading?Object(r.i)("",!0):(Object(r.D)(),Object(r.h)(a,{key:1,class:"new-icon",icon:"upload"})),e.uploadReady?(Object(r.D)(),Object(r.j)("input",{key:2,class:"hidden-input-file",disabled:e.disabled,type:"file",multiple:"true",onChange:t[0]||(t[0]=(...t)=>e.change&&e.change(...t))},null,40,X)):Object(r.i)("",!0)],10,K)}]]),ae=n(175),ce=n(310);const le={key:0,class:"poll-form"},ue={class:"input-container"},de=["id","onUpdate:modelValue","placeholder","maxlength","onKeydown"],pe=["onClick"],he={class:"poll-type-expiry"},be=["title"],me={value:"single"},fe={value:"multiple"},Oe=["title"],je=["min","max"],ge=Object(r.l)(" "+Object(r.O)(" ")+" "),ve=["value"];var ye=n(98),we=n.n(ye),ke=n(47),_e=n(52);Q.c.add(ee.rb,ee.V);var Se={components:{Select:_e.a},name:"PollForm",props:["visible"],data:function(){return{pollType:"single",options:["",""],expiryAmount:10,expiryUnit:"minutes"}},computed:{pollLimits:function(){return this.$store.state.instance.pollLimits},maxOptions:function(){return this.pollLimits.max_options},maxLength:function(){return this.pollLimits.max_option_chars},expiryUnits:function(){var e=this,t=this.convertExpiryFromUnit;return["minutes","hours","days"].filter((function(n){return e.pollLimits.max_expiration>=t(n,1)}))},minExpirationInCurrentUnit:function(){return Math.ceil(this.convertExpiryToUnit(this.expiryUnit,this.pollLimits.min_expiration))},maxExpirationInCurrentUnit:function(){return Math.floor(this.convertExpiryToUnit(this.expiryUnit,this.pollLimits.max_expiration))}},methods:{clear:function(){this.pollType="single",this.options=["",""],this.expiryAmount=10,this.expiryUnit="minutes"},nextOption:function(e){var t=this.$el.querySelector("#poll-".concat(e+1));t?t.focus():this.addOption()&&this.$nextTick((function(){this.nextOption(e)}))},addOption:function(){return this.options.length<this.maxOptions&&(this.options.push(""),!0)},deleteOption:function(e,t){this.options.length>2&&(this.options.splice(e,1),this.updatePollToParent())},convertExpiryToUnit:function(e,t){switch(e){case"minutes":return 1e3*t/ke.c;case"hours":return 1e3*t/ke.b;case"days":return 1e3*t/ke.a}},convertExpiryFromUnit:function(e,t){switch(e){case"minutes":return.001*t*ke.c;case"hours":return.001*t*ke.b;case"days":return.001*t*ke.a}},expiryAmountChange:function(){this.expiryAmount=Math.max(this.minExpirationInCurrentUnit,this.expiryAmount),this.expiryAmount=Math.min(this.maxExpirationInCurrentUnit,this.expiryAmount),this.updatePollToParent()},updatePollToParent:function(){var e=this.convertExpiryFromUnit(this.expiryUnit,this.expiryAmount),t=we()(this.options.filter((function(e){return""!==e})));t.length<2?this.$emit("update-poll",{error:this.$t("polls.not_enough_options")}):this.$emit("update-poll",{options:t,multiple:"multiple"===this.pollType,expiresIn:e})}}};n(506);var Ce=oe()(Se,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon"),c=Object(r.J)("Select");return e.visible?(Object(r.D)(),Object(r.j)("div",le,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.options,(n,i)=>(Object(r.D)(),Object(r.j)("div",{key:i,class:"poll-option"},[Object(r.k)("div",ue,[Object(r.W)(Object(r.k)("input",{id:"poll-"+i,"onUpdate:modelValue":t=>e.options[i]=t,size:"1",class:"poll-option-input",type:"text",placeholder:e.$t("polls.option"),maxlength:e.maxLength,onChange:t[0]||(t[0]=(...t)=>e.updatePollToParent&&e.updatePollToParent(...t)),onKeydown:Object(r.X)(Object(r.Y)(t=>e.nextOption(i),["stop","prevent"]),["enter"])},null,40,de),[[r.S,e.options[i]]])]),e.options.length>2?(Object(r.D)(),Object(r.j)("button",{key:0,class:"delete-option button-unstyled -hover-highlight",onClick:t=>e.deleteOption(i)},[Object(r.m)(a,{icon:"times"})],8,pe)):Object(r.i)("",!0)]))),128)),e.options.length<e.maxOptions?(Object(r.D)(),Object(r.j)("button",{key:0,class:"add-option faint button-unstyled -hover-highlight",onClick:t[1]||(t[1]=(...t)=>e.addOption&&e.addOption(...t))},[Object(r.m)(a,{icon:"plus",size:"sm"}),Object(r.l)(" "+Object(r.O)(e.$t("polls.add_option")),1)])):Object(r.i)("",!0),Object(r.k)("div",he,[Object(r.k)("div",{class:"poll-type",title:e.$t("polls.type")},[Object(r.m)(c,{modelValue:e.pollType,"onUpdate:modelValue":t[2]||(t[2]=t=>e.pollType=t),class:"poll-type-select",unstyled:"true",onChange:e.updatePollToParent},{default:Object(r.V)(()=>[Object(r.k)("option",me,Object(r.O)(e.$t("polls.single_choice")),1),Object(r.k)("option",fe,Object(r.O)(e.$t("polls.multiple_choices")),1)]),_:1},8,["modelValue","onChange"])],8,be),Object(r.k)("div",{class:"poll-expiry",title:e.$t("polls.expiry")},[Object(r.W)(Object(r.k)("input",{"onUpdate:modelValue":t[3]||(t[3]=t=>e.expiryAmount=t),type:"number",class:"expiry-amount hide-number-spinner",min:e.minExpirationInCurrentUnit,max:e.maxExpirationInCurrentUnit,onChange:t[4]||(t[4]=(...t)=>e.expiryAmountChange&&e.expiryAmountChange(...t))},null,40,je),[[r.S,e.expiryAmount]]),ge,Object(r.m)(c,{modelValue:e.expiryUnit,"onUpdate:modelValue":t[5]||(t[5]=t=>e.expiryUnit=t),unstyled:"true",class:"expiry-unit",onChange:e.expiryAmountChange},{default:Object(r.V)(()=>[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.expiryUnits,t=>(Object(r.D)(),Object(r.j)("option",{key:t,value:t},Object(r.O)(e.$t(`time.${t}_short`,[""])),9,ve))),128))]),_:1},8,["modelValue","onChange"])],8,Oe)])])):Object(r.i)("",!0)}]]),Pe=n(58),xe=n(78),De=n(45),Te=n(33),Ie=n(137),$e=n(167),ze=n(8),Me=n(51);function Ue(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Fe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ue(Object(n),!0).forEach((function(t){F()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ue(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Q.c.add(ee.ib,ee.X,ee.tb,ee.g,ee.rb,ee.r);var Ee=function(e){return Number(e.substring(0,e.length-2))},Le={props:["replyTo","repliedUser","attentions","copyMessageScope","subject","disableSubject","disableScopeSelector","disableNotice","disableLockWarning","disablePolls","disableSensitivityCheckbox","disableSubmit","disablePreview","placeholder","maxHeight","postHandler","preserveFocus","autoFocus","fileLimit","submitOnEnter","emojiPickerPlacement","optimisticPosting"],emits:["posted","resize","mediaplay","mediapause"],components:{MediaUpload:se,EmojiInput:ce.a,PollForm:Ce,ScopeSelector:ae.a,Checkbox:Me.a,Select:_e.a,Attachment:Pe.a,StatusContent:De.a,Gallery:xe.a},mounted:function(){if(this.updateIdempotencyKey(),this.resize(this.$refs.textarea),this.replyTo){var e=this.$refs.textarea.value.length;this.$refs.textarea.setSelectionRange(e,e)}(this.replyTo||this.autoFocus)&&this.$refs.textarea.focus()},data:function(){var e=this.$route.query.message||"",t=this.$store.getters.mergedConfig.scopeCopy;if(this.replyTo){var n=this.$store.state.users.currentUser;e=function(e,t){var n=e.user,r=e.attentions,i=void 0===r?[]:r,o=L()(i);o.unshift(n),o=B()(o,"id"),o=J()(o,{id:t.id});var s=H()(o,(function(e){return"@".concat(e.screen_name)}));return s.length>0?s.join(" ")+" ":""}({user:this.repliedUser,attentions:this.attentions},n)}var r=this.copyMessageScope&&t||"direct"===this.copyMessageScope?this.copyMessageScope:this.$store.state.users.currentUser.default_scope,i=this.$store.getters.mergedConfig,o=i.postContentType,s=i.sensitiveByDefault,a=i.sensitiveIfSubject;return{dropFiles:[],uploadingFiles:!1,error:null,posting:!1,highlighted:0,newStatus:{spoilerText:this.subject||"",status:e,sensitiveIfSubject:a,nsfw:!!s,files:[],poll:{},mediaDescriptions:{},visibility:r,contentType:o},caret:0,pollFormVisible:!1,showDropIcon:"hide",dropStopTimeout:null,preview:null,previewLoading:!1,emojiInputShown:!1,idempotencyKey:""}},computed:Fe(Fe({users:function(){return this.$store.state.users.users},userDefaultScope:function(){return this.$store.state.users.currentUser.default_scope},showAllScopes:function(){return!this.mergedConfig.minimalScopesMode},emojiUserSuggestor:function(){return Object($e.a)({emoji:[].concat(L()(this.$store.state.instance.emoji),L()(this.$store.state.instance.customEmoji)),store:this.$store})},emojiSuggestor:function(){return Object($e.a)({emoji:[].concat(L()(this.$store.state.instance.emoji),L()(this.$store.state.instance.customEmoji))})},emoji:function(){return this.$store.state.instance.emoji||[]},customEmoji:function(){return this.$store.state.instance.customEmoji||[]},statusLength:function(){return this.newStatus.status.length},spoilerTextLength:function(){return this.newStatus.spoilerText.length},statusLengthLimit:function(){return this.$store.state.instance.textlimit},hasStatusLengthLimit:function(){return this.statusLengthLimit>0},charactersLeft:function(){return this.statusLengthLimit-(this.statusLength+this.spoilerTextLength)},isOverLengthLimit:function(){return this.hasStatusLengthLimit&&this.charactersLeft<0},minimalScopesMode:function(){return this.$store.state.instance.minimalScopesMode},alwaysShowSubject:function(){return this.mergedConfig.alwaysShowSubjectInput},postFormats:function(){return this.$store.state.instance.postFormats||[]},safeDMEnabled:function(){return this.$store.state.instance.safeDM},pollsAvailable:function(){return this.$store.state.instance.pollsAvailable&&this.$store.state.instance.pollLimits.max_options>=2&&!0!==this.disablePolls},hideScopeNotice:function(){return this.disableNotice||this.$store.getters.mergedConfig.hideScopeNotice},pollContentError:function(){return this.pollFormVisible&&this.newStatus.poll&&this.newStatus.poll.error},showPreview:function(){return!this.disablePreview&&(!!this.preview||this.previewLoading)},emptyStatus:function(){return""===this.newStatus.status.trim()&&0===this.newStatus.files.length},uploadFileLimitReached:function(){return this.newStatus.files.length>=this.fileLimit}},Object(ze.c)(["mergedConfig"])),Object(ze.e)({mobileLayout:function(e){return e.interface.mobileLayout}})),watch:{newStatus:{deep:!0,handler:function(){this.statusChanged()}}},methods:{statusChanged:function(){this.autoPreview(),this.updateIdempotencyKey()},clearStatus:function(){var e=this,t=this.newStatus;this.newStatus={status:"",spoilerText:"",files:[],visibility:t.visibility,contentType:t.contentType,poll:{},mediaDescriptions:{}},this.pollFormVisible=!1,this.$refs.mediaUpload&&this.$refs.mediaUpload.clearFile(),this.clearPollForm(),this.preserveFocus&&this.$nextTick((function(){e.$refs.textarea.focus()}));var n=this.$el.querySelector("textarea");n.style.height="auto",n.style.height=void 0,this.error=null,this.preview&&this.previewStatus()},postStatus:function(e,t){var n=arguments,r=this;return M()(Y.a.mark((function i(){var o,s,a;return Y.a.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(n.length>2&&void 0!==n[2]?n[2]:{},o=r.$store.getters.mergedConfig.sensitiveIfSubject,!r.posting||r.optimisticPosting){i.next=4;break}return i.abrupt("return");case 4:if(!r.disableSubmit){i.next=6;break}return i.abrupt("return");case 6:if(!r.emojiInputShown){i.next=8;break}return i.abrupt("return");case 8:if(r.submitOnEnter&&(e.stopPropagation(),e.preventDefault()),!r.optimisticPosting||!r.emptyStatus&&!r.isOverLengthLimit){i.next=11;break}return i.abrupt("return");case 11:if(!r.emptyStatus){i.next=14;break}return r.error=r.$t("post_status.empty_status_error"),i.abrupt("return");case 14:if(s=r.pollFormVisible?r.newStatus.poll:{},!r.pollContentError){i.next=18;break}return r.error=r.pollContentError,i.abrupt("return");case 18:return r.posting=!0,i.prev=19,i.next=22,r.setAllMediaDescriptions();case 22:i.next=29;break;case 24:return i.prev=24,i.t0=i.catch(19),r.error=r.$t("post_status.media_description_error"),r.posting=!1,i.abrupt("return");case 29:a={status:t.status,spoilerText:t.spoilerText||null,visibility:t.visibility,sensitive:t.nsfw||o&&t.spoilerText,media:t.files,store:r.$store,inReplyToStatusId:r.replyTo,contentType:t.contentType,poll:s,idempotencyKey:r.idempotencyKey},(r.postHandler?r.postHandler:G.a.postStatus)(a).then((function(e){e.error?r.error=e.error:(r.clearStatus(),r.$emit("posted",e)),r.posting=!1}));case 32:case"end":return i.stop()}}),i,null,[[19,24]])})))()},previewStatus:function(){var e=this;if(this.emptyStatus&&""===this.newStatus.spoilerText.trim())return this.preview={error:this.$t("post_status.preview_empty")},void(this.previewLoading=!1);var t=this.newStatus;this.previewLoading=!0,G.a.postStatus({status:t.status,spoilerText:t.spoilerText||null,visibility:t.visibility,sensitive:t.nsfw,media:[],store:this.$store,inReplyToStatusId:this.replyTo,contentType:t.contentType,poll:{},preview:!0}).then((function(t){e.previewLoading&&(t.error?e.preview={error:t.error}:e.preview=t)})).catch((function(t){e.preview={error:t}})).finally((function(){e.previewLoading=!1}))},debouncePreviewStatus:A()((function(){this.previewStatus()}),500),autoPreview:function(){this.preview&&(this.previewLoading=!0,this.debouncePreviewStatus())},closePreview:function(){this.preview=null,this.previewLoading=!1},togglePreview:function(){this.showPreview?this.closePreview():this.previewStatus()},addMediaFile:function(e){this.newStatus.files.push(e),this.$emit("resize",{delayed:!0})},removeMediaFile:function(e){var t=this.newStatus.files.indexOf(e);this.newStatus.files.splice(t,1),this.$emit("resize")},editAttachment:function(e,t){this.newStatus.mediaDescriptions[e.id]=t},shiftUpMediaFile:function(e){var t=this.newStatus.files,n=this.newStatus.files.indexOf(e);t.splice(n,1),t.splice(n-1,0,e)},shiftDnMediaFile:function(e){var t=this.newStatus.files,n=this.newStatus.files.indexOf(e);t.splice(n,1),t.splice(n+1,0,e)},uploadFailed:function(e,t){t=t||{},this.error=this.$t("upload.error.base")+" "+this.$t("upload.error."+e,t)},startedUploadingFiles:function(){this.uploadingFiles=!0},finishedUploadingFiles:function(){this.$emit("resize"),this.uploadingFiles=!1},type:function(e){return Te.a.fileType(e.mimetype)},paste:function(e){this.autoPreview(),this.resize(e),e.clipboardData.files.length>0&&(e.preventDefault(),this.dropFiles=[e.clipboardData.files[0]])},fileDrop:function(e){e.dataTransfer&&e.dataTransfer.types.includes("Files")&&(e.preventDefault(),this.dropFiles=e.dataTransfer.files,clearTimeout(this.dropStopTimeout),this.showDropIcon="hide")},fileDragStop:function(e){var t=this;clearTimeout(this.dropStopTimeout),this.showDropIcon="fade",this.dropStopTimeout=setTimeout((function(){return t.showDropIcon="hide"}),500)},fileDrag:function(e){e.dataTransfer.dropEffect=this.uploadFileLimitReached?"none":"copy",e.dataTransfer&&e.dataTransfer.types.includes("Files")&&(clearTimeout(this.dropStopTimeout),this.showDropIcon="show")},onEmojiInputInput:function(e){var t=this;this.$nextTick((function(){t.resize(t.$refs.textarea)}))},resize:function(e){var t=e.target||e;if(t instanceof window.Element){if(""===t.value)return t.style.height=null,this.$emit("resize"),void this.$refs["emoji-input"].resize();var n=this.$refs.form,r=this.$refs.bottom,i=window.getComputedStyle(r)["padding-bottom"],o=Ee(i),s=this.$el.closest(".column.-scrollable")||this.$el.closest(".post-form-modal-view")||window,a=window.getComputedStyle(t)["padding-top"],c=window.getComputedStyle(t)["padding-bottom"],l=Ee(a)+Ee(c),u=Ee(t.style.height),d=s===window?s.scrollY:s.scrollTop,p=s===window?s.innerHeight:s.offsetHeight,h=d+p;t.style.height="auto";var b=Math.floor(t.scrollHeight-l),m=this.maxHeight?Math.min(b,this.maxHeight):b;Math.abs(m-u)<=1&&(m=u),t.style.height="".concat(m,"px"),this.$emit("resize",m);var f=r.offsetHeight+Object(Ie.a)(r,s).top+o,O=h<f,j=p<n.offsetHeight,g=f-h,v=O&&!(j&&this.$refs.textarea.selectionStart!==this.$refs.textarea.value.length)?g:0,y=Math.round(d+v);s===window?s.scroll(0,y):s.scrollTop=y,this.$refs["emoji-input"].resize()}},showEmojiPicker:function(){this.$refs.textarea.focus(),this.$refs["emoji-input"].triggerShowPicker()},clearError:function(){this.error=null},changeVis:function(e){this.newStatus.visibility=e},togglePollForm:function(){this.pollFormVisible=!this.pollFormVisible},setPoll:function(e){this.newStatus.poll=e},clearPollForm:function(){this.$refs.pollForm&&this.$refs.pollForm.clear()},dismissScopeNotice:function(){this.$store.dispatch("setOption",{name:"hideScopeNotice",value:!0})},setMediaDescription:function(e){var t=this.newStatus.mediaDescriptions[e];if(t&&""!==t.trim())return G.a.setMediaDescription({store:this.$store,id:e,description:t})},setAllMediaDescriptions:function(){var e=this,t=this.newStatus.files.map((function(e){return e.id}));return Promise.all(t.map((function(t){return e.setMediaDescription(t)})))},handleEmojiInputShow:function(e){this.emojiInputShown=e},updateIdempotencyKey:function(){this.idempotencyKey=Date.now().toString()},openProfileTab:function(){this.$store.dispatch("openSettingsModalTab","profile")}}};n(524);const Re=oe()(Le,[["render",function(e,t,n,z,M,U){const F=Object(r.J)("i18n-t"),E=Object(r.J)("FAIcon"),L=Object(r.J)("StatusContent"),R=Object(r.J)("EmojiInput"),A=Object(r.J)("scope-selector"),N=Object(r.J)("Select"),B=Object(r.J)("poll-form"),V=Object(r.J)("media-upload"),H=Object(r.J)("gallery"),q=Object(r.J)("Checkbox");return Object(r.D)(),Object(r.j)("div",i,[Object(r.k)("form",{autocomplete:"off",onSubmit:t[26]||(t[26]=Object(r.Y)(()=>{},["prevent"])),onDragover:t[27]||(t[27]=Object(r.Y)((...t)=>e.fileDrag&&e.fileDrag(...t),["prevent"]))},[Object(r.k)("div",o,[e.$store.state.users.currentUser.locked||"private"!=e.newStatus.visibility||e.disableLockWarning?Object(r.i)("",!0):(Object(r.D)(),Object(r.h)(F,{key:0,keypath:"post_status.account_not_locked_warning",tag:"p",class:"visibility-notice",scope:"global"},{default:Object(r.V)(()=>[Object(r.k)("button",{class:"button-unstyled -link",onClick:t[0]||(t[0]=(...t)=>e.openProfileTab&&e.openProfileTab(...t))},Object(r.O)(e.$t("post_status.account_not_locked_warning_link")),1)]),_:1})),e.hideScopeNotice||"public"!==e.newStatus.visibility?e.hideScopeNotice||"unlisted"!==e.newStatus.visibility?!e.hideScopeNotice&&"private"===e.newStatus.visibility&&e.$store.state.users.currentUser.locked?(Object(r.D)(),Object(r.j)("p",c,[Object(r.k)("span",null,Object(r.O)(e.$t("post_status.scope_notice.private")),1),Object(r.k)("a",{class:"fa-scale-110 fa-old-padding dismiss",onClick:t[3]||(t[3]=Object(r.Y)(t=>e.dismissScopeNotice(),["prevent"]))},[Object(r.m)(E,{icon:"times"})])])):"direct"===e.newStatus.visibility?(Object(r.D)(),Object(r.j)("p",l,[e.safeDMEnabled?(Object(r.D)(),Object(r.j)("span",u,Object(r.O)(e.$t("post_status.direct_warning_to_first_only")),1)):(Object(r.D)(),Object(r.j)("span",d,Object(r.O)(e.$t("post_status.direct_warning_to_all")),1))])):Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("p",a,[Object(r.k)("span",null,Object(r.O)(e.$t("post_status.scope_notice.unlisted")),1),Object(r.k)("a",{class:"fa-scale-110 fa-old-padding dismiss",onClick:t[2]||(t[2]=Object(r.Y)(t=>e.dismissScopeNotice(),["prevent"]))},[Object(r.m)(E,{icon:"times"})])])):(Object(r.D)(),Object(r.j)("p",s,[Object(r.k)("span",null,Object(r.O)(e.$t("post_status.scope_notice.public")),1),Object(r.k)("a",{class:"fa-scale-110 fa-old-padding dismiss",onClick:t[1]||(t[1]=Object(r.Y)(t=>e.dismissScopeNotice(),["prevent"]))},[Object(r.m)(E,{icon:"times"})])])),e.disablePreview?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",p,[Object(r.k)("a",{class:"preview-toggle faint",onClick:t[4]||(t[4]=Object(r.Y)((...t)=>e.togglePreview&&e.togglePreview(...t),["stop","prevent"]))},[Object(r.l)(Object(r.O)(e.$t("post_status.preview"))+" ",1),Object(r.m)(E,{icon:e.showPreview?"chevron-left":"chevron-right"},null,8,["icon"])]),Object(r.W)(Object(r.k)("div",h,[Object(r.m)(E,{class:"fa-old-padding",spin:"",icon:"circle-notch"})],512),[[r.T,e.previewLoading]])])),e.showPreview?(Object(r.D)(),Object(r.j)("div",b,[e.preview?e.preview.error?(Object(r.D)(),Object(r.j)("div",f,Object(r.O)(e.preview.error),1)):(Object(r.D)(),Object(r.h)(L,{key:2,status:e.preview,class:"preview-status"},null,8,["status"])):(Object(r.D)(),Object(r.j)("div",m,Object(r.O)(e.$t("general.loading")),1))])):Object(r.i)("",!0),e.disableSubject||!e.newStatus.spoilerText&&!e.alwaysShowSubject?Object(r.i)("",!0):(Object(r.D)(),Object(r.h)(R,{key:7,modelValue:e.newStatus.spoilerText,"onUpdate:modelValue":t[6]||(t[6]=t=>e.newStatus.spoilerText=t),"enable-emoji-picker":"",suggest:e.emojiSuggestor,class:"form-control"},{default:Object(r.V)(()=>[Object(r.W)(Object(r.k)("input",{"onUpdate:modelValue":t[5]||(t[5]=t=>e.newStatus.spoilerText=t),type:"text",placeholder:e.$t("post_status.content_warning"),disabled:e.posting&&!e.optimisticPosting,size:"1",class:"form-post-subject"},null,8,O),[[r.S,e.newStatus.spoilerText]])]),_:1},8,["modelValue","suggest"])),Object(r.m)(R,{ref:"emoji-input",modelValue:e.newStatus.status,"onUpdate:modelValue":t[14]||(t[14]=t=>e.newStatus.status=t),suggest:e.emojiUserSuggestor,placement:e.emojiPickerPlacement,class:"form-control main-input","enable-emoji-picker":"","hide-emoji-button":"","newline-on-ctrl-enter":e.submitOnEnter,"enable-sticker-picker":"",onInput:e.onEmojiInputInput,onStickerUploaded:e.addMediaFile,onStickerUploadFailed:e.uploadFailed,onShown:e.handleEmojiInputShow},{default:Object(r.V)(()=>[Object(r.W)(Object(r.k)("textarea",{ref:"textarea","onUpdate:modelValue":t[7]||(t[7]=t=>e.newStatus.status=t),placeholder:e.placeholder||e.$t("post_status.default"),rows:"1",cols:"1",disabled:e.posting&&!e.optimisticPosting,class:Object(r.w)(["form-post-body",{"scrollable-form":!!e.maxHeight}]),onKeydown:[t[8]||(t[8]=Object(r.X)(Object(r.Y)(t=>e.submitOnEnter&&e.postStatus(t,e.newStatus),["exact"]),["enter"])),t[9]||(t[9]=Object(r.X)(Object(r.Y)(t=>e.postStatus(t,e.newStatus),["meta"]),["enter"])),t[10]||(t[10]=Object(r.X)(Object(r.Y)(t=>!e.submitOnEnter&&e.postStatus(t,e.newStatus),["ctrl"]),["enter"]))],onInput:t[11]||(t[11]=(...t)=>e.resize&&e.resize(...t)),onCompositionupdate:t[12]||(t[12]=(...t)=>e.resize&&e.resize(...t)),onPaste:t[13]||(t[13]=(...t)=>e.paste&&e.paste(...t))},null,42,j),[[r.S,e.newStatus.status]]),e.hasStatusLengthLimit?(Object(r.D)(),Object(r.j)("p",{key:0,class:Object(r.w)(["character-counter faint",{error:e.isOverLengthLimit}])},Object(r.O)(e.charactersLeft),3)):Object(r.i)("",!0)]),_:1},8,["modelValue","suggest","placement","newline-on-ctrl-enter","onInput","onStickerUploaded","onStickerUploadFailed","onShown"]),e.disableScopeSelector?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",g,[Object(r.m)(A,{"show-all":e.showAllScopes,"user-default":e.userDefaultScope,"original-scope":e.copyMessageScope,"initial-scope":e.newStatus.visibility,"on-scope-change":e.changeVis},null,8,["show-all","user-default","original-scope","initial-scope","on-scope-change"]),e.postFormats.length>1?(Object(r.D)(),Object(r.j)("div",v,[Object(r.m)(N,{id:"post-content-type",modelValue:e.newStatus.contentType,"onUpdate:modelValue":t[15]||(t[15]=t=>e.newStatus.contentType=t),class:"form-control"},{default:Object(r.V)(()=>[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.postFormats,t=>(Object(r.D)(),Object(r.j)("option",{key:t,value:t},Object(r.O)(e.$t(`post_status.content_type["${t}"]`)),9,y))),128))]),_:1},8,["modelValue"])])):Object(r.i)("",!0),1===e.postFormats.length&&"text/plain"!==e.postFormats[0]?(Object(r.D)(),Object(r.j)("div",w,[Object(r.k)("span",k,Object(r.O)(e.$t(`post_status.content_type["${e.postFormats[0]}"]`)),1)])):Object(r.i)("",!0)]))]),e.pollsAvailable?(Object(r.D)(),Object(r.h)(B,{key:0,ref:"pollForm",visible:e.pollFormVisible,onUpdatePoll:e.setPoll},null,8,["visible","onUpdatePoll"])):Object(r.i)("",!0),Object(r.k)("div",_,[Object(r.k)("div",S,[Object(r.m)(V,{ref:"mediaUpload",class:"media-upload-icon","drop-files":e.dropFiles,disabled:e.uploadFileLimitReached,onUploading:e.startedUploadingFiles,onUploaded:e.addMediaFile,onUploadFailed:e.uploadFailed,onAllUploaded:e.finishedUploadingFiles},null,8,["drop-files","disabled","onUploading","onUploaded","onUploadFailed","onAllUploaded"]),Object(r.k)("button",{class:"emoji-icon button-unstyled",title:e.$t("emoji.add_emoji"),onClick:t[16]||(t[16]=(...t)=>e.showEmojiPicker&&e.showEmojiPicker(...t))},[Object(r.m)(E,{icon:"smile-beam"})],8,C),e.pollsAvailable?(Object(r.D)(),Object(r.j)("button",{key:0,class:Object(r.w)(["poll-icon button-unstyled",{selected:e.pollFormVisible}]),title:e.$t("polls.add_poll"),onClick:t[17]||(t[17]=(...t)=>e.togglePollForm&&e.togglePollForm(...t))},[Object(r.m)(E,{icon:"poll-h"})],10,P)):Object(r.i)("",!0)]),e.posting?(Object(r.D)(),Object(r.j)("button",x,Object(r.O)(e.$t("post_status.posting")),1)):e.isOverLengthLimit?(Object(r.D)(),Object(r.j)("button",D,Object(r.O)(e.$t("post_status.post")),1)):(Object(r.D)(),Object(r.j)("button",{key:2,disabled:e.uploadingFiles||e.disableSubmit,class:"btn button-default",onTouchstart:t[18]||(t[18]=Object(r.Y)(t=>e.postStatus(t,e.newStatus),["stop","prevent"])),onClick:t[19]||(t[19]=Object(r.Y)(t=>e.postStatus(t,e.newStatus),["stop","prevent"]))},Object(r.O)(e.$t("post_status.post")),41,T))],512),Object(r.W)(Object(r.k)("div",{style:Object(r.x)({animation:"show"===e.showDropIcon?"fade-in 0.25s":"fade-out 0.5s"}),class:"drop-indicator",onDragleave:t[20]||(t[20]=(...t)=>e.fileDragStop&&e.fileDragStop(...t)),onDrop:t[21]||(t[21]=Object(r.Y)((...t)=>e.fileDrop&&e.fileDrop(...t),["stop"]))},[Object(r.m)(E,{icon:e.uploadFileLimitReached?"ban":"upload"},null,8,["icon"])],36),[[r.T,"hide"!==e.showDropIcon]]),e.error?(Object(r.D)(),Object(r.j)("div",I,[Object(r.l)(" Error: "+Object(r.O)(e.error)+" ",1),Object(r.k)("button",{class:"button-unstyled",onClick:t[22]||(t[22]=(...t)=>e.clearError&&e.clearError(...t))},[Object(r.m)(E,{class:"fa-scale-110 fa-old-padding",icon:"times"})])])):Object(r.i)("",!0),e.newStatus.files&&e.newStatus.files.length>0?(Object(r.D)(),Object(r.h)(H,{key:2,class:"attachments",grid:!0,nsfw:!1,attachments:e.newStatus.files,descriptions:e.newStatus.mediaDescriptions,"set-media":()=>e.$store.dispatch("setMedia",e.newStatus.files),editable:!0,"edit-attachment":e.editAttachment,"remove-attachment":e.removeMediaFile,"shift-up-attachment":e.newStatus.files.length>1&&e.shiftUpMediaFile,"shift-dn-attachment":e.newStatus.files.length>1&&e.shiftDnMediaFile,onPlay:t[23]||(t[23]=t=>e.$emit("mediaplay",e.attachment.id)),onPause:t[24]||(t[24]=t=>e.$emit("mediapause",e.attachment.id))},null,8,["attachments","descriptions","set-media","edit-attachment","remove-attachment","shift-up-attachment","shift-dn-attachment"])):Object(r.i)("",!0),e.newStatus.files.length>0&&!e.disableSensitivityCheckbox?(Object(r.D)(),Object(r.j)("div",$,[Object(r.m)(q,{modelValue:e.newStatus.nsfw,"onUpdate:modelValue":t[25]||(t[25]=t=>e.newStatus.nsfw=t)},{default:Object(r.V)(()=>[Object(r.l)(Object(r.O)(e.$t("post_status.attachments_sensitive")),1)]),_:1},8,["modelValue"])])):Object(r.i)("",!0)],32)],512)}]]);t.a=Re},function(e,t,n){"use strict";var r=n(0);const i=["href","alt","title"],o={key:1,class:"attachment-buttons"},s=["placeholder"],a={key:1},c={class:"attachment-wrapper"},l=["href","alt","title"],u=["src"],d={key:1,class:"attachment-buttons"},p=["title"],h=["title"],b=["title"],m=["title"],f=["title"],O=["title"],j=["title"],g=["href"],v=["href"],y=["href"],w=["src","alt","title"],k={key:0,class:"image"},_=["src"],S={class:"text"},C=["href"],P=["innerHTML"],x=["href"],D=["placeholder"],T={key:1};var I=n(5),$=n.n(I),z=n(50),M=n(139),U=n(141),F=n(327),E=n.n(F),L=n(33),R=n(8),A=n(6),N=n(3);function B(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}A.c.add(N.D,N.Q,N.K,N.xb,N.U,N.rb,N.lb,N.db,N.sb,N.T,N.b);var V={props:["attachment","description","hideDescription","nsfw","size","setMedia","remove","shiftUp","shiftDn","edit"],data:function(){return{localDescription:this.description||this.attachment.description,nsfwImage:this.$store.state.instance.nsfwCensorImage||E.a,hideNsfwLocal:this.$store.getters.mergedConfig.hideNsfw,preloadImage:this.$store.getters.mergedConfig.preloadImage,loading:!1,img:"image"===L.a.fileType(this.attachment.mimetype)&&document.createElement("img"),modalOpen:!1,showHidden:!1,flashLoaded:!1,showDescription:!1}},components:{Flash:M.a,StillImage:z.a,VideoAttachment:U.a},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?B(Object(n),!0).forEach((function(t){$()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):B(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({classNames:function(){return[{"-loading":this.loading,"-nsfw-placeholder":this.hidden,"-editable":void 0!==this.edit},"-type-"+this.type,this.size&&"-size-"+this.size,"-".concat(this.useContainFit?"contain":"cover","-fit")]},usePlaceholder:function(){return"hide"===this.size},useContainFit:function(){return this.$store.getters.mergedConfig.useContainFit},placeholderName:function(){return""!==this.attachment.description&&this.attachment.description?this.attachment.description:this.type.toUpperCase()},placeholderIconClass:function(){return"image"===this.type?"image":"video"===this.type?"video":"audio"===this.type?"music":"file"},referrerpolicy:function(){return this.$store.state.instance.mediaProxyAvailable?"":"no-referrer"},type:function(){return L.a.fileType(this.attachment.mimetype)},hidden:function(){return this.nsfw&&this.hideNsfwLocal&&!this.showHidden},isEmpty:function(){return"html"===this.type&&!this.attachment.oembed},useModal:function(){var e=[];switch(this.size){case"hide":case"small":e=["image","video","audio","flash"];break;default:e=this.mergedConfig.playVideosInModal?["image","video","flash"]:["image"]}return e.includes(this.type)},videoTag:function(){return this.useModal?"button":"span"}},Object(R.c)(["mergedConfig"])),watch:{localDescription:function(e){this.onEdit(e)}},methods:{linkClicked:function(e){var t=e.target;"A"===t.tagName&&window.open(t.href,"_blank")},openModal:function(e){this.useModal?(this.$emit("setMedia"),this.$store.dispatch("setCurrentMedia",this.attachment)):"unknown"===this.type&&window.open(this.attachment.url)},openModalForce:function(e){this.$emit("setMedia"),this.$store.dispatch("setCurrentMedia",this.attachment)},onEdit:function(e){this.edit&&this.edit(this.attachment,e)},onRemove:function(){this.remove&&this.remove(this.attachment)},onShiftUp:function(){this.shiftUp&&this.shiftUp(this.attachment)},onShiftDn:function(){this.shiftDn&&this.shiftDn(this.attachment)},stopFlash:function(){this.$refs.flash.closePlayer()},setFlashLoaded:function(e){this.flashLoaded=e},toggleDescription:function(){this.showDescription=!this.showDescription},toggleHidden:function(e){var t=this;!this.mergedConfig.useOneClickNsfw||this.showHidden||"video"===this.type&&!this.mergedConfig.playVideosInModal?this.img&&!this.preloadImage?this.img.onload?this.img.onload():(this.loading=!0,this.img.src=this.attachment.url,this.img.onload=function(){t.loading=!1,t.showHidden=!t.showHidden}):this.showHidden=!this.showHidden:this.openModal(e)},onImageLoad:function(e){var t=e.naturalWidth,n=e.naturalHeight;this.$emit("naturalSizeLoad",{id:this.attachment.id,width:t,height:n})}}},H=(n(509),n(4));const q=n.n(H)()(V,[["render",function(e,t,n,I,$,z){const M=Object(r.J)("FAIcon"),U=Object(r.J)("StillImage"),F=Object(r.J)("VideoAttachment"),E=Object(r.J)("Flash");return e.usePlaceholder?(Object(r.D)(),Object(r.j)("button",{key:0,class:Object(r.w)(["Attachment -placeholder button-unstyled",e.classNames]),onClick:t[4]||(t[4]=(...t)=>e.openModal&&e.openModal(...t))},["html"!==e.type?(Object(r.D)(),Object(r.j)("a",{key:0,class:"placeholder",target:"_blank",href:e.attachment.url,alt:e.attachment.description,title:e.attachment.description,onClick:t[0]||(t[0]=Object(r.Y)(()=>{},["prevent"]))},[Object(r.m)(M,{icon:e.placeholderIconClass},null,8,["icon"]),Object(r.k)("b",null,Object(r.O)(e.nsfw?"NSFW / ":""),1),Object(r.l)(Object(r.O)(e.edit?"":e.placeholderName),1)],8,i)):Object(r.i)("",!0),e.edit||e.remove?(Object(r.D)(),Object(r.j)("div",o,[e.remove?(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-unstyled attachment-button",onClick:t[1]||(t[1]=Object(r.Y)((...t)=>e.onRemove&&e.onRemove(...t),["prevent"]))},[Object(r.m)(M,{icon:"trash-alt"})])):Object(r.i)("",!0)])):Object(r.i)("",!0),"hide"!==e.size&&!e.hideDescription&&(e.edit||e.localDescription||e.showDescription)?(Object(r.D)(),Object(r.j)("div",{key:2,class:Object(r.w)(["description-container",{"-static":!e.edit}])},[e.edit?Object(r.W)((Object(r.D)(),Object(r.j)("input",{key:0,"onUpdate:modelValue":t[2]||(t[2]=t=>e.localDescription=t),type:"text",class:"description-field",placeholder:e.$t("post_status.media_description"),onKeydown:t[3]||(t[3]=Object(r.X)(Object(r.Y)(()=>{},["prevent"]),["enter"]))},null,40,s)),[[r.S,e.localDescription]]):(Object(r.D)(),Object(r.j)("p",a,Object(r.O)(e.localDescription),1))],2)):Object(r.i)("",!0)],2)):(Object(r.D)(),Object(r.j)("div",{key:1,class:Object(r.w)(["Attachment",e.classNames])},[Object(r.W)(Object(r.k)("div",c,[e.hidden?(Object(r.D)(),Object(r.j)("a",{key:0,class:"image-container",href:e.attachment.url,alt:e.attachment.description,title:e.attachment.description,onClick:t[5]||(t[5]=Object(r.Y)((...t)=>e.toggleHidden&&e.toggleHidden(...t),["prevent","stop"]))},[(Object(r.D)(),Object(r.j)("img",{key:e.nsfwImage,class:"nsfw",src:e.nsfwImage},null,8,u)),"video"===e.type?(Object(r.D)(),Object(r.h)(M,{key:0,class:"play-icon",icon:"play-circle"})):Object(r.i)("",!0)],8,l)):Object(r.i)("",!0),e.hidden?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",d,["flash"===e.type&&e.flashLoaded?(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-unstyled attachment-button",title:e.$t("status.attachment_stop_flash"),onClick:t[6]||(t[6]=Object(r.Y)((...t)=>e.stopFlash&&e.stopFlash(...t),["prevent"]))},[Object(r.m)(M,{icon:"stop"})],8,p)):Object(r.i)("",!0),e.attachment.description&&"small"!==e.size&&!e.edit&&"unknown"!==e.type?(Object(r.D)(),Object(r.j)("button",{key:1,class:"button-unstyled attachment-button",title:e.$t("status.show_attachment_description"),onClick:t[7]||(t[7]=Object(r.Y)((...t)=>e.toggleDescription&&e.toggleDescription(...t),["prevent"]))},[Object(r.m)(M,{icon:"align-right"})],8,h)):Object(r.i)("",!0),e.useModal||"unknown"===e.type?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("button",{key:2,class:"button-unstyled attachment-button",title:e.$t("status.show_attachment_in_modal"),onClick:t[8]||(t[8]=Object(r.Y)((...t)=>e.openModalForce&&e.openModalForce(...t),["prevent"]))},[Object(r.m)(M,{icon:"search-plus"})],8,b)),e.nsfw&&e.hideNsfwLocal?(Object(r.D)(),Object(r.j)("button",{key:3,class:"button-unstyled attachment-button",title:e.$t("status.hide_attachment"),onClick:t[9]||(t[9]=Object(r.Y)((...t)=>e.toggleHidden&&e.toggleHidden(...t),["prevent"]))},[Object(r.m)(M,{icon:"times"})],8,m)):Object(r.i)("",!0),e.shiftUp?(Object(r.D)(),Object(r.j)("button",{key:4,class:"button-unstyled attachment-button",title:e.$t("status.move_up"),onClick:t[10]||(t[10]=Object(r.Y)((...t)=>e.onShiftUp&&e.onShiftUp(...t),["prevent"]))},[Object(r.m)(M,{icon:"chevron-left"})],8,f)):Object(r.i)("",!0),e.shiftDn?(Object(r.D)(),Object(r.j)("button",{key:5,class:"button-unstyled attachment-button",title:e.$t("status.move_down"),onClick:t[11]||(t[11]=Object(r.Y)((...t)=>e.onShiftDn&&e.onShiftDn(...t),["prevent"]))},[Object(r.m)(M,{icon:"chevron-right"})],8,O)):Object(r.i)("",!0),e.remove?(Object(r.D)(),Object(r.j)("button",{key:6,class:"button-unstyled attachment-button",title:e.$t("status.remove_attachment"),onClick:t[12]||(t[12]=Object(r.Y)((...t)=>e.onRemove&&e.onRemove(...t),["prevent"]))},[Object(r.m)(M,{icon:"trash-alt"})],8,j)):Object(r.i)("",!0)])),"image"!==e.type||e.hidden&&!e.preloadImage?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("a",{key:2,class:Object(r.w)(["image-container",{"-hidden":e.hidden&&e.preloadImage}]),href:e.attachment.url,target:"_blank",onClick:t[13]||(t[13]=Object(r.Y)((...t)=>e.openModal&&e.openModal(...t),["stop","prevent"]))},[Object(r.m)(U,{class:"image",referrerpolicy:e.referrerpolicy,mimetype:e.attachment.mimetype,src:e.attachment.large_thumb_url||e.attachment.url,"image-load-handler":e.onImageLoad,alt:e.attachment.description},null,8,["referrerpolicy","mimetype","src","image-load-handler","alt"])],10,g)),"unknown"!==e.type||e.hidden?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("a",{key:3,class:"placeholder-container",href:e.attachment.url,target:"_blank"},[Object(r.m)(M,{size:"5x",icon:e.placeholderIconClass},null,8,["icon"]),Object(r.k)("p",null,Object(r.O)(e.localDescription),1)],8,v)),"video"!==e.type||e.hidden?Object(r.i)("",!0):(Object(r.D)(),Object(r.h)(Object(r.L)(e.videoTag),{key:4,class:Object(r.w)(["video-container",{"button-unstyled":"isModal"}]),href:e.attachment.url,onClick:Object(r.Y)(e.openModal,["stop","prevent"])},{default:Object(r.V)(()=>[Object(r.m)(F,{class:"video",attachment:e.attachment,controls:!e.useModal,onPlay:t[14]||(t[14]=t=>e.$emit("play")),onPause:t[15]||(t[15]=t=>e.$emit("pause"))},null,8,["attachment","controls"]),e.useModal?(Object(r.D)(),Object(r.h)(M,{key:0,class:"play-icon",icon:"play-circle"})):Object(r.i)("",!0)]),_:1},8,["href","onClick"])),"audio"!==e.type||e.hidden?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("span",{key:5,class:"audio-container",href:e.attachment.url,onClick:t[18]||(t[18]=Object(r.Y)((...t)=>e.openModal&&e.openModal(...t),["stop","prevent"]))},["audio"===e.type?(Object(r.D)(),Object(r.j)("audio",{key:0,src:e.attachment.url,alt:e.attachment.description,title:e.attachment.description,controls:"",onPlay:t[16]||(t[16]=t=>e.$emit("play")),onPause:t[17]||(t[17]=t=>e.$emit("pause"))},null,40,w)):Object(r.i)("",!0)],8,y)),"html"===e.type&&e.attachment.oembed?(Object(r.D)(),Object(r.j)("div",{key:6,class:"oembed-container",onClick:t[19]||(t[19]=Object(r.Y)((...t)=>e.linkClicked&&e.linkClicked(...t),["prevent"]))},[e.attachment.thumb_url?(Object(r.D)(),Object(r.j)("div",k,[Object(r.k)("img",{src:e.attachment.thumb_url},null,8,_)])):Object(r.i)("",!0),Object(r.k)("div",S,[Object(r.k)("h1",null,[Object(r.k)("a",{href:e.attachment.url},Object(r.O)(e.attachment.oembed.title),9,C)]),Object(r.k)("div",{innerHTML:e.attachment.oembed.oembedHTML},null,8,P)])])):Object(r.i)("",!0),"flash"!==e.type||e.hidden?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("span",{key:7,class:"flash-container",href:e.attachment.url,onClick:t[22]||(t[22]=Object(r.Y)((...t)=>e.openModal&&e.openModal(...t),["stop","prevent"]))},[Object(r.m)(E,{ref:"flash",class:"flash",src:e.attachment.large_thumb_url||e.attachment.url,onPlayerOpened:t[20]||(t[20]=t=>e.setFlashLoaded(!0)),onPlayerClosed:t[21]||(t[21]=t=>e.setFlashLoaded(!1))},null,8,["src"])],8,x))],512),[[r.T,!e.isEmpty]]),"hide"!==e.size&&!e.hideDescription&&(e.edit||e.localDescription&&e.showDescription)?(Object(r.D)(),Object(r.j)("div",{key:0,class:Object(r.w)(["description-container",{"-static":!e.edit}])},[e.edit?Object(r.W)((Object(r.D)(),Object(r.j)("input",{key:0,"onUpdate:modelValue":t[23]||(t[23]=t=>e.localDescription=t),type:"text",class:"description-field",placeholder:e.$t("post_status.media_description"),onKeydown:t[24]||(t[24]=Object(r.X)(Object(r.Y)(()=>{},["prevent"]),["enter"]))},null,40,D)),[[r.S,e.localDescription]]):(Object(r.D)(),Object(r.j)("p",T,Object(r.O)(e.localDescription),1))],2)):Object(r.i)("",!0)],2))}]]);t.a=q},function(e,t,n){"use strict";var r=n(0);const i=["datetime","title"];var o=n(47),s=n(38),a={name:"Timeago",props:["time","autoUpdate","longFormat","nowThreshold"],data:function(){return{relativeTime:{key:"time.now",num:0},interval:null}},computed:{localeDateString:function(){var e=s.a.internalToBrowserLocale(this.$i18n.locale);return"string"==typeof this.time?new Date(Date.parse(this.time)).toLocaleString(e):this.time.toLocaleString(e)}},created:function(){this.refreshRelativeTimeObject()},unmounted:function(){clearTimeout(this.interval)},methods:{refreshRelativeTimeObject:function(){var e="number"==typeof this.nowThreshold?this.nowThreshold:1;this.relativeTime=this.longFormat?o.d(this.time,e):o.e(this.time,e),this.autoUpdate&&(this.interval=setTimeout(this.refreshRelativeTimeObject,1e3*this.autoUpdate))}}},c=n(4);const l=n.n(c)()(a,[["render",function(e,t,n,o,s,a){return Object(r.D)(),Object(r.j)("time",{datetime:n.time,title:a.localeDateString},Object(r.O)(e.$t(s.relativeTime.key,[s.relativeTime.num])),9,i)}]]);t.a=l},,,,,,,,,,function(e,t,n){"use strict";var r=n(0);const i={class:"list"},o={key:0,class:"list-empty-content faint"};var s={props:{items:{type:Array,default:function(){return[]}},getKey:{type:Function,default:function(e){return e.id}}}},a=(n(562),n(4));const c=n.n(a)()(s,[["render",function(e,t,n,s,a,c){return Object(r.D)(),Object(r.j)("div",i,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(n.items,t=>(Object(r.D)(),Object(r.j)("div",{key:n.getKey(t),class:"list-item"},[Object(r.I)(e.$slots,"item",{item:t})]))),128)),0===n.items.length&&e.$slots.empty?(Object(r.D)(),Object(r.j)("div",o,[Object(r.I)(e.$slots,"empty")])):Object(r.i)("",!0)])}]]);t.a=c},function(e,t,n){"use strict";var r,i=n(13),o=n.n(i),s=n(12),a=n.n(s),c=n(10),l=n.n(c),u={ar:function(){return n.e(5).then(n.bind(null,595))},ca:function(){return n.e(6).then(n.bind(null,596))},cs:function(){return n.e(7).then(n.bind(null,597))},de:function(){return n.e(8).then(n.bind(null,598))},eo:function(){return n.e(9).then(n.bind(null,599))},es:function(){return n.e(10).then(n.bind(null,600))},et:function(){return n.e(11).then(n.bind(null,601))},eu:function(){return n.e(12).then(n.bind(null,602))},fi:function(){return n.e(13).then(n.bind(null,603))},fr:function(){return n.e(14).then(n.bind(null,604))},ga:function(){return n.e(15).then(n.bind(null,605))},he:function(){return n.e(16).then(n.bind(null,606))},hu:function(){return n.e(17).then(n.bind(null,607))},it:function(){return n.e(18).then(n.bind(null,608))},ja:function(){return n.e(20).then(n.bind(null,609))},ja_easy:function(){return n.e(19).then(n.bind(null,610))},ko:function(){return n.e(21).then(n.bind(null,611))},nb:function(){return n.e(22).then(n.bind(null,612))},nl:function(){return n.e(23).then(n.bind(null,613))},oc:function(){return n.e(24).then(n.bind(null,614))},pl:function(){return n.e(25).then(n.bind(null,615))},pt:function(){return n.e(26).then(n.bind(null,616))},ro:function(){return n.e(27).then(n.bind(null,617))},ru:function(){return n.e(28).then(n.bind(null,618))},te:function(){return n.e(29).then(n.bind(null,619))},uk:function(){return n.e(30).then(n.bind(null,620))},zh:function(){return n.e(31).then(n.bind(null,621))},zh_Hant:function(){return n.e(32).then(n.bind(null,622))}},d={languages:["en"].concat(a()(Object.keys(u))),default:{en:n(442).default},setLanguage:(r=o()(l.a.mark((function e(t,n){var r;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!u[n]){e.next=5;break}return e.next=3,u[n]();case 3:r=e.sent,t.setLocaleMessage(n,r.default);case 5:t.locale=n;case 6:case"end":return e.stop()}}),e)}))),function(e,t){return r.apply(this,arguments)})};t.a=d},function(e,t,n){"use strict";var r=n(5),i=n.n(r),o=n(0),s=n(8),a=n(68);n(574);function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var l=function(e){return e.findIndex((function(e){return e.props}))};t.a={name:"TabSwitcher",props:{renderOnlyFocused:{required:!1,type:Boolean,default:!1},onSwitch:{required:!1,type:Function,default:void 0},activeTab:{required:!1,type:String,default:void 0},scrollableTabs:{required:!1,type:Boolean,default:!1},sideTabBar:{required:!1,type:Boolean,default:!1},bodyScrollLock:{required:!1,type:Boolean,default:!1}},data:function(){return{active:l(this.slots())}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach((function(t){i()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({activeIndex:function(){var e=this;return this.activeTab?this.slots().findIndex((function(t){return t&&t.props&&e.activeTab===t.props.key})):this.active},isActive:function(){var e=this;return function(t){return e.$slots.default().findIndex((function(e){return e.props&&e.props["data-tab-name"]===t}))===e.activeIndex}},settingsModalVisible:function(){return"visible"===this.settingsModalState}},Object(s.e)({settingsModalState:function(e){return e.interface.settingsModalState}})),beforeUpdate:function(){this.slots()[this.active].props||(this.active=l(this.slots()))},methods:{clickTab:function(e){var t=this;return function(n){n.preventDefault(),t.setTab(e)}},slots:function(){return this.$slots.default()[0].type===o.a?this.$slots.default()[0].children:this.$slots.default()},setTab:function(e){"function"==typeof this.onSwitch&&this.onSwitch.call(null,this.slots()[e].key),this.active=e,this.scrollableTabs&&(this.$refs.contents.scrollTop=0)}},render:function(){var e=this,t=this.slots().map((function(t,n){var r=t.props;if(r){var i=["tab","button-default"],s=["tab-wrapper"];return e.activeIndex===n&&(i.push("active"),s.push("active")),r.image?Object(o.m)("div",{class:s.join(" ")},[Object(o.m)("button",{disabled:r.disabled,onClick:e.clickTab(n),class:i.join(" "),type:"button"},[Object(o.m)("img",{src:r.image,title:r["image-tooltip"]},null),r.label?"":r.label])]):Object(o.m)("div",{class:s.join(" ")},[Object(o.m)("button",{disabled:r.disabled,onClick:e.clickTab(n),class:i.join(" "),type:"button"},[r.icon?Object(o.m)(a.a,{class:"tab-icon",size:"2x","fixed-width":!0,icon:r.icon},null):"",Object(o.m)("span",{class:"text"},[r.label])])])}})),n=this.slots().map((function(t,n){var r=t.props;if(r){var i=e.activeIndex===n,s=[i?"active":"hidden"];r.fullHeight&&s.push("full-height");var a=!e.renderOnlyFocused||i?t:"";return Object(o.m)("div",{class:s},[e.sideTabBar?Object(o.m)("h1",{class:"mobile-label"},[r.label]):"",a])}}));return Object(o.m)("div",{class:"tab-switcher "+(this.sideTabBar?"side-tabs":"top-tabs")},[Object(o.m)("div",{class:"tabs"},[t]),Object(o.W)(Object(o.m)("div",{ref:"contents",class:"contents"+(this.scrollableTabs?" scrollable-tabs":"")},[n]),[[Object(o.K)("body-scroll-lock"),this.bodyScrollLock]])])}}},,,,,function(e,t,n){"use strict";var r=n(21),i=n.n(r),o=n(15),s={postStatus:function(e){var t=e.store,n=e.status,r=e.spoilerText,s=e.visibility,a=e.sensitive,c=e.poll,l=e.media,u=void 0===l?[]:l,d=e.inReplyToStatusId,p=void 0===d?void 0:d,h=e.contentType,b=void 0===h?"text/plain":h,m=e.preview,f=void 0!==m&&m,O=e.idempotencyKey,j=void 0===O?"":O,g=i()(u,"id");return o.c.postStatus({credentials:t.state.users.currentUser.credentials,status:n,spoilerText:r,visibility:s,sensitive:a,mediaIds:g,inReplyToStatusId:p,contentType:b,poll:c,preview:f,idempotencyKey:j}).then((function(e){return e.error||f||t.dispatch("addNewStatuses",{statuses:[e],timeline:"friends",showImmediately:!0,noIdUpdate:!0}),e})).catch((function(e){return{error:e.message}}))},uploadMedia:function(e){var t=e.store,n=e.formData,r=t.state.users.currentUser.credentials;return o.c.uploadMedia({credentials:r,formData:n})},setMediaDescription:function(e){var t=e.store,n=e.id,r=e.description,i=t.state.users.currentUser.credentials;return o.c.setMediaDescription({credentials:i,id:n,description:r})}};t.a=s},function(e,t,n){"use strict";n.r(t);var r=n(0);const i={key:0,class:"notifications-heading panel-heading -sticky"},o={class:"title"},s={key:0,class:"badge badge-notification unseen-count"},a={class:"panel-body"},c=Object(r.k)("div",{class:"notification-overlay"},null,-1),l={class:"panel-footer"},u={key:0,class:"new-status-notification text-center faint"},d={class:"new-status-notification text-center"},p={key:2,class:"new-status-notification text-center"};var h=n(5),b=n.n(h),m=n(8);const f={key:1},O={key:0,class:"Notification container -muted"},j=["href"],g={class:"notification-right"},v={class:"notification-details"},y={class:"name-and-action"},w={key:0},k=["title"],_=Object(r.l)(" "+Object(r.O)(" ")+" "),S={key:2},C=Object(r.l)(" "+Object(r.O)(" ")+" "),P={key:3},x=Object(r.l)(" "+Object(r.O)(" ")+" "),D={key:4},T=Object(r.l)(" "+Object(r.O)(" ")+" "),I={key:5},$=Object(r.l)(" "+Object(r.O)(" ")+" "),z={key:6},M=Object(r.l)(" "+Object(r.O)(" ")+" "),U={key:7},F=["src","name"],E={key:1,class:"emoji-reaction-emoji"},L={key:8},R=Object(r.l)(" "+Object(r.O)(" ")+" "),A={key:0,class:"timeago"},N={key:1,class:"timeago"},B={class:"faint"},V={key:1,class:"follow-text"},H={key:0,style:{"white-space":"nowrap"}},q=["title"],J=["title"],W={key:2,class:"move-text"};var Y=n(45),G=n(34),K=n(22),X=n(35),Z=n(59),Q=n(25),ee=n(26),te=n(31),ne=n(23),re=n(6),ie=n(3);function oe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}re.c.add(ie.m,ie.rb,ie.jb,ie.Z,ie.vb,ie.ub,ie.C,ie.nb);var se={data:function(){return{userExpanded:!1,betterShadow:this.$store.state.interface.browserSupport.cssFilter,unmuted:!1}},props:["notification"],components:{StatusContent:Y.a,UserAvatar:K.default,UserCard:X.a,Timeago:Z.a,Status:G.default,RichContent:Q.a},methods:{toggleUserExpanded:function(){this.userExpanded=!this.userExpanded},generateUserProfileLink:function(e){return Object(ne.a)(e.id,e.screen_name,this.$store.state.instance.restrictedNicknames)},getUser:function(e){return this.$store.state.users.usersObject[e.from_profile.id]},toggleMute:function(){this.unmuted=!this.unmuted},approveUser:function(){this.$store.state.api.backendInteractor.approveUser({id:this.user.id}),this.$store.dispatch("removeFollowRequest",this.user),this.$store.dispatch("markSingleNotificationAsSeen",{id:this.notification.id}),this.$store.dispatch("updateNotification",{id:this.notification.id,updater:function(e){e.type="follow"}})},denyUser:function(){var e=this;this.$store.state.api.backendInteractor.denyUser({id:this.user.id}).then((function(){e.$store.dispatch("dismissNotificationLocal",{id:e.notification.id}),e.$store.dispatch("removeFollowRequest",e.user)}))}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?oe(Object(n),!0).forEach((function(t){b()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):oe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({userClass:function(){return Object(te.a)(this.notification.from_profile)},userStyle:function(){var e=this.$store.getters.mergedConfig.highlight,t=this.notification.from_profile;return Object(te.b)(e[t.screen_name])},user:function(){return this.$store.getters.findUser(this.notification.from_profile.id)},userProfileLink:function(){return this.generateUserProfileLink(this.user)},targetUser:function(){return this.$store.getters.findUser(this.notification.target.id)},targetUserProfileLink:function(){return this.generateUserProfileLink(this.targetUser)},needMute:function(){return this.$store.getters.relationship(this.user.id).muting},isStatusNotification:function(){return Object(ee.b)(this.notification.type)}},Object(m.e)({currentUser:function(e){return e.users.currentUser}}))},ae=(n(556),n(4)),ce=n.n(ae);var le=ce()(se,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("Status"),c=Object(r.J)("router-link"),l=Object(r.J)("FAIcon"),u=Object(r.J)("UserAvatar"),d=Object(r.J)("UserCard"),p=Object(r.J)("RichContent"),h=Object(r.J)("i18n-t"),b=Object(r.J)("Timeago"),m=Object(r.J)("StatusContent");return"mention"===e.notification.type?(Object(r.D)(),Object(r.h)(a,{key:0,class:"Notification",compact:!0,statusoid:e.notification.status},null,8,["statusoid"])):(Object(r.D)(),Object(r.j)("div",f,[e.needMute&&!e.unmuted?(Object(r.D)(),Object(r.j)("div",O,[Object(r.k)("small",null,[Object(r.m)(c,{to:e.userProfileLink},{default:Object(r.V)(()=>[Object(r.l)(Object(r.O)(e.notification.from_profile.screen_name_ui),1)]),_:1},8,["to"])]),Object(r.k)("button",{class:"button-unstyled unmute",onClick:t[0]||(t[0]=Object(r.Y)((...t)=>e.toggleMute&&e.toggleMute(...t),["prevent"]))},[Object(r.m)(l,{class:"fa-scale-110 fa-old-padding",icon:"eye-slash"})])])):(Object(r.D)(),Object(r.j)("div",{key:1,class:Object(r.w)(["Notification non-mention",[e.userClass,{highlighted:e.userStyle},"-type--"+e.notification.type]]),style:Object(r.x)([e.userStyle])},[Object(r.k)("a",{class:"avatar-container",href:e.$router.resolve(e.userProfileLink).href,onClickCapture:t[1]||(t[1]=Object(r.Y)((...t)=>e.toggleUserExpanded&&e.toggleUserExpanded(...t),["stop","prevent"]))},[Object(r.m)(u,{compact:!0,"better-shadow":e.betterShadow,user:e.notification.from_profile},null,8,["better-shadow","user"])],40,j),Object(r.k)("div",g,[e.userExpanded?(Object(r.D)(),Object(r.h)(d,{key:0,"user-id":e.getUser(e.notification).id,rounded:!0,bordered:!0},null,8,["user-id"])):Object(r.i)("",!0),Object(r.k)("span",v,[Object(r.k)("div",y,[e.notification.from_profile.name_html?(Object(r.D)(),Object(r.j)("bdi",w,[Object(r.m)(p,{class:"username",title:"@"+e.notification.from_profile.screen_name_ui,html:e.notification.from_profile.name_html,emoji:e.notification.from_profile.emoji},null,8,["title","html","emoji"])])):(Object(r.D)(),Object(r.j)("span",{key:1,class:"username",title:"@"+e.notification.from_profile.screen_name_ui},Object(r.O)(e.notification.from_profile.name),9,k)),_,"like"===e.notification.type?(Object(r.D)(),Object(r.j)("span",S,[Object(r.m)(l,{class:"type-icon",icon:"star"}),C,Object(r.k)("small",null,Object(r.O)(e.$t("notifications.favorited_you")),1)])):Object(r.i)("",!0),"repeat"===e.notification.type?(Object(r.D)(),Object(r.j)("span",P,[Object(r.m)(l,{class:"type-icon",icon:"retweet",title:e.$t("tool_tip.repeat")},null,8,["title"]),x,Object(r.k)("small",null,Object(r.O)(e.$t("notifications.repeated_you")),1)])):Object(r.i)("",!0),"follow"===e.notification.type?(Object(r.D)(),Object(r.j)("span",D,[Object(r.m)(l,{class:"type-icon",icon:"user-plus"}),T,Object(r.k)("small",null,Object(r.O)(e.$t("notifications.followed_you")),1)])):Object(r.i)("",!0),"follow_request"===e.notification.type?(Object(r.D)(),Object(r.j)("span",I,[Object(r.m)(l,{class:"type-icon",icon:"user"}),$,Object(r.k)("small",null,Object(r.O)(e.$t("notifications.follow_request")),1)])):Object(r.i)("",!0),"move"===e.notification.type?(Object(r.D)(),Object(r.j)("span",z,[Object(r.m)(l,{class:"type-icon",icon:"suitcase-rolling"}),M,Object(r.k)("small",null,Object(r.O)(e.$t("notifications.migrated_to")),1)])):Object(r.i)("",!0),"pleroma:emoji_reaction"===e.notification.type?(Object(r.D)(),Object(r.j)("span",U,[Object(r.k)("small",null,[Object(r.m)(h,{scope:"global",keypath:"notifications.reacted_with"},{default:Object(r.V)(()=>[null!==e.notification.emoji_url?(Object(r.D)(),Object(r.j)("img",{key:0,class:"notification-reaction-emoji",src:e.notification.emoji_url,name:e.notification.emoji},null,8,F)):(Object(r.D)(),Object(r.j)("span",E,Object(r.O)(e.notification.emoji),1))]),_:1})])])):Object(r.i)("",!0),"poll"===e.notification.type?(Object(r.D)(),Object(r.j)("span",L,[Object(r.m)(l,{class:"type-icon",icon:"poll-h"}),R,Object(r.k)("small",null,Object(r.O)(e.$t("notifications.poll_ended")),1)])):Object(r.i)("",!0)]),e.isStatusNotification?(Object(r.D)(),Object(r.j)("div",A,[e.notification.status?(Object(r.D)(),Object(r.h)(c,{key:0,to:{name:"conversation",params:{id:e.notification.status.id}},class:"faint-link"},{default:Object(r.V)(()=>[Object(r.m)(b,{time:e.notification.created_at,"auto-update":240},null,8,["time"])]),_:1},8,["to"])):Object(r.i)("",!0)])):(Object(r.D)(),Object(r.j)("div",N,[Object(r.k)("span",B,[Object(r.m)(b,{time:e.notification.created_at,"auto-update":240},null,8,["time"])])])),e.needMute?(Object(r.D)(),Object(r.j)("button",{key:2,class:"button-unstyled",onClick:t[2]||(t[2]=Object(r.Y)((...t)=>e.toggleMute&&e.toggleMute(...t),["prevent"]))},[Object(r.m)(l,{class:"fa-scale-110 fa-old-padding",icon:"eye-slash"})])):Object(r.i)("",!0)]),"follow"===e.notification.type||"follow_request"===e.notification.type?(Object(r.D)(),Object(r.j)("div",V,[Object(r.m)(c,{to:e.userProfileLink,class:"follow-name"},{default:Object(r.V)(()=>[Object(r.l)(" @"+Object(r.O)(e.notification.from_profile.screen_name_ui),1)]),_:1},8,["to"]),"follow_request"===e.notification.type?(Object(r.D)(),Object(r.j)("div",H,[Object(r.k)("button",{class:"button-unstyled",title:e.$t("tool_tip.accept_follow_request"),onClick:t[3]||(t[3]=t=>e.approveUser())},[Object(r.m)(l,{icon:"check",class:"fa-scale-110 fa-old-padding follow-request-accept"})],8,q),Object(r.k)("button",{class:"button-unstyled",title:e.$t("tool_tip.reject_follow_request"),onClick:t[4]||(t[4]=t=>e.denyUser())},[Object(r.m)(l,{icon:"times",class:"fa-scale-110 fa-old-padding follow-request-reject"})],8,J)])):Object(r.i)("",!0)])):"move"===e.notification.type?(Object(r.D)(),Object(r.j)("div",W,[Object(r.m)(c,{to:e.targetUserProfileLink},{default:Object(r.V)(()=>[Object(r.l)(" @"+Object(r.O)(e.notification.target.screen_name_ui),1)]),_:1},8,["to"])])):(Object(r.D)(),Object(r.h)(m,{key:3,class:"faint",compact:!0,status:e.notification.action},null,8,["status"]))])],6))]))}]]);const ue={class:"dropdown-menu"},de={class:"filter-trigger-button button-unstyled"};var pe=n(24);function he(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function be(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?he(Object(n),!0).forEach((function(t){b()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):he(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}re.c.add(ie.G);var me={components:{Popover:pe.default},computed:{filters:function(){return this.$store.getters.mergedConfig.notificationVisibility}},methods:{toggleNotificationFilter:function(e){this.$store.dispatch("setOption",{name:"notificationVisibility",value:be(be({},this.filters),{},b()({},e,!this.filters[e]))})}}};n(557);var fe=ce()(me,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon"),c=Object(r.J)("Popover");return Object(r.D)(),Object(r.h)(c,{trigger:"click",class:"NotificationFilters",placement:"bottom","bound-to":{x:"container"}},{content:Object(r.V)(()=>[Object(r.k)("div",ue,[Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[0]||(t[0]=e=>s.toggleNotificationFilter("likes"))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":s.filters.likes}])},null,2),Object(r.l)(Object(r.O)(e.$t("settings.notification_visibility_likes")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[1]||(t[1]=e=>s.toggleNotificationFilter("repeats"))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":s.filters.repeats}])},null,2),Object(r.l)(Object(r.O)(e.$t("settings.notification_visibility_repeats")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[2]||(t[2]=e=>s.toggleNotificationFilter("follows"))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":s.filters.follows}])},null,2),Object(r.l)(Object(r.O)(e.$t("settings.notification_visibility_follows")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[3]||(t[3]=e=>s.toggleNotificationFilter("mentions"))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":s.filters.mentions}])},null,2),Object(r.l)(Object(r.O)(e.$t("settings.notification_visibility_mentions")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[4]||(t[4]=e=>s.toggleNotificationFilter("emojiReactions"))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":s.filters.emojiReactions}])},null,2),Object(r.l)(Object(r.O)(e.$t("settings.notification_visibility_emoji_reactions")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[5]||(t[5]=e=>s.toggleNotificationFilter("moves"))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":s.filters.moves}])},null,2),Object(r.l)(Object(r.O)(e.$t("settings.notification_visibility_moves")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[6]||(t[6]=e=>s.toggleNotificationFilter("polls"))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":s.filters.polls}])},null,2),Object(r.l)(Object(r.O)(e.$t("settings.notification_visibility_polls")),1)])])]),trigger:Object(r.V)(()=>[Object(r.k)("button",de,[Object(r.m)(a,{icon:"filter"})])]),_:1})}]]),Oe=n(99),je=n(101);function ge(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}re.c.add(ie.r);var ve={components:{Notification:le,NotificationFilters:fe},props:{minimalMode:Boolean,filterMode:Array,disableTeleport:Boolean},data:function(){return{bottomedOut:!1,seenToDisplayCount:30}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ge(Object(n),!0).forEach((function(t){b()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ge(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({mainClass:function(){return this.minimalMode?"":"panel panel-default"},notifications:function(){return Object(ee.e)(this.$store)},error:function(){return this.$store.state.statuses.notifications.error},unseenNotifications:function(){return Object(ee.f)(this.$store)},filteredNotifications:function(){return Object(ee.a)(this.$store,this.filterMode)},unseenCount:function(){return this.unseenNotifications.length},unseenCountTitle:function(){return this.unseenCount+this.unreadChatCount},loading:function(){return this.$store.state.statuses.notifications.loading},noHeading:function(){var e=this.$store.state.interface.layoutType;return this.minimalMode||"mobile"===e},teleportTarget:function(){return{wide:"#notifs-column",mobile:"#mobile-notifications"}[this.$store.state.interface.layoutType]||"#notifs-sidebar"},notificationsToDisplay:function(){return this.filteredNotifications.slice(0,this.unseenCount+this.seenToDisplayCount)}},Object(m.c)(["unreadChatCount"])),watch:{unseenCountTitle:function(e){e>0?(je.a.drawFaviconBadge(),this.$store.dispatch("setPageTitle","(".concat(e,")"))):(je.a.clearFaviconBadge(),this.$store.dispatch("setPageTitle",""))}},methods:{markAsSeen:function(){this.$store.dispatch("markNotificationsAsSeen"),this.seenToDisplayCount=30},fetchOlderNotifications:function(){var e=this;if(!this.loading){var t=this.filteredNotifications.length-this.unseenCount;if(this.seenToDisplayCount<t)this.seenToDisplayCount=Math.min(this.seenToDisplayCount+20,t);else{this.seenToDisplayCount>t&&(this.seenToDisplayCount=t);var n=this.$store,r=n.state.users.currentUser.credentials;n.commit("setNotificationsLoading",{value:!0}),Oe.a.fetchAndUpdate({store:n,credentials:r,older:!0}).then((function(t){n.commit("setNotificationsLoading",{value:!1}),0===t.length&&(e.bottomedOut=!0),e.seenToDisplayCount+=t.length}))}}}}};n(558);const ye=ce()(ve,[["render",function(e,t,n,h,b,m){const f=Object(r.J)("NotificationFilters"),O=Object(r.J)("notification"),j=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.h)(r.c,{disabled:e.minimalMode||e.disableTeleport,to:e.teleportTarget},[Object(r.k)("div",{class:Object(r.w)([{minimal:e.minimalMode},"Notifications"])},[Object(r.k)("div",{class:Object(r.w)(e.mainClass)},[e.noHeading?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",i,[Object(r.k)("div",o,[Object(r.l)(Object(r.O)(e.$t("notifications.notifications"))+" ",1),e.unseenCount?(Object(r.D)(),Object(r.j)("span",s,Object(r.O)(e.unseenCount),1)):Object(r.i)("",!0)]),e.unseenCount?(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-default read-button",onClick:t[0]||(t[0]=Object(r.Y)((...t)=>e.markAsSeen&&e.markAsSeen(...t),["prevent"]))},Object(r.O)(e.$t("notifications.read")),1)):Object(r.i)("",!0),Object(r.m)(f)])),Object(r.k)("div",a,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.notificationsToDisplay,t=>(Object(r.D)(),Object(r.j)("div",{key:t.id,class:Object(r.w)(["notification",{unseen:!e.minimalMode&&!t.seen}])},[c,Object(r.m)(O,{notification:t},null,8,["notification"])],2))),128))]),Object(r.k)("div",l,[e.bottomedOut?(Object(r.D)(),Object(r.j)("div",u,Object(r.O)(e.$t("notifications.no_more_notifications")),1)):e.loading?(Object(r.D)(),Object(r.j)("div",p,[Object(r.m)(j,{icon:"circle-notch",spin:"",size:"lg"})])):(Object(r.D)(),Object(r.j)("button",{key:1,class:"button-unstyled -link -fullwidth",onClick:t[1]||(t[1]=Object(r.Y)(t=>e.fetchOlderNotifications(),["prevent"]))},[Object(r.k)("div",d,Object(r.O)(e.minimalMode?e.$t("interactions.load_older"):e.$t("notifications.load_older")),1)]))])],2)],2)],8,["disabled","to"])}]]);t.default=ye},function(e,t,n){"use strict";var r=n(0);const i={class:"gallery-rows"},o={key:0,class:"many-attachments"},s={class:"many-attachments-text"},a={class:"many-attachments-buttons"},c={key:0,class:"many-attachments-button"},l={key:1,class:"many-attachments-button"},u={key:2,class:"many-attachments-button"};var d=n(12),p=n.n(d),h=n(39),b=n.n(h),m=n(134),f=n.n(m),O={props:["attachments","limitRows","descriptions","limit","nsfw","setMedia","size","editable","removeAttachment","shiftUpAttachment","shiftDnAttachment","editAttachment","grid"],data:function(){return{sizes:{},hidingLong:!0}},components:{Attachment:n(58).a},computed:{rows:function(){var e=this;if(!this.attachments)return[];var t=this.limit>0?this.attachments.slice(0,this.limit):this.attachments;if("hide"===this.size)return t.map((function(e){return{minimal:!0,items:[e]}}));var n=this.grid?[{grid:!0,items:t}]:t.reduce((function(t,n,r){if(n.mimetype.includes("audio"))return[].concat(p()(t),[{audio:!0,items:[n]},{items:[]}]);if(!(n.mimetype.includes("image")||n.mimetype.includes("video")||n.mimetype.includes("flash")))return[].concat(p()(t),[{minimal:!0,items:[n]},{items:[]}]);var i=e.attachments.length-r+1,o=t[t.length-1].items;return o.push(n),o.length>=3&&i>3?[].concat(p()(t),[{items:[]}]):t}),[{items:[]}]).filter((function(e){return e.items.length>0}));return n},attachmentsDimensionalScore:function(){return this.rows.reduce((function(e,t){var n=0;return t.minimal?n+=1/8:t.audio?n+=1/4:n+=1/(t.items.length+.6),e+n}),0)},tooManyAttachments:function(){return!this.editable&&"small"!==this.size&&("hide"===this.size?this.attachments.length>8:this.attachmentsDimensionalScore>1)}},methods:{onNaturalSizeLoad:function(e){var t=e.id,n=e.width,r=e.height;b()(this.sizes,t,{width:n,height:r})},rowStyle:function(e){return e.audio?{"padding-bottom":"25%"}:e.minimal||e.grid?void 0:{"padding-bottom":"".concat(100/(e.items.length+.6),"%")}},itemStyle:function(e,t){var n=this,r=f()(t,(function(e){return n.getAspectRatio(e.id)}));return{flex:"".concat(this.getAspectRatio(e)/r," 1 0%")}},getAspectRatio:function(e){var t=this.sizes[e];return t?t.width/t.height:1},toggleHidingLong:function(e){this.hidingLong=e},openGallery:function(){this.$store.dispatch("setMedia",this.attachments),this.$store.dispatch("setCurrentMedia",this.attachments[0])},onMedia:function(){this.$store.dispatch("setMedia",this.attachments)}}},j=(n(510),n(4));const g=n.n(j)()(O,[["render",function(e,t,n,d,p,h){const b=Object(r.J)("Attachment");return Object(r.D)(),Object(r.j)("div",{ref:"galleryContainer",class:Object(r.w)(["Gallery",{"-long":e.tooManyAttachments&&e.hidingLong}])},[Object(r.k)("div",i,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.rows,(t,n)=>(Object(r.D)(),Object(r.j)("div",{key:n,class:Object(r.w)(["gallery-row",{"-audio":t.audio,"-minimal":t.minimal,"-grid":e.grid}]),style:Object(r.x)(e.rowStyle(t))},[Object(r.k)("div",{class:Object(r.w)(["gallery-row-inner",{"-grid":e.grid}])},[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(t.items,(i,o)=>(Object(r.D)(),Object(r.h)(b,{key:i.id,class:"gallery-item",nsfw:e.nsfw,attachment:i,size:e.size,editable:e.editable,remove:e.removeAttachment,"shift-up":!(0===o&&0===n)&&e.shiftUpAttachment,"shift-dn":!(o===t.items.length-1&&n===e.rows.length-1)&&e.shiftDnAttachment,edit:e.editAttachment,description:e.descriptions&&e.descriptions[i.id],"hide-description":"small"===e.size||e.tooManyAttachments&&e.hidingLong,style:Object(r.x)(e.itemStyle(i.id,t.items)),onSetMedia:e.onMedia,onNaturalSizeLoad:e.onNaturalSizeLoad},null,8,["nsfw","attachment","size","editable","remove","shift-up","shift-dn","edit","description","hide-description","style","onSetMedia","onNaturalSizeLoad"]))),128))],2)],6))),128))]),e.tooManyAttachments?(Object(r.D)(),Object(r.j)("div",o,[Object(r.k)("div",s,Object(r.O)(e.$t("status.many_attachments",{number:e.attachments.length})),1),Object(r.k)("div",a,[e.hidingLong?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("span",c,[Object(r.k)("button",{class:"button-unstyled -link",onClick:t[0]||(t[0]=t=>e.toggleHidingLong(!0))},Object(r.O)(e.$t("status.collapse_attachments")),1)])),e.hidingLong?(Object(r.D)(),Object(r.j)("span",l,[Object(r.k)("button",{class:"button-unstyled -link",onClick:t[1]||(t[1]=t=>e.toggleHidingLong(!1))},Object(r.O)(e.$t("status.show_all_attachments")),1)])):Object(r.i)("",!0),e.hidingLong?(Object(r.D)(),Object(r.j)("span",u,[Object(r.k)("button",{class:"button-unstyled -link",onClick:t[2]||(t[2]=(...t)=>e.openGallery&&e.openGallery(...t))},Object(r.O)(e.$t("status.open_gallery")),1)])):Object(r.i)("",!0)])])):Object(r.i)("",!0)],2)}]]);t.a=g},function(e,t,n){"use strict";var r=n(0);const i={class:"MentionLink"},o=["href","innerHTML"],s=["href"],a={class:"shortName"},c=Object(r.l)("@"),l=["innerHTML"],u=["innerHTML"],d={class:"userNameFull"},p=Object(r.l)(" @"),h=["innerHTML"],b=["innerHTML"];var m=n(40),f=n.n(m),O=n(5),j=n.n(O),g=n(23),v=n(8),y=n(31),w=n(22),k=n(6),_=n(3),S=["backgroundColor","backgroundPosition","backgroundImage"];function C(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function P(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?C(Object(n),!0).forEach((function(t){j()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):C(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}k.c.add(_.f);var x={name:"MentionLink",components:{UserAvatar:w.default},props:{url:{required:!0,type:String},content:{required:!0,type:String},userId:{required:!1,type:String},userScreenName:{required:!1,type:String}},methods:{onClick:function(){var e=Object(g.a)(this.userId||this.user.id,this.userScreenName||this.user.screen_name);this.$router.push(e)}},computed:P(P({user:function(){return this.url&&this.$store&&this.$store.getters.findUserByUrl(this.url)},isYou:function(){return this.user&&this.user.id===this.currentUser.id},userName:function(){return this.user&&this.userNameFullUi.split("@")[0]},serverName:function(){return this.user&&(this.userNameFullUi.split("@")[1]||this.$store.getters.instanceDomain)},userNameFull:function(){return this.user&&this.user.screen_name},userNameFullUi:function(){return this.user&&this.user.screen_name_ui},highlight:function(){return this.user&&this.mergedConfig.highlight[this.user.screen_name]},highlightType:function(){return this.highlight&&"-"+this.highlight.type},highlightClass:function(){if(this.highlight)return Object(y.a)(this.user)},style:function(){if(this.highlight){var e=Object(y.b)(this.highlight);e.backgroundColor,e.backgroundPosition,e.backgroundImage;return f()(e,S)}},classnames:function(){return[{"-you":this.isYou&&this.shouldBoldenYou,"-highlighted":this.highlight},this.highlightType]},useAtIcon:function(){return this.mergedConfig.useAtIcon},isRemote:function(){return this.userName!==this.userNameFull},shouldShowFullUserName:function(){var e=this.mergedConfig.mentionLinkDisplay;return"short"!==e&&("full"===e||this.isRemote)},shouldShowTooltip:function(){return this.mergedConfig.mentionLinkShowTooltip&&"short"===this.mergedConfig.mentionLinkDisplay&&this.isRemote},shouldShowAvatar:function(){return this.mergedConfig.mentionLinkShowAvatar},shouldShowYous:function(){return this.mergedConfig.mentionLinkShowYous},shouldBoldenYou:function(){return this.mergedConfig.mentionLinkBoldenYou},shouldFadeDomain:function(){return this.mergedConfig.mentionLinkFadeDomain}},Object(v.c)(["mergedConfig"])),Object(v.e)({currentUser:function(e){return e.users.currentUser}}))},D=(n(513),n(4));const T=n.n(D)()(x,[["render",function(e,t,n,m,f,O){return Object(r.D)(),Object(r.j)("span",i,[e.user?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("a",{key:0,href:e.url,class:"original",target:"_blank",innerHTML:e.content},null,8,o)),e.user?(Object(r.D)(),Object(r.j)("span",{key:1,class:Object(r.w)(["new",e.classnames]),style:Object(r.x)(e.style)},[Object(r.k)("a",{class:Object(r.w)(["short button-unstyled",{"-with-tooltip":e.shouldShowTooltip}]),href:e.url,onClick:t[0]||(t[0]=Object(r.Y)((...t)=>e.onClick&&e.onClick(...t),["prevent"]))},[Object(r.k)("span",a,[c,Object(r.k)("span",{class:"userName",innerHTML:e.userName},null,8,l),e.shouldShowFullUserName?(Object(r.D)(),Object(r.j)("span",{key:0,class:Object(r.w)(["serverName",{"-faded":e.shouldFadeDomain}]),innerHTML:"@"+e.serverName},null,10,u)):Object(r.i)("",!0)]),e.isYou&&e.shouldShowYous?(Object(r.D)(),Object(r.j)("span",{key:0,class:Object(r.w)({"-you":e.shouldBoldenYou})},Object(r.O)(" "+e.$t("status.you")),3)):Object(r.i)("",!0)],10,s),e.shouldShowTooltip?(Object(r.D)(),Object(r.j)("span",{key:0,class:Object(r.w)(["full popover-default",[e.highlightType]])},[Object(r.k)("span",d,[p,Object(r.k)("span",{class:"userName",innerHTML:e.userName},null,8,h),Object(r.k)("span",{class:Object(r.w)(["serverName",{"-faded":e.shouldFadeDomain}]),innerHTML:"@"+e.serverName},null,10,b)])],2)):Object(r.i)("",!0)],6)):Object(r.i)("",!0)])}]]);t.a=T},,function(e,t,n){"use strict";n.d(t,"a",(function(){return p}));var r=n(0);const i={class:"MentionsLine"},o={key:0,class:"extraMentions"},s={key:0,class:"fullExtraMentions"};var a=n(5),c=n.n(a),l=n(79),u=n(8);function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var p=5,h={name:"MentionsLine",props:{mentions:{required:!0,type:Array}},data:function(){return{expanded:!1}},components:{MentionLink:l.a},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?d(Object(n),!0).forEach((function(t){c()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):d(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({mentionsComputed:function(){return this.mentions.slice(0,p)},extraMentions:function(){return this.mentions.slice(p)},manyMentions:function(){return this.extraMentions.length>0}},Object(u.c)(["mergedConfig"])),methods:{toggleShowMore:function(){this.expanded=!this.expanded}}},b=(n(514),n(4));const m=n.n(b)()(h,[["render",function(e,t,n,a,c,l){const u=Object(r.J)("MentionLink");return Object(r.D)(),Object(r.j)("span",i,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.mentionsComputed,e=>(Object(r.D)(),Object(r.h)(u,{key:e.index,class:"mention-link",content:e.content,url:e.url},null,8,["content","url"]))),128)),e.manyMentions?(Object(r.D)(),Object(r.j)("span",o,[e.expanded?(Object(r.D)(),Object(r.j)("span",s,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.extraMentions,e=>(Object(r.D)(),Object(r.h)(u,{key:e.index,class:"mention-link",content:e.content,url:e.url},null,8,["content","url"]))),128))])):Object(r.i)("",!0),e.expanded?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("button",{key:1,class:"button-unstyled showMoreLess",onClick:t[0]||(t[0]=(...t)=>e.toggleShowMore&&e.toggleShowMore(...t))},Object(r.O)(e.$t("status.plus_more",{number:e.extraMentions.length})),1)),e.expanded?(Object(r.D)(),Object(r.j)("button",{key:2,class:"button-unstyled showMoreLess",onClick:t[1]||(t[1]=(...t)=>e.toggleShowMore&&e.toggleShowMore(...t))},Object(r.O)(e.$t("general.show_less")),1)):Object(r.i)("",!0)])):Object(r.i)("",!0)])}]]);t.b=m},,,,,,,,,,,,,,,function(e,t,n){"use strict";var r={fileSizeFormat:function(e){var t,n=["B","KiB","MiB","GiB","TiB"];return e<1?e+" "+n[0]:(t=Math.min(Math.floor(Math.log(e)/Math.log(1024)),n.length-1),{num:e=1*(e/Math.pow(1024,t)).toFixed(2),unit:n[t]})}};t.a=r},,,function(e,t,n){"use strict";var r=n(12),i=n.n(r),o=n(15),s=n(44),a=function(e){var t=e.store,n=e.credentials,r=e.older,o=void 0!==r&&r,s=e.since,a={credentials:n},l=t.getters,u=(t.rootState||t.state).statuses.notifications,d=l.mergedConfig.hideMutedPosts;if(a.withMuted=!d,a.timeline="notifications",o)return u.minId!==Number.POSITIVE_INFINITY&&(a.until=u.minId),c({store:t,args:a,older:o});void 0===s&&u.maxId!==Number.POSITIVE_INFINITY?a.since=u.maxId:null!==s&&(a.since=s);var p=c({store:t,args:a,older:o}),h=u.data,b=h.filter((function(e){return e.seen})).map((function(e){return e.id}));return h.length-b.length>0&&b.length>0&&(a.since=Math.max.apply(Math,i()(b)),c({store:t,args:a,older:o})),p},c=function(e){var t=e.store,n=e.args,r=e.older;return o.c.fetchTimeline(n).then((function(e){if(e.errors)throw new Error("".concat(e.status," ").concat(e.statusText));var n=e.data;return function(e){var t=e.store,n=e.notifications,r=e.older;t.dispatch("addNewNotifications",{notifications:n,older:r})}({store:t,notifications:n,older:r}),n})).catch((function(e){t.dispatch("pushGlobalNotice",{level:"error",messageKey:"notifications.error",messageArgs:[e.message],timeout:5e3})}))},l={fetchAndUpdate:a,startFetching:function(e){var t=e.credentials,n=e.store;setTimeout((function(){return n.dispatch("setNotificationsSilence",!1)}),1e4);var r=function(){return a({credentials:t,store:n})};return r(),Object(s.a)(r,2e4)}};t.a=l},,function(e,t,n){"use strict";var r,i,o,s=(r=[],i=function(e){return e.complete&&0!==e.naturalHeight},{initFaviconService:function(){document.querySelectorAll('link[rel="icon"]').forEach((function(e){if(e){var t=document.createElement("canvas");t.width=128,t.height=128;var n=new Image;n.crossOrigin="anonymous",n.src=e.href;var i=t.getContext("2d");r.push({favcanvas:t,favimg:n,favcontext:i,favicon:e})}}))},clearFaviconBadge:o=function(){0!==r.length&&r.forEach((function(e){var t=e.favimg,n=e.favcanvas,r=e.favcontext,o=e.favicon;t&&r&&o&&(r.clearRect(0,0,128,128),i(t)&&r.drawImage(t,0,0,t.width,t.height,0,0,128,128),o.href=n.toDataURL("image/png"))}))},drawFaviconBadge:function(){0!==r.length&&(o(),r.forEach((function(e){var t=e.favimg,n=e.favcanvas,r=e.favcontext,o=e.favicon;if(t&&r&&r){var s=getComputedStyle(document.body),a="".concat(s.getPropertyValue("--badgeNotification")||"rgb(240, 100, 100)");i(t)&&r.drawImage(t,0,0,t.width,t.height,0,0,128,128),r.fillStyle=a,r.beginPath(),r.arc(96,32,32,0,2*Math.PI,!1),r.fill(),o.href=n.toDataURL("image/png")}})))}});t.a=s},,,function(e,t,n){"use strict";var r=n(0);const i=["disabled"];var o={props:{disabled:{type:Boolean},click:{type:Function,default:function(){return Promise.resolve()}}},data:function(){return{progress:!1}},methods:{onClick:function(){var e=this;this.progress=!0,this.click().then((function(){e.progress=!1}))}}},s=n(4);const a=n.n(s)()(o,[["render",function(e,t,n,o,s,a){return Object(r.D)(),Object(r.j)("button",{disabled:s.progress||n.disabled,onClick:t[0]||(t[0]=(...e)=>a.onClick&&a.onClick(...e))},[s.progress&&e.$slots.progress?Object(r.I)(e.$slots,"progress",{key:0}):Object(r.I)(e.$slots,"default",{key:1})],8,i)}]]);t.a=a},,,,,,,,,,,,,,,,,function(e,t,n){"use strict";n.d(t,"b",(function(){return f})),n.d(t,"c",(function(){return O}));var r=n(5),i=n.n(r),o=n(11),s=n.n(o),a=n(317),c=n.n(a),l=n(43),u=n(70),d=n(38);function p(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return h(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return h(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function b(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function m(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?b(Object(n),!0).forEach((function(t){i()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):b(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var f={expertLevel:0,colors:{},theme:void 0,customTheme:void 0,customThemeSource:void 0,hideISP:!1,hideInstanceWallpaper:!1,hideShoutbox:!1,hideMutedPosts:void 0,hideMutedThreads:void 0,hideWordFilteredPosts:void 0,muteBotStatuses:void 0,collapseMessageWithSubject:void 0,padEmoji:!0,hideAttachments:!1,hideAttachmentsInConv:!1,maxThumbnails:16,hideNsfw:!0,preloadImage:!0,loopVideo:!0,loopVideoSilentOnly:!0,streaming:!1,emojiReactionsOnTimeline:!0,alwaysShowNewPostButton:!1,autohideFloatingPostButton:!1,pauseOnUnfocused:!0,stopGifs:!0,replyVisibility:"all",thirdColumnMode:"notifications",notificationVisibility:{follows:!0,mentions:!0,likes:!0,repeats:!0,moves:!0,emojiReactions:!0,followRequest:!0,chatMention:!0,polls:!0},webPushNotifications:!1,muteWords:[],highlight:{},interfaceLanguage:(window.navigator.language||"en").split("-")[0],hideScopeNotice:!1,useStreamingApi:!0,sidebarRight:void 0,scopeCopy:void 0,subjectLineBehavior:void 0,alwaysShowSubjectInput:void 0,postContentType:void 0,minimalScopesMode:void 0,hideFilteredStatuses:void 0,playVideosInModal:!1,useOneClickNsfw:!1,useContainFit:!0,disableStickyHeaders:!1,showScrollbars:!1,greentext:void 0,useAtIcon:void 0,mentionLinkDisplay:void 0,mentionLinkShowTooltip:void 0,mentionLinkShowAvatar:void 0,mentionLinkFadeDomain:void 0,mentionLinkShowYous:void 0,mentionLinkBoldenYou:void 0,hidePostStats:void 0,hideBotIndication:void 0,hideUserStats:void 0,virtualScrolling:void 0,sensitiveByDefault:void 0,sensitiveIfSubject:void 0,renderMisskeyMarkdown:void 0,conversationDisplay:void 0,conversationTreeAdvanced:void 0,conversationOtherRepliesButton:void 0,conversationTreeFadeAncestors:void 0,maxDepthInThread:void 0},O=Object.entries(f).filter((function(e){var t=s()(e,2);t[0];return void 0===t[1]})).map((function(e){var t=s()(e,2),n=t[0];t[1];return n})),j={state:m({},f),getters:{defaultConfig:function(e,t,n,r){var i=n.instance;return m(m({},f),Object.fromEntries(O.map((function(e){return[e,i[e]]}))))},mergedConfig:function(e,t,n,r){return m(m({},r.defaultConfig),Object.fromEntries(Object.entries(e).filter((function(e){var t=s()(e,2);t[0];return void 0!==t[1]}))))}},mutations:{setOption:function(e,t){var n=t.name,r=t.value;e[n]=r},setHighlight:function(e,t){var n=t.user,r=t.color,i=t.type,o=this.state.config.highlight[n];r||i?e.highlight[n]={color:r||o.color,type:i||o.type}:delete e.highlight[n]}},actions:{loadSettings:function(e,t){var n,r=e.dispatch,i=new Set(Object.keys(f)),o=new Set(Object.keys(t)),s=new Set,a=p(o);try{for(a.s();!(n=a.n()).done;){var c=n.value;i.has(c)&&s.add(c)}}catch(e){a.e(e)}finally{a.f()}s.forEach((function(e){return r("setOption",{name:e,value:t[e]})}))},setHighlight:function(e,t){var n=e.commit;e.dispatch;n("setHighlight",{user:t.user,color:t.color,type:t.type})},setOption:function(e,t){var n=e.commit,r=e.dispatch,i=t.name,o=t.value;switch(n("setOption",{name:i,value:o}),i){case"theme":Object(l.l)(o);break;case"customTheme":case"customThemeSource":Object(l.b)(o);break;case"interfaceLanguage":u.a.setLanguage(this.getters.i18n,o),c.a.set("userLanguage",d.a.internalToBackendLocale(o));break;case"thirdColumnMode":r("setLayoutWidth",void 0)}}}};t.a=j},,,,,function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var r=n(49),i=n.n(r),o=function(e,t){var n=e.text.toLowerCase(),r=e.summary.toLowerCase();return i()(t,(function(e){return n.includes(e.toLowerCase())||r.includes(e.toLowerCase())}))}},function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r=function(e,t){if("Notification"in window&&"granted"===window.Notification.permission&&!e.statuses.notifications.desktopNotificationSilence){var n=new window.Notification(t.title,t);setTimeout(n.close.bind(n),5e3)}}},,,,,,,,,,function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r=function e(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=r.top,s=void 0===o?0:o,a=r.left,c=void 0===a?0:a,l=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],u={top:s+t.offsetTop,left:c+t.offsetLeft};if(!l&&t!==window){var d=i(t),p=d.topPadding,h=d.leftPadding;u.top+=l?0:p,u.left+=l?0:h}if(t.offsetParent&&"sticky"!==window.getComputedStyle(t.offsetParent).position&&(n===window||n.contains(t.offsetParent)||n===t.offsetParent))return e(t.offsetParent,n,u,!1);if(n!==window){var b=i(n),m=b.topPadding,f=b.leftPadding;u.top+=m,u.left+=f}return u},i=function(e){var t=window.getComputedStyle(e)["padding-top"],n=Number(t.substring(0,t.length-2)),r=window.getComputedStyle(e)["padding-left"];return{topPadding:n,leftPadding:Number(r.substring(0,r.length-2))}}},function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return i}));var r=function(e){var t=e.filename,n=void 0===t?"data":t,r=e.getExportedObject;return{exportData:function(){var e=JSON.stringify(r(),null,2),t=document.createElement("a");t.setAttribute("download","".concat(n,".json")),t.setAttribute("href","data:application/json;base64,"+window.btoa(e)),t.style.display="none",document.body.appendChild(t),t.click(),document.body.removeChild(t)}}},i=function(e){var t=e.onImport,n=e.onImportFailure,r=e.validator,i=void 0===r?function(){return!0}:r;return{importData:function(){var e=document.createElement("input");e.setAttribute("type","file"),e.setAttribute("accept",".json"),e.addEventListener("change",(function(e){if(e.target.files[0]){var r=new FileReader;r.onload=function(e){var r=e.target;try{var o=JSON.parse(r.result),s=i(o);!0===s?t(o):n({validationResult:s})}catch(e){n({error:e})}},r.readAsText(e.target.files[0])}})),document.body.appendChild(e),e.click(),document.body.removeChild(e)}}}},function(e,t,n){"use strict";var r=n(0);const i={class:"Flash"},o={key:0,class:"label"},s={key:1,class:"label"},a={key:2,class:"label"};var c,l=(c=null,{getRuffle:function(){return new Promise((function(e,t){if(c)e(c);else{window.RufflePlayer={},window.RufflePlayer.config={polyfills:!1,publicPath:"/static/ruffle"};var n=document.createElement("script");n.src="/static/ruffle/ruffle.js",n.type="text/javascript",n.onerror=function(e){t(e)},n.onabort=function(e){t(e)},n.oncancel=function(e){t(e)},n.onload=function(){c=window.RufflePlayer,e(c)},document.body.appendChild(n)}}))}}),u=n(6),d=n(3);u.c.add(d.lb,d.z);var p={props:["src"],data:function(){return{player:!1,loaded:!1,ruffleInstance:null}},methods:{openPlayer:function(){var e=this;this.player||(this.player="hidden",l.getRuffle().then((function(t){var n=t.newest().createPlayer();n.config={letterbox:"on"},e.$refs.container.appendChild(n),n.style.width="100%",n.style.height="100%",n.load(e.src).then((function(){e.player=!0})).catch((function(t){console.error("Error loading ruffle",t),e.player="error"})),e.ruffleInstance=n,e.$emit("playerOpened")})))},closePlayer:function(){this.ruffleInstance&&this.ruffleInstance.remove(),this.player=!1,this.$emit("playerClosed")}}},h=(n(508),n(4));const b=n.n(h)()(p,[["render",function(e,t,n,c,l,u){const d=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("div",i,[!0===e.player||"hidden"===e.player?(Object(r.D)(),Object(r.j)("div",{key:0,ref:"container",class:Object(r.w)(["player",{hidden:"hidden"===e.player}])},null,2)):Object(r.i)("",!0),!0!==e.player?(Object(r.D)(),Object(r.j)("button",{key:1,class:"button-unstyled placeholder",onClick:t[0]||(t[0]=(...t)=>e.openPlayer&&e.openPlayer(...t))},["hidden"===e.player?(Object(r.D)(),Object(r.j)("span",o,Object(r.O)(e.$t("general.loading")),1)):Object(r.i)("",!0),"error"===e.player?(Object(r.D)(),Object(r.j)("span",s,Object(r.O)(e.$t("general.flash_fail")),1)):(Object(r.D)(),Object(r.j)("span",a,[Object(r.k)("p",null,Object(r.O)(e.$t("general.flash_content")),1),Object(r.k)("p",null,[Object(r.m)(d,{icon:"exclamation-triangle"}),Object(r.l)(" "+Object(r.O)(e.$t("general.flash_security")),1)])]))])):Object(r.i)("",!0)])}]]);t.a=b},function(e,t,n){"use strict";var r=n(0);const i=["disabled","title"];var o=n(11),s=n.n(o),a=function(e,t){return new Promise((function(n,r){t.state.api.backendInteractor.followUser({id:e}).then((function(e){if(t.commit("updateUserRelationship",[e]),!(e.following||e.locked&&e.requested))return function e(t,n,r){return new Promise((function(e,i){setTimeout((function(){r.state.api.backendInteractor.fetchUserRelationship({id:n}).then((function(e){return r.commit("updateUserRelationship",[e]),e})).then((function(n){return e([n.following,n.requested,n.locked,t])})).catch((function(e){return i(e)}))}),500)})).then((function(t){var i=s()(t,4),o=i[0],a=i[1],c=i[2],l=i[3];o||c&&a||!(l<=3)||e(++l,n,r)}))}(1,e,t).then((function(){n()}));n()}))}))},c={props:["relationship","user","labelFollowing","buttonClass"],data:function(){return{inProgress:!1}},computed:{isPressed:function(){return this.inProgress||this.relationship.following},title:function(){return this.inProgress||this.relationship.following?this.$t("user_card.follow_unfollow"):this.relationship.requested?this.$t("user_card.follow_cancel"):this.$t("user_card.follow")},label:function(){return this.inProgress?this.$t("user_card.follow_progress"):this.relationship.following?this.labelFollowing||this.$t("user_card.following"):this.relationship.requested?this.$t("user_card.follow_sent"):this.$t("user_card.follow")},disabled:function(){return this.inProgress||this.user.deactivated}},methods:{onClick:function(){this.relationship.following||this.relationship.requested?this.unfollow():this.follow()},follow:function(){var e=this;this.inProgress=!0,a(this.relationship.id,this.$store).then((function(){e.inProgress=!1}))},unfollow:function(){var e=this,t=this.$store;this.inProgress=!0,function(e,t){return new Promise((function(n,r){t.state.api.backendInteractor.unfollowUser({id:e}).then((function(e){t.commit("updateUserRelationship",[e]),n({updated:e})}))}))}(this.relationship.id,t).then((function(){e.inProgress=!1,t.commit("removeStatus",{timeline:"friends",userId:e.relationship.id})}))}}},l=n(4);const u=n.n(l)()(c,[["render",function(e,t,n,o,s,a){return Object(r.D)(),Object(r.j)("button",{class:Object(r.w)(["btn button-default follow-button",{toggled:e.isPressed}]),disabled:e.disabled,title:e.title,onClick:t[0]||(t[0]=(...t)=>e.onClick&&e.onClick(...t))},Object(r.O)(e.label),11,i)}]]);t.a=u},function(e,t,n){"use strict";var r=n(0);const i=["src","loop","controls","alt","title"];var o={props:["attachment","controls"],data:function(){return{blocksSuspend:!1,hasAudio:!0}},computed:{loopVideo:function(){return this.$store.getters.mergedConfig.loopVideoSilentOnly?!this.hasAudio:this.$store.getters.mergedConfig.loopVideo}},methods:{onPlaying:function(e){this.setHasAudio(e),this.loopVideo?this.$emit("play",{looping:!0}):this.$emit("play")},onPaused:function(e){this.$emit("pause")},setHasAudio:function(e){var t=e.srcElement||e.target;this.hasAudio&&(void 0!==t.webkitAudioDecodedByteCount&&t.webkitAudioDecodedByteCount>0||void 0!==t.mozHasAudio&&t.mozHasAudio||void 0!==t.audioTracks&&t.audioTracks.length>0||(this.hasAudio=!1))}}},s=n(4);const a=n.n(s)()(o,[["render",function(e,t,n,o,s,a){return Object(r.D)(),Object(r.j)("video",{class:"video",preload:"metadata",src:e.attachment.url,loop:e.loopVideo,controls:e.controls,alt:e.attachment.description,title:e.attachment.description,playsinline:"",onPlaying:t[0]||(t[0]=(...t)=>e.onPlaying&&e.onPlaying(...t)),onPause:t[1]||(t[1]=(...t)=>e.onPaused&&e.onPaused(...t))},null,40,i)}]]);t.a=a},function(e,t,n){"use strict";var r=n(0);const i=["href"],o={key:0,class:"card-image"},s=["src"],a={class:"card-content"},c={class:"card-host faint"},l={key:0,class:"nsfw-alert alert warning"},u={class:"card-title"},d={key:0,class:"card-description"};var p=n(5),h=n.n(p),b=n(8);function m(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var f={name:"LinkPreview",props:["card","size","nsfw"],data:function(){return{imageLoaded:!1}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?m(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):m(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({useImage:function(){return this.card.image&&!this.censored&&"hide"!==this.size},censored:function(){return this.nsfw&&this.hideNsfwConfig},useDescription:function(){return this.card.description&&/\S/.test(this.card.description)},hideNsfwConfig:function(){return this.mergedConfig.hideNsfw}},Object(b.c)(["mergedConfig"])),created:function(){var e=this;if(this.useImage){var t=new Image;t.onload=function(){e.imageLoaded=!0},t.src=this.card.image}}},O=(n(522),n(4));const j=n.n(O)()(f,[["render",function(e,t,n,p,h,b){return Object(r.D)(),Object(r.j)("div",null,[Object(r.k)("a",{class:"link-preview-card",href:e.card.url,target:"_blank",rel:"noopener"},[e.useImage&&e.imageLoaded?(Object(r.D)(),Object(r.j)("div",o,[Object(r.k)("img",{src:e.card.image},null,8,s)])):Object(r.i)("",!0),Object(r.k)("div",a,[Object(r.k)("span",c,[e.censored?(Object(r.D)(),Object(r.j)("span",l,Object(r.O)(e.$t("status.nsfw")),1)):Object(r.i)("",!0),Object(r.l)(" "+Object(r.O)(e.card.provider_name),1)]),Object(r.k)("h4",u,Object(r.O)(e.card.title),1),e.useDescription?(Object(r.D)(),Object(r.j)("p",d,Object(r.O)(e.card.description),1)):Object(r.i)("",!0)])],8,i)])}]]);t.a=j},function(e,t,n){"use strict";var r=n(0);const i={class:"remote-follow"},o=["action"],s=["value"],a=Object(r.k)("input",{type:"hidden",name:"profile",value:""},null,-1),c={click:"submit",class:"button-default remote-button"};var l={props:["user"],computed:{subscribeUrl:function(){var e=new URL(this.user.statusnet_profile_url);return"".concat(e.protocol,"//").concat(e.host,"/main/ostatus")}}},u=(n(525),n(4));const d=n.n(u)()(l,[["render",function(e,t,n,l,u,d){return Object(r.D)(),Object(r.j)("div",i,[Object(r.k)("form",{method:"POST",action:e.subscribeUrl},[Object(r.k)("input",{type:"hidden",name:"nickname",value:e.user.screen_name},null,8,s),a,Object(r.k)("button",c,Object(r.O)(e.$t("user_card.remote_follow")),1)],8,o)])}]]);t.a=d},function(e,t,n){"use strict";var r=n(0);const i={class:"avatars"};var o=n(22),s=n(23),a={props:["users"],computed:{slicedUsers:function(){return this.users?this.users.slice(0,15):[]}},components:{UserAvatar:o.default},methods:{userProfileLink:function(e){return Object(s.a)(e.id,e.screen_name,this.$store.state.instance.restrictedNicknames)}}},c=(n(551),n(4));const l=n.n(c)()(a,[["render",function(e,t,n,o,s,a){const c=Object(r.J)("UserAvatar"),l=Object(r.J)("router-link");return Object(r.D)(),Object(r.j)("div",i,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.slicedUsers,t=>(Object(r.D)(),Object(r.h)(l,{key:t.id,to:e.userProfileLink(t),class:"avatars-item"},{default:Object(r.V)(()=>[Object(r.m)(c,{user:t,class:"avatar-small"},null,8,["user"])]),_:2},1032,["to"]))),128))])}]]);t.a=l},,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";var r=n(13),i=n.n(r),o=n(10),s=n.n(o);t.a=function(e){var t=a(e.emoji),n=e.store&&c(e.store);return function(r){var i=r[0];return":"===i&&e.emoji?t(r):"@"===i&&n?n(r):[]}};var a=function(e){return function(t){var n=t.toLowerCase().substr(1);return e.filter((function(e){return e.displayText.toLowerCase().match(n)})).sort((function(e,t){var r=0,i=0;return r+=e.displayText.toLowerCase()===n?200:0,i+=t.displayText.toLowerCase()===n?200:0,r+=e.imageUrl?100:0,i+=t.imageUrl?100:0,r+=e.displayText.toLowerCase().startsWith(n)?10:0,i+=t.displayText.toLowerCase().startsWith(n)?10:0,r-=e.displayText.length,(i-=t.displayText.length)-r+(e.displayText>t.displayText?.5:-.5)}))}},c=function(e){var t,n=e.dispatch,r=e.state,o=[],a="",c=null,l=null,u=function(e){return l&&l(),new Promise((function(t,r){c=setTimeout((function(){(function(e){return n("searchUsers",{query:e})})(e).then(t).catch(r)}),300),l=function(){clearTimeout(c),t([])}}))};return t=i()(s.a.mark((function e(t){var n,i;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.toLowerCase().substr(1),a!==n){e.next=3;break}return e.abrupt("return",o);case 3:if(o=[],a=n,n.includes("@")){e.next=8;break}return e.next=8,u(n);case 8:return i=r.users.users.filter((function(e){return e.screen_name.toLowerCase().startsWith(n)||e.name.toLowerCase().startsWith(n)})).slice(0,20).sort((function(e,t){var r=0,i=0;return r+=e.screen_name.toLowerCase().startsWith(n)?2:0,i+=t.screen_name.toLowerCase().startsWith(n)?2:0,r+=e.name.toLowerCase().startsWith(n)?1:0,10*((i+=t.name.toLowerCase().startsWith(n)?1:0)-r)+(e.name>t.name?1:-1)+(e.screen_name>t.screen_name?1:-1)})).map((function(e){var t=e.screen_name;return{displayText:e.screen_name_ui,detailText:e.name,imageUrl:e.profile_image_url_original,replacement:"@"+t+" "}})),o=i||[],e.abrupt("return",o);case 11:case"end":return e.stop()}}),e)}))),function(e){return t.apply(this,arguments)}}},,,,,,,function(e,t,n){"use strict";var r=n(0);const i={for:"interface-language-switcher"},o=Object(r.l)(" "+Object(r.O)(" ")+" "),s=["value"];var a=n(38),c={components:{Select:n(52).a},props:{promptText:{type:String,required:!0},language:{type:String,required:!0},setLanguage:{type:Function,required:!0}},computed:{languages:function(){return a.a.languages},controlledLanguage:{get:function(){return this.language},set:function(e){this.setLanguage(e)}}},methods:{getLanguageName:function(e){return a.a.getLanguageName(e)}}},l=n(4);const u=n.n(l)()(c,[["render",function(e,t,n,a,c,l){const u=Object(r.J)("Select");return Object(r.D)(),Object(r.j)("div",null,[Object(r.k)("label",i,Object(r.O)(n.promptText),1),o,Object(r.m)(u,{id:"interface-language-switcher",modelValue:l.controlledLanguage,"onUpdate:modelValue":t[0]||(t[0]=e=>l.controlledLanguage=e)},{default:Object(r.V)(()=>[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(l.languages,e=>(Object(r.D)(),Object(r.j)("option",{key:e.code,value:e.code},Object(r.O)(e.name),9,s))),128))]),_:1},8,["modelValue"])])}]]);t.a=u},function(e,t,n){"use strict";var r=n(0);const i={key:0,class:"ScopeSelector"},o=["title"],s=Object(r.l)(" "+Object(r.O)(" ")+" "),a=["title"],c=Object(r.l)(" "+Object(r.O)(" ")+" "),l=["title"],u=Object(r.l)(" "+Object(r.O)(" ")+" "),d=["title"],p=["title"];var h=n(6),b=n(3);h.c.add(b.y,b.I,b.O,b.P);var m={props:["showAll","userDefault","originalScope","initialScope","onScopeChange"],data:function(){return{currentScope:this.initialScope}},computed:{showNothing:function(){return!(this.showPublic||this.showUnlisted||this.showPrivate||this.showDirect)},showPublic:function(){return"direct"!==this.originalScope&&this.shouldShow("public")},showLocal:function(){return"direct"!==this.originalScope&&this.shouldShow("local")},showUnlisted:function(){return"direct"!==this.originalScope&&this.shouldShow("unlisted")},showPrivate:function(){return"direct"!==this.originalScope&&this.shouldShow("private")},showDirect:function(){return this.shouldShow("direct")},css:function(){return{public:{selected:"public"===this.currentScope},unlisted:{selected:"unlisted"===this.currentScope},private:{selected:"private"===this.currentScope},direct:{selected:"direct"===this.currentScope},local:{selected:"local"===this.currentScope}}}},methods:{shouldShow:function(e){return this.showAll||this.currentScope===e||this.originalScope===e||this.userDefault===e||"direct"===e},changeVis:function(e){this.currentScope=e,this.onScopeChange&&this.onScopeChange(e)}}},f=(n(501),n(4));const O=n.n(f)()(m,[["render",function(e,t,n,h,b,m){const f=Object(r.J)("FAIcon");return e.showNothing?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",i,[e.showDirect?(Object(r.D)(),Object(r.j)("button",{key:0,class:Object(r.w)(["button-unstyled scope",e.css.direct]),title:e.$t("post_status.scope.direct"),type:"button",onClick:t[0]||(t[0]=t=>e.changeVis("direct"))},[Object(r.m)(f,{icon:"envelope",class:"fa-scale-110 fa-old-padding"})],10,o)):Object(r.i)("",!0),s,e.showPrivate?(Object(r.D)(),Object(r.j)("button",{key:1,class:Object(r.w)(["button-unstyled scope",e.css.private]),title:e.$t("post_status.scope.private"),type:"button",onClick:t[1]||(t[1]=t=>e.changeVis("private"))},[Object(r.m)(f,{icon:"lock",class:"fa-scale-110 fa-old-padding"})],10,a)):Object(r.i)("",!0),c,e.showUnlisted?(Object(r.D)(),Object(r.j)("button",{key:2,class:Object(r.w)(["button-unstyled scope",e.css.unlisted]),title:e.$t("post_status.scope.unlisted"),type:"button",onClick:t[2]||(t[2]=t=>e.changeVis("unlisted"))},[Object(r.m)(f,{icon:"lock-open",class:"fa-scale-110 fa-old-padding"})],10,l)):Object(r.i)("",!0),u,e.showPublic?(Object(r.D)(),Object(r.j)("button",{key:3,class:Object(r.w)(["button-unstyled scope",e.css.public]),title:e.$t("post_status.scope.public"),type:"button",onClick:t[3]||(t[3]=t=>e.changeVis("public"))},[Object(r.m)(f,{icon:"globe",class:"fa-scale-110 fa-old-padding"})],10,d)):Object(r.i)("",!0),e.showLocal?(Object(r.D)(),Object(r.j)("button",{key:4,class:Object(r.w)(["button-unstyled scope",e.css.local]),title:e.$t("post_status.scope.local"),type:"button",onClick:t[4]||(t[4]=t=>e.changeVis("local"))},[Object(r.m)(f,{icon:"users",class:"fa-scale-110 fa-old-padding"})],10,p)):Object(r.i)("",!0)]))}]]);t.a=O},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";n.d(t,"b",(function(){return m}));var r=n(11),i=n.n(r),o=n(5),s=n.n(o),a=n(39),c=n.n(a),l=n(16),u=n.n(l);function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var p=function(e,t){var n=e.rootState,r=e.commit,i=t.path,o=t.value,s={};return c()(s,i,o),n.api.backendInteractor.updateProfile({params:s}).then((function(e){r("addNewUsers",[e]),r("setCurrentUser",e)}))},h=function(e,t){var n=e.rootState,r=e.commit,i=t.path,o=t.value,s=t.oldValue,a={};return c()(a,i,o),n.api.backendInteractor.updateNotificationSettings({settings:a}).then((function(e){"success"===e.status?r("confirmServerSideOption",{name:name,value:o}):r("confirmServerSideOption",{name:name,value:s})}))},b={defaultScope:"source.privacy",defaultNSFW:"source.sensitive",stripRichContent:{get:"source.pleroma.no_rich_text",set:"no_rich_text"},locked:"locked",acceptChatMessages:{get:"pleroma.accepts_chat_messages",set:"accepts_chat_messages"},allowFollowingMove:{get:"pleroma.allow_following_move",set:"allow_following_move"},discoverable:{get:"source.pleroma.discoverable",set:"discoverable"},hideFavorites:{get:"pleroma.hide_favorites",set:"hide_favorites"},hideFollowers:{get:"pleroma.hide_followers",set:"hide_followers"},hideFollows:{get:"pleroma.hide_follows",set:"hide_follows"},hideFollowersCount:{get:"pleroma.hide_followers_count",set:"hide_followers_count"},hideFollowsCount:{get:"pleroma.hide_follows_count",set:"hide_follows_count"},webPushHideContents:{get:"pleroma.notification_settings.hide_notification_contents",set:"hide_notification_contents",api:h},blockNotificationsFromStrangers:{get:"pleroma.notification_settings.block_from_strangers",set:"block_from_strangers",api:h}},m=Object.fromEntries(Object.keys(b).map((function(e){return[e,null]}))),f={state:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?d(Object(n),!0).forEach((function(t){s()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):d(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},m),mutations:{confirmServerSideOption:function(e,t){var n=t.name,r=t.value;c()(e,n,r)},wipeServerSideOption:function(e,t){var n=t.name;c()(e,n,null)},wipeAllServerSideOptions:function(e){Object.keys(b).forEach((function(t){c()(e,t,null)}))},setCurrentUser:function(e,t){Object.entries(b).forEach((function(n){var r=i()(n,2),o=r[0],s=r[1],a=s.get,l=void 0===a?s:a;c()(e,o,u()(t._original,l))}))}},actions:{setServerSideOption:function(e,t){var n=e.rootState,r=e.state,i=e.commit,o=(e.dispatch,t.name),s=t.value,a=u()(r,o),c=b[o];if(!c)throw new Error("Invalid server-side setting");var l=c.set,d=void 0===l?c:l,h=c.api,m=void 0===h?p:h;i("wipeServerSideOption",{name:o}),m({rootState:n,commit:i},{path:d,value:s,oldValue:a}).catch((function(e){console.warn("Error setting server-side option:",e),i("confirmServerSideOption",{name:o,value:a})}))},logout:function(e){(0,e.commit)("wipeAllServerSideOptions")}}};t.a=f},,,function(e,t,n){},,function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},,function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},,function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},,function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},,function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var r=n(95),i=n.n(r),o=function(e){return function(e){return i()(e)?e.options:e}(e).props}},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){"use strict";var r=n(0);const i={ref:"panel-body",class:"autocomplete-panel-body"},o=["onClick"],s={class:"image"},a=["src"],c={key:1},l={class:"label"},u={class:"displayText"},d={class:"detailText"};var p=n(5),h=n.n(p),b=n(40),m=n.n(b),f=n(13),O=n.n(f),j=n(326),g=n.n(j),v=n(10),y=n.n(v),w=n(30),k=n.n(w),_=n(55),S=n.n(_),C=function(e){return S()(e,(function(e,t){var n={word:t,start:0,end:t.length};if(e.length>0){var r=e.pop();n.start+=r.end,n.end+=r.end,e.push(r)}return e.push(n),e}),[])},P=function(e){for(var t=[],n="",r=0;r<e.length;r++){var i=e[r];n?!!i.trim()==!!n.trim()?n+=i:(t.push(n),n=i):n=i}return n&&t.push(n),t},x={wordAtPosition:function(e,t){var n=P(e),r=C(n);return k()(r,(function(e){var n=e.start,r=e.end;return n<=t&&r>t}))},addPositionToWords:C,splitByWhitespaceBoundary:P,replaceWord:function(e,t,n){return e.slice(0,t.start)+n+e.slice(t.end)}};const D={class:"emoji-picker panel panel-default panel-body"},T={class:"heading"},I={class:"emoji-tabs"},$=["title","onClick"],z={key:0,class:"additional-tabs"},M=["title"],U={class:"content"},F={class:"emoji-search"},E=["placeholder"],L=["title","onClick"],R={key:0},A=["src"],N={class:"keep-open"},B={key:0,class:"stickers-content"};var V=n(51),H=n(6),q=n(3);function J(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return W(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return W(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function W(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}H.c.add(q.k,q.kb,q.ib);var Y=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(""===t)return e;var n,r=t.toLowerCase(),i=[],o=J(e);try{for(o.s();!(n=o.n()).done;){var s=n.value,a=s.displayText.toLowerCase().indexOf(r);a>-1&&(Array.isArray(i[a])||(i[a]=[]),i[a].push(s))}}catch(e){o.e(e)}finally{o.f()}return i.flat()},G={props:{enableStickerPicker:{required:!1,type:Boolean,default:!1}},data:function(){return{keyword:"",activeGroup:"custom",showingStickers:!1,groupsScrolledClass:"scrolled-top",keepOpen:!1,customEmojiBufferSlice:60,customEmojiTimeout:null,customEmojiLoadAllConfirmed:!1}},components:{StickerPicker:Object(r.n)((function(){return n.e(4).then(n.bind(null,709))})),Checkbox:V.a},methods:{onStickerUploaded:function(e){this.$emit("sticker-uploaded",e)},onStickerUploadFailed:function(e){this.$emit("sticker-upload-failed",e)},onEmoji:function(e){var t=e.imageUrl?":".concat(e.displayText,":"):e.replacement;this.$emit("emoji",{insertion:t,keepOpen:this.keepOpen})},onScroll:function(e){var t=e&&e.target||this.$refs["emoji-groups"];this.updateScrolledClass(t),this.scrolledGroup(t),this.triggerLoadMore(t)},highlight:function(e){var t=this,n=this.$refs["group-"+e].offsetTop;this.setShowStickers(!1),this.activeGroup=e,this.$nextTick((function(){t.$refs["emoji-groups"].scrollTop=n+1}))},updateScrolledClass:function(e){e.scrollTop<=5?this.groupsScrolledClass="scrolled-top":e.scrollTop>=e.scrollTopMax-5?this.groupsScrolledClass="scrolled-bottom":this.groupsScrolledClass="scrolled-middle"},triggerLoadMore:function(e){var t=this.$refs["group-end-custom"];if(t){var n=t.offsetTop+t.offsetHeight,r=e.scrollTop+e.clientHeight,i=e.scrollTop,o=e.scrollHeight;n<i||r===o||!(n-r<64)&&!(i<5)||this.loadEmoji()}},scrolledGroup:function(e){var t=this,n=e.scrollTop+5;this.$nextTick((function(){t.emojisView.forEach((function(e){t.$refs["group-"+e.id].offsetTop<=n&&(t.activeGroup=e.id)}))}))},loadEmoji:function(){this.customEmojiBuffer.length===this.filteredEmoji.length||(this.customEmojiBufferSlice+=60)},startEmojiLoad:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];t||(this.keyword=""),this.$nextTick((function(){e.$refs["emoji-groups"].scrollTop=0}));var n=this.customEmojiBuffer.length,r=n===this.filteredEmoji.length;r&&!t||(this.customEmojiBufferSlice=60)},toggleStickers:function(){this.showingStickers=!this.showingStickers},setShowStickers:function(e){this.showingStickers=e}},watch:{keyword:function(){this.customEmojiLoadAllConfirmed=!1,this.onScroll(),this.startEmojiLoad(!0)}},computed:{activeGroupView:function(){return this.showingStickers?"":this.activeGroup},stickersAvailable:function(){return this.$store.state.instance.stickers?this.$store.state.instance.stickers.length>0:0},filteredEmoji:function(){return Y(this.$store.state.instance.customEmoji||[],this.keyword)},customEmojiBuffer:function(){return this.filteredEmoji.slice(0,this.customEmojiBufferSlice)},emojis:function(){var e=this.$store.state.instance.emoji||[],t=this.customEmojiBuffer;return[{id:"custom",text:this.$t("emoji.custom"),icon:"smile-beam",emojis:t},{id:"standard",text:this.$t("emoji.unicode"),icon:"box-open",emojis:Y(e,this.keyword)}]},emojisView:function(){return this.emojis.filter((function(e){return e.emojis.length>0}))},stickerPickerEnabled:function(){return 0!==(this.$store.state.instance.stickers||[]).length}}},K=(n(503),n(4)),X=n.n(K);var Z=X()(G,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon"),c=Object(r.J)("Checkbox"),l=Object(r.J)("sticker-picker");return Object(r.D)(),Object(r.j)("div",D,[Object(r.k)("div",T,[Object(r.k)("span",I,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.emojis,t=>(Object(r.D)(),Object(r.j)("span",{key:t.id,class:Object(r.w)(["emoji-tabs-item",{active:e.activeGroupView===t.id,disabled:0===t.emojis.length}]),title:t.text,onClick:Object(r.Y)(n=>e.highlight(t.id),["prevent"])},[Object(r.m)(a,{icon:t.icon,"fixed-width":""},null,8,["icon"])],10,$))),128))]),e.stickerPickerEnabled?(Object(r.D)(),Object(r.j)("span",z,[Object(r.k)("span",{class:Object(r.w)(["stickers-tab-icon additional-tabs-item",{active:e.showingStickers}]),title:e.$t("emoji.stickers"),onClick:t[0]||(t[0]=Object(r.Y)((...t)=>e.toggleStickers&&e.toggleStickers(...t),["prevent"]))},[Object(r.m)(a,{icon:"sticky-note","fixed-width":""})],10,M)])):Object(r.i)("",!0)]),Object(r.k)("div",U,[Object(r.k)("div",{class:Object(r.w)(["emoji-content",{hidden:e.showingStickers}])},[Object(r.k)("div",F,[Object(r.W)(Object(r.k)("input",{"onUpdate:modelValue":t[1]||(t[1]=t=>e.keyword=t),type:"text",class:"form-control",placeholder:e.$t("emoji.search_emoji")},null,8,E),[[r.S,e.keyword]])]),Object(r.k)("div",{ref:"emoji-groups",class:Object(r.w)(["emoji-groups",e.groupsScrolledClass]),onScroll:t[2]||(t[2]=(...t)=>e.onScroll&&e.onScroll(...t))},[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.emojisView,t=>(Object(r.D)(),Object(r.j)("div",{key:t.id,class:"emoji-group"},[Object(r.k)("h6",{ref_for:!0,ref:"group-"+t.id,class:"emoji-group-title"},Object(r.O)(t.text),513),(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(t.emojis,n=>(Object(r.D)(),Object(r.j)("span",{key:t.id+n.displayText,title:n.displayText,class:"emoji-item",onClick:Object(r.Y)(t=>e.onEmoji(n),["stop","prevent"])},[n.imageUrl?(Object(r.D)(),Object(r.j)("img",{key:1,src:n.imageUrl},null,8,A)):(Object(r.D)(),Object(r.j)("span",R,Object(r.O)(n.replacement),1))],8,L))),128)),Object(r.k)("span",{ref_for:!0,ref:"group-end-"+t.id},null,512)]))),128))],34),Object(r.k)("div",N,[Object(r.m)(c,{modelValue:e.keepOpen,"onUpdate:modelValue":t[3]||(t[3]=t=>e.keepOpen=t)},{default:Object(r.V)(()=>[Object(r.l)(Object(r.O)(e.$t("emoji.keep_open")),1)]),_:1},8,["modelValue"])])],2),e.showingStickers?(Object(r.D)(),Object(r.j)("div",B,[Object(r.m)(l,{onUploaded:e.onStickerUploaded,onUploadFailed:e.onStickerUploadFailed},null,8,["onUploaded","onUploadFailed"])])):Object(r.i)("",!0)])])}]]),Q=n(137),ee=n(41),te=["imageUrl"];function ne(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function re(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ne(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ne(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}H.c.add(ee.c);var ie,oe={emits:["update:modelValue","shown"],props:{suggest:{required:!0,type:Function},modelValue:{required:!0,type:String},enableEmojiPicker:{required:!1,type:Boolean,default:!1},hideEmojiButton:{required:!1,type:Boolean,default:!1},enableStickerPicker:{required:!1,type:Boolean,default:!1},placement:{required:!1,type:String,default:"auto"},newlineOnCtrlEnter:{required:!1,type:Boolean,default:!1}},data:function(){return{input:void 0,highlighted:0,caret:0,focused:!1,blurTimeout:null,showPicker:!1,temporarilyHideSuggestions:!1,keepOpen:!1,disableClickOutside:!1,suggestions:[]}},components:{EmojiPicker:Z},computed:{padEmoji:function(){return this.$store.getters.mergedConfig.padEmoji},showSuggestions:function(){return this.focused&&this.suggestions&&this.suggestions.length>0&&!this.showPicker&&!this.temporarilyHideSuggestions},textAtCaret:function(){return(this.wordAtCaret||{}).word||""},wordAtCaret:function(){if(this.modelValue&&this.caret)return x.wordAtPosition(this.modelValue,this.caret-1)||{}}},mounted:function(){var e=this.$refs.root,t=e.querySelector(".emoji-input > input")||e.querySelector(".emoji-input > textarea");t&&(this.input=t,this.resize(),t.addEventListener("blur",this.onBlur),t.addEventListener("focus",this.onFocus),t.addEventListener("paste",this.onPaste),t.addEventListener("keyup",this.onKeyUp),t.addEventListener("keydown",this.onKeyDown),t.addEventListener("click",this.onClickInput),t.addEventListener("transitionend",this.onTransition),t.addEventListener("input",this.onInput))},unmounted:function(){var e=this.input;e&&(e.removeEventListener("blur",this.onBlur),e.removeEventListener("focus",this.onFocus),e.removeEventListener("paste",this.onPaste),e.removeEventListener("keyup",this.onKeyUp),e.removeEventListener("keydown",this.onKeyDown),e.removeEventListener("click",this.onClickInput),e.removeEventListener("transitionend",this.onTransition),e.removeEventListener("input",this.onInput))},watch:{showSuggestions:function(e){this.$emit("shown",e)},textAtCaret:(ie=O()(y.a.mark((function e(t){var n,r;return y.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.charAt(0),this.suggestions=[],t!==n){e.next=4;break}return e.abrupt("return");case 4:return e.next=6,this.suggest(t);case 6:if(r=e.sent,this.textAtCaret===t){e.next=9;break}return e.abrupt("return");case 9:if(!(r.length<=0)){e.next=11;break}return e.abrupt("return");case 11:this.suggestions=g()(r,5).map((function(e){var t=e.imageUrl;return re(re({},m()(e,te)),{},{img:t||""})}));case 12:case"end":return e.stop()}}),e,this)}))),function(e){return ie.apply(this,arguments)}),suggestions:{handler:function(e){this.$nextTick(this.resize)},deep:!0}},methods:{focusPickerInput:function(){var e=this.$refs.picker.$el;if(e){var t=e.querySelector("input");t&&t.focus()}},triggerShowPicker:function(){var e=this;this.showPicker=!0,this.$refs.picker.startEmojiLoad(),this.$nextTick((function(){e.scrollIntoView(),e.focusPickerInput()})),this.disableClickOutside=!0,setTimeout((function(){e.disableClickOutside=!1}),0)},togglePicker:function(){this.input.focus(),this.showPicker=!this.showPicker,this.showPicker&&(this.scrollIntoView(),this.$refs.picker.startEmojiLoad(),this.$nextTick(this.focusPickerInput))},replace:function(e){var t=x.replaceWord(this.modelValue,this.wordAtCaret,e);this.$emit("update:modelValue",t),this.caret=0},insert:function(e){var t=e.insertion,n=e.keepOpen,r=e.surroundingSpace,i=void 0===r||r,o=this.modelValue.substring(0,this.caret)||"",s=this.modelValue.substring(this.caret)||"",a=/\s/,c=i&&!a.exec(o.slice(-1))&&o.length&&this.padEmoji>0?" ":"",l=i&&!a.exec(s[0])&&this.padEmoji?" ":"",u=[o,c,t,l,s].join("");this.keepOpen=n,this.$emit("update:modelValue",u);var d=this.caret+(t+l+c).length;n||this.input.focus(),this.$nextTick((function(){this.input.setSelectionRange(d,d),this.caret=d}))},replaceText:function(e,t){var n=this.suggestions.length||0;if(1!==this.textAtCaret.length&&(n>0||t)){var r=(t||this.suggestions[this.highlighted]).replacement,i=x.replaceWord(this.modelValue,this.wordAtCaret,r);this.$emit("update:modelValue",i),this.highlighted=0;var o=this.wordAtCaret.start+r.length;this.$nextTick((function(){this.input.focus(),this.input.setSelectionRange(o,o),this.caret=o})),e.preventDefault()}},cycleBackward:function(e){(this.suggestions.length||0)>1?(this.highlighted-=1,this.highlighted<0&&(this.highlighted=this.suggestions.length-1),e.preventDefault()):this.highlighted=0},cycleForward:function(e){var t=this.suggestions.length||0;t>1?(this.highlighted+=1,this.highlighted>=t&&(this.highlighted=0),e.preventDefault()):this.highlighted=0},scrollIntoView:function(){var e=this,t=this.$refs.picker.$el,n=this.$el.closest(".sidebar-scroller")||this.$el.closest(".post-form-modal-view")||window,r=n===window?n.scrollY:n.scrollTop,i=r+(n===window?n.innerHeight:n.offsetHeight),o=t.offsetHeight+Object(Q.a)(t,n).top,s=r+Math.max(0,o-i);n===window?n.scroll(0,s):n.scrollTop=s,this.$nextTick((function(){var t=e.input.offsetHeight,n=e.$refs.picker;n.$el.getBoundingClientRect().bottom>window.innerHeight&&(n.$el.style.top="auto",n.$el.style.bottom=t+"px")}))},onTransition:function(e){this.resize()},onBlur:function(e){var t=this;this.blurTimeout=setTimeout((function(){t.focused=!1,t.setCaret(e),t.resize()}),200)},onClick:function(e,t){this.replaceText(e,t)},onFocus:function(e){this.blurTimeout&&(clearTimeout(this.blurTimeout),this.blurTimeout=null),this.keepOpen||(this.showPicker=!1),this.focused=!0,this.setCaret(e),this.resize(),this.temporarilyHideSuggestions=!1},onKeyUp:function(e){var t=e.key;this.setCaret(e),this.resize(),this.temporarilyHideSuggestions="Escape"===t},onPaste:function(e){this.setCaret(e),this.resize()},onKeyDown:function(e){var t=this,n=e.ctrlKey,r=e.shiftKey,i=e.key;this.newlineOnCtrlEnter&&n&&"Enter"===i&&(this.insert({insertion:"\n",surroundingSpace:!1}),e.stopPropagation(),e.preventDefault(),this.$nextTick((function(){t.input.blur(),t.input.focus()}))),this.temporarilyHideSuggestions||("Tab"===i&&(r?this.cycleBackward(e):this.cycleForward(e)),"ArrowUp"===i?this.cycleBackward(e):"ArrowDown"===i&&this.cycleForward(e),"Enter"===i&&(n||this.replaceText(e))),"Escape"===i&&(this.temporarilyHideSuggestions||this.input.focus()),this.showPicker=!1,this.resize()},onInput:function(e){this.showPicker=!1,this.setCaret(e),this.resize(),this.$emit("update:modelValue",e.target.value)},onClickInput:function(e){this.showPicker=!1},onClickOutside:function(e){this.disableClickOutside||(this.showPicker=!1)},onStickerUploaded:function(e){this.showPicker=!1,this.$emit("sticker-uploaded",e)},onStickerUploadFailed:function(e){this.showPicker=!1,this.$emit("sticker-upload-Failed",e)},setCaret:function(e){var t=e.target.selectionStart;this.caret=t},resize:function(){var e=this.$refs.panel;if(e){var t=this.$refs.picker.$el,n=this.$refs["panel-body"],r=this.input,i=r.offsetHeight,o=r.offsetTop+i;this.setPlacement(n,e,o),this.setPlacement(t,t,o)}},setPlacement:function(e,t,n){e&&t&&(t.style.top=n+"px",t.style.bottom="auto",("top"===this.placement||"auto"===this.placement&&this.overflowsBottom(e))&&(t.style.top="auto",t.style.bottom=this.input.offsetHeight+"px"))},overflowsBottom:function(e){return e.getBoundingClientRect().bottom>window.innerHeight}}};n(504);const se=X()(oe,[["render",function(e,t,n,p,h,b){const m=Object(r.J)("FAIcon"),f=Object(r.J)("EmojiPicker"),O=Object(r.K)("click-outside");return Object(r.W)((Object(r.D)(),Object(r.j)("div",{ref:"root",class:Object(r.w)(["emoji-input",{"with-picker":!e.hideEmojiButton}])},[Object(r.I)(e.$slots,"default"),e.enableEmojiPicker?(Object(r.D)(),Object(r.j)(r.a,{key:0},[e.hideEmojiButton?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-unstyled emoji-picker-icon",type:"button",onClick:t[0]||(t[0]=Object(r.Y)((...t)=>e.togglePicker&&e.togglePicker(...t),["prevent"]))},[Object(r.m)(m,{icon:["far","smile-beam"]})])),e.enableEmojiPicker?(Object(r.D)(),Object(r.h)(f,{key:1,ref:"picker",class:Object(r.w)([{hide:!e.showPicker},"emoji-picker-panel"]),"enable-sticker-picker":e.enableStickerPicker,onEmoji:e.insert,onStickerUploaded:e.onStickerUploaded,onStickerUploadFailed:e.onStickerUploadFailed},null,8,["class","enable-sticker-picker","onEmoji","onStickerUploaded","onStickerUploadFailed"])):Object(r.i)("",!0)],64)):Object(r.i)("",!0),Object(r.k)("div",{ref:"panel",class:Object(r.w)(["autocomplete-panel",{hide:!e.showSuggestions}])},[Object(r.k)("div",i,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.suggestions,(t,n)=>(Object(r.D)(),Object(r.j)("div",{key:n,class:Object(r.w)(["autocomplete-item",{highlighted:n===e.highlighted}]),onClick:Object(r.Y)(n=>e.onClick(n,t),["stop","prevent"])},[Object(r.k)("span",s,[t.img?(Object(r.D)(),Object(r.j)("img",{key:0,src:t.img},null,8,a)):(Object(r.D)(),Object(r.j)("span",c,Object(r.O)(t.replacement),1))]),Object(r.k)("div",l,[Object(r.k)("span",u,Object(r.O)(t.displayText),1),Object(r.k)("span",d,Object(r.O)(t.detailText),1)])],10,o))),128))],512)],2)],2)),[[O,e.onClickOutside]])}]]);t.a=se},,,,,,,,,,,,,,,,,function(e,t,n){e.exports=n.p+"static/img/nsfw.ca95de9.png"},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";n.r(t),t.default={about:{mrf:{federation:e=>{const{normalize:t}=e;return t(["Federation"])},keyword:{keyword_policies:e=>{const{normalize:t}=e;return t(["Keyword policies"])},ftl_removal:e=>{const{normalize:t}=e;return t(['Removal from "The Whole Known Network" Timeline'])},reject:e=>{const{normalize:t}=e;return t(["Reject"])},replace:e=>{const{normalize:t}=e;return t(["Replace"])},is_replaced_by:e=>{const{normalize:t}=e;return t(["→"])}},mrf_policies:e=>{const{normalize:t}=e;return t(["Enabled MRF policies"])},mrf_policies_desc:e=>{const{normalize:t}=e;return t(["MRF policies manipulate the federation behaviour of the instance.  The following policies are enabled:"])},simple:{simple_policies:e=>{const{normalize:t}=e;return t(["Instance-specific policies"])},instance:e=>{const{normalize:t}=e;return t(["Instance"])},reason:e=>{const{normalize:t}=e;return t(["Reason"])},not_applicable:e=>{const{normalize:t}=e;return t(["N/A"])},accept:e=>{const{normalize:t}=e;return t(["Accept"])},accept_desc:e=>{const{normalize:t}=e;return t(["This instance only accepts messages from the following instances:"])},reject:e=>{const{normalize:t}=e;return t(["Reject"])},reject_desc:e=>{const{normalize:t}=e;return t(["This instance will not accept messages from the following instances:"])},quarantine:e=>{const{normalize:t}=e;return t(["Quarantine"])},quarantine_desc:e=>{const{normalize:t}=e;return t(["This instance will send only public posts to the following instances:"])},ftl_removal:e=>{const{normalize:t}=e;return t(['Removal from "Known Network" Timeline'])},ftl_removal_desc:e=>{const{normalize:t}=e;return t(['This instance removes these instances from "Known Network" timeline:'])},media_removal:e=>{const{normalize:t}=e;return t(["Media Removal"])},media_removal_desc:e=>{const{normalize:t}=e;return t(["This instance removes media from posts on the following instances:"])},media_nsfw:e=>{const{normalize:t}=e;return t(["Media force-set as sensitive"])},media_nsfw_desc:e=>{const{normalize:t}=e;return t(["This instance forces media to be set sensitive in posts on the following instances:"])}}},staff:e=>{const{normalize:t}=e;return t(["Staff"])}},shoutbox:{title:e=>{const{normalize:t}=e;return t(["Shoutbox"])}},domain_mute_card:{mute:e=>{const{normalize:t}=e;return t(["Mute"])},mute_progress:e=>{const{normalize:t}=e;return t(["Muting…"])},unmute:e=>{const{normalize:t}=e;return t(["Unmute"])},unmute_progress:e=>{const{normalize:t}=e;return t(["Unmuting…"])}},exporter:{export:e=>{const{normalize:t}=e;return t(["Export"])},processing:e=>{const{normalize:t}=e;return t(["Processing, you'll soon be asked to download your file"])}},features_panel:{shout:e=>{const{normalize:t}=e;return t(["Shoutbox"])},pleroma_chat_messages:e=>{const{normalize:t}=e;return t(["Pleroma Chat"])},gopher:e=>{const{normalize:t}=e;return t(["Gopher"])},media_proxy:e=>{const{normalize:t}=e;return t(["Media proxy"])},scope_options:e=>{const{normalize:t}=e;return t(["Scope options"])},text_limit:e=>{const{normalize:t}=e;return t(["Text limit"])},title:e=>{const{normalize:t}=e;return t(["Features"])},who_to_follow:e=>{const{normalize:t}=e;return t(["Who to follow"])},upload_limit:e=>{const{normalize:t}=e;return t(["Upload limit"])}},finder:{error_fetching_user:e=>{const{normalize:t}=e;return t(["Error fetching user"])},find_user:e=>{const{normalize:t}=e;return t(["Find user"])}},general:{apply:e=>{const{normalize:t}=e;return t(["Apply"])},submit:e=>{const{normalize:t}=e;return t(["Submit"])},more:e=>{const{normalize:t}=e;return t(["More"])},loading:e=>{const{normalize:t}=e;return t(["Loading…"])},generic_error:e=>{const{normalize:t}=e;return t(["An error occured"])},error_retry:e=>{const{normalize:t}=e;return t(["Please try again"])},retry:e=>{const{normalize:t}=e;return t(["Try again"])},optional:e=>{const{normalize:t}=e;return t(["optional"])},show_more:e=>{const{normalize:t}=e;return t(["Show more"])},show_less:e=>{const{normalize:t}=e;return t(["Show less"])},dismiss:e=>{const{normalize:t}=e;return t(["Dismiss"])},cancel:e=>{const{normalize:t}=e;return t(["Cancel"])},disable:e=>{const{normalize:t}=e;return t(["Disable"])},enable:e=>{const{normalize:t}=e;return t(["Enable"])},confirm:e=>{const{normalize:t}=e;return t(["Confirm"])},verify:e=>{const{normalize:t}=e;return t(["Verify"])},close:e=>{const{normalize:t}=e;return t(["Close"])},peek:e=>{const{normalize:t}=e;return t(["Peek"])},role:{admin:e=>{const{normalize:t}=e;return t(["Admin"])},moderator:e=>{const{normalize:t}=e;return t(["Moderator"])}},flash_content:e=>{const{normalize:t}=e;return t(["Click to show Flash content using Ruffle (Experimental, may not work)."])},flash_security:e=>{const{normalize:t}=e;return t(["Note that this can be potentially dangerous since Flash content is still arbitrary code."])},flash_fail:e=>{const{normalize:t}=e;return t(["Failed to load flash content, see console for details."])},scope_in_timeline:{direct:e=>{const{normalize:t}=e;return t(["Direct"])},private:e=>{const{normalize:t}=e;return t(["Followers-only"])},public:e=>{const{normalize:t}=e;return t(["Public"])},unlisted:e=>{const{normalize:t}=e;return t(["Unlisted"])}}},image_cropper:{crop_picture:e=>{const{normalize:t}=e;return t(["Crop picture"])},save:e=>{const{normalize:t}=e;return t(["Save"])},save_without_cropping:e=>{const{normalize:t}=e;return t(["Save without cropping"])},cancel:e=>{const{normalize:t}=e;return t(["Cancel"])}},importer:{submit:e=>{const{normalize:t}=e;return t(["Submit"])},success:e=>{const{normalize:t}=e;return t(["Imported successfully."])},error:e=>{const{normalize:t}=e;return t(["An error occured while importing this file."])}},login:{login:e=>{const{normalize:t}=e;return t(["Log in"])},description:e=>{const{normalize:t}=e;return t(["Log in with OAuth"])},logout:e=>{const{normalize:t}=e;return t(["Log out"])},password:e=>{const{normalize:t}=e;return t(["Password"])},placeholder:e=>{const{normalize:t}=e;return t(["e.g. lain"])},register:e=>{const{normalize:t}=e;return t(["Register"])},username:e=>{const{normalize:t}=e;return t(["Username"])},hint:e=>{const{normalize:t}=e;return t(["Log in to join the discussion"])},authentication_code:e=>{const{normalize:t}=e;return t(["Authentication code"])},enter_recovery_code:e=>{const{normalize:t}=e;return t(["Enter a recovery code"])},enter_two_factor_code:e=>{const{normalize:t}=e;return t(["Enter a two-factor code"])},recovery_code:e=>{const{normalize:t}=e;return t(["Recovery code"])},heading:{totp:e=>{const{normalize:t}=e;return t(["Two-factor authentication"])},recovery:e=>{const{normalize:t}=e;return t(["Two-factor recovery"])}}},media_modal:{previous:e=>{const{normalize:t}=e;return t(["Previous"])},next:e=>{const{normalize:t}=e;return t(["Next"])},counter:e=>{const{normalize:t,interpolate:n,named:r}=e;return t([n(r("current"))," / ",n(r("total"))])},hide:e=>{const{normalize:t}=e;return t(["Close media viewer"])}},nav:{about:e=>{const{normalize:t}=e;return t(["About"])},administration:e=>{const{normalize:t}=e;return t(["Administration"])},back:e=>{const{normalize:t}=e;return t(["Back"])},friend_requests:e=>{const{normalize:t}=e;return t(["Follow requests"])},mentions:e=>{const{normalize:t}=e;return t(["Mentions"])},interactions:e=>{const{normalize:t}=e;return t(["Interactions"])},dms:e=>{const{normalize:t}=e;return t(["Direct messages"])},public_tl:e=>{const{normalize:t}=e;return t(["Public timeline"])},timeline:e=>{const{normalize:t}=e;return t(["Timeline"])},home_timeline:e=>{const{normalize:t}=e;return t(["Home timeline"])},twkn:e=>{const{normalize:t}=e;return t(["Known Network"])},bookmarks:e=>{const{normalize:t}=e;return t(["Bookmarks"])},user_search:e=>{const{normalize:t}=e;return t(["User Search"])},search:e=>{const{normalize:t}=e;return t(["Search"])},who_to_follow:e=>{const{normalize:t}=e;return t(["Who to follow"])},preferences:e=>{const{normalize:t}=e;return t(["Preferences"])},timelines:e=>{const{normalize:t}=e;return t(["Timelines"])},chats:e=>{const{normalize:t}=e;return t(["Chats"])}},notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Unknown status, searching for it…"])},error:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Error fetching notifications: ",n(r(0))])},favorited_you:e=>{const{normalize:t}=e;return t(["favorited your status"])},followed_you:e=>{const{normalize:t}=e;return t(["followed you"])},follow_request:e=>{const{normalize:t}=e;return t(["wants to follow you"])},load_older:e=>{const{normalize:t}=e;return t(["Load older notifications"])},notifications:e=>{const{normalize:t}=e;return t(["Notifications"])},read:e=>{const{normalize:t}=e;return t(["Read!"])},repeated_you:e=>{const{normalize:t}=e;return t(["repeated your status"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["No more notifications"])},migrated_to:e=>{const{normalize:t}=e;return t(["migrated to"])},reacted_with:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["reacted with ",n(r(0))])},poll_ended:e=>{const{normalize:t}=e;return t(["poll has ended"])}},polls:{add_poll:e=>{const{normalize:t}=e;return t(["Add poll"])},add_option:e=>{const{normalize:t}=e;return t(["Add option"])},option:e=>{const{normalize:t}=e;return t(["Option"])},votes:e=>{const{normalize:t}=e;return t(["votes"])},people_voted_count:e=>{const{normalize:t,interpolate:n,named:r,plural:i}=e;return i([t([n(r("count"))," person voted"]),t([n(r("count"))," people voted"])])},votes_count:e=>{const{normalize:t,interpolate:n,named:r,plural:i}=e;return i([t([n(r("count"))," vote"]),t([n(r("count"))," votes"])])},vote:e=>{const{normalize:t}=e;return t(["Vote"])},type:e=>{const{normalize:t}=e;return t(["Poll type"])},single_choice:e=>{const{normalize:t}=e;return t(["Single choice"])},multiple_choices:e=>{const{normalize:t}=e;return t(["Multiple choices"])},expiry:e=>{const{normalize:t}=e;return t(["Poll age"])},expires_in:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Poll ends in ",n(r(0))])},expired:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Poll ended ",n(r(0))," ago"])},not_enough_options:e=>{const{normalize:t}=e;return t(["Too few unique options in poll"])}},emoji:{stickers:e=>{const{normalize:t}=e;return t(["Stickers"])},emoji:e=>{const{normalize:t}=e;return t(["Emoji"])},keep_open:e=>{const{normalize:t}=e;return t(["Keep picker open"])},search_emoji:e=>{const{normalize:t}=e;return t(["Search for an emoji"])},add_emoji:e=>{const{normalize:t}=e;return t(["Insert emoji"])},custom:e=>{const{normalize:t}=e;return t(["Custom emoji"])},unicode:e=>{const{normalize:t}=e;return t(["Unicode emoji"])},load_all_hint:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Loaded first ",n(r("saneAmount"))," emoji, loading all emoji may cause performance issues."])},load_all:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Loading all ",n(r("emojiAmount"))," emoji"])}},errors:{storage_unavailable:e=>{const{normalize:t}=e;return t(["Pleroma could not access browser storage. Your login or your local settings won't be saved and you might encounter unexpected issues. Try enabling cookies."])}},interactions:{favs_repeats:e=>{const{normalize:t}=e;return t(["Repeats and favorites"])},follows:e=>{const{normalize:t}=e;return t(["New follows"])},moves:e=>{const{normalize:t}=e;return t(["User migrates"])},load_older:e=>{const{normalize:t}=e;return t(["Load older interactions"])}},post_status:{new_status:e=>{const{normalize:t}=e;return t(["Post new status"])},account_not_locked_warning:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Your account is not ",n(r(0)),". Anyone can follow you to view your follower-only posts."])},account_not_locked_warning_link:e=>{const{normalize:t}=e;return t(["locked"])},attachments_sensitive:e=>{const{normalize:t}=e;return t(["Mark attachments as sensitive"])},media_description:e=>{const{normalize:t}=e;return t(["Media description"])},content_type:{"text/plain":e=>{const{normalize:t}=e;return t(["Plain text"])},"text/html":e=>{const{normalize:t}=e;return t(["HTML"])},"text/markdown":e=>{const{normalize:t}=e;return t(["Markdown"])},"text/bbcode":e=>{const{normalize:t}=e;return t(["BBCode"])},"text/x.misskeymarkdown":e=>{const{normalize:t}=e;return t(["MFM"])}},content_warning:e=>{const{normalize:t}=e;return t(["Subject (optional)"])},default:e=>{const{normalize:t}=e;return t(["Just landed in L.A."])},direct_warning_to_all:e=>{const{normalize:t}=e;return t(["This post will be visible to all the mentioned users."])},direct_warning_to_first_only:e=>{const{normalize:t}=e;return t(["This post will only be visible to the mentioned users at the beginning of the message."])},posting:e=>{const{normalize:t}=e;return t(["Posting"])},post:e=>{const{normalize:t}=e;return t(["Post"])},preview:e=>{const{normalize:t}=e;return t(["Preview"])},preview_empty:e=>{const{normalize:t}=e;return t(["Empty"])},empty_status_error:e=>{const{normalize:t}=e;return t(["Can't post an empty status with no files"])},media_description_error:e=>{const{normalize:t}=e;return t(["Failed to update media, try again"])},scope_notice:{public:e=>{const{normalize:t}=e;return t(["This post will be visible to everyone"])},private:e=>{const{normalize:t}=e;return t(["This post will be visible to your followers only"])},unlisted:e=>{const{normalize:t}=e;return t(["This post will not be visible in Public Timeline and The Whole Known Network"])},local:e=>{const{normalize:t}=e;return t(["This post will not be visible on other instances"])}},scope:{direct:e=>{const{normalize:t}=e;return t(["Direct - post to mentioned users only"])},private:e=>{const{normalize:t}=e;return t(["Followers-only - post to followers only"])},public:e=>{const{normalize:t}=e;return t(["Public - post to public timelines"])},unlisted:e=>{const{normalize:t}=e;return t(["Unlisted - do not post to public timelines"])},local:e=>{const{normalize:t}=e;return t(["Local - do not federate this post"])}}},registration:{bio:e=>{const{normalize:t}=e;return t(["Bio"])},email:e=>{const{normalize:t}=e;return t(["Email"])},fullname:e=>{const{normalize:t}=e;return t(["Display name"])},password_confirm:e=>{const{normalize:t}=e;return t(["Password confirmation"])},registration:e=>{const{normalize:t}=e;return t(["Registration"])},token:e=>{const{normalize:t}=e;return t(["Invite token"])},captcha:e=>{const{normalize:t}=e;return t(["CAPTCHA"])},new_captcha:e=>{const{normalize:t}=e;return t(["Click the image to get a new captcha"])},username_placeholder:e=>{const{normalize:t}=e;return t(["e.g. lain"])},fullname_placeholder:e=>{const{normalize:t}=e;return t(["e.g. Lain Iwakura"])},bio_placeholder:e=>{const{normalize:t}=e;return t(["e.g.\nHi, I'm Lain.\nI’m an anime girl living in suburban Japan. You may know me from the Wired."])},reason:e=>{const{normalize:t}=e;return t(["Reason to register"])},reason_placeholder:e=>{const{normalize:t}=e;return t(["This instance approves registrations manually.\nLet the administration know why you want to register."])},register:e=>{const{normalize:t}=e;return t(["Register"])},validations:{username_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},fullname_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},email_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},password_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},password_confirmation_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},password_confirmation_match:e=>{const{normalize:t}=e;return t(["should be the same as password"])}},email_language:e=>{const{normalize:t}=e;return t(["In which language do you want to receive emails from the server?"])}},remote_user_resolver:{remote_user_resolver:e=>{const{normalize:t}=e;return t(["Remote user resolver"])},searching_for:e=>{const{normalize:t}=e;return t(["Searching for"])},error:e=>{const{normalize:t}=e;return t(["Not found."])}},selectable_list:{select_all:e=>{const{normalize:t}=e;return t(["Select all"])}},settings:{app_name:e=>{const{normalize:t}=e;return t(["App name"])},expert_mode:e=>{const{normalize:t}=e;return t(["Show advanced"])},save:e=>{const{normalize:t}=e;return t(["Save changes"])},security:e=>{const{normalize:t}=e;return t(["Security"])},setting_changed:e=>{const{normalize:t}=e;return t(["Setting is different from default"])},setting_server_side:e=>{const{normalize:t}=e;return t(["This setting is tied to your profile and affects all sessions and clients"])},enter_current_password_to_confirm:e=>{const{normalize:t}=e;return t(["Enter your current password to confirm your identity"])},post_look_feel:e=>{const{normalize:t}=e;return t(["Posts Look & Feel"])},mention_links:e=>{const{normalize:t}=e;return t(["Mention links"])},mfa:{otp:e=>{const{normalize:t}=e;return t(["OTP"])},setup_otp:e=>{const{normalize:t}=e;return t(["Setup OTP"])},wait_pre_setup_otp:e=>{const{normalize:t}=e;return t(["presetting OTP"])},confirm_and_enable:e=>{const{normalize:t}=e;return t(["Confirm & enable OTP"])},title:e=>{const{normalize:t}=e;return t(["Two-factor Authentication"])},generate_new_recovery_codes:e=>{const{normalize:t}=e;return t(["Generate new recovery codes"])},warning_of_generate_new_codes:e=>{const{normalize:t}=e;return t(["When you generate new recovery codes, your old codes won’t work anymore."])},recovery_codes:e=>{const{normalize:t}=e;return t(["Recovery codes."])},waiting_a_recovery_codes:e=>{const{normalize:t}=e;return t(["Receiving backup codes…"])},recovery_codes_warning:e=>{const{normalize:t}=e;return t(["Write the codes down or save them somewhere secure - otherwise you won't see them again. If you lose access to your 2FA app and recovery codes you'll be locked out of your account."])},authentication_methods:e=>{const{normalize:t}=e;return t(["Authentication methods"])},scan:{title:e=>{const{normalize:t}=e;return t(["Scan"])},desc:e=>{const{normalize:t}=e;return t(["Using your two-factor app, scan this QR code or enter text key:"])},secret_code:e=>{const{normalize:t}=e;return t(["Key"])}},verify:{desc:e=>{const{normalize:t}=e;return t(["To enable two-factor authentication, enter the code from your two-factor app:"])}}},allow_following_move:e=>{const{normalize:t}=e;return t(["Allow auto-follow when following account moves"])},attachmentRadius:e=>{const{normalize:t}=e;return t(["Attachments"])},attachments:e=>{const{normalize:t}=e;return t(["Attachments"])},avatar:e=>{const{normalize:t}=e;return t(["Avatar"])},avatarAltRadius:e=>{const{normalize:t}=e;return t(["Avatars (notifications)"])},avatarRadius:e=>{const{normalize:t}=e;return t(["Avatars"])},background:e=>{const{normalize:t}=e;return t(["Background"])},bio:e=>{const{normalize:t}=e;return t(["Bio"])},email_language:e=>{const{normalize:t}=e;return t(["Language for receiving emails from the server"])},block_export:e=>{const{normalize:t}=e;return t(["Block export"])},block_export_button:e=>{const{normalize:t}=e;return t(["Export your blocks to a csv file"])},block_import:e=>{const{normalize:t}=e;return t(["Block import"])},block_import_error:e=>{const{normalize:t}=e;return t(["Error importing blocks"])},blocks_imported:e=>{const{normalize:t}=e;return t(["Blocks imported! Processing them will take a while."])},mute_export:e=>{const{normalize:t}=e;return t(["Mute export"])},mute_export_button:e=>{const{normalize:t}=e;return t(["Export your mutes to a csv file"])},mute_import:e=>{const{normalize:t}=e;return t(["Mute import"])},mute_import_error:e=>{const{normalize:t}=e;return t(["Error importing mutes"])},mutes_imported:e=>{const{normalize:t}=e;return t(["Mutes imported! Processing them will take a while."])},import_mutes_from_a_csv_file:e=>{const{normalize:t}=e;return t(["Import mutes from a csv file"])},blocks_tab:e=>{const{normalize:t}=e;return t(["Blocks"])},bot:e=>{const{normalize:t}=e;return t(["This is a bot account"])},btnRadius:e=>{const{normalize:t}=e;return t(["Buttons"])},cBlue:e=>{const{normalize:t}=e;return t(["Blue (Reply, follow)"])},cGreen:e=>{const{normalize:t}=e;return t(["Green (Retweet)"])},cOrange:e=>{const{normalize:t}=e;return t(["Orange (Favorite)"])},cRed:e=>{const{normalize:t}=e;return t(["Red (Cancel)"])},change_email:e=>{const{normalize:t}=e;return t(["Change email"])},change_email_error:e=>{const{normalize:t}=e;return t(["There was an issue changing your email."])},changed_email:e=>{const{normalize:t}=e;return t(["Email changed successfully!"])},change_password:e=>{const{normalize:t}=e;return t(["Change password"])},change_password_error:e=>{const{normalize:t}=e;return t(["There was an issue changing your password."])},changed_password:e=>{const{normalize:t}=e;return t(["Password changed successfully!"])},chatMessageRadius:e=>{const{normalize:t}=e;return t(["Chat message"])},collapse_subject:e=>{const{normalize:t}=e;return t(["Collapse posts with subjects"])},composing:e=>{const{normalize:t}=e;return t(["Composing"])},confirm_new_password:e=>{const{normalize:t}=e;return t(["Confirm new password"])},current_avatar:e=>{const{normalize:t}=e;return t(["Your current avatar"])},current_mascot:e=>{const{normalize:t}=e;return t(["Your current mascot"])},current_password:e=>{const{normalize:t}=e;return t(["Current password"])},mutes_and_blocks:e=>{const{normalize:t}=e;return t(["Mutes and Blocks"])},data_import_export_tab:e=>{const{normalize:t}=e;return t(["Data import / export"])},default_vis:e=>{const{normalize:t}=e;return t(["Default visibility scope"])},delete_account:e=>{const{normalize:t}=e;return t(["Delete account"])},delete_account_description:e=>{const{normalize:t}=e;return t(["Permanently delete your data and deactivate your account."])},delete_account_error:e=>{const{normalize:t}=e;return t(["There was an issue deleting your account. If this persists please contact your instance administrator."])},delete_account_instructions:e=>{const{normalize:t}=e;return t(["Type your password in the input below to confirm account deletion."])},discoverable:e=>{const{normalize:t}=e;return t(["Allow discovery of this account in search results and other services"])},domain_mutes:e=>{const{normalize:t}=e;return t(["Domains"])},avatar_size_instruction:e=>{const{normalize:t}=e;return t(["The recommended minimum size for avatar images is 150x150 pixels."])},pad_emoji:e=>{const{normalize:t}=e;return t(["Pad emoji with spaces when adding from picker"])},emoji_reactions_on_timeline:e=>{const{normalize:t}=e;return t(["Show emoji reactions on timeline"])},export_theme:e=>{const{normalize:t}=e;return t(["Save preset"])},filtering:e=>{const{normalize:t}=e;return t(["Filtering"])},wordfilter:e=>{const{normalize:t}=e;return t(["Wordfilter"])},filtering_explanation:e=>{const{normalize:t}=e;return t(["All statuses containing these words will be muted, one per line"])},word_filter:e=>{const{normalize:t}=e;return t(["Word filter"])},follow_export:e=>{const{normalize:t}=e;return t(["Follow export"])},follow_export_button:e=>{const{normalize:t}=e;return t(["Export your follows to a csv file"])},follow_import:e=>{const{normalize:t}=e;return t(["Follow import"])},follow_import_error:e=>{const{normalize:t}=e;return t(["Error importing followers"])},follows_imported:e=>{const{normalize:t}=e;return t(["Follows imported! Processing them will take a while."])},accent:e=>{const{normalize:t}=e;return t(["Accent"])},foreground:e=>{const{normalize:t}=e;return t(["Foreground"])},general:e=>{const{normalize:t}=e;return t(["General"])},hide_attachments_in_convo:e=>{const{normalize:t}=e;return t(["Hide attachments in conversations"])},hide_attachments_in_tl:e=>{const{normalize:t}=e;return t(["Hide attachments in timeline"])},hide_media_previews:e=>{const{normalize:t}=e;return t(["Hide media previews"])},hide_muted_posts:e=>{const{normalize:t}=e;return t(["Hide posts of muted users"])},mute_bot_posts:e=>{const{normalize:t}=e;return t(["Mute bot posts"])},hide_bot_indication:e=>{const{normalize:t}=e;return t(["Hide bot indication in posts"])},hide_all_muted_posts:e=>{const{normalize:t}=e;return t(["Hide muted posts"])},max_thumbnails:e=>{const{normalize:t}=e;return t(["Maximum amount of thumbnails per post (empty = no limit)"])},hide_isp:e=>{const{normalize:t}=e;return t(["Hide instance-specific panel"])},hide_shoutbox:e=>{const{normalize:t}=e;return t(["Hide instance shoutbox"])},right_sidebar:e=>{const{normalize:t}=e;return t(["Reverse order of columns"])},always_show_post_button:e=>{const{normalize:t}=e;return t(["Always show floating New Post button"])},hide_wallpaper:e=>{const{normalize:t}=e;return t(["Hide instance wallpaper"])},preload_images:e=>{const{normalize:t}=e;return t(["Preload images"])},use_one_click_nsfw:e=>{const{normalize:t}=e;return t(["Open NSFW attachments with just one click"])},hide_post_stats:e=>{const{normalize:t}=e;return t(["Hide post statistics (e.g. the number of favorites)"])},hide_user_stats:e=>{const{normalize:t}=e;return t(["Hide user statistics (e.g. the number of followers)"])},hide_filtered_statuses:e=>{const{normalize:t}=e;return t(["Hide all filtered posts"])},hide_wordfiltered_statuses:e=>{const{normalize:t}=e;return t(["Hide word-filtered statuses"])},hide_muted_threads:e=>{const{normalize:t}=e;return t(["Hide muted threads"])},import_blocks_from_a_csv_file:e=>{const{normalize:t}=e;return t(["Import blocks from a csv file"])},import_followers_from_a_csv_file:e=>{const{normalize:t}=e;return t(["Import follows from a csv file"])},import_theme:e=>{const{normalize:t}=e;return t(["Load preset"])},inputRadius:e=>{const{normalize:t}=e;return t(["Input fields"])},checkboxRadius:e=>{const{normalize:t}=e;return t(["Checkboxes"])},instance_default:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["(default: ",n(r("value")),")"])},instance_default_simple:e=>{const{normalize:t}=e;return t(["(default)"])},interface:e=>{const{normalize:t}=e;return t(["Interface"])},interfaceLanguage:e=>{const{normalize:t}=e;return t(["Interface language"])},invalid_theme_imported:e=>{const{normalize:t}=e;return t(["The selected file is not a supported Pleroma theme. No changes to your theme were made."])},limited_availability:e=>{const{normalize:t}=e;return t(["Unavailable in your browser"])},links:e=>{const{normalize:t}=e;return t(["Links"])},lock_account_description:e=>{const{normalize:t}=e;return t(["Restrict your account to approved followers only"])},loop_video:e=>{const{normalize:t}=e;return t(["Loop videos"])},loop_video_silent_only:e=>{const{normalize:t}=e;return t(['Loop only videos without sound (i.e. Mastodon\'s "gifs")'])},mutes_tab:e=>{const{normalize:t}=e;return t(["Mutes"])},play_videos_in_modal:e=>{const{normalize:t}=e;return t(["Play videos in a popup frame"])},file_export_import:{backup_restore:e=>{const{normalize:t}=e;return t(["Settings backup"])},backup_settings:e=>{const{normalize:t}=e;return t(["Backup settings to file"])},backup_settings_theme:e=>{const{normalize:t}=e;return t(["Backup settings and theme to file"])},restore_settings:e=>{const{normalize:t}=e;return t(["Restore settings from file"])},errors:{invalid_file:e=>{const{normalize:t}=e;return t(["The selected file is not a supported Pleroma settings backup. No changes were made."])},file_too_new:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Incompatile major version: ",n(r("fileMajor")),", this PleromaFE (settings ver ",n(r("feMajor")),") is too old to handle it"])},file_too_old:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Incompatile major version: ",n(r("fileMajor")),", file version is too old and not supported (min. set. ver. ",n(r("feMajor")),")"])},file_slightly_new:e=>{const{normalize:t}=e;return t(["File minor version is different, some settings might not load"])}}},profile_fields:{label:e=>{const{normalize:t}=e;return t(["Profile metadata"])},add_field:e=>{const{normalize:t}=e;return t(["Add field"])},name:e=>{const{normalize:t}=e;return t(["Label"])},value:e=>{const{normalize:t}=e;return t(["Content"])}},account_privacy:e=>{const{normalize:t}=e;return t(["Privacy"])},use_contain_fit:e=>{const{normalize:t}=e;return t(["Don't crop the attachment in thumbnails"])},name:e=>{const{normalize:t}=e;return t(["Name"])},name_bio:e=>{const{normalize:t}=e;return t(["Name & bio"])},new_email:e=>{const{normalize:t}=e;return t(["New email"])},new_password:e=>{const{normalize:t}=e;return t(["New password"])},posts:e=>{const{normalize:t}=e;return t(["Posts"])},user_profiles:e=>{const{normalize:t}=e;return t(["User Profiles"])},notification_visibility:e=>{const{normalize:t}=e;return t(["Types of notifications to show"])},notification_visibility_follows:e=>{const{normalize:t}=e;return t(["Follows"])},notification_visibility_likes:e=>{const{normalize:t}=e;return t(["Favorites"])},notification_visibility_mentions:e=>{const{normalize:t}=e;return t(["Mentions"])},notification_visibility_repeats:e=>{const{normalize:t}=e;return t(["Repeats"])},notification_visibility_moves:e=>{const{normalize:t}=e;return t(["User Migrates"])},notification_visibility_emoji_reactions:e=>{const{normalize:t}=e;return t(["Reactions"])},notification_visibility_polls:e=>{const{normalize:t}=e;return t(["Ends of polls you voted in"])},no_rich_text_description:e=>{const{normalize:t}=e;return t(["Strip rich text formatting from all posts"])},no_blocks:e=>{const{normalize:t}=e;return t(["No blocks"])},no_mutes:e=>{const{normalize:t}=e;return t(["No mutes"])},hide_favorites_description:e=>{const{normalize:t}=e;return t(["Don't show list of my favorites (people still get notified)"])},hide_follows_description:e=>{const{normalize:t}=e;return t(["Don't show who I'm following"])},hide_followers_description:e=>{const{normalize:t}=e;return t(["Don't show who's following me"])},hide_follows_count_description:e=>{const{normalize:t}=e;return t(["Don't show follow count"])},hide_followers_count_description:e=>{const{normalize:t}=e;return t(["Don't show follower count"])},show_admin_badge:e=>{const{normalize:t}=e;return t(['Show "Admin" badge in my profile'])},show_moderator_badge:e=>{const{normalize:t}=e;return t(['Show "Moderator" badge in my profile'])},nsfw_clickthrough:e=>{const{normalize:t}=e;return t(["Hide sensitive/NSFW media"])},oauth_tokens:e=>{const{normalize:t}=e;return t(["OAuth tokens"])},token:e=>{const{normalize:t}=e;return t(["Token"])},refresh_token:e=>{const{normalize:t}=e;return t(["Refresh token"])},valid_until:e=>{const{normalize:t}=e;return t(["Valid until"])},revoke_token:e=>{const{normalize:t}=e;return t(["Revoke"])},panelRadius:e=>{const{normalize:t}=e;return t(["Panels"])},pause_on_unfocused:e=>{const{normalize:t}=e;return t(["Pause when tab is not focused"])},presets:e=>{const{normalize:t}=e;return t(["Presets"])},profile_background:e=>{const{normalize:t}=e;return t(["Profile background"])},profile_banner:e=>{const{normalize:t}=e;return t(["Profile banner"])},profile_tab:e=>{const{normalize:t}=e;return t(["Profile"])},radii_help:e=>{const{normalize:t}=e;return t(["Set up interface edge rounding (in pixels)"])},replies_in_timeline:e=>{const{normalize:t}=e;return t(["Replies in timeline"])},reply_visibility_all:e=>{const{normalize:t}=e;return t(["Show all replies"])},reply_visibility_following:e=>{const{normalize:t}=e;return t(["Only show replies directed at me or users I'm following"])},reply_visibility_self:e=>{const{normalize:t}=e;return t(["Only show replies directed at me"])},reply_visibility_following_short:e=>{const{normalize:t}=e;return t(["Show replies to my follows"])},reply_visibility_self_short:e=>{const{normalize:t}=e;return t(["Show replies to self only"])},autohide_floating_post_button:e=>{const{normalize:t}=e;return t(["Automatically hide New Post button (mobile)"])},saving_err:e=>{const{normalize:t}=e;return t(["Error saving settings"])},saving_ok:e=>{const{normalize:t}=e;return t(["Settings saved"])},search_user_to_block:e=>{const{normalize:t}=e;return t(["Search whom you want to block"])},search_user_to_mute:e=>{const{normalize:t}=e;return t(["Search whom you want to mute"])},security_tab:e=>{const{normalize:t}=e;return t(["Security"])},scope_copy:e=>{const{normalize:t}=e;return t(["Copy scope when replying (DMs are always copied)"])},mascot:e=>{const{normalize:t}=e;return t(["Mastodon FE Mascot"])},minimal_scopes_mode:e=>{const{normalize:t}=e;return t(["Minimize post scope selection options"])},set_new_avatar:e=>{const{normalize:t}=e;return t(["Set new avatar"])},set_new_mascot:e=>{const{normalize:t}=e;return t(["Set new mascot"])},set_new_profile_background:e=>{const{normalize:t}=e;return t(["Set new profile background"])},set_new_profile_banner:e=>{const{normalize:t}=e;return t(["Set new profile banner"])},reset_avatar:e=>{const{normalize:t}=e;return t(["Reset avatar"])},reset_profile_background:e=>{const{normalize:t}=e;return t(["Reset profile background"])},reset_profile_banner:e=>{const{normalize:t}=e;return t(["Reset profile banner"])},reset_avatar_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to reset the avatar?"])},reset_banner_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to reset the banner?"])},reset_background_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to reset the background?"])},settings:e=>{const{normalize:t}=e;return t(["Settings"])},subject_input_always_show:e=>{const{normalize:t}=e;return t(["Always show subject field"])},subject_line_behavior:e=>{const{normalize:t}=e;return t(["Copy subject when replying"])},subject_line_email:e=>{const{normalize:t}=e;return t(['Like email: "re: subject"'])},subject_line_mastodon:e=>{const{normalize:t}=e;return t(["Like mastodon: copy as is"])},subject_line_noop:e=>{const{normalize:t}=e;return t(["Do not copy"])},conversation_display:e=>{const{normalize:t}=e;return t(["Conversation display style"])},conversation_display_tree:e=>{const{normalize:t}=e;return t(["Tree-style"])},disable_sticky_headers:e=>{const{normalize:t}=e;return t(["Don't stick column headers to top of the screen"])},show_scrollbars:e=>{const{normalize:t}=e;return t(["Show side column's scrollbars"])},third_column_mode:e=>{const{normalize:t}=e;return t(["When there's enough space, show third column containing"])},third_column_mode_none:e=>{const{normalize:t}=e;return t(["Don't show third column at all"])},third_column_mode_notifications:e=>{const{normalize:t}=e;return t(["Notifications column"])},third_column_mode_postform:e=>{const{normalize:t}=e;return t(["Main post form and navigation"])},tree_advanced:e=>{const{normalize:t}=e;return t(["Allow more flexible navigation in tree view"])},tree_fade_ancestors:e=>{const{normalize:t}=e;return t(["Display ancestors of the current status in faint text"])},conversation_display_linear:e=>{const{normalize:t}=e;return t(["Linear-style"])},conversation_other_replies_button:e=>{const{normalize:t}=e;return t(['Show the "other replies" button'])},conversation_other_replies_button_below:e=>{const{normalize:t}=e;return t(["Below statuses"])},conversation_other_replies_button_inside:e=>{const{normalize:t}=e;return t(["Inside statuses"])},max_depth_in_thread:e=>{const{normalize:t}=e;return t(["Maximum number of levels in thread to display by default"])},post_status_content_type:e=>{const{normalize:t}=e;return t(["Post status content type"])},sensitive_by_default:e=>{const{normalize:t}=e;return t(["Mark posts as sensitive by default"])},sensitive_if_subject:e=>{const{normalize:t}=e;return t(["Automatically mark images as sensitive if a subject line is specified"])},render_mfm:e=>{const{normalize:t}=e;return t(["Render Misskey Markdown"])},useStreamingApiWarning:e=>{const{normalize:t}=e;return t(["It's cool use it. If it breaks refresh I guess?"])},stop_gifs:e=>{const{normalize:t}=e;return t(["Pause animated images until you hover on them"])},streaming:e=>{const{normalize:t}=e;return t(["Automatically show new posts when scrolled to the top"])},user_mutes:e=>{const{normalize:t}=e;return t(["Users"])},useStreamingApi:e=>{const{normalize:t}=e;return t(["Receive posts and notifications real-time"])},text:e=>{const{normalize:t}=e;return t(["Text"])},theme:e=>{const{normalize:t}=e;return t(["Theme"])},theme_help:e=>{const{normalize:t}=e;return t(["Use hex color codes (#rrggbb) to customize your color theme."])},theme_help_v2_1:e=>{const{normalize:t}=e;return t(['You can also override certain component\'s colors and opacity by toggling the checkbox, use "Clear all" button to clear all overrides.'])},theme_help_v2_2:e=>{const{normalize:t}=e;return t(["Icons underneath some entries are background/text contrast indicators, hover over for detailed info. Please keep in mind that when using transparency contrast indicators show the worst possible case."])},tooltipRadius:e=>{const{normalize:t}=e;return t(["Tooltips/alerts"])},type_domains_to_mute:e=>{const{normalize:t}=e;return t(["Search domains to mute"])},upload_a_photo:e=>{const{normalize:t}=e;return t(["Upload a photo"])},user_settings:e=>{const{normalize:t}=e;return t(["User Settings"])},values:{false:e=>{const{normalize:t}=e;return t(["no"])},true:e=>{const{normalize:t}=e;return t(["yes"])}},virtual_scrolling:e=>{const{normalize:t}=e;return t(["Optimize timeline rendering"])},use_at_icon:e=>{const{normalize:t}=e;return t(["Display ","@"," symbol as an icon instead of text"])},mention_link_display:e=>{const{normalize:t}=e;return t(["Display mention links"])},mention_link_display_short:e=>{const{normalize:t}=e;return t(["always as short names (e.g. ","@","foo)"])},mention_link_display_full_for_remote:e=>{const{normalize:t}=e;return t(["as full names only for remote users (e.g. ","@","foo","@","example.org)"])},mention_link_display_full:e=>{const{normalize:t}=e;return t(["always as full names (e.g. ","@","foo","@","example.org)"])},mention_link_show_tooltip:e=>{const{normalize:t}=e;return t(["Show full user names as tooltip for remote users"])},mention_link_show_avatar:e=>{const{normalize:t}=e;return t(["Show user avatar beside the link"])},mention_link_fade_domain:e=>{const{normalize:t}=e;return t(["Fade domains (e.g. ","@","example.org in ","@","foo","@","example.org)"])},mention_link_bolden_you:e=>{const{normalize:t}=e;return t(["Highlight mention of you when you are mentioned"])},fun:e=>{const{normalize:t}=e;return t(["Fun"])},greentext:e=>{const{normalize:t}=e;return t(["Meme arrows"])},show_yous:e=>{const{normalize:t}=e;return t(["Show (You)s"])},notifications:e=>{const{normalize:t}=e;return t(["Notifications"])},notification_setting_filters:e=>{const{normalize:t}=e;return t(["Filters"])},notification_setting_block_from_strangers:e=>{const{normalize:t}=e;return t(["Block notifications from users who you do not follow"])},notification_setting_privacy:e=>{const{normalize:t}=e;return t(["Privacy"])},notification_setting_hide_notification_contents:e=>{const{normalize:t}=e;return t(["Hide the sender and contents of push notifications"])},notification_mutes:e=>{const{normalize:t}=e;return t(["To stop receiving notifications from a specific user, use a mute."])},notification_blocks:e=>{const{normalize:t}=e;return t(["Blocking a user stops all notifications as well as unsubscribes them."])},enable_web_push_notifications:e=>{const{normalize:t}=e;return t(["Enable web push notifications"])},more_settings:e=>{const{normalize:t}=e;return t(["More settings"])},style:{switcher:{keep_color:e=>{const{normalize:t}=e;return t(["Keep colors"])},keep_shadows:e=>{const{normalize:t}=e;return t(["Keep shadows"])},keep_opacity:e=>{const{normalize:t}=e;return t(["Keep opacity"])},keep_roundness:e=>{const{normalize:t}=e;return t(["Keep roundness"])},keep_fonts:e=>{const{normalize:t}=e;return t(["Keep fonts"])},save_load_hint:e=>{const{normalize:t}=e;return t(['"Keep" options preserve currently set options when selecting or loading themes, it also stores said options when exporting a theme. When all checkboxes unset, exporting theme will save everything.'])},reset:e=>{const{normalize:t}=e;return t(["Reset"])},clear_all:e=>{const{normalize:t}=e;return t(["Clear all"])},clear_opacity:e=>{const{normalize:t}=e;return t(["Clear opacity"])},load_theme:e=>{const{normalize:t}=e;return t(["Load theme"])},keep_as_is:e=>{const{normalize:t}=e;return t(["Keep as is"])},use_snapshot:e=>{const{normalize:t}=e;return t(["Old version"])},use_source:e=>{const{normalize:t}=e;return t(["New version"])},help:{upgraded_from_v2:e=>{const{normalize:t}=e;return t(["PleromaFE has been upgraded, theme could look a little bit different than you remember."])},v2_imported:e=>{const{normalize:t}=e;return t(["File you imported was made for older FE. We try to maximize compatibility but there still could be inconsistencies."])},future_version_imported:e=>{const{normalize:t}=e;return t(["File you imported was made in newer version of FE."])},older_version_imported:e=>{const{normalize:t}=e;return t(["File you imported was made in older version of FE."])},snapshot_present:e=>{const{normalize:t}=e;return t(["Theme snapshot is loaded, so all values are overriden. You can load theme's actual data instead."])},snapshot_missing:e=>{const{normalize:t}=e;return t(["No theme snapshot was in the file so it could look different than originally envisioned."])},fe_upgraded:e=>{const{normalize:t}=e;return t(["PleromaFE's theme engine upgraded after version update."])},fe_downgraded:e=>{const{normalize:t}=e;return t(["PleromaFE's version rolled back."])},migration_snapshot_ok:e=>{const{normalize:t}=e;return t(["Just to be safe, theme snapshot loaded. You can try loading theme data."])},migration_napshot_gone:e=>{const{normalize:t}=e;return t(["For whatever reason snapshot was missing, some stuff could look different than you remember."])},snapshot_source_mismatch:e=>{const{normalize:t}=e;return t(["Versions conflict: most likely FE was rolled back and updated again, if you changed theme using older version of FE you most likely want to use old version, otherwise use new version."])}}},common:{color:e=>{const{normalize:t}=e;return t(["Color"])},opacity:e=>{const{normalize:t}=e;return t(["Opacity"])},contrast:{hint:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Contrast ratio is ",n(r("ratio")),", it ",n(r("level"))," ",n(r("context"))])},level:{aa:e=>{const{normalize:t}=e;return t(["meets Level AA guideline (minimal)"])},aaa:e=>{const{normalize:t}=e;return t(["meets Level AAA guideline (recommended)"])},bad:e=>{const{normalize:t}=e;return t(["doesn't meet any accessibility guidelines"])}},context:{"18pt":e=>{const{normalize:t}=e;return t(["for large (18pt+) text"])},text:e=>{const{normalize:t}=e;return t(["for text"])}}}},common_colors:{_tab_label:e=>{const{normalize:t}=e;return t(["Common"])},main:e=>{const{normalize:t}=e;return t(["Common colors"])},foreground_hint:e=>{const{normalize:t}=e;return t(['See "Advanced" tab for more detailed control'])},rgbo:e=>{const{normalize:t}=e;return t(["Icons, accents, badges"])}},advanced_colors:{_tab_label:e=>{const{normalize:t}=e;return t(["Advanced"])},alert:e=>{const{normalize:t}=e;return t(["Alert background"])},alert_error:e=>{const{normalize:t}=e;return t(["Error"])},alert_warning:e=>{const{normalize:t}=e;return t(["Warning"])},alert_neutral:e=>{const{normalize:t}=e;return t(["Neutral"])},post:e=>{const{normalize:t}=e;return t(["Posts/User bios"])},badge:e=>{const{normalize:t}=e;return t(["Badge background"])},popover:e=>{const{normalize:t}=e;return t(["Tooltips, menus, popovers"])},badge_notification:e=>{const{normalize:t}=e;return t(["Notification"])},panel_header:e=>{const{normalize:t}=e;return t(["Panel header"])},top_bar:e=>{const{normalize:t}=e;return t(["Top bar"])},borders:e=>{const{normalize:t}=e;return t(["Borders"])},buttons:e=>{const{normalize:t}=e;return t(["Buttons"])},inputs:e=>{const{normalize:t}=e;return t(["Input fields"])},faint_text:e=>{const{normalize:t}=e;return t(["Faded text"])},underlay:e=>{const{normalize:t}=e;return t(["Underlay"])},wallpaper:e=>{const{normalize:t}=e;return t(["Wallpaper"])},poll:e=>{const{normalize:t}=e;return t(["Poll graph"])},icons:e=>{const{normalize:t}=e;return t(["Icons"])},highlight:e=>{const{normalize:t}=e;return t(["Highlighted elements"])},pressed:e=>{const{normalize:t}=e;return t(["Pressed"])},selectedPost:e=>{const{normalize:t}=e;return t(["Selected post"])},selectedMenu:e=>{const{normalize:t}=e;return t(["Selected menu item"])},disabled:e=>{const{normalize:t}=e;return t(["Disabled"])},toggled:e=>{const{normalize:t}=e;return t(["Toggled"])},tabs:e=>{const{normalize:t}=e;return t(["Tabs"])},chat:{incoming:e=>{const{normalize:t}=e;return t(["Incoming"])},outgoing:e=>{const{normalize:t}=e;return t(["Outgoing"])},border:e=>{const{normalize:t}=e;return t(["Border"])}}},radii:{_tab_label:e=>{const{normalize:t}=e;return t(["Roundness"])}},shadows:{_tab_label:e=>{const{normalize:t}=e;return t(["Shadow and lighting"])},component:e=>{const{normalize:t}=e;return t(["Component"])},override:e=>{const{normalize:t}=e;return t(["Override"])},shadow_id:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Shadow #",n(r("value"))])},blur:e=>{const{normalize:t}=e;return t(["Blur"])},spread:e=>{const{normalize:t}=e;return t(["Spread"])},inset:e=>{const{normalize:t}=e;return t(["Inset"])},hintV3:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["For shadows you can also use the ",n(r(0))," notation to use other color slot."])},filter_hint:{always_drop_shadow:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Warning, this shadow always uses ",n(r(0))," when browser supports it."])},drop_shadow_syntax:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," does not support ",n(r(1))," parameter and ",n(r(2))," keyword."])},avatar_inset:e=>{const{normalize:t}=e;return t(["Please note that combining both inset and non-inset shadows on avatars might give unexpected results with transparent avatars."])},spread_zero:e=>{const{normalize:t}=e;return t(["Shadows with spread > 0 will appear as if it was set to zero"])},inset_classic:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Inset shadows will be using ",n(r(0))])}},components:{panel:e=>{const{normalize:t}=e;return t(["Panel"])},panelHeader:e=>{const{normalize:t}=e;return t(["Panel header"])},topBar:e=>{const{normalize:t}=e;return t(["Top bar"])},avatar:e=>{const{normalize:t}=e;return t(["User avatar (in profile view)"])},avatarStatus:e=>{const{normalize:t}=e;return t(["User avatar (in post display)"])},popup:e=>{const{normalize:t}=e;return t(["Popups and tooltips"])},button:e=>{const{normalize:t}=e;return t(["Button"])},buttonHover:e=>{const{normalize:t}=e;return t(["Button (hover)"])},buttonPressed:e=>{const{normalize:t}=e;return t(["Button (pressed)"])},buttonPressedHover:e=>{const{normalize:t}=e;return t(["Button (pressed+hover)"])},input:e=>{const{normalize:t}=e;return t(["Input field"])}}},fonts:{_tab_label:e=>{const{normalize:t}=e;return t(["Fonts"])},help:e=>{const{normalize:t}=e;return t(['Select font to use for elements of UI. For "custom" you have to enter exact font name as it appears in system.'])},components:{interface:e=>{const{normalize:t}=e;return t(["Interface"])},input:e=>{const{normalize:t}=e;return t(["Input fields"])},post:e=>{const{normalize:t}=e;return t(["Post text"])},postCode:e=>{const{normalize:t}=e;return t(["Monospaced text in a post (rich text)"])}},family:e=>{const{normalize:t}=e;return t(["Font name"])},size:e=>{const{normalize:t}=e;return t(["Size (in px)"])},weight:e=>{const{normalize:t}=e;return t(["Weight (boldness)"])},custom:e=>{const{normalize:t}=e;return t(["Custom"])}},preview:{header:e=>{const{normalize:t}=e;return t(["Preview"])},content:e=>{const{normalize:t}=e;return t(["Content"])},error:e=>{const{normalize:t}=e;return t(["Example error"])},button:e=>{const{normalize:t}=e;return t(["Button"])},text:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["A bunch of more ",n(r(0))," and ",n(r(1))])},mono:e=>{const{normalize:t}=e;return t(["content"])},input:e=>{const{normalize:t}=e;return t(["Just landed in L.A."])},faint_link:e=>{const{normalize:t}=e;return t(["helpful manual"])},fine_print:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Read our ",n(r(0))," to learn nothing useful!"])},header_faint:e=>{const{normalize:t}=e;return t(["This is fine"])},checkbox:e=>{const{normalize:t}=e;return t(["I have skimmed over terms and conditions"])},link:e=>{const{normalize:t}=e;return t(["a nice lil' link"])}}},version:{title:e=>{const{normalize:t}=e;return t(["Version"])},backend_version:e=>{const{normalize:t}=e;return t(["Backend version"])},frontend_version:e=>{const{normalize:t}=e;return t(["Frontend version"])}}},time:{day:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," day"])},days:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," days"])},day_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"d"])},days_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"d"])},hour:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," hour"])},hours:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," hours"])},hour_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"h"])},hours_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"h"])},in_future:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["in ",n(r(0))])},in_past:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," ago"])},minute:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," minute"])},minutes:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," minutes"])},minute_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"min"])},minutes_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"min"])},month:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," month"])},months:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," months"])},month_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"mo"])},months_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"mo"])},now:e=>{const{normalize:t}=e;return t(["just now"])},now_short:e=>{const{normalize:t}=e;return t(["now"])},second:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," second"])},seconds:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," seconds"])},second_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"s"])},seconds_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"s"])},week:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," week"])},weeks:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," weeks"])},week_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"w"])},weeks_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"w"])},year:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," year"])},years:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," years"])},year_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"y"])},years_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"y"])}},timeline:{collapse:e=>{const{normalize:t}=e;return t(["Collapse"])},conversation:e=>{const{normalize:t}=e;return t(["Conversation"])},error:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Error fetching timeline: ",n(r(0))])},load_older:e=>{const{normalize:t}=e;return t(["Load older statuses"])},no_retweet_hint:e=>{const{normalize:t}=e;return t(["Post is marked as followers-only or direct and cannot be repeated"])},repeated:e=>{const{normalize:t}=e;return t(["repeated"])},show_new:e=>{const{normalize:t}=e;return t(["Show new"])},reload:e=>{const{normalize:t}=e;return t(["Reload"])},up_to_date:e=>{const{normalize:t}=e;return t(["Up-to-date"])},no_more_statuses:e=>{const{normalize:t}=e;return t(["No more statuses"])},no_statuses:e=>{const{normalize:t}=e;return t(["No statuses"])},socket_reconnected:e=>{const{normalize:t}=e;return t(["Realtime connection established"])},socket_broke:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Realtime connection lost: CloseEvent code ",n(r(0))])}},status:{favorites:e=>{const{normalize:t}=e;return t(["Favorites"])},repeats:e=>{const{normalize:t}=e;return t(["Repeats"])},delete:e=>{const{normalize:t}=e;return t(["Delete status"])},pin:e=>{const{normalize:t}=e;return t(["Pin on profile"])},unpin:e=>{const{normalize:t}=e;return t(["Unpin from profile"])},pinned:e=>{const{normalize:t}=e;return t(["Pinned"])},bookmark:e=>{const{normalize:t}=e;return t(["Bookmark"])},unbookmark:e=>{const{normalize:t}=e;return t(["Unbookmark"])},delete_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to delete this status?"])},reply_to:e=>{const{normalize:t}=e;return t(["Reply to"])},mentions:e=>{const{normalize:t}=e;return t(["Mentions"])},replies_list:e=>{const{normalize:t}=e;return t(["Replies:"])},replies_list_with_others:e=>{const{normalize:t,interpolate:n,named:r,plural:i}=e;return i([t(["Replies (+",n(r("numReplies"))," other):"]),t(["Replies (+",n(r("numReplies"))," others):"])])},mute_conversation:e=>{const{normalize:t}=e;return t(["Mute conversation"])},unmute_conversation:e=>{const{normalize:t}=e;return t(["Unmute conversation"])},status_unavailable:e=>{const{normalize:t}=e;return t(["Status unavailable"])},copy_link:e=>{const{normalize:t}=e;return t(["Copy link to status"])},external_source:e=>{const{normalize:t}=e;return t(["External source"])},thread_muted:e=>{const{normalize:t}=e;return t(["Thread muted"])},thread_muted_and_words:e=>{const{normalize:t}=e;return t([", has words:"])},show_full_subject:e=>{const{normalize:t}=e;return t(["Show full subject"])},hide_full_subject:e=>{const{normalize:t}=e;return t(["Hide full subject"])},show_content:e=>{const{normalize:t}=e;return t(["Show content"])},hide_content:e=>{const{normalize:t}=e;return t(["Hide content"])},status_deleted:e=>{const{normalize:t}=e;return t(["This post was deleted"])},nsfw:e=>{const{normalize:t}=e;return t(["NSFW"])},expand:e=>{const{normalize:t}=e;return t(["Expand"])},you:e=>{const{normalize:t}=e;return t(["(You)"])},plus_more:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["+",n(r("number"))," more"])},many_attachments:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Post has ",n(r("number"))," attachment(s)"])},collapse_attachments:e=>{const{normalize:t}=e;return t(["Collapse attachments"])},show_all_attachments:e=>{const{normalize:t}=e;return t(["Show all attachments"])},show_attachment_in_modal:e=>{const{normalize:t}=e;return t(["Show in media modal"])},show_attachment_description:e=>{const{normalize:t}=e;return t(["Preview description (open attachment for full description)"])},hide_attachment:e=>{const{normalize:t}=e;return t(["Hide attachment"])},remove_attachment:e=>{const{normalize:t}=e;return t(["Remove attachment"])},attachment_stop_flash:e=>{const{normalize:t}=e;return t(["Stop Flash player"])},move_up:e=>{const{normalize:t}=e;return t(["Shift attachment left"])},move_down:e=>{const{normalize:t}=e;return t(["Shift attachment right"])},open_gallery:e=>{const{normalize:t}=e;return t(["Open gallery"])},thread_hide:e=>{const{normalize:t}=e;return t(["Hide this thread"])},thread_show:e=>{const{normalize:t}=e;return t(["Show this thread"])},thread_show_full:e=>{const{normalize:t,interpolate:n,named:r,plural:i}=e;return i([t(["Show everything under this thread (",n(r("numStatus"))," status in total, max depth ",n(r("depth")),")"]),t(["Show everything under this thread (",n(r("numStatus"))," statuses in total, max depth ",n(r("depth")),")"])])},thread_show_full_with_icon:e=>{const{normalize:t,interpolate:n,named:r}=e;return t([n(r("icon"))," ",n(r("text"))])},thread_follow:e=>{const{normalize:t,interpolate:n,named:r,plural:i}=e;return i([t(["See the remaining part of this thread (",n(r("numStatus"))," status in total)"]),t(["See the remaining part of this thread (",n(r("numStatus"))," statuses in total)"])])},thread_follow_with_icon:e=>{const{normalize:t,interpolate:n,named:r}=e;return t([n(r("icon"))," ",n(r("text"))])},ancestor_follow:e=>{const{normalize:t,interpolate:n,named:r,plural:i}=e;return i([t(["See ",n(r("numReplies"))," other reply under this status"]),t(["See ",n(r("numReplies"))," other replies under this status"])])},ancestor_follow_with_icon:e=>{const{normalize:t,interpolate:n,named:r}=e;return t([n(r("icon"))," ",n(r("text"))])},show_all_conversation_with_icon:e=>{const{normalize:t,interpolate:n,named:r}=e;return t([n(r("icon"))," ",n(r("text"))])},show_all_conversation:e=>{const{normalize:t,interpolate:n,named:r,plural:i}=e;return i([t(["Show full conversation (",n(r("numStatus"))," other status)"]),t(["Show full conversation (",n(r("numStatus"))," other statuses)"])])},show_only_conversation_under_this:e=>{const{normalize:t}=e;return t(["Only show replies to this status"])}},user_card:{approve:e=>{const{normalize:t}=e;return t(["Approve"])},block:e=>{const{normalize:t}=e;return t(["Block"])},blocked:e=>{const{normalize:t}=e;return t(["Blocked!"])},deactivated:e=>{const{normalize:t}=e;return t(["Deactivated"])},deny:e=>{const{normalize:t}=e;return t(["Deny"])},edit_profile:e=>{const{normalize:t}=e;return t(["Edit profile"])},favorites:e=>{const{normalize:t}=e;return t(["Favorites"])},follow:e=>{const{normalize:t}=e;return t(["Follow"])},follow_cancel:e=>{const{normalize:t}=e;return t(["Cancel request"])},follow_sent:e=>{const{normalize:t}=e;return t(["Request sent!"])},follow_progress:e=>{const{normalize:t}=e;return t(["Requesting…"])},follow_unfollow:e=>{const{normalize:t}=e;return t(["Unfollow"])},followees:e=>{const{normalize:t}=e;return t(["Following"])},followers:e=>{const{normalize:t}=e;return t(["Followers"])},following:e=>{const{normalize:t}=e;return t(["Following!"])},follows_you:e=>{const{normalize:t}=e;return t(["Follows you!"])},hidden:e=>{const{normalize:t}=e;return t(["Hidden"])},its_you:e=>{const{normalize:t}=e;return t(["It's you!"])},media:e=>{const{normalize:t}=e;return t(["Media"])},mention:e=>{const{normalize:t}=e;return t(["Mention"])},message:e=>{const{normalize:t}=e;return t(["Message"])},mute:e=>{const{normalize:t}=e;return t(["Mute"])},muted:e=>{const{normalize:t}=e;return t(["Muted"])},per_day:e=>{const{normalize:t}=e;return t(["per day"])},remote_follow:e=>{const{normalize:t}=e;return t(["Remote follow"])},report:e=>{const{normalize:t}=e;return t(["Report"])},statuses:e=>{const{normalize:t}=e;return t(["Statuses"])},subscribe:e=>{const{normalize:t}=e;return t(["Subscribe"])},unsubscribe:e=>{const{normalize:t}=e;return t(["Unsubscribe"])},unblock:e=>{const{normalize:t}=e;return t(["Unblock"])},unblock_progress:e=>{const{normalize:t}=e;return t(["Unblocking…"])},block_progress:e=>{const{normalize:t}=e;return t(["Blocking…"])},unmute:e=>{const{normalize:t}=e;return t(["Unmute"])},unmute_progress:e=>{const{normalize:t}=e;return t(["Unmuting…"])},mute_progress:e=>{const{normalize:t}=e;return t(["Muting…"])},hide_repeats:e=>{const{normalize:t}=e;return t(["Hide repeats"])},show_repeats:e=>{const{normalize:t}=e;return t(["Show repeats"])},domain_muted:e=>{const{normalize:t}=e;return t(["Unblock domain"])},mute_domain:e=>{const{normalize:t}=e;return t(["Block domain"])},bot:e=>{const{normalize:t}=e;return t(["Bot"])},admin_menu:{moderation:e=>{const{normalize:t}=e;return t(["Moderation"])},grant_admin:e=>{const{normalize:t}=e;return t(["Grant Admin"])},revoke_admin:e=>{const{normalize:t}=e;return t(["Revoke Admin"])},grant_moderator:e=>{const{normalize:t}=e;return t(["Grant Moderator"])},revoke_moderator:e=>{const{normalize:t}=e;return t(["Revoke Moderator"])},activate_account:e=>{const{normalize:t}=e;return t(["Activate account"])},deactivate_account:e=>{const{normalize:t}=e;return t(["Deactivate account"])},delete_account:e=>{const{normalize:t}=e;return t(["Delete account"])},force_nsfw:e=>{const{normalize:t}=e;return t(["Mark all posts as NSFW"])},strip_media:e=>{const{normalize:t}=e;return t(["Remove media from posts"])},force_unlisted:e=>{const{normalize:t}=e;return t(["Force posts to be unlisted"])},sandbox:e=>{const{normalize:t}=e;return t(["Force posts to be followers-only"])},disable_remote_subscription:e=>{const{normalize:t}=e;return t(["Disallow following user from remote instances"])},disable_any_subscription:e=>{const{normalize:t}=e;return t(["Disallow following user at all"])},quarantine:e=>{const{normalize:t}=e;return t(["Disallow user posts from federating"])},delete_user:e=>{const{normalize:t}=e;return t(["Delete user"])},delete_user_confirmation:e=>{const{normalize:t}=e;return t(["Are you absolutely sure? This action cannot be undone."])}},highlight:{disabled:e=>{const{normalize:t}=e;return t(["No highlight"])},solid:e=>{const{normalize:t}=e;return t(["Solid bg"])},striped:e=>{const{normalize:t}=e;return t(["Striped bg"])},side:e=>{const{normalize:t}=e;return t(["Side stripe"])}}},user_profile:{timeline_title:e=>{const{normalize:t}=e;return t(["User timeline"])},profile_does_not_exist:e=>{const{normalize:t}=e;return t(["Sorry, this profile does not exist."])},profile_loading_error:e=>{const{normalize:t}=e;return t(["Sorry, there was an error loading this profile."])}},user_reporting:{title:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Reporting ",n(r(0))])},add_comment_description:e=>{const{normalize:t}=e;return t(["The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:"])},additional_comments:e=>{const{normalize:t}=e;return t(["Additional comments"])},forward_description:e=>{const{normalize:t}=e;return t(["The account is from another server. Send a copy of the report there as well?"])},forward_to:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Forward to ",n(r(0))])},submit:e=>{const{normalize:t}=e;return t(["Submit"])},generic_error:e=>{const{normalize:t}=e;return t(["An error occurred while processing your request."])}},who_to_follow:{more:e=>{const{normalize:t}=e;return t(["More"])},who_to_follow:e=>{const{normalize:t}=e;return t(["Who to follow"])}},tool_tip:{media_upload:e=>{const{normalize:t}=e;return t(["Upload media"])},repeat:e=>{const{normalize:t}=e;return t(["Repeat"])},reply:e=>{const{normalize:t}=e;return t(["Reply"])},favorite:e=>{const{normalize:t}=e;return t(["Favorite"])},add_reaction:e=>{const{normalize:t}=e;return t(["Add Reaction"])},user_settings:e=>{const{normalize:t}=e;return t(["User Settings"])},accept_follow_request:e=>{const{normalize:t}=e;return t(["Accept follow request"])},reject_follow_request:e=>{const{normalize:t}=e;return t(["Reject follow request"])},bookmark:e=>{const{normalize:t}=e;return t(["Bookmark"])}},upload:{error:{base:e=>{const{normalize:t}=e;return t(["Upload failed."])},message:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Upload failed: ",n(r(0))])},file_too_big:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["File too big [",n(r("filesize")),n(r("filesizeunit"))," / ",n(r("allowedsize")),n(r("allowedsizeunit")),"]"])},default:e=>{const{normalize:t}=e;return t(["Try again later"])}},file_size_units:{B:e=>{const{normalize:t}=e;return t(["B"])},KiB:e=>{const{normalize:t}=e;return t(["KiB"])},MiB:e=>{const{normalize:t}=e;return t(["MiB"])},GiB:e=>{const{normalize:t}=e;return t(["GiB"])},TiB:e=>{const{normalize:t}=e;return t(["TiB"])}}},search:{people:e=>{const{normalize:t}=e;return t(["People"])},hashtags:e=>{const{normalize:t}=e;return t(["Hashtags"])},person_talking:e=>{const{normalize:t,interpolate:n,named:r}=e;return t([n(r("count"))," person talking"])},people_talking:e=>{const{normalize:t,interpolate:n,named:r}=e;return t([n(r("count"))," people talking"])},no_results:e=>{const{normalize:t}=e;return t(["No results"])}},password_reset:{forgot_password:e=>{const{normalize:t}=e;return t(["Forgot password?"])},password_reset:e=>{const{normalize:t}=e;return t(["Password reset"])},instruction:e=>{const{normalize:t}=e;return t(["Enter your email address or username. We will send you a link to reset your password."])},placeholder:e=>{const{normalize:t}=e;return t(["Your email or username"])},check_email:e=>{const{normalize:t}=e;return t(["Check your email for a link to reset your password."])},return_home:e=>{const{normalize:t}=e;return t(["Return to the home page"])},too_many_requests:e=>{const{normalize:t}=e;return t(["You have reached the limit of attempts, try again later."])},password_reset_disabled:e=>{const{normalize:t}=e;return t(["Password reset is disabled. Please contact your instance administrator."])},password_reset_required:e=>{const{normalize:t}=e;return t(["You must reset your password to log in."])},password_reset_required_but_mailer_is_disabled:e=>{const{normalize:t}=e;return t(["You must reset your password, but password reset is disabled. Please contact your instance administrator."])}},chats:{you:e=>{const{normalize:t}=e;return t(["You:"])},message_user:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Message ",n(r("nickname"))])},delete:e=>{const{normalize:t}=e;return t(["Delete"])},chats:e=>{const{normalize:t}=e;return t(["Chats"])},new:e=>{const{normalize:t}=e;return t(["New Chat"])},empty_message_error:e=>{const{normalize:t}=e;return t(["Cannot post empty message"])},more:e=>{const{normalize:t}=e;return t(["More"])},delete_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to delete this message?"])},error_loading_chat:e=>{const{normalize:t}=e;return t(["Something went wrong when loading the chat."])},error_sending_message:e=>{const{normalize:t}=e;return t(["Something went wrong when sending the message."])},empty_chat_list_placeholder:e=>{const{normalize:t}=e;return t(["You don't have any chats yet. Start a new chat!"])}},file_type:{audio:e=>{const{normalize:t}=e;return t(["Audio"])},video:e=>{const{normalize:t}=e;return t(["Video"])},image:e=>{const{normalize:t}=e;return t(["Image"])},file:e=>{const{normalize:t}=e;return t(["File"])}},display_date:{today:e=>{const{normalize:t}=e;return t(["Today"])}}}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";n(223)},,function(e,t,n){"use strict";n(225)},function(e,t,n){"use strict";n(226)},function(e,t,n){"use strict";n(227)},function(e,t,n){"use strict";n(228)},function(e,t,n){"use strict";n(229)},function(e,t,n){"use strict";n(230)},function(e,t,n){"use strict";n(231)},function(e,t,n){"use strict";n(232)},function(e,t,n){"use strict";n(233)},function(e,t,n){"use strict";n(234)},function(e,t,n){"use strict";n(235)},,function(e,t,n){"use strict";n(236)},function(e,t,n){"use strict";n(237)},function(e,t,n){"use strict";n(238)},function(e,t,n){"use strict";n(239)},function(e,t,n){},function(e,t,n){"use strict";n(240)},,,,function(e,t,n){"use strict";n(242)},function(e,t,n){"use strict";n(243)},function(e,t,n){"use strict";n(244)},function(e,t,n){"use strict";n(245)},function(e,t,n){"use strict";n(246)},function(e,t,n){"use strict";n(247)},function(e,t,n){"use strict";n(248)},function(e,t,n){"use strict";n(249)},function(e,t,n){"use strict";n(250)},function(e,t,n){"use strict";n(251)},function(e,t,n){"use strict";n(252)},function(e,t,n){"use strict";n(253)},function(e,t,n){"use strict";n(254)},,,,function(e,t,n){"use strict";n(256)},function(e,t,n){"use strict";n(257)},function(e,t,n){"use strict";n(258)},function(e,t,n){"use strict";n(259)},function(e,t,n){"use strict";n(260)},function(e,t,n){"use strict";n(261)},function(e,t,n){"use strict";n(262)},function(e,t,n){"use strict";n(263)},function(e,t,n){"use strict";n(264)},function(e,t,n){"use strict";n(265)},function(e,t,n){"use strict";n(266)},function(e,t,n){"use strict";n(267)},function(e,t,n){"use strict";n(268)},function(e,t,n){"use strict";n(269)},function(e,t,n){"use strict";n(270)},function(e,t,n){"use strict";n(271)},function(e,t,n){"use strict";n(272)},function(e,t,n){"use strict";n(273)},function(e,t,n){"use strict";n(274)},function(e,t,n){"use strict";n(275)},function(e,t,n){"use strict";n(276)},function(e,t,n){"use strict";n(277)},function(e,t,n){"use strict";n(278)},function(e,t,n){"use strict";n(279)},function(e,t,n){"use strict";n(280)},function(e,t,n){"use strict";n(281)},function(e,t,n){"use strict";n(282)},function(e,t,n){"use strict";n(283)},function(e,t,n){"use strict";n(284)},function(e,t,n){"use strict";n(285)},,,function(e,t,n){"use strict";n(287)},function(e,t,n){"use strict";n(288)},function(e,t,n){"use strict";n(289)},function(e,t,n){"use strict";n(290)},function(e,t,n){"use strict";n(291)},function(e,t,n){},function(e,t,n){"use strict";n(292)},function(e,t,n){"use strict";n(293)},function(e,t,n){"use strict";n(294)},function(e,t,n){"use strict";n(295)},function(e,t,n){"use strict";n(296)},function(e,t,n){"use strict";n(297)},function(e,t,n){"use strict";n(298)},function(e,t,n){"use strict";n(299)},function(e,t,n){},function(e,t,n){"use strict";n(302)},function(e,t,n){"use strict";n(303)},,function(e,t,n){"use strict";n(304)},function(e,t,n){"use strict";n(305)},function(e,t,n){"use strict";n(306)},function(e,t,n){"use strict";n(307)},function(e,t,n){"use strict";n(308)},function(e,t,n){"use strict";n(309)},function(e,t,n){"use strict";n.r(t);var r=n(13),i=n.n(r),o=n(10),s=n.n(o),a=n(8),c=(n(348),n(311));try{new EventTarget}catch(e){window.EventTarget=c.a}var l={state:{settingsModalState:"hidden",settingsModalLoaded:!1,settingsModalTargetTab:null,settings:{currentSaveStateNotice:null,noticeClearTimeout:null,notificationPermission:null},browserSupport:{cssFilter:window.CSS&&window.CSS.supports&&(window.CSS.supports("filter","drop-shadow(0 0)")||window.CSS.supports("-webkit-filter","drop-shadow(0 0)"))},layoutType:"normal",globalNotices:[],layoutHeight:0,lastTimeline:null},mutations:{settingsSaved:function(e,t){var n=t.success,r=t.error;n?(e.noticeClearTimeout&&clearTimeout(e.noticeClearTimeout),e.settings.currentSaveStateNotice={error:!1,data:n},e.settings.noticeClearTimeout=setTimeout((function(){return delete e.settings.currentSaveStateNotice}),2e3)):e.settings.currentSaveStateNotice={error:!0,errorData:r}},setNotificationPermission:function(e,t){e.notificationPermission=t},setLayoutType:function(e,t){e.layoutType=t},closeSettingsModal:function(e){e.settingsModalState="hidden"},togglePeekSettingsModal:function(e){switch(e.settingsModalState){case"minimized":return void(e.settingsModalState="visible");case"visible":return void(e.settingsModalState="minimized");default:throw new Error("Illegal minimization state of settings modal")}},openSettingsModal:function(e){e.settingsModalState="visible",e.settingsModalLoaded||(e.settingsModalLoaded=!0)},setSettingsModalTargetTab:function(e,t){e.settingsModalTargetTab=t},pushGlobalNotice:function(e,t){e.globalNotices.push(t)},removeGlobalNotice:function(e,t){e.globalNotices=e.globalNotices.filter((function(e){return e!==t}))},setLayoutHeight:function(e,t){e.layoutHeight=t},setLayoutWidth:function(e,t){e.layoutWidth=t},setLastTimeline:function(e,t){e.lastTimeline=t}},actions:{setPageTitle:function(e){var t=e.rootState,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";document.title="".concat(n," ").concat(t.instance.name)},settingsSaved:function(e,t){var n=e.commit;e.dispatch;n("settingsSaved",{success:t.success,error:t.error})},setNotificationPermission:function(e,t){(0,e.commit)("setNotificationPermission",t)},closeSettingsModal:function(e){(0,e.commit)("closeSettingsModal")},openSettingsModal:function(e){(0,e.commit)("openSettingsModal")},togglePeekSettingsModal:function(e){(0,e.commit)("togglePeekSettingsModal")},clearSettingsModalTargetTab:function(e){(0,e.commit)("setSettingsModalTargetTab",null)},openSettingsModalTab:function(e,t){var n=e.commit;n("setSettingsModalTargetTab",t),n("openSettingsModal")},pushGlobalNotice:function(e,t){var n=e.commit,r=e.dispatch,i=e.state,o=t.messageKey,s=t.messageArgs,a=void 0===s?{}:s,c=t.level,l=void 0===c?"error":c,u=t.timeout,d=void 0===u?0:u;n("pushGlobalNotice",{messageKey:o,messageArgs:a,level:l});var p=i.globalNotices[i.globalNotices.length-1];return d&&setTimeout((function(){return r("removeGlobalNotice",p)}),d),p},removeGlobalNotice:function(e,t){(0,e.commit)("removeGlobalNotice",t)},setLayoutHeight:function(e,t){(0,e.commit)("setLayoutHeight",t)},setLayoutWidth:function(e,t){var n=e.commit,r=e.state,i=e.rootGetters,o=e.rootState,s=t;void 0!==t?n("setLayoutWidth",t):s=r.layoutWidth;var a=s<=800?"mobile":"normal";"none"!==i.mergedConfig.thirdColumnMode&&o.users.currentUser?n("setLayoutType",s>=1300?"wide":a):n("setLayoutType",a)},setLastTimeline:function(e,t){(0,e.commit)("setLastTimeline",t)}}},u=n(12),d=n.n(u),p=n(5),h=n.n(p),b=n(11),m=n.n(b),f=n(43),O=n(54),j=n(15),g=n(121);function v(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function y(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?v(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):v(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var w={state:{name:"Pleroma FE",registrationOpen:!0,server:"http://localhost:4040/",textlimit:5e3,themeData:void 0,vapidPublicKey:void 0,alwaysShowSubjectInput:!0,defaultAvatar:"/images/avi.png",defaultBanner:"/images/banner.png",background:"/static/aurora_borealis.jpg",collapseMessageWithSubject:!1,greentext:!1,useAtIcon:!1,mentionLinkDisplay:"short",mentionLinkShowTooltip:!0,mentionLinkShowAvatar:!1,mentionLinkFadeDomain:!0,mentionLinkShowYous:!1,mentionLinkBoldenYou:!0,hideFilteredStatuses:!1,hideMutedPosts:!1,hideMutedThreads:!0,hideWordFilteredPosts:!1,hidePostStats:!1,hideBotIndication:!1,hideSitename:!1,hideUserStats:!1,muteBotStatuses:!1,loginMethod:"password",logo:"/static/logo.svg",logoMargin:".2em",logoMask:!0,logoLeft:!1,minimalScopesMode:!1,nsfwCensorImage:void 0,postContentType:"text/plain",redirectRootLogin:"/main/friends",redirectRootNoLogin:"/main/all",scopeCopy:!0,showFeaturesPanel:!0,showInstanceSpecificPanel:!1,sidebarRight:!1,subjectLineBehavior:"email",theme:"pleroma-dark",virtualScrolling:!0,sensitiveByDefault:!1,sensitiveIfSubject:!1,renderMisskeyMarkdown:!1,conversationDisplay:"linear",conversationTreeAdvanced:!1,conversationOtherRepliesButton:"below",conversationTreeFadeAncestors:!1,maxDepthInThread:6,customEmoji:[],customEmojiFetched:!1,emoji:[],emojiFetched:!1,pleromaBackend:!0,postFormats:[],restrictedNicknames:[],safeDM:!0,knownDomains:[],shoutAvailable:!1,pleromaChatMessagesAvailable:!1,gopherAvailable:!1,mediaProxyAvailable:!1,suggestionsEnabled:!1,suggestionsWeb:"",instanceSpecificPanelContent:"",tos:"",backendVersion:"",frontendVersion:"",pollsAvailable:!1,pollLimits:{max_options:4,max_option_chars:255,min_expiration:60,max_expiration:86400}},mutations:{setInstanceOption:function(e,t){var n=t.name,r=t.value;void 0!==r&&(e[n]=r)},setKnownDomains:function(e,t){e.knownDomains=t}},getters:{instanceDefaultConfig:function(e){return g.c.map((function(t){return[t,e[t]]})).reduce((function(e,t){var n=m()(t,2),r=n[0],i=n[1];return y(y({},e),{},h()({},r,i))}),{})},instanceDomain:function(e){return new URL(e.server).hostname}},actions:{setInstanceOption:function(e,t){var n=e.commit,r=e.dispatch,i=t.name,o=t.value;switch(n("setInstanceOption",{name:i,value:o}),i){case"name":r("setPageTitle");break;case"shoutAvailable":o&&r("initializeSocket");break;case"theme":r("setTheme",o)}},getStaticEmoji:function(e){return i()(s.a.mark((function t(){var n,r,i,o;return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=e.commit,t.prev=1,t.next=4,window.fetch("/static/emoji.json");case 4:if(!(r=t.sent).ok){t.next=13;break}return t.next=8,r.json();case 8:i=t.sent,o=Object.keys(i).map((function(e){return{displayText:e,imageUrl:!1,replacement:i[e]}})).sort((function(e,t){return e.name>t.name?1:-1})),n("setInstanceOption",{name:"emoji",value:o}),t.next=14;break;case 13:throw r;case 14:t.next=20;break;case 16:t.prev=16,t.t0=t.catch(1),console.warn("Can't load static emoji"),console.warn(t.t0);case 20:case"end":return t.stop()}}),t,null,[[1,16]])})))()},getCustomEmoji:function(e){return i()(s.a.mark((function t(){var n,r,i,o,a,c;return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=e.commit,r=e.state,t.prev=1,t.next=4,window.fetch("/api/pleroma/emoji.json");case 4:if(!(i=t.sent).ok){t.next=14;break}return t.next=8,i.json();case 8:o=t.sent,a=Array.isArray(o)?Object.assign.apply(Object,[{}].concat(d()(o))):o,c=Object.entries(a).map((function(e){var t=m()(e,2),n=t[0],i=t[1],o=i.image_url;return{displayText:n,imageUrl:o?r.server+o:i,tags:o?i.tags.sort((function(e,t){return e>t?1:0})):["utf"],replacement:":".concat(n,": ")}})).sort((function(e,t){return e.displayText.toLowerCase()>t.displayText.toLowerCase()?1:-1})),n("setInstanceOption",{name:"customEmoji",value:c}),t.next=15;break;case 14:throw i;case 15:t.next=21;break;case 17:t.prev=17,t.t0=t.catch(1),console.warn("Can't load custom emojis"),console.warn(t.t0);case 21:case"end":return t.stop()}}),t,null,[[1,17]])})))()},setTheme:function(e,t){var n=e.commit,r=e.rootState;n("setInstanceOption",{name:"theme",value:t}),Object(f.j)(t).then((function(e){if(n("setInstanceOption",{name:"themeData",value:e}),!r.config.customTheme){var t=e.source;!e.theme||t&&t.themeEngineVersion===O.a?Object(f.b)(t):Object(f.b)(e.theme)}}))},fetchEmoji:function(e){var t=e.dispatch,n=e.state;n.customEmojiFetched||(n.customEmojiFetched=!0,t("getCustomEmoji")),n.emojiFetched||(n.emojiFetched=!0,t("getStaticEmoji"))},getKnownDomains:function(e){return i()(s.a.mark((function t(){var n,r,i;return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=e.commit,r=e.rootState,t.prev=1,t.next=4,j.c.fetchKnownDomains({credentials:r.users.currentUser.credentials});case 4:i=t.sent,n("setKnownDomains",i),t.next=12;break;case 8:t.prev=8,t.t0=t.catch(1),console.warn("Can't load known domains"),console.warn(t.t0);case 12:case"end":return t.stop()}}),t,null,[[1,8]])})))()}}},k=n(131),_=n.n(k),S=n(19),C=n.n(S),P=n(46),x=n.n(P),D=n(318),T=n.n(D),I=n(122),$=n.n(I),z=n(132),M=n.n(z),U=n(133),F=n.n(U),E=n(30),L=n.n(E),R=n(60),A=n.n(R),N=n(29),B=n.n(N),V=n(319),H=n.n(V),q=n(61),J=n.n(q),W=n(26);function Y(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function G(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Y(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Y(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var K=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return{statuses:[],statusesObject:{},faves:[],visibleStatuses:[],visibleStatusesObject:{},newStatusCount:0,maxId:0,minId:0,minVisibleId:0,loading:!1,followers:[],friends:[],userId:e,flushMarker:0}},X=function(){return{desktopNotificationSilence:!0,maxId:0,minId:Number.POSITIVE_INFINITY,data:[],idStore:{},loading:!1}},Z=function(){return{allStatuses:[],allStatusesObject:{},conversationsObject:{},maxId:0,notifications:X(),favorites:new Set,timelines:{mentions:K(),public:K(),user:K(),favorites:K(),media:K(),publicAndExternal:K(),friends:K(),tag:K(),dms:K(),bookmarks:K()}}},Q=function(e,t,n){var r=t[n.id];return r?($()(r,_()(n,(function(e,t){return null===e||"user"===t}))),r.attachments.splice(r.attachments.length),{item:r,new:!1}):(function(e){e.deleted=!1,e.attachments=e.attachments||[]}(n),e.push(n),t[n.id]=n,{item:n,new:!0})},ee=function(e,t){var n=Number(e.id),r=Number(t.id),i=!Number.isNaN(n),o=!Number.isNaN(r);return i&&o?n>r?-1:1:i&&!o?1:!i&&o||e.id>t.id?-1:1},te=function(e){return e.visibleStatuses=e.visibleStatuses.sort(ee),e.statuses=e.statuses.sort(ee),e.minVisibleId=(x()(e.visibleStatuses)||{}).id,e},ne=function(e,t){var n=Q(e.allStatuses,e.allStatusesObject,t);if(n.new){var r=n.item,i=e.conversationsObject,o=r.statusnet_conversation_id;i[o]?i[o].push(r):i[o]=[r]}return n},re=function(e,t){e.notifications.maxId=t.id>e.notifications.maxId?t.id:e.notifications.maxId,e.notifications.minId=t.id<e.notifications.minId?t.id:e.notifications.minId},ie={addNewStatuses:function(e,t){var n=t.statuses,r=t.showImmediately,i=void 0!==r&&r,o=t.timeline,s=t.user,a=void 0===s?{}:s,c=t.noIdUpdate,l=void 0!==c&&c,u=t.userId,d=t.pagination,p=void 0===d?{}:d;if(!C()(n))return!1;var h=e.allStatuses,b=e.timelines[o],m=p.maxId||(n.length>0?M()(n,"id").id:0),f=p.minId||(n.length>0?F()(n,"id").id:0),O=o&&(f>b.maxId||0===b.maxId)&&n.length>0,j=o&&(m<b.minId||0===b.minId)&&n.length>0;if(!l&&O&&(b.maxId=f),!l&&j&&(b.minId=m),"user"!==o&&"media"!==o||b.userId===u){var g=function(t,n){var r,i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=ne(e,t),c=s.item;if(s.new){if("status"===c.type&&L()(c.attentions,{id:a.id})){var l=e.timelines.mentions;b!==l&&(Q(l.statuses,l.statusesObject,c),l.newStatusCount+=1,te(l))}if("direct"===c.visibility){var u=e.timelines.dms;Q(u.statuses,u.statusesObject,c),u.newStatusCount+=1,te(u)}}return o&&i&&(r=Q(b.statuses,b.statusesObject,c)),o&&n?Q(b.visibleStatuses,b.visibleStatusesObject,c):o&&i&&r.new&&(b.newStatusCount+=1),c},v={status:function(e){g(e,i)},retweet:function(e){var t,n=g(e.retweeted_status,!1,!1);t=o&&L()(b.statuses,(function(e){return e.retweeted_status?e.id===n.id||e.retweeted_status.id===n.id:e.id===n.id}))?g(e,!1,!1):g(e,i),t.retweeted_status=n},favorite:function(t){e.favorites.has(t.id)||(e.favorites.add(t.id),function(e,t){var n=L()(h,{id:e.in_reply_to_status_id});n&&(e.user.id===a.id?n.favorited=!0:n.fave_num+=1)}(t))},deletion:function(t){var n=t.uri,r=L()(h,{uri:n});r&&(!function(e,t){J()(e.allStatuses,{id:t.id}),J()(e.notifications.data,(function(e){return e.action.id===t.id}));var n=t.statusnet_conversation_id;e.conversationsObject[n]&&J()(e.conversationsObject[n],{id:t.id})}(e,r),o&&(J()(b.statuses,{uri:n}),J()(b.visibleStatuses,{uri:n})))},follow:function(e){},default:function(e){console.log("unknown status type"),console.log(e)}};B()(n,(function(e){var t=e.type;(v[t]||v.default)(e)})),o&&"bookmarks"!==o&&te(b)}},addNewNotifications:function(e,t){var n=t.dispatch,r=t.notifications,i=(t.older,t.visibleNotificationTypes,t.rootGetters,t.newNotificationSideEffects);B()(r,(function(t){if(!Object(W.c)(t))return console.error("Invalid notification:",t),void re(e,t);Object(W.b)(t.type)&&(t.action=ne(e,t.action).item,t.status=t.status&&ne(e,t.status).item),"pleroma:emoji_reaction"===t.type&&n("fetchEmojiReactionsBy",t.status.id),e.notifications.idStore.hasOwnProperty(t.id)?t.seen&&(e.notifications.idStore[t.id].seen=!0):(re(e,t),e.notifications.data.push(t),e.notifications.idStore[t.id]=t,i(t))}))},removeStatus:function(e,t){var n=t.timeline,r=t.userId,i=e.timelines[n];r&&(J()(i.statuses,{user:{id:r}}),J()(i.visibleStatuses,{user:{id:r}}),i.minVisibleId=i.visibleStatuses.length>0?x()(i.visibleStatuses).id:0,i.maxId=i.statuses.length>0?T()(i.statuses).id:0)},showNewStatuses:function(e,t){var n=t.timeline,r=e.timelines[n];r.newStatusCount=0,r.visibleStatuses=H()(r.statuses,0,50),r.minVisibleId=x()(r.visibleStatuses).id,r.minId=r.minVisibleId,r.visibleStatusesObject={},B()(r.visibleStatuses,(function(e){r.visibleStatusesObject[e.id]=e}))},resetStatuses:function(e){var t=Z();Object.entries(t).forEach((function(t){var n=m()(t,2),r=n[0],i=n[1];e[r]=i}))},clearTimeline:function(e,t){var n=t.timeline,r=t.excludeUserId,i=void 0!==r&&r?e.timelines[n].userId:void 0;e.timelines[n]=K(i)},clearNotifications:function(e){e.notifications=X()},setFavorited:function(e,t){var n=t.status,r=t.value,i=e.allStatusesObject[n.id];i.favorited!==r&&(r?i.fave_num++:i.fave_num--),i.favorited=r},setFavoritedConfirm:function(e,t){var n=t.status,r=t.user,i=e.allStatusesObject[n.id];i.favorited=n.favorited,i.fave_num=n.fave_num;var o=A()(i.favoritedBy,{id:r.id});-1===o||i.favorited?-1===o&&i.favorited&&i.favoritedBy.push(r):i.favoritedBy.splice(o,1)},setMutedStatus:function(e,t){var n=e.allStatusesObject[t.id];n.thread_muted=t.thread_muted,void 0!==n.thread_muted&&e.conversationsObject[n.statusnet_conversation_id].forEach((function(e){e.thread_muted=n.thread_muted}))},setRetweeted:function(e,t){var n=t.status,r=t.value,i=e.allStatusesObject[n.id];i.repeated!==r&&(r?i.repeat_num++:i.repeat_num--),i.repeated=r},setRetweetedConfirm:function(e,t){var n=t.status,r=t.user,i=e.allStatusesObject[n.id];i.repeated=n.repeated,i.repeat_num=n.repeat_num;var o=A()(i.rebloggedBy,{id:r.id});-1===o||i.repeated?-1===o&&i.repeated&&i.rebloggedBy.push(r):i.rebloggedBy.splice(o,1)},setBookmarked:function(e,t){var n=t.status,r=t.value;e.allStatusesObject[n.id].bookmarked=r},setBookmarkedConfirm:function(e,t){var n=t.status;e.allStatusesObject[n.id].bookmarked=n.bookmarked},setDeleted:function(e,t){var n=t.status,r=e.allStatusesObject[n.id];r&&(r.deleted=!0)},setManyDeleted:function(e,t){Object.values(e.allStatusesObject).forEach((function(e){t(e)&&(e.deleted=!0)}))},setLoading:function(e,t){var n=t.timeline,r=t.value;e.timelines[n].loading=r},setNsfw:function(e,t){var n=t.id,r=t.nsfw;e.allStatusesObject[n].nsfw=r},setNotificationsLoading:function(e,t){var n=t.value;e.notifications.loading=n},setNotificationsSilence:function(e,t){var n=t.value;e.notifications.desktopNotificationSilence=n},markNotificationsAsSeen:function(e){B()(e.notifications.data,(function(e){e.seen=!0}))},markSingleNotificationAsSeen:function(e,t){var n=t.id,r=L()(e.notifications.data,(function(e){return e.id===n}));r&&(r.seen=!0)},dismissNotification:function(e,t){var n=t.id;e.notifications.data=e.notifications.data.filter((function(e){return e.id!==n}))},dismissNotifications:function(e,t){var n=t.finder;e.notifications.data=e.notifications.data.filter((function(e){return n}))},updateNotification:function(e,t){var n=t.id,r=t.updater,i=L()(e.notifications.data,(function(e){return e.id===n}));i&&r(i)},queueFlush:function(e,t){var n=t.timeline,r=t.id;e.timelines[n].flushMarker=r},queueFlushAll:function(e){Object.keys(e.timelines).forEach((function(t){e.timelines[t].flushMarker=e.timelines[t].maxId}))},addRepeats:function(e,t){var n=t.id,r=t.rebloggedByUsers,i=t.currentUser,o=e.allStatusesObject[n];o.rebloggedBy=r.filter((function(e){return e})),o.repeat_num=o.rebloggedBy.length,o.repeated=!!o.rebloggedBy.find((function(e){var t=e.id;return i.id===t}))},addFavs:function(e,t){var n=t.id,r=t.favoritedByUsers,i=t.currentUser,o=e.allStatusesObject[n];o.favoritedBy=r.filter((function(e){return e})),o.fave_num=o.favoritedBy.length,o.favorited=!!o.favoritedBy.find((function(e){var t=e.id;return i.id===t}))},addEmojiReactionsBy:function(e,t){var n=t.id,r=t.emojiReactions;t.currentUser;e.allStatusesObject[n].emoji_reactions=r},addOwnReaction:function(e,t){var n=t.id,r=t.emoji,i=t.currentUser,o=e.allStatusesObject[n],s=A()(o.emoji_reactions,{name:r}),a=o.emoji_reactions[s]||{name:r,count:0,accounts:[]},c=G(G({},a),{},{count:a.count+1,me:!0,accounts:[].concat(d()(a.accounts),[i])});s>=0?o.emoji_reactions[s]=c:o.emoji_reactions=[].concat(d()(o.emoji_reactions),[c])},removeOwnReaction:function(e,t){var n=t.id,r=t.emoji,i=t.currentUser,o=e.allStatusesObject[n],s=A()(o.emoji_reactions,{name:r});if(!(s<0)){var a=o.emoji_reactions[s],c=a.accounts||[],l=G(G({},a),{},{count:a.count-1,me:!1,accounts:c.filter((function(e){return e.id!==i.id}))});l.count>0?o.emoji_reactions[s]=l:o.emoji_reactions=o.emoji_reactions.filter((function(e){return e.name!==r}))}},updateStatusWithPoll:function(e,t){var n=t.id,r=t.poll;e.allStatusesObject[n].poll=r},setVirtualHeight:function(e,t){var n=t.statusId,r=t.height;e.allStatusesObject[n].virtualHeight=r}},oe={state:Z(),actions:{addNewStatuses:function(e,t){var n=e.rootState,r=e.commit,i=t.statuses,o=t.showImmediately,s=void 0!==o&&o,a=t.timeline,c=void 0!==a&&a,l=t.noIdUpdate,u=void 0!==l&&l,d=t.userId,p=t.pagination;r("addNewStatuses",{statuses:i,showImmediately:s,timeline:c,noIdUpdate:u,user:n.users.currentUser,userId:d,pagination:p})},addNewNotifications:function(e,t){var n=t.notifications,r=t.older;(0,e.commit)("addNewNotifications",{dispatch:e.dispatch,notifications:n,older:r,rootGetters:e.rootGetters,newNotificationSideEffects:function(t){Object(W.d)(e,t)}})},setNotificationsLoading:function(e,t){e.rootState;(0,e.commit)("setNotificationsLoading",{value:t.value})},setNotificationsSilence:function(e,t){e.rootState;(0,e.commit)("setNotificationsSilence",{value:t.value})},fetchStatus:function(e,t){var n=e.rootState,r=e.dispatch;return n.api.backendInteractor.fetchStatus({id:t}).then((function(e){return r("addNewStatuses",{statuses:[e]})}))},deleteStatus:function(e,t){var n=e.rootState;(0,e.commit)("setDeleted",{status:t}),j.c.deleteStatus({id:t.id,credentials:n.users.currentUser.credentials})},deleteStatusById:function(e,t){var n=e.rootState;(0,e.commit)("setDeleted",{status:n.statuses.allStatusesObject[t]})},markStatusesAsDeleted:function(e,t){(0,e.commit)("setManyDeleted",t)},favorite:function(e,t){var n=e.rootState,r=e.commit;r("setFavorited",{status:t,value:!0}),n.api.backendInteractor.favorite({id:t.id}).then((function(e){return r("setFavoritedConfirm",{status:e,user:n.users.currentUser})}))},unfavorite:function(e,t){var n=e.rootState,r=e.commit;r("setFavorited",{status:t,value:!1}),n.api.backendInteractor.unfavorite({id:t.id}).then((function(e){return r("setFavoritedConfirm",{status:e,user:n.users.currentUser})}))},fetchPinnedStatuses:function(e,t){var n=e.rootState,r=e.dispatch;n.api.backendInteractor.fetchPinnedStatuses({id:t}).then((function(e){return r("addNewStatuses",{statuses:e,timeline:"user",userId:t,showImmediately:!0,noIdUpdate:!0})}))},pinStatus:function(e,t){var n=e.rootState,r=e.dispatch;return n.api.backendInteractor.pinOwnStatus({id:t}).then((function(e){return r("addNewStatuses",{statuses:[e]})}))},unpinStatus:function(e,t){var n=e.rootState,r=e.dispatch;n.api.backendInteractor.unpinOwnStatus({id:t}).then((function(e){return r("addNewStatuses",{statuses:[e]})}))},muteConversation:function(e,t){var n=e.rootState,r=e.commit;return n.api.backendInteractor.muteConversation({id:t}).then((function(e){return r("setMutedStatus",e)}))},unmuteConversation:function(e,t){var n=e.rootState,r=e.commit;return n.api.backendInteractor.unmuteConversation({id:t}).then((function(e){return r("setMutedStatus",e)}))},retweet:function(e,t){var n=e.rootState,r=e.commit;r("setRetweeted",{status:t,value:!0}),n.api.backendInteractor.retweet({id:t.id}).then((function(e){return r("setRetweetedConfirm",{status:e.retweeted_status,user:n.users.currentUser})}))},unretweet:function(e,t){var n=e.rootState,r=e.commit;r("setRetweeted",{status:t,value:!1}),n.api.backendInteractor.unretweet({id:t.id}).then((function(e){return r("setRetweetedConfirm",{status:e,user:n.users.currentUser})}))},bookmark:function(e,t){var n=e.rootState,r=e.commit;r("setBookmarked",{status:t,value:!0}),n.api.backendInteractor.bookmarkStatus({id:t.id}).then((function(e){r("setBookmarkedConfirm",{status:e})}))},unbookmark:function(e,t){var n=e.rootState,r=e.commit;r("setBookmarked",{status:t,value:!1}),n.api.backendInteractor.unbookmarkStatus({id:t.id}).then((function(e){r("setBookmarkedConfirm",{status:e})}))},queueFlush:function(e,t){e.rootState;(0,e.commit)("queueFlush",{timeline:t.timeline,id:t.id})},queueFlushAll:function(e){e.rootState;(0,e.commit)("queueFlushAll")},markNotificationsAsSeen:function(e){var t=e.rootState;(0,e.commit)("markNotificationsAsSeen"),j.c.markNotificationsAsSeen({id:t.statuses.notifications.maxId,credentials:t.users.currentUser.credentials})},markSingleNotificationAsSeen:function(e,t){var n=e.rootState,r=e.commit,i=t.id;r("markSingleNotificationAsSeen",{id:i}),j.c.markNotificationsAsSeen({single:!0,id:i,credentials:n.users.currentUser.credentials})},dismissNotificationLocal:function(e,t){e.rootState;(0,e.commit)("dismissNotification",{id:t.id})},dismissNotification:function(e,t){var n=e.rootState,r=e.commit,i=t.id;r("dismissNotification",{id:i}),n.api.backendInteractor.dismissNotification({id:i})},updateNotification:function(e,t){e.rootState;(0,e.commit)("updateNotification",{id:t.id,updater:t.updater})},fetchFavsAndRepeats:function(e,t){var n=e.rootState,r=e.commit;Promise.all([n.api.backendInteractor.fetchFavoritedByUsers({id:t}),n.api.backendInteractor.fetchRebloggedByUsers({id:t})]).then((function(e){var i=m()(e,2),o=i[0],s=i[1];r("addFavs",{id:t,favoritedByUsers:o,currentUser:n.users.currentUser}),r("addRepeats",{id:t,rebloggedByUsers:s,currentUser:n.users.currentUser})}))},reactWithEmoji:function(e,t){var n=e.rootState,r=e.dispatch,i=e.commit,o=t.id,s=t.emoji,a=n.users.currentUser;a&&(i("addOwnReaction",{id:o,emoji:s,currentUser:a}),n.api.backendInteractor.reactWithEmoji({id:o,emoji:s}).then((function(e){r("fetchEmojiReactionsBy",o)})))},unreactWithEmoji:function(e,t){var n=e.rootState,r=e.dispatch,i=e.commit,o=t.id,s=t.emoji,a=n.users.currentUser;a&&(i("removeOwnReaction",{id:o,emoji:s,currentUser:a}),n.api.backendInteractor.unreactWithEmoji({id:o,emoji:s}).then((function(e){r("fetchEmojiReactionsBy",o)})))},fetchEmojiReactionsBy:function(e,t){var n=e.rootState,r=e.commit;n.api.backendInteractor.fetchEmojiReactions({id:t}).then((function(e){r("addEmojiReactionsBy",{id:t,emojiReactions:e,currentUser:n.users.currentUser})}))},fetchFavs:function(e,t){var n=e.rootState,r=e.commit;n.api.backendInteractor.fetchFavoritedByUsers({id:t}).then((function(e){return r("addFavs",{id:t,favoritedByUsers:e,currentUser:n.users.currentUser})}))},fetchRepeats:function(e,t){var n=e.rootState,r=e.commit;n.api.backendInteractor.fetchRebloggedByUsers({id:t}).then((function(e){return r("addRepeats",{id:t,rebloggedByUsers:e,currentUser:n.users.currentUser})}))},search:function(e,t){var n=t.q,r=t.resolve,i=t.limit,o=t.offset,s=t.following;return e.rootState.api.backendInteractor.search2({q:n,resolve:r,limit:i,offset:o,following:s}).then((function(t){return e.commit("addNewUsers",t.accounts),e.commit("addNewStatuses",{statuses:t.statuses}),t}))},setVirtualHeight:function(e,t){(0,e.commit)("setVirtualHeight",{statusId:t.statusId,height:t.height})}},mutations:ie},se=n(98),ae=n.n(se),ce=n(97),le=n.n(ce),ue=n(145),de=n.n(ue),pe=n(21),he=n.n(pe),be=n(168),me=n.n(be),fe=n(146),Oe=n.n(fe),je=n(44),ge=function(e){var t=e.store,n=e.credentials,r=e.timeline,i=void 0===r?"friends":r,o=e.older,s=void 0!==o&&o,a=e.showImmediately,c=void 0!==a&&a,l=e.userId,u=void 0!==l&&l,d=e.tag,p=void 0!==d&&d,h=e.until,b=e.since,m={timeline:i,credentials:n},f=t.rootState||t.state,O=t.getters,g=f.statuses.timelines[Oe()(i)],v=O.mergedConfig,y=v.hideMutedPosts,w=v.replyVisibility,k=!!f.users.currentUser;s?m.until=h||g.minId:void 0===b?m.since=g.maxId:null!==b&&(m.since=b),m.userId=u,m.tag=p,m.withMuted=!y,k&&["friends","public","publicAndExternal"].includes(i)&&(m.replyVisibility=w);var _=g.statuses.length;return j.c.fetchTimeline(m).then((function(e){if(e.errors)throw new Error("".concat(e.status," ").concat(e.statusText));var n=e.data,r=e.pagination;return!s&&n.length>=20&&!g.loading&&_>0&&t.dispatch("queueFlush",{timeline:i,id:g.maxId}),function(e){var t=e.store,n=e.statuses,r=e.timeline,i=e.showImmediately,o=e.userId,s=e.pagination,a=Oe()(r);t.dispatch("addNewStatuses",{timeline:a,userId:o,statuses:n,showImmediately:i,pagination:s})}({store:t,statuses:n,timeline:i,showImmediately:c,userId:u,pagination:r}),{statuses:n,pagination:r}})).catch((function(e){t.dispatch("pushGlobalNotice",{level:"error",messageKey:"timeline.error",messageArgs:[e.message],timeout:5e3})}))},ve={fetchAndUpdate:ge,startFetching:function(e){var t=e.timeline,n=void 0===t?"friends":t,r=e.credentials,i=e.store,o=e.userId,s=void 0!==o&&o,a=e.tag,c=void 0!==a&&a,l=(i.rootState||i.state).statuses.timelines[Oe()(n)],u=0===l.visibleStatuses.length;l.userId=s,ge({timeline:n,credentials:r,store:i,showImmediately:u,userId:s,tag:c});return Object(je.a)((function(){return ge({timeline:n,credentials:r,store:i,userId:s,tag:c})}),2e4)}},ye=n(99),we={startFetching:function(e){var t=e.credentials,n=e.store,r=function(){return function(e){var t=e.store,n=e.credentials;return j.c.fetchFollowRequests({credentials:n}).then((function(e){t.commit("setFollowRequests",e),t.commit("addNewUsers",e)}),(function(){})).catch((function(){}))}({credentials:t,store:n})};return r(),Object(je.a)(r,24e4)}};function ke(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function _e(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ke(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ke(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Se=function(e){return _e(_e({startFetchingTimeline:function(t){var n=t.timeline,r=t.store,i=t.userId,o=void 0!==i&&i,s=t.tag;return ve.startFetching({timeline:n,store:r,credentials:e,userId:o,tag:s})},fetchTimeline:function(t){return ve.fetchAndUpdate(_e(_e({},t),{},{credentials:e}))},startFetchingNotifications:function(t){var n=t.store;return ye.a.startFetching({store:n,credentials:e})},fetchNotifications:function(t){return ye.a.fetchAndUpdate(_e(_e({},t),{},{credentials:e}))},startFetchingFollowRequests:function(t){var n=t.store;return we.startFetching({store:n,credentials:e})},startUserSocket:function(t){var n=t.store.rootState.instance.server.replace("http","ws")+Object(j.d)({credentials:e,stream:"user"});return Object(j.a)({url:n,id:"User"})}},Object.entries(j.c).reduce((function(t,n){var r=m()(n,2),i=r[0],o=r[1];return _e(_e({},t),{},h()({},i,(function(t){return o(_e({credentials:e},t))})))}),{})),{},{verifyCredentials:j.c.verifyCredentials})},Ce=function(){return window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth},Pe=function(){return window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight},xe=n(55),De=n.n(xe),Te="".concat(window.location.origin,"/oauth-callback"),Ie=function(e){var t=e.clientId,n=e.clientSecret,r=e.instance,i=e.commit;if(t&&n)return Promise.resolve({clientId:t,clientSecret:n});var o="".concat(r,"/api/v1/apps"),s=new window.FormData;return s.append("client_name","PleromaFE_".concat(window.___pleromafe_commit_hash,"_").concat((new Date).toISOString())),s.append("redirect_uris",Te),s.append("scopes","read write follow push admin"),window.fetch(o,{method:"POST",body:s}).then((function(e){return e.json()})).then((function(e){return{clientId:e.client_id,clientSecret:e.client_secret}})).then((function(e){return i("setClientData",e)||e}))},$e=function(e){var t=e.clientId,n=e.clientSecret,r=e.instance,i="".concat(r,"/oauth/token"),o=new window.FormData;return o.append("client_id",t),o.append("client_secret",n),o.append("grant_type","client_credentials"),o.append("redirect_uri","".concat(window.location.origin,"/oauth-callback")),window.fetch(i,{method:"POST",body:o}).then((function(e){return e.json()}))},ze={login:function(e){var t=e.instance,n={response_type:"code",client_id:e.clientId,redirect_uri:Te,scope:"read write follow push admin"},r=De()(n,(function(e,t,n){var r="".concat(n,"=").concat(encodeURIComponent(t));return e?"".concat(e,"&").concat(r):r}),!1),i="".concat(t,"/oauth/authorize?").concat(r);window.location.href=i},getToken:function(e){var t=e.clientId,n=e.clientSecret,r=e.instance,i=e.code,o="".concat(r,"/oauth/token"),s=new window.FormData;return s.append("client_id",t),s.append("client_secret",n),s.append("grant_type","authorization_code"),s.append("code",i),s.append("redirect_uri","".concat(window.location.origin,"/oauth-callback")),window.fetch(o,{method:"POST",body:s}).then((function(e){return e.json()}))},getTokenWithCredentials:function(e){var t=e.clientId,n=e.clientSecret,r=e.instance,i=e.username,o=e.password,s="".concat(r,"/oauth/token"),a=new window.FormData;return a.append("client_id",t),a.append("client_secret",n),a.append("grant_type","password"),a.append("username",i),a.append("password",o),window.fetch(s,{method:"POST",body:a}).then((function(e){return e.json()}))},getOrCreateApp:Ie,verifyOTPCode:function(e){var t=e.app,n=e.instance,r=e.mfaToken,i=e.code,o="".concat(n,"/oauth/mfa/challenge"),s=new window.FormData;return s.append("client_id",t.client_id),s.append("client_secret",t.client_secret),s.append("mfa_token",r),s.append("code",i),s.append("challenge_type","totp"),window.fetch(o,{method:"POST",body:s}).then((function(e){return e.json()}))},verifyRecoveryCode:function(e){var t=e.app,n=e.instance,r=e.mfaToken,i=e.code,o="".concat(n,"/oauth/mfa/challenge"),s=new window.FormData;return s.append("client_id",t.client_id),s.append("client_secret",t.client_secret),s.append("mfa_token",r),s.append("code",i),s.append("challenge_type","recovery"),window.fetch(o,{method:"POST",body:s}).then((function(e){return e.json()}))},revokeToken:function(e){var t=e.app,n=e.instance,r=e.token,i="".concat(n,"/oauth/revoke"),o=new window.FormData;return o.append("client_id",t.clientId),o.append("client_secret",t.clientSecret),o.append("token",r),window.fetch(i,{method:"POST",body:o}).then((function(e){return e.json()}))}},Me=n(320),Ue=n.n(Me);function Fe(){return"serviceWorker"in navigator&&"PushManager"in window}function Ee(){return Ue.a.register().catch((function(e){return console.error("Unable to get or create a service worker.",e)}))}function Le(e){return window.fetch("/api/v1/push/subscription/",{method:"DELETE",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)}}).then((function(e){if(!e.ok)throw new Error("Bad status code from server.");return e}))}function Re(e,t,n,r){Fe()&&Ee().then((function(n){return function(e,t,n){if(!t)return Promise.reject(new Error("Web Push is disabled in config"));if(!n)return Promise.reject(new Error("VAPID public key is not found"));var r,i,o,s={userVisibleOnly:!0,applicationServerKey:(r=n,i=(r+"=".repeat((4-r.length%4)%4)).replace(/-/g,"+").replace(/_/g,"/"),o=window.atob(i),Uint8Array.from(d()(o).map((function(e){return e.charCodeAt(0)}))))};return e.pushManager.subscribe(s)}(n,e,t)})).then((function(e){return function(e,t,n){return window.fetch("/api/v1/push/subscription/",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(t)},body:JSON.stringify({subscription:e,data:{alerts:{follow:n.follows,favourite:n.likes,mention:n.mentions,reblog:n.repeats,move:n.moves}}})}).then((function(e){if(!e.ok)throw new Error("Bad status code from server.");return e.json()})).then((function(e){if(!e.id)throw new Error("Bad response from server.");return e}))}(e,n,r)})).catch((function(e){return console.warn("Failed to setup Web Push Notifications: ".concat(e.message))}))}function Ae(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ne(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ae(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ae(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Be=function e(t,n){if(C()(t)&&C()(n))return t.length=n.length,de()(t,n,e)},Ve=function(e,t){return e.rootState.api.backendInteractor.blockUser({id:t}).then((function(n){e.commit("updateUserRelationship",[n]),e.commit("addBlockId",t),e.commit("removeStatus",{timeline:"friends",userId:t}),e.commit("removeStatus",{timeline:"public",userId:t}),e.commit("removeStatus",{timeline:"publicAndExternal",userId:t})}))},He=function(e,t){return e.rootState.api.backendInteractor.unblockUser({id:t}).then((function(t){return e.commit("updateUserRelationship",[t])}))},qe=function(e,t){var n=e.state.relationships[t]||{id:t};return n.muting=!0,e.commit("updateUserRelationship",[n]),e.commit("addMuteId",t),e.rootState.api.backendInteractor.muteUser({id:t}).then((function(n){e.commit("updateUserRelationship",[n]),e.commit("addMuteId",t)}))},Je=function(e,t){var n=e.state.relationships[t]||{id:t};return n.muting=!1,e.commit("updateUserRelationship",[n]),e.rootState.api.backendInteractor.unmuteUser({id:t}).then((function(t){return e.commit("updateUserRelationship",[t])}))},We=function(e,t){return e.rootState.api.backendInteractor.muteDomain({domain:t}).then((function(){return e.commit("addDomainMute",t)}))},Ye=function(e,t){return e.rootState.api.backendInteractor.unmuteDomain({domain:t}).then((function(){return e.commit("removeDomainMute",t)}))},Ge={state:{loggingIn:!1,lastLoginName:!1,currentUser:!1,users:[],usersObject:{},signUpPending:!1,signUpErrors:[],relationships:{}},mutations:{tagUser:function(e,t){var n=t.user.id,r=t.tag,i=e.usersObject[n],o=(i.tags||[]).concat([r]);i.tags=o},untagUser:function(e,t){var n=t.user.id,r=t.tag,i=e.usersObject[n],o=(i.tags||[]).filter((function(e){return e!==r}));i.tags=o},updateRight:function(e,t){var n=t.user.id,r=t.right,i=t.value,o=e.usersObject[n],s=o.rights;s[r]=i,o.rights=s},updateActivationStatus:function(e,t){var n=t.user.id,r=t.deactivated;e.usersObject[n].deactivated=r},setCurrentUser:function(e,t){e.lastLoginName=t.screen_name,e.currentUser=de()(e.currentUser||{},t,Be)},clearCurrentUser:function(e){e.currentUser=!1,e.lastLoginName=!1},beginLogin:function(e){e.loggingIn=!0},endLogin:function(e){e.loggingIn=!1},saveFriendIds:function(e,t){var n=t.id,r=t.friendIds,i=e.usersObject[n];i.friendIds=ae()(le()(i.friendIds||[],r))},saveFollowerIds:function(e,t){var n=t.id,r=t.followerIds,i=e.usersObject[n];i.followerIds=ae()(le()(i.followerIds||[],r))},clearFriends:function(e,t){var n=e.usersObject[t];n&&(n.friendIds=[])},clearFollowers:function(e,t){var n=e.usersObject[t];n&&(n.followerIds=[])},addNewUsers:function(e,t){B()(t,(function(t){t.relationship&&(e.relationships[t.relationship.id]=t.relationship),function(e,t,n){if(!n)return!1;var r=t[n.id];r?de()(r,n,Be):(e.push(n),t[n.id]=n,n.screen_name&&!n.screen_name.includes("@")&&(t[n.screen_name.toLowerCase()]=n))}(e.users,e.usersObject,t)}))},updateUserRelationship:function(e,t){t.forEach((function(t){e.relationships[t.id]=t}))},saveBlockIds:function(e,t){e.currentUser.blockIds=t},addBlockId:function(e,t){-1===e.currentUser.blockIds.indexOf(t)&&e.currentUser.blockIds.push(t)},saveMuteIds:function(e,t){e.currentUser.muteIds=t},addMuteId:function(e,t){-1===e.currentUser.muteIds.indexOf(t)&&e.currentUser.muteIds.push(t)},updateMascot:function(e,t){e.currentUser.mascot=t},saveDomainMutes:function(e,t){e.currentUser.domainMutes=t},addDomainMute:function(e,t){-1===e.currentUser.domainMutes.indexOf(t)&&e.currentUser.domainMutes.push(t)},removeDomainMute:function(e,t){var n=e.currentUser.domainMutes.indexOf(t);-1!==n&&e.currentUser.domainMutes.splice(n,1)},setPinnedToUser:function(e,t){var n=e.usersObject[t.user.id];n.pinnedStatusIds=n.pinnedStatusIds||[];var r=n.pinnedStatusIds.indexOf(t.id);t.pinned&&-1===r?n.pinnedStatusIds.push(t.id):t.pinned||-1===r||n.pinnedStatusIds.splice(r,1)},setUserForStatus:function(e,t){t.user=e.usersObject[t.user.id]},setUserForNotification:function(e,t){"follow"!==t.type&&(t.action.user=e.usersObject[t.action.user.id]),t.from_profile=e.usersObject[t.from_profile.id]},setColor:function(e,t){var n=t.user.id,r=t.highlighted;e.usersObject[n].highlight=r},signUpPending:function(e){e.signUpPending=!0,e.signUpErrors=[]},signUpSuccess:function(e){e.signUpPending=!1},signUpFailure:function(e,t){e.signUpPending=!1,e.signUpErrors=t}},getters:{findUser:function(e){return function(t){var n=e.usersObject[t];return n||"string"!=typeof t?n:e.usersObject[t.toLowerCase()]}},findUserByUrl:function(e){return function(t){return e.users.find((function(e){return e.statusnet_profile_url&&e.statusnet_profile_url.toLowerCase()===t.toLowerCase()}))}},relationship:function(e){return function(t){return t&&e.relationships[t]||{id:t,loading:!0}}}},actions:{fetchUserIfMissing:function(e,t){e.getters.findUser(t)||e.dispatch("fetchUser",t)},fetchUser:function(e,t){return e.rootState.api.backendInteractor.fetchUser({id:t}).then((function(t){return e.commit("addNewUsers",[t]),t}))},fetchUserRelationship:function(e,t){e.state.currentUser&&e.rootState.api.backendInteractor.fetchUserRelationship({id:t}).then((function(t){return e.commit("updateUserRelationship",t)}))},fetchBlocks:function(e){return e.rootState.api.backendInteractor.fetchBlocks().then((function(t){return e.commit("saveBlockIds",he()(t,"id")),e.commit("addNewUsers",t),t}))},blockUser:function(e,t){return Ve(e,t)},unblockUser:function(e,t){return He(e,t)},blockUsers:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return Ve(e,t)})))},unblockUsers:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return He(e,t)})))},fetchMutes:function(e){return e.rootState.api.backendInteractor.fetchMutes().then((function(t){return e.commit("saveMuteIds",he()(t,"id")),e.commit("addNewUsers",t),t}))},muteUser:function(e,t){return qe(e,t)},unmuteUser:function(e,t){return Je(e,t)},hideReblogs:function(e,t){return function(e,t){return e.rootState.api.backendInteractor.followUser({id:t,reblogs:!1}).then((function(t){e.commit("updateUserRelationship",[t])}))}(e,t)},showReblogs:function(e,t){return function(e,t){return e.rootState.api.backendInteractor.followUser({id:t,reblogs:!0}).then((function(t){return e.commit("updateUserRelationship",[t])}))}(e,t)},muteUsers:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return qe(e,t)})))},unmuteUsers:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return Je(e,t)})))},fetchMascot:function(e){return function(e){return e.rootState.api.backendInteractor.fetchMascot().then((function(t){var n=t.url;return e.commit("updateMascot",n)}))}(e)},fetchDomainMutes:function(e){return e.rootState.api.backendInteractor.fetchDomainMutes().then((function(t){return e.commit("saveDomainMutes",t),t}))},muteDomain:function(e,t){return We(e,t)},unmuteDomain:function(e,t){return Ye(e,t)},muteDomains:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return We(e,t)})))},unmuteDomains:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return Ye(e,t)})))},fetchFriends:function(e,t){var n=e.rootState,r=e.commit,i=n.users.usersObject[t],o=x()(i.friendIds);return n.api.backendInteractor.fetchFriends({id:t,maxId:o}).then((function(e){return r("addNewUsers",e),r("saveFriendIds",{id:t,friendIds:he()(e,"id")}),e}))},fetchFollowers:function(e,t){var n=e.rootState,r=e.commit,i=n.users.usersObject[t],o=x()(i.followerIds);return n.api.backendInteractor.fetchFollowers({id:t,maxId:o}).then((function(e){return r("addNewUsers",e),r("saveFollowerIds",{id:t,followerIds:he()(e,"id")}),e}))},clearFriends:function(e,t){(0,e.commit)("clearFriends",t)},clearFollowers:function(e,t){(0,e.commit)("clearFollowers",t)},subscribeUser:function(e,t){var n=e.rootState,r=e.commit;return n.api.backendInteractor.subscribeUser({id:t}).then((function(e){return r("updateUserRelationship",[e])}))},unsubscribeUser:function(e,t){var n=e.rootState,r=e.commit;return n.api.backendInteractor.unsubscribeUser({id:t}).then((function(e){return r("updateUserRelationship",[e])}))},toggleActivationStatus:function(e,t){var n=e.rootState,r=e.commit,i=t.user;(i.deactivated?n.api.backendInteractor.activateUser:n.api.backendInteractor.deactivateUser)({user:i}).then((function(e){var t=!e.is_active;r("updateActivationStatus",{user:e,deactivated:t})}))},registerPushNotifications:function(e){var t=e.state.currentUser.credentials,n=e.rootState.instance.vapidPublicKey;Re(e.rootState.config.webPushNotifications,n,t,e.rootState.config.notificationVisibility)},unregisterPushNotifications:function(e){!function(e){Fe()&&Promise.all([Le(e),Ee().then((function(e){return function(e){return e.pushManager.getSubscription().then((function(e){if(null!==e)return e.unsubscribe()}))}(e).then((function(t){return[e,t]}))})).then((function(e){var t=m()(e,2),n=t[0];return t[1]||console.warn("Push subscription cancellation wasn't successful, killing SW anyway..."),n.unregister().then((function(e){e||console.warn("Failed to kill SW")}))}))]).catch((function(e){return console.warn("Failed to disable Web Push Notifications: ".concat(e.message))}))}(e.state.currentUser.credentials)},addNewUsers:function(e,t){(0,e.commit)("addNewUsers",t)},addNewStatuses:function(e,t){var n=t.statuses,r=he()(n,"user"),i=me()(he()(n,"retweeted_status.user"));e.commit("addNewUsers",r),e.commit("addNewUsers",i),B()(n,(function(t){e.commit("setUserForStatus",t),e.commit("setPinnedToUser",t)})),B()(me()(he()(n,"retweeted_status")),(function(t){e.commit("setUserForStatus",t),e.commit("setPinnedToUser",t)}))},addNewNotifications:function(e,t){var n=t.notifications,r=he()(n,"from_profile"),i=he()(n,"target").filter((function(e){return e})),o=n.map((function(e){return e.id}));e.commit("addNewUsers",r),e.commit("addNewUsers",i);var s=e.rootState.statuses.notifications.idStore,a=Object.entries(s).filter((function(e){var t=m()(e,2),n=t[0];t[1];return o.includes(n)})).map((function(e){var t=m()(e,2);t[0];return t[1]}));B()(a,(function(t){e.commit("setUserForNotification",t)}))},searchUsers:function(e,t){var n=e.rootState,r=e.commit,i=t.query;return n.api.backendInteractor.searchUsers({query:i}).then((function(e){return r("addNewUsers",e),e}))},signUp:function(e,t){return i()(s.a.mark((function n(){var r,i,o;return s.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e.commit("signUpPending"),r=e.rootState,n.prev=2,n.next=5,r.api.backendInteractor.register({params:Ne({},t)});case 5:i=n.sent,e.commit("signUpSuccess"),e.commit("setToken",i.access_token),e.dispatch("loginUser",i.access_token),n.next=16;break;case 11:throw n.prev=11,n.t0=n.catch(2),o=n.t0.message,e.commit("signUpFailure",o),n.t0;case 16:case"end":return n.stop()}}),n,null,[[2,11]])})))()},getCaptcha:function(e){return i()(s.a.mark((function t(){return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",e.rootState.api.backendInteractor.getCaptcha());case 1:case"end":return t.stop()}}),t)})))()},logout:function(e){var t=e.rootState,n=t.oauth,r=t.instance,i=Ne(Ne({},n),{},{commit:e.commit,instance:r.server});return ze.getOrCreateApp(i).then((function(e){var t={app:e,instance:i.instance,token:n.userToken};return ze.revokeToken(t)})).then((function(){e.commit("clearCurrentUser"),e.dispatch("disconnectFromSocket"),e.commit("clearToken"),e.dispatch("stopFetchingTimeline","friends"),e.commit("setBackendInteractor",Se(e.getters.getToken())),e.dispatch("stopFetchingNotifications"),e.dispatch("stopFetchingFollowRequests"),e.commit("clearNotifications"),e.commit("resetStatuses"),e.dispatch("resetChats"),e.dispatch("setLastTimeline","public-timeline"),e.dispatch("setLayoutWidth",Ce()),e.dispatch("setLayoutHeight",Pe())}))},loginUser:function(e,t){return new Promise((function(n,r){var i=e.commit;i("beginLogin"),e.rootState.api.backendInteractor.verifyCredentials(t).then((function(o){if(o.error){var s=o.error;i("endLogin"),401===s.status?r(new Error("Wrong username or password")):r(new Error("An error occurred, please try again"))}else{var a=o;a.credentials=t,a.blockIds=[],a.muteIds=[],a.domainMutes=[],i("setCurrentUser",a),i("addNewUsers",[a]),e.dispatch("fetchEmoji"),(c=window.Notification,c?"default"===c.permission?c.requestPermission():Promise.resolve(c.permission):Promise.resolve(null)).then((function(e){return i("setNotificationPermission",e)})),i("setBackendInteractor",Se(t)),a.token&&(e.dispatch("setWsToken",a.token),e.dispatch("initializeSocket"));e.getters.mergedConfig.useStreamingApi?(e.dispatch("fetchTimeline","friends",{since:null}),e.dispatch("fetchNotifications",{since:null}),e.dispatch("enableMastoSockets",!0).catch((function(e){console.error("Failed initializing MastoAPI Streaming socket",e)})).then((function(){e.dispatch("fetchChats",{latest:!0}),setTimeout((function(){return e.dispatch("setNotificationsSilence",!1)}),1e4)}))):(e.dispatch("startFetchingTimeline",{timeline:"friends"}),e.dispatch("startFetchingNotifications"),e.dispatch("startFetchingChats")),e.dispatch("fetchMutes"),e.dispatch("setLayoutWidth",Ce()),e.dispatch("setLayoutHeight",Pe()),e.rootState.api.backendInteractor.fetchFriends({id:a.id}).then((function(e){return i("addNewUsers",e)}))}var c;i("endLogin"),n()})).catch((function(e){console.log(e),i("endLogin"),r(new Error("Failed to connect to server, try again"))}))}))}}},Ke=n(169),Xe=n.n(Ke),Ze=n(127),Qe=function(e,t){if(t.lastMessage&&(e.rootState.chats.currentChatId!==t.id||document.hidden)&&e.rootState.users.currentUser.id!==t.lastMessage.account_id){var n={tag:t.lastMessage.id,title:t.account.name,icon:t.account.profile_image_url,body:t.lastMessage.content};t.lastMessage.attachment&&"image"===t.lastMessage.attachment.type&&(n.image=t.lastMessage.attachment.preview_url),Object(Ze.a)(e.rootState,n)}},et=n(321);function tt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function nt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?tt(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):tt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var rt={state:{retryMultiplier:1,backendInteractor:Se(),fetchers:{},socket:null,mastoUserSocket:null,mastoUserSocketStatus:null,followRequests:[]},mutations:{setBackendInteractor:function(e,t){e.backendInteractor=t},addFetcher:function(e,t){var n=t.fetcherName,r=t.fetcher;e.fetchers[n]=r},removeFetcher:function(e,t){var n=t.fetcherName;t.fetcher;e.fetchers[n].stop(),delete e.fetchers[n]},setWsToken:function(e,t){e.wsToken=t},setSocket:function(e,t){e.socket=t},setFollowRequests:function(e,t){e.followRequests=t},setMastoUserSocketStatus:function(e,t){e.mastoUserSocketStatus=t},incrementRetryMultiplier:function(e){e.retryMultiplier=Math.max(++e.retryMultiplier,3)},resetRetryMultiplier:function(e){e.retryMultiplier=1}},actions:{enableMastoSockets:function(e,t){var n=e.state,r=e.dispatch,i=e.commit;if(!n.mastoUserSocket||[WebSocket.CLOSED,WebSocket.CLOSING].includes(n.mastoUserSocket.getState()))return i("setMastoUserSocketStatus",t?j.b.STARTING_INITIAL:j.b.STARTING),r("startMastoUserSocket")},disableMastoSockets:function(e){var t=e.state,n=e.dispatch,r=e.commit;if(t.mastoUserSocket)return r("setMastoUserSocketStatus",j.b.DISABLED),n("stopMastoUserSocket")},startMastoUserSocket:function(e){return new Promise((function(t,n){try{var r=e.state,i=e.commit,o=e.dispatch,s=e.rootState.statuses.timelines.friends;r.mastoUserSocket=r.backendInteractor.startUserSocket({store:e}),r.mastoUserSocket.addEventListener("message",(function(t){var n=t.detail;n&&("notification"===n.event?o("addNewNotifications",{notifications:[n.notification],older:!1}):"update"===n.event?o("addNewStatuses",{statuses:[n.status],userId:!1,showImmediately:0===s.visibleStatuses.length,timeline:"friends"}):"delete"===n.event?o("deleteStatusById",n.id):"pleroma:chat_update"===n.event&&setTimeout((function(){o("addChatMessages",{chatId:n.chatUpdate.id,messages:[n.chatUpdate.lastMessage]}),o("updateChat",{chat:n.chatUpdate}),Qe(e,n.chatUpdate)}),100))})),r.mastoUserSocket.addEventListener("open",(function(){r.mastoUserSocketStatus!==j.b.STARTING_INITIAL&&o("pushGlobalNotice",{level:"success",messageKey:"timeline.socket_reconnected",timeout:5e3}),new Set([j.b.ERROR,j.b.DISABLED]).has(r.mastoUserSocketStatus)&&(o("stopFetchingTimeline",{timeline:"friends"}),o("stopFetchingNotifications"),o("stopFetchingChats")),i("resetRetryMultiplier"),i("setMastoUserSocketStatus",j.b.JOINED)})),r.mastoUserSocket.addEventListener("error",(function(e){var t=e.detail;console.error("Error in MastoAPI websocket:",t),o("clearOpenedChats")})),r.mastoUserSocket.addEventListener("close",(function(e){var t=e.detail,n=new Set([1e3,1001]),s=t.code;n.has(s)?(console.debug("Not restarting socket becasue of closure code ".concat(s," is in ignore list")),i("setMastoUserSocketStatus",j.b.CLOSED)):(console.warn("MastoAPI websocket disconnected, restarting. CloseEvent code: ".concat(s)),setTimeout((function(){o("startMastoUserSocket")}),1e3*r.retryMultiplier),i("incrementRetryMultiplier"),r.mastoUserSocketStatus!==j.b.ERROR&&(o("startFetchingTimeline",{timeline:"friends"}),o("startFetchingNotifications"),o("startFetchingChats"),o("pushGlobalNotice",{level:"error",messageKey:"timeline.socket_broke",messageArgs:[s],timeout:5e3})),i("setMastoUserSocketStatus",j.b.ERROR)),o("clearOpenedChats")})),t()}catch(e){n(e)}}))},stopMastoUserSocket:function(e){var t=e.state,n=e.dispatch;n("startFetchingTimeline",{timeline:"friends"}),n("startFetchingNotifications"),n("startFetchingChats"),t.mastoUserSocket.close()},startFetchingTimeline:function(e,t){var n=t.timeline,r=void 0===n?"friends":n,i=t.tag,o=void 0!==i&&i,s=t.userId,a=void 0!==s&&s;if(!e.state.fetchers[r]){var c=e.state.backendInteractor.startFetchingTimeline({timeline:r,store:e,userId:a,tag:o});e.commit("addFetcher",{fetcherName:r,fetcher:c})}},stopFetchingTimeline:function(e,t){var n=e.state.fetchers[t];n&&e.commit("removeFetcher",{fetcherName:t,fetcher:n})},fetchTimeline:function(e,t,n){var r=Xe()({},n);e.state.backendInteractor.fetchTimeline(nt({store:e,timeline:t},r))},startFetchingNotifications:function(e){if(!e.state.fetchers.notifications){var t=e.state.backendInteractor.startFetchingNotifications({store:e});e.commit("addFetcher",{fetcherName:"notifications",fetcher:t})}},stopFetchingNotifications:function(e){var t=e.state.fetchers.notifications;t&&e.commit("removeFetcher",{fetcherName:"notifications",fetcher:t})},fetchNotifications:function(e,t){var n=Xe()({},t);e.state.backendInteractor.fetchNotifications(nt({store:e},n))},startFetchingFollowRequests:function(e){if(!e.state.fetchers.followRequests){var t=e.state.backendInteractor.startFetchingFollowRequests({store:e});e.commit("addFetcher",{fetcherName:"followRequests",fetcher:t})}},stopFetchingFollowRequests:function(e){var t=e.state.fetchers.followRequests;t&&e.commit("removeFetcher",{fetcherName:"followRequests",fetcher:t})},removeFollowRequest:function(e,t){var n=e.state.followRequests.filter((function(e){return e!==t}));e.commit("setFollowRequests",n)},setWsToken:function(e,t){e.commit("setWsToken",t)},initializeSocket:function(e){var t=e.dispatch,n=e.commit,r=e.state,i=e.rootState,o=r.wsToken;if(i.instance.shoutAvailable&&void 0!==o&&null===r.socket){var s=new et.a("/socket",{params:{token:o}});s.connect(),n("setSocket",s),t("initializeShout",s)}},disconnectFromSocket:function(e){var t=e.commit,n=e.state;n.socket&&n.socket.disconnect(),t("setSocket",null)}}},it=n(220),ot={state:{messages:[],channel:{state:""},joined:!1},mutations:{setChannel:function(e,t){e.channel=t},addMessage:function(e,t){e.messages.push(t),e.messages=e.messages.slice(-19,20)},setMessages:function(e,t){e.messages=t.slice(-19,20)},setJoined:function(e,t){e.joined=t}},actions:{initializeShout:function(e,t){var n=t.channel("chat:public");n.joinPush.receive("ok",(function(){e.commit("setJoined",!0)})),n.onClose((function(){e.commit("setJoined",!1)})),n.onError((function(){e.commit("setJoined",!1)})),n.on("new_msg",(function(t){e.commit("addMessage",t)})),n.on("messages",(function(t){var n=t.messages;e.commit("setMessages",n)})),n.join(),e.commit("setChannel",n)}}},st={state:{clientId:!1,clientSecret:!1,appToken:!1,userToken:!1},mutations:{setClientData:function(e,t){var n=t.clientId,r=t.clientSecret;e.clientId=n,e.clientSecret=r},setAppToken:function(e,t){e.appToken=t},setToken:function(e,t){e.userToken=t},clearToken:function(e){e.userToken=!1,delete e.token}},getters:{getToken:function(e){return function(){return e.userToken||e.token||e.appToken}},getUserToken:function(e){return function(){return e.userToken||e.token}}}},at=function(e){e.strategy=e.initStrategy,e.settings={}},ct={namespaced:!0,state:{settings:{},strategy:"password",initStrategy:"password"},getters:{settings:function(e,t){return e.settings},requiredPassword:function(e,t,n){return"password"===e.strategy},requiredToken:function(e,t,n){return"token"===e.strategy},requiredTOTP:function(e,t,n){return"totp"===e.strategy},requiredRecovery:function(e,t,n){return"recovery"===e.strategy}},mutations:{setInitialStrategy:function(e,t){t&&(e.initStrategy=t,e.strategy=t)},requirePassword:function(e){e.strategy="password"},requireToken:function(e){e.strategy="token"},requireMFA:function(e,t){var n=t.settings;e.settings=n,e.strategy="totp"},requireRecovery:function(e){e.strategy="recovery"},requireTOTP:function(e){e.strategy="totp"},abortMFA:function(e){at(e)}},actions:{login:function(e,t){return i()(s.a.mark((function n(){var r,i,o,a;return s.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return r=e.state,i=e.dispatch,o=e.commit,a=t.access_token,o("setToken",a,{root:!0}),n.next=5,i("loginUser",a,{root:!0});case 5:at(r);case 6:case"end":return n.stop()}}),n)})))()}}},lt=n(33),ut=new Set(["image","video","audio","flash"]),dt={state:{media:[],currentIndex:0,activated:!1},mutations:{setMedia:function(e,t){e.media=t},setCurrentMedia:function(e,t){e.activated=!0,e.currentIndex=t},close:function(e){e.activated=!1}},actions:{setMedia:function(e,t){(0,e.commit)("setMedia",t.filter((function(e){var t=lt.a.fileType(e.mimetype);return ut.has(t)})))},setCurrentMedia:function(e,t){(0,e.commit)("setCurrentMedia",e.state.media.indexOf(t)||0)},closeMediaViewer:function(e){(0,e.commit)("close")}}},pt={state:{tokens:[]},actions:{fetchTokens:function(e){var t=e.rootState,n=e.commit;t.api.backendInteractor.fetchOAuthTokens().then((function(e){n("swapTokens",e)}))},revokeToken:function(e,t){var n=e.rootState,r=e.commit,i=e.state;n.api.backendInteractor.revokeOAuthToken({id:t}).then((function(e){201===e.status&&r("swapTokens",i.tokens.filter((function(e){return e.id!==t})))}))}},mutations:{swapTokens:function(e,t){e.tokens=t}}},ht=n(49),bt=n.n(ht),mt={state:{userId:null,statuses:[],preTickedIds:[],modalActivated:!1},mutations:{openUserReportingModal:function(e,t){var n=t.userId,r=t.statuses,i=t.preTickedIds;e.userId=n,e.statuses=r,e.preTickedIds=i,e.modalActivated=!0},closeUserReportingModal:function(e){e.modalActivated=!1}},actions:{openUserReportingModal:function(e,t){var n=e.rootState,r=e.commit,i=t.userId,o=t.statusIds,s=void 0===o?[]:o,a=s.map((function(e){return n.statuses.allStatusesObject[e]})),c=s,l=a.concat(bt()(n.statuses.allStatuses,(function(e){return e.user.id===i&&!c.includes(e.id)})));r("openUserReportingModal",{userId:i,statuses:l,preTickedIds:c})},closeUserReportingModal:function(e){(0,e.commit)("closeUserReportingModal")}}},ft={state:{trackedPolls:{},pollsObject:{}},mutations:{mergeOrAddPoll:function(e,t){var n=e.pollsObject[t.id];t.expired=Date.now()>Date.parse(t.expires_at),e.pollsObject[t.id]=n?$()(n,t):t},trackPoll:function(e,t){var n=e.trackedPolls[t];e.trackedPolls[t]=n?n+1:1},untrackPoll:function(e,t){var n=e.trackedPolls[t];e.trackedPolls[t]=n?n-1:0}},actions:{mergeOrAddPoll:function(e,t){(0,e.commit)("mergeOrAddPoll",t)},updateTrackedPoll:function(e,t){var n=e.rootState,r=e.dispatch,i=e.commit;n.api.backendInteractor.fetchPoll({pollId:t}).then((function(e){setTimeout((function(){n.polls.trackedPolls[t]&&r("updateTrackedPoll",t)}),3e4),i("mergeOrAddPoll",e)}))},trackPoll:function(e,t){var n=e.rootState,r=e.commit,i=e.dispatch;n.polls.trackedPolls[t]||setTimeout((function(){return i("updateTrackedPoll",t)}),3e4),r("trackPoll",t)},untrackPoll:function(e,t){(0,e.commit)("untrackPoll",t)},votePoll:function(e,t){var n=e.rootState,r=e.commit,i=(t.id,t.pollId),o=t.choices;return n.api.backendInteractor.vote({pollId:i,choices:o}).then((function(e){return r("mergeOrAddPoll",e),e}))}}},Ot={state:{params:null,modalActivated:!1},mutations:{openPostStatusModal:function(e,t){e.params=t,e.modalActivated=!0},closePostStatusModal:function(e){e.modalActivated=!1}},actions:{openPostStatusModal:function(e,t){(0,e.commit)("openPostStatusModal",t)},closePostStatusModal:function(e){(0,e.commit)("closePostStatusModal")}}},jt=n(134),gt=n.n(jt),vt=n(100),yt=n.n(vt),wt=n(0),kt=n(28),_t=n.n(kt),St=n(322),Ct=n.n(St),Pt=n(125),xt=n.n(Pt);function Dt(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return Tt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Tt(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function Tt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var It=function(e,t){if(t.idempotency_key)return e.idempotencyKeyIndex[t.idempotency_key]},$t={add:function(e,t){var n=t.messages,r=t.updateMaxId,i=void 0===r||r;if(e)for(var o=function(t){var r=n[t];if(r.chat_id!==e.chatId)return{v:void 0};if(r.fakeId){var o=e.idIndex[r.fakeId];if(o)return e.idIndex[r.id]&&(delete e.idIndex[r.id],e.messages=e.messages.filter((function(e){return e.id!==r.id}))),Object.assign(o,r,{error:!1}),delete o.fakeId,e.idIndex[o.id]=o,delete e.idIndex[r.fakeId],{v:void 0}}(!e.minId||!r.pending&&r.id<e.minId)&&(e.minId=r.id),(!e.maxId||r.id>e.maxId)&&i&&(e.maxId=r.id),e.idIndex[r.id]||It(e,r)||(e.lastSeenMessageId<r.id&&e.newMessageCount++,e.idIndex[r.id]=r,e.messages.push(e.idIndex[r.id]),e.idempotencyKeyIndex[r.idempotency_key]=!0)},s=0;s<n.length;s++){var a=o(s);if("object"===_t()(a))return a.v}},empty:function(e){return{idIndex:{},idempotencyKeyIndex:{},messages:[],newMessageCount:0,lastSeenMessageId:"0",chatId:e,minId:void 0,maxId:void 0}},getView:function(e){if(!e)return[];var t,n=[],r=yt()(e.messages,["pending","id"],["asc","asc"]),i=r[0],o=r[r.length-1];if(i){var s=new Date(i.created_at);s.setHours(0,0,0,0),n.push({type:"date",date:s,id:s.getTime().toString()})}for(var a=!1,c=0;c<r.length;c++){var l=r[c],u=r[c+1],d=new Date(l.created_at);d.setHours(0,0,0,0),o&&o.date<d&&(n.push({type:"date",date:d,id:d.getTime().toString()}),o.isTail=!0,t=void 0,a=!0);var p={type:"message",data:l,date:d,id:l.id,messageChainId:t};(u&&u.account_id)!==l.account_id&&(p.isTail=!0,t=void 0),((o&&o.data&&o.data.account_id)!==l.account_id||a)&&(t=Ct()(),p.isHead=!0,p.messageChainId=t),n.push(p),o=p,a=!1}return n},deleteMessage:function(e,t){if(e){if(e.messages=e.messages.filter((function(e){return e.id!==t})),delete e.idIndex[t],e.maxId===t){var n=F()(e.messages,"id");e.maxId=n.id}if(e.minId===t){var r=M()(e.messages,"id");e.minId=r.id}}},cullOlderMessages:function(e){var t=e.messages.length,n=t-50;if(!(t<=50)){e.messages=xt()(e.messages,["id"]),e.minId=e.messages[n].id;var r,i=Dt(e.messages);try{for(i.s();!(r=i.n()).done;){var o=r.value;o.id<e.minId&&(delete e.idIndex[o.id],delete e.idempotencyKeyIndex[o.idempotency_key])}}catch(e){i.e(e)}finally{i.f()}e.messages=e.messages.slice(n,t)}},resetNewMessageCount:function(e){e&&(e.newMessageCount=0,e.lastSeenMessageId=e.maxId)},clear:function(e){var t,n=[],r=Dt(e.messages);try{for(r.s();!(t=r.n()).done;){var i=t.value;i.error?n.push(i.id):(delete e.idIndex[i.id],delete e.idempotencyKeyIndex[i.idempotency_key])}}catch(e){r.e(e)}finally{r.f()}e.messages=e.messages.filter((function(e){return n.includes(e.id)})),e.newMessageCount=0,e.lastSeenMessageId="0",e.minId=void 0,e.maxId=void 0},handleMessageError:function(e,t,n){if(e){var r=e.idIndex[t];if(r&&(r.error=!0,r.pending=!1,!n)){var i=yt()(e.messages,["pending","id"],["asc","desc"])[0];if(i){var o=r.id;r.id="".concat(i.id,"-").concat((new Date).getTime()),e.idIndex[r.id]=r,delete e.idIndex[o]}}}}},zt=n(14);function Mt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ut(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Mt(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Mt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Ft={chatList:{data:[],idStore:{}},chatListFetcher:null,openedChats:Object(wt.F)({}),openedChatMessageServices:Object(wt.F)({}),fetcher:void 0,currentChatId:null,lastReadMessageId:null},Et=function(e,t){return L()(e.chatList.data,{id:t})},Lt={state:Ut({},Ft),getters:{currentChat:function(e){return e.openedChats[e.currentChatId]},currentChatMessageService:function(e){return e.openedChatMessageServices[e.currentChatId]},findOpenedChatByRecipientId:function(e){return function(t){return L()(e.openedChats,(function(e){return e.account.id===t}))}},sortedChatList:function(e){return yt()(e.chatList.data,["updated_at"],["desc"])},unreadChatCount:function(e){return gt()(e.chatList.data,"unread")}},actions:{startFetchingChats:function(e){var t=e.dispatch,n=e.commit,r=function(){return t("fetchChats",{latest:!0})};r(),n("setChatListFetcher",{fetcher:function(){return Object(je.a)(r,6e4)}})},stopFetchingChats:function(e){(0,e.commit)("setChatListFetcher",{fetcher:void 0})},fetchChats:function(e){var t=e.dispatch,n=e.rootState;e.commit;return n.api.backendInteractor.chats().then((function(e){var n=e.chats;return t("addNewChats",{chats:n}),n}))},addNewChats:function(e,t){var n=t.chats;(0,e.commit)("addNewChats",{dispatch:e.dispatch,chats:n,rootGetters:e.rootGetters,newChatMessageSideEffects:function(t){Qe(e,t)}})},updateChat:function(e,t){(0,e.commit)("updateChat",{chat:t.chat})},startFetchingCurrentChat:function(e,t){e.commit;(0,e.dispatch)("setCurrentChatFetcher",{fetcher:t.fetcher})},setCurrentChatFetcher:function(e,t){e.rootState;(0,e.commit)("setCurrentChatFetcher",{fetcher:t.fetcher})},addOpenedChat:function(e,t){e.rootState;var n=e.commit,r=e.dispatch,i=t.chat;n("addOpenedChat",{dispatch:r,chat:Object(zt.b)(i)}),r("addNewUsers",[i.account])},addChatMessages:function(e,t){var n=e.commit;n("addChatMessages",Ut({commit:n},t))},resetChatNewMessageCount:function(e,t){(0,e.commit)("resetChatNewMessageCount",t)},clearCurrentChat:function(e,t){e.rootState;var n=e.commit;e.dispatch;n("setCurrentChatId",{chatId:void 0}),n("setCurrentChatFetcher",{fetcher:void 0})},readChat:function(e,t){var n=e.rootState,r=e.commit,i=e.dispatch,o=t.id,s=t.lastReadId,a=n.chats.lastReadMessageId!==s;i("resetChatNewMessageCount"),r("readChat",{id:o,lastReadId:s}),a&&n.api.backendInteractor.readChat({id:o,lastReadId:s})},deleteChatMessage:function(e,t){var n=e.rootState,r=e.commit;n.api.backendInteractor.deleteChatMessage(t),r("deleteChatMessage",Ut({commit:r},t))},resetChats:function(e){var t=e.commit;(0,e.dispatch)("clearCurrentChat"),t("resetChats",{commit:t})},clearOpenedChats:function(e){e.rootState;var t=e.commit;e.dispatch,e.rootGetters;t("clearOpenedChats",{commit:t})},handleMessageError:function(e,t){var n=e.commit;n("handleMessageError",Ut({commit:n},t))},cullOlderMessages:function(e,t){(0,e.commit)("cullOlderMessages",t)}},mutations:{setChatListFetcher:function(e,t){t.commit;var n=t.fetcher,r=e.chatListFetcher;r&&r.stop(),e.chatListFetcher=n&&n()},setCurrentChatFetcher:function(e,t){var n=t.fetcher,r=e.fetcher;r&&r.stop(),e.fetcher=n&&n()},addOpenedChat:function(e,t){t._dispatch;var n=t.chat;e.currentChatId=n.id,e.openedChats[n.id]=n,e.openedChatMessageServices[n.id]||(e.openedChatMessageServices[n.id]=$t.empty(n.id))},setCurrentChatId:function(e,t){var n=t.chatId;e.currentChatId=n},addNewChats:function(e,t){var n=t.chats,r=t.newChatMessageSideEffects;n.forEach((function(t){var n=Et(e,t.id);if(n){var i=(n.lastMessage&&n.lastMessage.id)!==(t.lastMessage&&t.lastMessage.id);n.lastMessage=t.lastMessage,n.unread=t.unread,n.updated_at=t.updated_at,i&&n.unread&&r(t)}else e.chatList.data.push(t),e.chatList.idStore[t.id]=t}))},updateChat:function(e,t){t._dispatch;var n=t.chat,r=(t._rootGetters,Et(e,n.id));r&&(r.lastMessage=n.lastMessage,r.unread=n.unread,r.updated_at=n.updated_at),r||e.chatList.data.unshift(n),e.chatList.idStore[n.id]=n},deleteChat:function(e,t){t._dispatch;var n=t.id;t._rootGetters;e.chats.data=e.chats.data.filter((function(e){return e.last_status.id!==n})),e.chats.idStore=_()(e.chats.idStore,(function(e){return e.last_status.id===n}))},resetChats:function(e,t){var n=t.commit;for(var r in e.chatList={data:[],idStore:{}},e.currentChatId=null,n("setChatListFetcher",{fetcher:void 0}),e.openedChats)$t.clear(e.openedChatMessageServices[r]),delete e.openedChats[r],delete e.openedChatMessageServices[r]},setChatsLoading:function(e,t){var n=t.value;e.chats.loading=n},addChatMessages:function(e,t){var n=t.chatId,r=t.messages,i=t.updateMaxId,o=e.openedChatMessageServices[n];o&&$t.add(o,{messages:r.map(zt.c),updateMaxId:i})},deleteChatMessage:function(e,t){var n=t.chatId,r=t.messageId,i=e.openedChatMessageServices[n];i&&$t.deleteMessage(i,r)},resetChatNewMessageCount:function(e,t){var n=e.openedChatMessageServices[e.currentChatId];$t.resetNewMessageCount(n)},clearOpenedChats:function(e){var t=e.currentChatId;for(var n in e.openedChats)t!==n&&($t.clear(e.openedChatMessageServices[n]),delete e.openedChats[n],delete e.openedChatMessageServices[n])},readChat:function(e,t){var n=t.id,r=t.lastReadId;e.lastReadMessageId=r;var i=Et(e,n);i&&(i.unread=0)},handleMessageError:function(e,t){var n=t.chatId,r=t.fakeId,i=t.isRetry,o=e.openedChatMessageServices[n];$t.handleMessageError(o,r,i)},cullOlderMessages:function(e,t){$t.cullOlderMessages(e.openedChatMessageServices[t])}}},Rt=n(335),At=n(135),Nt=n.n(At),Bt=n(39),Vt=n.n(Bt),Ht=n(16),qt=n.n(Ht),Jt=n(323),Wt=n.n(Jt),Yt=n(324),Gt=!1,Kt=function(e,t){return 0===t.length?e:t.reduce((function(t,n){return Vt()(t,n,qt()(e,n)),t}),{})},Xt=["markNotificationsAsSeen","clearCurrentUser","setCurrentUser","setHighlight","setOption","setClientData","setToken","clearToken"],Zt=n.n(Yt).a;function Qt(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.key,n=void 0===t?"vuex-lz":t,r=e.paths,i=void 0===r?[]:r,o=e.getState,s=void 0===o?function(e,t){return t.getItem(e)}:o,a=e.setState,c=void 0===a?function(e,t,n){return Gt?n.setItem(e,t):(console.log("waiting for old state to be loaded..."),Promise.resolve())}:a,l=e.reducer,u=void 0===l?Kt:l,d=e.storage,p=void 0===d?Zt:d,h=e.subscriber,b=void 0===h?function(e){return function(t){return e.subscribe(t)}}:h;return s(n,p).then((function(e){return function(t){try{if(null!==e&&"object"===_t()(e)){var r=e.users||{};r.usersObject={};var o=r.users||[];B()(o,(function(e){r.usersObject[e.id]=e})),e.users=r,t.replaceState(Wt()({},t.state,e))}Gt=!0}catch(e){console.log("Couldn't load state"),console.error(e),Gt=!0}b(t)((function(e,r){try{Xt.includes(e.type)&&c(n,u(Nt()(r),i),p).then((function(n){void 0!==n&&("setOption"!==e.type&&"setCurrentUser"!==e.type||t.dispatch("settingsSaved",{success:n}))}),(function(n){"setOption"!==e.type&&"setCurrentUser"!==e.type||t.dispatch("settingsSaved",{error:n})}))}catch(e){console.log("Couldn't persist state:"),console.log(e)}}))}}))}var en=function(e){e.subscribe((function(t,n){var r=n.instance.vapidPublicKey,i=n.config.webPushNotifications,o="granted"===n.interface.notificationPermission,s=n.users.currentUser,a="setCurrentUser"===t.type,c="setInstanceOption"===t.type&&"vapidPublicKey"===t.payload.name,l="setNotificationPermission"===t.type&&"granted"===t.payload,u="setOption"===t.type&&"webPushNotifications"===t.payload.name,d="setOption"===t.type&&"notificationVisibility"===t.payload.name;if(a||c||l||u||d){if(s&&r&&o&&i)return e.dispatch("registerPushNotifications");if(u&&!i)return e.dispatch("unregisterPushNotifications")}}))},tn=n(70),nn=n(171),rn=n(325),on=n.n(rn),sn=n(68);const an=Object(wt.k)("div",{id:"app_bg_wrapper",class:"app-bg-wrapper"},null,-1),cn=Object(wt.k)("div",{class:"underlay"},null,-1),ln=Object(wt.k)("div",{id:"notifs-sidebar"},null,-1),un={key:0,class:"login-hint panel panel-default"},dn=Object(wt.k)("div",{id:"modal"},null,-1);const pn={class:"user-panel"},hn={key:"user-panel-signed",class:"panel panel-default signed-in"};const bn={class:"login panel panel-default"},mn={class:"panel-heading"},fn={class:"panel-body"},On={class:"form-group"},jn={for:"username"},gn=["disabled","placeholder"],vn={class:"form-group"},yn={for:"password"},wn=["disabled"],kn={class:"form-group"},_n={key:1,class:"form-group"},Sn={class:"form-group"},Cn={class:"login-bottom"},Pn=["disabled"],xn={key:0,class:"form-group"},Dn={class:"alert error"};var Tn=n(6),In=n(3);function $n(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function zn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?$n(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$n(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.rb);var Mn={data:function(){return{user:{},error:!1}},computed:zn(zn({isPasswordAuth:function(){return this.requiredPassword},isTokenAuth:function(){return this.requiredToken}},Object(a.e)({registrationOpen:function(e){return e.instance.registrationOpen},instance:function(e){return e.instance},loggingIn:function(e){return e.users.loggingIn},oauth:function(e){return e.oauth}})),Object(a.c)("authFlow",["requiredPassword","requiredToken","requiredMFA"])),methods:zn(zn(zn({},Object(a.d)("authFlow",["requireMFA"])),Object(a.b)({login:"authFlow/login"})),{},{submit:function(){this.isTokenAuth?this.submitToken():this.submitPassword()},submitToken:function(){var e=this.oauth,t={clientId:e.clientId,clientSecret:e.clientSecret,instance:this.instance.server,commit:this.$store.commit};ze.getOrCreateApp(t).then((function(e){ze.login(zn(zn({},e),t))}))},submitPassword:function(){var e=this,t={clientId:this.oauth.clientId,oauth:this.oauth,instance:this.instance.server,commit:this.$store.commit};this.error=!1,ze.getOrCreateApp(t).then((function(n){ze.getTokenWithCredentials(zn(zn({},n),{},{instance:t.instance,username:e.user.username,password:e.user.password})).then((function(t){t.error?"mfa_required"===t.error?e.requireMFA({settings:t}):"password_reset_required"===t.identifier?e.$router.push({name:"password-reset",params:{passwordResetRequested:!0}}):(e.error=t.error,e.focusOnPasswordInput()):e.login(t).then((function(){e.$router.push({name:"friends"})}))}))}))},clearError:function(){this.error=!1},focusOnPasswordInput:function(){var e=this.$refs.passwordInput;e.focus(),e.setSelectionRange(0,e.value.length)}})},Un=(n(498),n(4)),Fn=n.n(Un);var En=Fn()(Mn,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("router-link"),a=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",bn,[Object(wt.k)("div",mn,Object(wt.O)(e.$t("login.login")),1),Object(wt.k)("div",fn,[Object(wt.k)("form",{class:"login-form",onSubmit:t[2]||(t[2]=Object(wt.Y)((...t)=>e.submit&&e.submit(...t),["prevent"]))},[e.isPasswordAuth?(Object(wt.D)(),Object(wt.j)(wt.a,{key:0},[Object(wt.k)("div",On,[Object(wt.k)("label",jn,Object(wt.O)(e.$t("login.username")),1),Object(wt.W)(Object(wt.k)("input",{id:"username","onUpdate:modelValue":t[0]||(t[0]=t=>e.user.username=t),disabled:e.loggingIn,class:"form-control",placeholder:e.$t("login.placeholder")},null,8,gn),[[wt.S,e.user.username]])]),Object(wt.k)("div",vn,[Object(wt.k)("label",yn,Object(wt.O)(e.$t("login.password")),1),Object(wt.W)(Object(wt.k)("input",{id:"password",ref:"passwordInput","onUpdate:modelValue":t[1]||(t[1]=t=>e.user.password=t),disabled:e.loggingIn,class:"form-control",type:"password"},null,8,wn),[[wt.S,e.user.password]])]),Object(wt.k)("div",kn,[Object(wt.m)(s,{to:{name:"password-reset"}},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.$t("password_reset.forgot_password")),1)]),_:1})])],64)):Object(wt.i)("",!0),e.isTokenAuth?(Object(wt.D)(),Object(wt.j)("div",_n,[Object(wt.k)("p",null,Object(wt.O)(e.$t("login.description")),1)])):Object(wt.i)("",!0),Object(wt.k)("div",Sn,[Object(wt.k)("div",Cn,[Object(wt.k)("div",null,[e.registrationOpen?(Object(wt.D)(),Object(wt.h)(s,{key:0,to:{name:"registration"},class:"register"},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.$t("login.register")),1)]),_:1})):Object(wt.i)("",!0)]),Object(wt.k)("button",{disabled:e.loggingIn,type:"submit",class:"btn button-default"},Object(wt.O)(e.$t("login.login")),9,Pn)])])],32)]),e.error?(Object(wt.D)(),Object(wt.j)("div",xn,[Object(wt.k)("div",Dn,[Object(wt.l)(Object(wt.O)(e.error)+" ",1),Object(wt.k)("button",{class:"button-unstyled",onClick:t[3]||(t[3]=(...t)=>e.clearError&&e.clearError(...t))},[Object(wt.m)(a,{class:"fa-scale-110 fa-old-padding",icon:"times"})])])])):Object(wt.i)("",!0)])}]]);const Ln={class:"login panel panel-default"},Rn={class:"panel-heading"},An={class:"panel-body"},Nn={class:"form-group"},Bn={for:"code"},Vn={class:"form-group"},Hn={class:"login-bottom"},qn=Object(wt.k)("br",null,null,-1),Jn={type:"submit",class:"btn button-default"},Wn={key:0,class:"form-group"},Yn={class:"alert error"};var Gn={verifyOTPCode:function(e){var t=e.clientId,n=e.clientSecret,r=e.instance,i=e.mfaToken,o=e.code,s="".concat(r,"/oauth/mfa/challenge"),a=new window.FormData;return a.append("client_id",t),a.append("client_secret",n),a.append("mfa_token",i),a.append("code",o),a.append("challenge_type","totp"),window.fetch(s,{method:"POST",body:a}).then((function(e){return e.json()}))},verifyRecoveryCode:function(e){var t=e.clientId,n=e.clientSecret,r=e.instance,i=e.mfaToken,o=e.code,s="".concat(r,"/oauth/mfa/challenge"),a=new window.FormData;return a.append("client_id",t),a.append("client_secret",n),a.append("mfa_token",i),a.append("code",o),a.append("challenge_type","recovery"),window.fetch(s,{method:"POST",body:a}).then((function(e){return e.json()}))}};function Kn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Xn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Kn(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Kn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.rb);var Zn={data:function(){return{code:null,error:!1}},computed:Xn(Xn({},Object(a.c)({authSettings:"authFlow/settings"})),Object(a.e)({instance:"instance",oauth:"oauth"})),methods:Xn(Xn(Xn({},Object(a.d)("authFlow",["requireTOTP","abortMFA"])),Object(a.b)({login:"authFlow/login"})),{},{clearError:function(){this.error=!1},submit:function(){var e=this,t=this.oauth,n={clientId:t.clientId,clientSecret:t.clientSecret,instance:this.instance.server,mfaToken:this.authSettings.mfa_token,code:this.code};Gn.verifyRecoveryCode(n).then((function(t){if(t.error)return e.error=t.error,void(e.code=null);e.login(t).then((function(){e.$router.push({name:"friends"})}))}))}})};var Qn=Fn()(Zn,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",Ln,[Object(wt.k)("div",Rn,Object(wt.O)(e.$t("login.heading.recovery")),1),Object(wt.k)("div",An,[Object(wt.k)("form",{class:"login-form",onSubmit:t[3]||(t[3]=Object(wt.Y)((...t)=>e.submit&&e.submit(...t),["prevent"]))},[Object(wt.k)("div",Nn,[Object(wt.k)("label",Bn,Object(wt.O)(e.$t("login.recovery_code")),1),Object(wt.W)(Object(wt.k)("input",{id:"code","onUpdate:modelValue":t[0]||(t[0]=t=>e.code=t),class:"form-control"},null,512),[[wt.S,e.code]])]),Object(wt.k)("div",Vn,[Object(wt.k)("div",Hn,[Object(wt.k)("div",null,[Object(wt.k)("button",{class:"button-unstyled -link",type:"button",onClick:t[1]||(t[1]=Object(wt.Y)((...t)=>e.requireTOTP&&e.requireTOTP(...t),["prevent"]))},Object(wt.O)(e.$t("login.enter_two_factor_code")),1),qn,Object(wt.k)("button",{class:"button-unstyled -link",type:"button",onClick:t[2]||(t[2]=Object(wt.Y)((...t)=>e.abortMFA&&e.abortMFA(...t),["prevent"]))},Object(wt.O)(e.$t("general.cancel")),1)]),Object(wt.k)("button",Jn,Object(wt.O)(e.$t("general.verify")),1)])])],32)]),e.error?(Object(wt.D)(),Object(wt.j)("div",Wn,[Object(wt.k)("div",Yn,[Object(wt.l)(Object(wt.O)(e.error)+" ",1),Object(wt.k)("button",{class:"button-unstyled",onClick:t[4]||(t[4]=(...t)=>e.clearError&&e.clearError(...t))},[Object(wt.m)(s,{class:"fa-scale-110 fa-old-padding",icon:"times"})])])])):Object(wt.i)("",!0)])}]]);const er={class:"login panel panel-default"},tr={class:"panel-heading"},nr={class:"panel-body"},rr={class:"form-group"},ir={for:"code"},or={class:"form-group"},sr={class:"login-bottom"},ar=Object(wt.k)("br",null,null,-1),cr={type:"submit",class:"btn button-default"},lr={key:0,class:"form-group"},ur={class:"alert error"};function dr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function pr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?dr(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):dr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.rb);var hr={data:function(){return{code:null,error:!1}},computed:pr(pr({},Object(a.c)({authSettings:"authFlow/settings"})),Object(a.e)({instance:"instance",oauth:"oauth"})),methods:pr(pr(pr({},Object(a.d)("authFlow",["requireRecovery","abortMFA"])),Object(a.b)({login:"authFlow/login"})),{},{clearError:function(){this.error=!1},submit:function(){var e=this,t=this.oauth,n={clientId:t.clientId,clientSecret:t.clientSecret,instance:this.instance.server,mfaToken:this.authSettings.mfa_token,code:this.code};Gn.verifyOTPCode(n).then((function(t){if(t.error)return e.error=t.error,void(e.code=null);e.login(t).then((function(){e.$router.push({name:"friends"})}))}))}})};var br=Fn()(hr,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",er,[Object(wt.k)("div",tr,Object(wt.O)(e.$t("login.heading.totp")),1),Object(wt.k)("div",nr,[Object(wt.k)("form",{class:"login-form",onSubmit:t[3]||(t[3]=Object(wt.Y)((...t)=>e.submit&&e.submit(...t),["prevent"]))},[Object(wt.k)("div",rr,[Object(wt.k)("label",ir,Object(wt.O)(e.$t("login.authentication_code")),1),Object(wt.W)(Object(wt.k)("input",{id:"code","onUpdate:modelValue":t[0]||(t[0]=t=>e.code=t),class:"form-control"},null,512),[[wt.S,e.code]])]),Object(wt.k)("div",or,[Object(wt.k)("div",sr,[Object(wt.k)("div",null,[Object(wt.k)("button",{class:"button-unstyled -link",type:"button",onClick:t[1]||(t[1]=Object(wt.Y)((...t)=>e.requireRecovery&&e.requireRecovery(...t),["prevent"]))},Object(wt.O)(e.$t("login.enter_recovery_code")),1),ar,Object(wt.k)("button",{class:"button-unstyled -link",type:"button",onClick:t[2]||(t[2]=Object(wt.Y)((...t)=>e.abortMFA&&e.abortMFA(...t),["prevent"]))},Object(wt.O)(e.$t("general.cancel")),1)]),Object(wt.k)("button",cr,Object(wt.O)(e.$t("general.verify")),1)])])],32)]),e.error?(Object(wt.D)(),Object(wt.j)("div",lr,[Object(wt.k)("div",ur,[Object(wt.l)(Object(wt.O)(e.error)+" ",1),Object(wt.k)("button",{class:"button-unstyled",onClick:t[4]||(t[4]=(...t)=>e.clearError&&e.clearError(...t))},[Object(wt.m)(s,{size:"lg",class:"fa-scale-110 fa-old-padding",icon:"times"})])])])):Object(wt.i)("",!0)])}]]);function mr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var fr={name:"AuthForm",render:function(){return Object(wt.q)(Object(wt.J)(this.authForm))},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?mr(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):mr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({authForm:function(){return this.requiredTOTP?"MFATOTPForm":this.requiredRecovery?"MFARecoveryForm":"LoginForm"}},Object(a.c)("authFlow",["requiredTOTP","requiredRecovery"])),components:{MFARecoveryForm:Qn,MFATOTPForm:br,LoginForm:En}},Or=n(57),jr=n(35);function gr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var vr={computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?gr(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):gr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({signedIn:function(){return this.user}},Object(a.e)({user:function(e){return e.users.currentUser}})),components:{AuthForm:fr,PostStatusForm:Or.a,UserCard:jr.a}};n(531);var yr=Fn()(vr,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("UserCard"),a=Object(wt.J)("PostStatusForm"),c=Object(wt.J)("auth-form");return Object(wt.D)(),Object(wt.j)("div",pn,[e.signedIn?(Object(wt.D)(),Object(wt.j)("div",hn,[Object(wt.m)(s,{"user-id":e.user.id,"hide-bio":!0,rounded:"top"},null,8,["user-id"]),Object(wt.m)(a)])):(Object(wt.D)(),Object(wt.h)(c,{key:"user-panel"}))])}]]);const wr={class:"NavPanel"},kr={class:"panel panel-default"},_r={key:0},Sr={class:"timelines-background"},Cr={key:1},Pr={key:2},xr={key:0,class:"badge badge-notification"},Dr={key:3},Tr={key:0,class:"badge badge-notification"};const Ir={key:0},$r={key:1},zr={key:2},Mr={key:3},Ur={key:4};function Fr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}Tn.c.add(In.wb,In.I,In.j,In.y,In.J);var Er={computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Fr(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Fr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Object(a.e)({currentUser:function(e){return e.users.currentUser},privateMode:function(e){return e.instance.private},federating:function(e){return e.instance.federating}}))};var Lr=Fn()(Er,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("router-link");return Object(wt.D)(),Object(wt.j)("ul",null,[e.currentUser?(Object(wt.D)(),Object(wt.j)("li",Ir,[Object(wt.m)(a,{class:"menu-item",to:{name:"friends"}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"home"}),Object(wt.l)(Object(wt.O)(e.$t("nav.home_timeline")),1)]),_:1})])):Object(wt.i)("",!0),e.currentUser||!e.privateMode?(Object(wt.D)(),Object(wt.j)("li",$r,[Object(wt.m)(a,{class:"menu-item",to:{name:"public-timeline"}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"users"}),Object(wt.l)(Object(wt.O)(e.$t("nav.public_tl")),1)]),_:1})])):Object(wt.i)("",!0),!e.federating||!e.currentUser&&e.privateMode?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",zr,[Object(wt.m)(a,{class:"menu-item",to:{name:"public-external-timeline"}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"globe"}),Object(wt.l)(Object(wt.O)(e.$t("nav.twkn")),1)]),_:1})])),e.currentUser?(Object(wt.D)(),Object(wt.j)("li",Mr,[Object(wt.m)(a,{class:"menu-item",to:{name:"bookmarks"}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"bookmark"}),Object(wt.l)(Object(wt.O)(e.$t("nav.bookmarks")),1)]),_:1})])):Object(wt.i)("",!0),e.currentUser?(Object(wt.D)(),Object(wt.j)("li",Ur,[Object(wt.m)(a,{class:"menu-item",to:{name:"dms",params:{username:e.currentUser.screen_name}}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"envelope"}),Object(wt.l)(Object(wt.O)(e.$t("nav.dms")),1)]),_:1},8,["to"])])):Object(wt.i)("",!0)])}]]);function Rr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ar(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Rr(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Rr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.wb,In.I,In.j,In.y,In.n,In.q,In.t,In.i,In.M,In.mb);var Nr={created:function(){this.currentUser&&this.currentUser.locked&&this.$store.dispatch("startFetchingFollowRequests")},components:{TimelineMenuContent:Lr},data:function(){return{showTimelines:!1}},methods:{toggleTimelines:function(){this.showTimelines=!this.showTimelines}},computed:Ar(Ar({},Object(a.e)({currentUser:function(e){return e.users.currentUser},followRequestCount:function(e){return e.api.followRequests.length},privateMode:function(e){return e.instance.private},federating:function(e){return e.instance.federating},pleromaChatMessagesAvailable:function(e){return e.instance.pleromaChatMessagesAvailable}})),Object(a.c)(["unreadChatCount"]))};n(532);var Br=Fn()(Nr,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("TimelineMenuContent"),c=Object(wt.J)("router-link");return Object(wt.D)(),Object(wt.j)("div",wr,[Object(wt.k)("div",kr,[Object(wt.k)("ul",null,[e.currentUser||!e.privateMode?(Object(wt.D)(),Object(wt.j)("li",_r,[Object(wt.k)("button",{class:"button-unstyled menu-item",onClick:t[0]||(t[0]=(...t)=>e.toggleTimelines&&e.toggleTimelines(...t))},[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110",icon:"stream"}),Object(wt.l)(Object(wt.O)(e.$t("nav.timelines"))+" ",1),Object(wt.m)(s,{class:"timelines-chevron","fixed-width":"",icon:e.showTimelines?"chevron-up":"chevron-down"},null,8,["icon"])]),Object(wt.W)(Object(wt.k)("div",Sr,[Object(wt.m)(a,{class:"timelines"})],512),[[wt.T,e.showTimelines]])])):Object(wt.i)("",!0),e.currentUser?(Object(wt.D)(),Object(wt.j)("li",Cr,[Object(wt.m)(c,{class:"menu-item",to:{name:"interactions",params:{username:e.currentUser.screen_name}}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110",icon:"bell"}),Object(wt.l)(Object(wt.O)(e.$t("nav.interactions")),1)]),_:1},8,["to"])])):Object(wt.i)("",!0),e.currentUser&&e.pleromaChatMessagesAvailable?(Object(wt.D)(),Object(wt.j)("li",Pr,[Object(wt.m)(c,{class:"menu-item",to:{name:"chats",params:{username:e.currentUser.screen_name}}},{default:Object(wt.V)(()=>[e.unreadChatCount?(Object(wt.D)(),Object(wt.j)("div",xr,Object(wt.O)(e.unreadChatCount),1)):Object(wt.i)("",!0),Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110",icon:"comments"}),Object(wt.l)(Object(wt.O)(e.$t("nav.chats")),1)]),_:1},8,["to"])])):Object(wt.i)("",!0),e.currentUser&&e.currentUser.locked?(Object(wt.D)(),Object(wt.j)("li",Dr,[Object(wt.m)(c,{class:"menu-item",to:{name:"friend-requests"}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110",icon:"user-plus"}),Object(wt.l)(Object(wt.O)(e.$t("nav.friend_requests"))+" ",1),e.followRequestCount>0?(Object(wt.D)(),Object(wt.j)("span",Tr,Object(wt.O)(e.followRequestCount),1)):Object(wt.i)("",!0)]),_:1})])):Object(wt.i)("",!0),Object(wt.k)("li",null,[Object(wt.m)(c,{class:"menu-item",to:{name:"about"}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110",icon:"info-circle"}),Object(wt.l)(Object(wt.O)(e.$t("nav.about")),1)]),_:1})])])])])}]]);const Vr={class:"instance-specific-panel"},Hr={class:"panel panel-default"},qr={class:"panel-body"},Jr=["innerHTML"];var Wr={computed:{instanceSpecificPanelContent:function(){return this.$store.state.instance.instanceSpecificPanelContent}}};var Yr=Fn()(Wr,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("div",Vr,[Object(wt.k)("div",Hr,[Object(wt.k)("div",qr,[Object(wt.k)("div",{innerHTML:e.instanceSpecificPanelContent},null,8,Jr)])])])}]]);const Gr={class:"features-panel"},Kr={class:"panel panel-default base01-background"},Xr={class:"panel-heading timeline-heading base02-background base04"},Zr={class:"title"},Qr={class:"panel-body features-panel"},ei={key:0},ti={key:1},ni={key:2},ri={key:3},ii={key:4};var oi=n(96),si={computed:{shout:function(){return this.$store.state.instance.shoutAvailable},pleromaChatMessages:function(){return this.$store.state.instance.pleromaChatMessagesAvailable},gopher:function(){return this.$store.state.instance.gopherAvailable},whoToFollow:function(){return this.$store.state.instance.suggestionsEnabled},mediaProxy:function(){return this.$store.state.instance.mediaProxyAvailable},minimalScopesMode:function(){return this.$store.state.instance.minimalScopesMode},textlimit:function(){return this.$store.state.instance.textlimit},uploadlimit:function(){return oi.a.fileSizeFormat(this.$store.state.instance.uploadlimit)}}};n(533);var ai=Fn()(si,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("div",Gr,[Object(wt.k)("div",Kr,[Object(wt.k)("div",Xr,[Object(wt.k)("div",Zr,Object(wt.O)(e.$t("features_panel.title")),1)]),Object(wt.k)("div",Qr,[Object(wt.k)("ul",null,[e.shout?(Object(wt.D)(),Object(wt.j)("li",ei,Object(wt.O)(e.$t("features_panel.shout")),1)):Object(wt.i)("",!0),e.pleromaChatMessages?(Object(wt.D)(),Object(wt.j)("li",ti,Object(wt.O)(e.$t("features_panel.pleroma_chat_messages")),1)):Object(wt.i)("",!0),e.gopher?(Object(wt.D)(),Object(wt.j)("li",ni,Object(wt.O)(e.$t("features_panel.gopher")),1)):Object(wt.i)("",!0),e.whoToFollow?(Object(wt.D)(),Object(wt.j)("li",ri,Object(wt.O)(e.$t("features_panel.who_to_follow")),1)):Object(wt.i)("",!0),e.mediaProxy?(Object(wt.D)(),Object(wt.j)("li",ii,Object(wt.O)(e.$t("features_panel.media_proxy")),1)):Object(wt.i)("",!0),Object(wt.k)("li",null,Object(wt.O)(e.$t("features_panel.scope_options")),1),Object(wt.k)("li",null,Object(wt.O)(e.$t("features_panel.text_limit"))+" = "+Object(wt.O)(e.textlimit),1),Object(wt.k)("li",null,Object(wt.O)(e.$t("features_panel.upload_limit"))+" = "+Object(wt.O)(e.uploadlimit.num)+" "+Object(wt.O)(e.$t("upload.file_size_units."+e.uploadlimit.unit)),1)])])])])}]]);const ci={class:"who-to-follow-panel"},li={class:"panel panel-default base01-background"},ui={class:"panel-heading timeline-heading base02-background base04"},di={class:"title"},pi={class:"who-to-follow"},hi=["src"],bi=Object(wt.k)("br",null,null,-1),mi={class:"who-to-follow-more"};var fi=n(330),Oi=n.n(fi),ji=n(23);function gi(e){var t=e.$store.state.users.currentUser.credentials;t&&(e.usersToFollow.forEach((function(e){e.name="Loading..."})),j.c.suggestions({credentials:t}).then((function(t){!function(e,t){var n=this,r=Oi()(t);e.usersToFollow.forEach((function(t,i){var o=r[i],s=o.avatar||n.$store.state.instance.defaultAvatar,a=o.acct;t.img=s,t.name=a,e.$store.state.api.backendInteractor.fetchUser({id:a}).then((function(n){n.error||(e.$store.commit("addNewUsers",[n]),t.id=n.id)}))}))}(e,t)})))}var vi={data:function(){return{usersToFollow:[]}},computed:{user:function(){return this.$store.state.users.currentUser.screen_name},suggestionsEnabled:function(){return this.$store.state.instance.suggestionsEnabled}},methods:{userProfileLink:function(e,t){return Object(ji.a)(e,t,this.$store.state.instance.restrictedNicknames)}},watch:{user:function(e,t){this.suggestionsEnabled&&gi(this)}},mounted:function(){var e=this;this.usersToFollow=new Array(3).fill().map((function(t){return{img:e.$store.state.instance.defaultAvatar,name:"",id:0}})),this.suggestionsEnabled&&gi(this)}};n(537);var yi=Fn()(vi,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("router-link");return Object(wt.D)(),Object(wt.j)("div",ci,[Object(wt.k)("div",li,[Object(wt.k)("div",ui,[Object(wt.k)("div",di,Object(wt.O)(e.$t("who_to_follow.who_to_follow")),1)]),Object(wt.k)("div",pi,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.usersToFollow,t=>(Object(wt.D)(),Object(wt.j)("p",{key:t.id,class:"who-to-follow-items"},[Object(wt.k)("img",{src:t.img},null,8,hi),Object(wt.m)(s,{to:e.userProfileLink(t.id,t.name)},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(t.name),1)]),_:2},1032,["to"]),bi]))),128)),Object(wt.k)("p",mi,[Object(wt.m)(s,{to:{name:"who-to-follow"}},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.$t("who_to_follow.more")),1)]),_:1})])])])])}]]);const wi={key:0,class:"shout-panel"},ki={class:"panel panel-default"},_i={class:"title"},Si={class:"shout-window"},Ci={class:"shout-avatar"},Pi=["src"],xi={class:"shout-content"},Di=Object(wt.k)("br",null,null,-1),Ti={class:"shout-text"},Ii={class:"shout-input"},$i={key:1,class:"shout-panel"},zi={class:"panel panel-default"},Mi={class:"title"};Tn.c.add(In.l,In.rb);var Ui={props:["floating"],data:function(){return{currentMessage:"",channel:null,collapsed:!0}},computed:{messages:function(){return this.$store.state.shout.messages}},methods:{submit:function(e){this.$store.state.shout.channel.push("new_msg",{text:e},1e4),this.currentMessage=""},togglePanel:function(){this.collapsed=!this.collapsed},userProfileLink:function(e){return Object(ji.a)(e.id,e.username,this.$store.state.instance.restrictedNicknames)}},watch:{messages:function(e){var t=this.$el.querySelector(".chat-window");t&&t.scrollTop+t.offsetHeight+20>t.scrollHeight&&this.$nextTick((function(){t&&(t.scrollTop=t.scrollHeight-t.offsetHeight)}))}}};n(538);var Fi=Fn()(Ui,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("router-link");return e.collapsed&&e.floating?(Object(wt.D)(),Object(wt.j)("div",$i,[Object(wt.k)("div",zi,[Object(wt.k)("div",{class:"panel-heading -stub timeline-heading shout-heading",onClick:t[3]||(t[3]=Object(wt.Y)((...t)=>e.togglePanel&&e.togglePanel(...t),["stop","prevent"]))},[Object(wt.k)("div",Mi,[Object(wt.m)(s,{class:"icon",icon:"bullhorn"}),Object(wt.l)(" "+Object(wt.O)(e.$t("shoutbox.title")),1)])])])])):(Object(wt.D)(),Object(wt.j)("div",wi,[Object(wt.k)("div",ki,[Object(wt.k)("div",{class:Object(wt.w)(["panel-heading timeline-heading",{"shout-heading":e.floating}]),onClick:t[0]||(t[0]=Object(wt.Y)((...t)=>e.togglePanel&&e.togglePanel(...t),["stop","prevent"]))},[Object(wt.k)("div",_i,[Object(wt.l)(Object(wt.O)(e.$t("shoutbox.title"))+" ",1),e.floating?(Object(wt.D)(),Object(wt.h)(s,{key:0,icon:"times",class:"close-icon"})):Object(wt.i)("",!0)])],2),Object(wt.k)("div",Si,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.messages,t=>(Object(wt.D)(),Object(wt.j)("div",{key:t.id,class:"shout-message"},[Object(wt.k)("span",Ci,[Object(wt.k)("img",{src:t.author.avatar},null,8,Pi)]),Object(wt.k)("div",xi,[Object(wt.m)(a,{class:"shout-name",to:e.userProfileLink(t.author)},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(t.author.username),1)]),_:2},1032,["to"]),Di,Object(wt.k)("span",Ti,Object(wt.O)(t.text),1)])]))),128))]),Object(wt.k)("div",Ii,[Object(wt.W)(Object(wt.k)("textarea",{"onUpdate:modelValue":t[1]||(t[1]=t=>e.currentMessage=t),class:"shout-input-textarea",rows:"1",onKeyup:t[2]||(t[2]=Object(wt.X)(t=>e.submit(e.currentMessage),["enter"]))},null,544),[[wt.S,e.currentMessage]])])])]))}]]);const Ei={class:"settings-modal-panel panel"},Li={class:"panel-heading"},Ri={class:"title"},Ai=["title"],Ni=["title"],Bi={class:"panel-body"},Vi={class:"panel-footer settings-footer"},Hi=["title"],qi=Object(wt.l)(" "+Object(wt.O)(" ")+" "),Ji={class:"dropdown-menu"},Wi=["onClick"],Yi=["onClick"],Gi=["onClick"],Ki=Object(wt.k)("span",{id:"unscrolled-content",class:"extra-content"},null,-1);var Xi={props:{isOpen:{type:Boolean,default:!0},noBackground:{type:Boolean,default:!1}},computed:{classes:function(){return{"modal-background":!this.noBackground,open:this.isOpen}}}};n(539);var Zi=Fn()(Xi,[["render",function(e,t,n,r,i,o){const s=Object(wt.K)("body-scroll-lock");return Object(wt.W)((Object(wt.D)(),Object(wt.j)("div",{class:Object(wt.w)(["modal-view",o.classes]),onClick:t[0]||(t[0]=Object(wt.Y)(t=>e.$emit("backdropClicked"),["self"]))},[Object(wt.I)(e.$slots,"default")],2)),[[wt.T,n.isOpen],[s,n.isOpen&&!n.noBackground]])}]]);const Qi={class:"panel-loading"},eo={class:"loading-text"};Tn.c.add(In.r);var to={};n(540);var no=Fn()(to,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",Qi,[Object(wt.k)("span",eo,[Object(wt.m)(s,{icon:"circle-notch",spin:"",size:"3x"}),Object(wt.l)(" "+Object(wt.O)(e.$t("general.loading")),1)])])}]]);const ro={class:"async-component-error"};var io={emits:["resetAsyncComponent"],methods:{retry:function(){this.$emit("resetAsyncComponent")}}};n(541);var oo=Fn()(io,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("div",ro,[Object(wt.k)("div",null,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("general.generic_error")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("general.error_retry")),1),Object(wt.k)("button",{class:"btn button-default",onClick:t[0]||(t[0]=(...e)=>o.retry&&o.retry(...e))},Object(wt.O)(e.$t("general.retry")),1)])])}]]);function so(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var ao=function(e,t){var n=function(){return function(){return Object(wt.n)(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?so(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):so(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({loader:e},t))}},r=Object(wt.M)({c:n()});return{render:function(){return Object(wt.q)(r.c(),{onResetAsyncComponent:function(){r.c=n()}})}}},co=n(24),lo=n(51),uo=n(138),po=n(41);function ho(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function bo(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ho(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ho(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.rb,po.e,In.F,In.E,In.n);var mo={data:function(){var e=this;return{dataImporter:Object(uo.b)({validator:this.importValidator,onImport:this.onImport,onImportFailure:this.onImportFailure}),dataThemeExporter:Object(uo.a)({filename:"pleromafe_settings.full",getExportedObject:function(){return e.generateExport(!0)}}),dataExporter:Object(uo.a)({filename:"pleromafe_settings",getExportedObject:function(){return e.generateExport()}})}},components:{Modal:Zi,Popover:co.default,Checkbox:lo.a,SettingsModalContent:ao((function(){return Promise.all([n.e(3),n.e(2)]).then(n.bind(null,708))}),{loadingComponent:no,errorComponent:oo,delay:0})},methods:{closeModal:function(){this.$store.dispatch("closeSettingsModal")},peekModal:function(){this.$store.dispatch("togglePeekSettingsModal")},importValidator:function(e){if(!Array.isArray(e._pleroma_settings_version))return{messageKey:"settings.file_import_export.invalid_file"};var t=m()(e._pleroma_settings_version,2),n=t[0],r=t[1];return n>1?{messageKey:"settings.file_export_import.errors.file_too_new",messageArgs:{fileMajor:n,feMajor:1}}:n<1?{messageKey:"settings.file_export_import.errors.file_too_old",messageArgs:{fileMajor:n,feMajor:1}}:(r>0&&this.$store.dispatch("pushGlobalNotice",{level:"warning",messageKey:"settings.file_export_import.errors.file_slightly_new"}),!0)},onImportFailure:function(e){e.error?this.$store.dispatch("pushGlobalNotice",{messageKey:"settings.invalid_settings_imported",level:"error"}):this.$store.dispatch("pushGlobalNotice",bo(bo({},e.validationResult),{},{level:"error"}))},onImport:function(e){e&&this.$store.dispatch("loadSettings",e)},restore:function(){this.dataImporter.importData()},backup:function(){this.dataExporter.exportData()},backupWithTheme:function(){this.dataThemeExporter.exportData()},generateExport:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.$store.state.config,n=t;if(!e){var r=new Set(["customTheme","customThemeSource","colors"]);n=Object.fromEntries(Object.entries(n).filter((function(e){var t=m()(e,1)[0];return!r.has(t)})))}var i=Nt()(n);return i._pleroma_settings_version=[1,0],i}},computed:{currentSaveStateNotice:function(){return this.$store.state.interface.settings.currentSaveStateNotice},modalActivated:function(){return"hidden"!==this.$store.state.interface.settingsModalState},modalOpenedOnce:function(){return this.$store.state.interface.settingsModalLoaded},modalPeeked:function(){return"minimized"===this.$store.state.interface.settingsModalState},expertLevel:{get:function(){return this.$store.state.config.expertLevel>0},set:function(e){console.log(e),this.$store.dispatch("setOption",{name:"expertLevel",value:e?1:0})}}}};n(542);var fo=Fn()(mo,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("SettingsModalContent"),c=Object(wt.J)("Popover"),l=Object(wt.J)("Checkbox"),u=Object(wt.J)("Modal");return Object(wt.D)(),Object(wt.h)(u,{"is-open":e.modalActivated,class:Object(wt.w)(["settings-modal",{peek:e.modalPeeked}]),"no-background":e.modalPeeked},{default:Object(wt.V)(()=>[Object(wt.k)("div",Ei,[Object(wt.k)("div",Li,[Object(wt.k)("span",Ri,Object(wt.O)(e.$t("settings.settings")),1),Object(wt.m)(wt.e,{name:"fade"},{default:Object(wt.V)(()=>[e.currentSaveStateNotice?(Object(wt.D)(),Object(wt.j)("div",{key:0,class:Object(wt.w)(["alert",{transparent:!e.currentSaveStateNotice.error,error:e.currentSaveStateNotice.error}]),onClick:t[0]||(t[0]=Object(wt.Y)(()=>{},["prevent"]))},Object(wt.O)(e.currentSaveStateNotice.error?e.$t("settings.saving_err"):e.$t("settings.saving_ok")),3)):Object(wt.i)("",!0)]),_:1}),Object(wt.k)("button",{class:"btn button-default",title:e.$t("general.peek"),onClick:t[1]||(t[1]=(...t)=>e.peekModal&&e.peekModal(...t))},[Object(wt.m)(s,{icon:["far","window-minimize"],"fixed-width":""})],8,Ai),Object(wt.k)("button",{class:"btn button-default",title:e.$t("general.close"),onClick:t[2]||(t[2]=(...t)=>e.closeModal&&e.closeModal(...t))},[Object(wt.m)(s,{icon:"times","fixed-width":""})],8,Ni)]),Object(wt.k)("div",Bi,[e.modalOpenedOnce?(Object(wt.D)(),Object(wt.h)(a,{key:0})):Object(wt.i)("",!0)]),Object(wt.k)("div",Vi,[Object(wt.m)(c,{class:"export",trigger:"click",placement:"top",offset:{y:5,x:5},"bound-to":{x:"container"},"remove-padding":""},{trigger:Object(wt.V)(()=>[Object(wt.k)("button",{class:"btn button-default",title:e.$t("general.close")},[Object(wt.k)("span",null,Object(wt.O)(e.$t("settings.file_export_import.backup_restore")),1),qi,Object(wt.m)(s,{icon:"chevron-down"})],8,Hi)]),content:Object(wt.V)(({close:n})=>[Object(wt.k)("div",Ji,[Object(wt.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:[t[3]||(t[3]=Object(wt.Y)((...t)=>e.backup&&e.backup(...t),["prevent"])),n]},[Object(wt.m)(s,{icon:"file-download","fixed-width":""}),Object(wt.k)("span",null,Object(wt.O)(e.$t("settings.file_export_import.backup_settings")),1)],8,Wi),Object(wt.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:[t[4]||(t[4]=Object(wt.Y)((...t)=>e.backupWithTheme&&e.backupWithTheme(...t),["prevent"])),n]},[Object(wt.m)(s,{icon:"file-download","fixed-width":""}),Object(wt.k)("span",null,Object(wt.O)(e.$t("settings.file_export_import.backup_settings_theme")),1)],8,Yi),Object(wt.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:[t[5]||(t[5]=Object(wt.Y)((...t)=>e.restore&&e.restore(...t),["prevent"])),n]},[Object(wt.m)(s,{icon:"file-upload","fixed-width":""}),Object(wt.k)("span",null,Object(wt.O)(e.$t("settings.file_export_import.restore_settings")),1)],8,Gi)])]),_:1}),Object(wt.m)(l,{"model-value":!!e.expertLevel,"onUpdate:modelValue":t[6]||(t[6]=t=>e.expertLevel=Number(t))},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.$t("settings.expert_mode")),1)]),_:1},8,["model-value"]),Ki])])]),_:1},8,["is-open","class","no-background"])}]]);const Oo=["src","alt","title"],jo=["src","alt","title"],go=["title"],vo=["title"],yo=["title"],wo={key:6,class:"description"},ko={class:"counter"},_o={key:7,class:"loading-spinner"};var So=n(50),Co=n(141);var Po=n(337),xo={methods:{setTransform:function(e){var t=e.scale,n=e.x,r=e.y;this.$el.setTransform({scale:t,x:n,y:r})}},created:function(){Po.a}};var Do=Fn()(xo,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("pinch-zoom");return Object(wt.D)(),Object(wt.h)(s,Object(wt.u)({class:"pinch-zoom-parent"},e.$attrs,Object(wt.P)(e.$listeners)),{default:Object(wt.V)(()=>[Object(wt.I)(e.$slots,"default")]),_:3},16)}]]);var To=n(129),Io=n.n(To),$o=n(128),zo=n.n($o),Mo=function(e,t){return[t[0]-e[0],t[1]-e[1]]},Uo=function(e){return[(t=e.touches[0]).screenX,t.screenY];var t},Fo=function(e){return[e.clientX,e.clientY]},Eo=function(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1])},Lo=function(e){return[e[1],-e[0]]},Ro=function(e,t){return e[0]*t[0]+e[1]*t[1]},Ao=function(e,t){var n=Ro(e,t)/Ro(t,t);return[n*t[0],n*t[1]]},No={DIRECTION_LEFT:[-1,0],DIRECTION_RIGHT:[1,0],DIRECTION_UP:[0,-1],DIRECTION_DOWN:[0,1],swipeGesture:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:30,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;return{direction:e,onSwipe:t,threshold:n,perpendicularTolerance:r,_startPos:[0,0],_swiping:!1}},beginSwipe:function(e,t){t._startPos=Uo(e),t._swiping=!0},updateSwipe:function(e,t){if(t._swiping){var n=Mo(t._startPos,Uo(e));if(!(Eo(n)<t.threshold||Ro(n,t.direction)<0)){var r=Ao(n,t.direction),i=Lo(t.direction),o=Ao(n,i);Eo(r)*t.perpendicularTolerance<Eo(o)||(t.onSwipe(),t._swiping=!1)}}},SwipeAndClickGesture:function(){function e(t){var n=t.direction,r=t.swipePreviewCallback,i=t.swipeEndCallback,o=t.swipeCancelCallback,s=t.swipelessClickCallback,a=t.threshold,c=void 0===a?30:a,l=t.perpendicularTolerance,u=void 0===l?1:l,d=t.disableClickThreshold,p=void 0===d?1:d;Io()(this,e);var h=function(){};this.direction=n,this.swipePreviewCallback=r||h,this.swipeEndCallback=i||h,this.swipeCancelCallback=o||h,this.swipelessClickCallback=s||h,this.threshold="function"==typeof c?c:function(){return c},this.disableClickThreshold="function"==typeof p?p:function(){return p},this.perpendicularTolerance=u,this._reset()}return zo()(e,[{key:"_reset",value:function(){this._startPos=[0,0],this._pointerId=-1,this._swiping=!1,this._swiped=!1,this._preventNextClick=!1}},{key:"start",value:function(e){0===e.button&&(this._startPos=Fo(e),this._pointerId=e.pointerId,this._swiping=!0,this._swiped=!1)}},{key:"move",value:function(e){if(this._swiping&&this._pointerId===e.pointerId){this._swiped=!0;var t=Fo(e),n=Mo(this._startPos,t);this.swipePreviewCallback(n)}}},{key:"cancel",value:function(e){this._swiping&&this._pointerId===e.pointerId&&this.swipeCancelCallback()}},{key:"end",value:function(e){var t=this;if(this._swiping&&this._pointerId===e.pointerId){this._swiping=!1;var n=Fo(e),r=Mo(this._startPos,n),i=function(){if(Eo(r)<t.threshold())return 0;var e=Ro(r,t.direction)>0,n=Ao(r,t.direction),i=Lo(t.direction),o=Ao(r,i);return Eo(n)*t.perpendicularTolerance<Eo(o)?0:e?1:-1}();this._swiped&&this.swipeEndCallback(i),this._reset(),Eo(r)>=this.disableClickThreshold()&&"mouse"===e.pointerType&&(this._preventNextClick=!0)}}},{key:"click",value:function(e){this._preventNextClick||this.swipelessClickCallback(),this._reset()}}]),e}()},Bo={props:{direction:{type:Array},threshold:{type:Function,default:function(){return 30}},perpendicularTolerance:{type:Number,default:1}},methods:{handlePointerDown:function(e){this.$gesture.start(e)},handlePointerMove:function(e){this.$gesture.move(e)},handlePointerUp:function(e){this.$gesture.end(e)},handlePointerCancel:function(e){this.$gesture.cancel(e)},handleNativeClick:function(e){this.$gesture.click(e)},preview:function(e){this.$emit("preview-requested",e)},end:function(e){this.$emit("swipe-finished",e)},click:function(){this.$emit("swipeless-clicked")},cancel:function(){this.$emit("swipe-canceled")}},created:function(){this.$gesture=new No.SwipeAndClickGesture({direction:this.direction,threshold:this.threshold,perpendicularTolerance:this.perpendicularTolerance,swipePreviewCallback:this.preview,swipeEndCallback:this.end,swipeCancelCallback:this.cancel,swipelessClickCallback:this.click})}};var Vo=Fn()(Bo,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("div",Object(wt.u)(e.$attrs,{onPointerdown:t[0]||(t[0]=(...t)=>e.handlePointerDown&&e.handlePointerDown(...t)),onPointermove:t[1]||(t[1]=(...t)=>e.handlePointerMove&&e.handlePointerMove(...t)),onPointerup:t[2]||(t[2]=(...t)=>e.handlePointerUp&&e.handlePointerUp(...t)),onPointercancel:t[3]||(t[3]=(...t)=>e.handlePointerCancel&&e.handlePointerCancel(...t)),onClick:t[4]||(t[4]=(...t)=>e.handleNativeClick&&e.handleNativeClick(...t))}),[Object(wt.I)(e.$slots,"default")],16)}]]),Ho=n(139);Tn.c.add(In.o,In.p,In.r,In.rb);var qo={components:{StillImage:So.a,VideoAttachment:Co.a,PinchZoom:Do,SwipeClick:Vo,Modal:Zi,Flash:Ho.a},data:function(){return{loading:!1,swipeDirection:No.DIRECTION_LEFT,swipeThreshold:function(){return window.innerWidth*(1/4)},pinchZoomMinScale:1,pinchZoomScaleResetLimit:1.2}},computed:{showing:function(){return this.$store.state.mediaViewer.activated},media:function(){return this.$store.state.mediaViewer.media},description:function(){return this.currentMedia.description},currentIndex:function(){return this.$store.state.mediaViewer.currentIndex},currentMedia:function(){return this.media[this.currentIndex]},canNavigate:function(){return this.media.length>1},type:function(){return this.currentMedia?this.getType(this.currentMedia):null}},methods:{getType:function(e){return lt.a.fileType(e.mimetype)},hide:function(){var e=this;setTimeout((function(){e.$store.dispatch("closeMediaViewer")}),100)},hideIfNotSwiped:function(e){var t=this.$refs.swipeClick;t?t.$gesture.click(e):this.hide()},goPrev:function(){if(this.canNavigate){var e=0===this.currentIndex?this.media.length-1:this.currentIndex-1,t=this.media[e];"image"===this.getType(t)&&(this.loading=!0),this.$store.dispatch("setCurrentMedia",t)}},goNext:function(){if(this.canNavigate){var e=this.currentIndex===this.media.length-1?0:this.currentIndex+1,t=this.media[e];"image"===this.getType(t)&&(this.loading=!0),this.$store.dispatch("setCurrentMedia",t)}},onImageLoaded:function(){this.loading=!1},handleSwipePreview:function(e){this.$refs.pinchZoom.setTransform({scale:1,x:e[0],y:0})},handleSwipeEnd:function(e){this.$refs.pinchZoom.setTransform({scale:1,x:0,y:0}),e>0?this.goNext():e<0&&this.goPrev()},handleKeyupEvent:function(e){this.showing&&27===e.keyCode&&this.hide()},handleKeydownEvent:function(e){this.showing&&(39===e.keyCode?this.goNext():37===e.keyCode&&this.goPrev())}},mounted:function(){window.addEventListener("popstate",this.hide),document.addEventListener("keyup",this.handleKeyupEvent),document.addEventListener("keydown",this.handleKeydownEvent)},unmounted:function(){window.removeEventListener("popstate",this.hide),document.removeEventListener("keyup",this.handleKeyupEvent),document.removeEventListener("keydown",this.handleKeydownEvent)}};n(543);var Jo=Fn()(qo,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("PinchZoom"),a=Object(wt.J)("SwipeClick"),c=Object(wt.J)("VideoAttachment"),l=Object(wt.J)("Flash"),u=Object(wt.J)("FAIcon"),d=Object(wt.J)("Modal");return e.showing?(Object(wt.D)(),Object(wt.h)(d,{key:0,class:"media-modal-view",onBackdropClicked:e.hideIfNotSwiped},{default:Object(wt.V)(()=>["image"===e.type?(Object(wt.D)(),Object(wt.h)(a,{key:0,ref:"swipeClick",class:"modal-image-container",direction:e.swipeDirection,threshold:e.swipeThreshold,onPreviewRequested:e.handleSwipePreview,onSwipeFinished:e.handleSwipeEnd,onSwipelessClicked:e.hide},{default:Object(wt.V)(()=>[Object(wt.m)(s,{ref:"pinchZoom",class:"modal-image-container-inner",selector:".modal-image","reach-min-scale-strategy":"reset","stop-propagate-handled":"stop-propgate-handled","allow-pan-min-scale":e.pinchZoomMinScale,"min-scale":e.pinchZoomMinScale,"reset-to-min-scale-limit":e.pinchZoomScaleResetLimit},{default:Object(wt.V)(()=>[Object(wt.k)("img",{class:Object(wt.w)([{loading:e.loading},"modal-image"]),src:e.currentMedia.url,alt:e.currentMedia.description,title:e.currentMedia.description,onLoad:t[0]||(t[0]=(...t)=>e.onImageLoaded&&e.onImageLoaded(...t))},null,42,Oo)]),_:1},8,["allow-pan-min-scale","min-scale","reset-to-min-scale-limit"])]),_:1},8,["direction","threshold","onPreviewRequested","onSwipeFinished","onSwipelessClicked"])):Object(wt.i)("",!0),"video"===e.type?(Object(wt.D)(),Object(wt.h)(c,{key:1,class:"modal-image",attachment:e.currentMedia,controls:!0},null,8,["attachment"])):Object(wt.i)("",!0),"audio"===e.type?(Object(wt.D)(),Object(wt.j)("audio",{key:2,class:"modal-image",src:e.currentMedia.url,alt:e.currentMedia.description,title:e.currentMedia.description,controls:""},null,8,jo)):Object(wt.i)("",!0),"flash"===e.type?(Object(wt.D)(),Object(wt.h)(l,{key:3,class:"modal-image",src:e.currentMedia.url,alt:e.currentMedia.description,title:e.currentMedia.description},null,8,["src","alt","title"])):Object(wt.i)("",!0),e.canNavigate?(Object(wt.D)(),Object(wt.j)("button",{key:4,title:e.$t("media_modal.previous"),class:"modal-view-button modal-view-button-arrow modal-view-button-arrow--prev",onClick:t[1]||(t[1]=Object(wt.Y)((...t)=>e.goPrev&&e.goPrev(...t),["stop","prevent"]))},[Object(wt.m)(u,{class:"button-icon arrow-icon",icon:"chevron-left"})],8,go)):Object(wt.i)("",!0),e.canNavigate?(Object(wt.D)(),Object(wt.j)("button",{key:5,title:e.$t("media_modal.next"),class:"modal-view-button modal-view-button-arrow modal-view-button-arrow--next",onClick:t[2]||(t[2]=Object(wt.Y)((...t)=>e.goNext&&e.goNext(...t),["stop","prevent"]))},[Object(wt.m)(u,{class:"button-icon arrow-icon",icon:"chevron-right"})],8,vo)):Object(wt.i)("",!0),Object(wt.k)("button",{class:"modal-view-button modal-view-button-hide",title:e.$t("media_modal.hide"),onClick:t[3]||(t[3]=Object(wt.Y)((...t)=>e.hide&&e.hide(...t),["stop","prevent"]))},[Object(wt.m)(u,{class:"button-icon",icon:"times"})],8,yo),e.description?(Object(wt.D)(),Object(wt.j)("span",wo,Object(wt.O)(e.description),1)):Object(wt.i)("",!0),Object(wt.k)("span",ko,Object(wt.O)(e.$tc("media_modal.counter",e.currentIndex+1,{current:e.currentIndex+1,total:e.media.length})),1),e.loading?(Object(wt.D)(),Object(wt.j)("span",_o,[Object(wt.m)(u,{spin:"",icon:"circle-notch",size:"5x"})])):Object(wt.i)("",!0)]),_:1},8,["onBackdropClicked"])):Object(wt.i)("",!0)}]]);const Wo={key:1,class:"side-drawer-logo-wrapper"},Yo=["src"],Go={key:0},Ko={key:0,class:"badge badge-notification"},Xo={key:0},Zo={key:0,class:"badge badge-notification"},Qo={href:"/pleroma/admin/#/login-pleroma",target:"_blank"};function es(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ts(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?es(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):es(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.gb,In.hb,In.J,In.t,In.i,In.vb,In.l,In.cb,In.ob,In.s,In.M);var ns={props:["logout"],data:function(){return{closed:!0,closeGesture:void 0}},created:function(){this.closeGesture=No.swipeGesture(No.DIRECTION_LEFT,this.toggleDrawer),this.currentUser&&this.currentUser.locked&&this.$store.dispatch("startFetchingFollowRequests")},components:{UserCard:jr.a},computed:ts(ts({currentUser:function(){return this.$store.state.users.currentUser},shout:function(){return this.$store.state.shout.joined},unseenNotifications:function(){return Object(W.f)(this.$store)},unseenNotificationsCount:function(){return this.unseenNotifications.length},suggestionsEnabled:function(){return this.$store.state.instance.suggestionsEnabled},logo:function(){return this.$store.state.instance.logo},hideSitename:function(){return this.$store.state.instance.hideSitename},sitename:function(){return this.$store.state.instance.name},followRequestCount:function(){return this.$store.state.api.followRequests.length},privateMode:function(){return this.$store.state.instance.private},federating:function(){return this.$store.state.instance.federating},timelinesRoute:function(){return this.$store.state.interface.lastTimeline?this.$store.state.interface.lastTimeline:this.currentUser?"friends":"public-timeline"}},Object(a.e)({pleromaChatMessagesAvailable:function(e){return e.instance.pleromaChatMessagesAvailable}})),Object(a.c)(["unreadChatCount"])),methods:{toggleDrawer:function(){this.closed=!this.closed},doLogout:function(){this.logout(),this.toggleDrawer()},touchStart:function(e){No.beginSwipe(e,this.closeGesture)},touchMove:function(e){No.updateSwipe(e,this.closeGesture)},openSettingsModal:function(){this.$store.dispatch("openSettingsModal")}}};n(544);var rs=Fn()(ns,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("UserCard"),a=Object(wt.J)("FAIcon"),c=Object(wt.J)("router-link");return Object(wt.D)(),Object(wt.j)("div",{class:Object(wt.w)(["side-drawer-container",{"side-drawer-container-closed":e.closed,"side-drawer-container-open":!e.closed}])},[Object(wt.k)("div",{class:Object(wt.w)(["side-drawer-darken",{"side-drawer-darken-closed":e.closed}])},null,2),Object(wt.k)("div",{class:Object(wt.w)(["side-drawer",{"side-drawer-closed":e.closed}]),onTouchstart:t[15]||(t[15]=(...t)=>e.touchStart&&e.touchStart(...t)),onTouchmove:t[16]||(t[16]=(...t)=>e.touchMove&&e.touchMove(...t))},[Object(wt.k)("div",{class:"side-drawer-heading",onClick:t[0]||(t[0]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[e.currentUser?(Object(wt.D)(),Object(wt.h)(s,{key:0,"user-id":e.currentUser.id,"hide-bio":!0},null,8,["user-id"])):(Object(wt.D)(),Object(wt.j)("div",Wo,[Object(wt.k)("img",{src:e.logo},null,8,Yo),e.hideSitename?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("span",Go,Object(wt.O)(e.sitename),1))]))]),Object(wt.k)("ul",null,[e.currentUser?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",{key:0,onClick:t[1]||(t[1]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:"login"}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"sign-in-alt"}),Object(wt.l)(" "+Object(wt.O)(e.$t("login.login")),1)]),_:1})])),e.currentUser||!e.privateMode?(Object(wt.D)(),Object(wt.j)("li",{key:1,onClick:t[2]||(t[2]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:e.timelinesRoute}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"home"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.timelines")),1)]),_:1},8,["to"])])):Object(wt.i)("",!0),e.currentUser&&e.pleromaChatMessagesAvailable?(Object(wt.D)(),Object(wt.j)("li",{key:2,onClick:t[3]||(t[3]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:"chats",params:{username:e.currentUser.screen_name}},style:{position:"relative"}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"comments"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.chats"))+" ",1),e.unreadChatCount?(Object(wt.D)(),Object(wt.j)("span",Ko,Object(wt.O)(e.unreadChatCount),1)):Object(wt.i)("",!0)]),_:1},8,["to"])])):Object(wt.i)("",!0)]),e.currentUser?(Object(wt.D)(),Object(wt.j)("ul",Xo,[Object(wt.k)("li",{onClick:t[4]||(t[4]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:"interactions",params:{username:e.currentUser.screen_name}}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"bell"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.interactions")),1)]),_:1},8,["to"])]),e.currentUser.locked?(Object(wt.D)(),Object(wt.j)("li",{key:0,onClick:t[5]||(t[5]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:"/friend-requests"},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"user-plus"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.friend_requests"))+" ",1),e.followRequestCount>0?(Object(wt.D)(),Object(wt.j)("span",Zo,Object(wt.O)(e.followRequestCount),1)):Object(wt.i)("",!0)]),_:1})])):Object(wt.i)("",!0),e.shout?(Object(wt.D)(),Object(wt.j)("li",{key:1,onClick:t[6]||(t[6]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:"shout-panel"}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"bullhorn"}),Object(wt.l)(" "+Object(wt.O)(e.$t("shoutbox.title")),1)]),_:1})])):Object(wt.i)("",!0)])):Object(wt.i)("",!0),Object(wt.k)("ul",null,[e.currentUser||!e.privateMode?(Object(wt.D)(),Object(wt.j)("li",{key:0,onClick:t[7]||(t[7]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:"search"}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"search"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.search")),1)]),_:1})])):Object(wt.i)("",!0),e.currentUser&&e.suggestionsEnabled?(Object(wt.D)(),Object(wt.j)("li",{key:1,onClick:t[8]||(t[8]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:"who-to-follow"}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"user-plus"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.who_to_follow")),1)]),_:1})])):Object(wt.i)("",!0),Object(wt.k)("li",{onClick:t[10]||(t[10]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.k)("button",{class:"button-unstyled -link -fullwidth",onClick:t[9]||(t[9]=(...t)=>e.openSettingsModal&&e.openSettingsModal(...t))},[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"cog"}),Object(wt.l)(" "+Object(wt.O)(e.$t("settings.settings")),1)])]),Object(wt.k)("li",{onClick:t[11]||(t[11]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:"about"}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"info-circle"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.about")),1)]),_:1})]),e.currentUser&&"admin"===e.currentUser.role?(Object(wt.D)(),Object(wt.j)("li",{key:2,onClick:t[12]||(t[12]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.k)("a",Qo,[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"tachometer-alt"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.administration")),1)])])):Object(wt.i)("",!0),e.currentUser?(Object(wt.D)(),Object(wt.j)("li",{key:3,onClick:t[14]||(t[14]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.k)("button",{class:"button-unstyled -link -fullwidth",onClick:t[13]||(t[13]=(...t)=>e.doLogout&&e.doLogout(...t))},[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"sign-out-alt"}),Object(wt.l)(" "+Object(wt.O)(e.$t("login.logout")),1)])])):Object(wt.i)("",!0)])],34),Object(wt.k)("div",{class:Object(wt.w)(["side-drawer-click-outside",{"side-drawer-click-outside-closed":e.closed}]),onClick:t[17]||(t[17]=Object(wt.Y)((...t)=>e.toggleDrawer&&e.toggleDrawer(...t),["stop","prevent"]))},null,2)],2)}]]);var is=n(56),os=n.n(is);Tn.c.add(In.S);var ss=new Set(["chats","chat"]),as={data:function(){return{hidden:!1,scrollingDown:!1,inputActive:!1,oldScrollPos:0,amountScrolled:0}},created:function(){this.autohideFloatingPostButton&&this.activateFloatingPostButtonAutohide(),window.addEventListener("resize",this.handleOSK)},unmounted:function(){this.autohideFloatingPostButton&&this.deactivateFloatingPostButtonAutohide(),window.removeEventListener("resize",this.handleOSK)},computed:{isLoggedIn:function(){return!!this.$store.state.users.currentUser},isHidden:function(){return!!ss.has(this.$route.name)||this.autohideFloatingPostButton&&(this.hidden||this.inputActive)},isPersistent:function(){return!!this.$store.getters.mergedConfig.alwaysShowNewPostButton},autohideFloatingPostButton:function(){return!!this.$store.getters.mergedConfig.autohideFloatingPostButton}},watch:{autohideFloatingPostButton:function(e){e?this.activateFloatingPostButtonAutohide():this.deactivateFloatingPostButtonAutohide()}},methods:{activateFloatingPostButtonAutohide:function(){window.addEventListener("scroll",this.handleScrollStart),window.addEventListener("scroll",this.handleScrollEnd)},deactivateFloatingPostButtonAutohide:function(){window.removeEventListener("scroll",this.handleScrollStart),window.removeEventListener("scroll",this.handleScrollEnd)},openPostForm:function(){this.$store.dispatch("openPostStatusModal")},handleOSK:function(){var e=window.innerWidth<350,t=e&&window.innerHeight<345,n=!e&&window.innerWidth<450&&window.innerHeight<560;this.inputActive=!(!t&&!n)},handleScrollStart:os()((function(){window.scrollY>this.oldScrollPos?this.hidden=!0:this.hidden=!1,this.oldScrollPos=window.scrollY}),100,{leading:!0,trailing:!1}),handleScrollEnd:os()((function(){this.hidden=!1,this.oldScrollPos=window.scrollY}),100,{leading:!1,trailing:!0})}};n(545);var cs=Fn()(as,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon");return e.isLoggedIn?(Object(wt.D)(),Object(wt.j)("button",{key:0,class:Object(wt.w)(["MobilePostButton button-default new-status-button",{hidden:e.isHidden,"always-show":e.isPersistent}]),onClick:t[0]||(t[0]=(...t)=>e.openPostForm&&e.openPostForm(...t))},[Object(wt.m)(s,{icon:"pen"})],2)):Object(wt.i)("",!0)}]]);const ls={class:"MobileNav"},us={class:"item"},ds={key:0,class:"alert-dot"},ps={class:"item right"},hs={key:0,class:"alert-dot"},bs={class:"mobile-notifications-header"},ms={class:"title"};var fs=n(77);function Os(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}Tn.c.add(In.rb,In.i,In.h);var js={components:{SideDrawer:rs,Notifications:fs.default},data:function(){return{notificationsCloseGesture:void 0,notificationsOpen:!1}},created:function(){this.notificationsCloseGesture=No.swipeGesture(No.DIRECTION_RIGHT,this.closeMobileNotifications,50)},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Os(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Os(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({currentUser:function(){return this.$store.state.users.currentUser},unseenNotifications:function(){return Object(W.f)(this.$store)},unseenNotificationsCount:function(){return this.unseenNotifications.length},hideSitename:function(){return this.$store.state.instance.hideSitename},sitename:function(){return this.$store.state.instance.name},isChat:function(){return"chat"===this.$route.name}},Object(a.c)(["unreadChatCount"])),methods:{toggleMobileSidebar:function(){this.$refs.sideDrawer.toggleDrawer()},openMobileNotifications:function(){this.notificationsOpen=!0},closeMobileNotifications:function(){this.notificationsOpen&&(this.notificationsOpen=!1,this.markNotificationsAsSeen())},notificationsTouchStart:function(e){No.beginSwipe(e,this.notificationsCloseGesture)},notificationsTouchMove:function(e){No.updateSwipe(e,this.notificationsCloseGesture)},scrollToTop:function(){window.scrollTo(0,0)},logout:function(){this.$router.replace("/main/public"),this.$store.dispatch("logout")},markNotificationsAsSeen:function(){this.$store.dispatch("markNotificationsAsSeen")},onScroll:function(e){var t=e.target;t.scrollTop+t.clientHeight>=t.scrollHeight&&this.$refs.notifications.fetchOlderNotifications()}},watch:{$route:function(){this.closeMobileNotifications()}}};n(559);var gs=Fn()(js,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("router-link"),c=Object(wt.J)("SideDrawer");return Object(wt.D)(),Object(wt.j)("div",ls,[Object(wt.k)("nav",{id:"nav",class:"mobile-nav",onClick:t[2]||(t[2]=t=>e.scrollToTop())},[Object(wt.k)("div",us,[Object(wt.k)("button",{class:"button-unstyled mobile-nav-button",onClick:t[0]||(t[0]=Object(wt.Y)(t=>e.toggleMobileSidebar(),["stop","prevent"]))},[Object(wt.m)(s,{class:"fa-scale-110 fa-old-padding",icon:"bars"}),e.unreadChatCount?(Object(wt.D)(),Object(wt.j)("div",ds)):Object(wt.i)("",!0)]),e.hideSitename?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.h)(a,{key:0,class:"site-name",to:{name:"root"},"active-class":"home"},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.sitename),1)]),_:1}))]),Object(wt.k)("div",ps,[e.currentUser?(Object(wt.D)(),Object(wt.j)("button",{key:0,class:"button-unstyled mobile-nav-button",onClick:t[1]||(t[1]=Object(wt.Y)(t=>e.openMobileNotifications(),["stop","prevent"]))},[Object(wt.m)(s,{class:"fa-scale-110 fa-old-padding",icon:"bell"}),e.unseenNotificationsCount?(Object(wt.D)(),Object(wt.j)("div",hs)):Object(wt.i)("",!0)])):Object(wt.i)("",!0)])]),e.currentUser?(Object(wt.D)(),Object(wt.j)("div",{key:0,class:Object(wt.w)(["mobile-notifications-drawer",{"-closed":!e.notificationsOpen}]),onTouchstart:t[5]||(t[5]=Object(wt.Y)((...t)=>e.notificationsTouchStart&&e.notificationsTouchStart(...t),["stop"])),onTouchmove:t[6]||(t[6]=Object(wt.Y)((...t)=>e.notificationsTouchMove&&e.notificationsTouchMove(...t),["stop"]))},[Object(wt.k)("div",bs,[Object(wt.k)("span",ms,Object(wt.O)(e.$t("notifications.notifications")),1),Object(wt.k)("a",{class:"mobile-nav-button",onClick:t[3]||(t[3]=Object(wt.Y)(t=>e.closeMobileNotifications(),["stop","prevent"]))},[Object(wt.m)(s,{class:"fa-scale-110 fa-old-padding",icon:"times"})])]),Object(wt.k)("div",{class:"mobile-notifications",id:"mobile-notifications",onScroll:t[4]||(t[4]=(...t)=>e.onScroll&&e.onScroll(...t))},null,32)],34)):Object(wt.i)("",!0),Object(wt.m)(c,{ref:"sideDrawer",logout:e.logout},null,8,["logout"])])}]]);const vs={class:"inner-nav"},ys={class:"item sitename"},ws=["src"],ks={class:"item right actions"};const _s=["title"],Ss=["placeholder"];Tn.c.add(In.rb,In.cb);var Cs={data:function(){return{searchTerm:void 0,hidden:!0,error:!1}},watch:{$route:function(e){"search"===e.name&&(this.searchTerm=e.query.query)}},methods:{find:function(e){this.$router.push({name:"search",query:{query:e}}),this.$refs.searchInput.focus()},toggleHidden:function(){var e=this;this.hidden=!this.hidden,this.$emit("toggled",this.hidden),this.$nextTick((function(){e.hidden||e.$refs.searchInput.focus()}))}}};n(560);var Ps=Fn()(Cs,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",{class:Object(wt.w)(["SearchBar",{"-expanded":!e.hidden}])},[e.hidden?(Object(wt.D)(),Object(wt.j)("button",{key:0,class:"button-unstyled nav-icon",title:e.$t("nav.search"),type:"button",onClick:t[0]||(t[0]=Object(wt.Y)((...t)=>e.toggleHidden&&e.toggleHidden(...t),["prevent","stop"]))},[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"search"})],8,_s)):(Object(wt.D)(),Object(wt.j)(wt.a,{key:1},[Object(wt.W)(Object(wt.k)("input",{id:"search-bar-input",ref:"searchInput","onUpdate:modelValue":t[1]||(t[1]=t=>e.searchTerm=t),class:"search-bar-input",placeholder:e.$t("nav.search"),type:"text",onKeyup:t[2]||(t[2]=Object(wt.X)(t=>e.find(e.searchTerm),["enter"]))},null,40,Ss),[[wt.S,e.searchTerm]]),Object(wt.k)("button",{class:"button-default search-button",type:"submit",onClick:t[3]||(t[3]=t=>e.find(e.searchTerm))},[Object(wt.m)(s,{"fixed-width":"",icon:"search"})]),Object(wt.k)("button",{class:"button-unstyled cancel-search",type:"button",onClick:t[4]||(t[4]=Object(wt.Y)((...t)=>e.toggleHidden&&e.toggleHidden(...t),["prevent","stop"]))},[Object(wt.m)(s,{"fixed-width":"",icon:"times",class:"cancel-icon fa-scale-110 fa-old-padding"})])],64))],2)}]]);Tn.c.add(In.gb,In.hb,In.J,In.t,In.i,In.vb,In.l,In.cb,In.ob,In.s,In.M);var xs={components:{SearchBar:Ps},data:function(){return{searchBarHidden:!0,supportsMask:window.CSS&&window.CSS.supports&&(window.CSS.supports("mask-size","contain")||window.CSS.supports("-webkit-mask-size","contain")||window.CSS.supports("-moz-mask-size","contain")||window.CSS.supports("-ms-mask-size","contain")||window.CSS.supports("-o-mask-size","contain"))}},computed:{enableMask:function(){return this.supportsMask&&this.$store.state.instance.logoMask},logoStyle:function(){return{visibility:this.enableMask?"hidden":"visible"}},logoMaskStyle:function(){return this.enableMask?{"mask-image":"url(".concat(this.$store.state.instance.logo,")")}:{"background-color":this.enableMask?"":"transparent"}},logoBgStyle:function(){return Object.assign({margin:"".concat(this.$store.state.instance.logoMargin," 0"),opacity:this.searchBarHidden?1:0},this.enableMask?{}:{"background-color":this.enableMask?"":"transparent"})},logo:function(){return this.$store.state.instance.logo},sitename:function(){return this.$store.state.instance.name},hideSitename:function(){return this.$store.state.instance.hideSitename},logoLeft:function(){return this.$store.state.instance.logoLeft},currentUser:function(){return this.$store.state.users.currentUser},privateMode:function(){return this.$store.state.instance.private}},methods:{scrollToTop:function(){window.scrollTo(0,0)},logout:function(){this.$router.replace("/main/public"),this.$store.dispatch("logout")},onSearchBarToggled:function(e){this.searchBarHidden=e},openSettingsModal:function(){this.$store.dispatch("openSettingsModal")}}};n(561);var Ds=Fn()(xs,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("router-link"),a=Object(wt.J)("search-bar"),c=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("nav",{id:"nav",class:Object(wt.w)(["DesktopNav",{"-logoLeft":e.logoLeft}]),onClick:t[4]||(t[4]=t=>e.scrollToTop())},[Object(wt.k)("div",vs,[Object(wt.k)("div",ys,[e.hideSitename?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.h)(s,{key:0,class:"site-name",to:{name:"root"},"active-class":"home"},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.sitename),1)]),_:1}))]),Object(wt.m)(s,{class:"logo",to:{name:"root"},style:Object(wt.x)(e.logoBgStyle)},{default:Object(wt.V)(()=>[Object(wt.k)("div",{class:"mask",style:Object(wt.x)(e.logoMaskStyle)},null,4),Object(wt.k)("img",{src:e.logo,style:Object(wt.x)(e.logoStyle)},null,12,ws)]),_:1},8,["style"]),Object(wt.k)("div",ks,[e.currentUser||!e.privateMode?(Object(wt.D)(),Object(wt.h)(a,{key:0,onToggled:e.onSearchBarToggled,onClick:t[0]||(t[0]=Object(wt.Y)(()=>{},["stop"]))},null,8,["onToggled"])):Object(wt.i)("",!0),Object(wt.k)("button",{class:"button-unstyled nav-icon",onClick:t[1]||(t[1]=Object(wt.Y)((...t)=>e.openSettingsModal&&e.openSettingsModal(...t),["stop"]))},[Object(wt.m)(c,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"cog",title:e.$t("nav.preferences")},null,8,["title"])]),e.currentUser&&"admin"===e.currentUser.role?(Object(wt.D)(),Object(wt.j)("a",{key:1,href:"/pleroma/admin/#/login-pleroma",class:"nav-icon",target:"_blank",onClick:t[2]||(t[2]=Object(wt.Y)(()=>{},["stop"]))},[Object(wt.m)(c,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"tachometer-alt",title:e.$t("nav.administration")},null,8,["title"])])):Object(wt.i)("",!0),e.currentUser?(Object(wt.D)(),Object(wt.j)("button",{key:2,class:"button-unstyled nav-icon",onClick:t[3]||(t[3]=Object(wt.Y)((...t)=>e.logout&&e.logout(...t),["prevent"]))},[Object(wt.m)(c,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"sign-out-alt",title:e.$t("login.logout")},null,8,["title"])])):Object(wt.i)("",!0)])])],2)}]]);const Ts={class:"user-reporting-panel panel"},Is={class:"panel-heading"},$s={class:"title"},zs={class:"panel-body"},Ms={class:"user-reporting-panel-left"},Us=["placeholder"],Fs={key:0},Es=["disabled"],Ls={key:0,class:"alert error"},Rs={class:"user-reporting-panel-right"},As={class:"status-fadein user-reporting-panel-sitem"};var Ns=n(34),Bs=n(69);function Vs(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var Hs={components:{Status:Ns.default,List:Bs.a,Checkbox:lo.a,Modal:Zi},data:function(){return{comment:"",forward:!1,statusIdsToReport:[],processing:!1,error:!1}},computed:{isLoggedIn:function(){return!!this.$store.state.users.currentUser},isOpen:function(){return this.isLoggedIn&&this.$store.state.reports.modalActivated},userId:function(){return this.$store.state.reports.userId},user:function(){return this.$store.getters.findUser(this.userId)},remoteInstance:function(){return!this.user.is_local&&this.user.screen_name.substr(this.user.screen_name.indexOf("@")+1)},statuses:function(){return this.$store.state.reports.statuses},preTickedIds:function(){return this.$store.state.reports.preTickedIds}},watch:{userId:"resetState",preTickedIds:function(e){this.statusIdsToReport=e}},methods:{resetState:function(){this.comment="",this.forward=!1,this.statusIdsToReport=this.preTickedIds,this.processing=!1,this.error=!1},closeModal:function(){this.$store.dispatch("closeUserReportingModal")},reportUser:function(){var e=this;this.processing=!0,this.error=!1;var t={userId:this.userId,comment:this.comment,forward:this.forward,statusIds:this.statusIdsToReport};this.$store.state.api.backendInteractor.reportUser(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Vs(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Vs(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},t)).then((function(){e.processing=!1,e.resetState(),e.closeModal()})).catch((function(){e.processing=!1,e.error=!0}))},clearError:function(){this.error=!1},isChecked:function(e){return-1!==this.statusIdsToReport.indexOf(e)},toggleStatus:function(e,t){e!==this.isChecked(t)&&(e?this.statusIdsToReport.push(t):this.statusIdsToReport.splice(this.statusIdsToReport.indexOf(t),1))},resize:function(e){var t=e.target||e;t instanceof window.Element&&(t.style.height="auto",t.style.height="".concat(t.scrollHeight,"px"),""===t.value&&(t.style.height=null))}}};n(563);var qs=Fn()(Hs,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("Checkbox"),a=Object(wt.J)("Status"),c=Object(wt.J)("List"),l=Object(wt.J)("Modal");return e.isOpen?(Object(wt.D)(),Object(wt.h)(l,{key:0,onBackdropClicked:e.closeModal},{default:Object(wt.V)(()=>[Object(wt.k)("div",Ts,[Object(wt.k)("div",Is,[Object(wt.k)("div",$s,Object(wt.O)(e.$t("user_reporting.title",[e.user.screen_name_ui])),1)]),Object(wt.k)("div",zs,[Object(wt.k)("div",Ms,[Object(wt.k)("div",null,[Object(wt.k)("p",null,Object(wt.O)(e.$t("user_reporting.add_comment_description")),1),Object(wt.W)(Object(wt.k)("textarea",{"onUpdate:modelValue":t[0]||(t[0]=t=>e.comment=t),class:"form-control",placeholder:e.$t("user_reporting.additional_comments"),rows:"1",onInput:t[1]||(t[1]=(...t)=>e.resize&&e.resize(...t))},null,40,Us),[[wt.S,e.comment]])]),e.user.is_local?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("div",Fs,[Object(wt.k)("p",null,Object(wt.O)(e.$t("user_reporting.forward_description")),1),Object(wt.m)(s,{modelValue:e.forward,"onUpdate:modelValue":t[2]||(t[2]=t=>e.forward=t)},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.$t("user_reporting.forward_to",[e.remoteInstance])),1)]),_:1},8,["modelValue"])])),Object(wt.k)("div",null,[Object(wt.k)("button",{class:"btn button-default",disabled:e.processing,onClick:t[3]||(t[3]=(...t)=>e.reportUser&&e.reportUser(...t))},Object(wt.O)(e.$t("user_reporting.submit")),9,Es),e.error?(Object(wt.D)(),Object(wt.j)("div",Ls,Object(wt.O)(e.$t("user_reporting.generic_error")),1)):Object(wt.i)("",!0)])]),Object(wt.k)("div",Rs,[Object(wt.m)(c,{items:e.statuses},{item:Object(wt.V)(({item:t})=>[Object(wt.k)("div",As,[Object(wt.m)(a,{"in-conversation":!1,focused:!1,statusoid:t},null,8,["statusoid"]),Object(wt.m)(s,{"model-value":e.isChecked(t.id),"onUpdate:modelValue":n=>e.toggleStatus(n,t.id)},null,8,["model-value","onUpdate:modelValue"])])]),_:1},8,["items"])])])])]),_:1},8,["onBackdropClicked"])):Object(wt.i)("",!0)}]]);const Js={class:"post-form-modal-panel panel"},Ws={class:"panel-heading"};var Ys={components:{PostStatusForm:Or.a,Modal:Zi},data:function(){return{resettingForm:!1}},computed:{isLoggedIn:function(){return!!this.$store.state.users.currentUser},modalActivated:function(){return this.$store.state.postStatus.modalActivated},isFormVisible:function(){return this.isLoggedIn&&!this.resettingForm&&this.modalActivated},params:function(){return this.$store.state.postStatus.params||{}}},watch:{params:function(e,t){var n=this;qt()(e,"repliedUser.id")!==qt()(t,"repliedUser.id")&&(this.resettingForm=!0,this.$nextTick((function(){n.resettingForm=!1})))},isFormVisible:function(e){var t=this;e&&this.$nextTick((function(){return t.$el&&t.$el.querySelector("textarea").focus()}))}},methods:{closeModal:function(){this.$store.dispatch("closePostStatusModal")}}};n(564);var Gs=Fn()(Ys,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("PostStatusForm"),a=Object(wt.J)("Modal");return e.isLoggedIn&&!e.resettingForm?(Object(wt.D)(),Object(wt.h)(a,{key:0,"is-open":e.modalActivated,class:"post-form-modal-view",onBackdropClicked:e.closeModal},{default:Object(wt.V)(()=>[Object(wt.k)("div",Js,[Object(wt.k)("div",Ws,Object(wt.O)(e.$t("post_status.new_status")),1),Object(wt.m)(s,Object(wt.u)({class:"panel-body"},e.params,{onPosted:e.closeModal}),null,16,["onPosted"])])]),_:1},8,["is-open","onBackdropClicked"])):Object(wt.i)("",!0)}]]);const Ks={class:"global-notice-list"},Xs={class:"notice-message"},Zs=["onClick"];Tn.c.add(In.rb);var Qs={computed:{notices:function(){return this.$store.state.interface.globalNotices}},methods:{closeNotice:function(e){this.$store.dispatch("removeGlobalNotice",e)}}};n(565);var ea=Fn()(Qs,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",Ks,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.notices,(t,n)=>(Object(wt.D)(),Object(wt.j)("div",{key:n,class:Object(wt.w)(["alert global-notice",{["global-"+t.level]:!0}])},[Object(wt.k)("div",Xs,Object(wt.O)(e.$t(t.messageKey,t.messageArgs)),1),Object(wt.k)("button",{class:"button-unstyled close-notice",onClick:n=>e.closeNotice(t)},[Object(wt.m)(s,{class:"fa-scale-110 fa-old-padding",icon:"times"})],8,Zs)],2))),128))])}]]);function ta(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var na={name:"app",components:{UserPanel:yr,NavPanel:Br,Notifications:Object(wt.n)((function(){return Promise.resolve().then(n.bind(null,77))})),InstanceSpecificPanel:Yr,FeaturesPanel:ai,WhoToFollowPanel:yi,ShoutPanel:Fi,MediaModal:Jo,SideDrawer:rs,MobilePostStatusButton:cs,MobileNav:gs,DesktopNav:Ds,SettingsModal:fo,UserReportingModal:qs,PostStatusModal:Gs,GlobalNoticeList:ea},data:function(){return{mobileActivePanel:"timeline"}},created:function(){var e=this.$store.getters.mergedConfig.interfaceLanguage;this.$store.dispatch("setOption",{name:"interfaceLanguage",value:e}),window.addEventListener("resize",this.updateMobileState)},unmounted:function(){window.removeEventListener("resize",this.updateMobileState)},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ta(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ta(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({classes:function(){return[{"-reverse":this.reverseLayout,"-no-sticky-headers":this.noSticky,"-has-new-post-button":this.newPostButtonShown},"-"+this.layoutType]},currentUser:function(){return this.$store.state.users.currentUser},userBackground:function(){return this.currentUser.background_image},instanceBackground:function(){return this.mergedConfig.hideInstanceWallpaper?null:this.$store.state.instance.background},background:function(){return this.userBackground||this.instanceBackground},bgStyle:function(){if(this.background)return{"--body-background-image":"url(".concat(this.background,")")}},shout:function(){return this.$store.state.shout.joined},suggestionsEnabled:function(){return this.$store.state.instance.suggestionsEnabled},showInstanceSpecificPanel:function(){return this.$store.state.instance.showInstanceSpecificPanel&&!this.$store.getters.mergedConfig.hideISP&&this.$store.state.instance.instanceSpecificPanelContent},isChats:function(){return"chat"===this.$route.name||"chats"===this.$route.name},newPostButtonShown:function(){return!this.isChats&&(this.$store.getters.mergedConfig.alwaysShowNewPostButton||"mobile"===this.layoutType)},showFeaturesPanel:function(){return this.$store.state.instance.showFeaturesPanel},shoutboxPosition:function(){return this.$store.getters.mergedConfig.alwaysShowNewPostButton||!1},hideShoutbox:function(){return this.$store.getters.mergedConfig.hideShoutbox},layoutType:function(){return this.$store.state.interface.layoutType},privateMode:function(){return this.$store.state.instance.private},reverseLayout:function(){var e=this.$store.getters.mergedConfig,t=e.thirdColumnMode,n=e.sidebarRight;return"wide"!==this.layoutType||"notifications"===t?n:!n},noSticky:function(){return this.$store.getters.mergedConfig.disableStickyHeaders},showScrollbars:function(){return this.$store.getters.mergedConfig.showScrollbars}},Object(a.c)(["mergedConfig"])),methods:{updateMobileState:function(){this.$store.dispatch("setLayoutWidth",Ce()),this.$store.dispatch("setLayoutHeight",Pe())}}};n(566);var ra=Fn()(na,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("MobileNav"),a=Object(wt.J)("DesktopNav"),c=Object(wt.J)("Notifications"),l=Object(wt.J)("user-panel"),u=Object(wt.J)("nav-panel"),d=Object(wt.J)("instance-specific-panel"),p=Object(wt.J)("features-panel"),h=Object(wt.J)("who-to-follow-panel"),b=Object(wt.J)("router-link"),m=Object(wt.J)("router-view"),f=Object(wt.J)("media-modal"),O=Object(wt.J)("shout-panel"),j=Object(wt.J)("MobilePostStatusButton"),g=Object(wt.J)("UserReportingModal"),v=Object(wt.J)("PostStatusModal"),y=Object(wt.J)("SettingsModal"),w=Object(wt.J)("GlobalNoticeList");return Object(wt.D)(),Object(wt.j)("div",{id:"app-loaded",style:Object(wt.x)(e.bgStyle)},[an,"mobile"===e.layoutType?(Object(wt.D)(),Object(wt.h)(s,{key:0})):(Object(wt.D)(),Object(wt.h)(a,{key:1})),e.currentUser?(Object(wt.D)(),Object(wt.h)(c,{key:2})):Object(wt.i)("",!0),Object(wt.k)("div",{id:"content",class:Object(wt.w)(["app-layout container",e.classes])},[cn,Object(wt.k)("div",{id:"sidebar",class:Object(wt.w)(["column -scrollable",{"-show-scrollbar":e.showScrollbars}])},[Object(wt.m)(l),"mobile"!==e.layoutType?(Object(wt.D)(),Object(wt.j)(wt.a,{key:0},[Object(wt.m)(u),e.showInstanceSpecificPanel?(Object(wt.D)(),Object(wt.h)(d,{key:0})):Object(wt.i)("",!0),!e.currentUser&&e.showFeaturesPanel?(Object(wt.D)(),Object(wt.h)(p,{key:1})):Object(wt.i)("",!0),e.currentUser&&e.suggestionsEnabled?(Object(wt.D)(),Object(wt.h)(h,{key:2})):Object(wt.i)("",!0),ln],64)):Object(wt.i)("",!0)],2),Object(wt.k)("div",{id:"main-scroller",class:Object(wt.w)(["column main",{"-full-height":e.isChats}])},[e.currentUser?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("div",un,[Object(wt.m)(b,{to:{name:"login"},class:"panel-body"},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.$t("login.hint")),1)]),_:1})])),Object(wt.m)(m)],2),Object(wt.k)("div",{id:"notifs-column",class:Object(wt.w)(["column -scrollable",{"-show-scrollbar":e.showScrollbars}])},null,2)],2),Object(wt.m)(f),e.currentUser&&e.shout&&!e.hideShoutbox?(Object(wt.D)(),Object(wt.h)(O,{key:3,floating:!0,class:Object(wt.w)(["floating-shout mobile-hidden",{"-left":e.shoutboxPosition}])},null,8,["class"])):Object(wt.i)("",!0),Object(wt.m)(j),Object(wt.m)(g),Object(wt.m)(v),Object(wt.m)(y),dn,Object(wt.m)(w)],4)}]]);const ia={ref:"timeline",class:"timeline"},oa={key:0,class:"new-status-notification text-center faint"},sa={key:1,class:"new-status-notification text-center faint"},aa={class:"new-status-notification text-center"},ca={key:3,class:"new-status-notification text-center"};var la=n(331),ua=n.n(la),da=n(102),pa=n.n(da);const ha={key:0,class:"panel-heading conversation-heading -sticky"},ba={class:"title"},ma={class:"conversation-body panel-body"},fa={key:0,class:"thread-body"},Oa={key:0,class:"conversation-dive-to-top-level-box"},ja={key:1,class:"thread-ancestors"},ga={key:0,class:"thread-ancestor-dive-box"},va={class:"thread-ancestor-dive-box-inner"},ya={key:1,class:"thread-body"};var wa=n(332),ka=n.n(wa);const _a={class:"thread-tree"},Sa={key:0,class:"thread-tree-replies"},Ca={key:1,class:"thread-tree-replies thread-tree-replies-hidden"};Tn.c.add(In.c,In.e);var Pa={components:{Status:Ns.default},name:"ThreadTree",props:{depth:Number,status:Object,inProfile:Boolean,conversation:Array,collapsable:Boolean,isExpanded:Boolean,pinnedStatusIdsObject:Object,profileUserId:String,focused:Function,highlight:String,getReplies:Function,setHighlight:Function,toggleExpanded:Function,simple:Boolean,toggleThreadDisplay:Function,threadDisplayStatus:Object,showThreadRecursively:Function,totalReplyCount:Object,totalReplyDepth:Object,statusContentProperties:Object,setStatusContentProperty:Function,toggleStatusContentProperty:Function,dive:Function},computed:{suspendable:function(){var e=!this.$refs.statusComponent||this.$refs.statusComponent.suspendable;return this.$refs.childComponent?e&&this.$refs.childComponent.every((function(e){return e.suspendable})):e},reverseLookupTable:function(){return this.conversation.reduce((function(e,t,n){return e[t.id]=n,e}),{})},currentReplies:function(){var e=this;return this.getReplies(this.status.id).map((function(t){var n=t.id;return e.statusById(n)}))},threadShowing:function(){return"showing"===this.threadDisplayStatus[this.status.id]},currentProp:function(){return this.statusContentProperties[this.status.id]}},methods:{statusById:function(e){return this.conversation[this.reverseLookupTable[e]]},collapseThread:function(){},showThread:function(){},showAllSubthreads:function(){},toggleCurrentProp:function(e){this.toggleStatusContentProperty(this.status.id,e)},setCurrentProp:function(e,t){this.setStatusContentProperty(this.status.id,e)}}};n(569);var xa=Fn()(Pa,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("status"),a=Object(wt.J)("thread-tree"),c=Object(wt.J)("FAIcon"),l=Object(wt.J)("i18n-t");return Object(wt.D)(),Object(wt.j)("div",_a,[(Object(wt.D)(),Object(wt.h)(s,{key:e.status.id,ref:"statusComponent","inline-expanded":e.collapsable&&e.isExpanded,statusoid:e.status,expandable:!e.isExpanded,"show-pinned":e.pinnedStatusIdsObject&&e.pinnedStatusIdsObject[e.status.id],focused:e.focused(e.status.id),"in-conversation":e.isExpanded,highlight:e.highlight,replies:e.getReplies(e.status.id),"in-profile":e.inProfile,"profile-user-id":e.profileUserId,class:"conversation-status conversation-status-treeview status-fadein panel-body","simple-tree":e.simple,"controlled-thread-display-status":e.threadDisplayStatus[e.status.id],"controlled-toggle-thread-display":()=>e.toggleThreadDisplay(e.status.id),"controlled-showing-tall":e.currentProp.showingTall,"controlled-expanding-subject":e.currentProp.expandingSubject,"controlled-showing-long-subject":e.currentProp.showingLongSubject,"controlled-replying":e.currentProp.replying,"controlled-media-playing":e.currentProp.mediaPlaying,"controlled-toggle-showing-tall":()=>e.toggleCurrentProp("showingTall"),"controlled-toggle-expanding-subject":()=>e.toggleCurrentProp("expandingSubject"),"controlled-toggle-showing-long-subject":()=>e.toggleCurrentProp("showingLongSubject"),"controlled-toggle-replying":()=>e.toggleCurrentProp("replying"),"controlled-set-media-playing":t=>e.setCurrentProp("mediaPlaying",t),dive:e.dive?()=>e.dive(e.status.id):void 0,onGoto:e.setHighlight,onToggleExpanded:e.toggleExpanded},null,8,["inline-expanded","statusoid","expandable","show-pinned","focused","in-conversation","highlight","replies","in-profile","profile-user-id","simple-tree","controlled-thread-display-status","controlled-toggle-thread-display","controlled-showing-tall","controlled-expanding-subject","controlled-showing-long-subject","controlled-replying","controlled-media-playing","controlled-toggle-showing-tall","controlled-toggle-expanding-subject","controlled-toggle-showing-long-subject","controlled-toggle-replying","controlled-set-media-playing","dive","onGoto","onToggleExpanded"])),e.currentReplies.length&&e.threadShowing?(Object(wt.D)(),Object(wt.j)("div",Sa,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.currentReplies,t=>(Object(wt.D)(),Object(wt.h)(a,{key:t.id,ref_for:!0,ref:"childComponent",depth:e.depth+1,status:t,"in-profile":e.inProfile,conversation:e.conversation,collapsable:e.collapsable,"is-expanded":e.isExpanded,"pinned-status-ids-object":e.pinnedStatusIdsObject,"profile-user-id":e.profileUserId,focused:e.focused,"get-replies":e.getReplies,highlight:e.highlight,"set-highlight":e.setHighlight,"toggle-expanded":e.toggleExpanded,simple:e.simple,"toggle-thread-display":e.toggleThreadDisplay,"thread-display-status":e.threadDisplayStatus,"show-thread-recursively":e.showThreadRecursively,"total-reply-count":e.totalReplyCount,"total-reply-depth":e.totalReplyDepth,"status-content-properties":e.statusContentProperties,"set-status-content-property":e.setStatusContentProperty,"toggle-status-content-property":e.toggleStatusContentProperty,dive:e.dive},null,8,["depth","status","in-profile","conversation","collapsable","is-expanded","pinned-status-ids-object","profile-user-id","focused","get-replies","highlight","set-highlight","toggle-expanded","simple","toggle-thread-display","thread-display-status","show-thread-recursively","total-reply-count","total-reply-depth","status-content-properties","set-status-content-property","toggle-status-content-property","dive"]))),128))])):Object(wt.i)("",!0),e.currentReplies.length&&!e.threadShowing?(Object(wt.D)(),Object(wt.j)("div",Ca,[e.simple?(Object(wt.D)(),Object(wt.h)(l,{key:0,scope:"global",tag:"button",keypath:"status.thread_follow_with_icon",class:"button-unstyled -link thread-tree-show-replies-button",onClick:t[0]||(t[0]=Object(wt.Y)(t=>e.dive(e.status.id),["prevent"]))},{icon:Object(wt.V)(()=>[Object(wt.m)(c,{icon:"angle-double-right"})]),text:Object(wt.V)(()=>[Object(wt.k)("span",null,Object(wt.O)(e.$tc("status.thread_follow",e.totalReplyCount[e.status.id],{numStatus:e.totalReplyCount[e.status.id]})),1)]),_:1})):(Object(wt.D)(),Object(wt.h)(l,{key:1,scope:"global",tag:"button",keypath:"status.thread_show_full_with_icon",class:"button-unstyled -link thread-tree-show-replies-button",onClick:t[1]||(t[1]=Object(wt.Y)(t=>e.showThreadRecursively(e.status.id),["prevent"]))},{icon:Object(wt.V)(()=>[Object(wt.m)(c,{icon:"angle-double-down"})]),text:Object(wt.V)(()=>[Object(wt.k)("span",null,Object(wt.O)(e.$tc("status.thread_show_full",e.totalReplyCount[e.status.id],{numStatus:e.totalReplyCount[e.status.id],depth:e.totalReplyDepth[e.status.id]})),1)]),_:1}))])):Object(wt.i)("",!0)])}]]);function Da(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ta(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Da(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Da(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.c,In.d,In.o);var Ia=function(e,t){var n="retweet"===e.type?e.retweeted_status.id:e.id,r="retweet"===t.type?t.retweeted_status.id:t.id,i=Number(n),o=Number(r),s=!Number.isNaN(i),a=!Number.isNaN(o);return s&&a?i<o?-1:1:s&&!a?-1:!s&&a?1:n<r?-1:1},$a={data:function(){return{highlight:null,expanded:!1,threadDisplayStatusObject:{},statusContentPropertiesObject:{},inlineDivePosition:null}},props:["statusId","collapsable","isPage","pinnedStatusIdsObject","inProfile","profileUserId","virtualHidden"],created:function(){this.isPage&&this.fetchConversation()},computed:{maxDepthToShowByDefault:function(){var e=this.$store.getters.mergedConfig.maxDepthInThread-2;return e>=1?e:1},displayStyle:function(){return this.$store.getters.mergedConfig.conversationDisplay},isTreeView:function(){return!this.isLinearView},treeViewIsSimple:function(){return!this.$store.getters.mergedConfig.conversationTreeAdvanced},isLinearView:function(){return"linear"===this.displayStyle},shouldFadeAncestors:function(){return this.$store.getters.mergedConfig.conversationTreeFadeAncestors},otherRepliesButtonPosition:function(){return this.$store.getters.mergedConfig.conversationOtherRepliesButton},showOtherRepliesButtonBelowStatus:function(){return"below"===this.otherRepliesButtonPosition},showOtherRepliesButtonInsideStatus:function(){return"inside"===this.otherRepliesButtonPosition},suspendable:function(){return this.isTreeView?Object.entries(this.statusContentProperties).every((function(e){var t=m()(e,2),n=(t[0],t[1]);return!n.replying&&0===n.mediaPlaying.length})):!this.$refs.statusComponent||!this.$refs.statusComponent[0]||this.$refs.statusComponent.every((function(e){return e.suspendable}))},hideStatus:function(){return this.virtualHidden&&this.suspendable},status:function(){return this.$store.state.statuses.allStatusesObject[this.statusId]},originalStatusId:function(){return this.status.retweeted_status?this.status.retweeted_status.id:this.statusId},conversationId:function(){return this.getConversationId(this.statusId)},conversation:function(){if(!this.status)return[];if(!this.isExpanded)return[this.status];var e=ka()(this.$store.state.statuses.conversationsObject[this.conversationId]),t=A()(e,{id:this.originalStatusId});return-1!==t&&(e[t]=this.status),function(e,t){return(e="retweet"===t.type?bt()(e,(function(e){return"retweet"===e.type||e.id!==t.retweeted_status.id})):bt()(e,(function(e){return"retweet"!==e.type}))).filter((function(e){return e})).sort(Ia)}(e,this.status)},statusMap:function(){return this.conversation.reduce((function(e,t){return e[t.id]=t,e}),{})},threadTree:function(){var e=this,t=this.conversation.reduce((function(e,t,n){return e[t.id]=n,e}),{});return function n(r,i){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return i.map((function(i){return s[i]?[]:(s[i]=!0,[{status:e.conversation[t[i]],id:i,depth:o},n(r,r[i],o+1,s)].reduce((function(e,t){return e.concat(t)}),[]))})).reduce((function(e,t){return e.concat(t)}),[])}(this.conversation.reduce((function(t,n){var r=n.id;return t.forest[r]=e.getReplies(r).map((function(e){return e.id})),t}),{forest:{}}).forest,this.topLevel.map((function(e){return e.id})))},replyIds:function(){var e=this;return this.conversation.map((function(e){return e.id})).reduce((function(t,n){return t[n]=(e.replies[n]||[]).map((function(e){return e.id})),t}),{})},totalReplyCount:function(){var e=this,t={};return this.conversation.map((function(e){return e.id})).map((function n(r){return t[r]||(t[r]=1+e.replyIds[r].map((function(e){return n(e)})).reduce((function(e,t){return e+t}),0)),t[r]})),Object.keys(t).reduce((function(e,n){return e[n]=t[n]-1,e}),{})},totalReplyDepth:function(){var e=this,t={};return this.conversation.map((function(e){return e.id})).map((function n(r){return t[r]||(t[r]=1+e.replyIds[r].map((function(e){return n(e)})).reduce((function(e,t){return e>t?e:t}),0)),t[r]})),Object.keys(t).reduce((function(e,n){return e[n]=t[n]-1,e}),{})},depths:function(){return this.threadTree.reduce((function(e,t){return e[t.id]=t.depth,e}),{})},topLevel:function(){var e=this,t=this.conversation.reduce((function(t,n){return t.filter((function(t){return-1===e.getReplies(n.id).map((function(e){return e.id})).indexOf(t.id)}))}),this.conversation);return t},otherTopLevelCount:function(){return this.topLevel.length-1},showingTopLevel:function(){return this.canDive&&this.diveRoot?[this.statusMap[this.diveRoot]]:this.topLevel},diveRoot:function(){var e=this.inlineDivePosition||this.statusId;return!this.parentOf(e)?null:e},diveDepth:function(){return this.canDive&&this.diveRoot?this.depths[this.diveRoot]:0},diveMode:function(){return this.canDive&&!!this.diveRoot},shouldShowAllConversationButton:function(){return this.isTreeView&&this.isExpanded&&this.diveMode&&this.topLevel.length>1},shouldShowAncestors:function(){return this.isTreeView&&this.isExpanded&&this.ancestorsOf(this.diveRoot).length},replies:function(){var e=1;return De()(this.conversation,(function(t,n){var r=n.id,i=n.in_reply_to_status_id;return i&&(t[i]=t[i]||[],t[i].push({name:"#".concat(e),id:r})),e++,t}),{})},isExpanded:function(){return!(!this.expanded&&!this.isPage)},hiddenStyle:function(){var e=this.status&&this.status.virtualHeight||"120px";return this.virtualHidden?{height:e}:{}},threadDisplayStatus:function(){var e=this;return this.conversation.reduce((function(t,n){var r=n.id,i=e.depths[r],o=e.threadDisplayStatusObject[r]?e.threadDisplayStatusObject[r]:i-e.diveDepth<=e.maxDepthToShowByDefault?"showing":"hidden";return t[r]=o,t}),{})},statusContentProperties:function(){var e=this;return this.conversation.reduce((function(t,n){var r,i=n.id,o=(r={showingTall:!1,expandingSubject:!1,showingLongSubject:!1,isReplying:!1,mediaPlaying:[]},e.statusContentPropertiesObject[i]?Ta(Ta({},r),e.statusContentPropertiesObject[i]):r);return t[i]=o,t}),{})},canDive:function(){return this.isTreeView&&this.isExpanded},focused:function(){var e=this;return function(t){return e.isExpanded&&t===e.highlight}},maybeHighlight:function(){return this.isExpanded?this.highlight:null}},components:{Status:Ns.default,ThreadTree:xa},watch:{statusId:function(e,t){var n=this.getConversationId(e),r=this.getConversationId(t);n&&r&&n===r?this.setHighlight(this.originalStatusId):this.fetchConversation()},expanded:function(e){e?this.fetchConversation():this.resetDisplayState()},virtualHidden:function(e){this.$store.dispatch("setVirtualHeight",{statusId:this.statusId,height:"".concat(this.$el.clientHeight,"px")})}},methods:{fetchConversation:function(){var e=this;this.status?this.$store.state.api.backendInteractor.fetchConversation({id:this.statusId}).then((function(t){var n=t.ancestors,r=t.descendants;e.$store.dispatch("addNewStatuses",{statuses:n}),e.$store.dispatch("addNewStatuses",{statuses:r}),e.setHighlight(e.originalStatusId)})):this.$store.state.api.backendInteractor.fetchStatus({id:this.statusId}).then((function(t){e.$store.dispatch("addNewStatuses",{statuses:[t]}),e.fetchConversation()}))},getReplies:function(e){return this.replies[e]||[]},getHighlight:function(){return this.isExpanded?this.highlight:null},setHighlight:function(e){e&&(this.highlight=e,this.$store.dispatch("fetchFavsAndRepeats",e),this.$store.dispatch("fetchEmojiReactionsBy",e))},toggleExpanded:function(){this.expanded=!this.expanded},getConversationId:function(e){var t=this.$store.state.statuses.allStatusesObject[e];return qt()(t,"retweeted_status.statusnet_conversation_id",qt()(t,"statusnet_conversation_id"))},setThreadDisplay:function(e,t){this.threadDisplayStatusObject=Ta(Ta({},this.threadDisplayStatusObject),{},h()({},e,t))},toggleThreadDisplay:function(e){var t="showing"===this.threadDisplayStatus[e]?"hidden":"showing";this.setThreadDisplay(e,t)},setThreadDisplayRecursively:function(e,t){var n=this;this.setThreadDisplay(e,t),this.getReplies(e).map((function(e){return e.id})).map((function(e){return n.setThreadDisplayRecursively(e,t)}))},showThreadRecursively:function(e){this.setThreadDisplayRecursively(e,"showing")},setStatusContentProperty:function(e,t,n){this.statusContentPropertiesObject=Ta(Ta({},this.statusContentPropertiesObject),{},h()({},e,Ta(Ta({},this.statusContentPropertiesObject[e]),{},h()({},t,n))))},toggleStatusContentProperty:function(e,t){this.setStatusContentProperty(e,t,!this.statusContentProperties[e][t])},leastVisibleAncestor:function(e){for(var t=e,n=this.parentOf(t);t;){if("showing"===this.threadDisplayStatus[n])return t;n=this.parentOf(n),t=this.parentOf(t)}return this.topLevel[0]?this.topLevel[0].id:void 0},diveIntoStatus:function(e,t){this.tryScrollTo(e)},diveToTopLevel:function(){this.tryScrollTo(this.topLevelAncestorOrSelfId(this.diveRoot)||this.topLevel[0].id)},undive:function(){this.inlineDivePosition=null,this.setHighlight(this.statusId)},tryScrollTo:function(e){var t=this;e&&(this.isPage?this.$router.push({name:"conversation",params:{id:e}}):this.inlineDivePosition=e,this.$nextTick((function(){t.setHighlight(e)})))},goToCurrent:function(){this.tryScrollTo(this.diveRoot||this.topLevel[0].id)},statusById:function(e){return this.statusMap[e]},parentOf:function(e){var t=this.statusById(e);if(t){var n=t.in_reply_to_status_id;if(this.statusMap[n])return n}},parentOrSelf:function(e){return this.parentOf(e)||e},ancestorsOf:function(e){for(var t=[],n=this.parentOf(e);n;)t.unshift(this.statusMap[n]),n=this.parentOf(n);return t},topLevelAncestorOrSelfId:function(e){for(var t=e,n=this.parentOf(e);n;)t=this.parentOf(t),n=this.parentOf(n);return t},resetDisplayState:function(){this.undive(),this.threadDisplayStatusObject={}}}};n(570);var za=Fn()($a,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("i18n-t"),c=Object(wt.J)("status"),l=Object(wt.J)("thread-tree");return e.hideStatus?(Object(wt.D)(),Object(wt.j)("div",{key:1,style:Object(wt.x)(e.hiddenStyle)},null,4)):(Object(wt.D)(),Object(wt.j)("div",{key:0,style:Object(wt.x)(e.hiddenStyle),class:Object(wt.w)(["Conversation",{"-expanded":e.isExpanded,panel:e.isExpanded}])},[e.isExpanded?(Object(wt.D)(),Object(wt.j)("div",ha,[Object(wt.k)("span",ba,Object(wt.O)(e.$t("timeline.conversation")),1),e.collapsable?(Object(wt.D)(),Object(wt.j)("button",{key:0,class:"button-unstyled -link",onClick:t[0]||(t[0]=Object(wt.Y)((...t)=>e.toggleExpanded&&e.toggleExpanded(...t),["prevent"]))},Object(wt.O)(e.$t("timeline.collapse")),1)):Object(wt.i)("",!0)])):Object(wt.i)("",!0),Object(wt.k)("div",ma,[e.isTreeView?(Object(wt.D)(),Object(wt.j)("div",fa,[e.shouldShowAllConversationButton?(Object(wt.D)(),Object(wt.j)("div",Oa,[Object(wt.m)(a,{keypath:"status.show_all_conversation_with_icon",tag:"button",class:"button-unstyled -link",onClick:Object(wt.Y)(e.diveToTopLevel,["prevent"]),scope:"global"},{icon:Object(wt.V)(()=>[Object(wt.m)(s,{icon:"angle-double-left"})]),text:Object(wt.V)(()=>[Object(wt.k)("span",null,Object(wt.O)(e.$tc("status.show_all_conversation",e.otherTopLevelCount,{numStatus:e.otherTopLevelCount})),1)]),_:1},8,["onClick"])])):Object(wt.i)("",!0),e.shouldShowAncestors?(Object(wt.D)(),Object(wt.j)("div",ja,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.ancestorsOf(e.diveRoot),t=>(Object(wt.D)(),Object(wt.j)("div",{key:t.id,class:Object(wt.w)(["thread-ancestor",{"thread-ancestor-has-other-replies":e.getReplies(t.id).length>1,"-faded":e.shouldFadeAncestors}])},[Object(wt.m)(c,{ref_for:!0,ref:"statusComponent","inline-expanded":e.collapsable&&e.isExpanded,statusoid:t,expandable:!e.isExpanded,"show-pinned":e.pinnedStatusIdsObject&&e.pinnedStatusIdsObject[t.id],focused:e.focused(t.id),"in-conversation":e.isExpanded,highlight:e.getHighlight(),replies:e.getReplies(t.id),"in-profile":e.inProfile,"profile-user-id":e.profileUserId,class:"conversation-status status-fadein panel-body","simple-tree":e.treeViewIsSimple,"toggle-thread-display":e.toggleThreadDisplay,"thread-display-status":e.threadDisplayStatus,"show-thread-recursively":e.showThreadRecursively,"total-reply-count":e.totalReplyCount,"total-reply-depth":e.totalReplyDepth,"show-other-replies-as-button":e.showOtherRepliesButtonInsideStatus,dive:()=>e.diveIntoStatus(t.id),"controlled-showing-tall":e.statusContentProperties[t.id].showingTall,"controlled-expanding-subject":e.statusContentProperties[t.id].expandingSubject,"controlled-showing-long-subject":e.statusContentProperties[t.id].showingLongSubject,"controlled-replying":e.statusContentProperties[t.id].replying,"controlled-media-playing":e.statusContentProperties[t.id].mediaPlaying,"controlled-toggle-showing-tall":()=>e.toggleStatusContentProperty(t.id,"showingTall"),"controlled-toggle-expanding-subject":()=>e.toggleStatusContentProperty(t.id,"expandingSubject"),"controlled-toggle-showing-long-subject":()=>e.toggleStatusContentProperty(t.id,"showingLongSubject"),"controlled-toggle-replying":()=>e.toggleStatusContentProperty(t.id,"replying"),"controlled-set-media-playing":n=>e.toggleStatusContentProperty(t.id,"mediaPlaying",n),onGoto:e.setHighlight,onToggleExpanded:e.toggleExpanded},null,8,["inline-expanded","statusoid","expandable","show-pinned","focused","in-conversation","highlight","replies","in-profile","profile-user-id","simple-tree","toggle-thread-display","thread-display-status","show-thread-recursively","total-reply-count","total-reply-depth","show-other-replies-as-button","dive","controlled-showing-tall","controlled-expanding-subject","controlled-showing-long-subject","controlled-replying","controlled-media-playing","controlled-toggle-showing-tall","controlled-toggle-expanding-subject","controlled-toggle-showing-long-subject","controlled-toggle-replying","controlled-set-media-playing","onGoto","onToggleExpanded"]),e.showOtherRepliesButtonBelowStatus&&e.getReplies(t.id).length>1?(Object(wt.D)(),Object(wt.j)("div",ga,[Object(wt.k)("div",va,[Object(wt.m)(a,{tag:"button",scope:"global",keypath:"status.ancestor_follow_with_icon",class:"button-unstyled -link thread-tree-show-replies-button",onClick:Object(wt.Y)(n=>e.diveIntoStatus(t.id),["prevent"])},{icon:Object(wt.V)(()=>[Object(wt.m)(s,{icon:"angle-double-right"})]),text:Object(wt.V)(()=>[Object(wt.k)("span",null,Object(wt.O)(e.$tc("status.ancestor_follow",e.getReplies(t.id).length-1,{numReplies:e.getReplies(t.id).length-1})),1)]),_:2},1032,["onClick"])])])):Object(wt.i)("",!0)],2))),128))])):Object(wt.i)("",!0),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.showingTopLevel,t=>(Object(wt.D)(),Object(wt.h)(l,{key:t.id,ref_for:!0,ref:"statusComponent",depth:0,status:t,"in-profile":e.inProfile,conversation:e.conversation,collapsable:e.collapsable,"is-expanded":e.isExpanded,"pinned-status-ids-object":e.pinnedStatusIdsObject,"profile-user-id":e.profileUserId,focused:e.focused,"get-replies":e.getReplies,highlight:e.maybeHighlight,"set-highlight":e.setHighlight,"toggle-expanded":e.toggleExpanded,simple:e.treeViewIsSimple,"toggle-thread-display":e.toggleThreadDisplay,"thread-display-status":e.threadDisplayStatus,"show-thread-recursively":e.showThreadRecursively,"total-reply-count":e.totalReplyCount,"total-reply-depth":e.totalReplyDepth,"status-content-properties":e.statusContentProperties,"set-status-content-property":e.setStatusContentProperty,"toggle-status-content-property":e.toggleStatusContentProperty,dive:e.canDive?e.diveIntoStatus:void 0},null,8,["status","in-profile","conversation","collapsable","is-expanded","pinned-status-ids-object","profile-user-id","focused","get-replies","highlight","set-highlight","toggle-expanded","simple","toggle-thread-display","thread-display-status","show-thread-recursively","total-reply-count","total-reply-depth","status-content-properties","set-status-content-property","toggle-status-content-property","dive"]))),128))])):Object(wt.i)("",!0),e.isLinearView?(Object(wt.D)(),Object(wt.j)("div",ya,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.conversation,t=>(Object(wt.D)(),Object(wt.h)(c,{key:t.id,ref_for:!0,ref:"statusComponent","inline-expanded":e.collapsable&&e.isExpanded,statusoid:t,expandable:!e.isExpanded,"show-pinned":e.pinnedStatusIdsObject&&e.pinnedStatusIdsObject[t.id],focused:e.focused(t.id),"in-conversation":e.isExpanded,highlight:e.getHighlight(),replies:e.getReplies(t.id),"in-profile":e.inProfile,"profile-user-id":e.profileUserId,class:"conversation-status status-fadein panel-body","toggle-thread-display":e.toggleThreadDisplay,"thread-display-status":e.threadDisplayStatus,"show-thread-recursively":e.showThreadRecursively,"total-reply-count":e.totalReplyCount,"total-reply-depth":e.totalReplyDepth,"status-content-properties":e.statusContentProperties,"set-status-content-property":e.setStatusContentProperty,"toggle-status-content-property":e.toggleStatusContentProperty,onGoto:e.setHighlight,onToggleExpanded:e.toggleExpanded},null,8,["inline-expanded","statusoid","expandable","show-pinned","focused","in-conversation","highlight","replies","in-profile","profile-user-id","toggle-thread-display","thread-display-status","show-thread-recursively","total-reply-count","total-reply-depth","status-content-properties","set-status-content-property","toggle-status-content-property","onGoto","onToggleExpanded"]))),128))])):Object(wt.i)("",!0)])],6))}]]);const Ma={class:"timeline-menu-popover popover-default"},Ua={class:"button-unstyled title timeline-menu-title"},Fa={class:"timeline-title"};Tn.c.add(In.n);var Ea={components:{Popover:co.default,TimelineMenuContent:Lr},data:function(){return{isOpen:!1}},created:function(){({friends:"nav.home_timeline",bookmarks:"nav.bookmarks",dms:"nav.dms","public-timeline":"nav.public_tl","public-external-timeline":"nav.twkn"})[this.$route.name]&&this.$store.dispatch("setLastTimeline",this.$route.name)},methods:{openMenu:function(){var e=this;setTimeout((function(){e.isOpen=!0}),25)},blockOpen:function(e){this.isOpen||e.stopPropagation()},timelineName:function(){var e=this.$route.name;if("tag-timeline"===e)return"#"+this.$route.params.tag;var t={friends:"nav.home_timeline",bookmarks:"nav.bookmarks",dms:"nav.dms","public-timeline":"nav.public_tl","public-external-timeline":"nav.twkn"}[this.$route.name];return t?this.$t(t):e}}};n(571);var La=Fn()(Ea,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("TimelineMenuContent"),a=Object(wt.J)("FAIcon"),c=Object(wt.J)("Popover");return Object(wt.D)(),Object(wt.h)(c,{trigger:"click",class:Object(wt.w)(["TimelineMenu",{open:e.isOpen}]),margin:{left:-15,right:-200},"bound-to":{x:"container"},"popover-class":"timeline-menu-popover-wrap",onShow:e.openMenu,onClose:t[1]||(t[1]=()=>e.isOpen=!1)},{content:Object(wt.V)(()=>[Object(wt.k)("div",Ma,[Object(wt.m)(s)])]),trigger:Object(wt.V)(()=>[Object(wt.k)("button",Ua,[Object(wt.k)("span",Fa,Object(wt.O)(e.timelineName()),1),Object(wt.k)("span",null,[Object(wt.m)(a,{size:"sm",icon:"chevron-down"})]),Object(wt.k)("span",{class:"click-blocker",onClick:t[0]||(t[0]=(...t)=>e.blockOpen&&e.blockOpen(...t))})])]),_:1},8,["class","onShow"])}]]);const Ra={class:"dropdown-menu"},Aa={key:0},Na=Object(wt.k)("div",{role:"separator",class:"dropdown-divider"},null,-1),Ba={class:"button-unstyled"};function Va(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ha(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Va(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Va(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.G,In.H,In.yb);var qa={components:{Popover:co.default},methods:{setReplyVisibility:function(e){this.$store.dispatch("setOption",{name:"replyVisibility",value:e}),this.$store.dispatch("queueFlushAll")},openTab:function(e){this.$store.dispatch("openSettingsModalTab",e)}},computed:Ha(Ha({},Object(a.c)(["mergedConfig"])),{},{loggedIn:function(){return!!this.$store.state.users.currentUser},replyVisibilitySelf:{get:function(){return"self"===this.mergedConfig.replyVisibility},set:function(){this.setReplyVisibility("self")}},replyVisibilityFollowing:{get:function(){return"following"===this.mergedConfig.replyVisibility},set:function(){this.setReplyVisibility("following")}},replyVisibilityAll:{get:function(){return"all"===this.mergedConfig.replyVisibility},set:function(){this.setReplyVisibility("all")}},hideMedia:{get:function(){return this.mergedConfig.hideAttachments||this.mergedConfig.hideAttachmentsInConv},set:function(){var e=!this.hideMedia;this.$store.dispatch("setOption",{name:"hideAttachments",value:e}),this.$store.dispatch("setOption",{name:"hideAttachmentsInConv",value:e})}},hideMutedPosts:{get:function(){return this.mergedConfig.hideFilteredStatuses},set:function(){var e=!this.hideMutedPosts;this.$store.dispatch("setOption",{name:"hideFilteredStatuses",value:e})}},muteBotStatuses:{get:function(){return this.mergedConfig.muteBotStatuses},set:function(){var e=!this.muteBotStatuses;this.$store.dispatch("setOption",{name:"muteBotStatuses",value:e})}}})};n(572);var Ja=Fn()(qa,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("Popover");return Object(wt.D)(),Object(wt.h)(a,{trigger:"click",class:"TimelineQuickSettings","bound-to":{x:"container"}},{content:Object(wt.V)(()=>[Object(wt.k)("div",Ra,[e.loggedIn?(Object(wt.D)(),Object(wt.j)("div",Aa,[Object(wt.k)("button",{class:"button-default dropdown-item",onClick:t[0]||(t[0]=t=>e.replyVisibilityAll=!0)},[Object(wt.k)("span",{class:Object(wt.w)(["menu-checkbox -radio",{"menu-checkbox-checked":e.replyVisibilityAll}])},null,2),Object(wt.l)(Object(wt.O)(e.$t("settings.reply_visibility_all")),1)]),Object(wt.k)("button",{class:"button-default dropdown-item",onClick:t[1]||(t[1]=t=>e.replyVisibilityFollowing=!0)},[Object(wt.k)("span",{class:Object(wt.w)(["menu-checkbox -radio",{"menu-checkbox-checked":e.replyVisibilityFollowing}])},null,2),Object(wt.l)(Object(wt.O)(e.$t("settings.reply_visibility_following_short")),1)]),Object(wt.k)("button",{class:"button-default dropdown-item",onClick:t[2]||(t[2]=t=>e.replyVisibilitySelf=!0)},[Object(wt.k)("span",{class:Object(wt.w)(["menu-checkbox -radio",{"menu-checkbox-checked":e.replyVisibilitySelf}])},null,2),Object(wt.l)(Object(wt.O)(e.$t("settings.reply_visibility_self_short")),1)]),Na])):Object(wt.i)("",!0),Object(wt.k)("button",{class:"button-default dropdown-item",onClick:t[3]||(t[3]=t=>e.muteBotStatuses=!e.muteBotStatuses)},[Object(wt.k)("span",{class:Object(wt.w)(["menu-checkbox",{"menu-checkbox-checked":e.muteBotStatuses}])},null,2),Object(wt.l)(Object(wt.O)(e.$t("settings.mute_bot_posts")),1)]),Object(wt.k)("button",{class:"button-default dropdown-item",onClick:t[4]||(t[4]=t=>e.hideMedia=!e.hideMedia)},[Object(wt.k)("span",{class:Object(wt.w)(["menu-checkbox",{"menu-checkbox-checked":e.hideMedia}])},null,2),Object(wt.l)(Object(wt.O)(e.$t("settings.hide_media_previews")),1)]),Object(wt.k)("button",{class:"button-default dropdown-item",onClick:t[5]||(t[5]=t=>e.hideMutedPosts=!e.hideMutedPosts)},[Object(wt.k)("span",{class:Object(wt.w)(["menu-checkbox",{"menu-checkbox-checked":e.hideMutedPosts}])},null,2),Object(wt.l)(Object(wt.O)(e.$t("settings.hide_all_muted_posts")),1)]),Object(wt.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:t[6]||(t[6]=t=>e.openTab("filtering"))},[Object(wt.m)(s,{icon:"font"}),Object(wt.l)(Object(wt.O)(e.$t("settings.word_filter")),1)]),Object(wt.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:t[7]||(t[7]=t=>e.openTab("general"))},[Object(wt.m)(s,{icon:"wrench"}),Object(wt.l)(Object(wt.O)(e.$t("settings.more_settings")),1)])])]),trigger:Object(wt.V)(()=>[Object(wt.k)("button",Ba,[Object(wt.m)(s,{icon:"filter"})])]),_:1})}]]);Tn.c.add(In.r,In.s);var Wa={props:["timeline","timelineName","title","userId","tag","embedded","count","pinnedStatusIds","inProfile","footerSlipgate"],data:function(){return{paused:!1,unfocused:!1,bottomedOut:!1,virtualScrollIndex:0,blockingClicks:!1}},components:{Status:Ns.default,Conversation:za,TimelineMenu:La,TimelineQuickSettings:Ja},computed:{filteredVisibleStatuses:function(){var e=this;return this.timeline.visibleStatuses.filter((function(t){return"user"!==e.timelineName||t.id>=e.timeline.minId&&t.id<=e.timeline.maxId}))},filteredPinnedStatusIds:function(){var e=this;return(this.pinnedStatusIds||[]).filter((function(t){return e.timeline.statusesObject[t]}))},newStatusCount:function(){return this.timeline.newStatusCount},showLoadButton:function(){return this.timeline.newStatusCount>0||0!==this.timeline.flushMarker},loadButtonString:function(){return 0!==this.timeline.flushMarker?this.$t("timeline.reload"):"".concat(this.$t("timeline.show_new")," (").concat(this.newStatusCount,")")},classes:function(){var e=this.embedded?["-nonpanel"]:["panel","panel-default"];return this.blockingClicks&&(e=e.concat(["-blocked","_misclick-prevention"])),{root:e,header:["timeline-heading"].concat(this.embedded?[]:["panel-heading","-sticky"]),body:["timeline-body"].concat(this.embedded?[]:["panel-body"]),footer:["timeline-footer"].concat(this.embedded?[]:["panel-footer"])}},pinnedStatusIdsObject:function(){return ua()(this.pinnedStatusIds)},statusesToDisplay:function(){var e=this.timeline.visibleStatuses.length,t=Math.ceil(Math.max(3,window.innerHeight/80)),n=this.virtualScrollIndex-this.filteredPinnedStatusIds.length,r=Math.max(0,n-t),i=Math.min(e,n+t);return this.timeline.visibleStatuses.slice(r,i).map((function(e){return e.id}))},virtualScrollingEnabled:function(){return this.$store.getters.mergedConfig.virtualScrolling}},created:function(){var e=this.$store,t=e.state.users.currentUser.credentials,n=0===this.timeline.visibleStatuses.length;if(window.addEventListener("scroll",this.handleScroll),e.state.api.fetchers[this.timelineName])return!1;ve.fetchAndUpdate({store:e,credentials:t,timeline:this.timelineName,showImmediately:n,userId:this.userId,tag:this.tag})},mounted:function(){void 0!==document.hidden&&(document.addEventListener("visibilitychange",this.handleVisibilityChange,!1),this.unfocused=document.hidden),window.addEventListener("keydown",this.handleShortKey),setTimeout(this.determineVisibleStatuses,250)},unmounted:function(){window.removeEventListener("scroll",this.handleScroll),window.removeEventListener("keydown",this.handleShortKey),void 0!==document.hidden&&document.removeEventListener("visibilitychange",this.handleVisibilityChange,!1),this.$store.commit("setLoading",{timeline:this.timelineName,value:!1})},methods:{stopBlockingClicks:os()((function(){this.blockingClicks=!1}),1e3),blockClicksTemporarily:function(){this.blockingClicks||(this.blockingClicks=!0),this.stopBlockingClicks()},handleShortKey:function(e){["textarea","input"].includes(e.target.tagName.toLowerCase())||"."===e.key&&this.showNewStatuses()},showNewStatuses:function(){0!==this.timeline.flushMarker?(this.$store.commit("clearTimeline",{timeline:this.timelineName,excludeUserId:!0}),this.$store.commit("queueFlush",{timeline:this.timelineName,id:0}),this.fetchOlderStatuses()):(this.blockClicksTemporarily(),this.$store.commit("showNewStatuses",{timeline:this.timelineName}),this.paused=!1),window.scrollTo({top:0})},fetchOlderStatuses:pa()((function(){var e=this,t=this.$store,n=t.state.users.currentUser.credentials;t.commit("setLoading",{timeline:this.timelineName,value:!0}),ve.fetchAndUpdate({store:t,credentials:n,timeline:this.timelineName,older:!0,showImmediately:!0,userId:this.userId,tag:this.tag}).then((function(t){var n=t.statuses;n&&0===n.length&&(e.bottomedOut=!0)})).finally((function(){return t.commit("setLoading",{timeline:e.timelineName,value:!1})}))}),1e3,void 0),determineVisibleStatuses:function(){if(this.$refs.timeline&&this.virtualScrollingEnabled){var e=this.$refs.timeline.children,t=Math.max(0,Math.min(this.virtualScrollIndex,e.length-1));if(0!==e.length){var n=Math.max(document.body.offsetHeight,window.pageYOffset),r=window.pageYOffset+.5*window.innerHeight,i=Math.floor(e.length*(r/n)),o=e[i].getBoundingClientRect().y,s=e[t].getBoundingClientRect().y;for(Math.abs(o)>s&&(i=t,o=s);o<-20&&i<e.length-1;)o+=e[i].offsetHeight,i++;for(;o>window.innerHeight+100&&i>0;)o-=e[--i].offsetHeight;this.virtualScrollIndex=i}}},scrollLoad:function(e){var t=document.body.getBoundingClientRect(),n=Math.max(t.height,-t.y);!1===this.timeline.loading&&this.$el.offsetHeight>0&&window.innerHeight+window.pageYOffset>=n-750&&this.fetchOlderStatuses()},handleScroll:pa()((function(e){this.determineVisibleStatuses(),this.scrollLoad(e)}),200),handleVisibilityChange:function(){this.unfocused=document.hidden}},watch:{newStatusCount:function(e){if(this.$store.getters.mergedConfig.streaming&&e>0){var t=document.documentElement;!((window.pageYOffset||t.scrollTop)-(t.clientTop||0)<15)||this.paused||this.unfocused&&this.$store.getters.mergedConfig.pauseOnUnfocused?this.paused=!0:this.showNewStatuses()}}}};n(573);var Ya=Fn()(Wa,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("TimelineMenu"),a=Object(wt.J)("TimelineQuickSettings"),c=Object(wt.J)("conversation"),l=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",{class:Object(wt.w)(["Timeline",e.classes.root])},[Object(wt.k)("div",{class:Object(wt.w)(e.classes.header)},[e.embedded?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.h)(s,{key:0})),e.showLoadButton?(Object(wt.D)(),Object(wt.j)("button",{key:1,class:"button-default loadmore-button",onClick:t[0]||(t[0]=Object(wt.Y)((...t)=>e.showNewStatuses&&e.showNewStatuses(...t),["prevent"]))},Object(wt.O)(e.loadButtonString),1)):e.embedded?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("div",{key:2,class:"loadmore-text faint",onClick:t[1]||(t[1]=Object(wt.Y)(()=>{},["prevent"]))},Object(wt.O)(e.$t("timeline.up_to_date")),1)),e.embedded?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.h)(a,{key:3}))],2),Object(wt.k)("div",{class:Object(wt.w)(e.classes.body)},[Object(wt.k)("div",ia,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.filteredPinnedStatusIds,t=>(Object(wt.D)(),Object(wt.h)(c,{key:t+"-pinned",class:"status-fadein","status-id":t,collapsable:!0,"pinned-status-ids-object":e.pinnedStatusIdsObject,"in-profile":e.inProfile,"profile-user-id":e.userId},null,8,["status-id","pinned-status-ids-object","in-profile","profile-user-id"]))),128)),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.filteredVisibleStatuses,t=>(Object(wt.D)(),Object(wt.h)(c,{key:t.id,class:"status-fadein","status-id":t.id,collapsable:!0,"in-profile":e.inProfile,"profile-user-id":e.userId,"virtual-hidden":e.virtualScrollingEnabled&&!e.statusesToDisplay.includes(t.id)},null,8,["status-id","in-profile","profile-user-id","virtual-hidden"]))),128))],512)],2),Object(wt.k)("div",{class:Object(wt.w)(e.classes.footer)},[(Object(wt.D)(),Object(wt.h)(wt.c,{to:e.footerSlipgate,disabled:!e.embedded||!e.footerSlipgate},[0===e.count?(Object(wt.D)(),Object(wt.j)("div",oa,Object(wt.O)(e.$t("timeline.no_statuses")),1)):e.bottomedOut?(Object(wt.D)(),Object(wt.j)("div",sa,Object(wt.O)(e.$t("timeline.no_more_statuses")),1)):e.timeline.loading?(Object(wt.D)(),Object(wt.j)("div",ca,[Object(wt.m)(l,{icon:"circle-notch",spin:"",size:"lg"})])):(Object(wt.D)(),Object(wt.j)("button",{key:2,class:"button-unstyled -link",onClick:t[2]||(t[2]=Object(wt.Y)(t=>e.fetchOlderStatuses(),["prevent"]))},[Object(wt.k)("div",aa,Object(wt.O)(e.$t("timeline.load_older")),1)]))],8,["to","disabled"]))],2)],2)}]]),Ga={components:{Timeline:Ya},computed:{timeline:function(){return this.$store.state.statuses.timelines.public}},created:function(){this.$store.dispatch("startFetchingTimeline",{timeline:"public"})},unmounted:function(){this.$store.dispatch("stopFetchingTimeline","public")}};var Ka=Fn()(Ga,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("Timeline");return Object(wt.D)(),Object(wt.h)(s,{title:e.$t("nav.public_tl"),timeline:e.timeline,"timeline-name":"public"},null,8,["title","timeline"])}]]);var Xa={components:{Timeline:Ya},computed:{timeline:function(){return this.$store.state.statuses.timelines.publicAndExternal}},created:function(){this.$store.dispatch("startFetchingTimeline",{timeline:"publicAndExternal"})},unmounted:function(){this.$store.dispatch("stopFetchingTimeline","publicAndExternal")}};var Za=Fn()(Xa,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("Timeline");return Object(wt.D)(),Object(wt.h)(s,{title:e.$t("nav.twkn"),timeline:e.timeline,"timeline-name":"publicAndExternal"},null,8,["title","timeline"])}]]);var Qa={components:{Timeline:Ya},computed:{timeline:function(){return this.$store.state.statuses.timelines.friends}}};var ec=Fn()(Qa,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("Timeline");return Object(wt.D)(),Object(wt.h)(s,{title:e.$t("nav.timeline"),timeline:e.timeline,"timeline-name":"friends"},null,8,["title","timeline"])}]]);var tc={created:function(){this.$store.commit("clearTimeline",{timeline:"tag"}),this.$store.dispatch("startFetchingTimeline",{timeline:"tag",tag:this.tag})},components:{Timeline:Ya},computed:{tag:function(){return this.$route.params.tag},timeline:function(){return this.$store.state.statuses.timelines.tag}},watch:{tag:function(){this.$store.commit("clearTimeline",{timeline:"tag"}),this.$store.dispatch("startFetchingTimeline",{timeline:"tag",tag:this.tag})}},unmounted:function(){this.$store.dispatch("stopFetchingTimeline","tag")}};var nc=Fn()(tc,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("Timeline");return Object(wt.D)(),Object(wt.h)(s,{title:e.tag,timeline:e.timeline,"timeline-name":"tag",tag:e.tag},null,8,["title","timeline","tag"])}]]);var rc={computed:{timeline:function(){return this.$store.state.statuses.timelines.bookmarks}},components:{Timeline:Ya},unmounted:function(){this.$store.commit("clearTimeline",{timeline:"bookmarks"})}};var ic=Fn()(rc,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("Timeline");return Object(wt.D)(),Object(wt.h)(s,{title:e.$t("nav.bookmarks"),timeline:e.timeline,"timeline-name":"bookmarks"},null,8,["title","timeline"])}]]);var oc={components:{Conversation:za},computed:{statusId:function(){return this.$route.params.id}}};var sc=Fn()(oc,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("conversation");return Object(wt.D)(),Object(wt.h)(s,{collapsable:!1,"is-page":"true","status-id":e.statusId},null,8,["status-id"])}]]);const ac={class:"panel panel-default"},cc={class:"panel-heading"},lc={class:"title"},uc=["label"],dc=["label"],pc=["label"],hc=["label"];var bc=n(71),mc={mentions:["mention"],"likes+repeats":["repeat","like"],follows:["follow"],moves:["move"]},fc={data:function(){return{allowFollowingMove:this.$store.state.users.currentUser.allow_following_move,filterMode:mc.mentions}},methods:{onModeSwitch:function(e){this.filterMode=mc[e]}},components:{Notifications:fs.default,TabSwitcher:bc.a}};var Oc=Fn()(fc,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("tab-switcher"),a=Object(wt.J)("Notifications");return Object(wt.D)(),Object(wt.j)("div",ac,[Object(wt.k)("div",cc,[Object(wt.k)("div",lc,Object(wt.O)(e.$t("nav.interactions")),1)]),Object(wt.m)(s,{ref:"tabSwitcher","on-switch":e.onModeSwitch},{default:Object(wt.V)(()=>[Object(wt.k)("span",{key:"mentions",label:e.$t("nav.mentions")},null,8,uc),Object(wt.k)("span",{key:"likes+repeats",label:e.$t("interactions.favs_repeats")},null,8,dc),Object(wt.k)("span",{key:"follows",label:e.$t("interactions.follows")},null,8,pc),e.allowFollowingMove?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("span",{key:"moves",label:e.$t("interactions.moves")},null,8,hc))]),_:1},8,["on-switch"]),Object(wt.m)(a,{ref:"notifications","no-heading":!0,"minimal-mode":!0,"filter-mode":e.filterMode},null,8,["filter-mode"])])}]]);var jc={computed:{timeline:function(){return this.$store.state.statuses.timelines.dms}},components:{Timeline:Ya}};var gc=Fn()(jc,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("Timeline");return Object(wt.D)(),Object(wt.h)(s,{title:e.$t("nav.dms"),timeline:e.timeline,"timeline-name":"dms"},null,8,["title","timeline"])}]]);const vc={key:0},yc={key:1,class:"chat-list panel panel-default"},wc={class:"panel-heading -sticky"},kc={class:"title"},_c={class:"panel-body"},Sc={key:0,class:"timeline"},Cc={key:1,class:"emtpy-chat-list-alert"};const Pc={class:"chat-list-item-left"},xc={class:"chat-list-item-center"},Dc={class:"heading"},Tc={key:0,class:"name-and-account-name"},Ic=Object(wt.k)("span",{class:"heading-right"},null,-1),$c={class:"time-wrapper"},zc={class:"chat-preview"},Mc={key:0,class:"badge badge-notification unread-chat-count"};var Uc=n(45),Fc=n(22),Ec=n(144),Lc=n(59);const Rc=["title"];var Ac=n(25),Nc={name:"ChatTitle",components:{UserAvatar:Fc.default,RichContent:Ac.a},props:["user","withAvatar"],computed:{title:function(){return this.user?this.user.screen_name_ui:""},htmlTitle:function(){return this.user?this.user.name_html:""}},methods:{getUserProfileLink:function(e){return Object(ji.a)(e.id,e.screen_name)}}};n(575);var Bc=Fn()(Nc,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("UserAvatar"),a=Object(wt.J)("router-link"),c=Object(wt.J)("RichContent");return Object(wt.D)(),Object(wt.j)("div",{class:"chat-title",title:e.title},[e.withAvatar&&e.user?(Object(wt.D)(),Object(wt.h)(a,{key:0,class:"avatar-container",to:e.getUserProfileLink(e.user)},{default:Object(wt.V)(()=>[Object(wt.m)(s,{class:"titlebar-avatar",user:e.user},null,8,["user"])]),_:1},8,["to"])):Object(wt.i)("",!0),e.user?(Object(wt.D)(),Object(wt.h)(c,{key:1,class:"username",title:"@"+(e.user&&e.user.screen_name_ui),html:e.htmlTitle,emoji:e.user.emoji||[]},null,8,["title","html","emoji"])):Object(wt.i)("",!0)],8,Rc)}]]);function Vc(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Hc(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Vc(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Vc(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var qc={name:"ChatListItem",props:["chat"],components:{UserAvatar:Fc.default,AvatarList:Ec.a,Timeago:Lc.a,ChatTitle:Bc,StatusBody:Uc.a},computed:Hc(Hc({},Object(a.e)({currentUser:function(e){return e.users.currentUser}})),{},{attachmentInfo:function(){if(0!==this.chat.lastMessage.attachments.length){var e=this.chat.lastMessage.attachments.map((function(e){return lt.a.fileType(e.mimetype)}));return e.includes("video")?this.$t("file_type.video"):e.includes("audio")?this.$t("file_type.audio"):e.includes("image")?this.$t("file_type.image"):this.$t("file_type.file")}},messageForStatusContent:function(){var e=this.chat.lastMessage,t=e?e.emojis:[],n=e&&e.account_id===this.currentUser.id,r=e?this.attachmentInfo||e.content:"",i=n?"<i>".concat(this.$t("chats.you"),"</i> ").concat(r):r;return{summary:"",emojis:t,raw_html:i,text:i,attachments:[]}}}),methods:{openChat:function(e){this.chat.id&&this.$router.push({name:"chat",params:{username:this.currentUser.screen_name,recipient_id:this.chat.account.id}})}}};n(576);var Jc=Fn()(qc,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("UserAvatar"),a=Object(wt.J)("ChatTitle"),c=Object(wt.J)("Timeago"),l=Object(wt.J)("StatusBody");return Object(wt.D)(),Object(wt.j)("div",{class:"chat-list-item",onClickCapture:t[0]||(t[0]=Object(wt.Y)((...t)=>e.openChat&&e.openChat(...t),["prevent"]))},[Object(wt.k)("div",Pc,[Object(wt.m)(s,{user:e.chat.account,height:"48px",width:"48px"},null,8,["user"])]),Object(wt.k)("div",xc,[Object(wt.k)("div",Dc,[e.chat.account?(Object(wt.D)(),Object(wt.j)("span",Tc,[Object(wt.m)(a,{user:e.chat.account},null,8,["user"])])):Object(wt.i)("",!0),Ic,Object(wt.k)("div",$c,[Object(wt.m)(c,{time:e.chat.updated_at,"auto-update":60},null,8,["time"])])]),Object(wt.k)("div",zc,[Object(wt.m)(l,{class:"chat-preview-body",status:e.messageForStatusContent,"single-line":!0},null,8,["status"]),e.chat.unread>0?(Object(wt.D)(),Object(wt.j)("div",Mc,Object(wt.O)(e.chat.unread),1)):Object(wt.i)("",!0)])])],32)}]]);const Wc={class:"panel-default panel chat-new"},Yc={ref:"header",class:"panel-heading"},Gc={class:"input-wrap"},Kc={class:"input-search"},Xc={class:"member-list"},Zc=["onClickCapture"];var Qc=n(53);function el(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function tl(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?el(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):el(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.cb,In.o);var nl={components:{BasicUserCard:Qc.a,UserAvatar:Fc.default},data:function(){return{suggestions:[],userIds:[],loading:!1,query:""}},created:function(){var e=this;return i()(s.a.mark((function t(){var n;return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.backendInteractor.chats();case 2:n=t.sent,n.chats.forEach((function(t){return e.suggestions.push(t.account)}));case 5:case"end":return t.stop()}}),t)})))()},computed:tl(tl({users:function(){var e=this;return this.userIds.map((function(t){return e.findUser(t)}))},availableUsers:function(){return 0!==this.query.length?this.users:this.suggestions}},Object(a.e)({currentUser:function(e){return e.users.currentUser},backendInteractor:function(e){return e.api.backendInteractor}})),Object(a.c)(["findUser"])),methods:{goBack:function(){this.$emit("cancel")},goToChat:function(e){this.$router.push({name:"chat",params:{recipient_id:e.id}})},onInput:function(){this.search(this.query)},addUser:function(e){this.selectedUserIds.push(e.id),this.query=""},removeUser:function(e){this.selectedUserIds=this.selectedUserIds.filter((function(t){return t!==e}))},search:function(e){var t=this;e?(this.loading=!0,this.userIds=[],this.$store.dispatch("search",{q:e,resolve:!0,type:"accounts"}).then((function(e){t.loading=!1,t.userIds=e.accounts.map((function(e){return e.id}))}))):this.loading=!1}}};n(578);var rl=Fn()(nl,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("BasicUserCard");return Object(wt.D)(),Object(wt.j)("div",Wc,[Object(wt.k)("div",Yc,[Object(wt.k)("button",{class:"button-unstyled go-back-button",onClick:t[0]||(t[0]=(...t)=>e.goBack&&e.goBack(...t))},[Object(wt.m)(s,{size:"lg",icon:"chevron-left"})])],512),Object(wt.k)("div",Gc,[Object(wt.k)("div",Kc,[Object(wt.m)(s,{class:"search-icon fa-scale-110 fa-old-padding",icon:"search"})]),Object(wt.W)(Object(wt.k)("input",{ref:"search","onUpdate:modelValue":t[1]||(t[1]=t=>e.query=t),placeholder:"Search people",onInput:t[2]||(t[2]=(...t)=>e.onInput&&e.onInput(...t))},null,544),[[wt.S,e.query]])]),Object(wt.k)("div",Xc,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.availableUsers,t=>(Object(wt.D)(),Object(wt.j)("div",{key:t.id,class:"member"},[Object(wt.k)("div",{onClickCapture:Object(wt.Y)(n=>e.goToChat(t),["prevent"])},[Object(wt.m)(a,{user:t},null,8,["user"])],40,Zc)]))),128))])])}]]);function il(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ol(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?il(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):il(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var sl={components:{ChatListItem:Jc,List:Bs.a,ChatNew:rl},computed:ol(ol({},Object(a.e)({currentUser:function(e){return e.users.currentUser}})),Object(a.c)(["sortedChatList"])),data:function(){return{isNew:!1}},created:function(){this.$store.dispatch("fetchChats",{latest:!0})},methods:{cancelNewChat:function(){this.isNew=!1,this.$store.dispatch("fetchChats",{latest:!0})},newChat:function(){this.isNew=!0}}};n(579);var al=Fn()(sl,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("ChatNew"),a=Object(wt.J)("ChatListItem"),c=Object(wt.J)("List");return e.isNew?(Object(wt.D)(),Object(wt.j)("div",vc,[Object(wt.m)(s,{onCancel:e.cancelNewChat},null,8,["onCancel"])])):(Object(wt.D)(),Object(wt.j)("div",yc,[Object(wt.k)("div",wc,[Object(wt.k)("span",kc,Object(wt.O)(e.$t("chats.chats")),1),Object(wt.k)("button",{class:"button-default",onClick:t[0]||(t[0]=(...t)=>e.newChat&&e.newChat(...t))},Object(wt.O)(e.$t("chats.new")),1)]),Object(wt.k)("div",_c,[e.sortedChatList.length>0?(Object(wt.D)(),Object(wt.j)("div",Sc,[Object(wt.m)(c,{items:e.sortedChatList},{item:Object(wt.V)(({item:e})=>[(Object(wt.D)(),Object(wt.h)(a,{key:e.id,compact:!1,chat:e},null,8,["chat"]))]),_:1},8,["items"])])):(Object(wt.D)(),Object(wt.j)("div",Cc,[Object(wt.k)("span",null,Object(wt.O)(e.$t("chats.empty_chat_list_placeholder")),1)]))])]))}]]);const cl={class:"chat-view"},ll={class:"chat-view-inner"},ul={ref:"inner",class:"panel-default panel chat-view-body"},dl={ref:"header",class:"panel-heading -sticky chat-view-heading"},pl={class:"title text-center"},hl={key:1,class:"chat-loading-error"},bl={class:"alert error"},ml={ref:"footer",class:"panel-body footer"},fl={key:0,class:"badge badge-notification unread-chat-count unread-message-count"};const Ol={key:0,class:"avatar-wrapper"},jl={class:"chat-message-inner"},gl={class:"dropdown-menu"},vl=["title"],yl={class:"created-at"},wl={key:1,class:"chat-message-date-separator"};var kl=n(58),_l=n(78),Sl=n(142);var Cl=n(38),Pl={name:"Timeago",props:["date"],computed:{displayDate:function(){var e=new Date;return e.setHours(0,0,0,0),this.date.getTime()===e.getTime()?this.$t("display_date.today"):this.date.toLocaleDateString(Cl.a.internalToBrowserLocale(this.$i18n.locale),{day:"numeric",month:"long"})}}};var xl=Fn()(Pl,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("time",null,Object(wt.O)(o.displayDate),1)}]]);function Dl(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Tl(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Dl(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Dl(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.rb,In.w);var Il={name:"ChatMessage",props:["author","edited","noHeading","chatViewItem","hoveredMessageChain"],emits:["hover"],components:{Popover:co.default,Attachment:kl.a,StatusContent:Uc.a,UserAvatar:Fc.default,Gallery:_l.a,LinkPreview:Sl.a,ChatMessageDate:xl},computed:Tl(Tl({createdAt:function(){return this.chatViewItem.data.created_at.toLocaleTimeString("en",{hour:"2-digit",minute:"2-digit",hour12:!1})},isCurrentUser:function(){return this.message.account_id===this.currentUser.id},message:function(){return this.chatViewItem.data},userProfileLink:function(){return Object(ji.a)(this.author.id,this.author.screen_name,this.$store.state.instance.restrictedNicknames)},isMessage:function(){return"message"===this.chatViewItem.type},messageForStatusContent:function(){return{summary:"",emojis:this.message.emojis,raw_html:this.message.content||"",text:this.message.content||"",attachments:this.message.attachments}},hasAttachment:function(){return this.message.attachments.length>0}},Object(a.e)({betterShadow:function(e){return e.interface.browserSupport.cssFilter},currentUser:function(e){return e.users.currentUser},restrictedNicknames:function(e){return e.instance.restrictedNicknames}})),{},{popoverMarginStyle:function(){return this.isCurrentUser?{}:{left:50}}},Object(a.c)(["mergedConfig","findUser"])),data:function(){return{hovered:!1,menuOpened:!1}},methods:{onHover:function(e){this.$emit("hover",{isHovered:e,messageChainId:this.chatViewItem.messageChainId})},deleteMessage:function(){var e=this;return i()(s.a.mark((function t(){return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!window.confirm(e.$t("chats.delete_confirm"))){t.next=4;break}return t.next=4,e.$store.dispatch("deleteChatMessage",{messageId:e.chatViewItem.data.id,chatId:e.chatViewItem.data.chat_id});case 4:e.hovered=!1,e.menuOpened=!1;case 6:case"end":return t.stop()}}),t)})))()}}};n(580);var $l=Fn()(Il,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("UserAvatar"),a=Object(wt.J)("router-link"),c=Object(wt.J)("FAIcon"),l=Object(wt.J)("Popover"),u=Object(wt.J)("StatusContent"),d=Object(wt.J)("ChatMessageDate");return e.isMessage?(Object(wt.D)(),Object(wt.j)("div",{key:0,class:Object(wt.w)(["chat-message-wrapper",{"hovered-message-chain":e.hoveredMessageChain}]),onMouseover:t[5]||(t[5]=t=>e.onHover(!0)),onMouseleave:t[6]||(t[6]=t=>e.onHover(!1))},[Object(wt.k)("div",{class:Object(wt.w)(["chat-message",[{outgoing:e.isCurrentUser,incoming:!e.isCurrentUser}]])},[e.isCurrentUser?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("div",Ol,[e.chatViewItem.isHead?(Object(wt.D)(),Object(wt.h)(a,{key:0,to:e.userProfileLink},{default:Object(wt.V)(()=>[Object(wt.m)(s,{compact:!0,"better-shadow":e.betterShadow,user:e.author},null,8,["better-shadow","user"])]),_:1},8,["to"])):Object(wt.i)("",!0)])),Object(wt.k)("div",jl,[Object(wt.k)("div",{class:"status-body",style:Object(wt.x)({"min-width":e.message.attachment?"80%":""})},[Object(wt.k)("div",{class:Object(wt.w)(["media status",{"without-attachment":!e.hasAttachment,pending:e.chatViewItem.data.pending,error:e.chatViewItem.data.error}]),style:{position:"relative"},onMouseenter:t[3]||(t[3]=t=>e.hovered=!0),onMouseleave:t[4]||(t[4]=t=>e.hovered=!1)},[Object(wt.k)("div",{class:Object(wt.w)(["chat-message-menu",{visible:e.hovered||e.menuOpened}])},[Object(wt.m)(l,{trigger:"click",placement:"top","bound-to-selector":e.isCurrentUser?"":".scrollable-message-list","bound-to":{x:"container"},margin:e.popoverMarginStyle,onShow:t[1]||(t[1]=t=>e.menuOpened=!0),onClose:t[2]||(t[2]=t=>e.menuOpened=!1)},{content:Object(wt.V)(()=>[Object(wt.k)("div",gl,[Object(wt.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:t[0]||(t[0]=(...t)=>e.deleteMessage&&e.deleteMessage(...t))},[Object(wt.m)(c,{icon:"times"}),Object(wt.l)(" "+Object(wt.O)(e.$t("chats.delete")),1)])])]),trigger:Object(wt.V)(()=>[Object(wt.k)("button",{class:"button-default menu-icon",title:e.$t("chats.more")},[Object(wt.m)(c,{icon:"ellipsis-h"})],8,vl)]),_:1},8,["bound-to-selector","margin"])],2),Object(wt.m)(u,{class:"message-content",status:e.messageForStatusContent,"full-content":!0},{footer:Object(wt.V)(()=>[Object(wt.k)("span",yl,Object(wt.O)(e.createdAt),1)]),_:1},8,["status"])],34)],4)])],2)],34)):(Object(wt.D)(),Object(wt.j)("div",wl,[Object(wt.m)(d,{date:e.chatViewItem.date},null,8,["date"])]))}]]),zl=function(){return{scrollTop:window.scrollY,scrollHeight:document.documentElement.scrollHeight,offsetHeight:window.innerHeight}};function Ml(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ul(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ml(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ml(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.n,In.o);var Fl={components:{ChatMessage:$l,ChatTitle:Bc,PostStatusForm:Or.a},data:function(){return{jumpToBottomButtonVisible:!1,hoveredMessageChainId:void 0,lastScrollPosition:{},scrollableContainerHeight:"100%",errorLoadingChat:!1,messageRetriers:{}}},created:function(){this.startFetching(),window.addEventListener("resize",this.handleResize)},mounted:function(){var e=this;window.addEventListener("scroll",this.handleScroll),void 0!==document.hidden&&document.addEventListener("visibilitychange",this.handleVisibilityChange,!1),this.$nextTick((function(){e.handleResize()}))},unmounted:function(){window.removeEventListener("scroll",this.handleScroll),void 0!==document.hidden&&document.removeEventListener("visibilitychange",this.handleVisibilityChange,!1),this.$store.dispatch("clearCurrentChat")},computed:Ul(Ul({recipient:function(){return this.currentChat&&this.currentChat.account},recipientId:function(){return this.$route.params.recipient_id},formPlaceholder:function(){return this.recipient?this.$t("chats.message_user",{nickname:this.recipient.screen_name_ui}):""},chatViewItems:function(){return $t.getView(this.currentChatMessageService)},newMessageCount:function(){return this.currentChatMessageService&&this.currentChatMessageService.newMessageCount},streamingEnabled:function(){return this.mergedConfig.useStreamingApi&&this.mastoUserSocketStatus===j.b.JOINED}},Object(a.c)(["currentChat","currentChatMessageService","findOpenedChatByRecipientId","mergedConfig"])),Object(a.e)({backendInteractor:function(e){return e.api.backendInteractor},mastoUserSocketStatus:function(e){return e.api.mastoUserSocketStatus},mobileLayout:function(e){return"mobile"===e.interface.layoutType},currentUser:function(e){return e.users.currentUser}})),watch:{chatViewItems:function(){var e=this,t=this.bottomedOut(10);this.$nextTick((function(){t&&e.scrollDown()}))},$route:function(){this.startFetching()},mastoUserSocketStatus:function(e){e===j.b.JOINED&&this.fetchChat({isFirstFetch:!0})}},methods:{onMessageHover:function(e){var t=e.isHovered,n=e.messageChainId;this.hoveredMessageChainId=t?n:void 0},onFilesDropped:function(){var e=this;this.$nextTick((function(){e.handleResize()}))},handleVisibilityChange:function(){var e=this;this.$nextTick((function(){!document.hidden&&e.bottomedOut(10)&&e.scrollDown({forceRead:!0})}))},handleResize:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.expand,r=void 0!==n&&n,i=t.delayed,o=void 0!==i&&i;o?setTimeout((function(){e.handleResize(Ul(Ul({},t),{},{delayed:!1}))}),100):this.$nextTick((function(){var t=zl().offsetHeight,n=void 0===t?void 0:t,i=e.lastScrollPosition.offsetHeight-n;(0!==i||!e.bottomedOut()&&r)&&e.$nextTick((function(){window.scrollTo({top:window.scrollY+i})})),e.lastScrollPosition=zl()}))},scrollDown:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.behavior,n=void 0===t?"auto":t,r=e.forceRead,i=void 0!==r&&r;this.$nextTick((function(){window.scrollTo({top:document.documentElement.scrollHeight,behavior:n})})),i&&this.readChat()},readChat:function(){if(this.currentChatMessageService&&this.currentChatMessageService.maxId&&!document.hidden){var e=this.currentChatMessageService.maxId;this.$store.dispatch("readChat",{id:this.currentChat.id,lastReadId:e})}},bottomedOut:function(e){return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=window.scrollY+e,n=document.documentElement.scrollHeight-window.innerHeight;return n<=t}(e)},reachedTop:function(){return window.scrollY<=0},cullOlderCheck:function(){var e=this;window.setTimeout((function(){e.bottomedOut(10)&&e.$store.dispatch("cullOlderMessages",e.currentChatMessageService.chatId)}),5e3)},handleScroll:pa()((function(){var e=this;this.currentChat&&(this.reachedTop()?this.fetchChat({maxId:this.currentChatMessageService.minId}):this.bottomedOut(10)?(this.jumpToBottomButtonVisible=!1,this.cullOlderCheck(),this.newMessageCount>0&&window.setTimeout((function(){e.$el&&e.readChat()}),1500)):this.jumpToBottomButtonVisible=!0)}),200),handleScrollUp:function(e){var t,n,r=zl();window.scrollTo({top:(t=e,n=r,t.scrollTop+(n.scrollHeight-t.scrollHeight))})},fetchChat:function(e){var t=this,n=e.isFirstFetch,r=void 0!==n&&n,i=e.fetchLatest,o=void 0!==i&&i,s=e.maxId,a=this.currentChatMessageService;if(a&&(!o||!this.streamingEnabled)){var c=a.chatId,l=!!s,u=o&&a.maxId;return this.backendInteractor.chatMessages({id:c,maxId:s,sinceId:u}).then((function(e){r&&$t.clear(a);var n=zl();t.$store.dispatch("addChatMessages",{chatId:c,messages:e}).then((function(){t.$nextTick((function(){l&&t.handleScrollUp(n),!(document.documentElement.scrollHeight>window.innerHeight)&&e.length>0&&t.fetchChat({maxId:t.currentChatMessageService.minId})}))}))}))}},startFetching:function(){var e=this;return i()(s.a.mark((function t(){var n;return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=e.findOpenedChatByRecipientId(e.recipientId)){t.next=12;break}return t.prev=2,t.next=5,e.backendInteractor.getOrCreateChat({accountId:e.recipientId});case 5:n=t.sent,t.next=12;break;case 8:t.prev=8,t.t0=t.catch(2),console.error("Error creating or getting a chat",t.t0),e.errorLoadingChat=!0;case 12:n&&(e.$nextTick((function(){e.scrollDown({forceRead:!0})})),e.$store.dispatch("addOpenedChat",{chat:n}),e.doStartFetching());case 13:case"end":return t.stop()}}),t,null,[[2,8]])})))()},doStartFetching:function(){var e=this;this.$store.dispatch("startFetchingCurrentChat",{fetcher:function(){return Object(je.a)((function(){return e.fetchChat({fetchLatest:!0})}),5e3)}}),this.fetchChat({isFirstFetch:!0})},handleAttachmentPosting:function(){var e=this;this.$nextTick((function(){e.handleResize(),e.scrollDown({forceRead:!0})}))},sendMessage:function(e){var t=this,n=e.status,r=e.media,i=e.idempotencyKey,o={id:this.currentChat.id,content:n,idempotencyKey:i};r[0]&&(o.mediaId=r[0].id);var s=function(e){var t=e.content,n=e.chatId,r=e.attachments,i=e.userId,o=e.idempotencyKey,s={content:t,chat_id:n,created_at:new Date,id:"".concat((new Date).getTime()),attachments:r,account_id:i,idempotency_key:o,emojis:[],pending:!0,isNormalized:!0};return r[0]&&(s.attachment=r[0]),s}({attachments:r,chatId:this.currentChat.id,content:n,userId:this.currentUser.id,idempotencyKey:i});return this.$store.dispatch("addChatMessages",{chatId:this.currentChat.id,messages:[s]}).then((function(){t.handleAttachmentPosting()})),this.doSendMessage({params:o,fakeMessage:s,retriesLeft:10})},doSendMessage:function(e){var t=this,n=e.params,r=e.fakeMessage,i=e.retriesLeft,o=void 0===i?10:i;if(!(o<=0))return this.backendInteractor.sendChatMessage(n).then((function(e){return t.$store.dispatch("addChatMessages",{chatId:t.currentChat.id,updateMaxId:!1,messages:[Ul(Ul({},e),{},{fakeId:r.id})]}),e})).catch((function(e){return console.error("Error sending message",e),t.$store.dispatch("handleMessageError",{chatId:t.currentChat.id,fakeId:r.id,isRetry:10!==o}),(e.statusCode>=500&&e.statusCode<600||"Failed to fetch"===e.message)&&(t.messageRetriers[r.id]=setTimeout((function(){t.doSendMessage({params:n,fakeMessage:r,retriesLeft:o-1})}),1e3*Math.pow(2,10-o))),{}})),Promise.resolve(r)},goBack:function(){this.$router.push({name:"chats",params:{username:this.currentUser.screen_name}})}}};n(581);var El=Fn()(Fl,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("ChatTitle"),c=Object(wt.J)("ChatMessage"),l=Object(wt.J)("PostStatusForm");return Object(wt.D)(),Object(wt.j)("div",cl,[Object(wt.k)("div",ll,[Object(wt.k)("div",ul,[Object(wt.k)("div",dl,[Object(wt.k)("button",{class:"button-unstyled go-back-button",onClick:t[0]||(t[0]=(...t)=>e.goBack&&e.goBack(...t))},[Object(wt.m)(s,{size:"lg",icon:"chevron-left"})]),Object(wt.k)("div",pl,[Object(wt.m)(a,{user:e.recipient,"with-avatar":!0},null,8,["user"])])],512),Object(wt.k)("div",{class:"message-list",style:Object(wt.x)({height:e.scrollableContainerHeight})},[e.errorLoadingChat?(Object(wt.D)(),Object(wt.j)("div",hl,[Object(wt.k)("div",bl,Object(wt.O)(e.$t("chats.error_loading_chat")),1)])):(Object(wt.D)(!0),Object(wt.j)(wt.a,{key:0},Object(wt.H)(e.chatViewItems,t=>(Object(wt.D)(),Object(wt.h)(c,{key:t.id,author:e.recipient,"chat-view-item":t,"hovered-message-chain":t.messageChainId===e.hoveredMessageChainId,onHover:e.onMessageHover},null,8,["author","chat-view-item","hovered-message-chain","onHover"]))),128))],4),Object(wt.k)("div",ml,[Object(wt.k)("div",{class:Object(wt.w)(["jump-to-bottom-button",{visible:e.jumpToBottomButtonVisible}]),onClick:t[1]||(t[1]=t=>e.scrollDown({behavior:"smooth"}))},[Object(wt.k)("span",null,[Object(wt.m)(s,{icon:"chevron-down"}),e.newMessageCount?(Object(wt.D)(),Object(wt.j)("div",fl,Object(wt.O)(e.newMessageCount),1)):Object(wt.i)("",!0)])],2),Object(wt.m)(l,{"disable-subject":!0,"disable-scope-selector":!0,"disable-notice":!0,"disable-lock-warning":!0,"disable-polls":!0,"disable-sensitivity-checkbox":!0,"disable-submit":e.errorLoadingChat||!e.currentChat,"disable-preview":!0,"optimistic-posting":!0,"post-handler":e.sendMessage,"submit-on-enter":!e.mobileLayout,"preserve-focus":!e.mobileLayout,"auto-focus":!e.mobileLayout,placeholder:e.formPlaceholder,"file-limit":1,"max-height":"160","emoji-picker-placement":"top",onResize:e.handleResize},null,8,["disable-submit","post-handler","submit-on-enter","preserve-focus","auto-focus","placeholder","onResize"])],512)],512)])])}]]);const Ll={key:0,class:"user-profile panel panel-default"},Rl={key:0,class:"user-profile-fields"},Al=["title"],Nl=["title"],Bl=["label","disabled"],Vl=["label","disabled"],Hl={key:1,class:"panel user-profile-placeholder"},ql={class:"panel-heading"},Jl={class:"title"},Wl={class:"panel-body"},Yl={key:0};const Gl={class:"follow-card-content-container"},Kl={key:0,class:"faint"},Xl={key:0,class:"follow-card-follow-button"};var Zl=n(143),Ql=n(140),eu={props:["user","noFollowsYou"],components:{BasicUserCard:Qc.a,RemoteFollow:Zl.a,FollowButton:Ql.a},computed:{isMe:function(){return this.$store.state.users.currentUser.id===this.user.id},loggedIn:function(){return this.$store.state.users.currentUser},relationship:function(){return this.$store.getters.relationship(this.user.id)}}};n(582);var tu=Fn()(eu,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("RemoteFollow"),a=Object(wt.J)("FollowButton"),c=Object(wt.J)("basic-user-card");return Object(wt.D)(),Object(wt.h)(c,{user:e.user},{default:Object(wt.V)(()=>[Object(wt.k)("div",Gl,[e.isMe||!e.noFollowsYou&&e.relationship.followed_by?(Object(wt.D)(),Object(wt.j)("span",Kl,Object(wt.O)(e.isMe?e.$t("user_card.its_you"):e.$t("user_card.follows_you")),1)):Object(wt.i)("",!0),e.loggedIn?e.isMe?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.h)(a,{key:2,relationship:e.relationship,"label-following":e.$t("user_card.follow_unfollow"),class:"follow-card-follow-button",user:e.user},null,8,["relationship","label-following","user"])):(Object(wt.D)(),Object(wt.j)(wt.a,{key:1},[e.relationship.following?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("div",Xl,[Object(wt.m)(s,{user:e.user},null,8,["user"])]))],64))])]),_:1},8,["user"])}]]),nu=n(300),ru=n.n(nu),iu=n(301);n(583);function ou(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function su(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ou(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ou(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.r);var au=function(e){var t=e.fetch,n=e.select,r=e.unmounted,i=e.childPropName,o=void 0===i?"entries":i,s=e.additionalPropNames,a=void 0===s?[]:s;return function(e){return{props:Object.keys(Object(iu.a)(e)).filter((function(e){return e!==o})).concat(a),data:function(){return{loading:!1,bottomedOut:!1,error:!1,entries:[]}},created:function(){window.addEventListener("scroll",this.scrollLoad),0===this.entries.length&&this.fetchEntries()},unmounted:function(){window.removeEventListener("scroll",this.scrollLoad),r&&r(this.$props,this.$store)},methods:{updateEntries:function(){this.entries=n(this.$props,this.$store)||[]},fetchEntries:function(){var e=this;this.loading||(this.loading=!0,this.error=!1,t(this.$props,this.$store).then((function(t){e.loading=!1,e.bottomedOut=ru()(t)})).catch((function(){e.loading=!1,e.error=!0})).finally((function(){e.updateEntries()})))},scrollLoad:function(e){var t=document.body.getBoundingClientRect(),n=Math.max(t.height,-t.y);!1===this.loading&&!1===this.bottomedOut&&this.$el.offsetHeight>0&&window.innerHeight+window.pageYOffset>=n-750&&this.fetchEntries()}},render:function(){var t,n=su(su({},this.$props),{},h()({},o,this.entries)),r=this.$slots;return Object(wt.m)("div",{class:"with-load-more"},[Object(wt.m)(e,n,(t=r,"function"==typeof t||"[object Object]"===Object.prototype.toString.call(t)&&!Object(wt.t)(t)?r:{default:function(){return[r]}})),Object(wt.m)("div",{class:"with-load-more-footer"},[this.error&&Object(wt.m)("button",{onClick:this.fetchEntries,class:"button-unstyled -link -fullwidth alert error"},[this.$t("general.generic_error")]),!this.error&&this.loading&&Object(wt.m)(sn.a,{spin:!0,icon:"circle-notch"},null),!this.error&&!this.loading&&!this.bottomedOut&&Object(wt.m)("a",{onClick:this.fetchEntries},[this.$t("general.more")])])])}}}};Tn.c.add(In.r);var cu=au({fetch:function(e,t){return t.dispatch("fetchFollowers",e.userId)},select:function(e,t){return qt()(t.getters.findUser(e.userId),"followerIds",[]).map((function(e){return t.getters.findUser(e)}))},destroy:function(e,t){return t.dispatch("clearFollowers",e.userId)},childPropName:"items",additionalPropNames:["userId"]})(Bs.a),lu=au({fetch:function(e,t){return t.dispatch("fetchFriends",e.userId)},select:function(e,t){return qt()(t.getters.findUser(e.userId),"friendIds",[]).map((function(e){return t.getters.findUser(e)}))},destroy:function(e,t){return t.dispatch("clearFriends",e.userId)},childPropName:"items",additionalPropNames:["userId"]})(Bs.a),uu={data:function(){return{error:!1,userId:null,tab:"statuses",footerRef:null}},created:function(){var e=this.$route.params;this.load(e.name||e.id),this.tab=qt()(this.$route,"query.tab","statuses")},unmounted:function(){this.stopFetching()},computed:{timeline:function(){return this.$store.state.statuses.timelines.user},favorites:function(){return this.$store.state.statuses.timelines.favorites},media:function(){return this.$store.state.statuses.timelines.media},isUs:function(){return this.userId&&this.$store.state.users.currentUser.id&&this.userId===this.$store.state.users.currentUser.id},user:function(){return this.$store.getters.findUser(this.userId)},isExternal:function(){return"external-user-profile"===this.$route.name},followsTabVisible:function(){return this.isUs||!this.user.hide_follows},followersTabVisible:function(){return this.isUs||!this.user.hide_followers}},methods:{setFooterRef:function(e){this.footerRef=e},load:function(e){var t=this,n=function(e,n){n!==t.$store.state.statuses.timelines[e].userId&&t.$store.commit("clearTimeline",{timeline:e}),t.$store.dispatch("startFetchingTimeline",{timeline:e,userId:n})},r=function(e){t.userId=e,n("user",e),n("media",e),t.isUs&&n("favorites",e),t.$store.dispatch("fetchPinnedStatuses",e)};this.userId=null,this.error=!1;var i=this.$store.getters.findUser(e);i?r(i.id):this.$store.dispatch("fetchUser",e).then((function(e){var t=e.id;return r(t)})).catch((function(e){var n=qt()(e,"error.error");t.error="No user with such user_id"===n?t.$t("user_profile.profile_does_not_exist"):n||t.$t("user_profile.profile_loading_error")}))},stopFetching:function(){this.$store.dispatch("stopFetchingTimeline","user"),this.$store.dispatch("stopFetchingTimeline","favorites"),this.$store.dispatch("stopFetchingTimeline","media")},switchUser:function(e){this.stopFetching(),this.load(e)},onTabSwitch:function(e){this.tab=e,this.$router.replace({query:{tab:e}})},linkClicked:function(e){var t=e.target;"SPAN"===t.tagName&&(t=t.parentNode),"A"===t.tagName&&window.open(t.href,"_blank")}},watch:{"$route.params.id":function(e){e&&this.switchUser(e)},"$route.params.name":function(e){e&&this.switchUser(e)},"$route.query":function(e){this.tab=e.tab||"statuses"}},components:{UserCard:jr.a,Timeline:Ya,FollowerList:cu,FriendList:lu,FollowCard:tu,TabSwitcher:bc.a,Conversation:za,RichContent:Ac.a}};n(584);var du=Fn()(uu,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("UserCard"),a=Object(wt.J)("RichContent"),c=Object(wt.J)("Timeline"),l=Object(wt.J)("FollowCard"),u=Object(wt.J)("FriendList"),d=Object(wt.J)("FollowerList"),p=Object(wt.J)("tab-switcher"),h=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",null,[e.user?(Object(wt.D)(),Object(wt.j)("div",Ll,[Object(wt.m)(s,{"user-id":e.userId,switcher:!0,selected:e.timeline.viewing,"allow-zooming-avatar":!0,rounded:"top"},null,8,["user-id","selected"]),e.user.fields_html&&e.user.fields_html.length>0?(Object(wt.D)(),Object(wt.j)("div",Rl,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.user.fields_html,(t,n)=>(Object(wt.D)(),Object(wt.j)("dl",{key:n,class:"user-profile-field"},[Object(wt.k)("dt",{title:e.user.fields_text[n].name,class:"user-profile-field-name"},[Object(wt.m)(a,{html:t.name,emoji:e.user.emoji},null,8,["html","emoji"])],8,Al),Object(wt.k)("dd",{title:e.user.fields_text[n].value,class:"user-profile-field-value"},[Object(wt.m)(a,{html:t.value,emoji:e.user.emoji},null,8,["html","emoji"])],8,Nl)]))),128))])):Object(wt.i)("",!0),Object(wt.m)(p,{"active-tab":e.tab,"render-only-focused":!0,"on-switch":e.onTabSwitch},{default:Object(wt.V)(()=>[Object(wt.m)(c,{key:"statuses",label:e.$t("user_card.statuses"),count:e.user.statuses_count,embedded:!0,title:e.$t("user_profile.timeline_title"),timeline:e.timeline,"timeline-name":"user","user-id":e.userId,"pinned-status-ids":e.user.pinnedStatusIds,"in-profile":!0,footerSlipgate:e.footerRef},null,8,["label","count","title","timeline","user-id","pinned-status-ids","footerSlipgate"]),e.followsTabVisible?(Object(wt.D)(),Object(wt.j)("div",{key:"followees",label:e.$t("user_card.followees"),disabled:!e.user.friends_count},[Object(wt.m)(u,{"user-id":e.userId},{item:Object(wt.V)(({item:e})=>[Object(wt.m)(l,{user:e},null,8,["user"])]),_:1},8,["user-id"])],8,Bl)):Object(wt.i)("",!0),e.followersTabVisible?(Object(wt.D)(),Object(wt.j)("div",{key:"followers",label:e.$t("user_card.followers"),disabled:!e.user.followers_count},[Object(wt.m)(d,{"user-id":e.userId},{item:Object(wt.V)(({item:t})=>[Object(wt.m)(l,{user:t,"no-follows-you":e.isUs},null,8,["user","no-follows-you"])]),_:1},8,["user-id"])],8,Vl)):Object(wt.i)("",!0),Object(wt.m)(c,{key:"media",label:e.$t("user_card.media"),disabled:!e.media.visibleStatuses.length,embedded:!0,title:e.$t("user_card.media"),"timeline-name":"media",timeline:e.media,"user-id":e.userId,"in-profile":!0,footerSlipgate:e.footerRef},null,8,["label","disabled","title","timeline","user-id","footerSlipgate"]),e.isUs?(Object(wt.D)(),Object(wt.h)(c,{key:"favorites",label:e.$t("user_card.favorites"),disabled:!e.favorites.visibleStatuses.length,embedded:!0,title:e.$t("user_card.favorites"),"timeline-name":"favorites",timeline:e.favorites,"in-profile":!0,footerSlipgate:e.footerRef},null,8,["label","disabled","title","timeline","footerSlipgate"])):Object(wt.i)("",!0)]),_:1},8,["active-tab","on-switch"]),Object(wt.k)("div",{class:"panel-footer",ref:e.setFooterRef},null,512)])):(Object(wt.D)(),Object(wt.j)("div",Hl,[Object(wt.k)("div",ql,[Object(wt.k)("div",Jl,Object(wt.O)(e.$t("settings.profile_tab")),1)]),Object(wt.k)("div",Wl,[e.error?(Object(wt.D)(),Object(wt.j)("span",Yl,Object(wt.O)(e.error),1)):(Object(wt.D)(),Object(wt.h)(h,{key:1,spin:"",icon:"circle-notch"}))])]))])}]]);const pu={class:"panel panel-default"},hu={class:"panel-heading"},bu={class:"title"},mu={class:"search-input-container"},fu=["placeholder"],Ou={key:0,class:"text-center loading-icon"},ju={key:1},gu={class:"search-nav-heading"},vu=["label"],yu=["label"],wu=["label"],ku={class:"panel-body"},_u={key:0},Su={key:0,class:"search-result-heading"},Cu={key:1},Pu={key:0,class:"search-result-heading"},xu={key:2},Du={key:0,class:"search-result-heading"},Tu={class:"hashtag"},Iu={key:0},$u={key:0},zu={key:1},Mu={key:0,class:"count"},Uu=Object(wt.k)("div",{class:"search-result-footer text-center panel-footer faint"},null,-1);Tn.c.add(In.r,In.cb);var Fu={components:{FollowCard:tu,Conversation:za,Status:Ns.default,TabSwitcher:bc.a},props:["query"],data:function(){return{loaded:!1,loading:!1,searchTerm:this.query||"",userIds:[],statuses:[],hashtags:[],currenResultTab:"statuses"}},computed:{users:function(){var e=this;return this.userIds.map((function(t){return e.$store.getters.findUser(t)}))},visibleStatuses:function(){var e=this.$store.state.statuses.allStatusesObject;return this.statuses.filter((function(t){return e[t.id]&&!e[t.id].deleted}))}},mounted:function(){this.search(this.query)},watch:{query:function(e){this.searchTerm=e,this.search(e)}},methods:{newQuery:function(e){this.$router.push({name:"search",query:{query:e}}),this.$refs.searchInput.focus()},search:function(e){var t=this;e?(this.loading=!0,this.userIds=[],this.statuses=[],this.hashtags=[],this.$refs.searchInput.blur(),this.$store.dispatch("search",{q:e,resolve:!0}).then((function(e){t.loading=!1,t.userIds=he()(e.accounts,"id"),t.statuses=e.statuses,t.hashtags=e.hashtags,t.currenResultTab=t.getActiveTab(),t.loaded=!0}))):this.loading=!1},resultCount:function(e){var t=this[e].length;return 0===t?"":" (".concat(t,")")},onResultTabSwitch:function(e){this.currenResultTab=e},getActiveTab:function(){return this.visibleStatuses.length>0?"statuses":this.users.length>0?"people":this.hashtags.length>0?"hashtags":"statuses"},lastHistoryRecord:function(e){return e.history&&e.history[0]}}};n(585);var Eu=Fn()(Fu,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("tab-switcher"),c=Object(wt.J)("Status"),l=Object(wt.J)("FollowCard"),u=Object(wt.J)("router-link");return Object(wt.D)(),Object(wt.j)("div",pu,[Object(wt.k)("div",hu,[Object(wt.k)("div",bu,Object(wt.O)(e.$t("nav.search")),1)]),Object(wt.k)("div",mu,[Object(wt.W)(Object(wt.k)("input",{ref:"searchInput","onUpdate:modelValue":t[0]||(t[0]=t=>e.searchTerm=t),class:"search-input",placeholder:e.$t("nav.search"),onKeyup:t[1]||(t[1]=Object(wt.X)(t=>e.newQuery(e.searchTerm),["enter"]))},null,40,fu),[[wt.S,e.searchTerm]]),Object(wt.k)("button",{class:"btn button-default search-button",type:"submit",onClick:t[2]||(t[2]=t=>e.newQuery(e.searchTerm))},[Object(wt.m)(s,{icon:"search"})])]),e.loading?(Object(wt.D)(),Object(wt.j)("div",Ou,[Object(wt.m)(s,{icon:"circle-notch",spin:"",size:"lg"})])):e.loaded?(Object(wt.D)(),Object(wt.j)("div",ju,[Object(wt.k)("div",gu,[Object(wt.m)(a,{ref:"tabSwitcher","on-switch":e.onResultTabSwitch,"active-tab":e.currenResultTab},{default:Object(wt.V)(()=>[Object(wt.k)("span",{key:"statuses",label:e.$t("user_card.statuses")+e.resultCount("visibleStatuses")},null,8,vu),Object(wt.k)("span",{key:"people",label:e.$t("search.people")+e.resultCount("users")},null,8,yu),Object(wt.k)("span",{key:"hashtags",label:e.$t("search.hashtags")+e.resultCount("hashtags")},null,8,wu)]),_:1},8,["on-switch","active-tab"])])])):Object(wt.i)("",!0),Object(wt.k)("div",ku,["statuses"===e.currenResultTab?(Object(wt.D)(),Object(wt.j)("div",_u,[0===e.visibleStatuses.length&&!e.loading&&e.loaded?(Object(wt.D)(),Object(wt.j)("div",Su,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("search.no_results")),1)])):Object(wt.i)("",!0),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.visibleStatuses,e=>(Object(wt.D)(),Object(wt.h)(c,{key:e.id,collapsable:!1,expandable:!1,compact:!1,class:"search-result",statusoid:e,"no-heading":!1},null,8,["statusoid"]))),128))])):"people"===e.currenResultTab?(Object(wt.D)(),Object(wt.j)("div",Cu,[0===e.users.length&&!e.loading&&e.loaded?(Object(wt.D)(),Object(wt.j)("div",Pu,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("search.no_results")),1)])):Object(wt.i)("",!0),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.users,e=>(Object(wt.D)(),Object(wt.h)(l,{key:e.id,user:e,class:"list-item search-result"},null,8,["user"]))),128))])):"hashtags"===e.currenResultTab?(Object(wt.D)(),Object(wt.j)("div",xu,[0===e.hashtags.length&&!e.loading&&e.loaded?(Object(wt.D)(),Object(wt.j)("div",Du,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("search.no_results")),1)])):Object(wt.i)("",!0),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.hashtags,t=>(Object(wt.D)(),Object(wt.j)("div",{key:t.url,class:"status trend search-result"},[Object(wt.k)("div",Tu,[Object(wt.m)(u,{to:{name:"tag-timeline",params:{tag:t.name}}},{default:Object(wt.V)(()=>[Object(wt.l)(" #"+Object(wt.O)(t.name),1)]),_:2},1032,["to"]),e.lastHistoryRecord(t)?(Object(wt.D)(),Object(wt.j)("div",Iu,[1==e.lastHistoryRecord(t).accounts?(Object(wt.D)(),Object(wt.j)("span",$u,Object(wt.O)(e.$t("search.person_talking",{count:e.lastHistoryRecord(t).accounts})),1)):(Object(wt.D)(),Object(wt.j)("span",zu,Object(wt.O)(e.$t("search.people_talking",{count:e.lastHistoryRecord(t).accounts})),1))])):Object(wt.i)("",!0)]),e.lastHistoryRecord(t)?(Object(wt.D)(),Object(wt.j)("div",Mu,Object(wt.O)(e.lastHistoryRecord(t).uses),1)):Object(wt.i)("",!0)]))),128))])):Object(wt.i)("",!0)]),Uu])}]]);const Lu={class:"settings panel panel-default"},Ru={class:"panel-heading"},Au={class:"panel-body"},Nu={class:"container"},Bu={class:"text-fields"},Vu={class:"form--label",for:"sign-up-username"},Hu=["disabled","placeholder"],qu={key:0,class:"form-error"},Ju={key:0},Wu={class:"form--label",for:"sign-up-fullname"},Yu=["disabled","placeholder"],Gu={key:1,class:"form-error"},Ku={key:0},Xu={class:"form--label",for:"email"},Zu=["disabled"],Qu={key:2,class:"form-error"},ed={key:0},td={class:"form-group"},nd={class:"form--label",for:"bio"},rd=["disabled","placeholder"],id={class:"form--label",for:"sign-up-password"},od=["disabled"],sd={key:3,class:"form-error"},ad={key:0},cd={class:"form--label",for:"sign-up-password-confirmation"},ld=["disabled"],ud={key:4,class:"form-error"},dd={key:0},pd={key:1},hd={key:5,class:"form-group"},bd={class:"form--label",for:"reason"},md=["disabled","placeholder"],fd={key:6,id:"captcha-group",class:"form-group"},Od={class:"form--label",for:"captcha-label"},jd=["src"],gd=["disabled"],vd={key:7,class:"form-group"},yd={for:"token"},wd={class:"form-group"},kd=["disabled"],_d=["innerHTML"],Sd={key:0,class:"form-group"},Cd={class:"alert error"};var Pd=n(333),xd=n(62);function Dd(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Td(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Dd(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Dd(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Id={setup:function(){return{v$:Object(Pd.a)()}},data:function(){return{user:{email:"",fullname:"",username:"",password:"",confirm:"",reason:"",language:""},captcha:{}}},components:{InterfaceLanguageSwitcher:n(174).a},validations:function(){var e=this;return{user:{email:{required:Object(xd.b)((function(){return e.accountActivationRequired}))},username:{required:xd.a},fullname:{required:xd.a},password:{required:xd.a},confirm:{required:xd.a,sameAs:Object(xd.c)(this.user.password)},reason:{required:Object(xd.b)((function(){return e.accountApprovalRequired}))},language:{}}}},created:function(){(!this.registrationOpen&&!this.token||this.signedIn)&&this.$router.push({name:"root"}),this.setCaptcha()},computed:Td({token:function(){return this.$route.params.token},bioPlaceholder:function(){return this.replaceNewlines(this.$t("registration.bio_placeholder"))},reasonPlaceholder:function(){return this.replaceNewlines(this.$t("registration.reason_placeholder"))}},Object(a.e)({registrationOpen:function(e){return e.instance.registrationOpen},signedIn:function(e){return!!e.users.currentUser},isPending:function(e){return e.users.signUpPending},serverValidationErrors:function(e){return e.users.signUpErrors},termsOfService:function(e){return e.instance.tos},accountActivationRequired:function(e){return e.instance.accountActivationRequired},accountApprovalRequired:function(e){return e.instance.accountApprovalRequired}})),methods:Td(Td({},Object(a.b)(["signUp","getCaptcha"])),{},{submit:function(){var e=this;return i()(s.a.mark((function t(){return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e.user.nickname=e.user.username,e.user.token=e.token,e.user.captcha_solution=e.captcha.solution,e.user.captcha_token=e.captcha.token,e.user.captcha_answer_data=e.captcha.answer_data,e.user.language&&(e.user.language=Cl.a.internalToBackendLocale(e.user.language)),e.v$.$touch(),e.v$.$invalid){t.next=18;break}return t.prev=8,t.next=11,e.signUp(e.user);case 11:e.$router.push({name:"friends"}),t.next=18;break;case 14:t.prev=14,t.t0=t.catch(8),console.warn("Registration failed: ",t.t0),e.setCaptcha();case 18:case"end":return t.stop()}}),t,null,[[8,14]])})))()},setCaptcha:function(){var e=this;this.getCaptcha().then((function(t){e.captcha=t}))},replaceNewlines:function(e){return e.replace(/\s*\n\s*/g," \n")}})};n(587);var $d=Fn()(Id,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("interface-language-switcher");return Object(wt.D)(),Object(wt.j)("div",Lu,[Object(wt.k)("div",Ru,Object(wt.O)(e.$t("registration.registration")),1),Object(wt.k)("div",Au,[Object(wt.k)("form",{class:"registration-form",onSubmit:t[10]||(t[10]=Object(wt.Y)(t=>e.submit(e.user),["prevent"]))},[Object(wt.k)("div",Nu,[Object(wt.k)("div",Bu,[Object(wt.k)("div",{class:Object(wt.w)(["form-group",{"form-group--error":e.v$.user.username.$error}])},[Object(wt.k)("label",Vu,Object(wt.O)(e.$t("login.username")),1),Object(wt.W)(Object(wt.k)("input",{id:"sign-up-username","onUpdate:modelValue":t[0]||(t[0]=t=>e.v$.user.username.$model=t),disabled:e.isPending,class:"form-control",placeholder:e.$t("registration.username_placeholder")},null,8,Hu),[[wt.S,e.v$.user.username.$model,void 0,{trim:!0}]])],2),e.v$.user.username.$dirty?(Object(wt.D)(),Object(wt.j)("div",qu,[Object(wt.k)("ul",null,[e.v$.user.username.required?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",Ju,[Object(wt.k)("span",null,Object(wt.O)(e.$t("registration.validations.username_required")),1)]))])])):Object(wt.i)("",!0),Object(wt.k)("div",{class:Object(wt.w)(["form-group",{"form-group--error":e.v$.user.fullname.$error}])},[Object(wt.k)("label",Wu,Object(wt.O)(e.$t("registration.fullname")),1),Object(wt.W)(Object(wt.k)("input",{id:"sign-up-fullname","onUpdate:modelValue":t[1]||(t[1]=t=>e.v$.user.fullname.$model=t),disabled:e.isPending,class:"form-control",placeholder:e.$t("registration.fullname_placeholder")},null,8,Yu),[[wt.S,e.v$.user.fullname.$model,void 0,{trim:!0}]])],2),e.v$.user.fullname.$dirty?(Object(wt.D)(),Object(wt.j)("div",Gu,[Object(wt.k)("ul",null,[e.v$.user.fullname.required?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",Ku,[Object(wt.k)("span",null,Object(wt.O)(e.$t("registration.validations.fullname_required")),1)]))])])):Object(wt.i)("",!0),Object(wt.k)("div",{class:Object(wt.w)(["form-group",{"form-group--error":e.v$.user.email.$error}])},[Object(wt.k)("label",Xu,Object(wt.O)(e.$t("registration.email")),1),Object(wt.W)(Object(wt.k)("input",{id:"email","onUpdate:modelValue":t[2]||(t[2]=t=>e.v$.user.email.$model=t),disabled:e.isPending,class:"form-control",type:"email"},null,8,Zu),[[wt.S,e.v$.user.email.$model]])],2),e.v$.user.email.$dirty?(Object(wt.D)(),Object(wt.j)("div",Qu,[Object(wt.k)("ul",null,[e.v$.user.email.required?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",ed,[Object(wt.k)("span",null,Object(wt.O)(e.$t("registration.validations.email_required")),1)]))])])):Object(wt.i)("",!0),Object(wt.k)("div",td,[Object(wt.k)("label",nd,Object(wt.O)(e.$t("registration.bio"))+" ("+Object(wt.O)(e.$t("general.optional"))+")",1),Object(wt.W)(Object(wt.k)("textarea",{id:"bio","onUpdate:modelValue":t[3]||(t[3]=t=>e.user.bio=t),disabled:e.isPending,class:"form-control",placeholder:e.bioPlaceholder},null,8,rd),[[wt.S,e.user.bio]])]),Object(wt.k)("div",{class:Object(wt.w)(["form-group",{"form-group--error":e.v$.user.password.$error}])},[Object(wt.k)("label",id,Object(wt.O)(e.$t("login.password")),1),Object(wt.W)(Object(wt.k)("input",{id:"sign-up-password","onUpdate:modelValue":t[4]||(t[4]=t=>e.user.password=t),disabled:e.isPending,class:"form-control",type:"password"},null,8,od),[[wt.S,e.user.password]])],2),e.v$.user.password.$dirty?(Object(wt.D)(),Object(wt.j)("div",sd,[Object(wt.k)("ul",null,[e.v$.user.password.required?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",ad,[Object(wt.k)("span",null,Object(wt.O)(e.$t("registration.validations.password_required")),1)]))])])):Object(wt.i)("",!0),Object(wt.k)("div",{class:Object(wt.w)(["form-group",{"form-group--error":e.v$.user.confirm.$error}])},[Object(wt.k)("label",cd,Object(wt.O)(e.$t("registration.password_confirm")),1),Object(wt.W)(Object(wt.k)("input",{id:"sign-up-password-confirmation","onUpdate:modelValue":t[5]||(t[5]=t=>e.user.confirm=t),disabled:e.isPending,class:"form-control",type:"password"},null,8,ld),[[wt.S,e.user.confirm]])],2),e.v$.user.confirm.$dirty?(Object(wt.D)(),Object(wt.j)("div",ud,[Object(wt.k)("ul",null,[e.v$.user.confirm.required?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",dd,[Object(wt.k)("span",null,Object(wt.O)(e.$t("registration.validations.password_confirmation_required")),1)])),e.v$.user.confirm.sameAsPassword?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",pd,[Object(wt.k)("span",null,Object(wt.O)(e.$t("registration.validations.password_confirmation_match")),1)]))])])):Object(wt.i)("",!0),Object(wt.k)("div",{class:Object(wt.w)(["form-group",{"form-group--error":e.v$.user.language.$error}])},[Object(wt.m)(s,{for:"email-language","prompt-text":e.$t("registration.email_language"),language:e.v$.user.language.$model,"set-language":t=>e.v$.user.language.$model=t},null,8,["prompt-text","language","set-language"])],2),e.accountApprovalRequired?(Object(wt.D)(),Object(wt.j)("div",hd,[Object(wt.k)("label",bd,Object(wt.O)(e.$t("registration.reason")),1),Object(wt.W)(Object(wt.k)("textarea",{id:"reason","onUpdate:modelValue":t[6]||(t[6]=t=>e.user.reason=t),disabled:e.isPending,class:"form-control",placeholder:e.reasonPlaceholder},null,8,md),[[wt.S,e.user.reason]])])):Object(wt.i)("",!0),"none"!=e.captcha.type?(Object(wt.D)(),Object(wt.j)("div",fd,[Object(wt.k)("label",Od,Object(wt.O)(e.$t("registration.captcha")),1),["kocaptcha","native"].includes(e.captcha.type)?(Object(wt.D)(),Object(wt.j)(wt.a,{key:0},[Object(wt.k)("img",{src:e.captcha.url,onClick:t[7]||(t[7]=(...t)=>e.setCaptcha&&e.setCaptcha(...t))},null,8,jd),Object(wt.k)("sub",null,Object(wt.O)(e.$t("registration.new_captcha")),1),Object(wt.W)(Object(wt.k)("input",{id:"captcha-answer","onUpdate:modelValue":t[8]||(t[8]=t=>e.captcha.solution=t),disabled:e.isPending,class:"form-control",type:"text",autocomplete:"off",autocorrect:"off",autocapitalize:"off",spellcheck:"false"},null,8,gd),[[wt.S,e.captcha.solution]])],64)):Object(wt.i)("",!0)])):Object(wt.i)("",!0),e.token?(Object(wt.D)(),Object(wt.j)("div",vd,[Object(wt.k)("label",yd,Object(wt.O)(e.$t("registration.token")),1),Object(wt.W)(Object(wt.k)("input",{id:"token","onUpdate:modelValue":t[9]||(t[9]=t=>e.token=t),disabled:"true",class:"form-control",type:"text"},null,512),[[wt.S,e.token]])])):Object(wt.i)("",!0),Object(wt.k)("div",wd,[Object(wt.k)("button",{disabled:e.isPending,type:"submit",class:"btn button-default"},Object(wt.O)(e.$t("registration.register")),9,kd)])]),Object(wt.k)("div",{class:"terms-of-service",innerHTML:e.termsOfService},null,8,_d)]),e.serverValidationErrors.length?(Object(wt.D)(),Object(wt.j)("div",Sd,[Object(wt.k)("div",Cd,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.serverValidationErrors,e=>(Object(wt.D)(),Object(wt.j)("span",{key:e},Object(wt.O)(e),1))),128))])])):Object(wt.i)("",!0)],32)])])}]]);const zd={class:"settings panel panel-default"},Md={class:"panel-heading"},Ud={class:"panel-body"},Fd={class:"container"},Ed={key:0},Ld={key:0},Rd={key:1},Ad={key:1},Nd={key:0},Bd={class:"form-group text-center"},Vd={key:2},Hd={key:0,class:"password-reset-required error"},qd={class:"form-group"},Jd=["disabled","placeholder"],Wd={class:"form-group"},Yd=["disabled"],Gd={key:3,class:"alert error notice-dismissible"};var Kd=function(e){var t=e.instance,n={email:e.email},r=De()(n,(function(e,t,n){var r="".concat(n,"=").concat(encodeURIComponent(t));return"".concat(e,"&").concat(r)}),""),i="".concat(t).concat("/auth/password","?").concat(r);return window.fetch(i,{method:"POST"})};function Xd(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Zd(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Xd(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Xd(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.rb);var Qd={data:function(){return{user:{email:""},isPending:!1,success:!1,throttled:!1,error:null}},computed:Zd(Zd({},Object(a.e)({signedIn:function(e){return!!e.users.currentUser},instance:function(e){return e.instance}})),{},{mailerEnabled:function(){return this.instance.mailerEnabled}}),created:function(){this.signedIn&&this.$router.push({name:"root"})},props:{passwordResetRequested:{default:!1,type:Boolean}},methods:{dismissError:function(){this.error=null},submit:function(){var e=this;this.isPending=!0;var t=this.user.email,n=this.instance.server;Kd({instance:n,email:t}).then((function(t){var n=t.status;e.isPending=!1,e.user.email="",204===n?(e.success=!0,e.error=null):429===n&&(e.throttled=!0,e.error=e.$t("password_reset.too_many_requests"))})).catch((function(){e.isPending=!1,e.user.email="",e.error=e.$t("general.generic_error")}))}}};n(588);var ep=Fn()(Qd,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("router-link"),a=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",zd,[Object(wt.k)("div",Md,Object(wt.O)(e.$t("password_reset.password_reset")),1),Object(wt.k)("div",Ud,[Object(wt.k)("form",{class:"password-reset-form",onSubmit:t[2]||(t[2]=Object(wt.Y)((...t)=>e.submit&&e.submit(...t),["prevent"]))},[Object(wt.k)("div",Fd,[e.mailerEnabled?e.success||e.throttled?(Object(wt.D)(),Object(wt.j)("div",Ad,[e.success?(Object(wt.D)(),Object(wt.j)("p",Nd,Object(wt.O)(e.$t("password_reset.check_email")),1)):Object(wt.i)("",!0),Object(wt.k)("div",Bd,[Object(wt.m)(s,{to:{name:"root"}},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.$t("password_reset.return_home")),1)]),_:1})])])):(Object(wt.D)(),Object(wt.j)("div",Vd,[e.passwordResetRequested?(Object(wt.D)(),Object(wt.j)("p",Hd,Object(wt.O)(e.$t("password_reset.password_reset_required")),1)):Object(wt.i)("",!0),Object(wt.k)("p",null,Object(wt.O)(e.$t("password_reset.instruction")),1),Object(wt.k)("div",qd,[Object(wt.W)(Object(wt.k)("input",{ref:"email","onUpdate:modelValue":t[0]||(t[0]=t=>e.user.email=t),disabled:e.isPending,placeholder:e.$t("password_reset.placeholder"),class:"form-control",type:"input"},null,8,Jd),[[wt.S,e.user.email]])]),Object(wt.k)("div",Wd,[Object(wt.k)("button",{disabled:e.isPending,type:"submit",class:"btn button-default btn-block"},Object(wt.O)(e.$t("settings.save")),9,Yd)])])):(Object(wt.D)(),Object(wt.j)("div",Ed,[e.passwordResetRequested?(Object(wt.D)(),Object(wt.j)("p",Ld,Object(wt.O)(e.$t("password_reset.password_reset_required_but_mailer_is_disabled")),1)):(Object(wt.D)(),Object(wt.j)("p",Rd,Object(wt.O)(e.$t("password_reset.password_reset_disabled")),1))])),e.error?(Object(wt.D)(),Object(wt.j)("p",Gd,[Object(wt.k)("span",null,Object(wt.O)(e.error),1),Object(wt.k)("a",{class:"fa-scale-110 fa-old-padding dismiss",onClick:t[1]||(t[1]=Object(wt.Y)(t=>e.dismissError(),["prevent"]))},[Object(wt.m)(a,{icon:"times"})])])):Object(wt.i)("",!0)])],32)])])}]]);const tp={class:"settings panel panel-default"},np={class:"panel-heading"},rp={class:"title"},ip={class:"panel-body"};const op={class:"follow-request-card-content-container"};var sp={props:["user"],components:{BasicUserCard:Qc.a},methods:{findFollowRequestNotificationId:function(){var e=this,t=Object(W.e)(this.$store).find((function(t){return t.from_profile.id===e.user.id&&"follow_request"===t.type}));return t&&t.id},approveUser:function(){this.$store.state.api.backendInteractor.approveUser({id:this.user.id}),this.$store.dispatch("removeFollowRequest",this.user);var e=this.findFollowRequestNotificationId();this.$store.dispatch("markSingleNotificationAsSeen",{id:e}),this.$store.dispatch("updateNotification",{id:e,updater:function(e){e.type="follow"}})},denyUser:function(){var e=this,t=this.findFollowRequestNotificationId();this.$store.state.api.backendInteractor.denyUser({id:this.user.id}).then((function(){e.$store.dispatch("dismissNotificationLocal",{id:t}),e.$store.dispatch("removeFollowRequest",e.user)}))}}};n(589);var ap={components:{FollowRequestCard:Fn()(sp,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("basic-user-card");return Object(wt.D)(),Object(wt.h)(s,{user:e.user},{default:Object(wt.V)(()=>[Object(wt.k)("div",op,[Object(wt.k)("button",{class:"btn button-default",onClick:t[0]||(t[0]=(...t)=>e.approveUser&&e.approveUser(...t))},Object(wt.O)(e.$t("user_card.approve")),1),Object(wt.k)("button",{class:"btn button-default",onClick:t[1]||(t[1]=(...t)=>e.denyUser&&e.denyUser(...t))},Object(wt.O)(e.$t("user_card.deny")),1)])]),_:1},8,["user"])}]])},computed:{requests:function(){return this.$store.state.api.followRequests}}};var cp=Fn()(ap,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FollowRequestCard");return Object(wt.D)(),Object(wt.j)("div",tp,[Object(wt.k)("div",np,[Object(wt.k)("div",rp,Object(wt.O)(e.$t("nav.friend_requests")),1)]),Object(wt.k)("div",ip,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.requests,e=>(Object(wt.D)(),Object(wt.h)(s,{key:e.id,user:e,class:"list-item"},null,8,["user"]))),128))])])}]]);var lp={props:["code"],mounted:function(){var e=this;if(this.code){var t=this.$store.state.oauth,n=t.clientId,r=t.clientSecret;ze.getToken({clientId:n,clientSecret:r,instance:this.$store.state.instance.server,code:this.code}).then((function(t){e.$store.commit("setToken",t.access_token),e.$store.dispatch("loginUser",t.access_token),e.$router.push({name:"friends"})}))}}};var up=Fn()(lp,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("h1",null,"...")}]]);const dp={class:"panel panel-default"},pp={class:"panel-heading"},hp={class:"panel-body"};var bp={components:{FollowCard:tu},data:function(){return{users:[]}},mounted:function(){this.getWhoToFollow()},methods:{showWhoToFollow:function(e){var t=this;e.forEach((function(e,n){t.$store.state.api.backendInteractor.fetchUser({id:e.acct}).then((function(e){e.error||(t.$store.commit("addNewUsers",[e]),t.users.push(e))}))}))},getWhoToFollow:function(){var e=this,t=this.$store.state.users.currentUser.credentials;t&&j.c.suggestions({credentials:t}).then((function(t){e.showWhoToFollow(t)}))}}};var mp=Fn()(bp,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FollowCard");return Object(wt.D)(),Object(wt.j)("div",dp,[Object(wt.k)("div",pp,Object(wt.O)(e.$t("who_to_follow.who_to_follow")),1),Object(wt.k)("div",hp,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.users,e=>(Object(wt.D)(),Object(wt.h)(s,{key:e.id,user:e,class:"list-item"},null,8,["user"]))),128))])])}]]);const fp={class:"column-inner"};const Op={class:"panel panel-default"},jp={class:"panel-body"},gp=["innerHTML"];var vp={computed:{content:function(){return this.$store.state.instance.tos}}};n(590);var yp=Fn()(vp,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("div",null,[Object(wt.k)("div",Op,[Object(wt.k)("div",jp,[Object(wt.k)("div",{class:"tos-content",innerHTML:e.content},null,8,gp)])])])}]]);const wp={class:"staff-panel"},kp={class:"panel panel-default base01-background"},_p={class:"panel-heading timeline-heading base02-background"},Sp={class:"title"},Cp={class:"panel-body"};var Pp=n(334),xp=n.n(Pp);function Dp(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Tp(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Dp(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Dp(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Ip={created:function(){var e=this;this.$store.state.instance.staffAccounts.forEach((function(t){return e.$store.dispatch("fetchUserIfMissing",t)}))},components:{BasicUserCard:Qc.a},computed:Tp(Tp({groupedStaffAccounts:function(){var e=he()(this.staffAccounts,this.findUser).filter((function(e){return e})),t=xp()(e,"role");return[{role:"admin",users:t.admin},{role:"moderator",users:t.moderator}].filter((function(e){return e.users}))}},Object(a.c)(["findUser"])),Object(a.e)({staffAccounts:function(e){return e.instance.staffAccounts}}))};n(591);var $p=Fn()(Ip,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("basic-user-card");return Object(wt.D)(),Object(wt.j)("div",wp,[Object(wt.k)("div",kp,[Object(wt.k)("div",_p,[Object(wt.k)("div",Sp,Object(wt.O)(e.$t("about.staff")),1)]),Object(wt.k)("div",Cp,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.groupedStaffAccounts,t=>(Object(wt.D)(),Object(wt.j)("div",{key:t.role,class:"staff-group"},[Object(wt.k)("h4",null,Object(wt.O)(e.$t("general.role."+t.role)),1),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(t.users,e=>(Object(wt.D)(),Object(wt.h)(s,{key:e.screen_name,user:e},null,8,["user"]))),128))]))),128))])])])}]]);const zp={key:0,class:"mrf-transparency-panel"},Mp={class:"panel panel-default base01-background"},Up={class:"panel-heading timeline-heading base02-background"},Fp={class:"title"},Ep={class:"panel-body"},Lp={class:"mrf-section"},Rp=["textContent"],Ap={key:0},Np={key:1},Bp={key:0},Vp={key:1},Hp={key:2},qp={key:0},Jp={key:1},Wp={key:3},Yp={key:0},Gp={key:1},Kp={key:4},Xp={key:0},Zp={key:1},Qp={key:5},eh={key:0},th={key:1},nh={key:6},rh={key:0},ih={key:1},oh={key:7},sh={key:8},ah=["textContent"],ch={key:9},lh=["textContent"],uh={key:10};function dh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ph(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?dh(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):dh(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var hh=function(e,t,n){return e.map((function(e){return t[n]&&t[n][e]&&t[n][e].reason?{instance:e,reason:t[n][e].reason}:{instance:e,reason:""}}))},bh={computed:ph(ph({},Object(a.e)({federationPolicy:function(e){return qt()(e,"instance.federationPolicy")},mrfPolicies:function(e){return qt()(e,"instance.federationPolicy.mrf_policies",[])},quarantineInstances:function(e){return hh(qt()(e,"instance.federationPolicy.quarantined_instances",[]),qt()(e,"instance.federationPolicy.quarantined_instances_info",[]),"quarantined_instances")},acceptInstances:function(e){return hh(qt()(e,"instance.federationPolicy.mrf_simple.accept",[]),qt()(e,"instance.federationPolicy.mrf_simple_info",[]),"accept")},rejectInstances:function(e){return hh(qt()(e,"instance.federationPolicy.mrf_simple.reject",[]),qt()(e,"instance.federationPolicy.mrf_simple_info",[]),"reject")},ftlRemovalInstances:function(e){return hh(qt()(e,"instance.federationPolicy.mrf_simple.federated_timeline_removal",[]),qt()(e,"instance.federationPolicy.mrf_simple_info",[]),"federated_timeline_removal")},mediaNsfwInstances:function(e){return hh(qt()(e,"instance.federationPolicy.mrf_simple.media_nsfw",[]),qt()(e,"instance.federationPolicy.mrf_simple_info",[]),"media_nsfw")},mediaRemovalInstances:function(e){return hh(qt()(e,"instance.federationPolicy.mrf_simple.media_removal",[]),qt()(e,"instance.federationPolicy.mrf_simple_info",[]),"media_removal")},keywordsFtlRemoval:function(e){return qt()(e,"instance.federationPolicy.mrf_keyword.federated_timeline_removal",[])},keywordsReject:function(e){return qt()(e,"instance.federationPolicy.mrf_keyword.reject",[])},keywordsReplace:function(e){return qt()(e,"instance.federationPolicy.mrf_keyword.replace",[])}})),{},{hasInstanceSpecificPolicies:function(){return this.quarantineInstances.length||this.acceptInstances.length||this.rejectInstances.length||this.ftlRemovalInstances.length||this.mediaNsfwInstances.length||this.mediaRemovalInstances.length},hasKeywordPolicies:function(){return this.keywordsFtlRemoval.length||this.keywordsReject.length||this.keywordsReplace.length}})};n(592);var mh={components:{InstanceSpecificPanel:Yr,FeaturesPanel:ai,TermsOfServicePanel:yp,StaffPanel:$p,MRFTransparencyPanel:Fn()(bh,[["render",function(e,t,n,r,i,o){return e.federationPolicy?(Object(wt.D)(),Object(wt.j)("div",zp,[Object(wt.k)("div",Mp,[Object(wt.k)("div",Up,[Object(wt.k)("div",Fp,Object(wt.O)(e.$t("about.mrf.federation")),1)]),Object(wt.k)("div",Ep,[Object(wt.k)("div",Lp,[Object(wt.k)("h2",null,Object(wt.O)(e.$t("about.mrf.mrf_policies")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("about.mrf.mrf_policies_desc")),1),Object(wt.k)("ul",null,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.mrfPolicies,e=>(Object(wt.D)(),Object(wt.j)("li",{key:e,textContent:Object(wt.O)(e)},null,8,Rp))),128))]),e.hasInstanceSpecificPolicies?(Object(wt.D)(),Object(wt.j)("h2",Ap,Object(wt.O)(e.$t("about.mrf.simple.simple_policies")),1)):Object(wt.i)("",!0),e.acceptInstances.length?(Object(wt.D)(),Object(wt.j)("div",Np,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.simple.accept")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("about.mrf.simple.accept_desc")),1),Object(wt.k)("table",null,[Object(wt.k)("tr",null,[Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.instance")),1),Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.reason")),1)]),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.acceptInstances,t=>(Object(wt.D)(),Object(wt.j)("tr",{key:t.instance+"_accept"},[Object(wt.k)("td",null,Object(wt.O)(t.instance),1),""===t.reason?(Object(wt.D)(),Object(wt.j)("td",Bp,Object(wt.O)(e.$t("about.mrf.simple.not_applicable")),1)):(Object(wt.D)(),Object(wt.j)("td",Vp,Object(wt.O)(t.reason),1))]))),128))])])):Object(wt.i)("",!0),e.rejectInstances.length?(Object(wt.D)(),Object(wt.j)("div",Hp,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.simple.reject")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("about.mrf.simple.reject_desc")),1),Object(wt.k)("table",null,[Object(wt.k)("tr",null,[Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.instance")),1),Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.reason")),1)]),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.rejectInstances,t=>(Object(wt.D)(),Object(wt.j)("tr",{key:t.instance+"_reject"},[Object(wt.k)("td",null,Object(wt.O)(t.instance),1),""===t.reason?(Object(wt.D)(),Object(wt.j)("td",qp,Object(wt.O)(e.$t("about.mrf.simple.not_applicable")),1)):(Object(wt.D)(),Object(wt.j)("td",Jp,Object(wt.O)(t.reason),1))]))),128))])])):Object(wt.i)("",!0),e.quarantineInstances.length?(Object(wt.D)(),Object(wt.j)("div",Wp,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.simple.quarantine")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("about.mrf.simple.quarantine_desc")),1),Object(wt.k)("table",null,[Object(wt.k)("tr",null,[Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.instance")),1),Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.reason")),1)]),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.quarantineInstances,t=>(Object(wt.D)(),Object(wt.j)("tr",{key:t.instance+"_quarantine"},[Object(wt.k)("td",null,Object(wt.O)(t.instance),1),""===t.reason?(Object(wt.D)(),Object(wt.j)("td",Yp,Object(wt.O)(e.$t("about.mrf.simple.not_applicable")),1)):(Object(wt.D)(),Object(wt.j)("td",Gp,Object(wt.O)(t.reason),1))]))),128))])])):Object(wt.i)("",!0),e.ftlRemovalInstances.length?(Object(wt.D)(),Object(wt.j)("div",Kp,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.simple.ftl_removal")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("about.mrf.simple.ftl_removal_desc")),1),Object(wt.k)("table",null,[Object(wt.k)("tr",null,[Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.instance")),1),Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.reason")),1)]),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.ftlRemovalInstances,t=>(Object(wt.D)(),Object(wt.j)("tr",{key:t.instance+"_ftl_removal"},[Object(wt.k)("td",null,Object(wt.O)(t.instance),1),""===t.reason?(Object(wt.D)(),Object(wt.j)("td",Xp,Object(wt.O)(e.$t("about.mrf.simple.not_applicable")),1)):(Object(wt.D)(),Object(wt.j)("td",Zp,Object(wt.O)(t.reason),1))]))),128))])])):Object(wt.i)("",!0),e.mediaNsfwInstances.length?(Object(wt.D)(),Object(wt.j)("div",Qp,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.simple.media_nsfw")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("about.mrf.simple.media_nsfw_desc")),1),Object(wt.k)("table",null,[Object(wt.k)("tr",null,[Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.instance")),1),Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.reason")),1)]),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.mediaNsfwInstances,t=>(Object(wt.D)(),Object(wt.j)("tr",{key:t.instance+"_media_nsfw"},[Object(wt.k)("td",null,Object(wt.O)(t.instance),1),""===t.reason?(Object(wt.D)(),Object(wt.j)("td",eh,Object(wt.O)(e.$t("about.mrf.simple.not_applicable")),1)):(Object(wt.D)(),Object(wt.j)("td",th,Object(wt.O)(t.reason),1))]))),128))])])):Object(wt.i)("",!0),e.mediaRemovalInstances.length?(Object(wt.D)(),Object(wt.j)("div",nh,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.simple.media_removal")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("about.mrf.simple.media_removal_desc")),1),Object(wt.k)("table",null,[Object(wt.k)("tr",null,[Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.instance")),1),Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.reason")),1)]),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.mediaRemovalInstances,t=>(Object(wt.D)(),Object(wt.j)("tr",{key:t.instance+"_media_removal"},[Object(wt.k)("td",null,Object(wt.O)(t.instance),1),""===t.reason?(Object(wt.D)(),Object(wt.j)("td",rh,Object(wt.O)(e.$t("about.mrf.simple.not_applicable")),1)):(Object(wt.D)(),Object(wt.j)("td",ih,Object(wt.O)(t.reason),1))]))),128))])])):Object(wt.i)("",!0),e.hasKeywordPolicies?(Object(wt.D)(),Object(wt.j)("h2",oh,Object(wt.O)(e.$t("about.mrf.keyword.keyword_policies")),1)):Object(wt.i)("",!0),e.keywordsFtlRemoval.length?(Object(wt.D)(),Object(wt.j)("div",sh,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.keyword.ftl_removal")),1),Object(wt.k)("ul",null,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.keywordsFtlRemoval,e=>(Object(wt.D)(),Object(wt.j)("li",{key:e,textContent:Object(wt.O)(e)},null,8,ah))),128))])])):Object(wt.i)("",!0),e.keywordsReject.length?(Object(wt.D)(),Object(wt.j)("div",ch,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.keyword.reject")),1),Object(wt.k)("ul",null,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.keywordsReject,e=>(Object(wt.D)(),Object(wt.j)("li",{key:e,textContent:Object(wt.O)(e)},null,8,lh))),128))])])):Object(wt.i)("",!0),e.keywordsReplace.length?(Object(wt.D)(),Object(wt.j)("div",uh,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.keyword.replace")),1),Object(wt.k)("ul",null,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.keywordsReplace,t=>(Object(wt.D)(),Object(wt.j)("li",{key:t},Object(wt.O)(t.pattern)+" "+Object(wt.O)(e.$t("about.mrf.keyword.is_replaced_by"))+" "+Object(wt.O)(t.replacement),1))),128))])])):Object(wt.i)("",!0)])])])])):Object(wt.i)("",!0)}]])},computed:{showFeaturesPanel:function(){return this.$store.state.instance.showFeaturesPanel},showInstanceSpecificPanel:function(){return this.$store.state.instance.showInstanceSpecificPanel&&!this.$store.getters.mergedConfig.hideISP&&this.$store.state.instance.instanceSpecificPanelContent}}};var fh=Fn()(mh,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("instance-specific-panel"),a=Object(wt.J)("staff-panel"),c=Object(wt.J)("terms-of-service-panel"),l=Object(wt.J)("MRFTransparencyPanel"),u=Object(wt.J)("features-panel");return Object(wt.D)(),Object(wt.j)("div",fp,[e.showInstanceSpecificPanel?(Object(wt.D)(),Object(wt.h)(s,{key:0})):Object(wt.i)("",!0),Object(wt.m)(a),Object(wt.m)(c),Object(wt.m)(l),e.showFeaturesPanel?(Object(wt.D)(),Object(wt.h)(u,{key:1})):Object(wt.i)("",!0)])}]]);const Oh={class:"panel panel-default"},jh={class:"panel-heading"},gh={class:"panel-body"},vh={key:0};var yh={data:function(){return{error:!1}},mounted:function(){this.redirect()},methods:{redirect:function(){var e=this,t=this.$route.params.username+"@"+this.$route.params.hostname;this.$store.state.api.backendInteractor.fetchUser({id:t}).then((function(t){if(t.error)e.error=!0;else{e.$store.commit("addNewUsers",[t]);var n=t.id;e.$router.replace({name:"external-user-profile",params:{id:n}})}})).catch((function(){e.error=!0}))}}};var wh,kh,_h=Fn()(yh,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("div",Oh,[Object(wt.k)("div",jh,Object(wt.O)(e.$t("remote_user_resolver.remote_user_resolver")),1),Object(wt.k)("div",gh,[Object(wt.k)("p",null,Object(wt.O)(e.$t("remote_user_resolver.searching_for"))+" @"+Object(wt.O)(e.$route.params.username)+"@"+Object(wt.O)(e.$route.params.hostname),1),e.error?(Object(wt.D)(),Object(wt.j)("p",vh,Object(wt.O)(e.$t("remote_user_resolver.error")),1)):Object(wt.i)("",!0)])])}]]),Sh=function(e){var t=function(t,n,r){e.state.users.currentUser?r():r(e.state.instance.redirectRootNoLogin||"/main/all")},n=[{name:"root",path:"/",redirect:function(t){return(e.state.users.currentUser?e.state.instance.redirectRootLogin:e.state.instance.redirectRootNoLogin)||"/main/all"}},{name:"public-external-timeline",path:"/main/all",component:Za},{name:"public-timeline",path:"/main/public",component:Ka},{name:"friends",path:"/main/friends",component:ec,beforeEnter:t},{name:"tag-timeline",path:"/tag/:tag",component:nc},{name:"bookmarks",path:"/bookmarks",component:ic},{name:"conversation",path:"/notice/:id",component:sc,meta:{dontScroll:!0}},{name:"remote-user-profile-acct",path:"/remote-users/:_(@)?:username([^/@]+)@:hostname([^/@]+)",component:_h,beforeEnter:t},{name:"remote-user-profile",path:"/remote-users/:hostname/:username",component:_h,beforeEnter:t},{name:"external-user-profile",path:"/users/:id",component:du},{name:"interactions",path:"/users/:username/interactions",component:Oc,beforeEnter:t},{name:"dms",path:"/users/:username/dms",component:gc,beforeEnter:t},{name:"registration",path:"/registration",component:$d},{name:"password-reset",path:"/password-reset",component:ep,props:!0},{name:"registration-token",path:"/registration/:token",component:$d},{name:"friend-requests",path:"/friend-requests",component:cp,beforeEnter:t},{name:"notifications",path:"/:username/notifications",component:fs.default,props:function(){return{disableTeleport:!0}},beforeEnter:t},{name:"login",path:"/login",component:fr},{name:"shout-panel",path:"/shout-panel",component:Fi,props:function(){return{floating:!1}}},{name:"oauth-callback",path:"/oauth-callback",component:up,props:function(e){return{code:e.query.code}}},{name:"search",path:"/search",component:Eu,props:function(e){return{query:e.query.query}}},{name:"who-to-follow",path:"/who-to-follow",component:mp,beforeEnter:t},{name:"about",path:"/about",component:fh},{name:"user-profile",path:"/:_(users)?/:name",component:du}];return e.state.instance.pleromaChatMessagesAvailable&&(n=n.concat([{name:"chat",path:"/users/:username/chats/:recipient_id",component:El,meta:{dontScroll:!1},beforeEnter:t},{name:"chats",path:"/users/:username/chats",component:al,meta:{dontScroll:!1},beforeEnter:t}])),n},Ch=n(170),Ph=new Set([]),xh=function(e){var t=window.innerWidth-document.documentElement.clientWidth;Ch.disableBodyScroll(e,{reserveScrollBarGap:!0}),Ph.add(e),setTimeout((function(){if(Ph.size<=1){if(void 0===wh){var e=document.getElementById("nav");wh=window.getComputedStyle(e).getPropertyValue("padding-right"),e.style.paddingRight=wh?"calc(".concat(wh," + ").concat(t,"px)"):"".concat(t,"px")}if(void 0===kh){var n=document.getElementById("app_bg_wrapper");kh=window.getComputedStyle(n).getPropertyValue("right"),n.style.right=kh?"calc(".concat(kh," + ").concat(t,"px)"):"".concat(t,"px")}document.body.classList.add("scroll-locked")}}))},Dh=function(e){Ph.delete(e),setTimeout((function(){0===Ph.size&&(void 0!==wh&&(document.getElementById("nav").style.paddingRight=wh,wh=void 0),void 0!==kh&&(document.getElementById("app_bg_wrapper").style.right=kh,kh=void 0),document.body.classList.remove("scroll-locked"))})),Ch.enableBodyScroll(e)},Th={mounted:function(e,t){t.value&&xh(e)},updated:function(e,t){t.oldValue!==t.value&&(t.value?xh(e):Dh(e))},unmounted:function(e){Dh(e)}},Ih=function(e){e.directive("body-scroll-lock",Th)},$h=n(101);function zh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Mh(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?zh(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):zh(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Uh,Fh,Eh,Lh,Rh,Ah,Nh,Bh,Vh,Hh,qh,Jh,Wh,Yh=null,Gh=function(e){var t=atob(e),n=Uint8Array.from(d()(t).map((function(e){return e.charCodeAt(0)})));return(new TextDecoder).decode(n)},Kh=(Uh=i()(s.a.mark((function e(t){var n,r,i;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((n=document.getElementById("initial-results")?(Yh||(Yh=JSON.parse(document.getElementById("initial-results").textContent)),Yh):null)&&n[t]){e.next=3;break}return e.abrupt("return",window.fetch(t));case 3:return r=Gh(n[t]),i=JSON.parse(r),e.abrupt("return",{ok:!0,json:function(){return i},text:function(){return i}});case 6:case"end":return e.stop()}}),e)}))),function(e){return Uh.apply(this,arguments)}),Xh=(Fh=i()(s.a.mark((function e(t){var n,r,i,o,a;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.prev=1,e.next=4,Kh("/api/v1/instance");case 4:if(!(r=e.sent).ok){e.next=16;break}return e.next=8,r.json();case 8:i=e.sent,o=i.max_toot_chars,a=i.pleroma.vapid_public_key,n.dispatch("setInstanceOption",{name:"textlimit",value:o}),n.dispatch("setInstanceOption",{name:"accountApprovalRequired",value:i.approval_required}),a&&n.dispatch("setInstanceOption",{name:"vapidPublicKey",value:a}),e.next=17;break;case 16:throw r;case 17:e.next=23;break;case 19:e.prev=19,e.t0=e.catch(1),console.error("Could not load instance config, potentially fatal"),console.error(e.t0);case 23:case"end":return e.stop()}}),e,null,[[1,19]])}))),function(e){return Fh.apply(this,arguments)}),Zh=(Eh=i()(s.a.mark((function e(t){var n,r;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t.store,e.prev=1,e.next=4,window.fetch("/api/pleroma/frontend_configurations");case 4:if(!(n=e.sent).ok){e.next=12;break}return e.next=8,n.json();case 8:return r=e.sent,e.abrupt("return",r.pleroma_fe);case 12:throw n;case 13:e.next=19;break;case 15:e.prev=15,e.t0=e.catch(1),console.error("Could not load backend-provided frontend config, potentially fatal"),console.error(e.t0);case 19:case"end":return e.stop()}}),e,null,[[1,15]])}))),function(e){return Eh.apply(this,arguments)}),Qh=(Lh=i()(s.a.mark((function e(){var t;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,window.fetch("/static/config.json");case 3:if(!(t=e.sent).ok){e.next=8;break}return e.abrupt("return",t.json());case 8:throw t;case 9:e.next=16;break;case 11:return e.prev=11,e.t0=e.catch(0),console.warn("Failed to load static/config.json, continuing without it."),console.warn(e.t0),e.abrupt("return",{});case 16:case"end":return e.stop()}}),e,null,[[0,11]])}))),function(){return Lh.apply(this,arguments)}),eb=(Rh=i()(s.a.mark((function e(t){var n,r,i,o,a,c,l;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.apiConfig,r=t.staticConfig,i=t.store,o=window.___pleromafe_dev_overrides||{},a=window.___pleromafe_mode.NODE_ENV,c={},o.staticConfigPreference&&"development"===a?(console.warn("OVERRIDING API CONFIG WITH STATIC CONFIG"),c=Object.assign({},n,r)):c=Object.assign({},r,n),(l=function(e){i.dispatch("setInstanceOption",{name:e,value:c[e]})})("nsfwCensorImage"),l("background"),l("hidePostStats"),l("hideBotIndication"),l("hideUserStats"),l("hideFilteredStatuses"),l("logo"),i.dispatch("setInstanceOption",{name:"logoMask",value:void 0===c.logoMask||c.logoMask}),i.dispatch("setInstanceOption",{name:"logoMargin",value:void 0===c.logoMargin?0:c.logoMargin}),l("logoLeft"),i.commit("authFlow/setInitialStrategy",c.loginMethod),l("redirectRootNoLogin"),l("redirectRootLogin"),l("showInstanceSpecificPanel"),l("minimalScopesMode"),l("hideMutedPosts"),l("collapseMessageWithSubject"),l("scopeCopy"),l("subjectLineBehavior"),l("postContentType"),l("alwaysShowSubjectInput"),l("showFeaturesPanel"),l("hideSitename"),l("sidebarRight"),e.abrupt("return",i.dispatch("setTheme",c.theme));case 31:case"end":return e.stop()}}),e)}))),function(e){return Rh.apply(this,arguments)}),tb=(Ah=i()(s.a.mark((function e(t){var n,r,i;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.prev=1,e.next=4,window.fetch("/static/terms-of-service.html");case 4:if(!(r=e.sent).ok){e.next=12;break}return e.next=8,r.text();case 8:i=e.sent,n.dispatch("setInstanceOption",{name:"tos",value:i}),e.next=13;break;case 12:throw r;case 13:e.next=19;break;case 15:e.prev=15,e.t0=e.catch(1),console.warn("Can't load TOS"),console.warn(e.t0);case 19:case"end":return e.stop()}}),e,null,[[1,15]])}))),function(e){return Ah.apply(this,arguments)}),nb=(Nh=i()(s.a.mark((function e(t){var n,r,i;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.prev=1,e.next=4,Kh("/instance/panel.html");case 4:if(!(r=e.sent).ok){e.next=12;break}return e.next=8,r.text();case 8:i=e.sent,n.dispatch("setInstanceOption",{name:"instanceSpecificPanelContent",value:i}),e.next=13;break;case 12:throw r;case 13:e.next=19;break;case 15:e.prev=15,e.t0=e.catch(1),console.warn("Can't load instance panel"),console.warn(e.t0);case 19:case"end":return e.stop()}}),e,null,[[1,15]])}))),function(e){return Nh.apply(this,arguments)}),rb=(Bh=i()(s.a.mark((function e(t){var n,r,o,a;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.prev=1,e.next=4,window.fetch("/static/stickers.json");case 4:if(!(r=e.sent).ok){e.next=15;break}return e.next=8,r.json();case 8:return o=e.sent,e.next=11,Promise.all(Object.entries(o).map(function(){var e=i()(s.a.mark((function e(t){var n,r,i,o,a;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=m()(t,2),r=n[0],i=n[1],e.next=3,window.fetch(i+"pack.json");case 3:if(o=e.sent,a={},!o.ok){e.next=9;break}return e.next=8,o.json();case 8:a=e.sent;case 9:return e.abrupt("return",{pack:r,path:i,meta:a});case 10:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 11:a=e.sent.sort((function(e,t){return e.meta.title.localeCompare(t.meta.title)})),n.dispatch("setInstanceOption",{name:"stickers",value:a}),e.next=16;break;case 15:throw r;case 16:e.next=22;break;case 18:e.prev=18,e.t0=e.catch(1),console.warn("Can't load stickers"),console.warn(e.t0);case 22:case"end":return e.stop()}}),e,null,[[1,18]])}))),function(e){return Bh.apply(this,arguments)}),ib=(Vh=i()(s.a.mark((function e(t){var n,r,i,o,a;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,r=n.state,i=n.commit,o=r.oauth,a=r.instance,e.abrupt("return",Ie(Mh(Mh({},o),{},{instance:a.server,commit:i})).then((function(e){return $e(Mh(Mh({},e),{},{instance:a.server}))})).then((function(e){i("setAppToken",e.access_token),i("setBackendInteractor",Se(n.getters.getToken()))})));case 4:case"end":return e.stop()}}),e)}))),function(e){return Vh.apply(this,arguments)}),ob=function(e){var t=e.store,n=e.accounts.map((function(e){return e.split("/").pop()}));t.dispatch("setInstanceOption",{name:"staffAccounts",value:n})},sb=(Hh=i()(s.a.mark((function e(t){var n,r,i,o,a,c,l,u,d,p,h,b,m;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.prev=1,e.next=4,Kh("/nodeinfo/2.0.json");case 4:if(!(r=e.sent).ok){e.next=49;break}return e.next=8,r.json();case 8:i=e.sent,o=i.metadata,a=o.features,n.dispatch("setInstanceOption",{name:"name",value:o.nodeName}),n.dispatch("setInstanceOption",{name:"registrationOpen",value:i.openRegistrations}),n.dispatch("setInstanceOption",{name:"mediaProxyAvailable",value:a.includes("media_proxy")}),n.dispatch("setInstanceOption",{name:"safeDM",value:a.includes("safe_dm_mentions")}),n.dispatch("setInstanceOption",{name:"shoutAvailable",value:a.includes("chat")}),n.dispatch("setInstanceOption",{name:"pleromaChatMessagesAvailable",value:a.includes("pleroma_chat_messages")}),n.dispatch("setInstanceOption",{name:"gopherAvailable",value:a.includes("gopher")}),n.dispatch("setInstanceOption",{name:"pollsAvailable",value:a.includes("polls")}),n.dispatch("setInstanceOption",{name:"pollLimits",value:o.pollLimits}),n.dispatch("setInstanceOption",{name:"mailerEnabled",value:o.mailerEnabled}),c=o.uploadLimits,n.dispatch("setInstanceOption",{name:"uploadlimit",value:parseInt(c.general)}),n.dispatch("setInstanceOption",{name:"avatarlimit",value:parseInt(c.avatar)}),n.dispatch("setInstanceOption",{name:"backgroundlimit",value:parseInt(c.background)}),n.dispatch("setInstanceOption",{name:"bannerlimit",value:parseInt(c.banner)}),n.dispatch("setInstanceOption",{name:"fieldsLimits",value:o.fieldsLimits}),n.dispatch("setInstanceOption",{name:"restrictedNicknames",value:o.restrictedNicknames}),n.dispatch("setInstanceOption",{name:"postFormats",value:o.postFormats}),l=o.suggestions,n.dispatch("setInstanceOption",{name:"suggestionsEnabled",value:l.enabled}),n.dispatch("setInstanceOption",{name:"suggestionsWeb",value:l.web}),u=i.software,n.dispatch("setInstanceOption",{name:"backendVersion",value:u.version}),n.dispatch("setInstanceOption",{name:"pleromaBackend",value:"pleroma"===u.name}),d=o.private,n.dispatch("setInstanceOption",{name:"private",value:d}),p=window.___pleromafe_commit_hash,n.dispatch("setInstanceOption",{name:"frontendVersion",value:p}),h=o.federation,n.dispatch("setInstanceOption",{name:"tagPolicyAvailable",value:void 0!==h.mrf_policies&&o.federation.mrf_policies.includes("TagPolicy")}),n.dispatch("setInstanceOption",{name:"federationPolicy",value:h}),n.dispatch("setInstanceOption",{name:"federating",value:void 0===h.enabled||h.enabled}),b=o.accountActivationRequired,n.dispatch("setInstanceOption",{name:"accountActivationRequired",value:b}),m=o.staffAccounts,ob({store:n,accounts:m}),e.next=50;break;case 49:throw r;case 50:e.next=56;break;case 52:e.prev=52,e.t0=e.catch(1),console.warn("Could not load nodeinfo"),console.warn(e.t0);case 56:case"end":return e.stop()}}),e,null,[[1,52]])}))),function(e){return Hh.apply(this,arguments)}),ab=(qh=i()(s.a.mark((function e(t){var n,r,i,o;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.next=3,Promise.all([Zh({store:n}),Qh()]);case 3:return r=e.sent,i=r[0],o=r[1],e.next=8,eb({store:n,apiConfig:i,staticConfig:o}).then(ib({store:n}));case 8:case"end":return e.stop()}}),e)}))),function(e){return qh.apply(this,arguments)}),cb=(Jh=i()(s.a.mark((function e(t){var n;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.abrupt("return",new Promise(function(){var e=i()(s.a.mark((function e(t,r){return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!n.getters.getUserToken()){e.next=9;break}return e.prev=1,e.next=4,n.dispatch("loginUser",n.getters.getUserToken());case 4:e.next=9;break;case 6:e.prev=6,e.t0=e.catch(1),console.error(e.t0);case 9:t();case 10:case"end":return e.stop()}}),e,null,[[1,6]])})));return function(t,n){return e.apply(this,arguments)}}()));case 2:case"end":return e.stop()}}),e)}))),function(e){return Jh.apply(this,arguments)}),lb=(Wh=i()(s.a.mark((function e(t){var n,r,i,o,a,c,l,u,d,p;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,r=t.i18n,n.dispatch("setLayoutWidth",Ce()),n.dispatch("setLayoutHeight",Pe()),$h.a.initFaviconService(),i=window.___pleromafe_dev_overrides||{},o=void 0!==i.target?i.target:window.location.origin,n.dispatch("setInstanceOption",{name:"server",value:o}),e.next=9,ab({store:n});case 9:return a=n.state.config,c=a.customTheme,l=a.customThemeSource,u=n.state.instance.theme,l||c?l&&l.themeEngineVersion===O.a?Object(f.b)(l):Object(f.b)(c):u||console.error("Failed to load any theme!"),e.next=15,Promise.all([cb({store:n}),nb({store:n}),sb({store:n}),Xh({store:n})]);case 15:return n.dispatch("fetchMutes"),tb({store:n}),rb({store:n}),d=Object(nn.a)({history:Object(nn.b)(),routes:Sh(n),scrollBehavior:function(e,t,n){return!e.matched.some((function(e){return e.meta.dontScroll}))&&(n||{left:0,top:0})}}),(p=Object(wt.g)(ra)).use(d),p.use(n),p.use(r),p.use(on.a),p.use(Ih),p.component("FAIcon",sn.a),p.component("FALayers",sn.b),p.mount("#app"),e.abrupt("return",p);case 29:case"end":return e.stop()}}),e)}))),function(e){return Wh.apply(this,arguments)}),ub=(window.navigator.language||"en").split("-")[0],db=Object(Rt.a)({locale:"en",fallbackLocale:"en",messages:tn.a.default});tn.a.setLanguage(db,ub);var pb={paths:["config","users.lastLoginName","oauth"]};i()(s.a.mark((function e(){var t,n,r,i;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=!1,n=[en],e.prev=2,e.next=5,Qt(pb);case 5:r=e.sent,n.push(r),e.next=13;break;case 9:e.prev=9,e.t0=e.catch(2),console.error(e.t0),t=!0;case 13:i=Object(a.a)({modules:{i18n:{getters:{i18n:function(){return db.global}}},interface:l,instance:w,users:Ge,statuses:oe,api:rt,config:g.a,serverSideConfig:it.a,shout:ot,oauth:st,authFlow:ct,mediaViewer:dt,oauthTokens:pt,reports:mt,polls:ft,postStatus:Ot,chats:Lt},plugins:n,strict:!1}),t&&i.dispatch("pushGlobalNotice",{messageKey:"errors.storage_unavailable",level:"error"}),lb({store:i,i18n:db});case 16:case"end":return e.stop()}}),e,null,[[2,9]])})))(),window.___pleromafe_mode=Object({NODE_ENV:"production"}),window.___pleromafe_commit_hash="38d10749\n",window.___pleromafe_dev_overrides=void 0}]);
+//# sourceMappingURL=app.e8949b9a3c7cfdab2e4c.js.map
\ No newline at end of file
diff --git a/priv/static/static/js/app.e8949b9a3c7cfdab2e4c.js.map b/priv/static/static/js/app.e8949b9a3c7cfdab2e4c.js.map
new file mode 100644 (file)
index 0000000..f6bb332
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/services/entity_normalizer/entity_normalizer.service.js","webpack:///./src/services/errors/errors.js","webpack:///./src/modules/errors.js","webpack:///./src/services/api/api.service.js","webpack:///./src/services/color_convert/color_convert.js","webpack:///./src/components/user_avatar/user_avatar.js","webpack:///./src/components/user_avatar/user_avatar.vue?05a8","webpack:///./src/components/user_avatar/user_avatar.vue","webpack:///./src/services/user_profile_link_generator/user_profile_link_generator.js","webpack:///./src/components/popover/popover.js","webpack:///./src/components/popover/popover.vue?a425","webpack:///./src/components/popover/popover.vue","webpack:///./src/services/html_converter/utility.service.js","webpack:///./src/services/html_converter/html_line_converter.service.js","webpack:///./src/components/hashtag_link/hashtag_link.vue","webpack:///./src/services/matcher/matcher.service.js","webpack:///./src/components/hashtag_link/hashtag_link.js","webpack:///./src/components/hashtag_link/hashtag_link.vue?ad7e","webpack:///./src/components/rich_content/rich_content.jsx","webpack:///./src/services/html_converter/html_tree_converter.service.js","webpack:///./src/services/notification_utils/notification_utils.js","webpack:///./src/services/user_highlighter/user_highlighter.js","webpack:///./src/services/file_type/file_type.service.js","webpack:///./src/components/status/status.vue","webpack:///./src/components/reply_button/reply_button.vue","webpack:///./src/components/reply_button/reply_button.js","webpack:///./src/components/reply_button/reply_button.vue?f429","webpack:///./src/components/favorite_button/favorite_button.vue","webpack:///./src/components/favorite_button/favorite_button.js","webpack:///./src/components/favorite_button/favorite_button.vue?c274","webpack:///./src/components/react_button/react_button.vue","webpack:///./src/components/react_button/react_button.js","webpack:///./src/components/react_button/react_button.vue?68d2","webpack:///./src/components/retweet_button/retweet_button.vue","webpack:///./src/components/retweet_button/retweet_button.js","webpack:///./src/components/retweet_button/retweet_button.vue?0fda","webpack:///./src/components/extra_buttons/extra_buttons.vue","webpack:///./src/components/extra_buttons/extra_buttons.js","webpack:///./src/components/extra_buttons/extra_buttons.vue?6374","webpack:///./src/components/status_popover/status_popover.vue","webpack:///./src/components/status_popover/status_popover.js","webpack:///./src/components/status_popover/status_popover.vue?8218","webpack:///./src/components/user_list_popover/user_list_popover.vue","webpack:///./src/components/user_list_popover/user_list_popover.js","webpack:///./src/components/user_list_popover/user_list_popover.vue?d286","webpack:///./src/components/emoji_reactions/emoji_reactions.vue","webpack:///./src/components/emoji_reactions/emoji_reactions.js","webpack:///./src/components/emoji_reactions/emoji_reactions.vue?89e7","webpack:///./src/components/status/status.js","webpack:///./src/components/status/status.vue?0825","webpack:///./src/components/user_card/user_card.vue","webpack:///./src/components/moderation_tools/moderation_tools.vue","webpack:///./src/components/dialog_modal/dialog_modal.vue","webpack:///./src/components/dialog_modal/dialog_modal.js","webpack:///./src/components/dialog_modal/dialog_modal.vue?bfc4","webpack:///./src/components/moderation_tools/moderation_tools.js","webpack:///./src/components/moderation_tools/moderation_tools.vue?fef6","webpack:///./src/components/account_actions/account_actions.vue","webpack:///./src/components/account_actions/account_actions.js","webpack:///./src/components/account_actions/account_actions.vue?870d","webpack:///./src/components/user_card/user_card.js","webpack:///./src/components/user_card/user_card.vue?8f79","webpack:///./src/services/theme_data/pleromafe.js","webpack:///./src/services/locale/locale.service.js","webpack:///./src/services/style_setter/style_setter.js","webpack:///./src/services/promise_interval/promise_interval.js","webpack:///./src/components/status_content/status_content.vue","webpack:///./src/components/poll/poll.vue","webpack:///./src/components/poll/poll.js","webpack:///./src/components/poll/poll.vue?3ce0","webpack:///./src/components/status_body/status_body.vue","webpack:///./src/components/mention_link/mention_link.js","webpack:///./src/components/mfm_content/mfm_content.jsx","webpack:///./src/components/status_body/status_body.js","webpack:///./src/components/status_body/status_body.vue?c2f1","webpack:///./src/components/status_content/status_content.js","webpack:///./src/components/status_content/status_content.vue?12ff","webpack:///./src/services/date_utils/date_utils.js","webpack:///./src/components/still-image/still-image.vue","webpack:///./src/components/still-image/still-image.js","webpack:///./src/components/still-image/still-image.vue?a7d9","webpack:///./src/components/checkbox/checkbox.vue","webpack:///./src/components/checkbox/checkbox.vue?0c6b","webpack:///./src/components/select/select.vue","webpack:///./src/components/select/select.js","webpack:///./src/components/select/select.vue?5aac","webpack:///./src/components/basic_user_card/basic_user_card.vue","webpack:///./src/components/basic_user_card/basic_user_card.js","webpack:///./src/components/basic_user_card/basic_user_card.vue?bd50","webpack:///./src/services/theme_data/theme_data.service.js","webpack:///./src/components/post_status_form/post_status_form.vue","webpack:///./src/components/media_upload/media_upload.js","webpack:///./src/components/media_upload/media_upload.vue?d084","webpack:///./src/components/media_upload/media_upload.vue","webpack:///./src/components/poll/poll_form.vue","webpack:///./src/components/poll/poll_form.js","webpack:///./src/components/poll/poll_form.vue?6c37","webpack:///./src/components/post_status_form/post_status_form.js","webpack:///./src/components/post_status_form/post_status_form.vue?da99","webpack:///./src/components/attachment/attachment.vue","webpack:///./src/components/attachment/attachment.js","webpack:///./src/components/attachment/attachment.vue?0cf8","webpack:///./src/components/timeago/timeago.vue","webpack:///./src/components/timeago/timeago.vue?882d","webpack:///./src/components/list/list.vue","webpack:///./src/components/list/list.vue?42b1","webpack:///./src/i18n/messages.js","webpack:///./src/components/tab_switcher/tab_switcher.jsx","webpack:///./src/services/status_poster/status_poster.service.js","webpack:///./src/components/notifications/notifications.vue","webpack:///./src/components/notification/notification.vue","webpack:///./src/components/notification/notification.js","webpack:///./src/components/notification/notification.vue?6df6","webpack:///./src/components/notifications/notification_filters.vue","webpack:///./src/components/notifications/notification_filters.vue?712d","webpack:///./src/components/notifications/notifications.js","webpack:///./src/components/notifications/notifications.vue?9c64","webpack:///./src/components/gallery/gallery.vue","webpack:///./src/components/gallery/gallery.js","webpack:///./src/components/gallery/gallery.vue?6d5a","webpack:///./src/components/mention_link/mention_link.vue","webpack:///./src/components/mention_link/mention_link.vue?b783","webpack:///./src/components/mentions_line/mentions_line.vue","webpack:///./src/components/mentions_line/mentions_line.js","webpack:///./src/components/mentions_line/mentions_line.vue?d40c","webpack:///./src/services/file_size_format/file_size_format.js","webpack:///./src/services/notifications_fetcher/notifications_fetcher.service.js","webpack:///./src/services/favicon_service/favicon_service.js","webpack:///./src/components/progress_button/progress_button.vue","webpack:///./src/components/progress_button/progress_button.vue?97a4","webpack:///./src/modules/config.js","webpack:///./src/services/status_parser/status_parser.js","webpack:///./src/services/desktop_notification_utils/desktop_notification_utils.js","webpack:///./src/services/offset_finder/offset_finder.service.js","webpack:///./src/services/export_import/export_import.js","webpack:///./src/components/flash/flash.vue","webpack:///./src/services/ruffle_service/ruffle_service.js","webpack:///./src/components/flash/flash.js","webpack:///./src/components/flash/flash.vue?1944","webpack:///./src/services/follow_manipulate/follow_manipulate.js","webpack:///./src/components/follow_button/follow_button.js","webpack:///./src/components/follow_button/follow_button.vue?49fe","webpack:///./src/components/follow_button/follow_button.vue","webpack:///./src/components/video_attachment/video_attachment.js","webpack:///./src/components/video_attachment/video_attachment.vue?354d","webpack:///./src/components/video_attachment/video_attachment.vue","webpack:///./src/components/link-preview/link-preview.vue","webpack:///./src/components/link-preview/link-preview.js","webpack:///./src/components/link-preview/link-preview.vue?b794","webpack:///./src/components/remote_follow/remote_follow.vue","webpack:///./src/components/remote_follow/remote_follow.js","webpack:///./src/components/remote_follow/remote_follow.vue?c74d","webpack:///./src/components/avatar_list/avatar_list.vue","webpack:///./src/components/avatar_list/avatar_list.js","webpack:///./src/components/avatar_list/avatar_list.vue?046a","webpack:///./src/components/emoji_input/suggestor.js","webpack:///./src/components/interface_language_switcher/interface_language_switcher.vue","webpack:///./src/components/interface_language_switcher/interface_language_switcher.vue?4062","webpack:///./src/components/scope_selector/scope_selector.vue","webpack:///./src/components/scope_selector/scope_selector.js","webpack:///./src/components/scope_selector/scope_selector.vue?a29e","webpack:///./src/modules/serverSideConfig.js","webpack:///./src/services/component_utils/component_utils.js","webpack:///./src/components/emoji_input/emoji_input.vue","webpack:///./src/services/completion/completion.js","webpack:///./src/components/emoji_picker/emoji_picker.vue","webpack:///./src/components/emoji_picker/emoji_picker.js","webpack:///./src/components/emoji_picker/emoji_picker.vue?c405","webpack:///./src/components/emoji_input/emoji_input.js","webpack:///./src/components/emoji_input/emoji_input.vue?23b7","webpack:///./src/assets/nsfw.png","webpack:///./src/i18n/en.json","webpack:///./src/components/login_form/login_form.vue?111a","webpack:///./src/components/media_upload/media_upload.vue?84d2","webpack:///./src/components/scope_selector/scope_selector.vue?757e","webpack:///./src/components/checkbox/checkbox.vue?0dde","webpack:///./src/components/emoji_picker/emoji_picker.scss?9675","webpack:///./src/components/emoji_input/emoji_input.vue?4146","webpack:///./src/components/select/select.vue?b0ab","webpack:///./src/components/poll/poll_form.vue?0f5d","webpack:///./src/components/still-image/still-image.vue?2909","webpack:///./src/components/flash/flash.vue?c9e5","webpack:///./src/components/attachment/attachment.scss?c40a","webpack:///./src/components/gallery/gallery.vue?3caa","webpack:///./src/components/user_avatar/user_avatar.vue?dd13","webpack:///./src/components/mention_link/mention_link.scss?a876","webpack:///./src/components/mentions_line/mentions_line.scss?57df","webpack:///./src/components/hashtag_link/hashtag_link.scss?6cb8","webpack:///./src/components/poll/poll.vue?cc4e","webpack:///./src/components/status_body/status_body.scss?962f","webpack:///./src/components/link-preview/link-preview.vue?cabf","webpack:///./src/components/status_content/status_content.vue?bc1c","webpack:///./src/components/post_status_form/post_status_form.vue?2849","webpack:///./src/components/remote_follow/remote_follow.vue?18f9","webpack:///./src/components/dialog_modal/dialog_modal.vue?6ce2","webpack:///./src/components/popover/popover.vue?c6ad","webpack:///./src/components/moderation_tools/moderation_tools.vue?3620","webpack:///./src/components/account_actions/account_actions.vue?8a6d","webpack:///./src/components/user_card/user_card.scss?64aa","webpack:///./src/components/user_panel/user_panel.vue?29ef","webpack:///./src/components/nav_panel/nav_panel.vue?d57b","webpack:///./src/components/features_panel/features_panel.vue?194b","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue?089d","webpack:///./src/components/shout_panel/shout_panel.vue?de26","webpack:///./src/components/modal/modal.vue?1080","webpack:///./src/components/panel_loading/panel_loading.vue?f355","webpack:///./src/components/async_component_error/async_component_error.vue?a2f0","webpack:///./src/components/settings_modal/settings_modal.scss?db40","webpack:///./src/components/media_modal/media_modal.vue?b6f2","webpack:///./src/components/side_drawer/side_drawer.vue?5b8c","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.vue?002e","webpack:///./src/components/reply_button/reply_button.vue?0c63","webpack:///./src/components/favorite_button/favorite_button.vue?a96a","webpack:///./src/components/react_button/react_button.vue?2715","webpack:///./src/components/retweet_button/retweet_button.vue?e9ee","webpack:///./src/components/extra_buttons/extra_buttons.vue?23e8","webpack:///./src/components/avatar_list/avatar_list.vue?d80a","webpack:///./src/components/status_popover/status_popover.vue?0634","webpack:///./src/components/user_list_popover/user_list_popover.vue?4785","webpack:///./src/components/emoji_reactions/emoji_reactions.vue?492e","webpack:///./src/components/status/status.scss?b11c","webpack:///./src/components/notification/notification.scss?b266","webpack:///./src/components/notifications/notification_filters.vue?52ff","webpack:///./src/components/notifications/notifications.scss?5aa9","webpack:///./src/components/mobile_nav/mobile_nav.vue?3d7f","webpack:///./src/components/search_bar/search_bar.vue?5a40","webpack:///./src/components/desktop_nav/desktop_nav.scss?62ee","webpack:///./src/components/list/list.vue?dfc3","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue?c333","webpack:///./src/components/post_status_modal/post_status_modal.vue?17bc","webpack:///./src/components/global_notice_list/global_notice_list.vue?8dbf","webpack:///./src/App.scss?eeaf","webpack:///./src/components/thread_tree/thread_tree.vue?acd6","webpack:///./src/components/conversation/conversation.vue?7fec","webpack:///./src/components/timeline_menu/timeline_menu.vue?733c","webpack:///./src/components/timeline/timeline_quick_settings.vue?3988","webpack:///./src/components/timeline/timeline.scss?7ad3","webpack:///./src/components/chat_title/chat_title.vue?c884","webpack:///./src/components/chat_list_item/chat_list_item.vue?f11c","webpack:///./src/components/basic_user_card/basic_user_card.vue?b898","webpack:///./src/components/chat_new/chat_new.vue?536c","webpack:///./src/components/chat_list/chat_list.vue?336c","webpack:///./src/components/chat_message/chat_message.vue?2759","webpack:///./src/components/chat/chat.vue?8ca4","webpack:///./src/components/follow_card/follow_card.vue?180e","webpack:///./src/components/user_profile/user_profile.vue?fc91","webpack:///./src/components/search/search.vue?2a52","webpack:///./src/components/registration/registration.vue?d0e0","webpack:///./src/components/password_reset/password_reset.vue?9146","webpack:///./src/components/follow_request_card/follow_request_card.vue?b6a6","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue?5d2e","webpack:///./src/components/staff_panel/staff_panel.vue?831d","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue?0dbc","webpack:///./src/lib/event_target_polyfill.js","webpack:///./src/modules/interface.js","webpack:///./src/modules/instance.js","webpack:///./src/modules/statuses.js","webpack:///./src/services/timeline_fetcher/timeline_fetcher.service.js","webpack:///./src/services/follow_request_fetcher/follow_request_fetcher.service.js","webpack:///./src/services/backend_interactor_service/backend_interactor_service.js","webpack:///./src/services/window_utils/window_utils.js","webpack:///./src/services/new_api/oauth.js","webpack:///./src/services/push/push.js","webpack:///./src/modules/users.js","webpack:///./src/services/chat_utils/chat_utils.js","webpack:///./src/modules/api.js","webpack:///./src/modules/shout.js","webpack:///./src/modules/oauth.js","webpack:///./src/modules/auth_flow.js","webpack:///./src/modules/media_viewer.js","webpack:///./src/modules/oauth_tokens.js","webpack:///./src/modules/reports.js","webpack:///./src/modules/polls.js","webpack:///./src/modules/postStatus.js","webpack:///./src/services/chat_service/chat_service.js","webpack:///./src/modules/chats.js","webpack:///./src/lib/persisted_state.js","webpack:///./src/lib/push_notifications_plugin.js","webpack:///./src/App.vue","webpack:///./src/components/user_panel/user_panel.vue","webpack:///./src/components/login_form/login_form.vue","webpack:///./src/components/login_form/login_form.js","webpack:///./src/components/login_form/login_form.vue?f908","webpack:///./src/components/mfa_form/recovery_form.vue","webpack:///./src/services/new_api/mfa.js","webpack:///./src/components/mfa_form/recovery_form.js","webpack:///./src/components/mfa_form/recovery_form.vue?2543","webpack:///./src/components/mfa_form/totp_form.vue","webpack:///./src/components/mfa_form/totp_form.js","webpack:///./src/components/mfa_form/totp_form.vue?64d5","webpack:///./src/components/auth_form/auth_form.js","webpack:///./src/components/user_panel/user_panel.js","webpack:///./src/components/user_panel/user_panel.vue?ea63","webpack:///./src/components/nav_panel/nav_panel.vue","webpack:///./src/components/timeline_menu/timeline_menu_content.js","webpack:///./src/components/timeline_menu/timeline_menu_content.vue?c7d7","webpack:///./src/components/timeline_menu/timeline_menu_content.vue","webpack:///./src/components/nav_panel/nav_panel.js","webpack:///./src/components/nav_panel/nav_panel.vue?7f8f","webpack:///./src/components/instance_specific_panel/instance_specific_panel.vue","webpack:///./src/components/instance_specific_panel/instance_specific_panel.js","webpack:///./src/components/instance_specific_panel/instance_specific_panel.vue?cc9d","webpack:///./src/components/features_panel/features_panel.vue","webpack:///./src/components/features_panel/features_panel.js","webpack:///./src/components/features_panel/features_panel.vue?bedc","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.js","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue?eaa9","webpack:///./src/components/shout_panel/shout_panel.vue","webpack:///./src/components/shout_panel/shout_panel.js","webpack:///./src/components/shout_panel/shout_panel.vue?cee7","webpack:///./src/components/settings_modal/settings_modal.vue","webpack:///./src/components/modal/modal.vue","webpack:///./src/components/modal/modal.vue?1e91","webpack:///./src/components/panel_loading/panel_loading.vue","webpack:///./src/components/panel_loading/panel_loading.vue?239d","webpack:///./src/components/async_component_error/async_component_error.vue","webpack:///./src/components/async_component_error/async_component_error.vue?ebf7","webpack:///./src/services/resettable_async_component.js","webpack:///./src/components/settings_modal/settings_modal.js","webpack:///./src/components/settings_modal/settings_modal.vue?3d91","webpack:///./src/components/media_modal/media_modal.vue","webpack:///./src/components/pinch_zoom/pinch_zoom.js","webpack:///./src/components/pinch_zoom/pinch_zoom.vue?54a1","webpack:///./src/components/pinch_zoom/pinch_zoom.vue","webpack:///./src/services/gesture_service/gesture_service.js","webpack:///./src/components/swipe_click/swipe_click.js","webpack:///./src/components/swipe_click/swipe_click.vue?9d87","webpack:///./src/components/swipe_click/swipe_click.vue","webpack:///./src/components/media_modal/media_modal.js","webpack:///./src/components/media_modal/media_modal.vue?5a55","webpack:///./src/components/side_drawer/side_drawer.vue","webpack:///./src/components/side_drawer/side_drawer.js","webpack:///./src/components/side_drawer/side_drawer.vue?ab18","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.js","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.vue?7726","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.vue","webpack:///./src/components/mobile_nav/mobile_nav.vue","webpack:///./src/components/mobile_nav/mobile_nav.js","webpack:///./src/components/mobile_nav/mobile_nav.vue?8378","webpack:///./src/components/desktop_nav/desktop_nav.vue","webpack:///./src/components/search_bar/search_bar.js","webpack:///./src/components/search_bar/search_bar.vue?c288","webpack:///./src/components/search_bar/search_bar.vue","webpack:///./src/components/desktop_nav/desktop_nav.js","webpack:///./src/components/desktop_nav/desktop_nav.vue?595f","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue","webpack:///./src/components/user_reporting_modal/user_reporting_modal.js","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue?5d89","webpack:///./src/components/post_status_modal/post_status_modal.vue","webpack:///./src/components/post_status_modal/post_status_modal.js","webpack:///./src/components/post_status_modal/post_status_modal.vue?c824","webpack:///./src/components/global_notice_list/global_notice_list.vue","webpack:///./src/components/global_notice_list/global_notice_list.js","webpack:///./src/components/global_notice_list/global_notice_list.vue?fb63","webpack:///./src/App.js","webpack:///./src/App.vue?7993","webpack:///./src/components/timeline/timeline.vue","webpack:///./src/components/conversation/conversation.vue","webpack:///./src/components/thread_tree/thread_tree.vue","webpack:///./src/components/thread_tree/thread_tree.js","webpack:///./src/components/thread_tree/thread_tree.vue?b0db","webpack:///./src/components/conversation/conversation.js","webpack:///./src/components/conversation/conversation.vue?3296","webpack:///./src/components/timeline_menu/timeline_menu.vue","webpack:///./src/components/timeline_menu/timeline_menu.js","webpack:///./src/components/timeline_menu/timeline_menu.vue?de29","webpack:///./src/components/timeline/timeline_quick_settings.vue","webpack:///./src/components/timeline/timeline_quick_settings.js","webpack:///./src/components/timeline/timeline_quick_settings.vue?0f6c","webpack:///./src/components/timeline/timeline.js","webpack:///./src/components/timeline/timeline.vue?9ad1","webpack:///./src/components/public_timeline/public_timeline.js","webpack:///./src/components/public_timeline/public_timeline.vue?842c","webpack:///./src/components/public_timeline/public_timeline.vue","webpack:///./src/components/public_and_external_timeline/public_and_external_timeline.js","webpack:///./src/components/public_and_external_timeline/public_and_external_timeline.vue?cee7","webpack:///./src/components/public_and_external_timeline/public_and_external_timeline.vue","webpack:///./src/components/friends_timeline/friends_timeline.js","webpack:///./src/components/friends_timeline/friends_timeline.vue?56f4","webpack:///./src/components/friends_timeline/friends_timeline.vue","webpack:///./src/components/tag_timeline/tag_timeline.js","webpack:///./src/components/tag_timeline/tag_timeline.vue?8a33","webpack:///./src/components/tag_timeline/tag_timeline.vue","webpack:///./src/components/bookmark_timeline/bookmark_timeline.js","webpack:///./src/components/bookmark_timeline/bookmark_timeline.vue?dc49","webpack:///./src/components/bookmark_timeline/bookmark_timeline.vue","webpack:///./src/components/conversation-page/conversation-page.js","webpack:///./src/components/conversation-page/conversation-page.vue?a77d","webpack:///./src/components/conversation-page/conversation-page.vue","webpack:///./src/components/interactions/interactions.vue","webpack:///./src/components/interactions/interactions.js","webpack:///./src/components/interactions/interactions.vue?3506","webpack:///./src/components/dm_timeline/dm_timeline.js","webpack:///./src/components/dm_timeline/dm_timeline.vue?b9c3","webpack:///./src/components/dm_timeline/dm_timeline.vue","webpack:///./src/components/chat_list/chat_list.vue","webpack:///./src/components/chat_list_item/chat_list_item.vue","webpack:///./src/components/chat_title/chat_title.js","webpack:///./src/components/chat_title/chat_title.vue?67d1","webpack:///./src/components/chat_title/chat_title.vue","webpack:///./src/components/chat_list_item/chat_list_item.js","webpack:///./src/components/chat_list_item/chat_list_item.vue?af05","webpack:///./src/components/chat_new/chat_new.vue","webpack:///./src/components/chat_new/chat_new.js","webpack:///./src/components/chat_new/chat_new.vue?9c2e","webpack:///./src/components/chat_list/chat_list.js","webpack:///./src/components/chat_list/chat_list.vue?fbc3","webpack:///./src/components/chat/chat.vue","webpack:///./src/components/chat_message/chat_message.vue","webpack:///./src/components/chat_message_date/chat_message_date.vue","webpack:///./src/components/chat_message_date/chat_message_date.vue?36ca","webpack:///./src/components/chat_message/chat_message.js","webpack:///./src/components/chat_message/chat_message.vue?5926","webpack:///./src/components/chat/chat_layout_utils.js","webpack:///./src/components/chat/chat.js","webpack:///./src/components/chat/chat.vue?b039","webpack:///./src/components/user_profile/user_profile.vue","webpack:///./src/components/follow_card/follow_card.vue","webpack:///./src/components/follow_card/follow_card.js","webpack:///./src/components/follow_card/follow_card.vue?2d42","webpack:///./src/hocs/with_load_more/with_load_more.jsx","webpack:///./src/components/user_profile/user_profile.js","webpack:///./src/components/user_profile/user_profile.vue?21f3","webpack:///./src/components/search/search.vue","webpack:///./src/components/search/search.js","webpack:///./src/components/search/search.vue?2a31","webpack:///./src/components/registration/registration.vue","webpack:///./src/components/registration/registration.js","webpack:///./src/components/registration/registration.vue?a608","webpack:///./src/components/password_reset/password_reset.vue","webpack:///./src/services/new_api/password_reset.js","webpack:///./src/components/password_reset/password_reset.js","webpack:///./src/components/password_reset/password_reset.vue?f2e7","webpack:///./src/components/follow_requests/follow_requests.vue","webpack:///./src/components/follow_request_card/follow_request_card.vue","webpack:///./src/components/follow_request_card/follow_request_card.js","webpack:///./src/components/follow_request_card/follow_request_card.vue?eec7","webpack:///./src/components/follow_requests/follow_requests.js","webpack:///./src/components/follow_requests/follow_requests.vue?18ee","webpack:///./src/components/oauth_callback/oauth_callback.js","webpack:///./src/components/oauth_callback/oauth_callback.vue?7dba","webpack:///./src/components/oauth_callback/oauth_callback.vue","webpack:///./src/components/who_to_follow/who_to_follow.vue","webpack:///./src/components/who_to_follow/who_to_follow.js","webpack:///./src/components/who_to_follow/who_to_follow.vue?42e6","webpack:///./src/components/about/about.vue","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.js","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue?1a66","webpack:///./src/components/staff_panel/staff_panel.vue","webpack:///./src/components/staff_panel/staff_panel.js","webpack:///./src/components/staff_panel/staff_panel.vue?fa50","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.js","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue?2867","webpack:///./src/components/about/about.js","webpack:///./src/components/about/about.vue?596d","webpack:///./src/components/remote_user_resolver/remote_user_resolver.vue","webpack:///./src/components/remote_user_resolver/remote_user_resolver.js","webpack:///./src/components/remote_user_resolver/remote_user_resolver.vue?ec00","webpack:///./src/directives/body_scroll_lock.js","webpack:///./src/boot/routes.js","webpack:///./src/boot/after_store.js","webpack:///./src/main.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","0","exports","module","l","e","promises","Promise","resolve","reject","href","fullhref","p","existingLinkTags","document","getElementsByTagName","dataHref","tag","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","jsonpScriptSrc","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","head","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","parseUser","output","masto","mastoShort","id","String","_original","screen_name","acct","statusnet_profile_url","url","emoji","emojis","escape","display_name","name_html","name_unescaped","description","note","description_html","fields","fields_html","map","field","fields_text","unescape","replace","profile_image_url","avatar","profile_image_url_original","cover_photo","header","friends_count","following_count","bot","pleroma","relationship","background_image","favicon","token","chat_token","allow_following_move","hide_follows","hide_followers","hide_follows_count","hide_followers_count","rights","moderator","is_moderator","admin","is_admin","role","source","default_scope","privacy","no_rich_text","show_role","discoverable","is_local","includes","delete_others_notice","muting","muted","blocking","statusnet_blocking","followed_by","follows_you","following","created_at","Date","locked","followers_count","statuses_count","follow_request_count","tags","deactivated","is_active","notification_settings","unread_chat_count","screen_name_ui","parts","split","unicodeDomain","punycode","toUnicode","join","parseAttachment","mimetype","mime_type","meta","large_thumb_url","preview_url","parseStatus","favorited","favourited","fave_num","favourites_count","repeated","reblogged","repeat_num","reblogs_count","bookmarked","reblog","nsfw","sensitive","raw_html","content","text","summary","spoiler_text","statusnet_conversation_id","conversation_id","local","in_reply_to_screen_name","in_reply_to_account_acct","thread_muted","emoji_reactions","parent_visible","akkoma","mediaType","mfm_content","in_reply_to_status_id","in_reply_to_id","in_reply_to_user_id","in_reply_to_account_id","replies_count","retweeted_status","summary_raw_html","external_url","poll","options","title_html","title","pinned","status","is_post_verb","uri","match","qvitter_delete_notice","activity_type","qvitterStatusType","isNsfw","statusnet_html","summary_html","visibility","card","user","account","attentions","mentions","attachments","media_attachments","retweetedStatus","favoritedBy","rebloggedBy","parseNotification","seen","is_seen","isStatusNotification","action","from_profile","emoji_url","parsedNotice","notice","ntype","Boolean","favorited_status","parseInt","parseLinkHeaderPagination","linkHeader","opts","flakeId","parsedLinkHeader","parseLinkHeader","maxId","next","max_id","minId","prev","min_id","parseChat","chat","unread","lastMessage","parseChatMessage","last_message","updated_at","isNormalized","chat_id","attachment","pending","idempotency_key","StatusCodeError","statusCode","body","response","this","JSON","stringify","captureStackTrace","constructor","RegistrationError","errors","parse","errorContents","ap_id","username","entries","reduce","errs","k","acc","PERMISSION_GROUP_URL","screenName","right","MASTODON_DISMISS_NOTIFICATION_URL","MASTODON_FAVORITE_URL","MASTODON_UNFAVORITE_URL","MASTODON_RETWEET_URL","MASTODON_UNRETWEET_URL","MASTODON_USER_TIMELINE_URL","MASTODON_TAG_TIMELINE_URL","MASTODON_MUTE_USER_URL","MASTODON_UNMUTE_USER_URL","MASTODON_SUBSCRIBE_USER","MASTODON_UNSUBSCRIBE_USER","MASTODON_BOOKMARK_STATUS_URL","MASTODON_UNBOOKMARK_STATUS_URL","MASTODON_STATUS_FAVORITEDBY_URL","MASTODON_STATUS_REBLOGGEDBY_URL","MASTODON_PIN_OWN_STATUS","MASTODON_UNPIN_OWN_STATUS","MASTODON_MUTE_CONVERSATION","MASTODON_UNMUTE_CONVERSATION","PLEROMA_EMOJI_REACTIONS_URL","PLEROMA_EMOJI_REACT_URL","PLEROMA_EMOJI_UNREACT_URL","PLEROMA_CHAT_MESSAGES_URL","PLEROMA_CHAT_READ_URL","PLEROMA_DELETE_CHAT_MESSAGE_URL","chatId","messageId","oldfetch","fetch","fullUrl","credentials","promisedRequest","method","params","payload","headers","encodeURIComponent","authHeaders","json","ok","accessToken","fetchFriends","sinceId","limit","MASTODON_FOLLOWING_URL","args","filter","_","getMastodonSocketURI","stream","access_token","val","MASTODON_STREAMING","MASTODON_STREAMING_EVENTS","Set","PLEROMA_STREAMING_EVENTS","ProcessedWS","preprocessor","handleMastoWS","eventTarget","EventTarget","socket","WebSocket","proxy","original","eventName","processor","a","addEventListener","eventData","dispatchEvent","CustomEvent","detail","wsEvent","debug","close","getState","readyState","parsedEvent","has","warn","notification","chatUpdate","WSConnectionStatus","freeze","apiService","verifyCredentials","fetchTimeline","timeline","since","until","userId","withMuted","replyVisibility","isNotifications","public","friends","dms","notifications","media","favorites","bookmarks","queryString","param","statusText","pagination","fetchPinnedStatuses","fetchConversation","urlContext","MASTODON_STATUS_CONTEXT_URL","ancestors","descendants","fetchStatus","MASTODON_STATUS_URL","exportFriends","more","users","fetchFollowers","MASTODON_FOLLOWERS_URL","followUser","MASTODON_FOLLOW_URL","form","reblogs","unfollowUser","MASTODON_UNFOLLOW_URL","pinOwnStatus","unpinOwnStatus","muteConversation","unmuteConversation","blockUser","MASTODON_BLOCK_USER_URL","unblockUser","MASTODON_UNBLOCK_USER_URL","fetchUser","fetchUserRelationship","favorite","unfavorite","retweet","unretweet","bookmarkStatus","unbookmarkStatus","postStatus","spoilerText","mediaIds","inReplyToStatusId","contentType","preview","idempotencyKey","FormData","pollOptions","append","forEach","some","option","normalizedPoll","expires_in","expiresIn","multiple","keys","postHeaders","deleteStatus","MASTODON_DELETE_URL","uploadMedia","formData","setMediaDescription","fetchMutes","muteUser","unmuteUser","subscribeUser","unsubscribeUser","fetchBlocks","fetchOAuthTokens","revokeOAuthToken","tagUser","nicknames","untagUser","deleteUser","addRight","deleteRight","activateUser","nickname","deactivateUser","register","rest","locale","agreement","getCaptcha","resp","updateProfileImages","avatarName","banner","background","updateProfile","importMutes","file","importBlocks","importFollows","deleteAccount","password","changeEmail","email","changePassword","newPassword","newPasswordConfirmation","settingsMFA","mfaDisableOTP","generateMfaBackupCodes","mfaSetupOTP","mfaConfirmOTP","fetchFollowRequests","approveUser","MASTODON_APPROVE_USER_URL","denyUser","MASTODON_DENY_USER_URL","suggestions","markNotificationsAsSeen","single","dismissNotification","vote","pollId","choices","fetchPoll","fetchFavoritedByUsers","fetchRebloggedByUsers","fetchMascot","updateMascot","mascot","fetchEmojiReactions","reactions","accounts","reactWithEmoji","unreactWithEmoji","reportUser","statusIds","comment","forward","updateNotificationSettings","settings","search2","q","offset","u","statuses","searchUsers","query","fetchKnownDomains","fetchDomainMutes","muteDomain","domain","unmuteDomain","chats","getOrCreateChat","accountId","chatMessages","sendChatMessage","mediaId","readChat","lastReadId","deleteChatMessage","rgb2hex","g","b","Math","ceil","toString","srgbToLinear","srgb","bit","pow","c2linear","relativeLuminance","getContrastRatio","la","lb","getContrastRatioLayers","layers","bedrock","alphaBlendLayers","alphaBlend","fg","fga","bg","color","opacity","hex2rgb","hex","exec","mixrgb","rgba2css","rgba","floor","getTextColor","preserve","base","assign","invertLightness","rgb","contrastRatio","getCssColor","input","startsWith","library","add","faRobot","UserAvatar","props","showPlaceholder","defaultAvatar","$store","state","instance","server","components","StillImage","methods","imgSrc","imageLoadError","__exports__","class","compact","betterShadow","alt","image-load-error","icon","isExternal","generateProfileLink","restrictedNicknames","complicated","Popover","trigger","placement","boundTo","boundToSelector","margin","popoverClass","removePadding","hidden","styles","oldSize","width","height","containerBoundingClientRect","$el","closest","offsetParent","getBoundingClientRect","updateStyles","anchorEl","$refs","children","anchorWidth","offsetWidth","clientWidth","anchorHeight","offsetHeight","clientHeight","screenBox","origin","left","top","parentBounds","x","y","xBounds","min","max","innerWidth","yBounds","bottom","innerHeight","horizOffset","usingTop","vPadding","anchorStyle","getComputedStyle","parseFloat","paddingTop","paddingBottom","yOffset","translateY","xOffset","translateX","transform","round","showPopover","wasHidden","$nextTick","$emit","hidePopover","onMouseenter","onMouseleave","onClick","onClickOutside","contains","updated","created","unmounted","removeEventListener","ref","style","getTagName","getAttrs","innertag","substring","RegExp","trim","attrs","Array","from","matchAll","v","fromEntries","processTextForEmoji","buffer","textBuffer","char","found","shortcode","HashtagLink","required","default","link","generateTagLink","$router","open","MentionsLine","html","handleLinks","greentext","render","preProcessPerLine","newHtml","currentMentions","lastSpacing","lastTags","writtenMentions","invisibleMentions","writtenTags","mentionIndex","tagsIndex","encounteredTextReverse","pass1","emptyElements","levels","tagBuffer","getCurrentBuffer","flushText","handleSelfClosing","handleOpen","curBuf","newLevel","handleClose","currentTag","pop","tagFull","tagName","convertHtmlToTree","processItem","item","index","array","what","emptyText","isArray","opener","closer","Tag","mentionsLinePadding","linkData","getLinkData","notifying","MENTIONS_LIMIT","renderMention","updatedLink","updatedChildren","child","renderLink","pass2","reverse","processItemReverse","renderHashtag","newChildren","textContent","stripTags","greentextHandle","blockElements","linebreakElements","visualLineElements","values","nonEmptyElements","elem","allElements","level","flush","handleBr","unshift","convertHtmlToLines","string","every","cleanedString","notificationsFromStore","store","visibleTypes","rootState","config","notificationVisibility","likes","repeats","follows","followRequest","moves","emojiReactions","polls","statusNotifications","isValidNotification","sortById","seqA","Number","seqB","isSeqA","isNaN","isSeqB","maybeShowNotification","muteWordHits","rootGetters","mergedConfig","muteWords","isMutedNotification","notificationObject","prepareNotificationObject","i18n","showDesktopNotification","filteredNotificationsFromStore","types","sortedNotifications","sort","unseenNotificationsFromStore","i18nString","notifObj","image","highlightStyle","prefs","solidColor","tintColor","tintColor2","customProps","backgroundImage","backgroundPosition","backgroundColor","highlightClass","fileType","fileTypeService","fileMatchesSomeType","faReply","ReplyButton","computed","loggedIn","currentUser","replying","$t","faStar","faStarRegular","FavoriteButton","animated","dispatch","mapGetters","spin","hidePostStats","faSmileBeam","ReactButton","filterWord","addReaction","existingReaction","find","me","focusInput","querySelector","focus","commonEmojis","displayText","replacement","filterWordLowercase","toLowerCase","orderedEmojiList","customEmoji","indexOfFilterWord","indexOf","flat","getters","bound-to","remove-padding","size","placeholder","$event","imageUrl","faRetweet","RetweetButton","faEllipsisH","faBookmark","faBookmarkReg","faEyeSlash","faThumbtack","faShareAlt","faExternalLinkAlt","faFlag","ExtraButtons","confirm","pinStatus","unpinStatus","copyLink","navigator","clipboard","writeText","statusLink","reportStatus","canDelete","ownStatus","canPin","canMute","fixed-width","faCircleNotch","StatusPopover","allStatuses","statusId","Status","defineAsyncComponent","enter","popover-class","is-preview","statusoid","UserListPopover","RichContent","usersCapped","EmojiReactions","showAll","tooManyReactions","showMoreString","accountsForEmoji","reaction","toggleShowAll","reactedWith","fetchEmojiReactionsByIfMissing","reactWith","unreact","emojiOnClick","count","faEnvelope","faGlobe","faLock","faLockOpen","faTimes","faPlusSquare","faEye","faChevronUp","faChevronDown","faAngleDoubleRight","list","camelCase","charAt","toUpperCase","controlledOrUncontrolledSet","obj","camelized","set","uncontrolledName","PostStatusForm","UserCard","AvatarList","Timeago","StatusContent","MentionLink","uncontrolledReplying","unmuted","userExpanded","uncontrolledMediaPlaying","suspendable","headTailLinks","res","toggle","controlledName","$data","$props","showReasonMutedThread","inConversation","repeaterClass","userClass","deleted","repeaterStyle","highlight","userStyle","noHeading","userProfileLink","generateUserProfileLink","replyProfileLink","isReply","findUser","retweeterUser","retweeter","retweeterHtml","retweeterProfileLink","statusFromGlobalRepository","allStatusesObject","rtBotStatus","botStatus","botIndicator","hideBotIndication","rtBotIndicator","mentionsLine","writtenSet","attn","hasMentionsLine","reasonsToMute","userIsMuted","muteBotStatuses","shouldNotMute","relationshipReblog","inProfile","profileUserId","hideMutedUsers","hideMutedPosts","hideMutedThreads","hideFilteredStatuses","hideWordFilteredPosts","hideStatus","isFocused","focused","replyToName","replySubject","decodedSummary","behavior","subjectLineBehavior","startsWithRe","concat","combinedFavsAndRepeatsUsers","combinedUsers","tagObj","browserSupport","cssFilter","isSuspendable","mediaPlaying","inThreadForest","controlledThreadDisplayStatus","threadShowing","visibilityLocalized","$i18n","visibilityIcon","showError","clearError","toggleReplying","controlledOrUncontrolledToggle","gotoOriginal","toggleExpanded","toggleMute","toggleUserExpanded","addMediaPlaying","removeMediaPlaying","setHeadTailLinks","toggleThreadDisplay","controlledToggleThreadDisplay","scrollIfHighlighted","highlightId","rect","scrollBy","watch","num","inlineExpanded","isPreview","to","highlighted","better-shadow","data-tags","user-id","rounded","bordered","time","auto-update","expandable","replies","simpleTree","aria-expanded","dive","status-id","aria-label","flip","user-screen-name","no-heading","controlled-showing-tall","controlledShowingTall","controlled-expanding-subject","controlledExpandingSubject","controlled-showing-long-subject","controlledShowingLongSubject","controlled-toggle-showing-tall","controlledToggleShowingTall","controlled-toggle-expanding-subject","controlledToggleExpandingSubject","controlled-toggle-showing-long-subject","controlledToggleShowingLongSubject","showOtherRepliesAsButton","$tc","numReplies","reply","emojiReactionsOnTimeline","logged-in","reply-to","replied-user","copy-message-scope","subject","DialogModal","darkOverlay","onCancel","Function","ModerationTools","FORCE_NSFW","STRIP_MEDIA","FORCE_UNLISTED","DISABLE_REMOTE_SUBSCRIPTION","DISABLE_ANY_SUBSCRIPTION","SANDBOX","QUARANTINE","showDeleteUserDialog","toggled","tagsSet","hasTagPolicy","tagPolicyAvailable","hasTag","toggleTag","api","backendInteractor","commit","toggleRight","toggleActivationStatus","deleteUserDialog","show","isProfile","$route","isTargetUser","history","back","setToggled","on-cancel","footer","faEllipsisV","AccountActions","ProgressButton","showRepeats","hideRepeats","openChat","recipient_id","mapState","pleromaChatMessagesAvailable","showing_reblogs","faRss","faBell","faSearchPlus","faEdit","followRequestInProgress","classes","isOtherUser","subscribeUrl","serverUrl","URL","protocol","host","dailyAvg","days","userHighlightType","userHighlightColor","visibleRole","validRole","roleTitle","hideFollowsCount","hideFollowersCount","RemoteFollow","FollowButton","Select","refetchRelationship","setProfileView","switcher","linkClicked","openProfileTab","zoomAvatar","mentionUser","replyTo","repliedUser","hideBio","hideUserStats","subscribing","click","disabled","handle-links","LAYERS","undelay","topBar","badge","profileTint","panel","popover","selectedMenu","btn","btnPanel","btnTopBar","inputPanel","inputTopBar","alert","alertPanel","chatBg","chatMessage","DEFAULT_OPACITY","faint","underlay","alertPopup","SLOT_INHERITANCE","depends","priority","wallpaper","mod","brightness","layer","accent","faintLink","postFaintLink","cBlue","cRed","cGreen","cOrange","profileBg","highlightLightText","textColor","highlightPostLink","highlightFaintText","highlightFaintLink","highlightPostFaintLink","highlightText","highlightLink","highlightIcon","popoverLightText","popoverPostLink","popoverFaintText","popoverFaintLink","popoverPostFaintLink","popoverText","popoverLink","popoverIcon","selectedPost","selectedPostFaintText","variant","selectedPostLightText","selectedPostPostLink","selectedPostFaintLink","selectedPostText","selectedPostLink","selectedPostIcon","selectedMenuLightText","selectedMenuFaintText","selectedMenuFaintLink","selectedMenuText","selectedMenuLink","selectedMenuIcon","selectedMenuPopover","selectedMenuPopoverLightText","selectedMenuPopoverFaintText","selectedMenuPopoverFaintLink","selectedMenuPopoverText","selectedMenuPopoverLink","selectedMenuPopoverIcon","lightText","postLink","postGreentext","postCyantext","border","copacity","pollText","inheritsOpacity","fgText","fgLink","panelText","panelFaint","panelLink","topBarText","topBarLink","tab","tabText","tabActiveText","btnText","btnPanelText","btnTopBarText","btnPressed","btnPressedText","btnPressedPanel","btnPressedPanelText","btnPressedTopBar","btnPressedTopBarText","btnToggled","btnToggledText","btnToggledPanelText","btnToggledTopBarText","btnDisabled","btnDisabledText","btnDisabledPanelText","btnDisabledTopBarText","inputText","inputPanelText","inputTopbarText","alertError","alertErrorText","alertErrorPanelText","alertWarning","alertWarningText","alertWarningPanelText","alertSuccess","alertSuccessText","alertSuccessPanelText","alertNeutral","alertNeutralText","alertNeutralPanelText","alertPopupError","alertPopupErrorText","alertPopupWarning","alertPopupWarningText","alertPopupSuccess","alertPopupSuccessText","alertPopupNeutral","alertPopupNeutralText","badgeNotification","badgeNotificationText","chatMessageIncomingBg","chatMessageIncomingText","chatMessageIncomingLink","chatMessageIncomingBorder","chatMessageOutgoingBg","chatMessageOutgoingText","chatMessageOutgoingLink","chatMessageOutgoingBorder","specialLanguageCodes","internalToBrowserLocale","getLanguageName","languageName","ISO6391","getNativeName","browserLocale","toLocaleUpperCase","languages","languagesObject","localeCompare","localeService","internalToBackendLocale","applyTheme","rules","generatePreset","classList","styleEl","styleSheet","sheet","insertRule","radii","colors","shadows","fonts","remove","getCssShadow","usesDropShadow","inset","shad","blur","spread","alpha","getCssShadowFilter","generateColors","themeData","sourceColors","themeEngineVersion","colors2to3","getColors","htmlColors","solid","complete","theme","generateRadii","inputRadii","btnRadius","endsWith","checkbox","avatarAlt","tooltip","generateFonts","interface","family","post","postCode","shadow","buttonInsetFakeBorders","inputInsetFakeBorders","hoverGlow","DEFAULT_SHADOWS","popup","avatarStatus","panelHeader","button","buttonHover","buttonPressed","generateShadows","hackContextDict","cleanInputShadows","shadowDef","inputShadows","shadows2to3","shadowsAcc","slotName","shadowDefs","slotFirstWord","colorSlotName","convert","newShadow","shadowAcc","def","computeDynamicColor","variableSlot","composePreset","getThemes","cache","themes","statePositionAcc","position","getOpacitySlot","getPreset","isV1","setPreset","promiseInterval","promiseCall","interval","stopped","func","stop","loading","pollsObject","basePoll","expiresAt","expires_at","expired","showResults","voted","totalVotesCount","votes_count","containerClass","choiceIndices","entry","isDisabled","noChoice","percentageForOption","resultTitle","activateOption","querySelectorAll","clickedElement","checked","element","optionId","voters_count","scope","keypath","now-threshold","faAt","findUserByUrl","isYou","userName","userNameFullUi","serverName","instanceDomain","userNameFull","highlightType","classnames","shouldBoldenYou","useAtIcon","isRemote","shouldShowFullUserName","conf","mentionLinkDisplay","shouldShowTooltip","mentionLinkShowTooltip","shouldShowAvatar","mentionLinkShowAvatar","shouldShowYous","mentionLinkShowYous","mentionLinkBoldenYou","shouldFadeDomain","mentionLinkFadeDomain","MFM_TAGS","defineComponent","ast","mfm","fnNameList","validTime","h","genEl","xss","speed","direction","alternate","anime","serif","monospace","cursive","fantasy","math","MkSparkle","degrees","deg","random","log","mention","userScreenName","hashtag","hash","lang","inline","nowrap","static_url","faFile","faMusic","faImage","faLink","faPollH","renderMisskeyMarkdown","postLength","parseReadyDone","localCollapseSubjectDefault","collapseMessageWithSubject","tallStatus","singleLine","longSubject","mightHideBecauseSubject","mightHideBecauseTall","hideSubjectStatus","expandingSubject","hideTallStatus","showingTall","showingMore","attachmentTypes","MFMContent","mounted","onParseReady","handle","toggleShowMore","toggleShowingTall","toggleExpandingSubject","showingLongSubject","toggleShowingLongSubject","fullContent","uncontrolledShowingTall","uncontrolledShowingLongSubject","uncontrolledExpandingSubject","hideAttachments","hideAttachmentsInConv","nsfwClickthrough","attachmentSize","maxThumbnails","Attachment","Poll","Gallery","LinkPreview","StatusBody","setMedia","galleryAttachments","single-line","showing-tall","expanding-subject","showing-long-subject","toggle-showing-tall","toggle-expanding-subject","toggle-showing-long-subject","base-poll","MINUTE","HOUR","DAY","WEEK","MONTH","YEAR","relativeTime","date","nowThreshold","now","abs","relativeTimeShort","stopGifs","appendPx","str","test","onLoad","imageLoadHandler","canvas","naturalWidth","naturalHeight","getContext","drawImage","onError","referrerpolicy","emits","indeterminate","modelValue","$slots","unstyled","BasicUserCard","CURRENT_VERSION","getLayersArray","parent","getLayers","opacitySlot","currentLayer","getDependencies","inheritance","layerDeps","expandSlotValue","getDeps","findInheritedOpacity","visited","depSlot","dependency","getLayerSlot","findInheritedLayer","SLOT_ORDERED","allKeys","whites","grays","blacks","unprocessed","step","node","ai","bi","depsA","depsB","topoSort","aV","bV","OPACITIES","defaultValue","affectedSlots","sourceColor","getColor","targetColor","variable","modifier","sourceOpacity","deps","isTextColor","outputColor","colorFunc","dep","ownOpacitySlot","opacityOverriden","dependencySlot","dependencyColor","faUpload","mediaUpload","uploadCount","uploadReady","uploading","uploadFile","self","uploadlimit","filesize","fileSizeFormatService","fileSizeFormat","allowedsize","filesizeunit","unit","allowedsizeunit","statusPosterService","fileData","decreaseUploadCount","clearFile","multiUpload","files","change","fileInfos","faPlus","pollType","expiryAmount","expiryUnit","pollLimits","maxOptions","max_options","maxLength","max_option_chars","expiryUnits","expiry","convertExpiryFromUnit","max_expiration","minExpirationInCurrentUnit","convertExpiryToUnit","min_expiration","maxExpirationInCurrentUnit","clear","nextOption","addOption","deleteOption","updatePollToParent","amount","DateUtils","expiryAmountChange","maxlength","faBan","pxStringToNumber","MediaUpload","EmojiInput","PollForm","ScopeSelector","Checkbox","updateIdempotencyKey","resize","textarea","textLength","setSelectionRange","autoFocus","scopeCopy","allAttentions","attention","buildMentionsString","copyMessageScope","postContentType","sensitiveByDefault","sensitiveIfSubject","dropFiles","uploadingFiles","posting","newStatus","mediaDescriptions","caret","pollFormVisible","showDropIcon","dropStopTimeout","previewLoading","emojiInputShown","userDefaultScope","showAllScopes","minimalScopesMode","emojiUserSuggestor","suggestor","emojiSuggestor","statusLength","spoilerTextLength","statusLengthLimit","textlimit","hasStatusLengthLimit","charactersLeft","isOverLengthLimit","alwaysShowSubject","alwaysShowSubjectInput","postFormats","safeDMEnabled","safeDM","pollsAvailable","disablePolls","hideScopeNotice","disableNotice","pollContentError","showPreview","disablePreview","emptyStatus","uploadFileLimitReached","fileLimit","mobileLayout","deep","handler","statusChanged","autoPreview","clearStatus","clearPollForm","preserveFocus","el","previewStatus","optimisticPosting","disableSubmit","submitOnEnter","stopPropagation","preventDefault","setAllMediaDescriptions","postingOptions","postHandler","statusPoster","debouncePreviewStatus","closePreview","togglePreview","addMediaFile","fileInfo","delayed","removeMediaFile","editAttachment","newText","shiftUpMediaFile","shiftDnMediaFile","uploadFailed","errString","templateArgs","startedUploadingFiles","finishedUploadingFiles","paste","clipboardData","fileDrop","dataTransfer","fileDragStop","fileDrag","dropEffect","onEmojiInputInput","Element","formRef","bottomRef","bottomBottomPaddingStr","bottomBottomPadding","scrollerRef","topPaddingStr","bottomPaddingStr","vertPadding","oldHeight","currentScroll","scrollY","scrollTop","scrollerHeight","scrollerBottomBorder","heightWithoutPadding","scrollHeight","newHeight","maxHeight","bottomBottomBorder","findOffset","isBottomObstructed","isFormBiggerThanScroller","bottomChangeDelta","totalDelta","selectionStart","targetScroll","scroll","showEmojiPicker","triggerShowPicker","changeVis","togglePollForm","setPoll","pollForm","dismissScopeNotice","ids","handleEmojiInputShow","autocomplete","disableLockWarning","disableSubject","enable-emoji-picker","suggest","emojiPickerPlacement","hide-emoji-button","newline-on-ctrl-enter","enable-sticker-picker","rows","cols","disableScopeSelector","show-all","user-default","original-scope","initial-scope","on-scope-change","postFormat","visible","drop-files","grid","descriptions","set-media","editable","edit-attachment","remove-attachment","shift-up-attachment","shift-dn-attachment","disableSensitivityCheckbox","faVideo","faPlayCircle","faStop","faTrashAlt","faPencilAlt","faAlignRight","localDescription","nsfwImage","nsfwCensorImage","hideNsfwLocal","hideNsfw","preloadImage","img","modalOpen","showHidden","flashLoaded","showDescription","Flash","VideoAttachment","classNames","edit","useContainFit","usePlaceholder","placeholderName","placeholderIconClass","mediaProxyAvailable","isEmpty","oembed","useModal","modalTypes","playVideosInModal","videoTag","newVal","onEdit","openModal","openModalForce","onRemove","onShiftUp","shiftUp","onShiftDn","shiftDn","stopFlash","flash","closePlayer","setFlashLoaded","toggleDescription","toggleHidden","useOneClickNsfw","onImageLoad","hideDescription","image-load-handler","controls","thumb_url","oembedHTML","localeDateString","toLocaleString","refreshRelativeTimeObject","longFormat","autoUpdate","datetime","items","getKey","empty","loaders","ar","ca","cs","de","eo","es","et","eu","fi","fr","ga","he","hu","it","ja","ja_easy","ko","nb","nl","oc","pl","pt","ro","ru","te","uk","zh","zh_Hant","messages","en","require","setLanguage","language","setLocaleMessage","findFirstUsable","slots","findIndex","renderOnlyFocused","onSwitch","activeTab","scrollableTabs","sideTabBar","bodyScrollLock","active","activeIndex","slot","isActive","tabName","settingsModalVisible","settingsModalState","beforeUpdate","clickTab","setTab","Fragment","contents","tabs","classesTab","classesWrapper","label","fullHeight","renderSlot","showImmediately","noIdUpdate","faCheck","faUserPlus","faUser","faSuitcaseRolling","Notification","getUser","usersObject","updater","targetUser","targetUserProfileLink","needMute","faFilter","filters","toggleNotificationFilter","Notifications","NotificationFilters","minimalMode","filterMode","disableTeleport","bottomedOut","seenToDisplayCount","mainClass","unseenNotifications","filteredNotifications","unseenCount","unseenCountTitle","unreadChatCount","layoutType","teleportTarget","wide","mobile","notificationsToDisplay","FaviconService","drawFaviconBadge","clearFaviconBadge","markAsSeen","fetchOlderNotifications","seenCount","notificationsFetcher","fetchAndUpdate","older","notifs","sizes","hidingLong","minimal","audio","attachmentsRemaining","currentRow","attachmentsDimensionalScore","row","tooManyAttachments","onNaturalSizeLoad","rowStyle","itemStyle","total","getAspectRatio","flex","toggleHidingLong","openGallery","onMedia","rowIndex","attachmentIndex","removeAttachment","shift-up","shiftUpAttachment","shift-dn","shiftDnAttachment","hide-description","number","expanded","mentionsComputed","extraMentions","manyMentions","exponent","units","toFixed","timelineData","POSITIVE_INFINITY","fetchNotifications","readNotifsIds","update","messageKey","messageArgs","startFetching","boundFetchAndUpdate","favicons","isImageLoaded","initFaviconService","favcanvas","favimg","Image","crossOrigin","favcontext","clearRect","toDataURL","badgeColor","getPropertyValue","fillStyle","beginPath","arc","faviconWidth","PI","fill","progress","defaultState","expertLevel","customTheme","customThemeSource","hideISP","hideInstanceWallpaper","hideShoutbox","padEmoji","loopVideo","loopVideoSilentOnly","streaming","alwaysShowNewPostButton","autohideFloatingPostButton","pauseOnUnfocused","thirdColumnMode","chatMention","webPushNotifications","interfaceLanguage","useStreamingApi","sidebarRight","disableStickyHeaders","showScrollbars","virtualScrolling","conversationDisplay","conversationTreeAdvanced","conversationOtherRepliesButton","conversationTreeFadeAncestors","maxDepthInThread","instanceDefaultProperties","defaultConfig","mutations","setOption","setHighlight","actions","loadSettings","knownKeys","presentKeys","intersection","Cookies","statusSummary","muteWord","desktopNotificationOpts","permission","desktopNotificationSilence","desktopNotification","ignorePadding","offsetTop","offsetLeft","findPadding","topPadding","leftPadding","leftPaddingStr","newExporter","filename","getExportedObject","exportData","stringified","btoa","display","newImporter","onImport","onImportFailure","validator","importData","filePicker","reader","FileReader","parsed","validationResult","readAsText","ruffleInstance","RuffleService","getRuffle","RufflePlayer","polyfills","publicPath","onabort","oncancel","faExclamationTriangle","player","loaded","openPlayer","ruffle","newest","createPlayer","letterbox","container","load","requestFollow","requested","fetchRelationship","attempt","sent","inProgress","isPressed","labelFollowing","unfollow","follow","requestUnfollow","blocksSuspend","hasAudio","onPlaying","setHasAudio","looping","onPaused","srcElement","webkitAudioDecodedByteCount","mozHasAudio","audioTracks","preload","loop","playsinline","imageLoaded","useImage","censored","hideNsfwConfig","useDescription","newImg","provider_name","slicedUsers","emojiCurry","suggestEmoji","usersCurry","suggestUsers","firstChar","noPrefix","substr","aScore","bScore","previousQuery","cancelUserSearch","debounceUserSearch","userSearch","newSuggestions","detailText","for","promptText","controlledLanguage","currentScope","initialScope","showNothing","showPublic","showUnlisted","showPrivate","showDirect","originalScope","shouldShow","showLocal","css","selected","unlisted","private","direct","userDefault","onScopeChange","defaultApi","path","notificationsApi","oldValue","settingsMap","serverSideConfig","confirmServerSideOption","wipeServerSideOption","wipeAllServerSideOptions","setCurrentUser","setServerSideOption","logout","getComponentProps","Component","isFunction","getComponentOptions","addPositionToWords","words","word","start","end","previous","splitByWhitespaceBoundary","currentWord","currentChar","completion","wordAtPosition","pos","wordsWithPosition","replaceWord","toReplace","faBoxOpen","faStickyNote","filterByKeyword","keyword","keywordLowercase","indexOfKeyword","EmojiPicker","enableStickerPicker","activeGroup","showingStickers","groupsScrolledClass","keepOpen","customEmojiBufferSlice","customEmojiTimeout","customEmojiLoadAllConfirmed","StickerPicker","onStickerUploaded","onStickerUploadFailed","onEmoji","insertion","onScroll","updateScrolledClass","scrolledGroup","triggerLoadMore","setShowStickers","scrollTopMax","scrollerBottom","scrollerTop","scrollerMax","loadEmoji","emojisView","group","customEmojiBuffer","filteredEmoji","startEmojiLoad","forceUpdate","bufferSize","bufferPrefilledAll","toggleStickers","activeGroupView","stickersAvailable","stickers","standardEmojis","customEmojis","stickerPickerEnabled","enableEmojiPicker","hideEmojiButton","newlineOnCtrlEnter","blurTimeout","showPicker","temporarilyHideSuggestions","disableClickOutside","showSuggestions","textAtCaret","wordAtCaret","Completion","root","onBlur","onFocus","onPaste","onKeyUp","onKeyDown","onClickInput","onTransition","onInput","newValue","newWord","firstchar","matchedSuggestions","focusPickerInput","pickerEl","picker","pickerInput","scrollIntoView","togglePicker","insert","surroundingSpace","before","after","isSpaceRegex","spaceBefore","spaceAfter","replaceText","suggestion","len","cycleBackward","cycleForward","rootRef","rootBottomBorder","setCaret","ctrlKey","shiftKey","panelBody","offsetBottom","setPlacement","overflowsBottom","ctx","normalize","_normalize","interpolate","_interpolate","named","_named","_list","plural","_plural","EventTargetPolyfill","interfaceMod","settingsModalLoaded","settingsModalTargetTab","currentSaveStateNotice","noticeClearTimeout","notificationPermission","CSS","supports","globalNotices","layoutHeight","lastTimeline","settingsSaved","success","errorData","setNotificationPermission","setLayoutType","closeSettingsModal","togglePeekSettingsModal","openSettingsModal","setSettingsModalTargetTab","pushGlobalNotice","removeGlobalNotice","setLayoutHeight","setLayoutWidth","layoutWidth","setLastTimeline","setPageTitle","clearSettingsModalTargetTab","openSettingsModalTab","newNotice","normalOrMobile","registrationOpen","vapidPublicKey","defaultBanner","hideSitename","loginMethod","logo","logoMargin","logoMask","logoLeft","redirectRootLogin","redirectRootNoLogin","showFeaturesPanel","showInstanceSpecificPanel","customEmojiFetched","emojiFetched","pleromaBackend","knownDomains","shoutAvailable","gopherAvailable","suggestionsEnabled","suggestionsWeb","instanceSpecificPanelContent","tos","backendVersion","frontendVersion","setInstanceOption","setKnownDomains","domains","instanceDefaultConfig","hostname","getStaticEmoji","getCustomEmoji","image_url","setTheme","themeName","themeSource","fetchEmoji","getKnownDomains","emptyTl","statusesObject","faves","visibleStatuses","visibleStatusesObject","newStatusCount","minVisibleId","followers","flushMarker","emptyNotifications","idStore","conversationsObject","timelines","publicAndExternal","mergeOrAdd","arr","oldItem","new","prepareStatus","sortTimeline","addStatusToGlobalStorage","conversationId","updateNotificationsMinMaxId","addNewStatuses","timelineObject","minNew","maxNew","newer","addStatus","resultForCurrentTimeline","addToTimeline","processors","counter","favoriteStatus","deletion","removeStatusFromGlobalStorage","unknown","addNewNotifications","newNotificationSideEffects","visibleNotificationTypes","removeStatus","showNewStatuses","oldTimeline","resetStatuses","emptyState","clearTimeline","excludeUserId","clearNotifications","setFavorited","setFavoritedConfirm","setMutedStatus","setRetweeted","setRetweetedConfirm","setBookmarked","setBookmarkedConfirm","setDeleted","setManyDeleted","condition","setLoading","setNsfw","setNotificationsLoading","setNotificationsSilence","markSingleNotificationAsSeen","dismissNotifications","finder","updateNotification","queueFlush","queueFlushAll","addRepeats","rebloggedByUsers","addFavs","favoritedByUsers","addEmojiReactionsBy","addOwnReaction","reactionIndex","newReaction","removeOwnReaction","updateStatusWithPoll","setVirtualHeight","virtualHeight","deleteStatusById","markStatusesAsDeleted","bookmark","unbookmark","dismissNotificationLocal","fetchFavsAndRepeats","fetchEmojiReactionsBy","fetchFavs","fetchRepeats","search","numStatusesBeforeFetch","ccTimeline","timelineFetcher","followRequestFetcher","requests","backendInteractorService","startFetchingTimeline","startFetchingNotifications","startFetchingFollowRequests","startUserSocket","windowWidth","documentElement","windowHeight","REDIRECT_URI","location","getOrCreateApp","clientId","clientSecret","___pleromafe_commit_hash","toISOString","app","client_id","client_secret","getClientToken","oauth","login","response_type","redirect_uri","dataString","encoded","getToken","getTokenWithCredentials","verifyOTPCode","mfaToken","verifyRecoveryCode","revokeToken","isPushSupported","getOrCreateServiceWorker","runtime","deleteSubscriptionFromBackEnd","registerPushNotifications","isEnabled","registration","base64String","base64","rawData","subscribeOptions","userVisibleOnly","applicationServerKey","repeat","atob","Uint8Array","charCodeAt","pushManager","subscribe","subscribePush","subscription","alerts","favourite","move","responseData","sendSubscriptionToBackEnd","mergeArrayLength","predictedRelationship","relationships","loggingIn","lastLoginName","signUpPending","signUpErrors","newTags","updateRight","newRights","updateActivationStatus","clearCurrentUser","beginLogin","endLogin","saveFriendIds","friendIds","saveFollowerIds","followerIds","clearFriends","clearFollowers","addNewUsers","updateUserRelationship","saveBlockIds","blockIds","addBlockId","blockId","saveMuteIds","muteIds","addMuteId","muteId","mascotUrl","saveDomainMutes","domainMutes","addDomainMute","removeDomainMute","setPinnedToUser","pinnedStatusIds","setUserForStatus","setUserForNotification","setColor","signUpSuccess","signUpFailure","fetchUserIfMissing","blocks","blockUsers","unblockUsers","mutes","hideReblogs","showReblogs","muteUsers","unmuteUsers","muteDomains","unmuteDomains","unregisterPushNotifications","getSubscription","subscribtion","unsubscribe","unsubscribePush","unregister","retweetedUsers","targetUsers","notificationIds","notificationsObject","relevantNotifications","signUp","userInfo","oauthApi","userToken","loginUser","requestPermission","latest","maybeShowChatNotification","currentChatId","account_id","retryMultiplier","fetchers","mastoUserSocket","mastoUserSocketStatus","followRequests","setBackendInteractor","addFetcher","fetcherName","fetcher","removeFetcher","setWsToken","wsToken","setSocket","setFollowRequests","setMastoUserSocketStatus","incrementRetryMultiplier","resetRetryMultiplier","enableMastoSockets","initial","CLOSED","CLOSING","STARTING_INITIAL","STARTING","disableMastoSockets","DISABLED","startMastoUserSocket","ERROR","JOINED","closeEvent","ignoreCodes","stopMastoUserSocket","stopFetchingTimeline","stopFetchingNotifications","stopFetchingFollowRequests","removeFollowRequest","initializeSocket","Socket","connect","disconnectFromSocket","disconnect","shout","channel","joined","setChannel","addMessage","setMessages","setJoined","initializeShout","joinPush","receive","onClose","on","msg","appToken","setClientData","setAppToken","setToken","clearToken","getUserToken","resetState","strategy","initStrategy","namespaced","requiredPassword","requiredToken","requiredTOTP","requiredRecovery","setInitialStrategy","requirePassword","requireToken","requireMFA","requireRecovery","requireTOTP","abortMFA","supportedTypes","mediaViewer","currentIndex","activated","setCurrentMedia","current","closeMediaViewer","oauthTokens","tokens","fetchTokens","swapTokens","reports","preTickedIds","modalActivated","openUserReportingModal","closeUserReportingModal","preTickedStatuses","trackedPolls","mergeOrAddPoll","existingPoll","trackPoll","currentValue","untrackPoll","updateTrackedPoll","votePoll","openPostStatusModal","closePostStatusModal","isConfirmation","storage","idempotencyKeyIndex","ChatService","newMessages","updateMaxId","fakeId","fakeMessage","idIndex","lastSeenMessageId","newMessageCount","getView","currentMessageChainId","firstMessage","previousMessage","setHours","getTime","afterDate","nextMessage","messageChainId","deleteMessage","cullOlderMessages","maxIndex","minIndex","resetNewMessageCount","failedMessageIds","handleMessageError","isRetry","lastPersistedMessage","oldId","chatList","chatListFetcher","openedChats","reactive","openedChatMessageServices","lastReadMessageId","getChatById","currentChat","currentChatMessageService","findOpenedChatByRecipientId","recipientId","sortedChatList","startFetchingChats","stopFetchingChats","fetchChats","addNewChats","newChatMessageSideEffects","updateChat","startFetchingCurrentChat","setCurrentChatFetcher","addOpenedChat","addChatMessages","resetChatNewMessageCount","clearCurrentChat","isNewMessage","resetChats","clearOpenedChats","setChatListFetcher","prevFetcher","_dispatch","chatService","setCurrentChatId","updatedChat","_rootGetters","deleteChat","conversation","last_status","setChatsLoading","chatMessageService","_value","defaultReducer","paths","substate","saveImmedeatelyActions","defaultStorage","localforage","createPersistedState","getItem","setState","setItem","reducer","subscriber","savedState","usersState","replaceState","merge","mutation","webPushNotification","isUserMutation","isVapidMutation","isPermMutation","isUserConfigMutation","isVisibilityMutation","LoginForm","isPasswordAuth","isTokenAuth","mapMutations","mapActions","submit","submitToken","submitPassword","identifier","passwordResetRequested","focusOnPasswordInput","passwordInput","mfa","authSettings","mfa_token","mfaApi","AuthForm","resolveComponent","authForm","MFARecoveryForm","MFATOTPForm","UserPanel","signedIn","hide-bio","faUsers","faHome","TimelineMenuContent","privateMode","federating","faComments","faInfoCircle","faStream","NavPanel","showTimelines","toggleTimelines","followRequestCount","InstanceSpecificPanel","FeaturesPanel","pleromaChatMessages","gopher","whoToFollow","mediaProxy","getWhoToFollow","usersToFollow","toFollow","shuffled","externalUser","showWhoToFollow","WhoToFollowPanel","oldUser","faBullhorn","shoutPanel","currentMessage","collapsed","togglePanel","scrollEl","floating","author","isOpen","noBackground","retry","getResettableAsyncComponent","asyncComponent","asyncComponentFactory","loader","observe","shallowReactive","onResetAsyncComponent","faWindowMinimize","faFileUpload","faFileDownload","SettingsModal","dataImporter","importValidator","dataThemeExporter","generateExport","dataExporter","Modal","SettingsModalContent","loadingComponent","PanelLoading","errorComponent","AsyncComponentError","delay","closeModal","peekModal","_pleroma_settings_version","major","minor","fileMajor","feMajor","restore","backup","backupWithTheme","sample","ignoreList","clone","modalOpenedOnce","modalPeeked","is-open","no-background","model-value","setTransform","scale","PinchZoom","$attrs","deltaCoord","oldCoord","newCoord","touchEventCoord","touch","touches","screenX","screenY","pointerEventCoord","clientX","clientY","vectorLength","sqrt","perpendicular","dotProduct","v1","v2","project","scalar","GestureService","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","swipeGesture","onSwipe","threshold","perpendicularTolerance","_startPos","_swiping","beginSwipe","gesture","updateSwipe","delta","towardsDir","perpendicularDir","towardsPerpendicular","SwipeAndClickGesture","swipePreviewCallback","swipeEndCallback","swipeCancelCallback","swipelessClickCallback","disableClickThreshold","nop","_reset","_pointerId","_swiped","_preventNextClick","pointerId","coord","sign","isPositive","pointerType","SwipeClick","handlePointerDown","$gesture","handlePointerMove","handlePointerUp","handlePointerCancel","cancel","handleNativeClick","offsets","faChevronLeft","faChevronRight","MediaModal","swipeDirection","swipeThreshold","pinchZoomMinScale","pinchZoomScaleResetLimit","showing","currentMedia","canNavigate","getType","hide","hideIfNotSwiped","comp","swipeClick","goPrev","prevIndex","newMedia","goNext","nextIndex","onImageLoaded","handleSwipePreview","pinchZoom","handleSwipeEnd","handleKeyupEvent","keyCode","handleKeydownEvent","selector","reach-min-scale-strategy","stop-propagate-handled","allow-pan-min-scale","min-scale","reset-to-min-scale-limit","faSignInAlt","faSignOutAlt","faSearch","faTachometerAlt","faCog","SideDrawer","closed","closeGesture","toggleDrawer","unseenNotificationsCount","sitename","timelinesRoute","doLogout","touchStart","touchMove","faPen","HIDDEN_FOR_PAGES","MobilePostStatusButton","scrollingDown","inputActive","oldScrollPos","amountScrolled","activateFloatingPostButtonAutohide","handleOSK","deactivateFloatingPostButtonAutohide","isLoggedIn","isHidden","isPersistent","handleScrollStart","handleScrollEnd","openPostForm","smallPhone","smallPhoneKbOpen","biggerPhoneKbOpen","leading","trailing","faBars","MobileNav","notificationsCloseGesture","notificationsOpen","closeMobileNotifications","isChat","toggleMobileSidebar","sideDrawer","openMobileNotifications","notificationsTouchStart","notificationsTouchMove","scrollToTop","scrollTo","active-class","SearchBar","searchTerm","route","searchInput","searchBarHidden","supportsMask","enableMask","logoStyle","logoMaskStyle","logoBgStyle","onSearchBarToggled","UserReportingModal","List","statusIdsToReport","processing","remoteInstance","isChecked","toggleStatus","in-conversation","PostStatusModal","resettingForm","isFormVisible","oldVal","GlobalNoticeList","notices","closeNotice","ShoutPanel","DesktopNav","mobileActivePanel","updateMobileState","reverseLayout","noSticky","newPostButtonShown","userBackground","instanceBackground","bgStyle","isChats","shoutboxPosition","reverseSetting","faAngleDoubleDown","ThreadTree","depth","collapsable","isExpanded","pinnedStatusIdsObject","getReplies","simple","threadDisplayStatus","showThreadRecursively","totalReplyCount","totalReplyDepth","statusContentProperties","setStatusContentProperty","toggleStatusContentProperty","selfSuspendable","statusComponent","childComponent","reverseLookupTable","table","currentReplies","statusById","currentProp","collapseThread","showThread","showAllSubthreads","toggleCurrentProp","setCurrentProp","inline-expanded","show-pinned","in-profile","profile-user-id","simple-tree","controlled-thread-display-status","controlled-toggle-thread-display","controlled-replying","controlled-media-playing","controlled-toggle-replying","controlled-set-media-playing","replyStatus","is-expanded","pinned-status-ids-object","get-replies","set-highlight","toggle-expanded","toggle-thread-display","thread-display-status","show-thread-recursively","total-reply-count","total-reply-depth","status-content-properties","set-status-content-property","toggle-status-content-property","numStatus","faAngleDoubleLeft","idA","idB","threadDisplayStatusObject","statusContentPropertiesObject","inlineDivePosition","isPage","maxDepthToShowByDefault","maxDepth","displayStyle","isTreeView","isLinearView","treeViewIsSimple","shouldFadeAncestors","otherRepliesButtonPosition","showOtherRepliesButtonBelowStatus","showOtherRepliesButtonInsideStatus","prop","virtualHidden","originalStatusId","getConversationId","statusIndex","sortAndFilterConversation","statusMap","threadTree","walk","forest","topLevel","processed","cur","replyIds","subTreeSizeFor","cid","depths","subTreeDepthFor","tl","otherTopLevelCount","showingTopLevel","canDive","diveRoot","parentOf","diveDepth","diveMode","shouldShowAllConversationButton","shouldShowAncestors","ancestorsOf","irid","hiddenStyle","isReplying","maybeHighlight","newConversationId","oldConversationId","resetDisplayState","getHighlight","setThreadDisplay","nextStatus","setThreadDisplayRecursively","leastVisibleAncestor","diveIntoStatus","preventScroll","tryScrollTo","diveToTopLevel","topLevelAncestorOrSelfId","undive","goToCurrent","parentId","parentOrSelf","show-other-replies-as-button","TimelineMenu","openMenu","blockOpen","timelineName","i18nkey","faFont","faWrench","TimelineQuickSettings","setReplyVisibility","openTab","replyVisibilitySelf","replyVisibilityFollowing","replyVisibilityAll","hideMedia","Timeline","paused","unfocused","virtualScrollIndex","blockingClicks","Conversation","filteredVisibleStatuses","filteredPinnedStatusIds","showLoadButton","loadButtonString","rootClasses","embedded","statusesToDisplay","statusesPerSide","nonPinnedIndex","virtualScrollingEnabled","handleScroll","handleVisibilityChange","handleShortKey","determineVisibleStatuses","stopBlockingClicks","blockClicksTemporarily","fetchOlderStatuses","cappedScrollIndex","pageYOffset","centerOfScreen","approxIndex","virtualScrollIndexY","scrollLoad","bodyBRect","doc","clientTop","virtual-hidden","footerSlipgate","PublicTimeline","timeline-name","PublicAndExternalTimeline","FriendsTimeline","TagTimeline","Bookmarks","conversationPage","is-page","tabModeDict","Interactions","allowFollowingMove","onModeSwitch","TabSwitcher","on-switch","minimal-mode","filter-mode","DMs","htmlTitle","getUserProfileLink","withAvatar","ChatListItem","ChatTitle","attachmentInfo","messageForStatusContent","messageEmojis","messagePreview","_e","chatNew","userIds","availableUsers","goBack","goToChat","addUser","selectedUserIds","removeUser","ChatList","ChatNew","isNew","cancelNewChat","newChat","displayDate","today","toLocaleDateString","day","month","ChatMessage","ChatMessageDate","createdAt","chatViewItem","toLocaleTimeString","hour","minute","hour12","isCurrentUser","isMessage","hasAttachment","popoverMarginStyle","hovered","menuOpened","onHover","bool","isHovered","hoveredMessageChain","bound-to-selector","full-content","getScrollPosition","Chat","jumpToBottomButtonVisible","hoveredMessageChainId","lastScrollPosition","scrollableContainerHeight","errorLoadingChat","messageRetriers","handleResize","recipient","formPlaceholder","chatViewItems","streamingEnabled","bottomedOutBeforeUpdate","scrollDown","fetchChat","isFirstFetch","onMessageHover","onFilesDropped","forceRead","expand","diff","totalHeight","isBottomedOut","reachedTop","cullOlderCheck","handleScrollUp","positionBeforeLoading","previousPosition","newPosition","positionAfterLoading","fetchLatest","fetchOlderMessages","positionBeforeUpdate","doStartFetching","handleAttachmentPosting","sendMessage","buildFakeMessage","doSendMessage","retriesLeft","with-avatar","chat-view-item","hovered-message-chain","disable-subject","disable-scope-selector","disable-notice","disable-lock-warning","disable-polls","disable-sensitivity-checkbox","disable-submit","disable-preview","optimistic-posting","post-handler","submit-on-enter","preserve-focus","auto-focus","file-limit","max-height","emoji-picker-placement","FollowCard","isMe","noFollowsYou","label-following","withLoadMore","select","childPropName","additionalPropNames","WrappedComponent","fetchEntries","updateEntries","newEntries","FollowerList","destroy","FriendList","UserProfile","footerRef","routeParams","stopFetching","isUs","followsTabVisible","followersTabVisible","setFooterRef","userNameOrId","loadById","reason","errorMessage","switchUser","onTabSwitch","viewing","allow-zooming-avatar","active-tab","render-only-focused","pinned-status-ids","no-follows-you","Search","hashtags","currenResultTab","newQuery","getActiveTab","resultCount","onResultTabSwitch","lastHistoryRecord","uses","setup","v$","useVuelidate","fullname","captcha","InterfaceLanguageSwitcher","validations","requiredIf","accountActivationRequired","sameAs","accountApprovalRequired","setCaptcha","bioPlaceholder","replaceNewlines","reasonPlaceholder","isPending","serverValidationErrors","termsOfService","captcha_solution","solution","captcha_token","captcha_answer_data","answer_data","$touch","$invalid","cpt","$error","$model","bio","sameAsPassword","prompt-text","set-language","autocorrect","autocapitalize","spellcheck","resetPassword","passwordReset","throttled","mailerEnabled","dismissError","passwordResetApi","FollowRequestCard","findFollowRequestNotificationId","notif","notifId","FollowRequests","oac","WhoToFollow","TermsOfServicePanel","StaffPanel","staffAccounts","groupedStaffAccounts","groupBy","toInstanceReasonObject","instances","info","MRFTransparencyPanel","federationPolicy","mrfPolicies","quarantineInstances","acceptInstances","rejectInstances","ftlRemovalInstances","mediaNsfwInstances","mediaRemovalInstances","keywordsFtlRemoval","keywordsReject","keywordsReplace","hasInstanceSpecificPolicies","hasKeywordPolicies","About","policy","pattern","RemoteUserResolver","redirect","previousNavPaddingRight","previousAppBgWrapperRight","validateAuthenticatedRoute","routes","_to","component","beforeEnter","BookmarkTimeline","ConversationPage","dontScroll","Registration","PasswordReset","OAuthCallback","lockerEls","disableBodyScroll","scrollBarGap","reserveScrollBarGap","navEl","getElementById","paddingRight","appBgWrapperEl","enableBodyScroll","directive","binding","Vue","staticInitialResults","decodeUTF8Base64","TextDecoder","decode","preloadFetch","decoded","requestData","getInstanceConfig","max_toot_chars","vapid_public_key","approval_required","getBackendProvidedConfig","pleroma_fe","getStaticConfig","setSettings","apiConfig","staticConfig","overrides","___pleromafe_dev_overrides","env","___pleromafe_mode","NODE_ENV","staticConfigPreference","copyInstanceOption","getTOS","getInstancePanel","getStickers","resPack","pack","getAppSecret","resolveStaffAccounts","getNodeInfo","metadata","features","nodeName","openRegistrations","uploadLimits","general","fieldsLimits","enabled","web","software","version","priv","federation","mrf_policies","setConfig","configInfos","checkOAuthToken","afterStoreSetup","router","createRouter","createWebHistory","scrollBehavior","_from","savedPosition","matched","createApp","App","use","vClickOutside","VBodyScrollLock","FontAwesomeIcon","FontAwesomeLayers","mount","currentLocale","createI18n","fallbackLocale","persistedStateOptions","storageError","plugins","pushNotifications","persistedState","createStore","global","interfaceModule","instanceModule","usersModule","statusesModule","apiModule","configModule","serverSideConfigModule","shoutModule","oauthModule","authFlow","authFlowModule","mediaViewerModule","oauthTokensModule","reportsModule","pollsModule","postStatusModule","chatsModule","strict","process","COMMIT_HASH","DEV_OVERRIDES"],"mappings":"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AC,WAC5E,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAC5E,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAC5E,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAE7E,aAAgB,CACd,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,c,oFC37BhF,Q,8BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,8BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,+CCAA,Q,gCCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,gCCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,+BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,+CCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,+CCAA,Q,6BCAA,Q,8BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,mGCEA,IAEE,IAAIz+D,YAEJ,MAAOnW,GACP6E,OAAOsR,YAAci/D,ICPvB,IA+JeC,EA1IM,CACnBzvD,MAtBmB,CACnB81C,mBAAoB,SACpB4Z,qBAAqB,EACrBC,uBAAwB,KACxBn0D,SAAU,CACRo0D,uBAAwB,KACxBC,mBAAoB,KACpBC,uBAAwB,MAE1Bn1C,eAAgB,CACdC,UAAW37B,OAAO8wE,KAAO9wE,OAAO8wE,IAAIC,WAClC/wE,OAAO8wE,IAAIC,SAAS,SAAU,qBAC9B/wE,OAAO8wE,IAAIC,SAA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","file":"static/js/app.e8949b9a3c7cfdab2e4c.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t0: 0\n \t};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"static/js/\" + ({}[chunkId]||chunkId) + \".\" + {\"2\":\"55d5f2926c7b22177236\",\"3\":\"6817af5c7ddbbd72fbf1\",\"4\":\"927a84e2225924985925\",\"5\":\"bbbe2165b2726754babd\",\"6\":\"c6e50a831e6b09d426c7\",\"7\":\"7a9d3de7e3eb6affa8fa\",\"8\":\"6e10d130a82421e5de97\",\"9\":\"4c310a18d1e30d64ab78\",\"10\":\"b67f1d16d8fdcd03f775\",\"11\":\"88732498617afe7ab4fa\",\"12\":\"21fb2f8c9787acc40766\",\"13\":\"bd887f6f8965a89629f1\",\"14\":\"8d076150d2d32a70c85c\",\"15\":\"458ea2a090159a1c312d\",\"16\":\"b026bc770b996a75ab86\",\"17\":\"37f97cc3eab74f285530\",\"18\":\"5e155da6b34cb233975a\",\"19\":\"4449616295c79e9feb82\",\"20\":\"c3c9f56f752974bf19cf\",\"21\":\"13590b4f67813801857e\",\"22\":\"af3b6f25635a9809f6e8\",\"23\":\"27002d630c581d75786b\",\"24\":\"17fecccd566085bc7273\",\"25\":\"d92131b48359fae551a4\",\"26\":\"8e2b950cad8e4bb7145f\",\"27\":\"b70f29d1c24421eeb8e0\",\"28\":\"3eeac63a0c7d7ca9f57e\",\"29\":\"a9703e50212c8482b1b8\",\"30\":\"ccdf2a34d5a00135f6b7\",\"31\":\"079c61206f2e6ac69873\",\"32\":\"2c5f6af0c5d2d87ad611\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"2\":1,\"3\":1,\"4\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"static/css/\" + ({}[chunkId]||chunkId) + \".\" + {\"2\":\"4e6541aa0979ab5fe8ab\",\"3\":\"2f4099421df47087d7d1\",\"4\":\"10e378d3da0e7f32661d\",\"5\":\"31d6cfe0d16ae931b73c\",\"6\":\"31d6cfe0d16ae931b73c\",\"7\":\"31d6cfe0d16ae931b73c\",\"8\":\"31d6cfe0d16ae931b73c\",\"9\":\"31d6cfe0d16ae931b73c\",\"10\":\"31d6cfe0d16ae931b73c\",\"11\":\"31d6cfe0d16ae931b73c\",\"12\":\"31d6cfe0d16ae931b73c\",\"13\":\"31d6cfe0d16ae931b73c\",\"14\":\"31d6cfe0d16ae931b73c\",\"15\":\"31d6cfe0d16ae931b73c\",\"16\":\"31d6cfe0d16ae931b73c\",\"17\":\"31d6cfe0d16ae931b73c\",\"18\":\"31d6cfe0d16ae931b73c\",\"19\":\"31d6cfe0d16ae931b73c\",\"20\":\"31d6cfe0d16ae931b73c\",\"21\":\"31d6cfe0d16ae931b73c\",\"22\":\"31d6cfe0d16ae931b73c\",\"23\":\"31d6cfe0d16ae931b73c\",\"24\":\"31d6cfe0d16ae931b73c\",\"25\":\"31d6cfe0d16ae931b73c\",\"26\":\"31d6cfe0d16ae931b73c\",\"27\":\"31d6cfe0d16ae931b73c\",\"28\":\"31d6cfe0d16ae931b73c\",\"29\":\"31d6cfe0d16ae931b73c\",\"30\":\"31d6cfe0d16ae931b73c\",\"31\":\"31d6cfe0d16ae931b73c\",\"32\":\"31d6cfe0d16ae931b73c\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([593,1]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import escape from 'escape-html'\nimport parseLinkHeader from 'parse-link-header'\nimport { isStatusNotification } from '../notification_utils/notification_utils.js'\nimport punycode from 'punycode.js'\n\n/** NOTICE! **\n * Do not initialize UI-generated data here.\n * It will override existing data.\n *\n * i.e. user.pinnedStatusIds was set to [] here\n * UI code would update it with data but upon next user fetch\n * it would be reverted back to []\n */\n\nconst qvitterStatusType = (status) => {\n  if (status.is_post_verb) {\n    return 'status'\n  }\n\n  if (status.retweeted_status) {\n    return 'retweet'\n  }\n\n  if ((typeof status.uri === 'string' && status.uri.match(/(fave|objectType=Favourite)/)) ||\n      (typeof status.text === 'string' && status.text.match(/favorited/))) {\n    return 'favorite'\n  }\n\n  if (status.text.match(/deleted notice {{tag/) || status.qvitter_delete_notice) {\n    return 'deletion'\n  }\n\n  if (status.text.match(/started following/) || status.activity_type === 'follow') {\n    return 'follow'\n  }\n\n  return 'unknown'\n}\n\nexport const parseUser = (data) => {\n  const output = {}\n  const masto = data.hasOwnProperty('acct')\n  // case for users in \"mentions\" property for statuses in MastoAPI\n  const mastoShort = masto && !data.hasOwnProperty('avatar')\n\n  output.id = String(data.id)\n  output._original = data // used for server-side settings\n\n  if (masto) {\n    output.screen_name = data.acct\n    output.statusnet_profile_url = data.url\n\n    // There's nothing else to get\n    if (mastoShort) {\n      return output\n    }\n\n    output.emoji = data.emojis\n    output.name = escape(data.display_name)\n    output.name_html = output.name\n    output.name_unescaped = data.display_name\n\n    output.description = data.note\n    // TODO cleanup this shit, output.description is overriden with source data\n    output.description_html = data.note\n\n    output.fields = data.fields\n    output.fields_html = data.fields.map(field => {\n      return {\n        name: escape(field.name),\n        value: field.value\n      }\n    })\n    output.fields_text = data.fields.map(field => {\n      return {\n        name: unescape(field.name.replace(/<[^>]*>/g, '')),\n        value: unescape(field.value.replace(/<[^>]*>/g, ''))\n      }\n    })\n\n    // Utilize avatar_static for gif avatars?\n    output.profile_image_url = data.avatar\n    output.profile_image_url_original = data.avatar\n\n    // Same, utilize header_static?\n    output.cover_photo = data.header\n\n    output.friends_count = data.following_count\n\n    output.bot = data.bot\n\n    if (data.pleroma) {\n      const relationship = data.pleroma.relationship\n\n      output.background_image = data.pleroma.background_image\n      output.favicon = data.pleroma.favicon\n      output.token = data.pleroma.chat_token\n\n      if (relationship) {\n        output.relationship = relationship\n      }\n\n      output.allow_following_move = data.pleroma.allow_following_move\n\n      output.hide_follows = data.pleroma.hide_follows\n      output.hide_followers = data.pleroma.hide_followers\n      output.hide_follows_count = data.pleroma.hide_follows_count\n      output.hide_followers_count = data.pleroma.hide_followers_count\n\n      output.rights = {\n        moderator: data.pleroma.is_moderator,\n        admin: data.pleroma.is_admin\n      }\n      // TODO: Clean up in UI? This is duplication from what BE does for qvitterapi\n      if (output.rights.admin) {\n        output.role = 'admin'\n      } else if (output.rights.moderator) {\n        output.role = 'moderator'\n      } else {\n        output.role = 'member'\n      }\n    }\n\n    if (data.source) {\n      output.description = data.source.note\n      output.default_scope = data.source.privacy\n      output.fields = data.source.fields\n      if (data.source.pleroma) {\n        output.no_rich_text = data.source.pleroma.no_rich_text\n        output.show_role = data.source.pleroma.show_role\n        output.discoverable = data.source.pleroma.discoverable\n      }\n    }\n\n    // TODO: handle is_local\n    output.is_local = !output.screen_name.includes('@')\n  } else {\n    output.screen_name = data.screen_name\n\n    output.name = data.name\n    output.name_html = data.name_html\n\n    output.description = data.description\n    output.description_html = data.description_html\n\n    output.profile_image_url = data.profile_image_url\n    output.profile_image_url_original = data.profile_image_url_original\n\n    output.cover_photo = data.cover_photo\n\n    output.friends_count = data.friends_count\n\n    // output.bot = ??? missing\n\n    output.statusnet_profile_url = data.statusnet_profile_url\n\n    output.is_local = data.is_local\n    output.role = data.role\n    output.show_role = data.show_role\n\n    if (data.rights) {\n      output.rights = {\n        moderator: data.rights.delete_others_notice,\n        admin: data.rights.admin\n      }\n    }\n    output.no_rich_text = data.no_rich_text\n    output.default_scope = data.default_scope\n    output.hide_follows = data.hide_follows\n    output.hide_followers = data.hide_followers\n    output.hide_follows_count = data.hide_follows_count\n    output.hide_followers_count = data.hide_followers_count\n    output.background_image = data.background_image\n    // Websocket token\n    output.token = data.token\n\n    // Convert relationsip data to expected format\n    output.relationship = {\n      muting: data.muted,\n      blocking: data.statusnet_blocking,\n      followed_by: data.follows_you,\n      following: data.following\n    }\n  }\n\n  output.created_at = new Date(data.created_at)\n  output.locked = data.locked\n  output.followers_count = data.followers_count\n  output.statuses_count = data.statuses_count\n\n  if (data.pleroma) {\n    output.follow_request_count = data.pleroma.follow_request_count\n\n    output.tags = data.pleroma.tags\n\n    // deactivated was changed to is_active in Pleroma 2.3.0\n    // so check if is_active is present\n    output.deactivated = typeof data.pleroma.is_active !== 'undefined'\n      ? !data.pleroma.is_active // new backend\n      : data.pleroma.deactivated // old backend\n\n    output.notification_settings = data.pleroma.notification_settings\n    output.unread_chat_count = data.pleroma.unread_chat_count\n  }\n\n  output.tags = output.tags || []\n  output.rights = output.rights || {}\n  output.notification_settings = output.notification_settings || {}\n\n  // Convert punycode to unicode for UI\n  output.screen_name_ui = output.screen_name\n  if (output.screen_name && output.screen_name.includes('@')) {\n    const parts = output.screen_name.split('@')\n    let unicodeDomain = punycode.toUnicode(parts[1])\n    if (unicodeDomain !== parts[1]) {\n      // Add some identifier so users can potentially spot spoofing attempts:\n      // lain.com and xn--lin-6cd.com would appear identical otherwise.\n      unicodeDomain = '🌏' + unicodeDomain\n      output.screen_name_ui = [parts[0], unicodeDomain].join('@')\n    }\n  }\n\n  return output\n}\n\nexport const parseAttachment = (data) => {\n  const output = {}\n  const masto = !data.hasOwnProperty('oembed')\n\n  if (masto) {\n    // Not exactly same...\n    output.mimetype = data.pleroma ? data.pleroma.mime_type : data.type\n    output.meta = data.meta // not present in BE yet\n    output.id = data.id\n  } else {\n    output.mimetype = data.mimetype\n    // output.meta = ??? missing\n  }\n\n  output.url = data.url\n  output.large_thumb_url = data.preview_url\n  output.description = data.description\n\n  return output\n}\n\nexport const parseStatus = (data) => {\n  const output = {}\n  const masto = data.hasOwnProperty('account')\n\n  if (masto) {\n    output.favorited = data.favourited\n    output.fave_num = data.favourites_count\n\n    output.repeated = data.reblogged\n    output.repeat_num = data.reblogs_count\n\n    output.bookmarked = data.bookmarked\n\n    output.type = data.reblog ? 'retweet' : 'status'\n    output.nsfw = data.sensitive\n\n    output.raw_html = data.content\n    output.emojis = data.emojis\n\n    output.tags = data.tags\n\n    if (data.pleroma) {\n      const { pleroma } = data\n      output.text = pleroma.content ? data.pleroma.content['text/plain'] : data.content\n      output.summary = pleroma.spoiler_text ? data.pleroma.spoiler_text['text/plain'] : data.spoiler_text\n      output.statusnet_conversation_id = data.pleroma.conversation_id\n      output.is_local = pleroma.local\n      output.in_reply_to_screen_name = data.pleroma.in_reply_to_account_acct\n      output.thread_muted = pleroma.thread_muted\n      output.emoji_reactions = pleroma.emoji_reactions\n      output.parent_visible = pleroma.parent_visible === undefined ? true : pleroma.parent_visible\n    } else {\n      output.text = data.content\n      output.summary = data.spoiler_text\n    }\n\n    if (data.akkoma) {\n      const { akkoma } = data\n      if (akkoma && akkoma.source && akkoma.source.mediaType === 'text/x.misskeymarkdown') {\n        output.mfm_content = akkoma.source.content\n      }\n    } else {\n      output.mfm_content = null\n    }\n\n    output.in_reply_to_status_id = data.in_reply_to_id\n    output.in_reply_to_user_id = data.in_reply_to_account_id\n    output.replies_count = data.replies_count\n\n    if (output.type === 'retweet') {\n      output.retweeted_status = parseStatus(data.reblog)\n    }\n\n    output.summary_raw_html = escape(data.spoiler_text)\n    output.external_url = data.url\n    output.poll = data.poll\n    if (output.poll) {\n      output.poll.options = (output.poll.options || []).map(field => ({\n        ...field,\n        title_html: escape(field.title)\n      }))\n    }\n    output.pinned = data.pinned\n    output.muted = data.muted\n  } else {\n    output.favorited = data.favorited\n    output.fave_num = data.fave_num\n\n    output.repeated = data.repeated\n    output.repeat_num = data.repeat_num\n\n    // catchall, temporary\n    // Object.assign(output, data)\n\n    output.type = qvitterStatusType(data)\n\n    if (data.nsfw === undefined) {\n      output.nsfw = isNsfw(data)\n      if (data.retweeted_status) {\n        output.nsfw = data.retweeted_status.nsfw\n      }\n    } else {\n      output.nsfw = data.nsfw\n    }\n\n    output.raw_html = data.statusnet_html\n    output.text = data.text\n\n    output.in_reply_to_status_id = data.in_reply_to_status_id\n    output.in_reply_to_user_id = data.in_reply_to_user_id\n    output.in_reply_to_screen_name = data.in_reply_to_screen_name\n    output.statusnet_conversation_id = data.statusnet_conversation_id\n\n    if (output.type === 'retweet') {\n      output.retweeted_status = parseStatus(data.retweeted_status)\n    }\n\n    output.summary = data.summary\n    output.summary_html = data.summary_html\n    output.external_url = data.external_url\n    output.is_local = data.is_local\n  }\n\n  output.id = String(data.id)\n  output.visibility = data.visibility\n  output.card = data.card\n  output.created_at = new Date(data.created_at)\n\n  // Converting to string, the right way.\n  output.in_reply_to_status_id = output.in_reply_to_status_id\n    ? String(output.in_reply_to_status_id)\n    : null\n  output.in_reply_to_user_id = output.in_reply_to_user_id\n    ? String(output.in_reply_to_user_id)\n    : null\n\n  output.user = parseUser(masto ? data.account : data.user)\n\n  output.attentions = ((masto ? data.mentions : data.attentions) || []).map(parseUser)\n\n  output.attachments = ((masto ? data.media_attachments : data.attachments) || [])\n    .map(parseAttachment)\n\n  const retweetedStatus = masto ? data.reblog : data.retweeted_status\n  if (retweetedStatus) {\n    output.retweeted_status = parseStatus(retweetedStatus)\n  }\n\n  output.favoritedBy = []\n  output.rebloggedBy = []\n\n  return output\n}\n\nexport const parseNotification = (data) => {\n  const mastoDict = {\n    'favourite': 'like',\n    'reblog': 'repeat'\n  }\n  const masto = !data.hasOwnProperty('ntype')\n  const output = {}\n\n  if (masto) {\n    output.type = mastoDict[data.type] || data.type\n    output.seen = data.pleroma.is_seen\n    output.status = isStatusNotification(output.type) ? parseStatus(data.status) : null\n    output.action = output.status // TODO: Refactor, this is unneeded\n    output.target = output.type !== 'move'\n      ? null\n      : parseUser(data.target)\n    output.from_profile = parseUser(data.account)\n    output.emoji = data.emoji\n    output.emoji_url = data.emoji_url\n  } else {\n    const parsedNotice = parseStatus(data.notice)\n    output.type = data.ntype\n    output.seen = Boolean(data.is_seen)\n    output.status = output.type === 'like'\n      ? parseStatus(data.notice.favorited_status)\n      : parsedNotice\n    output.action = parsedNotice\n    output.from_profile = output.type === 'pleroma:chat_mention' ? parseUser(data.account) : parseUser(data.from_profile)\n  }\n\n  output.created_at = new Date(data.created_at)\n  output.id = parseInt(data.id)\n\n  return output\n}\n\nconst isNsfw = (status) => {\n  const nsfwRegex = /#nsfw/i\n  return (status.tags || []).includes('nsfw') || !!(status.text || '').match(nsfwRegex)\n}\n\nexport const parseLinkHeaderPagination = (linkHeader, opts = {}) => {\n  const flakeId = opts.flakeId\n  const parsedLinkHeader = parseLinkHeader(linkHeader)\n  if (!parsedLinkHeader) return\n  const maxId = parsedLinkHeader.next.max_id\n  const minId = parsedLinkHeader.prev.min_id\n\n  return {\n    maxId: flakeId ? maxId : parseInt(maxId, 10),\n    minId: flakeId ? minId : parseInt(minId, 10)\n  }\n}\n\nexport const parseChat = (chat) => {\n  const output = {}\n  output.id = chat.id\n  output.account = parseUser(chat.account)\n  output.unread = chat.unread\n  output.lastMessage = parseChatMessage(chat.last_message)\n  output.updated_at = new Date(chat.updated_at)\n  return output\n}\n\nexport const parseChatMessage = (message) => {\n  if (!message) { return }\n  if (message.isNormalized) { return message }\n  const output = message\n  output.id = message.id\n  output.created_at = new Date(message.created_at)\n  output.chat_id = message.chat_id\n  output.emojis = message.emojis\n  output.content = message.content\n  if (message.attachment) {\n    output.attachments = [parseAttachment(message.attachment)]\n  } else {\n    output.attachments = []\n  }\n  output.pending = !!message.pending\n  output.error = false\n  output.idempotency_key = message.idempotency_key\n  output.isNormalized = true\n  return output\n}\n","import { humanizeErrors } from '../../modules/errors'\n\nexport function StatusCodeError (statusCode, body, options, response) {\n  this.name = 'StatusCodeError'\n  this.statusCode = statusCode\n  this.message = statusCode + ' - ' + (JSON && JSON.stringify ? JSON.stringify(body) : body)\n  this.error = body // legacy attribute\n  this.options = options\n  this.response = response\n\n  if (Error.captureStackTrace) { // required for non-V8 environments\n    Error.captureStackTrace(this)\n  }\n}\nStatusCodeError.prototype = Object.create(Error.prototype)\nStatusCodeError.prototype.constructor = StatusCodeError\n\nexport class RegistrationError extends Error {\n  constructor (error) {\n    super()\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(this)\n    }\n\n    try {\n      // the error is probably a JSON object with a single key, \"errors\", whose value is another JSON object containing the real errors\n      if (typeof error === 'string') {\n        error = JSON.parse(error)\n        if (error.hasOwnProperty('error')) {\n          error = JSON.parse(error.error)\n        }\n      }\n\n      if (typeof error === 'object') {\n        const errorContents = JSON.parse(error.error)\n        // keys will have the property that has the error, for example 'ap_id',\n        // 'email' or 'captcha', the value will be an array of its error\n        // like \"ap_id\": [\"has been taken\"] or \"captcha\": [\"Invalid CAPTCHA\"]\n\n        // replace ap_id with username\n        if (errorContents.ap_id) {\n          errorContents.username = errorContents.ap_id\n          delete errorContents.ap_id\n        }\n\n        this.message = humanizeErrors(errorContents)\n      } else {\n        this.message = error\n      }\n    } catch (e) {\n      // can't parse it, so just treat it like a string\n      this.message = error\n    }\n  }\n}\n","import { capitalize } from 'lodash'\n\nexport function humanizeErrors (errors) {\n  return Object.entries(errors).reduce((errs, [k, val]) => {\n    let message = val.reduce((acc, message) => {\n      let key = capitalize(k.replace(/_/g, ' '))\n      return acc + [key, message].join(' ') + '. '\n    }, '')\n    return [...errs, message]\n  }, [])\n}\n","import { each, map, concat, last, get } from 'lodash'\nimport { parseStatus, parseUser, parseNotification, parseAttachment, parseChat, parseLinkHeaderPagination } from '../entity_normalizer/entity_normalizer.service.js'\nimport { RegistrationError, StatusCodeError } from '../errors/errors'\n\n/* eslint-env browser */\nconst MUTES_IMPORT_URL = '/api/pleroma/mutes_import'\nconst BLOCKS_IMPORT_URL = '/api/pleroma/blocks_import'\nconst FOLLOW_IMPORT_URL = '/api/pleroma/follow_import'\nconst DELETE_ACCOUNT_URL = '/api/pleroma/delete_account'\nconst CHANGE_EMAIL_URL = '/api/pleroma/change_email'\nconst CHANGE_PASSWORD_URL = '/api/pleroma/change_password'\nconst TAG_USER_URL = '/api/pleroma/admin/users/tag'\nconst PERMISSION_GROUP_URL = (screenName, right) => `/api/pleroma/admin/users/${screenName}/permission_group/${right}`\nconst ACTIVATE_USER_URL = '/api/pleroma/admin/users/activate'\nconst DEACTIVATE_USER_URL = '/api/pleroma/admin/users/deactivate'\nconst ADMIN_USERS_URL = '/api/pleroma/admin/users'\nconst SUGGESTIONS_URL = '/api/v1/suggestions'\nconst NOTIFICATION_SETTINGS_URL = '/api/pleroma/notification_settings'\nconst NOTIFICATION_READ_URL = '/api/v1/pleroma/notifications/read'\n\nconst MFA_SETTINGS_URL = '/api/pleroma/accounts/mfa'\nconst MFA_BACKUP_CODES_URL = '/api/pleroma/accounts/mfa/backup_codes'\n\nconst MFA_SETUP_OTP_URL = '/api/pleroma/accounts/mfa/setup/totp'\nconst MFA_CONFIRM_OTP_URL = '/api/pleroma/accounts/mfa/confirm/totp'\nconst MFA_DISABLE_OTP_URL = '/api/pleroma/accounts/mfa/totp'\n\nconst MASTODON_LOGIN_URL = '/api/v1/accounts/verify_credentials'\nconst MASTODON_REGISTRATION_URL = '/api/v1/accounts'\nconst MASTODON_USER_FAVORITES_TIMELINE_URL = '/api/v1/favourites'\nconst MASTODON_USER_NOTIFICATIONS_URL = '/api/v1/notifications'\nconst MASTODON_DISMISS_NOTIFICATION_URL = id => `/api/v1/notifications/${id}/dismiss`\nconst MASTODON_FAVORITE_URL = id => `/api/v1/statuses/${id}/favourite`\nconst MASTODON_UNFAVORITE_URL = id => `/api/v1/statuses/${id}/unfavourite`\nconst MASTODON_RETWEET_URL = id => `/api/v1/statuses/${id}/reblog`\nconst MASTODON_UNRETWEET_URL = id => `/api/v1/statuses/${id}/unreblog`\nconst MASTODON_DELETE_URL = id => `/api/v1/statuses/${id}`\nconst MASTODON_FOLLOW_URL = id => `/api/v1/accounts/${id}/follow`\nconst MASTODON_UNFOLLOW_URL = id => `/api/v1/accounts/${id}/unfollow`\nconst MASTODON_FOLLOWING_URL = id => `/api/v1/accounts/${id}/following`\nconst MASTODON_FOLLOWERS_URL = id => `/api/v1/accounts/${id}/followers`\nconst MASTODON_FOLLOW_REQUESTS_URL = '/api/v1/follow_requests'\nconst MASTODON_APPROVE_USER_URL = id => `/api/v1/follow_requests/${id}/authorize`\nconst MASTODON_DENY_USER_URL = id => `/api/v1/follow_requests/${id}/reject`\nconst MASTODON_DIRECT_MESSAGES_TIMELINE_URL = '/api/v1/timelines/direct'\nconst MASTODON_PUBLIC_TIMELINE = '/api/v1/timelines/public'\nconst MASTODON_USER_HOME_TIMELINE_URL = '/api/v1/timelines/home'\nconst MASTODON_STATUS_URL = id => `/api/v1/statuses/${id}`\nconst MASTODON_STATUS_CONTEXT_URL = id => `/api/v1/statuses/${id}/context`\nconst MASTODON_USER_URL = '/api/v1/accounts'\nconst MASTODON_USER_RELATIONSHIPS_URL = '/api/v1/accounts/relationships'\nconst MASTODON_USER_TIMELINE_URL = id => `/api/v1/accounts/${id}/statuses`\nconst MASTODON_TAG_TIMELINE_URL = tag => `/api/v1/timelines/tag/${tag}`\nconst MASTODON_BOOKMARK_TIMELINE_URL = '/api/v1/bookmarks'\nconst MASTODON_USER_BLOCKS_URL = '/api/v1/blocks/'\nconst MASTODON_USER_MUTES_URL = '/api/v1/mutes/'\nconst MASTODON_BLOCK_USER_URL = id => `/api/v1/accounts/${id}/block`\nconst MASTODON_UNBLOCK_USER_URL = id => `/api/v1/accounts/${id}/unblock`\nconst MASTODON_MUTE_USER_URL = id => `/api/v1/accounts/${id}/mute`\nconst MASTODON_UNMUTE_USER_URL = id => `/api/v1/accounts/${id}/unmute`\nconst MASTODON_SUBSCRIBE_USER = id => `/api/v1/pleroma/accounts/${id}/subscribe`\nconst MASTODON_UNSUBSCRIBE_USER = id => `/api/v1/pleroma/accounts/${id}/unsubscribe`\nconst MASTODON_BOOKMARK_STATUS_URL = id => `/api/v1/statuses/${id}/bookmark`\nconst MASTODON_UNBOOKMARK_STATUS_URL = id => `/api/v1/statuses/${id}/unbookmark`\nconst MASTODON_POST_STATUS_URL = '/api/v1/statuses'\nconst MASTODON_MEDIA_UPLOAD_URL = '/api/v1/media'\nconst MASTODON_VOTE_URL = id => `/api/v1/polls/${id}/votes`\nconst MASTODON_POLL_URL = id => `/api/v1/polls/${id}`\nconst MASTODON_STATUS_FAVORITEDBY_URL = id => `/api/v1/statuses/${id}/favourited_by`\nconst MASTODON_STATUS_REBLOGGEDBY_URL = id => `/api/v1/statuses/${id}/reblogged_by`\nconst MASTODON_PROFILE_UPDATE_URL = '/api/v1/accounts/update_credentials'\nconst MASTODON_REPORT_USER_URL = '/api/v1/reports'\nconst MASTODON_PIN_OWN_STATUS = id => `/api/v1/statuses/${id}/pin`\nconst MASTODON_UNPIN_OWN_STATUS = id => `/api/v1/statuses/${id}/unpin`\nconst MASTODON_MUTE_CONVERSATION = id => `/api/v1/statuses/${id}/mute`\nconst MASTODON_UNMUTE_CONVERSATION = id => `/api/v1/statuses/${id}/unmute`\nconst MASTODON_SEARCH_2 = `/api/v2/search`\nconst MASTODON_USER_SEARCH_URL = '/api/v1/accounts/search'\nconst MASTODON_MASCOT_URL = '/api/v1/pleroma/mascot'\nconst MASTODON_DOMAIN_BLOCKS_URL = '/api/v1/domain_blocks'\nconst MASTODON_STREAMING = '/api/v1/streaming'\nconst MASTODON_KNOWN_DOMAIN_LIST_URL = '/api/v1/instance/peers'\nconst PLEROMA_EMOJI_REACTIONS_URL = id => `/api/v1/pleroma/statuses/${id}/reactions`\nconst PLEROMA_EMOJI_REACT_URL = (id, emoji) => `/api/v1/pleroma/statuses/${id}/reactions/${emoji}`\nconst PLEROMA_EMOJI_UNREACT_URL = (id, emoji) => `/api/v1/pleroma/statuses/${id}/reactions/${emoji}`\nconst PLEROMA_CHATS_URL = `/api/v1/pleroma/chats`\nconst PLEROMA_CHAT_URL = id => `/api/v1/pleroma/chats/by-account-id/${id}`\nconst PLEROMA_CHAT_MESSAGES_URL = id => `/api/v1/pleroma/chats/${id}/messages`\nconst PLEROMA_CHAT_READ_URL = id => `/api/v1/pleroma/chats/${id}/read`\nconst PLEROMA_DELETE_CHAT_MESSAGE_URL = (chatId, messageId) => `/api/v1/pleroma/chats/${chatId}/messages/${messageId}`\n\nconst oldfetch = window.fetch\n\nlet fetch = (url, options) => {\n  options = options || {}\n  const baseUrl = ''\n  const fullUrl = baseUrl + url\n  options.credentials = 'same-origin'\n  return oldfetch(fullUrl, options)\n}\n\nconst promisedRequest = ({ method, url, params, payload, credentials, headers = {} }) => {\n  const options = {\n    method,\n    headers: {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json',\n      ...headers\n    }\n  }\n  if (params) {\n    url += '?' + Object.entries(params)\n      .map(([key, value]) => encodeURIComponent(key) + '=' + encodeURIComponent(value))\n      .join('&')\n  }\n  if (payload) {\n    options.body = JSON.stringify(payload)\n  }\n  if (credentials) {\n    options.headers = {\n      ...options.headers,\n      ...authHeaders(credentials)\n    }\n  }\n  return fetch(url, options)\n    .then((response) => {\n      return new Promise((resolve, reject) => response.json()\n        .then((json) => {\n          if (!response.ok) {\n            return reject(new StatusCodeError(response.status, json, { url, options }, response))\n          }\n          return resolve(json)\n        })\n        .catch((error) => {\n          return reject(new StatusCodeError(response.status, error, { url, options }, response))\n        })\n      )\n    })\n}\n\nconst updateNotificationSettings = ({ credentials, settings }) => {\n  const form = new FormData()\n\n  each(settings, (value, key) => {\n    form.append(key, value)\n  })\n\n  return fetch(NOTIFICATION_SETTINGS_URL, {\n    headers: authHeaders(credentials),\n    method: 'PUT',\n    body: form\n  }).then((data) => data.json())\n}\n\nconst updateProfileImages = ({ credentials, avatar = null, avatarName = null, banner = null, background = null }) => {\n  const form = new FormData()\n  if (avatar !== null) {\n    if (avatarName !== null) {\n      form.append('avatar', avatar, avatarName)\n    } else {\n      form.append('avatar', avatar)\n    }\n  }\n  if (banner !== null) form.append('header', banner)\n  if (background !== null) form.append('pleroma_background_image', background)\n  return fetch(MASTODON_PROFILE_UPDATE_URL, {\n    headers: authHeaders(credentials),\n    method: 'PATCH',\n    body: form\n  })\n    .then((data) => data.json())\n    .then((data) => {\n      if (data.error) {\n        throw new Error(data.error)\n      }\n      return parseUser(data)\n    })\n}\n\nconst updateProfile = ({ credentials, params }) => {\n  return promisedRequest({\n    url: MASTODON_PROFILE_UPDATE_URL,\n    method: 'PATCH',\n    payload: params,\n    credentials\n  }).then((data) => parseUser(data))\n}\n\n// Params needed:\n// nickname\n// email\n// fullname\n// password\n// password_confirm\n//\n// Optional\n// bio\n// homepage\n// location\n// token\n// language\nconst register = ({ params, credentials }) => {\n  const { nickname, ...rest } = params\n  return fetch(MASTODON_REGISTRATION_URL, {\n    method: 'POST',\n    headers: {\n      ...authHeaders(credentials),\n      'Content-Type': 'application/json'\n    },\n    body: JSON.stringify({\n      nickname,\n      locale: 'en_US',\n      agreement: true,\n      ...rest\n    })\n  })\n    .then((response) => {\n      if (response.ok) {\n        return response.json()\n      } else {\n        return response.json().then((error) => { throw new RegistrationError(error) })\n      }\n    })\n}\n\nconst getCaptcha = () => fetch('/api/pleroma/captcha').then(resp => resp.json())\n\nconst authHeaders = (accessToken) => {\n  if (accessToken) {\n    return { 'Authorization': `Bearer ${accessToken}` }\n  } else {\n    return { }\n  }\n}\n\nconst followUser = ({ id, credentials, ...options }) => {\n  let url = MASTODON_FOLLOW_URL(id)\n  const form = {}\n  if (options.reblogs !== undefined) { form['reblogs'] = options.reblogs }\n  return fetch(url, {\n    body: JSON.stringify(form),\n    headers: {\n      ...authHeaders(credentials),\n      'Content-Type': 'application/json'\n    },\n    method: 'POST'\n  }).then((data) => data.json())\n}\n\nconst unfollowUser = ({ id, credentials }) => {\n  let url = MASTODON_UNFOLLOW_URL(id)\n  return fetch(url, {\n    headers: authHeaders(credentials),\n    method: 'POST'\n  }).then((data) => data.json())\n}\n\nconst pinOwnStatus = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_PIN_OWN_STATUS(id), credentials, method: 'POST' })\n    .then((data) => parseStatus(data))\n}\n\nconst unpinOwnStatus = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_UNPIN_OWN_STATUS(id), credentials, method: 'POST' })\n    .then((data) => parseStatus(data))\n}\n\nconst muteConversation = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_MUTE_CONVERSATION(id), credentials, method: 'POST' })\n    .then((data) => parseStatus(data))\n}\n\nconst unmuteConversation = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_UNMUTE_CONVERSATION(id), credentials, method: 'POST' })\n    .then((data) => parseStatus(data))\n}\n\nconst blockUser = ({ id, credentials }) => {\n  return fetch(MASTODON_BLOCK_USER_URL(id), {\n    headers: authHeaders(credentials),\n    method: 'POST'\n  }).then((data) => data.json())\n}\n\nconst unblockUser = ({ id, credentials }) => {\n  return fetch(MASTODON_UNBLOCK_USER_URL(id), {\n    headers: authHeaders(credentials),\n    method: 'POST'\n  }).then((data) => data.json())\n}\n\nconst approveUser = ({ id, credentials }) => {\n  let url = MASTODON_APPROVE_USER_URL(id)\n  return fetch(url, {\n    headers: authHeaders(credentials),\n    method: 'POST'\n  }).then((data) => data.json())\n}\n\nconst denyUser = ({ id, credentials }) => {\n  let url = MASTODON_DENY_USER_URL(id)\n  return fetch(url, {\n    headers: authHeaders(credentials),\n    method: 'POST'\n  }).then((data) => data.json())\n}\n\nconst fetchUser = ({ id, credentials }) => {\n  let url = `${MASTODON_USER_URL}/${id}`\n  return promisedRequest({ url, credentials })\n    .then((data) => parseUser(data))\n}\n\nconst fetchUserRelationship = ({ id, credentials }) => {\n  let url = `${MASTODON_USER_RELATIONSHIPS_URL}/?id=${id}`\n  return fetch(url, { headers: authHeaders(credentials) })\n    .then((response) => {\n      return new Promise((resolve, reject) => response.json()\n        .then((json) => {\n          if (!response.ok) {\n            return reject(new StatusCodeError(response.status, json, { url }, response))\n          }\n          return resolve(json)\n        }))\n    })\n}\n\nconst fetchFriends = ({ id, maxId, sinceId, limit = 20, credentials }) => {\n  let url = MASTODON_FOLLOWING_URL(id)\n  const args = [\n    maxId && `max_id=${maxId}`,\n    sinceId && `since_id=${sinceId}`,\n    limit && `limit=${limit}`,\n    `with_relationships=true`\n  ].filter(_ => _).join('&')\n\n  url = url + (args ? '?' + args : '')\n  return fetch(url, { headers: authHeaders(credentials) })\n    .then((data) => data.json())\n    .then((data) => data.map(parseUser))\n}\n\nconst exportFriends = ({ id, credentials }) => {\n  return new Promise(async (resolve, reject) => {\n    try {\n      let friends = []\n      let more = true\n      while (more) {\n        const maxId = friends.length > 0 ? last(friends).id : undefined\n        const users = await fetchFriends({ id, maxId, credentials })\n        friends = concat(friends, users)\n        if (users.length === 0) {\n          more = false\n        }\n      }\n      resolve(friends)\n    } catch (err) {\n      reject(err)\n    }\n  })\n}\n\nconst fetchFollowers = ({ id, maxId, sinceId, limit = 20, credentials }) => {\n  let url = MASTODON_FOLLOWERS_URL(id)\n  const args = [\n    maxId && `max_id=${maxId}`,\n    sinceId && `since_id=${sinceId}`,\n    limit && `limit=${limit}`,\n    `with_relationships=true`\n  ].filter(_ => _).join('&')\n\n  url += args ? '?' + args : ''\n  return fetch(url, { headers: authHeaders(credentials) })\n    .then((data) => data.json())\n    .then((data) => data.map(parseUser))\n}\n\nconst fetchFollowRequests = ({ credentials }) => {\n  const url = MASTODON_FOLLOW_REQUESTS_URL\n  return fetch(url, { headers: authHeaders(credentials) })\n    .then((data) => data.json())\n    .then((data) => data.map(parseUser))\n}\n\nconst fetchConversation = ({ id, credentials }) => {\n  let urlContext = MASTODON_STATUS_CONTEXT_URL(id)\n  return fetch(urlContext, { headers: authHeaders(credentials) })\n    .then((data) => {\n      if (data.ok) {\n        return data\n      }\n      throw new Error('Error fetching timeline', data)\n    })\n    .then((data) => data.json())\n    .then(({ ancestors, descendants }) => ({\n      ancestors: ancestors.map(parseStatus),\n      descendants: descendants.map(parseStatus)\n    }))\n}\n\nconst fetchStatus = ({ id, credentials }) => {\n  let url = MASTODON_STATUS_URL(id)\n  return fetch(url, { headers: authHeaders(credentials) })\n    .then((data) => {\n      if (data.ok) {\n        return data\n      }\n      throw new Error('Error fetching timeline', data)\n    })\n    .then((data) => data.json())\n    .then((data) => parseStatus(data))\n}\n\nconst tagUser = ({ tag, credentials, user }) => {\n  const screenName = user.screen_name\n  const form = {\n    nicknames: [screenName],\n    tags: [tag]\n  }\n\n  const headers = authHeaders(credentials)\n  headers['Content-Type'] = 'application/json'\n\n  return fetch(TAG_USER_URL, {\n    method: 'PUT',\n    headers: headers,\n    body: JSON.stringify(form)\n  })\n}\n\nconst untagUser = ({ tag, credentials, user }) => {\n  const screenName = user.screen_name\n  const body = {\n    nicknames: [screenName],\n    tags: [tag]\n  }\n\n  const headers = authHeaders(credentials)\n  headers['Content-Type'] = 'application/json'\n\n  return fetch(TAG_USER_URL, {\n    method: 'DELETE',\n    headers: headers,\n    body: JSON.stringify(body)\n  })\n}\n\nconst addRight = ({ right, credentials, user }) => {\n  const screenName = user.screen_name\n\n  return fetch(PERMISSION_GROUP_URL(screenName, right), {\n    method: 'POST',\n    headers: authHeaders(credentials),\n    body: {}\n  })\n}\n\nconst deleteRight = ({ right, credentials, user }) => {\n  const screenName = user.screen_name\n\n  return fetch(PERMISSION_GROUP_URL(screenName, right), {\n    method: 'DELETE',\n    headers: authHeaders(credentials),\n    body: {}\n  })\n}\n\nconst activateUser = ({ credentials, user: { screen_name: nickname } }) => {\n  return promisedRequest({\n    url: ACTIVATE_USER_URL,\n    method: 'PATCH',\n    credentials,\n    payload: {\n      nicknames: [nickname]\n    }\n  }).then(response => get(response, 'users.0'))\n}\n\nconst deactivateUser = ({ credentials, user: { screen_name: nickname } }) => {\n  return promisedRequest({\n    url: DEACTIVATE_USER_URL,\n    method: 'PATCH',\n    credentials,\n    payload: {\n      nicknames: [nickname]\n    }\n  }).then(response => get(response, 'users.0'))\n}\n\nconst deleteUser = ({ credentials, user }) => {\n  const screenName = user.screen_name\n  const headers = authHeaders(credentials)\n\n  return fetch(`${ADMIN_USERS_URL}?nickname=${screenName}`, {\n    method: 'DELETE',\n    headers: headers\n  })\n}\n\nconst fetchTimeline = ({\n  timeline,\n  credentials,\n  since = false,\n  until = false,\n  userId = false,\n  tag = false,\n  withMuted = false,\n  replyVisibility = 'all'\n}) => {\n  const timelineUrls = {\n    public: MASTODON_PUBLIC_TIMELINE,\n    friends: MASTODON_USER_HOME_TIMELINE_URL,\n    dms: MASTODON_DIRECT_MESSAGES_TIMELINE_URL,\n    notifications: MASTODON_USER_NOTIFICATIONS_URL,\n    'publicAndExternal': MASTODON_PUBLIC_TIMELINE,\n    user: MASTODON_USER_TIMELINE_URL,\n    media: MASTODON_USER_TIMELINE_URL,\n    favorites: MASTODON_USER_FAVORITES_TIMELINE_URL,\n    tag: MASTODON_TAG_TIMELINE_URL,\n    bookmarks: MASTODON_BOOKMARK_TIMELINE_URL\n  }\n  const isNotifications = timeline === 'notifications'\n  const params = []\n\n  let url = timelineUrls[timeline]\n\n  if (timeline === 'user' || timeline === 'media') {\n    url = url(userId)\n  }\n\n  if (since) {\n    params.push(['since_id', since])\n  }\n  if (until) {\n    params.push(['max_id', until])\n  }\n  if (tag) {\n    url = url(tag)\n  }\n  if (timeline === 'media') {\n    params.push(['only_media', 1])\n  }\n  if (timeline === 'public') {\n    params.push(['local', true])\n  }\n  if (timeline === 'public' || timeline === 'publicAndExternal') {\n    params.push(['only_media', false])\n  }\n  if (timeline !== 'favorites' && timeline !== 'bookmarks') {\n    params.push(['with_muted', withMuted])\n  }\n  if (replyVisibility !== 'all') {\n    params.push(['reply_visibility', replyVisibility])\n  }\n\n  params.push(['limit', 20])\n\n  const queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')\n  url += `?${queryString}`\n\n  let status = ''\n  let statusText = ''\n\n  let pagination = {}\n  return fetch(url, { headers: authHeaders(credentials) })\n    .then((data) => {\n      status = data.status\n      statusText = data.statusText\n      pagination = parseLinkHeaderPagination(data.headers.get('Link'), {\n        flakeId: timeline !== 'bookmarks' && timeline !== 'notifications'\n      })\n      return data\n    })\n    .then((data) => data.json())\n    .then((data) => {\n      if (!data.errors) {\n        return { data: data.map(isNotifications ? parseNotification : parseStatus), pagination }\n      } else {\n        data.status = status\n        data.statusText = statusText\n        return data\n      }\n    })\n}\n\nconst fetchPinnedStatuses = ({ id, credentials }) => {\n  const url = MASTODON_USER_TIMELINE_URL(id) + '?pinned=true'\n  return promisedRequest({ url, credentials })\n    .then((data) => data.map(parseStatus))\n}\n\nconst verifyCredentials = (user) => {\n  return fetch(MASTODON_LOGIN_URL, {\n    headers: authHeaders(user)\n  })\n    .then((response) => {\n      if (response.ok) {\n        return response.json()\n      } else {\n        return {\n          error: response\n        }\n      }\n    })\n    .then((data) => data.error ? data : parseUser(data))\n}\n\nconst favorite = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_FAVORITE_URL(id), method: 'POST', credentials })\n    .then((data) => parseStatus(data))\n}\n\nconst unfavorite = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_UNFAVORITE_URL(id), method: 'POST', credentials })\n    .then((data) => parseStatus(data))\n}\n\nconst retweet = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_RETWEET_URL(id), method: 'POST', credentials })\n    .then((data) => parseStatus(data))\n}\n\nconst unretweet = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_UNRETWEET_URL(id), method: 'POST', credentials })\n    .then((data) => parseStatus(data))\n}\n\nconst bookmarkStatus = ({ id, credentials }) => {\n  return promisedRequest({\n    url: MASTODON_BOOKMARK_STATUS_URL(id),\n    headers: authHeaders(credentials),\n    method: 'POST'\n  })\n}\n\nconst unbookmarkStatus = ({ id, credentials }) => {\n  return promisedRequest({\n    url: MASTODON_UNBOOKMARK_STATUS_URL(id),\n    headers: authHeaders(credentials),\n    method: 'POST'\n  })\n}\n\nconst postStatus = ({\n  credentials,\n  status,\n  spoilerText,\n  visibility,\n  sensitive,\n  poll,\n  mediaIds = [],\n  inReplyToStatusId,\n  contentType,\n  preview,\n  idempotencyKey\n}) => {\n  const form = new FormData()\n  const pollOptions = poll.options || []\n\n  form.append('status', status)\n  form.append('source', 'Pleroma FE')\n  if (spoilerText) form.append('spoiler_text', spoilerText)\n  if (visibility) form.append('visibility', visibility)\n  if (sensitive) form.append('sensitive', sensitive)\n  if (contentType) form.append('content_type', contentType)\n  mediaIds.forEach(val => {\n    form.append('media_ids[]', val)\n  })\n  if (pollOptions.some(option => option !== '')) {\n    const normalizedPoll = {\n      expires_in: poll.expiresIn,\n      multiple: poll.multiple\n    }\n    Object.keys(normalizedPoll).forEach(key => {\n      form.append(`poll[${key}]`, normalizedPoll[key])\n    })\n\n    pollOptions.forEach(option => {\n      form.append('poll[options][]', option)\n    })\n  }\n  if (inReplyToStatusId) {\n    form.append('in_reply_to_id', inReplyToStatusId)\n  }\n  if (preview) {\n    form.append('preview', 'true')\n  }\n\n  let postHeaders = authHeaders(credentials)\n  if (idempotencyKey) {\n    postHeaders['idempotency-key'] = idempotencyKey\n  }\n\n  return fetch(MASTODON_POST_STATUS_URL, {\n    body: form,\n    method: 'POST',\n    headers: postHeaders\n  })\n    .then((response) => {\n      return response.json()\n    })\n    .then((data) => data.error ? data : parseStatus(data))\n}\n\nconst deleteStatus = ({ id, credentials }) => {\n  return fetch(MASTODON_DELETE_URL(id), {\n    headers: authHeaders(credentials),\n    method: 'DELETE'\n  })\n}\n\nconst uploadMedia = ({ formData, credentials }) => {\n  return fetch(MASTODON_MEDIA_UPLOAD_URL, {\n    body: formData,\n    method: 'POST',\n    headers: authHeaders(credentials)\n  })\n    .then((data) => data.json())\n    .then((data) => parseAttachment(data))\n}\n\nconst setMediaDescription = ({ id, description, credentials }) => {\n  return promisedRequest({\n    url: `${MASTODON_MEDIA_UPLOAD_URL}/${id}`,\n    method: 'PUT',\n    headers: authHeaders(credentials),\n    payload: {\n      description\n    }\n  }).then((data) => parseAttachment(data))\n}\n\nconst importMutes = ({ file, credentials }) => {\n  const formData = new FormData()\n  formData.append('list', file)\n  return fetch(MUTES_IMPORT_URL, {\n    body: formData,\n    method: 'POST',\n    headers: authHeaders(credentials)\n  })\n    .then((response) => response.ok)\n}\n\nconst importBlocks = ({ file, credentials }) => {\n  const formData = new FormData()\n  formData.append('list', file)\n  return fetch(BLOCKS_IMPORT_URL, {\n    body: formData,\n    method: 'POST',\n    headers: authHeaders(credentials)\n  })\n    .then((response) => response.ok)\n}\n\nconst importFollows = ({ file, credentials }) => {\n  const formData = new FormData()\n  formData.append('list', file)\n  return fetch(FOLLOW_IMPORT_URL, {\n    body: formData,\n    method: 'POST',\n    headers: authHeaders(credentials)\n  })\n    .then((response) => response.ok)\n}\n\nconst deleteAccount = ({ credentials, password }) => {\n  const form = new FormData()\n\n  form.append('password', password)\n\n  return fetch(DELETE_ACCOUNT_URL, {\n    body: form,\n    method: 'POST',\n    headers: authHeaders(credentials)\n  })\n    .then((response) => response.json())\n}\n\nconst changeEmail = ({ credentials, email, password }) => {\n  const form = new FormData()\n\n  form.append('email', email)\n  form.append('password', password)\n\n  return fetch(CHANGE_EMAIL_URL, {\n    body: form,\n    method: 'POST',\n    headers: authHeaders(credentials)\n  })\n    .then((response) => response.json())\n}\n\nconst changePassword = ({ credentials, password, newPassword, newPasswordConfirmation }) => {\n  const form = new FormData()\n\n  form.append('password', password)\n  form.append('new_password', newPassword)\n  form.append('new_password_confirmation', newPasswordConfirmation)\n\n  return fetch(CHANGE_PASSWORD_URL, {\n    body: form,\n    method: 'POST',\n    headers: authHeaders(credentials)\n  })\n    .then((response) => response.json())\n}\n\nconst settingsMFA = ({ credentials }) => {\n  return fetch(MFA_SETTINGS_URL, {\n    headers: authHeaders(credentials),\n    method: 'GET'\n  }).then((data) => data.json())\n}\n\nconst mfaDisableOTP = ({ credentials, password }) => {\n  const form = new FormData()\n\n  form.append('password', password)\n\n  return fetch(MFA_DISABLE_OTP_URL, {\n    body: form,\n    method: 'DELETE',\n    headers: authHeaders(credentials)\n  })\n    .then((response) => response.json())\n}\n\nconst mfaConfirmOTP = ({ credentials, password, token }) => {\n  const form = new FormData()\n\n  form.append('password', password)\n  form.append('code', token)\n\n  return fetch(MFA_CONFIRM_OTP_URL, {\n    body: form,\n    headers: authHeaders(credentials),\n    method: 'POST'\n  }).then((data) => data.json())\n}\nconst mfaSetupOTP = ({ credentials }) => {\n  return fetch(MFA_SETUP_OTP_URL, {\n    headers: authHeaders(credentials),\n    method: 'GET'\n  }).then((data) => data.json())\n}\nconst generateMfaBackupCodes = ({ credentials }) => {\n  return fetch(MFA_BACKUP_CODES_URL, {\n    headers: authHeaders(credentials),\n    method: 'GET'\n  }).then((data) => data.json())\n}\n\nconst fetchMutes = ({ credentials }) => {\n  return promisedRequest({ url: MASTODON_USER_MUTES_URL, credentials })\n    .then((users) => users.map(parseUser))\n}\n\nconst muteUser = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_MUTE_USER_URL(id), credentials, method: 'POST' })\n}\n\nconst unmuteUser = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_UNMUTE_USER_URL(id), credentials, method: 'POST' })\n}\n\nconst fetchMascot = ({ credentials }) => {\n  return promisedRequest({ url: MASTODON_MASCOT_URL, credentials })\n}\n\nconst updateMascot = ({ mascot, credentials }) => {\n  const form = new FormData()\n  form.append('file', mascot)\n  return fetch(MASTODON_MASCOT_URL, {\n    headers: authHeaders(credentials),\n    method: 'PUT',\n    body: form\n  }).then((data) => data.json())\n}\n\nconst subscribeUser = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_SUBSCRIBE_USER(id), credentials, method: 'POST' })\n}\n\nconst unsubscribeUser = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_UNSUBSCRIBE_USER(id), credentials, method: 'POST' })\n}\n\nconst fetchBlocks = ({ credentials }) => {\n  return promisedRequest({ url: MASTODON_USER_BLOCKS_URL, credentials })\n    .then((users) => users.map(parseUser))\n}\n\nconst fetchOAuthTokens = ({ credentials }) => {\n  const url = '/api/oauth_tokens.json'\n\n  return fetch(url, {\n    headers: authHeaders(credentials)\n  }).then((data) => {\n    if (data.ok) {\n      return data.json()\n    }\n    throw new Error('Error fetching auth tokens', data)\n  })\n}\n\nconst revokeOAuthToken = ({ id, credentials }) => {\n  const url = `/api/oauth_tokens/${id}`\n\n  return fetch(url, {\n    headers: authHeaders(credentials),\n    method: 'DELETE'\n  })\n}\n\nconst suggestions = ({ credentials }) => {\n  return fetch(SUGGESTIONS_URL, {\n    headers: authHeaders(credentials)\n  }).then((data) => data.json())\n}\n\nconst markNotificationsAsSeen = ({ id, credentials, single = false }) => {\n  const body = new FormData()\n\n  if (single) {\n    body.append('id', id)\n  } else {\n    body.append('max_id', id)\n  }\n\n  return fetch(NOTIFICATION_READ_URL, {\n    body,\n    headers: authHeaders(credentials),\n    method: 'POST'\n  }).then((data) => data.json())\n}\n\nconst vote = ({ pollId, choices, credentials }) => {\n  const form = new FormData()\n  form.append('choices', choices)\n\n  return promisedRequest({\n    url: MASTODON_VOTE_URL(encodeURIComponent(pollId)),\n    method: 'POST',\n    credentials,\n    payload: {\n      choices: choices\n    }\n  })\n}\n\nconst fetchPoll = ({ pollId, credentials }) => {\n  return promisedRequest(\n    {\n      url: MASTODON_POLL_URL(encodeURIComponent(pollId)),\n      method: 'GET',\n      credentials\n    }\n  )\n}\n\nconst fetchFavoritedByUsers = ({ id, credentials }) => {\n  return promisedRequest({\n    url: MASTODON_STATUS_FAVORITEDBY_URL(id),\n    method: 'GET',\n    credentials\n  }).then((users) => users.map(parseUser))\n}\n\nconst fetchRebloggedByUsers = ({ id, credentials }) => {\n  return promisedRequest({\n    url: MASTODON_STATUS_REBLOGGEDBY_URL(id),\n    method: 'GET',\n    credentials\n  }).then((users) => users.map(parseUser))\n}\n\nconst fetchEmojiReactions = ({ id, credentials }) => {\n  return promisedRequest({ url: PLEROMA_EMOJI_REACTIONS_URL(id), credentials })\n    .then((reactions) => reactions.map(r => {\n      r.accounts = r.accounts.map(parseUser)\n      return r\n    }))\n}\n\nconst reactWithEmoji = ({ id, emoji, credentials }) => {\n  return promisedRequest({\n    url: PLEROMA_EMOJI_REACT_URL(id, emoji),\n    method: 'PUT',\n    credentials\n  }).then(parseStatus)\n}\n\nconst unreactWithEmoji = ({ id, emoji, credentials }) => {\n  return promisedRequest({\n    url: PLEROMA_EMOJI_UNREACT_URL(id, emoji),\n    method: 'DELETE',\n    credentials\n  }).then(parseStatus)\n}\n\nconst reportUser = ({ credentials, userId, statusIds, comment, forward }) => {\n  return promisedRequest({\n    url: MASTODON_REPORT_USER_URL,\n    method: 'POST',\n    payload: {\n      'account_id': userId,\n      'status_ids': statusIds,\n      comment,\n      forward\n    },\n    credentials\n  })\n}\n\nconst searchUsers = ({ credentials, query }) => {\n  return promisedRequest({\n    url: MASTODON_USER_SEARCH_URL,\n    params: {\n      q: query,\n      resolve: true\n    },\n    credentials\n  })\n    .then((data) => data.map(parseUser))\n}\n\nconst search2 = ({ credentials, q, resolve, limit, offset, following }) => {\n  let url = MASTODON_SEARCH_2\n  let params = []\n\n  if (q) {\n    params.push(['q', encodeURIComponent(q)])\n  }\n\n  if (resolve) {\n    params.push(['resolve', resolve])\n  }\n\n  if (limit) {\n    params.push(['limit', limit])\n  }\n\n  if (offset) {\n    params.push(['offset', offset])\n  }\n\n  if (following) {\n    params.push(['following', true])\n  }\n\n  params.push(['with_relationships', true])\n\n  let queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')\n  url += `?${queryString}`\n\n  return fetch(url, { headers: authHeaders(credentials) })\n    .then((data) => {\n      if (data.ok) {\n        return data\n      }\n      throw new Error('Error fetching search result', data)\n    })\n    .then((data) => { return data.json() })\n    .then((data) => {\n      data.accounts = data.accounts.slice(0, limit).map(u => parseUser(u))\n      data.statuses = data.statuses.slice(0, limit).map(s => parseStatus(s))\n      return data\n    })\n}\n\nconst fetchKnownDomains = ({ credentials }) => {\n  return promisedRequest({ url: MASTODON_KNOWN_DOMAIN_LIST_URL, credentials })\n}\n\nconst fetchDomainMutes = ({ credentials }) => {\n  return promisedRequest({ url: MASTODON_DOMAIN_BLOCKS_URL, credentials })\n}\n\nconst muteDomain = ({ domain, credentials }) => {\n  return promisedRequest({\n    url: MASTODON_DOMAIN_BLOCKS_URL,\n    method: 'POST',\n    payload: { domain },\n    credentials\n  })\n}\n\nconst unmuteDomain = ({ domain, credentials }) => {\n  return promisedRequest({\n    url: MASTODON_DOMAIN_BLOCKS_URL,\n    method: 'DELETE',\n    payload: { domain },\n    credentials\n  })\n}\n\nconst dismissNotification = ({ credentials, id }) => {\n  return promisedRequest({\n    url: MASTODON_DISMISS_NOTIFICATION_URL(id),\n    method: 'POST',\n    payload: { id },\n    credentials\n  })\n}\n\nexport const getMastodonSocketURI = ({ credentials, stream, args = {} }) => {\n  return Object.entries({\n    ...(credentials\n      ? { access_token: credentials }\n      : {}\n    ),\n    stream,\n    ...args\n  }).reduce((acc, [key, val]) => {\n    return acc + `${key}=${val}&`\n  }, MASTODON_STREAMING + '?')\n}\n\nconst MASTODON_STREAMING_EVENTS = new Set([\n  'update',\n  'notification',\n  'delete',\n  'filters_changed'\n])\n\nconst PLEROMA_STREAMING_EVENTS = new Set([\n  'pleroma:chat_update'\n])\n\n// A thin wrapper around WebSocket API that allows adding a pre-processor to it\n// Uses EventTarget and a CustomEvent to proxy events\nexport const ProcessedWS = ({\n  url,\n  preprocessor = handleMastoWS,\n  id = 'Unknown'\n}) => {\n  const eventTarget = new EventTarget()\n  const socket = new WebSocket(url)\n  if (!socket) throw new Error(`Failed to create socket ${id}`)\n  const proxy = (original, eventName, processor = a => a) => {\n    original.addEventListener(eventName, (eventData) => {\n      eventTarget.dispatchEvent(new CustomEvent(\n        eventName,\n        { detail: processor(eventData) }\n      ))\n    })\n  }\n  socket.addEventListener('open', (wsEvent) => {\n    console.debug(`[WS][${id}] Socket connected`, wsEvent)\n  })\n  socket.addEventListener('error', (wsEvent) => {\n    console.debug(`[WS][${id}] Socket errored`, wsEvent)\n  })\n  socket.addEventListener('close', (wsEvent) => {\n    console.debug(\n      `[WS][${id}] Socket disconnected with code ${wsEvent.code}`,\n      wsEvent\n    )\n  })\n  // Commented code reason: very spammy, uncomment to enable message debug logging\n  /*\n  socket.addEventListener('message', (wsEvent) => {\n    console.debug(\n      `[WS][${id}] Message received`,\n      wsEvent\n    )\n  })\n  /**/\n\n  proxy(socket, 'open')\n  proxy(socket, 'close')\n  proxy(socket, 'message', preprocessor)\n  proxy(socket, 'error')\n\n  // 1000 = Normal Closure\n  eventTarget.close = () => { socket.close(1000, 'Shutting down socket') }\n  eventTarget.getState = () => socket.readyState\n\n  return eventTarget\n}\n\nexport const handleMastoWS = (wsEvent) => {\n  const { data } = wsEvent\n  if (!data) return\n  const parsedEvent = JSON.parse(data)\n  const { event, payload } = parsedEvent\n  if (MASTODON_STREAMING_EVENTS.has(event) || PLEROMA_STREAMING_EVENTS.has(event)) {\n    // MastoBE and PleromaBE both send payload for delete as a PLAIN string\n    if (event === 'delete') {\n      return { event, id: payload }\n    }\n    const data = payload ? JSON.parse(payload) : null\n    if (event === 'update') {\n      return { event, status: parseStatus(data) }\n    } else if (event === 'notification') {\n      return { event, notification: parseNotification(data) }\n    } else if (event === 'pleroma:chat_update') {\n      return { event, chatUpdate: parseChat(data) }\n    }\n  } else {\n    console.warn('Unknown event', wsEvent)\n    return null\n  }\n}\n\nexport const WSConnectionStatus = Object.freeze({\n  'JOINED': 1,\n  'CLOSED': 2,\n  'ERROR': 3,\n  'DISABLED': 4,\n  'STARTING': 5,\n  'STARTING_INITIAL': 6\n})\n\nconst chats = ({ credentials }) => {\n  return fetch(PLEROMA_CHATS_URL, { headers: authHeaders(credentials) })\n    .then((data) => data.json())\n    .then((data) => {\n      return { chats: data.map(parseChat).filter(c => c) }\n    })\n}\n\nconst getOrCreateChat = ({ accountId, credentials }) => {\n  return promisedRequest({\n    url: PLEROMA_CHAT_URL(accountId),\n    method: 'POST',\n    credentials\n  })\n}\n\nconst chatMessages = ({ id, credentials, maxId, sinceId, limit = 20 }) => {\n  let url = PLEROMA_CHAT_MESSAGES_URL(id)\n  const args = [\n    maxId && `max_id=${maxId}`,\n    sinceId && `since_id=${sinceId}`,\n    limit && `limit=${limit}`\n  ].filter(_ => _).join('&')\n\n  url = url + (args ? '?' + args : '')\n\n  return promisedRequest({\n    url,\n    method: 'GET',\n    credentials\n  })\n}\n\nconst sendChatMessage = ({ id, content, mediaId = null, idempotencyKey, credentials }) => {\n  const payload = {\n    'content': content\n  }\n\n  if (mediaId) {\n    payload['media_id'] = mediaId\n  }\n\n  const headers = {}\n\n  if (idempotencyKey) {\n    headers['idempotency-key'] = idempotencyKey\n  }\n\n  return promisedRequest({\n    url: PLEROMA_CHAT_MESSAGES_URL(id),\n    method: 'POST',\n    payload: payload,\n    credentials,\n    headers\n  })\n}\n\nconst readChat = ({ id, lastReadId, credentials }) => {\n  return promisedRequest({\n    url: PLEROMA_CHAT_READ_URL(id),\n    method: 'POST',\n    payload: {\n      'last_read_id': lastReadId\n    },\n    credentials\n  })\n}\n\nconst deleteChatMessage = ({ chatId, messageId, credentials }) => {\n  return promisedRequest({\n    url: PLEROMA_DELETE_CHAT_MESSAGE_URL(chatId, messageId),\n    method: 'DELETE',\n    credentials\n  })\n}\n\nconst apiService = {\n  verifyCredentials,\n  fetchTimeline,\n  fetchPinnedStatuses,\n  fetchConversation,\n  fetchStatus,\n  fetchFriends,\n  exportFriends,\n  fetchFollowers,\n  followUser,\n  unfollowUser,\n  pinOwnStatus,\n  unpinOwnStatus,\n  muteConversation,\n  unmuteConversation,\n  blockUser,\n  unblockUser,\n  fetchUser,\n  fetchUserRelationship,\n  favorite,\n  unfavorite,\n  retweet,\n  unretweet,\n  bookmarkStatus,\n  unbookmarkStatus,\n  postStatus,\n  deleteStatus,\n  uploadMedia,\n  setMediaDescription,\n  fetchMutes,\n  muteUser,\n  unmuteUser,\n  subscribeUser,\n  unsubscribeUser,\n  fetchBlocks,\n  fetchOAuthTokens,\n  revokeOAuthToken,\n  tagUser,\n  untagUser,\n  deleteUser,\n  addRight,\n  deleteRight,\n  activateUser,\n  deactivateUser,\n  register,\n  getCaptcha,\n  updateProfileImages,\n  updateProfile,\n  importMutes,\n  importBlocks,\n  importFollows,\n  deleteAccount,\n  changeEmail,\n  changePassword,\n  settingsMFA,\n  mfaDisableOTP,\n  generateMfaBackupCodes,\n  mfaSetupOTP,\n  mfaConfirmOTP,\n  fetchFollowRequests,\n  approveUser,\n  denyUser,\n  suggestions,\n  markNotificationsAsSeen,\n  dismissNotification,\n  vote,\n  fetchPoll,\n  fetchFavoritedByUsers,\n  fetchRebloggedByUsers,\n  fetchMascot,\n  updateMascot,\n  fetchEmojiReactions,\n  reactWithEmoji,\n  unreactWithEmoji,\n  reportUser,\n  updateNotificationSettings,\n  search2,\n  searchUsers,\n  fetchKnownDomains,\n  fetchDomainMutes,\n  muteDomain,\n  unmuteDomain,\n  chats,\n  getOrCreateChat,\n  chatMessages,\n  sendChatMessage,\n  readChat,\n  deleteChatMessage\n}\n\nexport default apiService\n","import { invertLightness, contrastRatio } from 'chromatism'\n\n// useful for visualizing color when debugging\nexport const consoleColor = (color) => console.log('%c##########', 'background: ' + color + '; color: ' + color)\n\n/**\n * Convert r, g, b values into hex notation. All components are [0-255]\n *\n * @param {Number|String|Object} r - Either red component, {r,g,b} object, or hex string\n * @param {Number} [g] - Green component\n * @param {Number} [b] - Blue component\n */\nexport const rgb2hex = (r, g, b) => {\n  if (r === null || typeof r === 'undefined') {\n    return undefined\n  }\n  // TODO: clean up this mess\n  if (r[0] === '#' || r === 'transparent') {\n    return r\n  }\n  if (typeof r === 'object') {\n    ({ r, g, b } = r)\n  }\n  [r, g, b] = [r, g, b].map(val => {\n    val = Math.ceil(val)\n    val = val < 0 ? 0 : val\n    val = val > 255 ? 255 : val\n    return val\n  })\n  return `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`\n}\n\n/**\n * Converts 8-bit RGB component into linear component\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/relative-luminance.xml\n * https://en.wikipedia.org/wiki/SRGB#The_reverse_transformation\n *\n * @param {Number} bit - color component [0..255]\n * @returns {Number} linear component [0..1]\n */\nconst c2linear = (bit) => {\n  // W3C gives 0.03928 while wikipedia states 0.04045\n  // what those magical numbers mean - I don't know.\n  // something about gamma-correction, i suppose.\n  // Sticking with W3C example.\n  const c = bit / 255\n  if (c < 0.03928) {\n    return c / 12.92\n  } else {\n    return Math.pow((c + 0.055) / 1.055, 2.4)\n  }\n}\n\n/**\n * Converts sRGB into linear RGB\n * @param {Object} srgb - sRGB color\n * @returns {Object} linear rgb color\n */\nconst srgbToLinear = (srgb) => {\n  return 'rgb'.split('').reduce((acc, c) => { acc[c] = c2linear(srgb[c]); return acc }, {})\n}\n\n/**\n * Calculates relative luminance for given color\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/relative-luminance.xml\n *\n * @param {Object} srgb - sRGB color\n * @returns {Number} relative luminance\n */\nexport const relativeLuminance = (srgb) => {\n  const { r, g, b } = srgbToLinear(srgb)\n  return 0.2126 * r + 0.7152 * g + 0.0722 * b\n}\n\n/**\n * Generates color ratio between two colors. Order is unimporant\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\n *\n * @param {Object} a - sRGB color\n * @param {Object} b - sRGB color\n * @returns {Number} color ratio\n */\nexport const getContrastRatio = (a, b) => {\n  const la = relativeLuminance(a)\n  const lb = relativeLuminance(b)\n  const [l1, l2] = la > lb ? [la, lb] : [lb, la]\n\n  return (l1 + 0.05) / (l2 + 0.05)\n}\n\n/**\n * Same as `getContrastRatio` but for multiple layers in-between\n *\n * @param {Object} text - text color (topmost layer)\n * @param {[Object, Number]} layers[] - layers between text and bedrock\n * @param {Object} bedrock - layer at the very bottom\n */\nexport const getContrastRatioLayers = (text, layers, bedrock) => {\n  return getContrastRatio(alphaBlendLayers(bedrock, layers), text)\n}\n\n/**\n * This performs alpha blending between solid background and semi-transparent foreground\n *\n * @param {Object} fg - top layer color\n * @param {Number} fga - top layer's alpha\n * @param {Object} bg - bottom layer color\n * @returns {Object} sRGB of resulting color\n */\nexport const alphaBlend = (fg, fga, bg) => {\n  if (fga === 1 || typeof fga === 'undefined') return fg\n  return 'rgb'.split('').reduce((acc, c) => {\n    // Simplified https://en.wikipedia.org/wiki/Alpha_compositing#Alpha_blending\n    // for opaque bg and transparent fg\n    acc[c] = (fg[c] * fga + bg[c] * (1 - fga))\n    return acc\n  }, {})\n}\n\n/**\n * Same as `alphaBlend` but for multiple layers in-between\n *\n * @param {Object} bedrock - layer at the very bottom\n * @param {[Object, Number]} layers[] - layers between text and bedrock\n */\nexport const alphaBlendLayers = (bedrock, layers) => layers.reduce((acc, [color, opacity]) => {\n  return alphaBlend(color, opacity, acc)\n}, bedrock)\n\nexport const invert = (rgb) => {\n  return 'rgb'.split('').reduce((acc, c) => {\n    acc[c] = 255 - rgb[c]\n    return acc\n  }, {})\n}\n\n/**\n * Converts #rrggbb hex notation into an {r, g, b} object\n *\n * @param {String} hex - #rrggbb string\n * @returns {Object} rgb representation of the color, values are 0-255\n */\nexport const hex2rgb = (hex) => {\n  const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n  return result ? {\n    r: parseInt(result[1], 16),\n    g: parseInt(result[2], 16),\n    b: parseInt(result[3], 16)\n  } : null\n}\n\n/**\n * Old somewhat weird function for mixing two colors together\n *\n * @param {Object} a - one color (rgb)\n * @param {Object} b - other color (rgb)\n * @returns {Object} result\n */\nexport const mixrgb = (a, b) => {\n  return 'rgb'.split('').reduce((acc, k) => {\n    acc[k] = (a[k] + b[k]) / 2\n    return acc\n  }, {})\n}\n/**\n * Converts rgb object into a CSS rgba() color\n *\n * @param {Object} color - rgb\n * @returns {String} CSS rgba() color\n */\nexport const rgba2css = function (rgba) {\n  return `rgba(${Math.floor(rgba.r)}, ${Math.floor(rgba.g)}, ${Math.floor(rgba.b)}, ${rgba.a})`\n}\n\n/**\n * Get text color for given background color and intended text color\n * This checks if text and background don't have enough color and inverts\n * text color's lightness if needed. If text color is still not enough it\n * will fall back to black or white\n *\n * @param {Object} bg - background color\n * @param {Object} text - intended text color\n * @param {Boolean} preserve - try to preserve intended text color's hue/saturation (i.e. no BW)\n */\nexport const getTextColor = function (bg, text, preserve) {\n  const contrast = getContrastRatio(bg, text)\n\n  if (contrast < 4.5) {\n    const base = typeof text.a !== 'undefined' ? { a: text.a } : {}\n    const result = Object.assign(base, invertLightness(text).rgb)\n    if (!preserve && getContrastRatio(bg, result) < 4.5) {\n      // B&W\n      return contrastRatio(bg, text).rgb\n    }\n    // Inverted color\n    return result\n  }\n  return text\n}\n\n/**\n * Converts color to CSS Color value\n *\n * @param {Object|String} input - color\n * @param {Number} [a] - alpha value\n * @returns {String} a CSS Color value\n */\nexport const getCssColor = (input, a) => {\n  let rgb = {}\n  if (typeof input === 'object') {\n    rgb = input\n  } else if (typeof input === 'string') {\n    if (input.startsWith('#')) {\n      rgb = hex2rgb(input)\n    } else {\n      return input\n    }\n  }\n  return rgba2css({ ...rgb, a })\n}\n","import StillImage from '../still-image/still-image.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\n\nimport {\n  faRobot\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faRobot\n)\n\nconst UserAvatar = {\n  props: [\n    'user',\n    'betterShadow',\n    'compact',\n    'bot'\n  ],\n  data () {\n    return {\n      showPlaceholder: false,\n      defaultAvatar: `${this.$store.state.instance.server + this.$store.state.instance.defaultAvatar}`\n    }\n  },\n  components: {\n    StillImage\n  },\n  methods: {\n    imgSrc (src) {\n      return (!src || this.showPlaceholder) ? this.defaultAvatar : src\n    },\n    imageLoadError () {\n      this.showPlaceholder = true\n    }\n  }\n}\n\nexport default UserAvatar\n","import { render } from \"./user_avatar.vue?vue&type=template&id=764c87f9\"\nimport script from \"./user_avatar.js?vue&type=script&lang=js\"\nexport * from \"./user_avatar.js?vue&type=script&lang=js\"\n\nimport \"./user_avatar.vue?vue&type=style&index=0&id=764c87f9&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <span\n    class=\"Avatar\"\n    :class=\"{ '-compact': compact }\"\n  >\n    <StillImage\n      v-if=\"user\"\n      class=\"avatar\"\n      :alt=\"user.screen_name_ui\"\n      :title=\"user.screen_name_ui\"\n      :src=\"imgSrc(user.profile_image_url_original)\"\n      :image-load-error=\"imageLoadError\"\n      :class=\"{ '-compact': compact, '-better-shadow': betterShadow }\"\n    />\n    <div\n      v-else\n      class=\"avatar -placeholder\"\n      :class=\"{ '-compact': compact }\"\n    />\n    <FAIcon\n      v-if=\"bot\"\n      icon=\"robot\"\n      class=\"bot-indicator\"\n    />\n  </span>\n</template>\n\n<script src=\"./user_avatar.js\"></script>\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.Avatar {\n  --_avatarShadowBox: var(--avatarStatusShadow);\n  --_avatarShadowFilter: var(--avatarStatusShadowFilter);\n  --_avatarShadowInset: var(--avatarStatusShadowInset);\n  --_still-image-label-visibility: hidden;\n\n  display: inline-block;\n  position: relative;\n  width: 48px;\n  height: 48px;\n\n  &.-compact {\n    width: 32px;\n    height: 32px;\n    border-radius: $fallback--avatarAltRadius;\n    border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n  }\n\n  .avatar {\n    width: 100%;\n    height: 100%;\n    box-shadow: var(--_avatarShadowBox);\n    border-radius: $fallback--avatarRadius;\n    border-radius: var(--avatarRadius, $fallback--avatarRadius);\n\n    &.-better-shadow {\n      box-shadow: var(--_avatarShadowInset);\n      filter: var(--_avatarShadowFilter);\n    }\n\n    &.-animated::before {\n      display: none;\n    }\n\n    &.-compact {\n      border-radius: $fallback--avatarAltRadius;\n      border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n    }\n\n    &.-placeholder {\n      background-color: $fallback--fg;\n      background-color: var(--fg, $fallback--fg);\n    }\n  }\n\n  img {\n    width: 100%;\n    height: 100%;\n  }\n\n  .bot-indicator {\n    position: absolute;\n    bottom: 0;\n    right: 0;\n    margin: -0.2em;\n    padding: 0.2em;\n    background: rgba(127, 127, 127, 0.5);\n    color: #fff;\n    border-radius: var(--tooltipRadius);\n  }\n\n}\n</style>\n","import { includes } from 'lodash'\n\nconst generateProfileLink = (id, screenName, restrictedNicknames) => {\n  const complicated = !screenName || (isExternal(screenName) || includes(restrictedNicknames, screenName))\n  return {\n    name: (complicated ? 'external-user-profile' : 'user-profile'),\n    params: (complicated ? { id } : { name: screenName })\n  }\n}\n\nconst isExternal = screenName => screenName && screenName.includes('@')\n\nexport default generateProfileLink\n","const Popover = {\n  name: 'Popover',\n  props: {\n    // Action to trigger popover: either 'hover' or 'click'\n    trigger: String,\n\n    // Either 'top' or 'bottom'\n    placement: String,\n\n    // Takes object with properties 'x' and 'y', values of these can be\n    // 'container' for using offsetParent as boundaries for either axis\n    // or 'viewport'\n    boundTo: Object,\n\n    // Takes a selector to use as a replacement for the parent container\n    // for getting boundaries for x an y axis\n    boundToSelector: String,\n\n    // Takes a top/bottom/left/right object, how much space to leave\n    // between boundary and popover element\n    margin: Object,\n\n    // Takes a x/y object and tells how many pixels to offset from\n    // anchor point on either axis\n    offset: Object,\n\n    // Replaces the classes you may want for the popover container.\n    // Use 'popover-default' in addition to get the default popover\n    // styles with your custom class.\n    popoverClass: String,\n\n    // If true, subtract padding when calculating position for the popover,\n    // use it when popover offset looks to be different on top vs bottom.\n    removePadding: Boolean\n  },\n  data () {\n    return {\n      hidden: true,\n      styles: { opacity: 0 },\n      oldSize: { width: 0, height: 0 }\n    }\n  },\n  methods: {\n    containerBoundingClientRect () {\n      const container = this.boundToSelector ? this.$el.closest(this.boundToSelector) : this.$el.offsetParent\n      return container.getBoundingClientRect()\n    },\n    updateStyles () {\n      if (this.hidden) {\n        this.styles = {\n          opacity: 0\n        }\n        return\n      }\n\n      // Popover will be anchored around this element, trigger ref is the container, so\n      // its children are what are inside the slot. Expect only one v-slot:trigger.\n      const anchorEl = (this.$refs.trigger && this.$refs.trigger.children[0]) || this.$el\n      // SVGs don't have offsetWidth/Height, use fallback\n      const anchorWidth = anchorEl.offsetWidth || anchorEl.clientWidth\n      const anchorHeight = anchorEl.offsetHeight || anchorEl.clientHeight\n      const screenBox = anchorEl.getBoundingClientRect()\n      // Screen position of the origin point for popover\n      const origin = { x: screenBox.left + screenBox.width * 0.5, y: screenBox.top }\n      const content = this.$refs.content\n      // Minor optimization, don't call a slow reflow call if we don't have to\n      const parentBounds = this.boundTo &&\n        (this.boundTo.x === 'container' || this.boundTo.y === 'container') &&\n        this.containerBoundingClientRect()\n\n      const margin = this.margin || {}\n\n      // What are the screen bounds for the popover? Viewport vs container\n      // when using viewport, using default margin values to dodge the navbar\n      const xBounds = this.boundTo && this.boundTo.x === 'container' ? {\n        min: parentBounds.left + (margin.left || 0),\n        max: parentBounds.right - (margin.right || 0)\n      } : {\n        min: 0 + (margin.left || 10),\n        max: window.innerWidth - (margin.right || 10)\n      }\n\n      const yBounds = this.boundTo && this.boundTo.y === 'container' ? {\n        min: parentBounds.top + (margin.top || 0),\n        max: parentBounds.bottom - (margin.bottom || 0)\n      } : {\n        min: 0 + (margin.top || 50),\n        max: window.innerHeight - (margin.bottom || 5)\n      }\n\n      let horizOffset = 0\n\n      // If overflowing from left, move it so that it doesn't\n      if ((origin.x - content.offsetWidth * 0.5) < xBounds.min) {\n        horizOffset += -(origin.x - content.offsetWidth * 0.5) + xBounds.min\n      }\n\n      // If overflowing from right, move it so that it doesn't\n      if ((origin.x + horizOffset + content.offsetWidth * 0.5) > xBounds.max) {\n        horizOffset -= (origin.x + horizOffset + content.offsetWidth * 0.5) - xBounds.max\n      }\n\n      // Default to whatever user wished with placement prop\n      let usingTop = this.placement !== 'bottom'\n\n      // Handle special cases, first force to displaying on top if there's not space on bottom,\n      // regardless of what placement value was. Then check if there's not space on top, and\n      // force to bottom, again regardless of what placement value was.\n      if (origin.y + content.offsetHeight > yBounds.max) usingTop = true\n      if (origin.y - content.offsetHeight < yBounds.min) usingTop = false\n\n      let vPadding = 0\n      if (this.removePadding && usingTop) {\n        const anchorStyle = getComputedStyle(anchorEl)\n        vPadding = parseFloat(anchorStyle.paddingTop) + parseFloat(anchorStyle.paddingBottom)\n      }\n\n      const yOffset = (this.offset && this.offset.y) || 0\n      const translateY = usingTop\n        ? -anchorHeight + vPadding - yOffset - content.offsetHeight\n        : yOffset\n\n      const xOffset = (this.offset && this.offset.x) || 0\n      const translateX = anchorWidth * 0.5 - content.offsetWidth * 0.5 + horizOffset + xOffset\n\n      // Note, separate translateX and translateY avoids blurry text on chromium,\n      // single translate or translate3d resulted in blurry text.\n      this.styles = {\n        opacity: 1,\n        transform: `translateX(${Math.round(translateX)}px) translateY(${Math.round(translateY)}px)`\n      }\n    },\n    showPopover () {\n      const wasHidden = this.hidden\n      this.hidden = false\n      this.$nextTick(() => {\n        if (wasHidden) this.$emit('show')\n        this.updateStyles()\n      })\n    },\n    hidePopover () {\n      if (!this.hidden) this.$emit('close')\n      this.hidden = true\n      this.styles = { opacity: 0 }\n    },\n    onMouseenter (e) {\n      if (this.trigger === 'hover') this.showPopover()\n    },\n    onMouseleave (e) {\n      if (this.trigger === 'hover') this.hidePopover()\n    },\n    onClick (e) {\n      if (this.trigger === 'click') {\n        if (this.hidden) {\n          this.showPopover()\n        } else {\n          this.hidePopover()\n        }\n      }\n    },\n    onClickOutside (e) {\n      if (this.hidden) return\n      if (this.$el.contains(e.target)) return\n      this.hidePopover()\n    }\n  },\n  updated () {\n    // Monitor changes to content size, update styles only when content sizes have changed,\n    // that should be the only time we need to move the popover box if we don't care about scroll\n    // or resize\n    const content = this.$refs.content\n    if (!content) return\n    if (this.oldSize.width !== content.offsetWidth || this.oldSize.height !== content.offsetHeight) {\n      this.updateStyles()\n      this.oldSize = { width: content.offsetWidth, height: content.offsetHeight }\n    }\n  },\n  created () {\n    document.addEventListener('click', this.onClickOutside)\n  },\n  unmounted () {\n    document.removeEventListener('click', this.onClickOutside)\n    this.hidePopover()\n  }\n}\n\nexport default Popover\n","import { render } from \"./popover.vue?vue&type=template&id=24420bf0\"\nimport script from \"./popover.js?vue&type=script&lang=js\"\nexport * from \"./popover.js?vue&type=script&lang=js\"\n\nimport \"./popover.vue?vue&type=style&index=0&id=24420bf0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    @mouseenter=\"onMouseenter\"\n    @mouseleave=\"onMouseleave\"\n  >\n    <button\n      ref=\"trigger\"\n      class=\"button-unstyled popover-trigger-button\"\n      type=\"button\"\n      @click=\"onClick\"\n    >\n      <slot name=\"trigger\" />\n    </button>\n    <div\n      v-if=\"!hidden\"\n      ref=\"content\"\n      :style=\"styles\"\n      class=\"popover\"\n      :class=\"popoverClass || 'popover-default'\"\n    >\n      <slot\n        name=\"content\"\n        class=\"popover-inner\"\n        :close=\"hidePopover\"\n      />\n    </div>\n  </div>\n</template>\n\n<script src=\"./popover.js\" />\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.popover-trigger-button {\n  display: inline-block;\n}\n\n.popover {\n  z-index: 500;\n  position: absolute;\n  min-width: 0;\n}\n\n.popover-default {\n  transition: opacity 0.3s;\n\n  &:after {\n    content: '';\n    position: absolute;\n    top: 0;\n    bottom: 0;\n    left: 0;\n    right: 0;\n    z-index: 3;\n    box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.6);\n    box-shadow: var(--panelShadow);\n    pointer-events: none;\n  }\n\n  border-radius: $fallback--btnRadius;\n  border-radius: var(--btnRadius, $fallback--btnRadius);\n\n  background-color: $fallback--bg;\n  background-color: var(--popover, $fallback--bg);\n  color: $fallback--text;\n  color: var(--popoverText, $fallback--text);\n  --faint: var(--popoverFaintText, $fallback--faint);\n  --faintLink: var(--popoverFaintLink, $fallback--faint);\n  --lightText: var(--popoverLightText, $fallback--lightText);\n  --postLink: var(--popoverPostLink, $fallback--link);\n  --postFaintLink: var(--popoverPostFaintLink, $fallback--link);\n  --icon: var(--popoverIcon, $fallback--icon);\n}\n\n.dropdown-menu {\n  display: block;\n  padding: .5rem 0;\n  font-size: 1em;\n  text-align: left;\n  list-style: none;\n  max-width: 100vw;\n  z-index: 200;\n  white-space: nowrap;\n\n  .dropdown-divider {\n    height: 0;\n    margin: .5rem 0;\n    overflow: hidden;\n    border-top: 1px solid $fallback--border;\n    border-top: 1px solid var(--border, $fallback--border);\n  }\n\n  .dropdown-item {\n    line-height: 21px;\n    overflow: hidden;\n    display: block;\n    padding: 0.5em 0.75em;\n    clear: both;\n    font-weight: 400;\n    text-align: inherit;\n    white-space: nowrap;\n    border: none;\n    border-radius: 0px;\n    background-color: transparent;\n    box-shadow: none;\n    width: 100%;\n    height: 100%;\n    box-sizing: border-box;\n\n    --btnText: var(--popoverText, $fallback--text);\n\n    &-icon {\n      svg {\n        width: 22px;\n        margin-right: 0.75rem;\n        color: var(--menuPopoverIcon, $fallback--icon)\n      }\n    }\n\n    &:active, &:hover {\n      background-color: $fallback--lightBg;\n      background-color: var(--selectedMenuPopover, $fallback--lightBg);\n      box-shadow: none;\n      --btnText: var(--selectedMenuPopoverText, $fallback--link);\n      --faint: var(--selectedMenuPopoverFaintText, $fallback--faint);\n      --faintLink: var(--selectedMenuPopoverFaintLink, $fallback--faint);\n      --lightText: var(--selectedMenuPopoverLightText, $fallback--lightText);\n      --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n      svg {\n        color: var(--selectedMenuPopoverIcon, $fallback--icon);\n        --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n      }\n    }\n\n    .menu-checkbox {\n      display: inline-block;\n      vertical-align: middle;\n      min-width: 22px;\n      max-width: 22px;\n      min-height: 22px;\n      max-height: 22px;\n      line-height: 22px;\n      text-align: center;\n      border-radius: 0px;\n      background-color: $fallback--fg;\n      background-color: var(--input, $fallback--fg);\n      box-shadow: 0px 0px 2px black inset;\n      box-shadow: var(--inputShadow);\n      margin-right: 0.75em;\n\n      &.menu-checkbox-checked::after {\n        font-size: 1.25em;\n        content: '✓';\n      }\n\n      &.-radio {\n        border-radius: 9999px;\n\n        &.menu-checkbox-checked::after {\n          font-size: 2em;\n          content: '•';\n        }\n      }\n    }\n\n  }\n\n  .button-default.dropdown-item {\n    &,\n    i[class*=icon-] {\n      color: $fallback--text;\n      color: var(--btnText, $fallback--text);\n    }\n\n    &:active {\n      background-color: $fallback--lightBg;\n      background-color: var(--selectedMenuPopover, $fallback--lightBg);\n      color: $fallback--link;\n      color: var(--selectedMenuPopoverText, $fallback--link);\n    }\n\n    &:disabled {\n      color: $fallback--text;\n      color: var(--btnDisabledText, $fallback--text);\n    }\n\n    &.toggled {\n      color: $fallback--text;\n      color: var(--btnToggledText, $fallback--text);\n    }\n  }\n}\n</style>\n","/**\n * Extract tag name from tag opener/closer.\n *\n * @param {String} tag - tag string, i.e. '<a href=\"...\">'\n * @return {String} - tagname, i.e. \"div\"\n */\nexport const getTagName = (tag) => {\n  const result = /(?:<\\/(\\w+)>|<(\\w+)\\s?.*?\\/?>)/gi.exec(tag)\n  return result && (result[1] || result[2])\n}\n\n/**\n * Extract attributes from tag opener.\n *\n * @param {String} tag - tag string, i.e. '<a href=\"...\">'\n * @return {Object} - map of attributes key = attribute name, value = attribute value\n *   attributes without values represented as boolean true\n */\nexport const getAttrs = tag => {\n  const innertag = tag\n    .substring(1, tag.length - 1)\n    .replace(new RegExp('^' + getTagName(tag)), '')\n    .replace(/\\/?$/, '')\n    .trim()\n  const attrs = Array.from(innertag.matchAll(/([a-z0-9-]+)(?:=(\"[^\"]+?\"|'[^']+?'))?/gi))\n    .map(([trash, key, value]) => [key, value])\n    .map(([k, v]) => {\n      if (!v) return [k, true]\n      return [k, v.substring(1, v.length - 1)]\n    })\n  return Object.fromEntries(attrs)\n}\n\n/**\n * Finds shortcodes in text\n *\n * @param {String} text - original text to find emojis in\n * @param {{ url: String, shortcode: Sring }[]} emoji - list of shortcodes to find\n * @param {Function} processor - function to call on each encountered emoji,\n *   function is passed single object containing matching emoji ({ url, shortcode })\n *   return value will be inserted into resulting array instead of :shortcode:\n * @return {Array} resulting array with non-emoji parts of text and whatever {processor}\n *   returned for emoji\n */\nexport const processTextForEmoji = (text, emojis, processor) => {\n  const buffer = []\n  let textBuffer = ''\n  for (let i = 0; i < text.length; i++) {\n    const char = text[i]\n    if (char === ':') {\n      const next = text.slice(i + 1)\n      let found = false\n      for (let emoji of emojis) {\n        if (next.slice(0, emoji.shortcode.length + 1) === (emoji.shortcode + ':')) {\n          found = emoji\n          break\n        }\n      }\n      if (found) {\n        buffer.push(textBuffer)\n        textBuffer = ''\n        buffer.push(processor(found))\n        i += found.shortcode.length + 1\n      } else {\n        textBuffer += char\n      }\n    } else {\n      textBuffer += char\n    }\n  }\n  if (textBuffer) buffer.push(textBuffer)\n  return buffer\n}\n","import { getTagName } from './utility.service.js'\n\n/**\n * This is a tiny purpose-built HTML parser/processor. This basically detects\n * any type of visual newline and converts entire HTML into a array structure.\n *\n * Text nodes are represented as object with single property - text - containing\n * the visual line. Intended usage is to process the array with .map() in which\n * map function returns a string and resulting array can be converted back to html\n * with a .join('').\n *\n * Generally this isn't very useful except for when you really need to either\n * modify visual lines (greentext i.e. simple quoting) or do something with\n * first/last line.\n *\n * known issue: doesn't handle CDATA so nested CDATA might not work well\n *\n * @param {Object} input - input data\n * @return {(string|{ text: string })[]} processed html in form of a list.\n */\nexport const convertHtmlToLines = (html = '') => {\n  // Elements that are implicitly self-closing\n  // https://developer.mozilla.org/en-US/docs/Glossary/empty_element\n  const emptyElements = new Set([\n    'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input',\n    'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr'\n  ])\n  // Block-level element (they make a visual line)\n  // https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements\n  const blockElements = new Set([\n    'address', 'article', 'aside', 'blockquote', 'details', 'dialog', 'dd',\n    'div', 'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer', 'form',\n    'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hgroup', 'hr', 'li', 'main',\n    'nav', 'ol', 'p', 'pre', 'section', 'table', 'ul'\n  ])\n  // br is very weird in a way that it's technically not block-level, it's\n  // essentially converted to a \\n (or \\r\\n). There's also wbr but it doesn't\n  // guarantee linebreak, only suggest it.\n  const linebreakElements = new Set(['br'])\n\n  const visualLineElements = new Set([\n    ...blockElements.values(),\n    ...linebreakElements.values()\n  ])\n\n  // All block-level elements that aren't empty elements, i.e. not <hr>\n  const nonEmptyElements = new Set(visualLineElements)\n  // Difference\n  for (let elem of emptyElements) {\n    nonEmptyElements.delete(elem)\n  }\n\n  // All elements that we are recognizing\n  const allElements = new Set([\n    ...nonEmptyElements.values(),\n    ...emptyElements.values()\n  ])\n\n  let buffer = [] // Current output buffer\n  const level = [] // How deep we are in tags and which tags were there\n  let textBuffer = '' // Current line content\n  let tagBuffer = null // Current tag buffer, if null = we are not currently reading a tag\n\n  const flush = () => { // Processes current line buffer, adds it to output buffer and clears line buffer\n    if (textBuffer.trim().length > 0) {\n      buffer.push({ level: [...level], text: textBuffer })\n    } else {\n      buffer.push(textBuffer)\n    }\n    textBuffer = ''\n  }\n\n  const handleBr = (tag) => { // handles single newlines/linebreaks/selfclosing\n    flush()\n    buffer.push(tag)\n  }\n\n  const handleOpen = (tag) => { // handles opening tags\n    flush()\n    buffer.push(tag)\n    level.unshift(getTagName(tag))\n  }\n\n  const handleClose = (tag) => { // handles closing tags\n    if (level[0] === getTagName(tag)) {\n      flush()\n      buffer.push(tag)\n      level.shift()\n    } else { // Broken case\n      textBuffer += tag\n    }\n  }\n\n  for (let i = 0; i < html.length; i++) {\n    const char = html[i]\n    if (char === '<' && tagBuffer === null) {\n      tagBuffer = char\n    } else if (char !== '>' && tagBuffer !== null) {\n      tagBuffer += char\n    } else if (char === '>' && tagBuffer !== null) {\n      tagBuffer += char\n      const tagFull = tagBuffer\n      tagBuffer = null\n      const tagName = getTagName(tagFull)\n      if (allElements.has(tagName)) {\n        if (linebreakElements.has(tagName)) {\n          handleBr(tagFull)\n        } else if (nonEmptyElements.has(tagName)) {\n          if (tagFull[1] === '/') {\n            handleClose(tagFull)\n          } else if (tagFull[tagFull.length - 2] === '/') {\n            // self-closing\n            handleBr(tagFull)\n          } else {\n            handleOpen(tagFull)\n          }\n        } else {\n          textBuffer += tagFull\n        }\n      } else {\n        textBuffer += tagFull\n      }\n    } else if (char === '\\n') {\n      handleBr(char)\n    } else {\n      textBuffer += char\n    }\n  }\n  if (tagBuffer) {\n    textBuffer += tagBuffer\n  }\n\n  flush()\n\n  return buffer\n}\n","<template>\n  <span\n    class=\"HashtagLink\"\n  >\n    <!-- eslint-disable vue/no-v-html -->\n    <a\n      :href=\"url\"\n      class=\"original\"\n      target=\"_blank\"\n      @click.prevent=\"onClick\"\n      v-html=\"content\"\n    />\n    <!-- eslint-enable vue/no-v-html -->\n  </span>\n</template>\n\n<script src=\"./hashtag_link.js\"/>\n\n<style lang=\"scss\" src=\"./hashtag_link.scss\"/>\n","export const mentionMatchesUrl = (attention, url) => {\n  if (url === attention.statusnet_profile_url) {\n    return true\n  }\n  const [namepart, instancepart] = attention.screen_name.split('@')\n  const matchstring = new RegExp('://' + instancepart + '/.*' + namepart + '$', 'g')\n\n  return !!url.match(matchstring)\n}\n\n/**\n * Extract tag name from pleroma or mastodon url.\n * i.e https://bikeshed.party/tag/photo or https://quey.org/tags/sky\n * @param {string} url\n */\nexport const extractTagFromUrl = (url) => {\n  const regex = /tag[s]*\\/(\\w+)$/g\n  const result = regex.exec(url)\n  if (!result) {\n    return false\n  }\n  return result[1]\n}\n","import { extractTagFromUrl } from 'src/services/matcher/matcher.service.js'\n\nconst HashtagLink = {\n  name: 'HashtagLink',\n  props: {\n    url: {\n      required: true,\n      type: String\n    },\n    content: {\n      required: true,\n      type: String\n    },\n    tag: {\n      required: false,\n      type: String,\n      default: ''\n    }\n  },\n  methods: {\n    onClick () {\n      const tag = this.tag || extractTagFromUrl(this.url)\n      if (tag) {\n        const link = this.generateTagLink(tag)\n        this.$router.push(link)\n      } else {\n        window.open(this.url, '_blank')\n      }\n    },\n    generateTagLink (tag) {\n      return `/tag/${tag}`\n    }\n  }\n}\n\nexport default HashtagLink\n","import { render } from \"./hashtag_link.vue?vue&type=template&id=c545d9d6\"\nimport script from \"./hashtag_link.js?vue&type=script&lang=js\"\nexport * from \"./hashtag_link.js?vue&type=script&lang=js\"\n\nimport \"./hashtag_link.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { unescape, flattenDeep } from 'lodash'\nimport { getTagName, processTextForEmoji, getAttrs } from 'src/services/html_converter/utility.service.js'\nimport { convertHtmlToTree } from 'src/services/html_converter/html_tree_converter.service.js'\nimport { convertHtmlToLines } from 'src/services/html_converter/html_line_converter.service.js'\nimport StillImage from 'src/components/still-image/still-image.vue'\nimport MentionsLine, { MENTIONS_LIMIT } from 'src/components/mentions_line/mentions_line.vue'\nimport HashtagLink from 'src/components/hashtag_link/hashtag_link.vue'\n\nimport './rich_content.scss'\n\n/**\n * RichContent, The Über-powered component for rendering Post HTML.\n *\n * This takes post HTML and does multiple things to it:\n * - Groups all mentions into <MentionsLine>, this affects all mentions regardles\n *   of where they are (beginning/middle/end), even single mentions are converted\n *   to a <MentionsLine> containing single <MentionLink>.\n * - Replaces emoji shortcodes with <StillImage>'d images.\n *\n * There are two problems with this component's architecture:\n * 1. Parsing HTML and rendering are inseparable. Attempts to separate the two\n *    proven to be a massive overcomplication due to amount of things done here.\n * 2. We need to output both render and some extra data, which seems to be imp-\n *    possible in vue. Current solution is to emit 'parseReady' event when parsing\n *    is done within render() function.\n *\n * Apart from that one small hiccup with emit in render this _should_ be vue3-ready\n */\nexport default {\n  name: 'RichContent',\n  components: {\n    MentionsLine,\n    HashtagLink\n  },\n  props: {\n    // Original html content\n    html: {\n      required: true,\n      type: String\n    },\n    attentions: {\n      required: false,\n      default: () => []\n    },\n    // Emoji object, as in status.emojis, note the \"s\" at the end...\n    emoji: {\n      required: true,\n      type: Array\n    },\n    // Whether to handle links or not (posts: yes, everything else: no)\n    handleLinks: {\n      required: false,\n      type: Boolean,\n      default: false\n    },\n    // Meme arrows\n    greentext: {\n      required: false,\n      type: Boolean,\n      default: false\n    }\n  },\n  // NEVER EVER TOUCH DATA INSIDE RENDER\n  render () {\n    // Pre-process HTML\n    const { newHtml: html } = preProcessPerLine(this.html, this.greentext)\n    let currentMentions = null // Current chain of mentions, we group all mentions together\n    // This is used to recover spacing removed when parsing mentions\n    let lastSpacing = ''\n\n    const lastTags = [] // Tags that appear at the end of post body\n    const writtenMentions = [] // All mentions that appear in post body\n    const invisibleMentions = [] // All mentions that go beyond the limiter (see MentionsLine)\n    // to collapse too many mentions in a row\n    const writtenTags = [] // All tags that appear in post body\n    // unique index for vue \"tag\" property\n    let mentionIndex = 0\n    let tagsIndex = 0\n\n    const renderImage = (tag) => {\n      return <StillImage\n        {...getAttrs(tag)}\n        class=\"img\"\n      />\n    }\n\n    const renderHashtag = (attrs, children, encounteredTextReverse) => {\n      const { index, ...linkData } = getLinkData(attrs, children, tagsIndex++)\n      writtenTags.push(linkData)\n      if (!encounteredTextReverse) {\n        lastTags.push(linkData)\n      }\n      const { url, tag, content } = linkData\n      return <HashtagLink url={url} tag={tag} content={content}/>\n    }\n\n    const renderMention = (attrs, children) => {\n      const linkData = getLinkData(attrs, children, mentionIndex++)\n      linkData.notifying = this.attentions.some(a => a.statusnet_profile_url === linkData.url)\n      writtenMentions.push(linkData)\n      if (currentMentions === null) {\n        currentMentions = []\n      }\n      currentMentions.push(linkData)\n      if (currentMentions.length > MENTIONS_LIMIT) {\n        invisibleMentions.push(linkData)\n      }\n      if (currentMentions.length === 1) {\n        return <MentionsLine mentions={ currentMentions } />\n      } else {\n        return ''\n      }\n    }\n\n    const renderLink = (attrs, children) => {\n      const updatedLink = attrs['href'].replace(/&amp;/g, '&')\n      const updatedChildren = children.map(child => {\n        if (typeof child === 'string') {\n          return child.replace(attrs['href'], updatedLink)\n        }\n        if (child[0] === '<span>') {\n          return <span>\n            { child[1] }\n          </span>\n        }\n        return child[1]\n      })\n      return <a {...{ attrs }} href={updatedLink}>\n        { ...updatedChildren }\n      </a>\n    }\n    // Processor to use with html_tree_converter\n    const processItem = (item, index, array, what) => {\n      // Handle text nodes - just add emoji\n      if (typeof item === 'string') {\n        const emptyText = item.trim() === ''\n        if (item.includes('\\n')) {\n          currentMentions = null\n        }\n        if (emptyText) {\n          // don't include spaces when processing mentions - we'll include them\n          // in MentionsLine\n          lastSpacing = item\n          // Don't remove last space in a container (fixes poast mentions)\n          return (index !== array.length - 1) && (currentMentions !== null) ? item.trim() : item\n        }\n\n        currentMentions = null\n        if (item.includes(':')) {\n          item = ['', processTextForEmoji(\n            item,\n            this.emoji,\n            ({ shortcode, url }) => {\n              return <StillImage\n                class=\"emoji img\"\n                src={url}\n                title={`:${shortcode}:`}\n                alt={`:${shortcode}:`}\n              />\n            }\n          )]\n        }\n        return item\n      }\n\n      // Handle tag nodes\n      if (Array.isArray(item)) {\n        const [opener, children, closer] = item\n        const Tag = getTagName(opener)\n        const attrs = getAttrs(opener)\n        const previouslyMentions = currentMentions !== null\n        /* During grouping of mentions we trim all the empty text elements\n         * This padding is added to recover last space removed in case\n         * we have a tag right next to mentions\n         */\n        const mentionsLinePadding =\n              // Padding is only needed if we just finished parsing mentions\n              previouslyMentions &&\n              // Don't add padding if content is string and has padding already\n              !(children && typeof children[0] === 'string' && children[0].match(/^\\s/))\n                ? lastSpacing\n                : ''\n        switch (Tag) {\n          case 'br':\n            currentMentions = null\n            break\n          case 'img': // replace images with StillImage\n            return ['', [mentionsLinePadding, renderImage(opener)], '']\n          case 'a': // replace mentions with MentionLink\n            if (!this.handleLinks) break\n            if (attrs['class'] && attrs['class'].includes('mention')) {\n              // Handling mentions here\n              return renderMention(attrs, children)\n            } else {\n              currentMentions = null\n              if (attrs['href']) {\n                return renderLink(attrs, children)\n              }\n              break\n            }\n          case 'span':\n            if (this.handleLinks && attrs['class'] && attrs['class'].includes('h-card')) {\n              return ['', children.map(processItem), '']\n            }\n        }\n\n        if (children !== undefined) {\n          return [\n            '',\n            [\n              mentionsLinePadding,\n              [opener, children.map(processItem), closer]\n            ],\n            ''\n          ]\n        } else {\n          return ['', [mentionsLinePadding, item], '']\n        }\n      }\n    }\n\n    // Processor for back direction (for finding \"last\" stuff, just easier this way)\n    let encounteredTextReverse = false\n    const processItemReverse = (item, index, array, what) => {\n      // Handle text nodes - just add emoji\n      if (typeof item === 'string') {\n        const emptyText = item.trim() === ''\n        if (emptyText) return item\n        if (!encounteredTextReverse) encounteredTextReverse = true\n        return unescape(item)\n      } else if (Array.isArray(item)) {\n        // Handle tag nodes\n        const [opener, children] = item\n        const Tag = opener === '' ? '' : getTagName(opener)\n        switch (Tag) {\n          case 'a': // replace mentions with MentionLink\n            if (!this.handleLinks) break\n            const attrs = getAttrs(opener)\n            // should only be this\n            if (\n              (attrs['class'] && attrs['class'].includes('hashtag')) || // Pleroma style\n                (attrs['rel'] === 'tag') // Mastodon style\n            ) {\n              return renderHashtag(attrs, children, encounteredTextReverse)\n            } else {\n              attrs.target = '_blank'\n              const newChildren = [...children].reverse().map(processItemReverse).reverse()\n\n              return <a {...attrs}>\n                { newChildren }\n              </a>\n            }\n          case '':\n            return [...children].reverse().map(processItemReverse).reverse()\n        }\n\n        // Render tag as is\n        if (children !== undefined) {\n          const newChildren = Array.isArray(children)\n            ? [...children].reverse().map(processItemReverse).reverse()\n            : children\n          return <Tag {...getAttrs(opener)}>\n            { newChildren }\n          </Tag>\n        } else {\n          return <Tag/>\n        }\n      }\n      return item\n    }\n\n    const pass1 = convertHtmlToTree(html).map(processItem)\n    const pass2 = [...pass1].reverse().map(processItemReverse).reverse()\n    // DO NOT USE SLOTS they cause a re-render feedback loop here.\n    // slots updated -> rerender -> emit -> update up the tree -> rerender -> ...\n    // at least until vue3?\n    const result = <span class=\"RichContent\">\n      { pass2 }\n    </span>\n\n    const event = {\n      lastTags,\n      writtenMentions,\n      writtenTags,\n      invisibleMentions\n    }\n\n    // DO NOT MOVE TO UPDATE. BAD IDEA.\n    this.$emit('parseReady', event)\n\n    return result\n  }\n}\n\nconst getLinkData = (attrs, children, index) => {\n  const stripTags = (item) => {\n    if (typeof item === 'string') {\n      return item\n    } else {\n      return item[1].map(stripTags).join('')\n    }\n  }\n  const textContent = children.map(stripTags).join('')\n  return {\n    index,\n    url: attrs.href,\n    tag: attrs['data-tag'],\n    content: flattenDeep(children).join(''),\n    textContent\n  }\n}\n\n/** Pre-processing HTML\n *\n * Currently this does one thing:\n * - add green/cyantexting\n *\n * @param {String} html - raw HTML to process\n * @param {Boolean} greentext - whether to enable greentexting or not\n */\nexport const preProcessPerLine = (html, greentext) => {\n  const greentextHandle = new Set(['p', 'div'])\n\n  const lines = convertHtmlToLines(html)\n  const newHtml = lines.reverse().map((item, index, array) => {\n    if (!item.text) return item\n    const string = item.text\n\n    // Greentext stuff\n    if (\n      // Only if greentext is engaged\n      greentext &&\n        // Only handle p's and divs. Don't want to affect blockquotes, code etc\n        item.level.every(l => greentextHandle.has(l)) &&\n        // Only if line begins with '>' or '<'\n        (string.includes('&gt;') || string.includes('&lt;'))\n    ) {\n      const cleanedString = string.replace(/<[^>]+?>/gi, '') // remove all tags\n        .replace(/@\\w+/gi, '') // remove mentions (even failed ones)\n        .trim()\n      if (cleanedString.startsWith('&gt;')) {\n        return `<span class='greentext'>${string}</span>`\n      } else if (cleanedString.startsWith('&lt;')) {\n        return `<span class='cyantext'>${string}</span>`\n      }\n    }\n\n    return string\n  }).reverse().join('')\n\n  return { newHtml }\n}\n","import { getTagName } from './utility.service.js'\nimport { unescape } from 'lodash'\n\n/**\n * This is a not-so-tiny purpose-built HTML parser/processor. This parses html\n * and converts it into a tree structure representing tag openers/closers and\n * children.\n *\n * Structure follows this pattern: [opener, [...children], closer] except root\n * node which is just [...children]. Text nodes can only be within children and\n * are represented as strings.\n *\n * Intended use is to convert HTML structure and then recursively iterate over it\n * most likely using a map. Very useful for dynamically rendering html replacing\n * tags with JSX elements in a render function.\n *\n * known issue: doesn't handle CDATA so CDATA might not work well\n * known issue: doesn't handle HTML comments\n *\n * @param {Object} input - input data\n * @return {string} processed html\n */\nexport const convertHtmlToTree = (html = '') => {\n  // Elements that are implicitly self-closing\n  // https://developer.mozilla.org/en-US/docs/Glossary/empty_element\n  const emptyElements = new Set([\n    'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input',\n    'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr'\n  ])\n  // TODO For future - also parse HTML5 multi-source components?\n\n  const buffer = [] // Current output buffer\n  const levels = [['', buffer]] // How deep we are in tags and which tags were there\n  let textBuffer = '' // Current line content\n  let tagBuffer = null // Current tag buffer, if null = we are not currently reading a tag\n\n  const getCurrentBuffer = () => {\n    return levels[levels.length - 1][1]\n  }\n\n  const flushText = () => { // Processes current line buffer, adds it to output buffer and clears line buffer\n    if (textBuffer === '') return\n    getCurrentBuffer().push(textBuffer)\n    textBuffer = ''\n  }\n\n  const handleSelfClosing = (tag) => {\n    getCurrentBuffer().push([tag])\n  }\n\n  const handleOpen = (tag) => {\n    const curBuf = getCurrentBuffer()\n    const newLevel = [unescape(tag), []]\n    levels.push(newLevel)\n    curBuf.push(newLevel)\n  }\n\n  const handleClose = (tag) => {\n    const currentTag = levels[levels.length - 1]\n    if (getTagName(levels[levels.length - 1][0]) === getTagName(tag)) {\n      currentTag.push(tag)\n      levels.pop()\n    } else {\n      getCurrentBuffer().push(tag)\n    }\n  }\n\n  for (let i = 0; i < html.length; i++) {\n    const char = html[i]\n    if (char === '<' && tagBuffer === null) {\n      flushText()\n      tagBuffer = char\n    } else if (char !== '>' && tagBuffer !== null) {\n      tagBuffer += char\n    } else if (char === '>' && tagBuffer !== null) {\n      tagBuffer += char\n      const tagFull = tagBuffer\n      tagBuffer = null\n      const tagName = getTagName(tagFull)\n      if (tagFull[1] === '/') {\n        handleClose(tagFull)\n      } else if (emptyElements.has(tagName) || tagFull[tagFull.length - 2] === '/') {\n        // self-closing\n        handleSelfClosing(tagFull)\n      } else {\n        handleOpen(tagFull)\n      }\n    } else {\n      textBuffer += char\n    }\n  }\n  if (tagBuffer) {\n    textBuffer += tagBuffer\n  }\n\n  flushText()\n  return buffer\n}\n","import { filter, sortBy, includes } from 'lodash'\nimport { muteWordHits } from '../status_parser/status_parser.js'\nimport { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js'\n\nexport const notificationsFromStore = store => store.state.statuses.notifications.data\n\nexport const visibleTypes = store => {\n  const rootState = store.rootState || store.state\n\n  return ([\n    rootState.config.notificationVisibility.likes && 'like',\n    rootState.config.notificationVisibility.mentions && 'mention',\n    rootState.config.notificationVisibility.repeats && 'repeat',\n    rootState.config.notificationVisibility.follows && 'follow',\n    rootState.config.notificationVisibility.followRequest && 'follow_request',\n    rootState.config.notificationVisibility.moves && 'move',\n    rootState.config.notificationVisibility.emojiReactions && 'pleroma:emoji_reaction',\n    rootState.config.notificationVisibility.polls && 'poll'\n  ].filter(_ => _))\n}\n\nconst statusNotifications = ['like', 'mention', 'repeat', 'pleroma:emoji_reaction', 'poll']\n\nexport const isStatusNotification = (type) => includes(statusNotifications, type)\n\nexport const isValidNotification = (notification) => {\n  if (isStatusNotification(notification.type) && !notification.status) {\n    return false\n  }\n  return true\n}\n\nconst sortById = (a, b) => {\n  const seqA = Number(a.id)\n  const seqB = Number(b.id)\n  const isSeqA = !Number.isNaN(seqA)\n  const isSeqB = !Number.isNaN(seqB)\n  if (isSeqA && isSeqB) {\n    return seqA > seqB ? -1 : 1\n  } else if (isSeqA && !isSeqB) {\n    return 1\n  } else if (!isSeqA && isSeqB) {\n    return -1\n  } else {\n    return a.id > b.id ? -1 : 1\n  }\n}\n\nconst isMutedNotification = (store, notification) => {\n  if (!notification.status) return\n  return notification.status.muted || muteWordHits(notification.status, store.rootGetters.mergedConfig.muteWords).length > 0\n}\n\nexport const maybeShowNotification = (store, notification) => {\n  const rootState = store.rootState || store.state\n\n  if (notification.seen) return\n  if (!visibleTypes(store).includes(notification.type)) return\n  if (notification.type === 'mention' && isMutedNotification(store, notification)) return\n\n  const notificationObject = prepareNotificationObject(notification, store.rootGetters.i18n)\n  showDesktopNotification(rootState, notificationObject)\n}\n\nexport const filteredNotificationsFromStore = (store, types) => {\n  // map is just to clone the array since sort mutates it and it causes some issues\n  let sortedNotifications = notificationsFromStore(store).map(_ => _).sort(sortById)\n  sortedNotifications = sortBy(sortedNotifications, 'seen')\n  return sortedNotifications.filter(\n    (notification) => (types || visibleTypes(store)).includes(notification.type)\n  )\n}\n\nexport const unseenNotificationsFromStore = store =>\n  filter(filteredNotificationsFromStore(store), ({ seen }) => !seen)\n\nexport const prepareNotificationObject = (notification, i18n) => {\n  const notifObj = {\n    tag: notification.id\n  }\n  const status = notification.status\n  const title = notification.from_profile.name\n  notifObj.title = title\n  notifObj.icon = notification.from_profile.profile_image_url\n  let i18nString\n  switch (notification.type) {\n    case 'like':\n      i18nString = 'favorited_you'\n      break\n    case 'repeat':\n      i18nString = 'repeated_you'\n      break\n    case 'follow':\n      i18nString = 'followed_you'\n      break\n    case 'move':\n      i18nString = 'migrated_to'\n      break\n    case 'follow_request':\n      i18nString = 'follow_request'\n      break\n    case 'poll':\n      i18nString = 'poll_ended'\n      break\n  }\n\n  if (notification.type === 'pleroma:emoji_reaction') {\n    notifObj.body = i18n.t('notifications.reacted_with', [notification.emoji])\n  } else if (i18nString) {\n    notifObj.body = i18n.t('notifications.' + i18nString)\n  } else if (isStatusNotification(notification.type)) {\n    notifObj.body = notification.status.text\n  }\n\n  // Shows first attached non-nsfw image, if any. Should add configuration for this somehow...\n  if (status && status.attachments && status.attachments.length > 0 && !status.nsfw &&\n    status.attachments[0].mimetype.startsWith('image/')) {\n    notifObj.image = status.attachments[0].url\n  }\n\n  return notifObj\n}\n","import { hex2rgb } from '../color_convert/color_convert.js'\nconst highlightStyle = (prefs) => {\n  if (prefs === undefined) return\n  const { color, type } = prefs\n  if (typeof color !== 'string') return\n  const rgb = hex2rgb(color)\n  if (rgb == null) return\n  const solidColor = `rgb(${Math.floor(rgb.r)}, ${Math.floor(rgb.g)}, ${Math.floor(rgb.b)})`\n  const tintColor = `rgba(${Math.floor(rgb.r)}, ${Math.floor(rgb.g)}, ${Math.floor(rgb.b)}, .1)`\n  const tintColor2 = `rgba(${Math.floor(rgb.r)}, ${Math.floor(rgb.g)}, ${Math.floor(rgb.b)}, .2)`\n  const customProps = {\n    '--____highlight-solidColor': solidColor,\n    '--____highlight-tintColor': tintColor,\n    '--____highlight-tintColor2': tintColor2\n  }\n  if (type === 'striped') {\n    return {\n      backgroundImage: [\n        'repeating-linear-gradient(135deg,',\n        `${tintColor} ,`,\n        `${tintColor} 20px,`,\n        `${tintColor2} 20px,`,\n        `${tintColor2} 40px`\n      ].join(' '),\n      backgroundPosition: '0 0',\n      ...customProps\n    }\n  } else if (type === 'solid') {\n    return {\n      backgroundColor: tintColor2,\n      ...customProps\n    }\n  } else if (type === 'side') {\n    return {\n      backgroundImage: [\n        'linear-gradient(to right,',\n        `${solidColor} ,`,\n        `${solidColor} 2px,`,\n        `transparent 6px`\n      ].join(' '),\n      backgroundPosition: '0 0',\n      ...customProps\n    }\n  }\n}\n\nconst highlightClass = (user) => {\n  return 'USER____' + user.screen_name\n    .replace(/\\./g, '_')\n    .replace(/@/g, '_AT_')\n}\n\nexport {\n  highlightClass,\n  highlightStyle\n}\n","// TODO this func might as well take the entire file and use its mimetype\n// or the entire service could be just mimetype service that only operates\n// on mimetypes and not files. Currently the naming is confusing.\nconst fileType = mimetype => {\n  if (mimetype.match(/flash/)) {\n    return 'flash'\n  }\n\n  if (mimetype.match(/text\\/html/)) {\n    return 'html'\n  }\n\n  if (mimetype.match(/image/)) {\n    return 'image'\n  }\n\n  if (mimetype.match(/video/)) {\n    return 'video'\n  }\n\n  if (mimetype.match(/audio/)) {\n    return 'audio'\n  }\n\n  return 'unknown'\n}\n\nconst fileMatchesSomeType = (types, file) =>\n  types.some(type => fileType(file.mimetype) === type)\n\nconst fileTypeService = {\n  fileType,\n  fileMatchesSomeType\n}\n\nexport default fileTypeService\n","<template>\n  <div\n    v-if=\"!hideStatus\"\n    ref=\"root\"\n    class=\"Status\"\n    :class=\"[{ '-focused': isFocused }, { '-conversation': inlineExpanded }]\"\n  >\n    <div\n      v-if=\"error\"\n      class=\"alert error\"\n    >\n      {{ error }}\n      <span\n        class=\"fa-scale-110 fa-old-padding\"\n        @click=\"clearError\"\n      >\n        <FAIcon icon=\"times\" />\n      </span>\n    </div>\n    <template v-if=\"muted && !isPreview\">\n      <div class=\"status-container muted\">\n        <small class=\"status-username\">\n          <FAIcon\n            v-if=\"muted && retweet\"\n            class=\"fa-scale-110 fa-old-padding repeat-icon\"\n            icon=\"retweet\"\n          />\n          <router-link :to=\"userProfileLink\">\n            {{ status.user.screen_name_ui }}\n          </router-link>\n        </small>\n        <small\n          v-if=\"showReasonMutedThread\"\n          class=\"mute-thread\"\n        >\n          {{ $t('status.thread_muted') }}\n        </small>\n        <small\n          v-if=\"showReasonMutedThread && muteWordHits.length > 0\"\n          class=\"mute-thread\"\n        >\n          {{ $t('status.thread_muted_and_words') }}\n        </small>\n        <small\n          class=\"mute-words\"\n          :title=\"muteWordHits.join(', ')\"\n        >\n          {{ muteWordHits.join(', ') }}\n        </small>\n        <button\n          class=\"unmute button-unstyled\"\n          @click.prevent=\"toggleMute\"\n        >\n          <FAIcon\n            icon=\"eye-slash\"\n            class=\"fa-scale-110 fa-old-padding\"\n          />\n        </button>\n      </div>\n    </template>\n    <template v-else>\n      <div\n        v-if=\"showPinned\"\n        class=\"pin\"\n      >\n        <FAIcon\n          icon=\"thumbtack\"\n          class=\"faint\"\n        />\n        <span class=\"faint\">{{ $t('status.pinned') }}</span>\n      </div>\n      <div\n        v-if=\"retweet && !noHeading && !inConversation\"\n        :class=\"[repeaterClass, { highlighted: repeaterStyle }]\"\n        :style=\"[repeaterStyle]\"\n        class=\"status-container repeat-info\"\n      >\n        <UserAvatar\n          v-if=\"retweet\"\n          class=\"left-side repeater-avatar\"\n          :bot=\"rtBotIndicator\"\n          :better-shadow=\"betterShadow\"\n          :user=\"statusoid.user\"\n        />\n        <div class=\"right-side faint\">\n          <span\n            class=\"status-username repeater-name\"\n            :title=\"retweeter\"\n          >\n            <router-link\n              v-if=\"retweeterHtml\"\n              :to=\"retweeterProfileLink\"\n            >\n              <RichContent\n                :html=\"retweeterHtml\"\n                :emoji=\"retweeterUser.emoji\"\n              />\n            </router-link>\n            <router-link\n              v-else\n              :to=\"retweeterProfileLink\"\n            >{{ retweeter }}</router-link>\n          </span>\n          {{ ' ' }}\n          <FAIcon\n            icon=\"retweet\"\n            class=\"repeat-icon\"\n            :title=\"$t('tool_tip.repeat')\"\n          />\n          {{ $t('timeline.repeated') }}\n        </div>\n      </div>\n\n      <div\n        v-if=\"!deleted\"\n        :class=\"[userClass, { highlighted: userStyle, '-repeat': retweet && !inConversation }]\"\n        :style=\"[ userStyle ]\"\n        class=\"status-container\"\n        :data-tags=\"tags\"\n      >\n        <div\n          v-if=\"!noHeading\"\n          class=\"left-side\"\n        >\n          <a\n            :href=\"$router.resolve(userProfileLink).href\"\n            @click.stop.prevent.capture=\"toggleUserExpanded\"\n          >\n            <UserAvatar\n              class=\"post-avatar\"\n              :bot=\"botIndicator\"\n              :compact=\"compact\"\n              :better-shadow=\"betterShadow\"\n              :user=\"status.user\"\n            />\n          </a>\n        </div>\n        <div class=\"right-side\">\n          <UserCard\n            v-if=\"userExpanded\"\n            :user-id=\"status.user.id\"\n            :rounded=\"true\"\n            :bordered=\"true\"\n            class=\"usercard\"\n          />\n          <div\n            v-if=\"!noHeading\"\n            class=\"status-heading\"\n          >\n            <div class=\"heading-name-row\">\n              <div class=\"heading-left\">\n                <h4\n                  v-if=\"status.user.name_html\"\n                  class=\"status-username\"\n                  :title=\"status.user.name\"\n                >\n                  <RichContent\n                    :html=\"status.user.name\"\n                    :emoji=\"status.user.emoji\"\n                  />\n                </h4>\n                <h4\n                  v-else\n                  class=\"status-username\"\n                  :title=\"status.user.name\"\n                >\n                  {{ status.user.name }}\n                </h4>\n                <router-link\n                  class=\"account-name\"\n                  :title=\"status.user.screen_name_ui\"\n                  :to=\"userProfileLink\"\n                >\n                  {{ status.user.screen_name_ui }}\n                </router-link>\n                <img\n                  v-if=\"!!(status.user && status.user.favicon)\"\n                  class=\"status-favicon\"\n                  :src=\"status.user.favicon\"\n                >\n              </div>\n\n              <span class=\"heading-right\">\n                <router-link\n                  class=\"timeago faint-link\"\n                  :to=\"{ name: 'conversation', params: { id: status.id } }\"\n                >\n                  <Timeago\n                    :time=\"status.created_at\"\n                    :auto-update=\"60\"\n                  />\n                </router-link>\n                <span\n                  v-if=\"status.visibility\"\n                  class=\"visibility-icon\"\n                  :title=\"visibilityLocalized\"\n                >\n                  <FAIcon\n                    fixed-width\n                    class=\"fa-scale-110\"\n                    :icon=\"visibilityIcon(status.visibility)\"\n                  />\n                </span>\n                <button\n                  v-if=\"expandable && !isPreview\"\n                  class=\"button-unstyled\"\n                  :title=\"$t('status.expand')\"\n                  @click.prevent=\"toggleExpanded\"\n                >\n                  <FAIcon\n                    fixed-width\n                    class=\"fa-scale-110\"\n                    icon=\"plus-square\"\n                  />\n                </button>\n                <button\n                  v-if=\"unmuted\"\n                  class=\"button-unstyled\"\n                  @click.prevent=\"toggleMute\"\n                >\n                  <FAIcon\n                    fixed-width\n                    icon=\"eye-slash\"\n                    class=\"fa-scale-110\"\n                  />\n                </button>\n                <button\n                  v-if=\"inThreadForest && replies && replies.length && !simpleTree\"\n                  class=\"button-unstyled\"\n                  :title=\"threadShowing ? $t('status.thread_hide') : $t('status.thread_show')\"\n                  :aria-expanded=\"threadShowing ? 'true' : 'false'\"\n                  @click.prevent=\"toggleThreadDisplay\"\n                >\n                  <FAIcon\n                    fixed-width\n                    class=\"fa-scale-110\"\n                    :icon=\"threadShowing ? 'chevron-up' : 'chevron-down'\"\n                  />\n                </button>\n                <button\n                  v-if=\"dive && !simpleTree\"\n                  class=\"button-unstyled\"\n                  :title=\"$t('status.show_only_conversation_under_this')\"\n                  @click.prevent=\"dive\"\n                >\n                  <FAIcon\n                    fixed-width\n                    class=\"fa-scale-110\"\n                    :icon=\"'angle-double-right'\"\n                  />\n                </button>\n              </span>\n            </div>\n            <div\n              v-if=\"isReply || hasMentionsLine\"\n              class=\"heading-reply-row\"\n            >\n              <span\n                v-if=\"isReply\"\n                class=\"glued-label reply-glued-label\"\n              >\n                <StatusPopover\n                  v-if=\"!isPreview\"\n                  :status-id=\"status.parent_visible && status.in_reply_to_status_id\"\n                  class=\"reply-to-popover\"\n                  style=\"min-width: 0\"\n                  :class=\"{ '-strikethrough': !status.parent_visible }\"\n                >\n                  <button\n                    class=\"button-unstyled reply-to\"\n                    :aria-label=\"$t('tool_tip.reply')\"\n                    @click.prevent=\"gotoOriginal(status.in_reply_to_status_id)\"\n                  >\n                    <FAIcon\n                      class=\"fa-scale-110 fa-old-padding\"\n                      icon=\"reply\"\n                      flip=\"horizontal\"\n                    />\n                    {{ ' ' }}\n                    <span\n                      class=\"reply-to-text\"\n                    >\n                      {{ $t('status.reply_to') }}\n                    </span>\n                  </button>\n                </StatusPopover>\n\n                <span\n                  v-else\n                  class=\"reply-to-no-popover\"\n                >\n                  <span class=\"reply-to-text\">{{ $t('status.reply_to') }}</span>\n                </span>\n                <MentionLink\n                  :content=\"replyToName\"\n                  :url=\"replyProfileLink\"\n                  :user-id=\"status.in_reply_to_user_id\"\n                  :user-screen-name=\"status.in_reply_to_screen_name\"\n                />\n              </span>\n\n              <!-- This little wrapper is made for sole purpose of \"gluing\" -->\n              <!-- \"Mentions\" label to the first mention -->\n              <span\n                v-if=\"hasMentionsLine\"\n                class=\"glued-label\"\n              >\n                <span\n                  class=\"mentions\"\n                  :aria-label=\"$t('tool_tip.mentions')\"\n                  @click.prevent=\"gotoOriginal(status.in_reply_to_status_id)\"\n                >\n                  <span\n                    class=\"mentions-text\"\n                  >\n                    {{ $t('status.mentions') }}\n                  </span>\n                </span>\n                <MentionsLine\n                  v-if=\"hasMentionsLine\"\n                  :mentions=\"mentionsLine.slice(0, 1)\"\n                  class=\"mentions-line-first\"\n                />\n              </span>\n              <MentionsLine\n                v-if=\"hasMentionsLine\"\n                :mentions=\"mentionsLine.slice(1)\"\n                class=\"mentions-line\"\n              />\n            </div>\n          </div>\n\n          <StatusContent\n            ref=\"content\"\n            :status=\"status\"\n            :no-heading=\"noHeading\"\n            :highlight=\"highlight\"\n            :focused=\"isFocused\"\n            :controlled-showing-tall=\"controlledShowingTall\"\n            :controlled-expanding-subject=\"controlledExpandingSubject\"\n            :controlled-showing-long-subject=\"controlledShowingLongSubject\"\n            :controlled-toggle-showing-tall=\"controlledToggleShowingTall\"\n            :controlled-toggle-expanding-subject=\"controlledToggleExpandingSubject\"\n            :controlled-toggle-showing-long-subject=\"controlledToggleShowingLongSubject\"\n            @mediaplay=\"addMediaPlaying($event)\"\n            @mediapause=\"removeMediaPlaying($event)\"\n            @parseReady=\"setHeadTailLinks\"\n          />\n\n          <div\n            v-if=\"inConversation && !isPreview && replies && replies.length\"\n            class=\"replies\"\n          >\n            <button\n              v-if=\"showOtherRepliesAsButton && replies.length > 1\"\n              class=\"button-unstyled -link faint\"\n              :title=\"$tc('status.ancestor_follow', replies.length - 1, { numReplies: replies.length - 1 })\"\n              @click.prevent=\"dive\"\n            >\n              {{ $tc('status.replies_list_with_others', replies.length - 1, { numReplies: replies.length - 1 }) }}\n            </button>\n            <span\n              v-else\n              class=\"faint\"\n            >\n              {{ $t('status.replies_list') }}\n            </span>\n            <StatusPopover\n              v-for=\"reply in replies\"\n              :key=\"reply.id\"\n              :status-id=\"reply.id\"\n            >\n              <button\n                class=\"button-unstyled -link reply-link\"\n                @click.prevent=\"gotoOriginal(reply.id)\"\n              >\n                {{ reply.name }}\n              </button>\n            </StatusPopover>\n          </div>\n\n          <transition name=\"fade\">\n            <div\n              v-if=\"!hidePostStats && isFocused && combinedFavsAndRepeatsUsers.length > 0\"\n              class=\"favs-repeated-users\"\n            >\n              <div class=\"stats\">\n                <UserListPopover\n                  v-if=\"statusFromGlobalRepository.rebloggedBy && statusFromGlobalRepository.rebloggedBy.length > 0\"\n                  :users=\"statusFromGlobalRepository.rebloggedBy\"\n                >\n                  <div class=\"stat-count\">\n                    <a class=\"stat-title\">{{ $t('status.repeats') }}</a>\n                    <div class=\"stat-number\">\n                      {{ statusFromGlobalRepository.rebloggedBy.length }}\n                    </div>\n                  </div>\n                </UserListPopover>\n                <UserListPopover\n                  v-if=\"statusFromGlobalRepository.favoritedBy && statusFromGlobalRepository.favoritedBy.length > 0\"\n                  :users=\"statusFromGlobalRepository.favoritedBy\"\n                >\n                  <div\n                    class=\"stat-count\"\n                  >\n                    <a class=\"stat-title\">{{ $t('status.favorites') }}</a>\n                    <div class=\"stat-number\">\n                      {{ statusFromGlobalRepository.favoritedBy.length }}\n                    </div>\n                  </div>\n                </UserListPopover>\n                <div class=\"avatar-row\">\n                  <AvatarList :users=\"combinedFavsAndRepeatsUsers\" />\n                </div>\n              </div>\n            </div>\n          </transition>\n\n          <EmojiReactions\n            v-if=\"(mergedConfig.emojiReactionsOnTimeline || isFocused) && (!noHeading && !isPreview)\"\n            :status=\"status\"\n          />\n\n          <div\n            v-if=\"!noHeading && !isPreview\"\n            class=\"status-actions\"\n          >\n            <reply-button\n              :replying=\"replying\"\n              :status=\"status\"\n              @toggle=\"toggleReplying\"\n            />\n            <retweet-button\n              :visibility=\"status.visibility\"\n              :logged-in=\"loggedIn\"\n              :status=\"status\"\n            />\n            <favorite-button\n              :logged-in=\"loggedIn\"\n              :status=\"status\"\n            />\n            <ReactButton\n              v-if=\"loggedIn\"\n              :status=\"status\"\n            />\n            <extra-buttons\n              :status=\"status\"\n              @onError=\"showError\"\n              @onSuccess=\"clearError\"\n            />\n          </div>\n        </div>\n      </div>\n      <div\n        v-else\n        class=\"gravestone\"\n      >\n        <div class=\"left-side\">\n          <UserAvatar\n            class=\"post-avatar\"\n            :compact=\"compact\"\n            :bot=\"botIndicator\"\n          />\n        </div>\n        <div class=\"right-side\">\n          <div class=\"deleted-text\">\n            {{ $t('status.status_deleted') }}\n          </div>\n          <reply-button\n            v-if=\"replying\"\n            :replying=\"replying\"\n            :status=\"status\"\n            @toggle=\"toggleReplying\"\n          />\n        </div>\n      </div>\n      <div\n        v-if=\"replying\"\n        class=\"status-container reply-form\"\n      >\n        <PostStatusForm\n          class=\"reply-body\"\n          :reply-to=\"status.id\"\n          :attentions=\"status.attentions\"\n          :replied-user=\"status.user\"\n          :copy-message-scope=\"status.visibility\"\n          :subject=\"replySubject\"\n          @posted=\"toggleReplying\"\n        />\n      </div>\n    </template>\n  </div>\n</template>\n\n<script src=\"./status.js\" ></script>\n\n<style src=\"./status.scss\" lang=\"scss\"></style>\n","<template>\n  <div class=\"ReplyButton\">\n    <button\n      v-if=\"loggedIn\"\n      class=\"button-unstyled interactive\"\n      :class=\"{'-active': replying}\"\n      :title=\"$t('tool_tip.reply')\"\n      @click.prevent=\"$emit('toggle')\"\n    >\n      <FAIcon\n        class=\"fa-scale-110 fa-old-padding\"\n        icon=\"reply\"\n      />\n    </button>\n    <span v-else>\n      <FAIcon\n        icon=\"reply\"\n        class=\"fa-scale-110 fa-old-padding\"\n        :title=\"$t('tool_tip.reply')\"\n      />\n    </span>\n    <span\n      v-if=\"status.replies_count > 0\"\n      class=\"action-counter\"\n    >\n      {{ status.replies_count }}\n    </span>\n  </div>\n</template>\n\n<script src=\"./reply_button.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.ReplyButton {\n  display: flex;\n\n  > :first-child {\n    padding: 10px;\n    margin: -10px -8px -10px -10px;\n  }\n\n  .action-counter {\n    pointer-events: none;\n    user-select: none;\n  }\n\n  .interactive {\n    &:hover .svg-inline--fa,\n    &.-active .svg-inline--fa {\n      color: $fallback--cBlue;\n      color: var(--cBlue, $fallback--cBlue);\n    }\n  }\n\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faReply } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faReply)\n\nconst ReplyButton = {\n  name: 'ReplyButton',\n  props: ['status', 'replying'],\n  computed: {\n    loggedIn () {\n      return !!this.$store.state.users.currentUser\n    }\n  }\n}\n\nexport default ReplyButton\n","import { render } from \"./reply_button.vue?vue&type=template&id=56f413c0\"\nimport script from \"./reply_button.js?vue&type=script&lang=js\"\nexport * from \"./reply_button.js?vue&type=script&lang=js\"\n\nimport \"./reply_button.vue?vue&type=style&index=0&id=56f413c0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"FavoriteButton\">\n    <button\n      v-if=\"loggedIn\"\n      class=\"button-unstyled interactive\"\n      :class=\"status.favorited && '-favorited'\"\n      :title=\"$t('tool_tip.favorite')\"\n      @click.prevent=\"favorite()\"\n    >\n      <FAIcon\n        class=\"fa-scale-110 fa-old-padding\"\n        :icon=\"[status.favorited ? 'fas' : 'far', 'star']\"\n        :spin=\"animated\"\n      />\n    </button>\n    <span v-else>\n      <FAIcon\n        class=\"fa-scale-110 fa-old-padding\"\n        :title=\"$t('tool_tip.favorite')\"\n        :icon=\"['far', 'star']\"\n      />\n    </span>\n    <span\n      v-if=\"!mergedConfig.hidePostStats && status.fave_num > 0\"\n      class=\"action-counter\"\n    >\n      {{ status.fave_num }}\n    </span>\n  </div>\n</template>\n\n<script src=\"./favorite_button.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.FavoriteButton {\n  display: flex;\n\n  > :first-child {\n    padding: 10px;\n    margin: -10px -8px -10px -10px;\n  }\n\n  .action-counter {\n    pointer-events: none;\n    user-select: none;\n  }\n\n  .interactive {\n    .svg-inline--fa {\n      animation-duration: 0.6s;\n    }\n\n    &:hover .svg-inline--fa,\n    &.-favorited .svg-inline--fa {\n      color: $fallback--cOrange;\n      color: var(--cOrange, $fallback--cOrange);\n    }\n  }\n}\n</style>\n","import { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faStar } from '@fortawesome/free-solid-svg-icons'\nimport {\n  faStar as faStarRegular\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n  faStar,\n  faStarRegular\n)\n\nconst FavoriteButton = {\n  props: ['status', 'loggedIn'],\n  data () {\n    return {\n      animated: false\n    }\n  },\n  methods: {\n    favorite () {\n      if (!this.status.favorited) {\n        this.$store.dispatch('favorite', { id: this.status.id })\n      } else {\n        this.$store.dispatch('unfavorite', { id: this.status.id })\n      }\n      this.animated = true\n      setTimeout(() => {\n        this.animated = false\n      }, 500)\n    }\n  },\n  computed: {\n    ...mapGetters(['mergedConfig'])\n  }\n}\n\nexport default FavoriteButton\n","import { render } from \"./favorite_button.vue?vue&type=template&id=21f861d8\"\nimport script from \"./favorite_button.js?vue&type=script&lang=js\"\nexport * from \"./favorite_button.js?vue&type=script&lang=js\"\n\nimport \"./favorite_button.vue?vue&type=style&index=0&id=21f861d8&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Popover\n    trigger=\"click\"\n    class=\"ReactButton\"\n    placement=\"top\"\n    :offset=\"{ y: 5 }\"\n    :bound-to=\"{ x: 'container' }\"\n    remove-padding\n    @show=\"focusInput\"\n  >\n    <template v-slot:content=\"{close}\">\n      <div class=\"reaction-picker-filter\">\n        <input\n          v-model=\"filterWord\"\n          size=\"1\"\n          :placeholder=\"$t('emoji.search_emoji')\"\n        >\n      </div>\n      <div class=\"reaction-picker\">\n        <span\n          v-for=\"emoji in commonEmojis\"\n          :key=\"emoji.replacement\"\n          class=\"emoji-button\"\n          :title=\"emoji.displayText\"\n          @click=\"addReaction($event, emoji.replacement, close)\"\n        >\n          {{ emoji.replacement }}\n        </span>\n        <div class=\"reaction-picker-divider\" />\n        <span\n          v-for=\"(emoji, key) in emojis\"\n          :key=\"key\"\n          class=\"emoji-button\"\n          :title=\"emoji.displayText\"\n          @click=\"addReaction($event, emoji.replacement, close)\"\n        >\n          <img\n            v-if=\"emoji.imageUrl !== false\"\n            :src=\"emoji.imageUrl\"\n            width=\"30px\"\n            class=\"custom-reaction\"\n          >\n          <span v-else>\n            {{ emoji.replacement }}\n          </span>\n        </span>\n        <div class=\"reaction-bottom-fader\" />\n      </div>\n    </template>\n    <template v-slot:trigger>\n      <button\n        class=\"button-unstyled popover-trigger\"\n        :title=\"$t('tool_tip.add_reaction')\"\n      >\n        <FAIcon\n          class=\"fa-scale-110 fa-old-padding\"\n          :icon=\"['far', 'smile-beam']\"\n        />\n      </button>\n    </template>\n  </Popover>\n</template>\n\n<script src=\"./react_button.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.custom-reaction {\n  width: 30px !important;\n}\n\n.ReactButton {\n  .reaction-picker-filter {\n    padding: 0.5em;\n    display: flex;\n\n    input {\n      flex: 1;\n    }\n  }\n\n  .reaction-picker-divider {\n    height: 1px;\n    width: 100%;\n    margin: 0.5em;\n    background-color: var(--border, $fallback--border);\n  }\n\n  .reaction-picker {\n    width: 10em;\n    height: 9em;\n    font-size: 1.5em;\n    overflow-y: scroll;\n    display: flex;\n    flex-wrap: wrap;\n    padding: 0.5em;\n    text-align: center;\n    align-content: flex-start;\n    user-select: none;\n\n    mask: linear-gradient(to top, white 0, transparent 100%) bottom no-repeat,\n          linear-gradient(to bottom, white 0, transparent 100%) top no-repeat,\n          linear-gradient(to top, white, white);\n    transition: mask-size 150ms;\n    mask-size: 100% 20px, 100% 20px, auto;\n\n    /* Autoprefixed seem to ignore this one, and also syntax is different */\n    -webkit-mask-composite: xor;\n    mask-composite: exclude;\n\n    .emoji-button {\n      cursor: pointer;\n\n      flex-basis: 20%;\n      line-height: 1.5;\n      align-content: center;\n\n      &:hover {\n        transform: scale(1.25);\n      }\n    }\n  }\n\n  /* override of popover internal stuff */\n  .popover-trigger-button {\n    width: auto;\n  }\n\n  .popover-trigger {\n    padding: 10px;\n    margin: -10px;\n\n    &:hover .svg-inline--fa {\n      color: $fallback--text;\n      color: var(--text, $fallback--text);\n    }\n  }\n}\n\n</style>\n","import Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faSmileBeam } from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(faSmileBeam)\n\nconst ReactButton = {\n  props: ['status'],\n  data () {\n    return {\n      filterWord: ''\n    }\n  },\n  components: {\n    Popover\n  },\n  methods: {\n    addReaction (event, emoji, close) {\n      const existingReaction = this.status.emoji_reactions.find(r => r.name === emoji)\n      if (existingReaction && existingReaction.me) {\n        this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji })\n      } else {\n        this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji })\n      }\n      close()\n    },\n    focusInput () {\n      this.$nextTick(() => {\n        const input = this.$el.querySelector('input')\n        if (input) input.focus()\n      })\n    }\n  },\n  computed: {\n    commonEmojis () {\n      return [\n        { displayText: 'thumbsup', replacement: '👍' },\n        { displayText: 'angry', replacement: '😠' },\n        { displayText: 'eyes', replacement: '👀' },\n        { displayText: 'joy', replacement: '😂' },\n        { displayText: 'fire', replacement: '🔥' }\n      ]\n    },\n    emojis () {\n      if (this.filterWord !== '') {\n        const filterWordLowercase = this.filterWord.toLowerCase()\n        let orderedEmojiList = []\n        for (const emoji of [\n          ...this.$store.state.instance.emoji,\n          ...this.$store.state.instance.customEmoji\n        ]) {\n          if (emoji.replacement === this.filterWord) return [emoji]\n\n          const indexOfFilterWord = emoji.displayText.toLowerCase().indexOf(filterWordLowercase)\n          if (indexOfFilterWord > -1) {\n            if (!Array.isArray(orderedEmojiList[indexOfFilterWord])) {\n              orderedEmojiList[indexOfFilterWord] = []\n            }\n            orderedEmojiList[indexOfFilterWord].push(emoji)\n          }\n        }\n        return orderedEmojiList.flat()\n      }\n      return [\n        ...this.$store.state.instance.emoji,\n        ...this.$store.state.instance.customEmoji\n      ] || []\n    },\n    mergedConfig () {\n      return this.$store.getters.mergedConfig\n    }\n  }\n}\n\nexport default ReactButton\n","import { render } from \"./react_button.vue?vue&type=template&id=0101edf8\"\nimport script from \"./react_button.js?vue&type=script&lang=js\"\nexport * from \"./react_button.js?vue&type=script&lang=js\"\n\nimport \"./react_button.vue?vue&type=style&index=0&id=0101edf8&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"RetweetButton\">\n    <button\n      v-if=\"visibility !== 'private' && visibility !== 'direct' && loggedIn\"\n      class=\"button-unstyled interactive\"\n      :class=\"status.repeated && '-repeated'\"\n      :title=\"$t('tool_tip.repeat')\"\n      @click.prevent=\"retweet()\"\n    >\n      <FAIcon\n        class=\"fa-scale-110 fa-old-padding\"\n        icon=\"retweet\"\n        :spin=\"animated\"\n      />\n    </button>\n    <span v-else-if=\"loggedIn\">\n      <FAIcon\n        class=\"fa-scale-110 fa-old-padding\"\n        icon=\"lock\"\n        :title=\"$t('timeline.no_retweet_hint')\"\n      />\n    </span>\n    <span v-else>\n      <FAIcon\n        class=\"fa-scale-110 fa-old-padding\"\n        icon=\"retweet\"\n        :title=\"$t('tool_tip.repeat')\"\n      />\n    </span>\n    <span\n      v-if=\"!mergedConfig.hidePostStats && status.repeat_num > 0\"\n      class=\"no-event\"\n    >\n      {{ status.repeat_num }}\n    </span>\n  </div>\n</template>\n\n<script src=\"./retweet_button.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.RetweetButton {\n  display: flex;\n\n  > :first-child {\n    padding: 10px;\n    margin: -10px -8px -10px -10px;\n  }\n\n  .action-counter {\n    pointer-events: none;\n    user-select: none;\n  }\n\n  .interactive {\n    .svg-inline--fa {\n      animation-duration: 0.6s;\n    }\n\n    &:hover .svg-inline--fa,\n    &.-repeated .svg-inline--fa {\n      color: $fallback--cGreen;\n      color: var(--cGreen, $fallback--cGreen);\n    }\n  }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faRetweet } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faRetweet)\n\nconst RetweetButton = {\n  props: ['status', 'loggedIn', 'visibility'],\n  data () {\n    return {\n      animated: false\n    }\n  },\n  methods: {\n    retweet () {\n      if (!this.status.repeated) {\n        this.$store.dispatch('retweet', { id: this.status.id })\n      } else {\n        this.$store.dispatch('unretweet', { id: this.status.id })\n      }\n      this.animated = true\n      setTimeout(() => {\n        this.animated = false\n      }, 500)\n    }\n  },\n  computed: {\n    mergedConfig () {\n      return this.$store.getters.mergedConfig\n    }\n  }\n}\n\nexport default RetweetButton\n","import { render } from \"./retweet_button.vue?vue&type=template&id=46fe49c4\"\nimport script from \"./retweet_button.js?vue&type=script&lang=js\"\nexport * from \"./retweet_button.js?vue&type=script&lang=js\"\n\nimport \"./retweet_button.vue?vue&type=style&index=0&id=46fe49c4&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Popover\n    class=\"ExtraButtons\"\n    trigger=\"click\"\n    placement=\"top\"\n    :offset=\"{ y: 5 }\"\n    :bound-to=\"{ x: 'container' }\"\n    remove-padding\n  >\n    <template v-slot:content=\"{close}\">\n      <div class=\"dropdown-menu\">\n        <button\n          v-if=\"canMute && !status.thread_muted\"\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click.prevent=\"muteConversation\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"eye-slash\"\n          /><span>{{ $t(\"status.mute_conversation\") }}</span>\n        </button>\n        <button\n          v-if=\"canMute && status.thread_muted\"\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click.prevent=\"unmuteConversation\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"eye-slash\"\n          /><span>{{ $t(\"status.unmute_conversation\") }}</span>\n        </button>\n        <button\n          v-if=\"!status.pinned && canPin\"\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click.prevent=\"pinStatus\"\n          @click=\"close\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"thumbtack\"\n          /><span>{{ $t(\"status.pin\") }}</span>\n        </button>\n        <button\n          v-if=\"status.pinned && canPin\"\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click.prevent=\"unpinStatus\"\n          @click=\"close\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"thumbtack\"\n          /><span>{{ $t(\"status.unpin\") }}</span>\n        </button>\n        <button\n          v-if=\"!status.bookmarked\"\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click.prevent=\"bookmarkStatus\"\n          @click=\"close\"\n        >\n          <FAIcon\n            fixed-width\n            :icon=\"['far', 'bookmark']\"\n          /><span>{{ $t(\"status.bookmark\") }}</span>\n        </button>\n        <button\n          v-if=\"status.bookmarked\"\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click.prevent=\"unbookmarkStatus\"\n          @click=\"close\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"bookmark\"\n          /><span>{{ $t(\"status.unbookmark\") }}</span>\n        </button>\n        <button\n          v-if=\"canDelete\"\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click.prevent=\"deleteStatus\"\n          @click=\"close\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"times\"\n          /><span>{{ $t(\"status.delete\") }}</span>\n        </button>\n        <button\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click.prevent=\"copyLink\"\n          @click=\"close\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"share-alt\"\n          /><span>{{ $t(\"status.copy_link\") }}</span>\n        </button>\n        <a\n          v-if=\"!status.is_local\"\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          title=\"Source\"\n          :href=\"status.external_url\"\n          target=\"_blank\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"external-link-alt\"\n          /><span>{{ $t(\"status.external_source\") }}</span>\n        </a>\n        <button\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click.prevent=\"reportStatus\"\n          @click=\"close\"\n        >\n          <FAIcon\n            fixed-width\n            :icon=\"['far', 'flag']\"\n          /><span>{{ $t(\"user_card.report\") }}</span>\n        </button>\n      </div>\n    </template>\n    <template v-slot:trigger>\n      <button class=\"button-unstyled popover-trigger\">\n        <FAIcon\n          class=\"fa-scale-110 fa-old-padding\"\n          icon=\"ellipsis-h\"\n        />\n      </button>\n    </template>\n  </Popover>\n</template>\n\n<script src=\"./extra_buttons.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.ExtraButtons {\n  /* override of popover internal stuff */\n  .popover-trigger-button {\n    width: auto;\n  }\n\n  .popover-trigger {\n    position: static;\n    padding: 10px;\n    margin: -10px;\n\n    &:hover .svg-inline--fa {\n      color: $fallback--text;\n      color: var(--text, $fallback--text);\n    }\n  }\n}\n</style>\n","import Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faEllipsisH,\n  faBookmark,\n  faEyeSlash,\n  faThumbtack,\n  faShareAlt,\n  faExternalLinkAlt\n} from '@fortawesome/free-solid-svg-icons'\nimport {\n  faBookmark as faBookmarkReg,\n  faFlag\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n  faEllipsisH,\n  faBookmark,\n  faBookmarkReg,\n  faEyeSlash,\n  faThumbtack,\n  faShareAlt,\n  faExternalLinkAlt,\n  faFlag\n)\n\nconst ExtraButtons = {\n  props: [ 'status' ],\n  components: { Popover },\n  methods: {\n    deleteStatus () {\n      const confirmed = window.confirm(this.$t('status.delete_confirm'))\n      if (confirmed) {\n        this.$store.dispatch('deleteStatus', { id: this.status.id })\n      }\n    },\n    pinStatus () {\n      this.$store.dispatch('pinStatus', this.status.id)\n        .then(() => this.$emit('onSuccess'))\n        .catch(err => this.$emit('onError', err.error.error))\n    },\n    unpinStatus () {\n      this.$store.dispatch('unpinStatus', this.status.id)\n        .then(() => this.$emit('onSuccess'))\n        .catch(err => this.$emit('onError', err.error.error))\n    },\n    muteConversation () {\n      this.$store.dispatch('muteConversation', this.status.id)\n        .then(() => this.$emit('onSuccess'))\n        .catch(err => this.$emit('onError', err.error.error))\n    },\n    unmuteConversation () {\n      this.$store.dispatch('unmuteConversation', this.status.id)\n        .then(() => this.$emit('onSuccess'))\n        .catch(err => this.$emit('onError', err.error.error))\n    },\n    copyLink () {\n      navigator.clipboard.writeText(this.statusLink)\n        .then(() => this.$emit('onSuccess'))\n        .catch(err => this.$emit('onError', err.error.error))\n    },\n    bookmarkStatus () {\n      this.$store.dispatch('bookmark', { id: this.status.id })\n        .then(() => this.$emit('onSuccess'))\n        .catch(err => this.$emit('onError', err.error.error))\n    },\n    unbookmarkStatus () {\n      this.$store.dispatch('unbookmark', { id: this.status.id })\n        .then(() => this.$emit('onSuccess'))\n        .catch(err => this.$emit('onError', err.error.error))\n    },\n    reportStatus () {\n      this.$store.dispatch('openUserReportingModal', { userId: this.status.user.id, statusIds: [this.status.id] })\n    }\n  },\n  computed: {\n    currentUser () { return this.$store.state.users.currentUser },\n    canDelete () {\n      if (!this.currentUser) { return }\n      const superuser = this.currentUser.rights.moderator || this.currentUser.rights.admin\n      return superuser || this.status.user.id === this.currentUser.id\n    },\n    ownStatus () {\n      return this.status.user.id === this.currentUser.id\n    },\n    canPin () {\n      return this.ownStatus && (this.status.visibility === 'public' || this.status.visibility === 'unlisted')\n    },\n    canMute () {\n      return !!this.currentUser\n    },\n    statusLink () {\n      return `${this.$store.state.instance.server}${this.$router.resolve({ name: 'conversation', params: { id: this.status.id } }).href}`\n    }\n  }\n}\n\nexport default ExtraButtons\n","import { render } from \"./extra_buttons.vue?vue&type=template&id=3a956a44\"\nimport script from \"./extra_buttons.js?vue&type=script&lang=js\"\nexport * from \"./extra_buttons.js?vue&type=script&lang=js\"\n\nimport \"./extra_buttons.vue?vue&type=style&index=0&id=3a956a44&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Popover\n    trigger=\"hover\"\n    popover-class=\"popover-default status-popover\"\n    :bound-to=\"{ x: 'container' }\"\n    @show=\"enter\"\n  >\n    <template v-slot:trigger>\n      <slot />\n    </template>\n    <template v-slot:content>\n      <Status\n        v-if=\"status\"\n        :is-preview=\"true\"\n        :statusoid=\"status\"\n        :compact=\"true\"\n      />\n      <div\n        v-else-if=\"error\"\n        class=\"status-preview-no-content faint\"\n      >\n        {{ $t('status.status_unavailable') }}\n      </div>\n      <div\n        v-else\n        class=\"status-preview-no-content\"\n      >\n        <FAIcon\n          icon=\"circle-notch\"\n          spin\n          size=\"2x\"\n        />\n      </div>\n    </template>\n  </Popover>\n</template>\n\n<script src=\"./status_popover.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n/* popover styles load on-demand, so we need to override */\n.status-popover.popover {\n  font-size: 1rem;\n  min-width: 15em;\n  max-width: 95%;\n\n  border-color: $fallback--border;\n  border-color: var(--border, $fallback--border);\n  border-style: solid;\n  border-width: 1px;\n  border-radius: $fallback--tooltipRadius;\n  border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n  box-shadow: 2px 2px 3px rgba(0, 0, 0, 0.5);\n  box-shadow: var(--popupShadow);\n\n  /* TODO cleanup this */\n  .Status.Status {\n    border: none;\n  }\n\n  .status-preview-no-content {\n    padding: 1em;\n    text-align: center;\n\n    i {\n      font-size: 2em;\n    }\n  }\n}\n\n</style>\n","import { find } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\nimport { defineAsyncComponent } from 'vue'\n\nlibrary.add(\n  faCircleNotch\n)\n\nconst StatusPopover = {\n  name: 'StatusPopover',\n  props: [\n    'statusId'\n  ],\n  data () {\n    return {\n      error: false\n    }\n  },\n  computed: {\n    status () {\n      return find(this.$store.state.statuses.allStatuses, { id: this.statusId })\n    }\n  },\n  components: {\n    Status: defineAsyncComponent(() => import('../status/status.vue')),\n    Popover: defineAsyncComponent(() => import('../popover/popover.vue'))\n  },\n  methods: {\n    enter () {\n      if (!this.status) {\n        if (!this.statusId) {\n          this.error = true\n          return\n        }\n        this.$store.dispatch('fetchStatus', this.statusId)\n          .then(data => (this.error = false))\n          .catch(e => (this.error = true))\n      }\n    }\n  }\n}\n\nexport default StatusPopover\n","import { render } from \"./status_popover.vue?vue&type=template&id=fa4a5d94\"\nimport script from \"./status_popover.js?vue&type=script&lang=js\"\nexport * from \"./status_popover.js?vue&type=script&lang=js\"\n\nimport \"./status_popover.vue?vue&type=style&index=0&id=fa4a5d94&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Popover\n    trigger=\"hover\"\n    placement=\"top\"\n    :offset=\"{ y: 5 }\"\n  >\n    <template v-slot:trigger>\n      <slot />\n    </template>\n    <template v-slot:content>\n      <div class=\"user-list-popover\">\n        <template v-if=\"users.length\">\n          <div\n            v-for=\"(user) in usersCapped\"\n            :key=\"user.id\"\n            class=\"user-list-row\"\n          >\n            <UserAvatar\n              :user=\"user\"\n              class=\"avatar-small\"\n              :compact=\"true\"\n            />\n            <div class=\"user-list-names\">\n              <!-- eslint-disable vue/no-v-html -->\n              <RichContent\n                class=\"username\"\n                :title=\"'@'+user.screen_name_ui\"\n                :html=\"user.name_html\"\n                :emoji=\"user.emoji\"\n              />\n              <!-- eslint-enable vue/no-v-html -->\n              <span class=\"user-list-screen-name\">{{ user.screen_name_ui }}</span>\n            </div>\n          </div>\n        </template>\n        <template v-else>\n          <FAIcon\n            icon=\"circle-notch\"\n            spin\n            size=\"3x\"\n          />\n        </template>\n      </div>\n    </template>\n  </Popover>\n</template>\n\n<script src=\"./user_list_popover.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.user-list-popover {\n  padding: 0.5em;\n\n  --emoji-size: 16px;\n\n  .user-list-row {\n    padding: 0.25em;\n    display: flex;\n    flex-direction: row;\n\n    .user-list-names {\n      display: flex;\n      flex-direction: column;\n      margin-left: 0.5em;\n      min-width: 5em;\n\n      img {\n        width: 1em;\n        height: 1em;\n      }\n    }\n\n    .user-list-screen-name {\n      font-size: 0.65em;\n    }\n  }\n}\n\n</style>\n","import { defineAsyncComponent } from 'vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch\n)\n\nconst UserListPopover = {\n  name: 'UserListPopover',\n  props: [\n    'users'\n  ],\n  components: {\n    RichContent,\n    Popover: defineAsyncComponent(() => import('../popover/popover.vue')),\n    UserAvatar: defineAsyncComponent(() => import('../user_avatar/user_avatar.vue'))\n  },\n  computed: {\n    usersCapped () {\n      return this.users.slice(0, 16)\n    }\n  }\n}\n\nexport default UserListPopover\n","import { render } from \"./user_list_popover.vue?vue&type=template&id=3dc0c2d4\"\nimport script from \"./user_list_popover.js?vue&type=script&lang=js\"\nexport * from \"./user_list_popover.js?vue&type=script&lang=js\"\n\nimport \"./user_list_popover.vue?vue&type=style&index=0&id=3dc0c2d4&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"emoji-reactions\">\n    <UserListPopover\n      v-for=\"(reaction) in emojiReactions\"\n      :key=\"reaction.name\"\n      :users=\"accountsForEmoji[reaction.name]\"\n    >\n      <button\n        class=\"emoji-reaction btn button-default\"\n        :class=\"{ 'picked-reaction': reactedWith(reaction.name), 'not-clickable': !loggedIn }\"\n        @click=\"emojiOnClick(reaction.name, $event)\"\n        @mouseenter=\"fetchEmojiReactionsByIfMissing()\"\n      >\n        <span\n          v-if=\"reaction.url !== null\"\n        >\n          <img\n            :src=\"reaction.url\"\n            :title=\"reaction.name\"\n            class=\"reaction-emoji\"\n            width=\"2.55em\"\n          >\n          {{ reaction.count }}\n        </span>\n        <span v-else>\n          <span class=\"reaction-emoji unicode-emoji\">\n            {{ reaction.name }}\n          </span>\n          <span>{{ reaction.count }}</span>\n        </span>\n      </button>\n    </UserListPopover>\n    <a\n      v-if=\"tooManyReactions\"\n      class=\"emoji-reaction-expand faint\"\n      href=\"javascript:void(0)\"\n      @click=\"toggleShowAll\"\n    >\n      {{ showAll ? $t('general.show_less') : showMoreString }}\n    </a>\n  </div>\n</template>\n\n<script src=\"./emoji_reactions.js\" ></script>\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.emoji-reactions {\n  display: flex;\n  margin-top: 0.25em;\n  flex-wrap: wrap;\n}\n\n.unicode-emoji {\n  font-size: 210%;\n}\n\n.emoji-reaction {\n  padding: 0 0.5em;\n  margin-right: 0.5em;\n  margin-top: 0.5em;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  box-sizing: border-box;\n  .reaction-emoji {\n    width: 2.55em !important;\n    margin-right: 0.25em;\n  }\n  &:focus {\n    outline: none;\n  }\n\n  &.not-clickable {\n    cursor: default;\n    &:hover {\n      box-shadow: $fallback--buttonShadow;\n      box-shadow: var(--buttonShadow);\n    }\n  }\n}\n\n.emoji-reaction-expand {\n  padding: 0 0.5em;\n  margin-right: 0.5em;\n  margin-top: 0.5em;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  &:hover {\n    text-decoration: underline;\n  }\n}\n\n.picked-reaction {\n  border: 1px solid var(--accent, $fallback--link);\n  margin-left: -1px; // offset the border, can't use inset shadows either\n  margin-right: calc(0.5em - 1px);\n}\n\n</style>\n","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport UserListPopover from '../user_list_popover/user_list_popover.vue'\n\nconst EMOJI_REACTION_COUNT_CUTOFF = 12\n\nconst EmojiReactions = {\n  name: 'EmojiReactions',\n  components: {\n    UserAvatar,\n    UserListPopover\n  },\n  props: ['status'],\n  data: () => ({\n    showAll: false\n  }),\n  computed: {\n    tooManyReactions () {\n      return this.status.emoji_reactions.length > EMOJI_REACTION_COUNT_CUTOFF\n    },\n    emojiReactions () {\n      return this.showAll\n        ? this.status.emoji_reactions\n        : this.status.emoji_reactions.slice(0, EMOJI_REACTION_COUNT_CUTOFF)\n    },\n    showMoreString () {\n      return `+${this.status.emoji_reactions.length - EMOJI_REACTION_COUNT_CUTOFF}`\n    },\n    accountsForEmoji () {\n      return this.status.emoji_reactions.reduce((acc, reaction) => {\n        acc[reaction.name] = reaction.accounts || []\n        return acc\n      }, {})\n    },\n    loggedIn () {\n      return !!this.$store.state.users.currentUser\n    }\n  },\n  methods: {\n    toggleShowAll () {\n      this.showAll = !this.showAll\n    },\n    reactedWith (emoji) {\n      return this.status.emoji_reactions.find(r => r.name === emoji).me\n    },\n    fetchEmojiReactionsByIfMissing () {\n      const hasNoAccounts = this.status.emoji_reactions.find(r => !r.accounts)\n      if (hasNoAccounts) {\n        this.$store.dispatch('fetchEmojiReactionsBy', this.status.id)\n      }\n    },\n    reactWith (emoji) {\n      this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji })\n    },\n    unreact (emoji) {\n      this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji })\n    },\n    emojiOnClick (emoji, event) {\n      if (!this.loggedIn) return\n\n      if (this.reactedWith(emoji)) {\n        this.unreact(emoji)\n      } else {\n        this.reactWith(emoji)\n      }\n    }\n  }\n}\n\nexport default EmojiReactions\n","import { render } from \"./emoji_reactions.vue?vue&type=template&id=1bf35779\"\nimport script from \"./emoji_reactions.js?vue&type=script&lang=js\"\nexport * from \"./emoji_reactions.js?vue&type=script&lang=js\"\n\nimport \"./emoji_reactions.vue?vue&type=style&index=0&id=1bf35779&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import ReplyButton from '../reply_button/reply_button.vue'\nimport FavoriteButton from '../favorite_button/favorite_button.vue'\nimport ReactButton from '../react_button/react_button.vue'\nimport RetweetButton from '../retweet_button/retweet_button.vue'\nimport ExtraButtons from '../extra_buttons/extra_buttons.vue'\nimport PostStatusForm from '../post_status_form/post_status_form.vue'\nimport UserCard from '../user_card/user_card.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport AvatarList from '../avatar_list/avatar_list.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport StatusPopover from '../status_popover/status_popover.vue'\nimport UserListPopover from '../user_list_popover/user_list_popover.vue'\nimport EmojiReactions from '../emoji_reactions/emoji_reactions.vue'\nimport MentionsLine from 'src/components/mentions_line/mentions_line.vue'\nimport MentionLink from 'src/components/mention_link/mention_link.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport { muteWordHits } from '../../services/status_parser/status_parser.js'\nimport { unescape, uniqBy } from 'lodash'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faEnvelope,\n  faLock,\n  faLockOpen,\n  faGlobe,\n  faTimes,\n  faRetweet,\n  faReply,\n  faPlusSquare,\n  faSmileBeam,\n  faEllipsisH,\n  faStar,\n  faEyeSlash,\n  faEye,\n  faThumbtack,\n  faChevronUp,\n  faChevronDown,\n  faAngleDoubleRight\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faEnvelope,\n  faGlobe,\n  faLock,\n  faLockOpen,\n  faTimes,\n  faRetweet,\n  faReply,\n  faPlusSquare,\n  faStar,\n  faSmileBeam,\n  faEllipsisH,\n  faEyeSlash,\n  faEye,\n  faThumbtack,\n  faChevronUp,\n  faChevronDown,\n  faAngleDoubleRight\n)\n\nconst camelCase = name => name.charAt(0).toUpperCase() + name.slice(1)\n\nconst controlledOrUncontrolledGetters = list => list.reduce((res, name) => {\n  const camelized = camelCase(name)\n  const toggle = `controlledToggle${camelized}`\n  const controlledName = `controlled${camelized}`\n  const uncontrolledName = `uncontrolled${camelized}`\n  res[name] = function () {\n    return ((this.$data[toggle] !== undefined || this.$props[toggle] !== undefined) && this[toggle]) ? this[controlledName] : this[uncontrolledName]\n  }\n  return res\n}, {})\n\nconst controlledOrUncontrolledToggle = (obj, name) => {\n  const camelized = camelCase(name)\n  const toggle = `controlledToggle${camelized}`\n  const uncontrolledName = `uncontrolled${camelized}`\n  if (obj[toggle]) {\n    obj[toggle]()\n  } else {\n    obj[uncontrolledName] = !obj[uncontrolledName]\n  }\n}\n\nconst controlledOrUncontrolledSet = (obj, name, val) => {\n  const camelized = camelCase(name)\n  const set = `controlledSet${camelized}`\n  const uncontrolledName = `uncontrolled${camelized}`\n  if (obj[set]) {\n    obj[set](val)\n  } else {\n    obj[uncontrolledName] = val\n  }\n}\n\nconst Status = {\n  name: 'Status',\n  components: {\n    ReplyButton,\n    FavoriteButton,\n    ReactButton,\n    RetweetButton,\n    ExtraButtons,\n    PostStatusForm,\n    UserCard,\n    UserAvatar,\n    AvatarList,\n    Timeago,\n    StatusPopover,\n    UserListPopover,\n    EmojiReactions,\n    StatusContent,\n    RichContent,\n    MentionLink,\n    MentionsLine\n  },\n  props: [\n    'statusoid',\n    'expandable',\n    'inConversation',\n    'focused',\n    'highlight',\n    'compact',\n    'replies',\n    'isPreview',\n    'noHeading',\n    'inlineExpanded',\n    'showPinned',\n    'inProfile',\n    'profileUserId',\n\n    'simpleTree',\n    'controlledThreadDisplayStatus',\n    'controlledToggleThreadDisplay',\n    'showOtherRepliesAsButton',\n\n    'controlledShowingTall',\n    'controlledToggleShowingTall',\n    'controlledExpandingSubject',\n    'controlledToggleExpandingSubject',\n    'controlledShowingLongSubject',\n    'controlledToggleShowingLongSubject',\n    'controlledReplying',\n    'controlledToggleReplying',\n    'controlledMediaPlaying',\n    'controlledSetMediaPlaying',\n    'dive'\n  ],\n  data () {\n    return {\n      uncontrolledReplying: false,\n      unmuted: false,\n      userExpanded: false,\n      uncontrolledMediaPlaying: [],\n      suspendable: true,\n      error: null,\n      headTailLinks: null\n    }\n  },\n  computed: {\n    ...controlledOrUncontrolledGetters(['replying', 'mediaPlaying']),\n    muteWords () {\n      return this.mergedConfig.muteWords\n    },\n    showReasonMutedThread () {\n      return (\n        this.status.thread_muted ||\n          (this.status.reblog && this.status.reblog.thread_muted)\n      ) && !this.inConversation\n    },\n    repeaterClass () {\n      const user = this.statusoid.user\n      return highlightClass(user)\n    },\n    userClass () {\n      const user = this.retweet ? (this.statusoid.retweeted_status.user) : this.statusoid.user\n      return highlightClass(user)\n    },\n    deleted () {\n      return this.statusoid.deleted\n    },\n    repeaterStyle () {\n      const user = this.statusoid.user\n      const highlight = this.mergedConfig.highlight\n      return highlightStyle(highlight[user.screen_name])\n    },\n    userStyle () {\n      if (this.noHeading) return\n      const user = this.retweet ? (this.statusoid.retweeted_status.user) : this.statusoid.user\n      const highlight = this.mergedConfig.highlight\n      return highlightStyle(highlight[user.screen_name])\n    },\n    userProfileLink () {\n      return this.generateUserProfileLink(this.status.user.id, this.status.user.screen_name)\n    },\n    replyProfileLink () {\n      if (this.isReply) {\n        const user = this.$store.getters.findUser(this.status.in_reply_to_user_id)\n        // FIXME Why user not found sometimes???\n        return user ? user.statusnet_profile_url : 'NOT_FOUND'\n      }\n    },\n    retweet () { return !!this.statusoid.retweeted_status },\n    retweeterUser () { return this.statusoid.user },\n    retweeter () { return this.statusoid.user.name || this.statusoid.user.screen_name_ui },\n    retweeterHtml () { return this.statusoid.user.name },\n    retweeterProfileLink () { return this.generateUserProfileLink(this.statusoid.user.id, this.statusoid.user.screen_name) },\n    status () {\n      if (this.retweet) {\n        return this.statusoid.retweeted_status\n      } else {\n        return this.statusoid\n      }\n    },\n    statusFromGlobalRepository () {\n      // NOTE: Consider to replace status with statusFromGlobalRepository\n      return this.$store.state.statuses.allStatusesObject[this.status.id]\n    },\n    loggedIn () {\n      return !!this.currentUser\n    },\n    muteWordHits () {\n      return muteWordHits(this.status, this.muteWords)\n    },\n    rtBotStatus () {\n      return this.statusoid.user.bot\n    },\n    botStatus () {\n      return this.status.user.bot\n    },\n    botIndicator () {\n      return this.botStatus && !this.hideBotIndication\n    },\n    rtBotIndicator () {\n      return this.rtBotStatus && !this.hideBotIndication\n    },\n    mentionsLine () {\n      if (!this.headTailLinks) return []\n      const writtenSet = new Set(this.headTailLinks.writtenMentions.map(_ => _.url))\n      return this.status.attentions.filter(attn => {\n        // no reply user\n        return attn.id !== this.status.in_reply_to_user_id &&\n          // no self-replies\n          attn.statusnet_profile_url !== this.status.user.statusnet_profile_url &&\n          // don't include if mentions is written\n          !writtenSet.has(attn.statusnet_profile_url)\n      }).map(attn => ({\n        url: attn.statusnet_profile_url,\n        content: attn.screen_name,\n        userId: attn.id\n      }))\n    },\n    hasMentionsLine () {\n      return this.mentionsLine.length > 0\n    },\n    muted () {\n      if (this.statusoid.user.id === this.currentUser.id) return false\n      const reasonsToMute = this.userIsMuted ||\n        // Thread is muted\n        status.thread_muted ||\n        // Wordfiltered\n        this.muteWordHits.length > 0 ||\n        // bot status\n        (this.muteBotStatuses && this.botStatus && !this.compact)\n      return !this.unmuted && !this.shouldNotMute && reasonsToMute\n    },\n    userIsMuted () {\n      if (this.statusoid.user.id === this.currentUser.id) return false\n      const { status } = this\n      const { reblog } = status\n      const relationship = this.$store.getters.relationship(status.user.id)\n      const relationshipReblog = reblog && this.$store.getters.relationship(reblog.user.id)\n      return status.muted ||\n        // Reprööt of a muted post according to BE\n        (reblog && reblog.muted) ||\n        // Muted user\n        relationship.muting ||\n        // Muted user of a reprööt\n        (relationshipReblog && relationshipReblog.muting)\n    },\n    shouldNotMute () {\n      const { status } = this\n      const { reblog } = status\n      return (\n        (\n          this.inProfile && (\n            // Don't mute user's posts on user timeline (except reblogs)\n            (!reblog && status.user.id === this.profileUserId) ||\n            // Same as above but also allow self-reblogs\n            (reblog && reblog.user.id === this.profileUserId)\n          )\n        ) ||\n        // Don't mute statuses in muted conversation when said conversation is opened\n        (this.inConversation && status.thread_muted)\n        // No excuses if post has muted words\n      ) && !this.muteWordHits.length > 0\n    },\n    hideMutedUsers () {\n      return this.mergedConfig.hideMutedPosts\n    },\n    hideMutedThreads () {\n      return this.mergedConfig.hideMutedThreads\n    },\n    hideFilteredStatuses () {\n      return this.mergedConfig.hideFilteredStatuses\n    },\n    hideWordFilteredPosts () {\n      return this.mergedConfig.hideWordFilteredPosts\n    },\n    hideStatus () {\n      return (!this.shouldNotMute) && (\n        (this.muted && this.hideFilteredStatuses) ||\n        (this.userIsMuted && this.hideMutedUsers) ||\n        (this.status.thread_muted && this.hideMutedThreads) ||\n        (this.muteWordHits.length > 0 && this.hideWordFilteredPosts)\n      )\n    },\n    isFocused () {\n      // retweet or root of an expanded conversation\n      if (this.focused) {\n        return true\n      } else if (!this.inConversation) {\n        return false\n      }\n      // use conversation highlight only when in conversation\n      return this.status.id === this.highlight\n    },\n    isReply () {\n      return !!(this.status.in_reply_to_status_id && this.status.in_reply_to_user_id)\n    },\n    replyToName () {\n      if (this.status.in_reply_to_screen_name) {\n        return this.status.in_reply_to_screen_name\n      } else {\n        const user = this.$store.getters.findUser(this.status.in_reply_to_user_id)\n        return user && user.screen_name_ui\n      }\n    },\n    replySubject () {\n      if (!this.status.summary) return ''\n      const decodedSummary = unescape(this.status.summary)\n      const behavior = this.mergedConfig.subjectLineBehavior\n      const startsWithRe = decodedSummary.match(/^re[: ]/i)\n      if ((behavior !== 'noop' && startsWithRe) || behavior === 'masto') {\n        return decodedSummary\n      } else if (behavior === 'email') {\n        return 're: '.concat(decodedSummary)\n      } else if (behavior === 'noop') {\n        return ''\n      }\n    },\n    combinedFavsAndRepeatsUsers () {\n      // Use the status from the global status repository since favs and repeats are saved in it\n      const combinedUsers = [].concat(\n        this.statusFromGlobalRepository.favoritedBy,\n        this.statusFromGlobalRepository.rebloggedBy\n      )\n      return uniqBy(combinedUsers, 'id')\n    },\n    tags () {\n      return this.status.tags.filter(tagObj => tagObj.hasOwnProperty('name')).map(tagObj => tagObj.name).join(' ')\n    },\n    hidePostStats () {\n      return this.mergedConfig.hidePostStats\n    },\n    muteBotStatuses () {\n      return this.mergedConfig.muteBotStatuses\n    },\n    hideBotIndication () {\n      return this.mergedConfig.hideBotIndication\n    },\n    currentUser () {\n      return this.$store.state.users.currentUser\n    },\n    betterShadow () {\n      return this.$store.state.interface.browserSupport.cssFilter\n    },\n    mergedConfig () {\n      return this.$store.getters.mergedConfig\n    },\n    isSuspendable () {\n      return !this.replying && this.mediaPlaying.length === 0\n    },\n    inThreadForest () {\n      return !!this.controlledThreadDisplayStatus\n    },\n    threadShowing () {\n      return this.controlledThreadDisplayStatus === 'showing'\n    },\n    visibilityLocalized () {\n      return this.$i18n.t('general.scope_in_timeline.' + this.status.visibility)\n    }\n  },\n  methods: {\n    visibilityIcon (visibility) {\n      switch (visibility) {\n        case 'private':\n          return 'lock'\n        case 'unlisted':\n          return 'lock-open'\n        case 'direct':\n          return 'envelope'\n        case 'local':\n          return 'users'\n        default:\n          return 'globe'\n      }\n    },\n    showError (error) {\n      this.error = error\n    },\n    clearError () {\n      this.error = undefined\n    },\n    toggleReplying () {\n      controlledOrUncontrolledToggle(this, 'replying')\n    },\n    gotoOriginal (id) {\n      if (this.inConversation) {\n        this.$emit('goto', id)\n      }\n    },\n    toggleExpanded () {\n      this.$emit('toggleExpanded')\n    },\n    toggleMute () {\n      this.unmuted = !this.unmuted\n    },\n    toggleUserExpanded () {\n      this.userExpanded = !this.userExpanded\n    },\n    generateUserProfileLink (id, name) {\n      return generateProfileLink(id, name, this.$store.state.instance.restrictedNicknames)\n    },\n    addMediaPlaying (id) {\n      controlledOrUncontrolledSet(this, 'mediaPlaying', this.mediaPlaying.concat(id))\n    },\n    removeMediaPlaying (id) {\n      controlledOrUncontrolledSet(this, 'mediaPlaying', this.mediaPlaying.filter(mediaId => mediaId !== id))\n    },\n    setHeadTailLinks (headTailLinks) {\n      this.headTailLinks = headTailLinks\n    },\n    toggleThreadDisplay () {\n      this.controlledToggleThreadDisplay()\n    },\n    scrollIfHighlighted (highlightId) {\n      const id = highlightId\n      if (this.status.id === id) {\n        let rect = this.$el.getBoundingClientRect()\n        if (rect.top < 100) {\n          // Post is above screen, match its top to screen top\n          window.scrollBy(0, rect.top - 100)\n        } else if (rect.height >= (window.innerHeight - 50)) {\n          // Post we want to see is taller than screen so match its top to screen top\n          window.scrollBy(0, rect.top - 100)\n        } else if (rect.bottom > window.innerHeight - 50) {\n          // Post is below screen, match its bottom to screen bottom\n          window.scrollBy(0, rect.bottom - window.innerHeight + 50)\n        }\n      }\n    }\n  },\n  watch: {\n    'highlight': function (id) {\n      this.scrollIfHighlighted(id)\n    },\n    'status.repeat_num': function (num) {\n      // refetch repeats when repeat_num is changed in any way\n      if (this.isFocused && this.statusFromGlobalRepository.rebloggedBy && this.statusFromGlobalRepository.rebloggedBy.length !== num) {\n        this.$store.dispatch('fetchRepeats', this.status.id)\n      }\n    },\n    'status.fave_num': function (num) {\n      // refetch favs when fave_num is changed in any way\n      if (this.isFocused && this.statusFromGlobalRepository.favoritedBy && this.statusFromGlobalRepository.favoritedBy.length !== num) {\n        this.$store.dispatch('fetchFavs', this.status.id)\n      }\n    },\n    'isSuspendable': function (val) {\n      this.suspendable = val\n    }\n  }\n}\n\nexport default Status\n","import { render } from \"./status.vue?vue&type=template&id=7387c01f\"\nimport script from \"./status.js?vue&type=script&lang=js\"\nexport * from \"./status.js?vue&type=script&lang=js\"\n\nimport \"./status.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    class=\"user-card\"\n    :class=\"classes\"\n  >\n    <div\n      :class=\"{ 'hide-bio': hideBio }\"\n      :style=\"style\"\n      class=\"background-image\"\n    />\n    <div class=\"panel-heading -flexible-height\">\n      <div class=\"user-info\">\n        <div class=\"container\">\n          <a\n            v-if=\"allowZoomingAvatar\"\n            class=\"user-info-avatar-link\"\n            @click=\"zoomAvatar\"\n          >\n            <UserAvatar\n              :better-shadow=\"betterShadow\"\n              :user=\"user\"\n            />\n            <div class=\"user-info-avatar-link-overlay\">\n              <FAIcon\n                class=\"fa-scale-110 fa-old-padding\"\n                icon=\"search-plus\"\n              />\n            </div>\n          </a>\n          <router-link\n            v-else\n            :to=\"userProfileLink(user)\"\n          >\n            <UserAvatar\n              :better-shadow=\"betterShadow\"\n              :user=\"user\"\n            />\n          </router-link>\n          <div class=\"user-summary\">\n            <div class=\"top-line\">\n              <RichContent\n                :title=\"user.name\"\n                class=\"user-name\"\n                :html=\"user.name\"\n                :emoji=\"user.emoji\"\n              />\n              <button\n                v-if=\"!isOtherUser && user.is_local\"\n                class=\"button-unstyled edit-profile-button\"\n                @click.stop=\"openProfileTab\"\n              >\n                <FAIcon\n                  fixed-width\n                  class=\"icon\"\n                  icon=\"edit\"\n                  :title=\"$t('user_card.edit_profile')\"\n                />\n              </button>\n              <a\n                v-if=\"isOtherUser && !user.is_local\"\n                :href=\"user.statusnet_profile_url\"\n                target=\"_blank\"\n                class=\"button-unstyled external-link-button\"\n              >\n                <FAIcon\n                  class=\"icon\"\n                  icon=\"external-link-alt\"\n                />\n              </a>\n              <AccountActions\n                v-if=\"isOtherUser && loggedIn\"\n                :user=\"user\"\n                :relationship=\"relationship\"\n              />\n            </div>\n            <div class=\"bottom-line\">\n              <router-link\n                class=\"user-screen-name\"\n                :title=\"user.screen_name_ui\"\n                :to=\"userProfileLink(user)\"\n              >\n                @{{ user.screen_name_ui }}\n              </router-link>\n              <template v-if=\"!hideBio\">\n                <span\n                  v-if=\"user.deactivated\"\n                  class=\"alert user-role\"\n                >\n                  {{ $t('user_card.deactivated') }}\n                </span>\n                <span\n                  v-if=\"!!visibleRole\"\n                  class=\"alert user-role\"\n                >\n                  {{ $t(`general.role.${visibleRole}`) }}\n                </span>\n                <span\n                  v-if=\"user.bot\"\n                  class=\"alert user-role\"\n                >\n                  {{ $t('user_card.bot') }}\n                </span>\n              </template>\n              <span v-if=\"user.locked\">\n                <FAIcon\n                  class=\"lock-icon\"\n                  icon=\"lock\"\n                  size=\"sm\"\n                />\n              </span>\n              <span\n                v-if=\"!mergedConfig.hideUserStats && !hideBio\"\n                class=\"dailyAvg\"\n              >{{ dailyAvg }} {{ $t('user_card.per_day') }}</span>\n            </div>\n          </div>\n        </div>\n        <div class=\"user-meta\">\n          <div\n            v-if=\"relationship.followed_by && loggedIn && isOtherUser\"\n            class=\"following\"\n          >\n            {{ $t('user_card.follows_you') }}\n          </div>\n          <div\n            v-if=\"isOtherUser && (loggedIn || !switcher)\"\n            class=\"highlighter\"\n          >\n            <!-- id's need to be unique, otherwise vue confuses which user-card checkbox belongs to -->\n            <input\n              v-if=\"userHighlightType !== 'disabled'\"\n              :id=\"'userHighlightColorTx'+user.id\"\n              v-model=\"userHighlightColor\"\n              class=\"userHighlightText\"\n              type=\"text\"\n            >\n            <input\n              v-if=\"userHighlightType !== 'disabled'\"\n              :id=\"'userHighlightColor'+user.id\"\n              v-model=\"userHighlightColor\"\n              class=\"userHighlightCl\"\n              type=\"color\"\n            >\n            {{ ' ' }}\n            <Select\n              :id=\"'userHighlightSel'+user.id\"\n              v-model=\"userHighlightType\"\n              class=\"userHighlightSel\"\n            >\n              <option value=\"disabled\">\n                {{ $t('user_card.highlight.disabled') }}\n              </option>\n              <option value=\"solid\">\n                {{ $t('user_card.highlight.solid') }}\n              </option>\n              <option value=\"striped\">\n                {{ $t('user_card.highlight.striped') }}\n              </option>\n              <option value=\"side\">\n                {{ $t('user_card.highlight.side') }}\n              </option>\n            </Select>\n          </div>\n        </div>\n        <div\n          v-if=\"loggedIn && isOtherUser\"\n          class=\"user-interactions\"\n        >\n          <div class=\"btn-group\">\n            <FollowButton\n              :relationship=\"relationship\"\n              :user=\"user\"\n            />\n            <template v-if=\"relationship.following\">\n              <ProgressButton\n                v-if=\"!relationship.subscribing\"\n                class=\"btn button-default\"\n                :click=\"subscribeUser\"\n                :title=\"$t('user_card.subscribe')\"\n              >\n                <FAIcon icon=\"bell\" />\n              </ProgressButton>\n              <ProgressButton\n                v-else\n                class=\"btn button-default toggled\"\n                :click=\"unsubscribeUser\"\n                :title=\"$t('user_card.unsubscribe')\"\n              >\n                <FALayers>\n                  <FAIcon\n                    icon=\"rss\"\n                    transform=\"left-5 shrink-6 up-3 rotate-20\"\n                    flip=\"horizontal\"\n                  />\n                  <FAIcon\n                    icon=\"rss\"\n                    transform=\"right-5 shrink-6 up-3 rotate-20\"\n                  />\n                  <FAIcon icon=\"bell\" />\n                </FALayers>\n              </ProgressButton>\n            </template>\n          </div>\n          <div>\n            <button\n              v-if=\"relationship.muting\"\n              class=\"btn button-default btn-block toggled\"\n              :disabled=\"user.deactivated\"\n              @click=\"unmuteUser\"\n            >\n              {{ $t('user_card.muted') }}\n            </button>\n            <button\n              v-else\n              class=\"btn button-default btn-block\"\n              :disabled=\"user.deactivated\"\n              @click=\"muteUser\"\n            >\n              {{ $t('user_card.mute') }}\n            </button>\n          </div>\n          <div>\n            <button\n              v-if=\"relationship.domain_blocking\"\n              class=\"btn button-default btn-block toggled\"\n              @click=\"unmuteDomain\"\n            >\n              {{ $t('user_card.domain_muted') }}\n            </button>\n            <button\n              v-else\n              class=\"btn button-default btn-block\"\n              @click=\"muteDomain\"\n            >\n              {{ $t('user_card.mute_domain') }}\n            </button>\n          </div>\n          <div>\n            <button\n              class=\"btn button-default btn-block\"\n              :disabled=\"user.deactivated\"\n              @click=\"mentionUser\"\n            >\n              {{ $t('user_card.mention') }}\n            </button>\n          </div>\n          <ModerationTools\n            v-if=\"loggedIn.role === &quot;admin&quot;\"\n            :user=\"user\"\n          />\n        </div>\n        <div\n          v-if=\"!loggedIn && user.is_local\"\n          class=\"user-interactions\"\n        >\n          <RemoteFollow :user=\"user\" />\n        </div>\n      </div>\n    </div>\n    <div\n      v-if=\"!hideBio\"\n      class=\"panel-body\"\n    >\n      <div\n        v-if=\"!mergedConfig.hideUserStats && switcher\"\n        class=\"user-counts\"\n      >\n        <div\n          class=\"user-count\"\n          @click.prevent=\"setProfileView('statuses')\"\n        >\n          <h5>{{ $t('user_card.statuses') }}</h5>\n          <span>{{ user.statuses_count }} <br></span>\n        </div>\n        <div\n          class=\"user-count\"\n          @click.prevent=\"setProfileView('friends')\"\n        >\n          <h5>{{ $t('user_card.followees') }}</h5>\n          <span>{{ hideFollowsCount ? $t('user_card.hidden') : user.friends_count }}</span>\n        </div>\n        <div\n          class=\"user-count\"\n          @click.prevent=\"setProfileView('followers')\"\n        >\n          <h5>{{ $t('user_card.followers') }}</h5>\n          <span>{{ hideFollowersCount ? $t('user_card.hidden') : user.followers_count }}</span>\n        </div>\n      </div>\n      <RichContent\n        v-if=\"!hideBio\"\n        class=\"user-card-bio\"\n        :html=\"user.description_html\"\n        :emoji=\"user.emoji\"\n        :handle-links=\"true\"\n      />\n    </div>\n  </div>\n</template>\n\n<script src=\"./user_card.js\"></script>\n\n<style lang=\"scss\" src=\"./user_card.scss\" />\n","<template>\n  <div>\n    <Popover\n      trigger=\"click\"\n      class=\"moderation-tools-popover\"\n      placement=\"bottom\"\n      :offset=\"{ y: 5 }\"\n      @show=\"setToggled(true)\"\n      @close=\"setToggled(false)\"\n    >\n      <template v-slot:content>\n        <div class=\"dropdown-menu\">\n          <span v-if=\"user.is_local\">\n            <button\n              class=\"button-default dropdown-item\"\n              @click=\"toggleRight(&quot;admin&quot;)\"\n            >\n              {{ $t(!!user.rights.admin ? 'user_card.admin_menu.revoke_admin' : 'user_card.admin_menu.grant_admin') }}\n            </button>\n            <button\n              class=\"button-default dropdown-item\"\n              @click=\"toggleRight(&quot;moderator&quot;)\"\n            >\n              {{ $t(!!user.rights.moderator ? 'user_card.admin_menu.revoke_moderator' : 'user_card.admin_menu.grant_moderator') }}\n            </button>\n            <div\n              role=\"separator\"\n              class=\"dropdown-divider\"\n            />\n          </span>\n          <button\n            class=\"button-default dropdown-item\"\n            @click=\"toggleActivationStatus()\"\n          >\n            {{ $t(!!user.deactivated ? 'user_card.admin_menu.activate_account' : 'user_card.admin_menu.deactivate_account') }}\n          </button>\n          <button\n            class=\"button-default dropdown-item\"\n            @click=\"deleteUserDialog(true)\"\n          >\n            {{ $t('user_card.admin_menu.delete_account') }}\n          </button>\n          <div\n            v-if=\"hasTagPolicy\"\n            role=\"separator\"\n            class=\"dropdown-divider\"\n          />\n          <span v-if=\"hasTagPolicy\">\n            <button\n              class=\"button-default dropdown-item\"\n              @click=\"toggleTag(tags.FORCE_NSFW)\"\n            >\n              <span\n                class=\"menu-checkbox\"\n                :class=\"{ 'menu-checkbox-checked': hasTag(tags.FORCE_NSFW) }\"\n              />\n              {{ $t('user_card.admin_menu.force_nsfw') }}\n            </button>\n            <button\n              class=\"button-default dropdown-item\"\n              @click=\"toggleTag(tags.STRIP_MEDIA)\"\n            >\n              <span\n                class=\"menu-checkbox\"\n                :class=\"{ 'menu-checkbox-checked': hasTag(tags.STRIP_MEDIA) }\"\n              />\n              {{ $t('user_card.admin_menu.strip_media') }}\n            </button>\n            <button\n              class=\"button-default dropdown-item\"\n              @click=\"toggleTag(tags.FORCE_UNLISTED)\"\n            >\n              <span\n                class=\"menu-checkbox\"\n                :class=\"{ 'menu-checkbox-checked': hasTag(tags.FORCE_UNLISTED) }\"\n              />\n              {{ $t('user_card.admin_menu.force_unlisted') }}\n            </button>\n            <button\n              class=\"button-default dropdown-item\"\n              @click=\"toggleTag(tags.SANDBOX)\"\n            >\n              <span\n                class=\"menu-checkbox\"\n                :class=\"{ 'menu-checkbox-checked': hasTag(tags.SANDBOX) }\"\n              />\n              {{ $t('user_card.admin_menu.sandbox') }}\n            </button>\n            <button\n              v-if=\"user.is_local\"\n              class=\"button-default dropdown-item\"\n              @click=\"toggleTag(tags.DISABLE_REMOTE_SUBSCRIPTION)\"\n            >\n              <span\n                class=\"menu-checkbox\"\n                :class=\"{ 'menu-checkbox-checked': hasTag(tags.DISABLE_REMOTE_SUBSCRIPTION) }\"\n              />\n              {{ $t('user_card.admin_menu.disable_remote_subscription') }}\n            </button>\n            <button\n              v-if=\"user.is_local\"\n              class=\"button-default dropdown-item\"\n              @click=\"toggleTag(tags.DISABLE_ANY_SUBSCRIPTION)\"\n            >\n              <span\n                class=\"menu-checkbox\"\n                :class=\"{ 'menu-checkbox-checked': hasTag(tags.DISABLE_ANY_SUBSCRIPTION) }\"\n              />\n              {{ $t('user_card.admin_menu.disable_any_subscription') }}\n            </button>\n            <button\n              v-if=\"user.is_local\"\n              class=\"button-default dropdown-item\"\n              @click=\"toggleTag(tags.QUARANTINE)\"\n            >\n              <span\n                class=\"menu-checkbox\"\n                :class=\"{ 'menu-checkbox-checked': hasTag(tags.QUARANTINE) }\"\n              />\n              {{ $t('user_card.admin_menu.quarantine') }}\n            </button>\n          </span>\n        </div>\n      </template>\n      <template v-slot:trigger>\n        <button\n          class=\"btn button-default btn-block moderation-tools-button\"\n          :class=\"{ toggled }\"\n        >\n          {{ $t('user_card.admin_menu.moderation') }}\n          <FAIcon icon=\"chevron-down\" />\n        </button>\n      </template>\n    </Popover>\n    <teleport to=\"#modal\">\n      <DialogModal\n        v-if=\"showDeleteUserDialog\"\n        :on-cancel=\"deleteUserDialog.bind(this, false)\"\n      >\n        <template v-slot:header>\n          {{ $t('user_card.admin_menu.delete_user') }}\n        </template>\n        <p>{{ $t('user_card.admin_menu.delete_user_confirmation') }}</p>\n        <template v-slot:footer>\n          <button\n            class=\"btn button-default\"\n            @click=\"deleteUserDialog(false)\"\n          >\n            {{ $t('general.cancel') }}\n          </button>\n          <button\n            class=\"btn button-default danger\"\n            @click=\"deleteUser()\"\n          >\n            {{ $t('user_card.admin_menu.delete_user') }}\n          </button>\n        </template>\n      </DialogModal>\n    </teleport>\n  </div>\n</template>\n\n<script src=\"./moderation_tools.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.moderation-tools-popover {\n  height: 100%;\n  .trigger {\n    display: flex !important;\n    height: 100%;\n  }\n}\n\n.moderation-tools-button {\n  svg,i {\n    font-size: 0.8em;\n  }\n}\n</style>\n","<template>\n  <span\n    :class=\"{ 'dark-overlay': darkOverlay }\"\n    @click.self.stop=\"onCancel()\"\n  >\n    <div\n      class=\"dialog-modal panel panel-default\"\n      @click.stop=\"\"\n    >\n      <div class=\"panel-heading dialog-modal-heading\">\n        <div class=\"title\">\n          <slot name=\"header\" />\n        </div>\n      </div>\n      <div class=\"dialog-modal-content\">\n        <slot name=\"default\" />\n      </div>\n      <div class=\"dialog-modal-footer user-interactions panel-footer\">\n        <slot name=\"footer\" />\n      </div>\n    </div>\n  </span>\n</template>\n\n<script src=\"./dialog_modal.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n// TODO: unify with other modals.\n.dark-overlay {\n  &::before {\n    bottom: 0;\n    content: \" \";\n    display: block;\n    cursor: default;\n    left: 0;\n    position: fixed;\n    right: 0;\n    top: 0;\n    background: rgba(27,31,35,.5);\n    z-index: 99;\n  }\n}\n\n.dialog-modal.panel {\n  top: 0;\n  left: 50%;\n  max-height: 80vh;\n  max-width: 90vw;\n  margin: 15vh auto;\n  position: fixed;\n  transform: translateX(-50%);\n  z-index: 999;\n  cursor: default;\n  display: block;\n  background-color: $fallback--bg;\n  background-color: var(--bg, $fallback--bg);\n\n  .dialog-modal-heading {\n    .title {\n      text-align: center;\n    }\n  }\n\n  .dialog-modal-content {\n    margin: 0;\n    padding: 1rem 1rem;\n    background-color: $fallback--bg;\n    background-color: var(--bg, $fallback--bg);\n    white-space: normal;\n  }\n\n  .dialog-modal-footer {\n    margin: 0;\n    padding: .5em .5em;\n    background-color: $fallback--bg;\n    background-color: var(--bg, $fallback--bg);\n    border-top: 1px solid $fallback--border;\n    border-top: 1px solid var(--border, $fallback--border);\n    display: flex;\n    justify-content: flex-end;\n\n    button {\n      width: auto;\n      margin-left: .5rem;\n    }\n  }\n}\n\n</style>\n","const DialogModal = {\n  props: {\n    darkOverlay: {\n      default: true,\n      type: Boolean\n    },\n    onCancel: {\n      default: () => {},\n      type: Function\n    }\n  }\n}\n\nexport default DialogModal\n","import { render } from \"./dialog_modal.vue?vue&type=template&id=202a26c4\"\nimport script from \"./dialog_modal.js?vue&type=script&lang=js\"\nexport * from \"./dialog_modal.js?vue&type=script&lang=js\"\n\nimport \"./dialog_modal.vue?vue&type=style&index=0&id=202a26c4&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faChevronDown } from '@fortawesome/free-solid-svg-icons'\n\nimport DialogModal from '../dialog_modal/dialog_modal.vue'\nimport Popover from '../popover/popover.vue'\n\nlibrary.add(faChevronDown)\n\nconst FORCE_NSFW = 'mrf_tag:media-force-nsfw'\nconst STRIP_MEDIA = 'mrf_tag:media-strip'\nconst FORCE_UNLISTED = 'mrf_tag:force-unlisted'\nconst DISABLE_REMOTE_SUBSCRIPTION = 'mrf_tag:disable-remote-subscription'\nconst DISABLE_ANY_SUBSCRIPTION = 'mrf_tag:disable-any-subscription'\nconst SANDBOX = 'mrf_tag:sandbox'\nconst QUARANTINE = 'mrf_tag:quarantine'\n\nconst ModerationTools = {\n  props: [\n    'user'\n  ],\n  data () {\n    return {\n      tags: {\n        FORCE_NSFW,\n        STRIP_MEDIA,\n        FORCE_UNLISTED,\n        DISABLE_REMOTE_SUBSCRIPTION,\n        DISABLE_ANY_SUBSCRIPTION,\n        SANDBOX,\n        QUARANTINE\n      },\n      showDeleteUserDialog: false,\n      toggled: false\n    }\n  },\n  components: {\n    DialogModal,\n    Popover\n  },\n  computed: {\n    tagsSet () {\n      return new Set(this.user.tags)\n    },\n    hasTagPolicy () {\n      return this.$store.state.instance.tagPolicyAvailable\n    }\n  },\n  methods: {\n    hasTag (tagName) {\n      return this.tagsSet.has(tagName)\n    },\n    toggleTag (tag) {\n      const store = this.$store\n      if (this.tagsSet.has(tag)) {\n        store.state.api.backendInteractor.untagUser({ user: this.user, tag }).then(response => {\n          if (!response.ok) { return }\n          store.commit('untagUser', { user: this.user, tag })\n        })\n      } else {\n        store.state.api.backendInteractor.tagUser({ user: this.user, tag }).then(response => {\n          if (!response.ok) { return }\n          store.commit('tagUser', { user: this.user, tag })\n        })\n      }\n    },\n    toggleRight (right) {\n      const store = this.$store\n      if (this.user.rights[right]) {\n        store.state.api.backendInteractor.deleteRight({ user: this.user, right }).then(response => {\n          if (!response.ok) { return }\n          store.commit('updateRight', { user: this.user, right, value: false })\n        })\n      } else {\n        store.state.api.backendInteractor.addRight({ user: this.user, right }).then(response => {\n          if (!response.ok) { return }\n          store.commit('updateRight', { user: this.user, right, value: true })\n        })\n      }\n    },\n    toggleActivationStatus () {\n      this.$store.dispatch('toggleActivationStatus', { user: this.user })\n    },\n    deleteUserDialog (show) {\n      this.showDeleteUserDialog = show\n    },\n    deleteUser () {\n      const store = this.$store\n      const user = this.user\n      const { id, name } = user\n      store.state.api.backendInteractor.deleteUser({ user })\n        .then(e => {\n          this.$store.dispatch('markStatusesAsDeleted', status => user.id === status.user.id)\n          const isProfile = this.$route.name === 'external-user-profile' || this.$route.name === 'user-profile'\n          const isTargetUser = this.$route.params.name === name || this.$route.params.id === id\n          if (isProfile && isTargetUser) {\n            window.history.back()\n          }\n        })\n    },\n    setToggled (value) {\n      this.toggled = value\n    }\n  }\n}\n\nexport default ModerationTools\n","import { render } from \"./moderation_tools.vue?vue&type=template&id=0ae1f97e\"\nimport script from \"./moderation_tools.js?vue&type=script&lang=js\"\nexport * from \"./moderation_tools.js?vue&type=script&lang=js\"\n\nimport \"./moderation_tools.vue?vue&type=style&index=0&id=0ae1f97e&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"AccountActions\">\n    <Popover\n      trigger=\"click\"\n      placement=\"bottom\"\n      :bound-to=\"{ x: 'container' }\"\n      remove-padding\n    >\n      <template v-slot:content>\n        <div class=\"dropdown-menu\">\n          <template v-if=\"relationship.following\">\n            <button\n              v-if=\"relationship.showing_reblogs\"\n              class=\"btn button-default dropdown-item\"\n              @click=\"hideRepeats\"\n            >\n              {{ $t('user_card.hide_repeats') }}\n            </button>\n            <button\n              v-if=\"!relationship.showing_reblogs\"\n              class=\"btn button-default dropdown-item\"\n              @click=\"showRepeats\"\n            >\n              {{ $t('user_card.show_repeats') }}\n            </button>\n            <div\n              role=\"separator\"\n              class=\"dropdown-divider\"\n            />\n          </template>\n          <button\n            v-if=\"relationship.blocking\"\n            class=\"btn button-default btn-block dropdown-item\"\n            @click=\"unblockUser\"\n          >\n            {{ $t('user_card.unblock') }}\n          </button>\n          <button\n            v-else\n            class=\"btn button-default btn-block dropdown-item\"\n            @click=\"blockUser\"\n          >\n            {{ $t('user_card.block') }}\n          </button>\n          <button\n            class=\"btn button-default btn-block dropdown-item\"\n            @click=\"reportUser\"\n          >\n            {{ $t('user_card.report') }}\n          </button>\n          <button\n            v-if=\"pleromaChatMessagesAvailable\"\n            class=\"btn button-default btn-block dropdown-item\"\n            @click=\"openChat\"\n          >\n            {{ $t('user_card.message') }}\n          </button>\n        </div>\n      </template>\n      <template v-slot:trigger>\n        <button class=\"button-unstyled ellipsis-button\">\n          <FAIcon\n            class=\"icon\"\n            icon=\"ellipsis-v\"\n          />\n        </button>\n      </template>\n    </Popover>\n  </div>\n</template>\n\n<script src=\"./account_actions.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n.AccountActions {\n  .ellipsis-button {\n    width: 2.5em;\n    margin: -0.5em 0;\n    padding: 0.5em 0;\n    text-align: center;\n\n    &:not(:hover) .icon {\n      color: $fallback--lightText;\n      color: var(--lightText, $fallback--lightText);\n    }\n  }\n}\n</style>\n","import { mapState } from 'vuex'\nimport ProgressButton from '../progress_button/progress_button.vue'\nimport Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faEllipsisV\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faEllipsisV\n)\n\nconst AccountActions = {\n  props: [\n    'user', 'relationship'\n  ],\n  data () {\n    return { }\n  },\n  components: {\n    ProgressButton,\n    Popover\n  },\n  methods: {\n    showRepeats () {\n      this.$store.dispatch('showReblogs', this.user.id)\n    },\n    hideRepeats () {\n      this.$store.dispatch('hideReblogs', this.user.id)\n    },\n    blockUser () {\n      this.$store.dispatch('blockUser', this.user.id)\n    },\n    unblockUser () {\n      this.$store.dispatch('unblockUser', this.user.id)\n    },\n    reportUser () {\n      this.$store.dispatch('openUserReportingModal', { userId: this.user.id })\n    },\n    openChat () {\n      this.$router.push({\n        name: 'chat',\n        params: { username: this.$store.state.users.currentUser.screen_name, recipient_id: this.user.id }\n      })\n    }\n  },\n  computed: {\n    ...mapState({\n      pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable\n    })\n  }\n}\n\nexport default AccountActions\n","import { render } from \"./account_actions.vue?vue&type=template&id=cbff36f6\"\nimport script from \"./account_actions.js?vue&type=script&lang=js\"\nexport * from \"./account_actions.js?vue&type=script&lang=js\"\n\nimport \"./account_actions.vue?vue&type=style&index=0&id=cbff36f6&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport RemoteFollow from '../remote_follow/remote_follow.vue'\nimport ProgressButton from '../progress_button/progress_button.vue'\nimport FollowButton from '../follow_button/follow_button.vue'\nimport ModerationTools from '../moderation_tools/moderation_tools.vue'\nimport AccountActions from '../account_actions/account_actions.vue'\nimport Select from '../select/select.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faBell,\n  faRss,\n  faSearchPlus,\n  faExternalLinkAlt,\n  faEdit\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faRss,\n  faBell,\n  faSearchPlus,\n  faExternalLinkAlt,\n  faEdit\n)\n\nexport default {\n  props: [\n    'userId', 'switcher', 'selected', 'hideBio', 'rounded', 'bordered', 'allowZoomingAvatar'\n  ],\n  data () {\n    return {\n      followRequestInProgress: false,\n      betterShadow: this.$store.state.interface.browserSupport.cssFilter\n    }\n  },\n  created () {\n    this.$store.dispatch('fetchUserRelationship', this.user.id)\n  },\n  computed: {\n    user () {\n      return this.$store.getters.findUser(this.userId)\n    },\n    relationship () {\n      return this.$store.getters.relationship(this.userId)\n    },\n    classes () {\n      return [{\n        'user-card-rounded-t': this.rounded === 'top', // set border-top-left-radius and border-top-right-radius\n        'user-card-rounded': this.rounded === true, // set border-radius for all sides\n        'user-card-bordered': this.bordered === true // set border for all sides\n      }]\n    },\n    style () {\n      return {\n        backgroundImage: [\n          `linear-gradient(to bottom, var(--profileTint), var(--profileTint))`,\n          `url(${this.user.cover_photo})`\n        ].join(', ')\n      }\n    },\n    isOtherUser () {\n      return this.user.id !== this.$store.state.users.currentUser.id\n    },\n    subscribeUrl () {\n      // eslint-disable-next-line no-undef\n      const serverUrl = new URL(this.user.statusnet_profile_url)\n      return `${serverUrl.protocol}//${serverUrl.host}/main/ostatus`\n    },\n    loggedIn () {\n      return this.$store.state.users.currentUser\n    },\n    dailyAvg () {\n      const days = Math.ceil((new Date() - new Date(this.user.created_at)) / (60 * 60 * 24 * 1000))\n      return Math.round(this.user.statuses_count / days)\n    },\n    userHighlightType: {\n      get () {\n        const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n        return (data && data.type) || 'disabled'\n      },\n      set (type) {\n        const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n        if (type !== 'disabled') {\n          this.$store.dispatch('setHighlight', { user: this.user.screen_name, color: (data && data.color) || '#FFFFFF', type })\n        } else {\n          this.$store.dispatch('setHighlight', { user: this.user.screen_name, color: undefined })\n        }\n      },\n      ...mapGetters(['mergedConfig'])\n    },\n    userHighlightColor: {\n      get () {\n        const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n        return data && data.color\n      },\n      set (color) {\n        this.$store.dispatch('setHighlight', { user: this.user.screen_name, color })\n      }\n    },\n    visibleRole () {\n      const rights = this.user.rights\n      if (!rights) { return }\n      const validRole = rights.admin || rights.moderator\n      const roleTitle = rights.admin ? 'admin' : 'moderator'\n      return validRole && roleTitle\n    },\n    hideFollowsCount () {\n      return this.isOtherUser && this.user.hide_follows_count\n    },\n    hideFollowersCount () {\n      return this.isOtherUser && this.user.hide_followers_count\n    },\n    ...mapGetters(['mergedConfig'])\n  },\n  components: {\n    UserAvatar,\n    RemoteFollow,\n    ModerationTools,\n    AccountActions,\n    ProgressButton,\n    FollowButton,\n    Select,\n    RichContent\n  },\n  methods: {\n    refetchRelationship () {\n      return this.$store.dispatch('fetchUserRelationship', this.user.id)\n    },\n    muteUser () {\n      this.$store.dispatch('muteUser', this.user.id)\n    },\n    unmuteUser () {\n      this.$store.dispatch('unmuteUser', this.user.id)\n    },\n    muteDomain () {\n      this.$store.dispatch('muteDomain', this.user.screen_name.split('@')[1])\n        .then(() => this.refetchRelationship())\n    },\n    unmuteDomain () {\n      this.$store.dispatch('unmuteDomain', this.user.screen_name.split('@')[1])\n        .then(() => this.refetchRelationship())\n    },\n    subscribeUser () {\n      return this.$store.dispatch('subscribeUser', this.user.id)\n    },\n    unsubscribeUser () {\n      return this.$store.dispatch('unsubscribeUser', this.user.id)\n    },\n    setProfileView (v) {\n      if (this.switcher) {\n        const store = this.$store\n        store.commit('setProfileView', { v })\n      }\n    },\n    linkClicked ({ target }) {\n      if (target.tagName === 'SPAN') {\n        target = target.parentNode\n      }\n      if (target.tagName === 'A') {\n        window.open(target.href, '_blank')\n      }\n    },\n    userProfileLink (user) {\n      return generateProfileLink(\n        user.id, user.screen_name,\n        this.$store.state.instance.restrictedNicknames\n      )\n    },\n    openProfileTab () {\n      this.$store.dispatch('openSettingsModalTab', 'profile')\n    },\n    zoomAvatar () {\n      const attachment = {\n        url: this.user.profile_image_url_original,\n        mimetype: 'image'\n      }\n      this.$store.dispatch('setMedia', [attachment])\n      this.$store.dispatch('setCurrentMedia', attachment)\n    },\n    mentionUser () {\n      this.$store.dispatch('openPostStatusModal', { replyTo: true, repliedUser: this.user })\n    }\n  }\n}\n","import { render } from \"./user_card.vue?vue&type=template&id=3cf2819d\"\nimport script from \"./user_card.js?vue&type=script&lang=js\"\nexport * from \"./user_card.js?vue&type=script&lang=js\"\n\nimport \"./user_card.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { invertLightness, brightness } from 'chromatism'\nimport { alphaBlend, mixrgb } from '../color_convert/color_convert.js'\n/* This is a definition of all layer combinations\n * each key is a topmost layer, each value represents layer underneath\n * this is essentially a simplified tree\n */\nexport const LAYERS = {\n  undelay: null, // root\n  topBar: null, // no transparency support\n  badge: null, //  no transparency support\n  profileTint: null, // doesn't matter\n  fg: null,\n  bg: 'underlay',\n  highlight: 'bg',\n  panel: 'bg',\n  popover: 'bg',\n  selectedMenu: 'popover',\n  btn: 'bg',\n  btnPanel: 'panel',\n  btnTopBar: 'topBar',\n  input: 'bg',\n  inputPanel: 'panel',\n  inputTopBar: 'topBar',\n  alert: 'bg',\n  alertPanel: 'panel',\n  poll: 'bg',\n  chatBg: 'underlay',\n  chatMessage: 'chatBg'\n}\n\n/* By default opacity slots have 1 as default opacity\n * this allows redefining it to something else\n */\nexport const DEFAULT_OPACITY = {\n  profileTint: 0.5,\n  alert: 0.5,\n  input: 0.5,\n  faint: 0.5,\n  underlay: 0.15,\n  alertPopup: 0.95\n}\n\n/**  SUBJECT TO CHANGE IN THE FUTURE, this is all beta\n * Color and opacity slots definitions. Each key represents a slot.\n *\n * Short-hands:\n * String beginning with `--` - value after dashes treated as sole\n *     dependency - i.e. `--value` equivalent to { depends: ['value']}\n * String beginning with `#` - value would be treated as solid color\n *     defined in hexadecimal representation (i.e. #FFFFFF) and will be\n *     used as default. `#FFFFFF` is equivalent to { default: '#FFFFFF'}\n *\n * Full definition:\n * @property {String[]} depends - color slot names this color depends ones.\n *   cyclic dependencies are supported to some extent but not recommended.\n * @property {String} [opacity] - opacity slot used by this color slot.\n *   opacity is inherited from parents. To break inheritance graph use null\n * @property {Number} [priority] - EXPERIMENTAL. used to pre-sort slots so\n *   that slots with higher priority come earlier\n * @property {Function(mod, ...colors)} [color] - function that will be\n *   used to determine the color. By default it just copies first color in\n *   dependency list.\n * @argument {Number} mod - `1` (light-on-dark) or `-1` (dark-on-light)\n *   depending on background color (for textColor)/given color.\n * @argument {...Object} deps - each argument after mod represents each\n *   color from `depends` array. All colors take user customizations into\n *   account and represented by { r, g, b } objects.\n * @returns {Object} resulting color, should be in { r, g, b } form\n *\n * @property {Boolean|String} [textColor] - true to mark color slot as text\n *   color. This enables automatic text color generation for the slot. Use\n *   'preserve' string if you don't want text color to fall back to\n *   black/white. Use 'bw' to only ever use black or white. This also makes\n *   following properties required:\n * @property {String} [layer] - which layer the text sit on top on - used\n *   to account for transparency in text color calculation\n *   layer is inherited from parents. To break inheritance graph use null\n * @property {String} [variant] - which color slot is background (same as\n *   above, used to account for transparency)\n */\nexport const SLOT_INHERITANCE = {\n  bg: {\n    depends: [],\n    opacity: 'bg',\n    priority: 1\n  },\n  wallpaper: {\n    depends: ['bg'],\n    color: (mod, bg) => brightness(-2 * mod, bg).rgb\n  },\n  fg: {\n    depends: [],\n    priority: 1\n  },\n  text: {\n    depends: [],\n    layer: 'bg',\n    opacity: null,\n    priority: 1\n  },\n  underlay: {\n    default: '#000000',\n    opacity: 'underlay'\n  },\n  link: {\n    depends: ['accent'],\n    priority: 1\n  },\n  accent: {\n    depends: ['link'],\n    priority: 1\n  },\n  faint: {\n    depends: ['text'],\n    opacity: 'faint'\n  },\n  faintLink: {\n    depends: ['link'],\n    opacity: 'faint'\n  },\n  postFaintLink: {\n    depends: ['postLink'],\n    opacity: 'faint'\n  },\n\n  cBlue: '#0000ff',\n  cRed: '#FF0000',\n  cGreen: '#00FF00',\n  cOrange: '#E3FF00',\n\n  profileBg: {\n    depends: ['bg'],\n    color: (mod, bg) => ({\n      r: Math.floor(bg.r * 0.53),\n      g: Math.floor(bg.g * 0.56),\n      b: Math.floor(bg.b * 0.59)\n    })\n  },\n  profileTint: {\n    depends: ['bg'],\n    layer: 'profileTint',\n    opacity: 'profileTint'\n  },\n\n  highlight: {\n    depends: ['bg'],\n    color: (mod, bg) => brightness(5 * mod, bg).rgb\n  },\n  highlightLightText: {\n    depends: ['lightText'],\n    layer: 'highlight',\n    textColor: true\n  },\n  highlightPostLink: {\n    depends: ['postLink'],\n    layer: 'highlight',\n    textColor: 'preserve'\n  },\n  highlightFaintText: {\n    depends: ['faint'],\n    layer: 'highlight',\n    textColor: true\n  },\n  highlightFaintLink: {\n    depends: ['faintLink'],\n    layer: 'highlight',\n    textColor: 'preserve'\n  },\n  highlightPostFaintLink: {\n    depends: ['postFaintLink'],\n    layer: 'highlight',\n    textColor: 'preserve'\n  },\n  highlightText: {\n    depends: ['text'],\n    layer: 'highlight',\n    textColor: true\n  },\n  highlightLink: {\n    depends: ['link'],\n    layer: 'highlight',\n    textColor: 'preserve'\n  },\n  highlightIcon: {\n    depends: ['highlight', 'highlightText'],\n    color: (mod, bg, text) => mixrgb(bg, text)\n  },\n\n  popover: {\n    depends: ['bg'],\n    opacity: 'popover'\n  },\n  popoverLightText: {\n    depends: ['lightText'],\n    layer: 'popover',\n    textColor: true\n  },\n  popoverPostLink: {\n    depends: ['postLink'],\n    layer: 'popover',\n    textColor: 'preserve'\n  },\n  popoverFaintText: {\n    depends: ['faint'],\n    layer: 'popover',\n    textColor: true\n  },\n  popoverFaintLink: {\n    depends: ['faintLink'],\n    layer: 'popover',\n    textColor: 'preserve'\n  },\n  popoverPostFaintLink: {\n    depends: ['postFaintLink'],\n    layer: 'popover',\n    textColor: 'preserve'\n  },\n  popoverText: {\n    depends: ['text'],\n    layer: 'popover',\n    textColor: true\n  },\n  popoverLink: {\n    depends: ['link'],\n    layer: 'popover',\n    textColor: 'preserve'\n  },\n  popoverIcon: {\n    depends: ['popover', 'popoverText'],\n    color: (mod, bg, text) => mixrgb(bg, text)\n  },\n\n  selectedPost: '--highlight',\n  selectedPostFaintText: {\n    depends: ['highlightFaintText'],\n    layer: 'highlight',\n    variant: 'selectedPost',\n    textColor: true\n  },\n  selectedPostLightText: {\n    depends: ['highlightLightText'],\n    layer: 'highlight',\n    variant: 'selectedPost',\n    textColor: true\n  },\n  selectedPostPostLink: {\n    depends: ['highlightPostLink'],\n    layer: 'highlight',\n    variant: 'selectedPost',\n    textColor: 'preserve'\n  },\n  selectedPostFaintLink: {\n    depends: ['highlightFaintLink'],\n    layer: 'highlight',\n    variant: 'selectedPost',\n    textColor: 'preserve'\n  },\n  selectedPostText: {\n    depends: ['highlightText'],\n    layer: 'highlight',\n    variant: 'selectedPost',\n    textColor: true\n  },\n  selectedPostLink: {\n    depends: ['highlightLink'],\n    layer: 'highlight',\n    variant: 'selectedPost',\n    textColor: 'preserve'\n  },\n  selectedPostIcon: {\n    depends: ['selectedPost', 'selectedPostText'],\n    color: (mod, bg, text) => mixrgb(bg, text)\n  },\n\n  selectedMenu: {\n    depends: ['bg'],\n    color: (mod, bg) => brightness(5 * mod, bg).rgb\n  },\n  selectedMenuLightText: {\n    depends: ['highlightLightText'],\n    layer: 'selectedMenu',\n    variant: 'selectedMenu',\n    textColor: true\n  },\n  selectedMenuFaintText: {\n    depends: ['highlightFaintText'],\n    layer: 'selectedMenu',\n    variant: 'selectedMenu',\n    textColor: true\n  },\n  selectedMenuFaintLink: {\n    depends: ['highlightFaintLink'],\n    layer: 'selectedMenu',\n    variant: 'selectedMenu',\n    textColor: 'preserve'\n  },\n  selectedMenuText: {\n    depends: ['highlightText'],\n    layer: 'selectedMenu',\n    variant: 'selectedMenu',\n    textColor: true\n  },\n  selectedMenuLink: {\n    depends: ['highlightLink'],\n    layer: 'selectedMenu',\n    variant: 'selectedMenu',\n    textColor: 'preserve'\n  },\n  selectedMenuIcon: {\n    depends: ['selectedMenu', 'selectedMenuText'],\n    color: (mod, bg, text) => mixrgb(bg, text)\n  },\n\n  selectedMenuPopover: {\n    depends: ['popover'],\n    color: (mod, bg) => brightness(5 * mod, bg).rgb\n  },\n  selectedMenuPopoverLightText: {\n    depends: ['selectedMenuLightText'],\n    layer: 'selectedMenuPopover',\n    variant: 'selectedMenuPopover',\n    textColor: true\n  },\n  selectedMenuPopoverFaintText: {\n    depends: ['selectedMenuFaintText'],\n    layer: 'selectedMenuPopover',\n    variant: 'selectedMenuPopover',\n    textColor: true\n  },\n  selectedMenuPopoverFaintLink: {\n    depends: ['selectedMenuFaintLink'],\n    layer: 'selectedMenuPopover',\n    variant: 'selectedMenuPopover',\n    textColor: 'preserve'\n  },\n  selectedMenuPopoverText: {\n    depends: ['selectedMenuText'],\n    layer: 'selectedMenuPopover',\n    variant: 'selectedMenuPopover',\n    textColor: true\n  },\n  selectedMenuPopoverLink: {\n    depends: ['selectedMenuLink'],\n    layer: 'selectedMenuPopover',\n    variant: 'selectedMenuPopover',\n    textColor: 'preserve'\n  },\n  selectedMenuPopoverIcon: {\n    depends: ['selectedMenuPopover', 'selectedMenuText'],\n    color: (mod, bg, text) => mixrgb(bg, text)\n  },\n\n  lightText: {\n    depends: ['text'],\n    layer: 'bg',\n    textColor: 'preserve',\n    color: (mod, text) => brightness(20 * mod, text).rgb\n  },\n\n  postLink: {\n    depends: ['link'],\n    layer: 'bg',\n    textColor: 'preserve'\n  },\n\n  postGreentext: {\n    depends: ['cGreen'],\n    layer: 'bg',\n    textColor: 'preserve'\n  },\n\n  postCyantext: {\n    depends: ['cBlue'],\n    layer: 'bg',\n    textColor: 'preserve'\n  },\n\n  border: {\n    depends: ['fg'],\n    opacity: 'border',\n    color: (mod, fg) => brightness(2 * mod, fg).rgb\n  },\n\n  poll: {\n    depends: ['accent', 'bg'],\n    copacity: 'poll',\n    color: (mod, accent, bg) => alphaBlend(accent, 0.4, bg)\n  },\n  pollText: {\n    depends: ['text'],\n    layer: 'poll',\n    textColor: true\n  },\n\n  icon: {\n    depends: ['bg', 'text'],\n    inheritsOpacity: false,\n    color: (mod, bg, text) => mixrgb(bg, text)\n  },\n\n  // Foreground\n  fgText: {\n    depends: ['text'],\n    layer: 'fg',\n    textColor: true\n  },\n  fgLink: {\n    depends: ['link'],\n    layer: 'fg',\n    textColor: 'preserve'\n  },\n\n  // Panel header\n  panel: {\n    depends: ['fg'],\n    opacity: 'panel'\n  },\n  panelText: {\n    depends: ['text'],\n    layer: 'panel',\n    textColor: true\n  },\n  panelFaint: {\n    depends: ['fgText'],\n    layer: 'panel',\n    opacity: 'faint',\n    textColor: true\n  },\n  panelLink: {\n    depends: ['fgLink'],\n    layer: 'panel',\n    textColor: 'preserve'\n  },\n\n  // Top bar\n  topBar: '--fg',\n  topBarText: {\n    depends: ['fgText'],\n    layer: 'topBar',\n    textColor: true\n  },\n  topBarLink: {\n    depends: ['fgLink'],\n    layer: 'topBar',\n    textColor: 'preserve'\n  },\n\n  // Tabs\n  tab: {\n    depends: ['btn']\n  },\n  tabText: {\n    depends: ['btnText'],\n    layer: 'btn',\n    textColor: true\n  },\n  tabActiveText: {\n    depends: ['text'],\n    layer: 'bg',\n    textColor: true\n  },\n\n  // Buttons\n  btn: {\n    depends: ['fg'],\n    variant: 'btn',\n    opacity: 'btn'\n  },\n  btnText: {\n    depends: ['fgText'],\n    layer: 'btn',\n    textColor: true\n  },\n  btnPanelText: {\n    depends: ['btnText'],\n    layer: 'btnPanel',\n    variant: 'btn',\n    textColor: true\n  },\n  btnTopBarText: {\n    depends: ['btnText'],\n    layer: 'btnTopBar',\n    variant: 'btn',\n    textColor: true\n  },\n\n  // Buttons: pressed\n  btnPressed: {\n    depends: ['btn'],\n    layer: 'btn'\n  },\n  btnPressedText: {\n    depends: ['btnText'],\n    layer: 'btn',\n    variant: 'btnPressed',\n    textColor: true\n  },\n  btnPressedPanel: {\n    depends: ['btnPressed'],\n    layer: 'btn'\n  },\n  btnPressedPanelText: {\n    depends: ['btnPanelText'],\n    layer: 'btnPanel',\n    variant: 'btnPressed',\n    textColor: true\n  },\n  btnPressedTopBar: {\n    depends: ['btnPressed'],\n    layer: 'btn'\n  },\n  btnPressedTopBarText: {\n    depends: ['btnTopBarText'],\n    layer: 'btnTopBar',\n    variant: 'btnPressed',\n    textColor: true\n  },\n\n  // Buttons: toggled\n  btnToggled: {\n    depends: ['btn'],\n    layer: 'btn',\n    color: (mod, btn) => brightness(mod * 20, btn).rgb\n  },\n  btnToggledText: {\n    depends: ['btnText'],\n    layer: 'btn',\n    variant: 'btnToggled',\n    textColor: true\n  },\n  btnToggledPanelText: {\n    depends: ['btnPanelText'],\n    layer: 'btnPanel',\n    variant: 'btnToggled',\n    textColor: true\n  },\n  btnToggledTopBarText: {\n    depends: ['btnTopBarText'],\n    layer: 'btnTopBar',\n    variant: 'btnToggled',\n    textColor: true\n  },\n\n  // Buttons: disabled\n  btnDisabled: {\n    depends: ['btn', 'bg'],\n    color: (mod, btn, bg) => alphaBlend(btn, 0.25, bg)\n  },\n  btnDisabledText: {\n    depends: ['btnText', 'btnDisabled'],\n    layer: 'btn',\n    variant: 'btnDisabled',\n    color: (mod, text, btn) => alphaBlend(text, 0.25, btn)\n  },\n  btnDisabledPanelText: {\n    depends: ['btnPanelText', 'btnDisabled'],\n    layer: 'btnPanel',\n    variant: 'btnDisabled',\n    color: (mod, text, btn) => alphaBlend(text, 0.25, btn)\n  },\n  btnDisabledTopBarText: {\n    depends: ['btnTopBarText', 'btnDisabled'],\n    layer: 'btnTopBar',\n    variant: 'btnDisabled',\n    color: (mod, text, btn) => alphaBlend(text, 0.25, btn)\n  },\n\n  // Input fields\n  input: {\n    depends: ['fg'],\n    opacity: 'input'\n  },\n  inputText: {\n    depends: ['text'],\n    layer: 'input',\n    textColor: true\n  },\n  inputPanelText: {\n    depends: ['panelText'],\n    layer: 'inputPanel',\n    variant: 'input',\n    textColor: true\n  },\n  inputTopbarText: {\n    depends: ['topBarText'],\n    layer: 'inputTopBar',\n    variant: 'input',\n    textColor: true\n  },\n\n  alertError: {\n    depends: ['cRed'],\n    opacity: 'alert'\n  },\n  alertErrorText: {\n    depends: ['text'],\n    layer: 'alert',\n    variant: 'alertError',\n    textColor: true\n  },\n  alertErrorPanelText: {\n    depends: ['panelText'],\n    layer: 'alertPanel',\n    variant: 'alertError',\n    textColor: true\n  },\n\n  alertWarning: {\n    depends: ['cOrange'],\n    opacity: 'alert'\n  },\n  alertWarningText: {\n    depends: ['text'],\n    layer: 'alert',\n    variant: 'alertWarning',\n    textColor: true\n  },\n  alertWarningPanelText: {\n    depends: ['panelText'],\n    layer: 'alertPanel',\n    variant: 'alertWarning',\n    textColor: true\n  },\n\n  alertSuccess: {\n    depends: ['cGreen'],\n    opacity: 'alert'\n  },\n  alertSuccessText: {\n    depends: ['text'],\n    layer: 'alert',\n    variant: 'alertSuccess',\n    textColor: true\n  },\n  alertSuccessPanelText: {\n    depends: ['panelText'],\n    layer: 'alertPanel',\n    variant: 'alertSuccess',\n    textColor: true\n  },\n\n  alertNeutral: {\n    depends: ['text'],\n    opacity: 'alert'\n  },\n  alertNeutralText: {\n    depends: ['text'],\n    layer: 'alert',\n    variant: 'alertNeutral',\n    color: (mod, text) => invertLightness(text).rgb,\n    textColor: true\n  },\n  alertNeutralPanelText: {\n    depends: ['panelText'],\n    layer: 'alertPanel',\n    variant: 'alertNeutral',\n    textColor: true\n  },\n\n  alertPopupError: {\n    depends: ['alertError'],\n    opacity: 'alertPopup'\n  },\n  alertPopupErrorText: {\n    depends: ['alertErrorText'],\n    layer: 'popover',\n    variant: 'alertPopupError',\n    textColor: true\n  },\n\n  alertPopupWarning: {\n    depends: ['alertWarning'],\n    opacity: 'alertPopup'\n  },\n  alertPopupWarningText: {\n    depends: ['alertWarningText'],\n    layer: 'popover',\n    variant: 'alertPopupWarning',\n    textColor: true\n  },\n\n  alertPopupSuccess: {\n    depends: ['alertSuccess'],\n    opacity: 'alertPopup'\n  },\n  alertPopupSuccessText: {\n    depends: ['alertSuccessText'],\n    layer: 'popover',\n    variant: 'alertPopupSuccess',\n    textColor: true\n  },\n\n  alertPopupNeutral: {\n    depends: ['alertNeutral'],\n    opacity: 'alertPopup'\n  },\n  alertPopupNeutralText: {\n    depends: ['alertNeutralText'],\n    layer: 'popover',\n    variant: 'alertPopupNeutral',\n    textColor: true\n  },\n\n  badgeNotification: '--cRed',\n  badgeNotificationText: {\n    depends: ['text', 'badgeNotification'],\n    layer: 'badge',\n    variant: 'badgeNotification',\n    textColor: 'bw'\n  },\n\n  chatBg: {\n    depends: ['bg']\n  },\n\n  chatMessageIncomingBg: {\n    depends: ['chatBg']\n  },\n\n  chatMessageIncomingText: {\n    depends: ['text'],\n    layer: 'chatMessage',\n    variant: 'chatMessageIncomingBg',\n    textColor: true\n  },\n\n  chatMessageIncomingLink: {\n    depends: ['link'],\n    layer: 'chatMessage',\n    variant: 'chatMessageIncomingBg',\n    textColor: 'preserve'\n  },\n\n  chatMessageIncomingBorder: {\n    depends: ['border'],\n    opacity: 'border',\n    color: (mod, border) => brightness(2 * mod, border).rgb\n  },\n\n  chatMessageOutgoingBg: {\n    depends: ['chatMessageIncomingBg'],\n    color: (mod, chatMessage) => brightness(5 * mod, chatMessage).rgb\n  },\n\n  chatMessageOutgoingText: {\n    depends: ['text'],\n    layer: 'chatMessage',\n    variant: 'chatMessageOutgoingBg',\n    textColor: true\n  },\n\n  chatMessageOutgoingLink: {\n    depends: ['link'],\n    layer: 'chatMessage',\n    variant: 'chatMessageOutgoingBg',\n    textColor: 'preserve'\n  },\n\n  chatMessageOutgoingBorder: {\n    depends: ['chatMessageOutgoingBg'],\n    opacity: 'border',\n    color: (mod, border) => brightness(2 * mod, border).rgb\n  }\n}\n","import languagesObject from '../../i18n/messages'\nimport ISO6391 from 'iso-639-1'\nimport _ from 'lodash'\n\nconst specialLanguageCodes = {\n  'ja_easy': 'ja',\n  'zh_Hant': 'zh-HANT',\n  'zh': 'zh-Hans'\n}\n\nconst internalToBrowserLocale = code => specialLanguageCodes[code] || code\n\nconst internalToBackendLocale = code => internalToBrowserLocale(code).replace('_', '-')\n\nconst getLanguageName = (code) => {\n  const specialLanguageNames = {\n    'ja_easy': 'やさしいにほんご',\n    'zh': '简体中文',\n    'zh_Hant': '繁體中文'\n  }\n  const languageName = specialLanguageNames[code] || ISO6391.getNativeName(code)\n  const browserLocale = internalToBrowserLocale(code)\n  return languageName.charAt(0).toLocaleUpperCase(browserLocale) + languageName.slice(1)\n}\n\nconst languages = _.map(languagesObject.languages, (code) => ({ code: code, name: getLanguageName(code) })).sort((a, b) => a.name.localeCompare(b.name))\n\nconst localeService = {\n  internalToBrowserLocale,\n  internalToBackendLocale,\n  languages,\n  getLanguageName\n}\n\nexport default localeService\n","import { convert } from 'chromatism'\nimport { rgb2hex, hex2rgb, rgba2css, getCssColor, relativeLuminance } from '../color_convert/color_convert.js'\nimport { getColors, computeDynamicColor, getOpacitySlot } from '../theme_data/theme_data.service.js'\n\nexport const applyTheme = (input) => {\n  const { rules } = generatePreset(input)\n  const head = document.head\n  const body = document.body\n  body.classList.add('hidden')\n\n  const styleEl = document.createElement('style')\n  head.appendChild(styleEl)\n  const styleSheet = styleEl.sheet\n\n  styleSheet.toString()\n  styleSheet.insertRule(`:root { ${rules.radii} }`, 'index-max')\n  styleSheet.insertRule(`:root { ${rules.colors} }`, 'index-max')\n  styleSheet.insertRule(`:root { ${rules.shadows} }`, 'index-max')\n  styleSheet.insertRule(`:root { ${rules.fonts} }`, 'index-max')\n  body.classList.remove('hidden')\n}\n\nexport const getCssShadow = (input, usesDropShadow) => {\n  if (input.length === 0) {\n    return 'none'\n  }\n\n  return input\n    .filter(_ => usesDropShadow ? _.inset : _)\n    .map((shad) => [\n      shad.x,\n      shad.y,\n      shad.blur,\n      shad.spread\n    ].map(_ => _ + 'px').concat([\n      getCssColor(shad.color, shad.alpha),\n      shad.inset ? 'inset' : ''\n    ]).join(' ')).join(', ')\n}\n\nconst getCssShadowFilter = (input) => {\n  if (input.length === 0) {\n    return 'none'\n  }\n\n  return input\n  // drop-shadow doesn't support inset or spread\n    .filter((shad) => !shad.inset && Number(shad.spread) === 0)\n    .map((shad) => [\n      shad.x,\n      shad.y,\n      // drop-shadow's blur is twice as strong compared to box-shadow\n      shad.blur / 2\n    ].map(_ => _ + 'px').concat([\n      getCssColor(shad.color, shad.alpha)\n    ]).join(' '))\n    .map(_ => `drop-shadow(${_})`)\n    .join(' ')\n}\n\nexport const generateColors = (themeData) => {\n  const sourceColors = !themeData.themeEngineVersion\n    ? colors2to3(themeData.colors || themeData)\n    : themeData.colors || themeData\n\n  const { colors, opacity } = getColors(sourceColors, themeData.opacity || {})\n\n  const htmlColors = Object.entries(colors)\n    .reduce((acc, [k, v]) => {\n      if (!v) return acc\n      acc.solid[k] = rgb2hex(v)\n      acc.complete[k] = typeof v.a === 'undefined' ? rgb2hex(v) : rgba2css(v)\n      return acc\n    }, { complete: {}, solid: {} })\n  return {\n    rules: {\n      colors: Object.entries(htmlColors.complete)\n        .filter(([k, v]) => v)\n        .map(([k, v]) => `--${k}: ${v}`)\n        .join(';')\n    },\n    theme: {\n      colors: htmlColors.solid,\n      opacity\n    }\n  }\n}\n\nexport const generateRadii = (input) => {\n  let inputRadii = input.radii || {}\n  // v1 -> v2\n  if (typeof input.btnRadius !== 'undefined') {\n    inputRadii = Object\n      .entries(input)\n      .filter(([k, v]) => k.endsWith('Radius'))\n      .reduce((acc, e) => { acc[e[0].split('Radius')[0]] = e[1]; return acc }, {})\n  }\n  const radii = Object.entries(inputRadii).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n    acc[k] = v\n    return acc\n  }, {\n    btn: 4,\n    input: 4,\n    checkbox: 2,\n    panel: 10,\n    avatar: 5,\n    avatarAlt: 50,\n    tooltip: 2,\n    attachment: 5,\n    chatMessage: inputRadii.panel\n  })\n\n  return {\n    rules: {\n      radii: Object.entries(radii).filter(([k, v]) => v).map(([k, v]) => `--${k}Radius: ${v}px`).join(';')\n    },\n    theme: {\n      radii\n    }\n  }\n}\n\nexport const generateFonts = (input) => {\n  const fonts = Object.entries(input.fonts || {}).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n    acc[k] = Object.entries(v).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n      acc[k] = v\n      return acc\n    }, acc[k])\n    return acc\n  }, {\n    interface: {\n      family: 'sans-serif'\n    },\n    input: {\n      family: 'inherit'\n    },\n    post: {\n      family: 'inherit'\n    },\n    postCode: {\n      family: 'monospace'\n    }\n  })\n\n  return {\n    rules: {\n      fonts: Object\n        .entries(fonts)\n        .filter(([k, v]) => v)\n        .map(([k, v]) => `--${k}Font: ${v.family}`).join(';')\n    },\n    theme: {\n      fonts\n    }\n  }\n}\n\nconst border = (top, shadow) => ({\n  x: 0,\n  y: top ? 1 : -1,\n  blur: 0,\n  spread: 0,\n  color: shadow ? '#000000' : '#FFFFFF',\n  alpha: 0.2,\n  inset: true\n})\nconst buttonInsetFakeBorders = [border(true, false), border(false, true)]\nconst inputInsetFakeBorders = [border(true, true), border(false, false)]\nconst hoverGlow = {\n  x: 0,\n  y: 0,\n  blur: 4,\n  spread: 0,\n  color: '--faint',\n  alpha: 1\n}\n\nexport const DEFAULT_SHADOWS = {\n  panel: [{\n    x: 1,\n    y: 1,\n    blur: 4,\n    spread: 0,\n    color: '#000000',\n    alpha: 0.6\n  }],\n  topBar: [{\n    x: 0,\n    y: 0,\n    blur: 4,\n    spread: 0,\n    color: '#000000',\n    alpha: 0.6\n  }],\n  popup: [{\n    x: 2,\n    y: 2,\n    blur: 3,\n    spread: 0,\n    color: '#000000',\n    alpha: 0.5\n  }],\n  avatar: [{\n    x: 0,\n    y: 1,\n    blur: 8,\n    spread: 0,\n    color: '#000000',\n    alpha: 0.7\n  }],\n  avatarStatus: [],\n  panelHeader: [],\n  button: [{\n    x: 0,\n    y: 0,\n    blur: 2,\n    spread: 0,\n    color: '#000000',\n    alpha: 1\n  }, ...buttonInsetFakeBorders],\n  buttonHover: [hoverGlow, ...buttonInsetFakeBorders],\n  buttonPressed: [hoverGlow, ...inputInsetFakeBorders],\n  input: [...inputInsetFakeBorders, {\n    x: 0,\n    y: 0,\n    blur: 2,\n    inset: true,\n    spread: 0,\n    color: '#000000',\n    alpha: 1\n  }]\n}\nexport const generateShadows = (input, colors) => {\n  // TODO this is a small hack for `mod` to work with shadows\n  // this is used to get the \"context\" of shadow, i.e. for `mod` properly depend on background color of element\n  const hackContextDict = {\n    button: 'btn',\n    panel: 'bg',\n    top: 'topBar',\n    popup: 'popover',\n    avatar: 'bg',\n    panelHeader: 'panel',\n    input: 'input'\n  }\n\n  const cleanInputShadows = Object.fromEntries(\n    Object.entries(input.shadows || {})\n      .map(([name, shadowSlot]) => [\n        name,\n        // defaulting color to black to avoid potential problems\n        shadowSlot.map(shadowDef => ({ color: '#000000', ...shadowDef }))\n      ])\n  )\n  const inputShadows = cleanInputShadows && !input.themeEngineVersion\n    ? shadows2to3(cleanInputShadows, input.opacity)\n    : cleanInputShadows || {}\n  const shadows = Object.entries({\n    ...DEFAULT_SHADOWS,\n    ...inputShadows\n  }).reduce((shadowsAcc, [slotName, shadowDefs]) => {\n    const slotFirstWord = slotName.replace(/[A-Z].*$/, '')\n    const colorSlotName = hackContextDict[slotFirstWord]\n    const isLightOnDark = relativeLuminance(convert(colors[colorSlotName]).rgb) < 0.5\n    const mod = isLightOnDark ? 1 : -1\n    const newShadow = shadowDefs.reduce((shadowAcc, def) => [\n      ...shadowAcc,\n      {\n        ...def,\n        color: rgb2hex(computeDynamicColor(\n          def.color,\n          (variableSlot) => convert(colors[variableSlot]).rgb,\n          mod\n        ))\n      }\n    ], [])\n    return { ...shadowsAcc, [slotName]: newShadow }\n  }, {})\n\n  return {\n    rules: {\n      shadows: Object\n        .entries(shadows)\n      // TODO for v2.2: if shadow doesn't have non-inset shadows with spread > 0 - optionally\n      // convert all non-inset shadows into filter: drop-shadow() to boost performance\n        .map(([k, v]) => [\n          `--${k}Shadow: ${getCssShadow(v)}`,\n          `--${k}ShadowFilter: ${getCssShadowFilter(v)}`,\n          `--${k}ShadowInset: ${getCssShadow(v, true)}`\n        ].join(';'))\n        .join(';')\n    },\n    theme: {\n      shadows\n    }\n  }\n}\n\nexport const composePreset = (colors, radii, shadows, fonts) => {\n  return {\n    rules: {\n      ...shadows.rules,\n      ...colors.rules,\n      ...radii.rules,\n      ...fonts.rules\n    },\n    theme: {\n      ...shadows.theme,\n      ...colors.theme,\n      ...radii.theme,\n      ...fonts.theme\n    }\n  }\n}\n\nexport const generatePreset = (input) => {\n  const colors = generateColors(input)\n  return composePreset(\n    colors,\n    generateRadii(input),\n    generateShadows(input, colors.theme.colors, colors.mod),\n    generateFonts(input)\n  )\n}\n\nexport const getThemes = () => {\n  const cache = 'no-store'\n\n  return window.fetch('/static/styles.json', { cache })\n    .then((data) => data.json())\n    .then((themes) => {\n      return Object.entries(themes).map(([k, v]) => {\n        let promise = null\n        if (typeof v === 'object') {\n          promise = Promise.resolve(v)\n        } else if (typeof v === 'string') {\n          promise = window.fetch(v, { cache })\n            .then((data) => data.json())\n            .catch((e) => {\n              console.error(e)\n              return null\n            })\n        }\n        return [k, promise]\n      })\n    })\n    .then((promises) => {\n      return promises\n        .reduce((acc, [k, v]) => {\n          acc[k] = v\n          return acc\n        }, {})\n    })\n}\nexport const colors2to3 = (colors) => {\n  return Object.entries(colors).reduce((acc, [slotName, color]) => {\n    const btnPositions = ['', 'Panel', 'TopBar']\n    switch (slotName) {\n      case 'lightBg':\n        return { ...acc, highlight: color }\n      case 'btnText':\n        return {\n          ...acc,\n          ...btnPositions\n            .reduce(\n              (statePositionAcc, position) =>\n                ({ ...statePositionAcc, ['btn' + position + 'Text']: color })\n              , {}\n            )\n        }\n      default:\n        return { ...acc, [slotName]: color }\n    }\n  }, {})\n}\n\n/**\n * This handles compatibility issues when importing v2 theme's shadows to current format\n *\n * Back in v2 shadows allowed you to use dynamic colors however those used pure CSS3 variables\n */\nexport const shadows2to3 = (shadows, opacity) => {\n  return Object.entries(shadows).reduce((shadowsAcc, [slotName, shadowDefs]) => {\n    const isDynamic = ({ color = '#000000' }) => color.startsWith('--')\n    const getOpacity = ({ color }) => opacity[getOpacitySlot(color.substring(2).split(',')[0])]\n    const newShadow = shadowDefs.reduce((shadowAcc, def) => [\n      ...shadowAcc,\n      {\n        ...def,\n        alpha: isDynamic(def) ? getOpacity(def) || 1 : def.alpha\n      }\n    ], [])\n    return { ...shadowsAcc, [slotName]: newShadow }\n  }, {})\n}\n\nexport const getPreset = (val) => {\n  return getThemes()\n    .then((themes) => themes[val] ? themes[val] : themes['pleroma-dark'])\n    .then((theme) => {\n      const isV1 = Array.isArray(theme)\n      const data = isV1 ? {} : theme.theme\n\n      if (isV1) {\n        const bg = hex2rgb(theme[1])\n        const fg = hex2rgb(theme[2])\n        const text = hex2rgb(theme[3])\n        const link = hex2rgb(theme[4])\n\n        const cRed = hex2rgb(theme[5] || '#FF0000')\n        const cGreen = hex2rgb(theme[6] || '#00FF00')\n        const cBlue = hex2rgb(theme[7] || '#0000FF')\n        const cOrange = hex2rgb(theme[8] || '#E3FF00')\n\n        data.colors = { bg, fg, text, link, cRed, cBlue, cGreen, cOrange }\n      }\n\n      return { theme: data, source: theme.source }\n    })\n}\n\nexport const setPreset = (val) => getPreset(val).then(data => applyTheme(data.theme))\n","\n// promiseInterval - replacement for setInterval for promises, starts counting\n// the interval only after a promise is done instead of immediately.\n// - promiseCall is a function that returns a promise, it's called the first\n// time after the first interval.\n// - interval is the interval delay in ms.\n\nexport const promiseInterval = (promiseCall, interval) => {\n  let stopped = false\n  let timeout = null\n\n  const func = () => {\n    const promise = promiseCall()\n    // something unexpected happened and promiseCall did not\n    // return a promise, abort the loop.\n    if (!(promise && promise.finally)) {\n      console.warn('promiseInterval: promise call did not return a promise, stopping interval.')\n      return\n    }\n    promise.finally(() => {\n      if (stopped) return\n      timeout = window.setTimeout(func, interval)\n    })\n  }\n\n  const stopFetcher = () => {\n    stopped = true\n    window.clearTimeout(timeout)\n  }\n\n  timeout = window.setTimeout(func, interval)\n\n  return { stop: stopFetcher }\n}\n","<template>\n  <div\n    class=\"StatusContent\"\n    :class=\"{ '-compact': compact }\"\n  >\n    <slot name=\"header\" />\n    <StatusBody\n      :status=\"status\"\n      :compact=\"compact\"\n      :single-line=\"singleLine\"\n      :showing-tall=\"showingTall\"\n      :expanding-subject=\"expandingSubject\"\n      :showing-long-subject=\"showingLongSubject\"\n      :toggle-showing-tall=\"toggleShowingTall\"\n      :toggle-expanding-subject=\"toggleExpandingSubject\"\n      :toggle-showing-long-subject=\"toggleShowingLongSubject\"\n      @parseReady=\"$emit('parseReady', $event)\"\n    >\n      <div v-if=\"status.poll && status.poll.options && !compact\">\n        <Poll\n          :base-poll=\"status.poll\"\n          :emoji=\"status.emojis\"\n        />\n      </div>\n\n      <div v-else-if=\"status.poll && status.poll.options && compact\">\n        <FAIcon\n          icon=\"poll-h\"\n          size=\"2x\"\n        />\n      </div>\n\n      <gallery\n        v-if=\"status.attachments.length !== 0\"\n        class=\"attachments media-body\"\n        :nsfw=\"nsfwClickthrough\"\n        :attachments=\"status.attachments\"\n        :limit=\"compact ? 1 : 0\"\n        :size=\"attachmentSize\"\n        @play=\"$emit('mediaplay', attachment.id)\"\n        @pause=\"$emit('mediapause', attachment.id)\"\n      />\n\n      <div\n        v-if=\"status.card && !noHeading && !compact\"\n        class=\"link-preview media-body\"\n      >\n        <link-preview\n          :card=\"status.card\"\n          :size=\"attachmentSize\"\n          :nsfw=\"nsfwClickthrough\"\n        />\n      </div>\n    </StatusBody>\n    <slot name=\"footer\" />\n  </div>\n</template>\n\n<script src=\"./status_content.js\" ></script>\n<style lang=\"scss\">\n.StatusContent {\n  flex: 1;\n  min-width: 0;\n\n  img, video {\n    &.emoji {\n      width: 50px;\n      height: 50px;\n    }\n  }\n}\n</style>\n","<template>\n  <div\n    class=\"poll\"\n    :class=\"containerClass\"\n  >\n    <div\n      v-for=\"(option, index) in options\"\n      :key=\"index\"\n      class=\"poll-option\"\n    >\n      <div\n        v-if=\"showResults\"\n        :title=\"resultTitle(option)\"\n        class=\"option-result\"\n      >\n        <div class=\"option-result-label\">\n          <span class=\"result-percentage\">\n            {{ percentageForOption(option.votes_count) }}%\n          </span>\n          <RichContent\n            :html=\"option.title_html\"\n            :handle-links=\"false\"\n            :emoji=\"emoji\"\n          />\n        </div>\n        <div\n          class=\"result-fill\"\n          :style=\"{ 'width': `${percentageForOption(option.votes_count)}%` }\"\n        />\n      </div>\n      <div\n        v-else\n        @click=\"activateOption(index)\"\n      >\n        <input\n          v-if=\"poll.multiple\"\n          type=\"checkbox\"\n          :disabled=\"loading\"\n          :value=\"index\"\n        >\n        <input\n          v-else\n          type=\"radio\"\n          :disabled=\"loading\"\n          :value=\"index\"\n        >\n        <label class=\"option-vote\">\n          <RichContent\n            :html=\"option.title_html\"\n            :handle-links=\"false\"\n            :emoji=\"emoji\"\n          />\n        </label>\n      </div>\n    </div>\n    <div class=\"footer faint\">\n      <button\n        v-if=\"!showResults\"\n        class=\"btn button-default poll-vote-button\"\n        type=\"button\"\n        :disabled=\"isDisabled\"\n        @click=\"vote\"\n      >\n        {{ $t('polls.vote') }}\n      </button>\n      <div class=\"total\">\n        <template v-if=\"typeof poll.voters_count === 'number'\">\n          {{ $tc(\"polls.people_voted_count\", poll.voters_count, { count: poll.voters_count }) }}&nbsp;·&nbsp;\n        </template>\n        <template v-else>\n          {{ $tc(\"polls.votes_count\", poll.votes_count, { count: poll.votes_count }) }}&nbsp;·&nbsp;\n        </template>\n      </div>\n      <span>\n        <i18n-t\n          scope=\"global\"\n          :keypath=\"expired ? 'polls.expired' : 'polls.expires_in'\"\n        >\n          <Timeago\n            :time=\"expiresAt\"\n            :auto-update=\"60\"\n            :now-threshold=\"0\"\n          />\n        </i18n-t>\n      </span>\n    </div>\n  </div>\n</template>\n\n<script src=\"./poll.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.poll {\n  .votes {\n    display: flex;\n    flex-direction: column;\n    margin: 0 0 0.5em;\n  }\n  .poll-option {\n    margin: 0.75em 0.5em;\n  }\n  .option-result {\n    height: 100%;\n    display: flex;\n    flex-direction: row;\n    position: relative;\n    color: $fallback--lightText;\n    color: var(--lightText, $fallback--lightText);\n  }\n  .option-result-label {\n    display: flex;\n    align-items: center;\n    padding: 0.1em 0.25em;\n    z-index: 1;\n    word-break: break-word;\n  }\n  .result-percentage {\n    width: 3.5em;\n    flex-shrink: 0;\n  }\n  .result-fill {\n    height: 100%;\n    position: absolute;\n    color: $fallback--text;\n    color: var(--pollText, $fallback--text);\n    background-color: $fallback--lightBg;\n    background-color: var(--poll, $fallback--lightBg);\n    border-radius: $fallback--panelRadius;\n    border-radius: var(--panelRadius, $fallback--panelRadius);\n    top: 0;\n    left: 0;\n    transition: width 0.5s;\n  }\n  .option-vote {\n    display: flex;\n    align-items: center;\n  }\n  input {\n    width: 3.5em;\n  }\n  .footer {\n    display: flex;\n    align-items: center;\n  }\n  &.loading * {\n    cursor: progress;\n  }\n  .poll-vote-button {\n    padding: 0 0.5em;\n    margin-right: 0.5em;\n  }\n}\n</style>\n","import Timeago from 'components/timeago/timeago.vue'\nimport RichContent from 'components/rich_content/rich_content.jsx'\nimport { forEach, map } from 'lodash'\n\nexport default {\n  name: 'Poll',\n  props: ['basePoll', 'emoji'],\n  components: {\n    Timeago,\n    RichContent\n  },\n  data () {\n    return {\n      loading: false,\n      choices: []\n    }\n  },\n  created () {\n    if (!this.$store.state.polls.pollsObject[this.pollId]) {\n      this.$store.dispatch('mergeOrAddPoll', this.basePoll)\n    }\n    this.$store.dispatch('trackPoll', this.pollId)\n  },\n  unmounted () {\n    this.$store.dispatch('untrackPoll', this.pollId)\n  },\n  computed: {\n    pollId () {\n      return this.basePoll.id\n    },\n    poll () {\n      const storePoll = this.$store.state.polls.pollsObject[this.pollId]\n      return storePoll || {}\n    },\n    options () {\n      return (this.poll && this.poll.options) || []\n    },\n    expiresAt () {\n      return (this.poll && this.poll.expires_at) || 0\n    },\n    expired () {\n      return (this.poll && this.poll.expired) || false\n    },\n    loggedIn () {\n      return this.$store.state.users.currentUser\n    },\n    showResults () {\n      return this.poll.voted || this.expired || !this.loggedIn\n    },\n    totalVotesCount () {\n      return this.poll.votes_count\n    },\n    containerClass () {\n      return {\n        loading: this.loading\n      }\n    },\n    choiceIndices () {\n      // Convert array of booleans into an array of indices of the\n      // items that were 'true', so [true, false, false, true] becomes\n      // [0, 3].\n      return this.choices\n        .map((entry, index) => entry && index)\n        .filter(value => typeof value === 'number')\n    },\n    isDisabled () {\n      const noChoice = this.choiceIndices.length === 0\n      return this.loading || noChoice\n    }\n  },\n  methods: {\n    percentageForOption (count) {\n      return this.totalVotesCount === 0 ? 0 : Math.round(count / this.totalVotesCount * 100)\n    },\n    resultTitle (option) {\n      return `${option.votes_count}/${this.totalVotesCount} ${this.$t('polls.votes')}`\n    },\n    fetchPoll () {\n      this.$store.dispatch('refreshPoll', { id: this.statusId, pollId: this.poll.id })\n    },\n    activateOption (index) {\n      // forgive me father: doing checking the radio/checkboxes\n      // in code because of customized input elements need either\n      // a) an extra element for the actual graphic, or b) use a\n      // pseudo element for the label. We use b) which mandates\n      // using \"for\" and \"id\" matching which isn't nice when the\n      // same poll appears multiple times on the site (notifs and\n      // timeline for example). With code we can make sure it just\n      // works without altering the pseudo element implementation.\n      const allElements = this.$el.querySelectorAll('input')\n      const clickedElement = this.$el.querySelector(`input[value=\"${index}\"]`)\n      if (this.poll.multiple) {\n        // Checkboxes, toggle only the clicked one\n        clickedElement.checked = !clickedElement.checked\n      } else {\n        // Radio button, uncheck everything and check the clicked one\n        forEach(allElements, element => { element.checked = false })\n        clickedElement.checked = true\n      }\n      this.choices = map(allElements, e => e.checked)\n    },\n    optionId (index) {\n      return `poll${this.poll.id}-${index}`\n    },\n    vote () {\n      if (this.choiceIndices.length === 0) return\n      this.loading = true\n      this.$store.dispatch(\n        'votePoll',\n        { id: this.statusId, pollId: this.poll.id, choices: this.choiceIndices }\n      ).then(poll => {\n        this.loading = false\n      })\n    }\n  }\n}\n","import { render } from \"./poll.vue?vue&type=template&id=5e9dea28\"\nimport script from \"./poll.js?vue&type=script&lang=js\"\nexport * from \"./poll.js?vue&type=script&lang=js\"\n\nimport \"./poll.vue?vue&type=style&index=0&id=5e9dea28&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    class=\"StatusBody\"\n    :class=\"{ '-compact': compact }\"\n  >\n    <div class=\"body\">\n      <div\n        v-if=\"status.summary_raw_html\"\n        class=\"summary-wrapper\"\n        :class=\"{ '-tall': (longSubject && !showingLongSubject) }\"\n      >\n        <RichContent\n          class=\"media-body summary\"\n          :html=\"status.summary_raw_html\"\n          :emoji=\"status.emojis\"\n        />\n        <button\n          v-show=\"longSubject && showingLongSubject\"\n          class=\"button-unstyled -link tall-subject-hider\"\n          @click.prevent=\"toggleShowingLongSubject\"\n        >\n          {{ $t(\"status.hide_full_subject\") }}\n        </button>\n        <button\n          v-show=\"longSubject && !showingLongSubject\"\n          class=\"button-unstyled -link tall-subject-hider\"\n          @click.prevent=\"toggleShowingLongSubject\"\n        >\n          {{ $t(\"status.show_full_subject\") }}\n        </button>\n      </div>\n      <div\n        :class=\"{'-tall-status': hideTallStatus}\"\n        class=\"text-wrapper\"\n      >\n        <button\n          v-show=\"hideTallStatus\"\n          class=\"button-unstyled -link tall-status-hider\"\n          :class=\"{ '-focused': focused }\"\n          @click.prevent=\"toggleShowMore\"\n        >\n          {{ $t(\"general.show_more\") }}\n        </button>\n        <div\n          v-if=\"!hideSubjectStatus && !(singleLine && status.summary_raw_html)\"\n        >\n          <MFMContent\n            v-if=\"renderMisskeyMarkdown && status.mfm_content\"\n            class=\"RichContent text media-body mfm-post-content\"\n            :status=\"status\"\n          />\n          <RichContent\n            v-else\n            :class=\"{ '-single-line': singleLine }\"\n            class=\"text media-body\"\n            :html=\"status.raw_html\"\n            :emoji=\"status.emojis\"\n            :handle-links=\"true\"\n            :greentext=\"mergedConfig.greentext\"\n            :attentions=\"status.attentions\"\n            @parseReady=\"onParseReady\"\n          />\n        </div>\n        <button\n          v-show=\"hideSubjectStatus\"\n          class=\"button-unstyled -link cw-status-hider\"\n          @click.prevent=\"toggleShowMore\"\n        >\n          {{ $t(\"status.show_content\") }}\n          <FAIcon\n            v-if=\"attachmentTypes.includes('image')\"\n            icon=\"image\"\n          />\n          <FAIcon\n            v-if=\"attachmentTypes.includes('video')\"\n            icon=\"video\"\n          />\n          <FAIcon\n            v-if=\"attachmentTypes.includes('audio')\"\n            icon=\"music\"\n          />\n          <FAIcon\n            v-if=\"attachmentTypes.includes('unknown')\"\n            icon=\"file\"\n          />\n          <FAIcon\n            v-if=\"status.poll && status.poll.options\"\n            icon=\"poll-h\"\n          />\n          <FAIcon\n            v-if=\"status.card\"\n            icon=\"link\"\n          />\n        </button>\n        <button\n          v-show=\"showingMore && !fullContent\"\n          class=\"button-unstyled -link status-unhider\"\n          @click.prevent=\"toggleShowMore\"\n        >\n          {{ tallStatus ? $t(\"general.show_less\") : $t(\"status.hide_content\") }}\n        </button>\n      </div>\n    </div>\n    <slot v-if=\"!hideSubjectStatus\" />\n  </div>\n</template>\n<script src=\"./status_body.js\" ></script>\n<style lang=\"scss\" src=\"./status_body.scss\" />\n","import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { mapGetters, mapState } from 'vuex'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faAt\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faAt\n)\n\nconst MentionLink = {\n  name: 'MentionLink',\n  components: {\n    UserAvatar\n  },\n  props: {\n    url: {\n      required: true,\n      type: String\n    },\n    content: {\n      required: true,\n      type: String\n    },\n    userId: {\n      required: false,\n      type: String\n    },\n    userScreenName: {\n      required: false,\n      type: String\n    }\n  },\n  methods: {\n    onClick () {\n      const link = generateProfileLink(\n        this.userId || this.user.id,\n        this.userScreenName || this.user.screen_name\n      )\n      this.$router.push(link)\n    }\n  },\n  computed: {\n    user () {\n      return this.url && this.$store && this.$store.getters.findUserByUrl(this.url)\n    },\n    isYou () {\n      // FIXME why user !== currentUser???\n      return this.user && this.user.id === this.currentUser.id\n    },\n    userName () {\n      return this.user && this.userNameFullUi.split('@')[0]\n    },\n    serverName () {\n      // XXX assumed that domain does not contain @\n      return this.user && (this.userNameFullUi.split('@')[1] || this.$store.getters.instanceDomain)\n    },\n    userNameFull () {\n      return this.user && this.user.screen_name\n    },\n    userNameFullUi () {\n      return this.user && this.user.screen_name_ui\n    },\n    highlight () {\n      return this.user && this.mergedConfig.highlight[this.user.screen_name]\n    },\n    highlightType () {\n      return this.highlight && ('-' + this.highlight.type)\n    },\n    highlightClass () {\n      if (this.highlight) return highlightClass(this.user)\n    },\n    style () {\n      if (this.highlight) {\n        const {\n          backgroundColor,\n          backgroundPosition,\n          backgroundImage,\n          ...rest\n        } = highlightStyle(this.highlight)\n        return rest\n      }\n    },\n    classnames () {\n      return [\n        {\n          '-you': this.isYou && this.shouldBoldenYou,\n          '-highlighted': this.highlight\n        },\n        this.highlightType\n      ]\n    },\n    useAtIcon () {\n      return this.mergedConfig.useAtIcon\n    },\n    isRemote () {\n      return this.userName !== this.userNameFull\n    },\n    shouldShowFullUserName () {\n      const conf = this.mergedConfig.mentionLinkDisplay\n      if (conf === 'short') {\n        return false\n      } else if (conf === 'full') {\n        return true\n      } else { // full_for_remote\n        return this.isRemote\n      }\n    },\n    shouldShowTooltip () {\n      return this.mergedConfig.mentionLinkShowTooltip && this.mergedConfig.mentionLinkDisplay === 'short' && this.isRemote\n    },\n    shouldShowAvatar () {\n      return this.mergedConfig.mentionLinkShowAvatar\n    },\n    shouldShowYous () {\n      return this.mergedConfig.mentionLinkShowYous\n    },\n    shouldBoldenYou () {\n      return this.mergedConfig.mentionLinkBoldenYou\n    },\n    shouldFadeDomain () {\n      return this.mergedConfig.mentionLinkFadeDomain\n    },\n    ...mapGetters(['mergedConfig']),\n    ...mapState({\n      currentUser: state => state.users.currentUser\n    })\n  }\n}\n\nexport default MentionLink\n","import { defineComponent, h } from 'vue'\nimport * as mfm from 'mfm-js'\nimport MentionLink from '../mention_link/mention_link.vue'\nimport mention_link from '../mention_link/mention_link'\n\nfunction concat (xss) {\n  return ([]).concat(...xss)\n}\n\nexport const MFM_TAGS = ['tada', 'jelly', 'twitch', 'shake', 'spin', 'jump', 'bounce', 'flip', 'x2', 'x3', 'x4', 'font', 'blur', 'rainbow', 'sparkle', 'rotate']\n\nexport default defineComponent({\n  props: {\n    status: {\n      type: Object,\n      required: true\n    }\n  },\n\n  render () {\n    if (!this.status) return null\n    const ast = mfm.parse(this.status.mfm_content, { fnNameList: MFM_TAGS })\n    const validTime = (t) => {\n      if (t == null) return null\n      return t.match(/^[0-9.]+s$/) ? t : null\n    }\n\n    const genEl = (ast) => concat(ast.map((token) => {\n      switch (token.type) {\n        case 'text': {\n          const text = token.props.text.replace(/(\\r\\n|\\n|\\r)/g, '\\n')\n\n          const res = []\n          for (const t of text.split('\\n')) {\n            res.push(h('br'))\n            res.push(t)\n          }\n          res.shift()\n          return res\n        }\n\n        case 'bold': {\n          return [h('b', genEl(token.children))]\n        }\n\n        case 'strike': {\n          return [h('del', genEl(token.children))]\n        }\n\n        case 'italic': {\n          return h('i', {\n            style: 'font-style: oblique;'\n          }, genEl(token.children))\n        }\n\n        case 'fn': {\n          // TODO: CSSを文字列で組み立てていくと token.props.args.~~~ 経由でCSSインジェクションできるのでよしなにやる\n          let style\n          switch (token.props.name) {\n            case 'tada': {\n              style = `font-size: 150%;` + 'animation: tada 1s linear infinite both;'\n              break\n            }\n            case 'jelly': {\n              const speed = validTime(token.props.args.speed) || '1s'\n              style = `animation: mfm-rubberBand ${speed} linear infinite both;`\n              break\n            }\n            case 'twitch': {\n              const speed = validTime(token.props.args.speed) || '0.5s'\n              style = `animation: mfm-twitch ${speed} ease infinite;`\n              break\n            }\n            case 'shake': {\n              const speed = validTime(token.props.args.speed) || '0.5s'\n              style = `animation: mfm-shake ${speed} ease infinite;`\n              break\n            }\n            case 'spin': {\n              const direction =\n                token.props.args.left ? 'reverse'\n                  : token.props.args.alternate ? 'alternate'\n                    : 'normal'\n              const anime =\n                token.props.args.x ? 'mfm-spinX'\n                  : token.props.args.y ? 'mfm-spinY'\n                    : 'mfm-spin'\n              const speed = validTime(token.props.args.speed) || '1.5s'\n              style = `animation: ${anime} ${speed} linear infinite; animation-direction: ${direction};`\n              break\n            }\n            case 'jump': {\n              style = 'animation: mfm-jump 0.75s linear infinite;'\n              break\n            }\n            case 'bounce': {\n              style = 'animation: mfm-bounce 0.75s linear infinite; transform-origin: center bottom;'\n              break\n            }\n            case 'flip': {\n              const transform =\n                (token.props.args.h && token.props.args.v) ? 'scale(-1, -1)'\n                  : token.props.args.v ? 'scaleY(-1)'\n                    : 'scaleX(-1)'\n              style = `transform: ${transform};`\n              break\n            }\n            case 'x2': {\n              style = `font-size: 200%;`\n              break\n            }\n            case 'x3': {\n              style = `font-size: 400%;`\n              break\n            }\n            case 'x4': {\n              style = `font-size: 600%;`\n              break\n            }\n            case 'font': {\n              const family =\n                token.props.args.serif ? 'serif'\n                  : token.props.args.monospace ? 'monospace'\n                    : token.props.args.cursive ? 'cursive'\n                      : token.props.args.fantasy ? 'fantasy'\n                        : token.props.args.emoji ? 'emoji'\n                          : token.props.args.math ? 'math'\n                            : null\n              if (family) style = `font-family: ${family};`\n              break\n            }\n            case 'blur': {\n              return h('span', {\n                class: '_mfm_blur_'\n              }, genEl(token.children))\n            }\n            case 'rainbow': {\n              style = 'animation: mfm-rainbow 1s linear infinite;'\n              break\n            }\n            case 'sparkle': {\n              return h(MkSparkle, {}, genEl(token.children))\n            }\n            case 'rotate': {\n              const degrees = parseInt(token.props.args.deg) || '90'\n              style = `transform: rotate(${degrees}deg); transform-origin: center center;`\n              break\n            }\n          }\n          if (style == null) {\n            return h('span', {}, ['$[', token.props.name, ' ', ...genEl(token.children), ']'])\n          } else {\n            return h('span', {\n              style: 'display: inline-block;' + style\n            }, genEl(token.children))\n          }\n        }\n\n        case 'small': {\n          return [h('small', {\n            style: 'opacity: 0.7;'\n          }, genEl(token.children))]\n        }\n\n        case 'center': {\n          return [h('div', {\n            style: 'text-align:center;'\n          }, genEl(token.children))]\n        }\n\n        case 'url': {\n          return [h('a', {\n            key: Math.random(),\n            href: token.props.url,\n            rel: 'nofollow noopener'\n          }, token.props.url)]\n        }\n\n        case 'link': {\n          console.log(token.props)\n          return [h('a', {\n            key: Math.random(),\n            href: token.props.url,\n            rel: 'nofollow noopener'\n          }, genEl(token.children))]\n        }\n\n        case 'mention': {\n          const user = this.status.attentions.find((mention) => `@${mention.screen_name}` === token.props.acct || mention.screen_name === token.props.username)\n          if (user) {\n            return [h(MentionLink, {\n              url: user.statusnet_profile_url,\n              content: token.props.acct,\n              userScreenName: token.props.acct\n            })]\n          }\n          return null\n        }\n\n        case 'hashtag': {\n          return [h('a', {\n            rel: 'noopener noreferrer',\n            target: '_blank',\n            key: token.props.hashtag,\n            href: this.status.tags.find((hash) => hash.name === token.props.hashtag).url\n          }, `#${token.props.hashtag}`)]\n        }\n\n        case 'blockCode': {\n          return [h('pre', {\n            key: Math.random(),\n            lang: token.props.lang\n          }, token.props.code)]\n        }\n\n        case 'inlineCode': {\n          return [h('pre', {\n            key: Math.random(),\n            code: token.props.code,\n            inline: true\n          })]\n        }\n\n        case 'quote': {\n          if (!this.nowrap) {\n            return [h('div', {\n              class: 'quote'\n            }, genEl(token.children))]\n          } else {\n            return [h('span', {\n              class: 'quote'\n            }, genEl(token.children))]\n          }\n        }\n\n        case 'emojiCode': {\n          return [h('div', {\n            class: 'still-image emoji img'\n          },\n          [h('img', {\n            key: Math.random(),\n            title: token.props.name,\n            alt: token.props.name,\n            src: this.status.emojis.find((emoji) => emoji.shortcode === token.props.name).static_url\n          })]\n          )]\n        }\n\n        case 'unicodeEmoji': {\n          return token.props.emoji\n        }\n\n        case 'math': {\n          return [h('pre', {\n            key: Math.random(),\n            code: token.props.code\n          })]\n        }\n\n        case 'mathInline': {\n          return [h('pre', {\n            key: Math.random(),\n            code: token.props.code,\n            inline: true\n          })]\n        }\n\n        default: {\n          console.error('unrecognized ast type:', token.type)\n\n          return []\n        }\n      }\n    }))\n\n    // Parse ast to DOM\n    return h('span', genEl(ast))\n  }\n})\n","import fileType from 'src/services/file_type/file_type.service'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport MFMContent from 'src/components/mfm_content/mfm_content.jsx'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faFile,\n  faMusic,\n  faImage,\n  faLink,\n  faPollH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faFile,\n  faMusic,\n  faImage,\n  faLink,\n  faPollH\n)\n\nconst StatusContent = {\n  name: 'StatusContent',\n  props: [\n    'compact',\n    'status',\n    'focused',\n    'noHeading',\n    'fullContent',\n    'singleLine',\n    'showingTall',\n    'expandingSubject',\n    'showingLongSubject',\n    'toggleShowingTall',\n    'toggleExpandingSubject',\n    'toggleShowingLongSubject'\n  ],\n  data () {\n    const { renderMisskeyMarkdown } = this.$store.getters.mergedConfig\n    return {\n      postLength: this.status.text.length,\n      parseReadyDone: false,\n      renderMisskeyMarkdown\n    }\n  },\n  computed: {\n    localCollapseSubjectDefault () {\n      return this.mergedConfig.collapseMessageWithSubject\n    },\n    // This is a bit hacky, but we want to approximate post height before rendering\n    // so we count newlines (masto uses <p> for paragraphs, GS uses <br> between them)\n    // as well as approximate line count by counting characters and approximating ~80\n    // per line.\n    //\n    // Using max-height + overflow: auto for status components resulted in false positives\n    // very often with japanese characters, and it was very annoying.\n    tallStatus () {\n      if (this.singleLine || this.compact) return false\n      const lengthScore = this.status.raw_html.split(/<p|<br/).length + this.postLength / 80\n      return lengthScore > 20\n    },\n    longSubject () {\n      return this.status.summary.length > 240\n    },\n    // When a status has a subject and is also tall, we should only have one show more/less button. If the default is to collapse statuses with subjects, we just treat it like a status with a subject; otherwise, we just treat it like a tall status.\n    mightHideBecauseSubject () {\n      return !!this.status.summary && this.localCollapseSubjectDefault\n    },\n    mightHideBecauseTall () {\n      return this.tallStatus && !(this.status.summary && this.localCollapseSubjectDefault)\n    },\n    hideSubjectStatus () {\n      return this.mightHideBecauseSubject && !this.expandingSubject\n    },\n    hideTallStatus () {\n      return this.mightHideBecauseTall && !this.showingTall\n    },\n    showingMore () {\n      return (this.mightHideBecauseTall && this.showingTall) || (this.mightHideBecauseSubject && this.expandingSubject)\n    },\n    attachmentTypes () {\n      return this.status.attachments.map(file => fileType.fileType(file.mimetype))\n    },\n    ...mapGetters(['mergedConfig'])\n  },\n  components: {\n    RichContent,\n    MFMContent\n  },\n  mounted () {\n    this.status.attentions && this.status.attentions.forEach(attn => {\n      const { id } = attn\n      this.$store.dispatch('fetchUserIfMissing', id)\n    })\n  },\n  methods: {\n    onParseReady (event) {\n      if (this.parseReadyDone) return\n      this.parseReadyDone = true\n      this.$emit('parseReady', event)\n      const { writtenMentions, invisibleMentions } = event\n      writtenMentions\n        .filter(mention => !mention.notifying)\n        .forEach(mention => {\n          const { content, url } = mention\n          const cleanedString = content.replace(/<[^>]+?>/gi, '') // remove all tags\n          if (!cleanedString.startsWith('@')) return\n          const handle = cleanedString.slice(1)\n          const host = url.replace(/^https?:\\/\\//, '').replace(/\\/.+?$/, '')\n          this.$store.dispatch('fetchUserIfMissing', `${handle}@${host}`)\n        })\n      /* This is a bit of a hack to make current tall status detector work\n       * with rich mentions. Invisible mentions are detected at RichContent level\n       * and also we generate plaintext version of mentions by stripping tags\n       * so here we subtract from post length by each mention that became invisible\n       * via MentionsLine\n       */\n      this.postLength = invisibleMentions.reduce((acc, mention) => {\n        return acc - mention.textContent.length - 1\n      }, this.postLength)\n    },\n    toggleShowMore () {\n      if (this.mightHideBecauseTall) {\n        this.toggleShowingTall()\n      } else if (this.mightHideBecauseSubject) {\n        this.toggleExpandingSubject()\n      }\n    },\n    generateTagLink (tag) {\n      return `/tag/${tag}`\n    }\n  }\n}\n\nexport default StatusContent\n","import { render } from \"./status_body.vue?vue&type=template&id=591ec5b8\"\nimport script from \"./status_body.js?vue&type=script&lang=js\"\nexport * from \"./status_body.js?vue&type=script&lang=js\"\n\nimport \"./status_body.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Attachment from '../attachment/attachment.vue'\nimport Poll from '../poll/poll.vue'\nimport Gallery from '../gallery/gallery.vue'\nimport StatusBody from 'src/components/status_body/status_body.vue'\nimport LinkPreview from '../link-preview/link-preview.vue'\nimport { mapGetters, mapState } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faCircleNotch,\n  faFile,\n  faMusic,\n  faImage,\n  faLink,\n  faPollH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch,\n  faFile,\n  faMusic,\n  faImage,\n  faLink,\n  faPollH\n)\n\nconst camelCase = name => name.charAt(0).toUpperCase() + name.slice(1)\n\nconst controlledOrUncontrolledGetters = list => list.reduce((res, name) => {\n  const camelized = camelCase(name)\n  const toggle = `controlledToggle${camelized}`\n  const controlledName = `controlled${camelized}`\n  const uncontrolledName = `uncontrolled${camelized}`\n  res[name] = function () {\n    return ((this.$data[toggle] !== undefined || this.$props[toggle] !== undefined) && this[toggle]) ? this[controlledName] : this[uncontrolledName]\n  }\n  return res\n}, {})\n\nconst controlledOrUncontrolledToggle = (obj, name) => {\n  const camelized = camelCase(name)\n  const toggle = `controlledToggle${camelized}`\n  const uncontrolledName = `uncontrolled${camelized}`\n  if (obj[toggle]) {\n    obj[toggle]()\n  } else {\n    obj[uncontrolledName] = !obj[uncontrolledName]\n  }\n}\n\nconst StatusContent = {\n  name: 'StatusContent',\n  props: [\n    'status',\n    'compact',\n    'focused',\n    'noHeading',\n    'fullContent',\n    'singleLine',\n    'controlledShowingTall',\n    'controlledExpandingSubject',\n    'controlledToggleShowingTall',\n    'controlledToggleExpandingSubject',\n    'controlledShowingLongSubject',\n    'controlledToggleShowingLongSubject'\n  ],\n  data () {\n    return {\n      uncontrolledShowingTall: this.fullContent || (this.inConversation && this.focused),\n      uncontrolledShowingLongSubject: false,\n      // not as computed because it sets the initial state which will be changed later\n      uncontrolledExpandingSubject: !this.$store.getters.mergedConfig.collapseMessageWithSubject\n    }\n  },\n  computed: {\n    ...controlledOrUncontrolledGetters(['showingTall', 'expandingSubject', 'showingLongSubject']),\n    hideAttachments () {\n      return (this.mergedConfig.hideAttachments && !this.inConversation) ||\n        (this.mergedConfig.hideAttachmentsInConv && this.inConversation)\n    },\n    nsfwClickthrough () {\n      if (!this.status.nsfw) {\n        return false\n      }\n      if (this.status.summary && this.localCollapseSubjectDefault) {\n        return false\n      }\n      return true\n    },\n    attachmentSize () {\n      if (this.compact) {\n        return 'small'\n      } else if ((this.mergedConfig.hideAttachments && !this.inConversation) ||\n        (this.mergedConfig.hideAttachmentsInConv && this.inConversation) ||\n        (this.status.attachments.length > this.maxThumbnails)) {\n        return 'hide'\n      }\n      return 'normal'\n    },\n    maxThumbnails () {\n      return this.mergedConfig.maxThumbnails\n    },\n    ...mapGetters(['mergedConfig']),\n    ...mapState({\n      currentUser: state => state.users.currentUser\n    })\n  },\n  components: {\n    Attachment,\n    Poll,\n    Gallery,\n    LinkPreview,\n    StatusBody\n  },\n  methods: {\n    toggleShowingTall () {\n      controlledOrUncontrolledToggle(this, 'showingTall')\n    },\n    toggleExpandingSubject () {\n      controlledOrUncontrolledToggle(this, 'expandingSubject')\n    },\n    toggleShowingLongSubject () {\n      controlledOrUncontrolledToggle(this, 'showingLongSubject')\n    },\n    setMedia () {\n      const attachments = this.attachmentSize === 'hide' ? this.status.attachments : this.galleryAttachments\n      return () => this.$store.dispatch('setMedia', attachments)\n    }\n  }\n}\n\nexport default StatusContent\n","import { render } from \"./status_content.vue?vue&type=template&id=475fea91\"\nimport script from \"./status_content.js?vue&type=script&lang=js\"\nexport * from \"./status_content.js?vue&type=script&lang=js\"\n\nimport \"./status_content.vue?vue&type=style&index=0&id=475fea91&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export const SECOND = 1000\nexport const MINUTE = 60 * SECOND\nexport const HOUR = 60 * MINUTE\nexport const DAY = 24 * HOUR\nexport const WEEK = 7 * DAY\nexport const MONTH = 30 * DAY\nexport const YEAR = 365.25 * DAY\n\nexport const relativeTime = (date, nowThreshold = 1) => {\n  if (typeof date === 'string') date = Date.parse(date)\n  const round = Date.now() > date ? Math.floor : Math.ceil\n  const d = Math.abs(Date.now() - date)\n  let r = { num: round(d / YEAR), key: 'time.years' }\n  if (d < nowThreshold * SECOND) {\n    r.num = 0\n    r.key = 'time.now'\n  } else if (d < MINUTE) {\n    r.num = round(d / SECOND)\n    r.key = 'time.seconds'\n  } else if (d < HOUR) {\n    r.num = round(d / MINUTE)\n    r.key = 'time.minutes'\n  } else if (d < DAY) {\n    r.num = round(d / HOUR)\n    r.key = 'time.hours'\n  } else if (d < WEEK) {\n    r.num = round(d / DAY)\n    r.key = 'time.days'\n  } else if (d < MONTH) {\n    r.num = round(d / WEEK)\n    r.key = 'time.weeks'\n  } else if (d < YEAR) {\n    r.num = round(d / MONTH)\n    r.key = 'time.months'\n  }\n  // Remove plural form when singular\n  if (r.num === 1) r.key = r.key.slice(0, -1)\n  return r\n}\n\nexport const relativeTimeShort = (date, nowThreshold = 1) => {\n  const r = relativeTime(date, nowThreshold)\n  r.key += '_short'\n  return r\n}\n","<template>\n  <div\n    class=\"still-image\"\n    :class=\"{ animated: animated }\"\n    :style=\"style\"\n  >\n    <canvas\n      v-if=\"animated\"\n      ref=\"canvas\"\n    />\n    <!-- NOTE: key is required to force to re-render img tag when src is changed -->\n    <img\n      ref=\"src\"\n      :key=\"src\"\n      :alt=\"alt\"\n      :title=\"alt\"\n      :src=\"src\"\n      :referrerpolicy=\"referrerpolicy\"\n      @load=\"onLoad\"\n      @error=\"onError\"\n    >\n    <slot />\n  </div>\n</template>\n\n<script src=\"./still-image.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.still-image {\n  position: relative;\n  line-height: 0;\n  overflow: hidden;\n  display: inline-flex;\n  align-items: center;\n\n  canvas {\n    position: absolute;\n    top: 0;\n    bottom: 0;\n    left: 0;\n    right: 0;\n    width: 100%;\n    height: 100%;\n    object-fit: contain;\n    visibility: var(--_still-image-canvas-visibility, visible);\n  }\n\n  img {\n    width: 100%;\n    height: 100%;\n    object-fit: contain;\n  }\n\n  &.animated {\n    &::before {\n      zoom: var(--_still_image-label-scale, 1);\n      content: 'gif';\n      position: absolute;\n      line-height: 1;\n      font-size: 0.7em;\n      top: 0.5em;\n      left: 0.5em;\n      background: rgba(127, 127, 127, 0.5);\n      color: #fff;\n      display: block;\n      padding: 2px 4px;\n      border-radius: $fallback--tooltipRadius;\n      border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n      z-index: 2;\n      visibility: var(--_still-image-label-visibility, visible);\n    }\n\n    &:hover canvas {\n      display: none;\n    }\n\n    &:hover::before {\n      visibility: var(--_still-image-label-visibility, hidden);\n    }\n\n    img {\n      visibility: var(--_still-image-img-visibility, hidden);\n    }\n\n    &:hover img {\n      visibility: visible;\n    }\n  }\n}\n</style>\n","const StillImage = {\n  props: [\n    'src',\n    'referrerpolicy',\n    'mimetype',\n    'imageLoadError',\n    'imageLoadHandler',\n    'alt',\n    'height',\n    'width'\n  ],\n  data () {\n    return {\n      stopGifs: this.$store.getters.mergedConfig.stopGifs\n    }\n  },\n  computed: {\n    animated () {\n      return this.stopGifs && (this.mimetype === 'image/gif' || this.src.endsWith('.gif'))\n    },\n    style () {\n      const appendPx = (str) => /\\d$/.test(str) ? str + 'px' : str\n      return {\n        height: this.height ? appendPx(this.height) : null,\n        width: this.width ? appendPx(this.width) : null\n      }\n    }\n  },\n  methods: {\n    onLoad () {\n      const image = this.$refs.src\n      if (!image) return\n      this.imageLoadHandler && this.imageLoadHandler(image)\n      const canvas = this.$refs.canvas\n      if (!canvas) return\n      const width = image.naturalWidth\n      const height = image.naturalHeight\n      canvas.width = width\n      canvas.height = height\n      canvas.getContext('2d').drawImage(image, 0, 0, width, height)\n    },\n    onError () {\n      this.imageLoadError && this.imageLoadError()\n    }\n  }\n}\n\nexport default StillImage\n","import { render } from \"./still-image.vue?vue&type=template&id=4da90e4a\"\nimport script from \"./still-image.js?vue&type=script&lang=js\"\nexport * from \"./still-image.js?vue&type=script&lang=js\"\n\nimport \"./still-image.vue?vue&type=style&index=0&id=4da90e4a&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <label\n    class=\"checkbox\"\n    :class=\"{ disabled, indeterminate }\"\n  >\n    <input\n      type=\"checkbox\"\n      :disabled=\"disabled\"\n      :checked=\"modelValue\"\n      :indeterminate=\"indeterminate\"\n      @change=\"$emit('update:modelValue', $event.target.checked)\"\n    >\n    <i class=\"checkbox-indicator\" />\n    <span\n      v-if=\"!!$slots.default\"\n      class=\"label\"\n    >\n      <slot />\n    </span>\n  </label>\n</template>\n\n<script>\nexport default {\n  emits: ['update:modelValue'],\n  props: [\n    'modelValue',\n    'indeterminate',\n    'disabled'\n  ]\n}\n</script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.checkbox {\n  position: relative;\n  display: inline-block;\n  min-height: 1.2em;\n\n  &-indicator {\n    position: relative;\n    padding-left: 1.2em;\n  }\n\n  &-indicator::before {\n    position: absolute;\n    right: 0;\n    top: 0;\n    display: block;\n    content: '✓';\n    transition: color 200ms;\n    width: 1.1em;\n    height: 1.1em;\n    border-radius: $fallback--checkboxRadius;\n    border-radius: var(--checkboxRadius, $fallback--checkboxRadius);\n    box-shadow: 0px 0px 2px black inset;\n    box-shadow: var(--inputShadow);\n    background-color: $fallback--fg;\n    background-color: var(--input, $fallback--fg);\n    vertical-align: top;\n    text-align: center;\n    line-height: 1.1em;\n    font-size: 1.1em;\n    color: transparent;\n    overflow: hidden;\n    box-sizing: border-box;\n  }\n\n  &.disabled {\n    .checkbox-indicator::before,\n    .label {\n      opacity: .5;\n    }\n    .label {\n      color: $fallback--faint;\n      color: var(--faint, $fallback--faint);\n    }\n  }\n\n  input[type=checkbox] {\n    display: none;\n\n    &:checked + .checkbox-indicator::before {\n      color: $fallback--text;\n      color: var(--inputText, $fallback--text);\n    }\n\n    &:indeterminate + .checkbox-indicator::before {\n      content: '–';\n      color: $fallback--text;\n      color: var(--inputText, $fallback--text);\n    }\n\n  }\n\n  & > span {\n    margin-left: .5em;\n  }\n}\n</style>\n","import { render } from \"./checkbox.vue?vue&type=template&id=deb5bfe6\"\nimport script from \"./checkbox.vue?vue&type=script&lang=js\"\nexport * from \"./checkbox.vue?vue&type=script&lang=js\"\n\nimport \"./checkbox.vue?vue&type=style&index=0&id=deb5bfe6&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <label\n    class=\"Select input\"\n    :class=\"{ disabled, unstyled }\"\n  >\n    <select\n      :disabled=\"disabled\"\n      :value=\"modelValue\"\n      @change=\"$emit('update:modelValue', $event.target.value)\"\n    >\n      <slot />\n    </select>\n    {{ ' ' }}\n    <FAIcon\n      class=\"select-down-icon\"\n      icon=\"chevron-down\"\n    />\n  </label>\n</template>\n\n<script src=\"./select.js\"> </script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n/* TODO fix order of styles */\nlabel.Select {\n  padding: 0;\n\n  select {\n    -webkit-appearance: none;\n    -moz-appearance: none;\n    appearance: none;\n    background: transparent;\n    border: none;\n    color: $fallback--text;\n    color: var(--inputText, --text, $fallback--text);\n    margin: 0;\n    padding: 0 2em 0 .2em;\n    font-family: sans-serif;\n    font-family: var(--inputFont, sans-serif);\n    font-size: 1em;\n    width: 100%;\n    z-index: 1;\n    height: 2em;\n    line-height: 16px;\n  }\n\n  .select-down-icon {\n    position: absolute;\n    top: 0;\n    bottom: 0;\n    right: 5px;\n    height: 100%;\n    width: 0.875em;\n    color: $fallback--text;\n    color: var(--inputText, $fallback--text);\n    line-height: 2;\n    z-index: 0;\n    pointer-events: none;\n  }\n\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faChevronDown\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faChevronDown\n)\n\nexport default {\n  emits: ['update:modelValue'],\n  props: [\n    'modelValue',\n    'disabled',\n    'unstyled',\n    'kind'\n  ]\n}\n","import { render } from \"./select.vue?vue&type=template&id=099d3e32\"\nimport script from \"./select.js?vue&type=script&lang=js\"\nexport * from \"./select.js?vue&type=script&lang=js\"\n\nimport \"./select.vue?vue&type=style&index=0&id=099d3e32&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"basic-user-card\">\n    <router-link :to=\"userProfileLink(user)\">\n      <UserAvatar\n        class=\"avatar\"\n        :user=\"user\"\n        @click.prevent=\"toggleUserExpanded\"\n      />\n    </router-link>\n    <div\n      v-if=\"userExpanded\"\n      class=\"basic-user-card-expanded-content\"\n    >\n      <UserCard\n        :user-id=\"user.id\"\n        :rounded=\"true\"\n        :bordered=\"true\"\n      />\n    </div>\n    <div\n      v-else\n      class=\"basic-user-card-collapsed-content\"\n    >\n      <div\n        :title=\"user.name\"\n        class=\"basic-user-card-user-name\"\n      >\n        <RichContent\n          class=\"basic-user-card-user-name-value\"\n          :html=\"user.name\"\n          :emoji=\"user.emoji\"\n        />\n      </div>\n      <div>\n        <router-link\n          class=\"basic-user-card-screen-name\"\n          :to=\"userProfileLink(user)\"\n        >\n          @{{ user.screen_name_ui }}\n        </router-link>\n      </div>\n      <slot />\n    </div>\n  </div>\n</template>\n\n<script src=\"./basic_user_card.js\"></script>\n\n<style lang=\"scss\">\n.basic-user-card {\n  display: flex;\n  flex: 1 0;\n  margin: 0;\n  padding: 0.6em 1em;\n\n  &-collapsed-content {\n    margin-left: 0.7em;\n    text-align: left;\n    flex: 1;\n    min-width: 0;\n  }\n\n  &-user-name {\n    img {\n      object-fit: contain;\n      height: 16px;\n      width: 16px;\n      vertical-align: middle;\n    }\n  }\n\n  &-user-name-value,\n  &-screen-name {\n    display: inline-block;\n    max-width: 100%;\n    overflow: hidden;\n    white-space: nowrap;\n    text-overflow: ellipsis;\n  }\n\n  &-expanded-content {\n    flex: 1;\n    margin-left: 0.7em;\n    min-width: 0;\n  }\n}\n</style>\n","import UserCard from '../user_card/user_card.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\n\nconst BasicUserCard = {\n  props: [\n    'user'\n  ],\n  data () {\n    return {\n      userExpanded: false\n    }\n  },\n  components: {\n    UserCard,\n    UserAvatar,\n    RichContent\n  },\n  methods: {\n    toggleUserExpanded () {\n      this.userExpanded = !this.userExpanded\n    },\n    userProfileLink (user) {\n      return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n    }\n  }\n}\n\nexport default BasicUserCard\n","import { render } from \"./basic_user_card.vue?vue&type=template&id=dd332bac\"\nimport script from \"./basic_user_card.js?vue&type=script&lang=js\"\nexport * from \"./basic_user_card.js?vue&type=script&lang=js\"\n\nimport \"./basic_user_card.vue?vue&type=style&index=0&id=dd332bac&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { convert, brightness, contrastRatio } from 'chromatism'\nimport { alphaBlendLayers, getTextColor, relativeLuminance } from '../color_convert/color_convert.js'\nimport { LAYERS, DEFAULT_OPACITY, SLOT_INHERITANCE } from './pleromafe.js'\n\n/*\n * # What's all this?\n * Here be theme engine for pleromafe. All of this supposed to ease look\n * and feel customization, making widget styles and make developer's life\n * easier when it comes to supporting themes. Like many other theme systems\n * it operates on color definitions, or \"slots\" - for example you define\n * \"button\" color slot and then in UI component Button's CSS you refer to\n * it as a CSS3 Variable.\n *\n * Some applications allow you to customize colors for certain things.\n * Some UI toolkits allow you to define colors for each type of widget.\n * Most of them are pretty barebones and have no assistance for common\n * problems and cases, and in general themes themselves are very hard to\n * maintain in all aspects. This theme engine tries to solve all of the\n * common problems with themes.\n *\n * You don't have redefine several similar colors if you just want to\n * change one color - all color slots are derived from other ones, so you\n * can have at least one or two \"basic\" colors defined and have all other\n * components inherit and modify basic ones.\n *\n * You don't have to test contrast ratio for colors or pick text color for\n * each element even if you have light-on-dark elements in dark-on-light\n * theme.\n *\n * You don't have to maintain order of code for inheriting slots from othet\n * slots - dependency graph resolving does it for you.\n */\n\n/* This indicates that this version of code outputs similar theme data and\n * should be incremented if output changes - for instance if getTextColor\n * function changes and older themes no longer render text colors as\n * author intended previously.\n */\nexport const CURRENT_VERSION = 3\n\nexport const getLayersArray = (layer, data = LAYERS) => {\n  let array = [layer]\n  let parent = data[layer]\n  while (parent) {\n    array.unshift(parent)\n    parent = data[parent]\n  }\n  return array\n}\n\nexport const getLayers = (layer, variant = layer, opacitySlot, colors, opacity) => {\n  return getLayersArray(layer).map((currentLayer) => ([\n    currentLayer === layer\n      ? colors[variant]\n      : colors[currentLayer],\n    currentLayer === layer\n      ? opacity[opacitySlot] || 1\n      : opacity[currentLayer]\n  ]))\n}\n\nconst getDependencies = (key, inheritance) => {\n  const data = inheritance[key]\n  if (typeof data === 'string' && data.startsWith('--')) {\n    return [data.substring(2)]\n  } else {\n    if (data === null) return []\n    const { depends, layer, variant } = data\n    const layerDeps = layer\n      ? getLayersArray(layer).map(currentLayer => {\n        return currentLayer === layer\n          ? variant || layer\n          : currentLayer\n      })\n      : []\n    if (Array.isArray(depends)) {\n      return [...depends, ...layerDeps]\n    } else {\n      return [...layerDeps]\n    }\n  }\n}\n\n/**\n * Sorts inheritance object topologically - dependant slots come after\n * dependencies\n *\n * @property {Object} inheritance - object defining the nodes\n * @property {Function} getDeps - function that returns dependencies for\n *   given value and inheritance object.\n * @returns {String[]} keys of inheritance object, sorted in topological\n *   order. Additionally, dependency-less nodes will always be first in line\n */\nexport const topoSort = (\n  inheritance = SLOT_INHERITANCE,\n  getDeps = getDependencies\n) => {\n  // This is an implementation of https://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm\n\n  const allKeys = Object.keys(inheritance)\n  const whites = new Set(allKeys)\n  const grays = new Set()\n  const blacks = new Set()\n  const unprocessed = [...allKeys]\n  const output = []\n\n  const step = (node) => {\n    if (whites.has(node)) {\n      // Make node \"gray\"\n      whites.delete(node)\n      grays.add(node)\n      // Do step for each node connected to it (one way)\n      getDeps(node, inheritance).forEach(step)\n      // Make node \"black\"\n      grays.delete(node)\n      blacks.add(node)\n      // Put it into the output list\n      output.push(node)\n    } else if (grays.has(node)) {\n      console.debug('Cyclic depenency in topoSort, ignoring')\n      output.push(node)\n    } else if (blacks.has(node)) {\n      // do nothing\n    } else {\n      throw new Error('Unintended condition in topoSort!')\n    }\n  }\n  while (unprocessed.length > 0) {\n    step(unprocessed.pop())\n  }\n\n  // The index thing is to make sorting stable on browsers\n  // where Array.sort() isn't stable\n  return output.map((data, index) => ({ data, index })).sort(({ data: a, index: ai }, { data: b, index: bi }) => {\n    const depsA = getDeps(a, inheritance).length\n    const depsB = getDeps(b, inheritance).length\n\n    if (depsA === depsB || (depsB !== 0 && depsA !== 0)) return ai - bi\n    if (depsA === 0 && depsB !== 0) return -1\n    if (depsB === 0 && depsA !== 0) return 1\n  }).map(({ data }) => data)\n}\n\nconst expandSlotValue = (value) => {\n  if (typeof value === 'object') return value\n  return {\n    depends: value.startsWith('--') ? [value.substring(2)] : [],\n    default: value.startsWith('#') ? value : undefined\n  }\n}\n/**\n * retrieves opacity slot for given slot. This goes up the depenency graph\n * to find which parent has opacity slot defined for it.\n * TODO refactor this\n */\nexport const getOpacitySlot = (\n  k,\n  inheritance = SLOT_INHERITANCE,\n  getDeps = getDependencies\n) => {\n  const value = expandSlotValue(inheritance[k])\n  if (value.opacity === null) return\n  if (value.opacity) return value.opacity\n  const findInheritedOpacity = (key, visited = [k]) => {\n    const depSlot = getDeps(key, inheritance)[0]\n    if (depSlot === undefined) return\n    const dependency = inheritance[depSlot]\n    if (dependency === undefined) return\n    if (dependency.opacity || dependency === null) {\n      return dependency.opacity\n    } else if (dependency.depends && visited.includes(depSlot)) {\n      return findInheritedOpacity(depSlot, [...visited, depSlot])\n    } else {\n      return null\n    }\n  }\n  if (value.depends) {\n    return findInheritedOpacity(k)\n  }\n}\n\n/**\n * retrieves layer slot for given slot. This goes up the depenency graph\n * to find which parent has opacity slot defined for it.\n * this is basically copypaste of getOpacitySlot except it checks if key is\n * in LAYERS\n * TODO refactor this\n */\nexport const getLayerSlot = (\n  k,\n  inheritance = SLOT_INHERITANCE,\n  getDeps = getDependencies\n) => {\n  const value = expandSlotValue(inheritance[k])\n  if (LAYERS[k]) return k\n  if (value.layer === null) return\n  if (value.layer) return value.layer\n  const findInheritedLayer = (key, visited = [k]) => {\n    const depSlot = getDeps(key, inheritance)[0]\n    if (depSlot === undefined) return\n    const dependency = inheritance[depSlot]\n    if (dependency === undefined) return\n    if (dependency.layer || dependency === null) {\n      return dependency.layer\n    } else if (dependency.depends) {\n      return findInheritedLayer(dependency, [...visited, depSlot])\n    } else {\n      return null\n    }\n  }\n  if (value.depends) {\n    return findInheritedLayer(k)\n  }\n}\n\n/**\n * topologically sorted SLOT_INHERITANCE\n */\nexport const SLOT_ORDERED = topoSort(\n  Object.entries(SLOT_INHERITANCE)\n    .sort(([aK, aV], [bK, bV]) => ((aV && aV.priority) || 0) - ((bV && bV.priority) || 0))\n    .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {})\n)\n\n/**\n * All opacity slots used in color slots, their default values and affected\n * color slots.\n */\nexport const OPACITIES = Object.entries(SLOT_INHERITANCE).reduce((acc, [k, v]) => {\n  const opacity = getOpacitySlot(k, SLOT_INHERITANCE, getDependencies)\n  if (opacity) {\n    return {\n      ...acc,\n      [opacity]: {\n        defaultValue: DEFAULT_OPACITY[opacity] || 1,\n        affectedSlots: [...((acc[opacity] && acc[opacity].affectedSlots) || []), k]\n      }\n    }\n  } else {\n    return acc\n  }\n}, {})\n\n/**\n * Handle dynamic color\n */\nexport const computeDynamicColor = (sourceColor, getColor, mod) => {\n  if (typeof sourceColor !== 'string' || !sourceColor.startsWith('--')) return sourceColor\n  let targetColor = null\n  // Color references other color\n  const [variable, modifier] = sourceColor.split(/,/g).map(str => str.trim())\n  const variableSlot = variable.substring(2)\n  targetColor = getColor(variableSlot)\n  if (modifier) {\n    targetColor = brightness(Number.parseFloat(modifier) * mod, targetColor).rgb\n  }\n  return targetColor\n}\n\n/**\n * THE function you want to use. Takes provided colors and opacities\n * value and uses inheritance data to figure out color needed for the slot.\n */\nexport const getColors = (sourceColors, sourceOpacity) => SLOT_ORDERED.reduce(({ colors, opacity }, key) => {\n  const sourceColor = sourceColors[key]\n  const value = expandSlotValue(SLOT_INHERITANCE[key])\n  const deps = getDependencies(key, SLOT_INHERITANCE)\n  const isTextColor = !!value.textColor\n  const variant = value.variant || value.layer\n\n  let backgroundColor = null\n\n  if (isTextColor) {\n    backgroundColor = alphaBlendLayers(\n      { ...(colors[deps[0]] || convert(sourceColors[key] || '#FF00FF').rgb) },\n      getLayers(\n        getLayerSlot(key) || 'bg',\n        variant || 'bg',\n        getOpacitySlot(variant),\n        colors,\n        opacity\n      )\n    )\n  } else if (variant && variant !== key) {\n    backgroundColor = colors[variant] || convert(sourceColors[variant]).rgb\n  } else {\n    backgroundColor = colors.bg || convert(sourceColors.bg)\n  }\n\n  const isLightOnDark = relativeLuminance(backgroundColor) < 0.5\n  const mod = isLightOnDark ? 1 : -1\n\n  let outputColor = null\n  if (sourceColor) {\n    // Color is defined in source color\n    let targetColor = sourceColor\n    if (targetColor === 'transparent') {\n      // We take only layers below current one\n      const layers = getLayers(\n        getLayerSlot(key),\n        key,\n        getOpacitySlot(key) || key,\n        colors,\n        opacity\n      ).slice(0, -1)\n      targetColor = {\n        ...alphaBlendLayers(\n          convert('#FF00FF').rgb,\n          layers\n        ),\n        a: 0\n      }\n    } else if (typeof sourceColor === 'string' && sourceColor.startsWith('--')) {\n      targetColor = computeDynamicColor(\n        sourceColor,\n        variableSlot => colors[variableSlot] || sourceColors[variableSlot],\n        mod\n      )\n    } else if (typeof sourceColor === 'string' && sourceColor.startsWith('#')) {\n      targetColor = convert(targetColor).rgb\n    }\n    outputColor = { ...targetColor }\n  } else if (value.default) {\n    // same as above except in object form\n    outputColor = convert(value.default).rgb\n  } else {\n    // calculate color\n    const defaultColorFunc = (mod, dep) => ({ ...dep })\n    const colorFunc = value.color || defaultColorFunc\n\n    if (value.textColor) {\n      if (value.textColor === 'bw') {\n        outputColor = contrastRatio(backgroundColor).rgb\n      } else {\n        let color = { ...colors[deps[0]] }\n        if (value.color) {\n          color = colorFunc(mod, ...deps.map((dep) => ({ ...colors[dep] })))\n        }\n        outputColor = getTextColor(\n          backgroundColor,\n          { ...color },\n          value.textColor === 'preserve'\n        )\n      }\n    } else {\n      // background color case\n      outputColor = colorFunc(\n        mod,\n        ...deps.map((dep) => ({ ...colors[dep] }))\n      )\n    }\n  }\n  if (!outputColor) {\n    throw new Error('Couldn\\'t generate color for ' + key)\n  }\n\n  const opacitySlot = value.opacity || getOpacitySlot(key)\n  const ownOpacitySlot = value.opacity\n\n  if (ownOpacitySlot === null) {\n    outputColor.a = 1\n  } else if (sourceColor === 'transparent') {\n    outputColor.a = 0\n  } else {\n    const opacityOverriden = ownOpacitySlot && sourceOpacity[opacitySlot] !== undefined\n\n    const dependencySlot = deps[0]\n    const dependencyColor = dependencySlot && colors[dependencySlot]\n\n    if (!ownOpacitySlot && dependencyColor && !value.textColor && ownOpacitySlot !== null) {\n      // Inheriting color from dependency (weird, i know)\n      // except if it's a text color or opacity slot is set to 'null'\n      outputColor.a = dependencyColor.a\n    } else if (!dependencyColor && !opacitySlot) {\n      // Remove any alpha channel if no dependency and no opacitySlot found\n      delete outputColor.a\n    } else {\n      // Otherwise try to assign opacity\n      if (dependencyColor && dependencyColor.a === 0) {\n        // transparent dependency shall make dependents transparent too\n        outputColor.a = 0\n      } else {\n        // Otherwise check if opacity is overriden and use that or default value instead\n        outputColor.a = Number(\n          opacityOverriden\n            ? sourceOpacity[opacitySlot]\n            : (OPACITIES[opacitySlot] || {}).defaultValue\n        )\n      }\n    }\n  }\n\n  if (Number.isNaN(outputColor.a) || outputColor.a === undefined) {\n    outputColor.a = 1\n  }\n\n  if (opacitySlot) {\n    return {\n      colors: { ...colors, [key]: outputColor },\n      opacity: { ...opacity, [opacitySlot]: outputColor.a }\n    }\n  } else {\n    return {\n      colors: { ...colors, [key]: outputColor },\n      opacity\n    }\n  }\n}, { colors: {}, opacity: {} })\n","<template>\n  <div\n    ref=\"form\"\n    class=\"post-status-form\"\n  >\n    <form\n      autocomplete=\"off\"\n      @submit.prevent\n      @dragover.prevent=\"fileDrag\"\n    >\n      <div class=\"form-group\">\n        <i18n-t\n          v-if=\"!$store.state.users.currentUser.locked && newStatus.visibility == 'private' && !disableLockWarning\"\n          keypath=\"post_status.account_not_locked_warning\"\n          tag=\"p\"\n          class=\"visibility-notice\"\n          scope=\"global\"\n        >\n          <button\n            class=\"button-unstyled -link\"\n            @click=\"openProfileTab\"\n          >\n            {{ $t('post_status.account_not_locked_warning_link') }}\n          </button>\n        </i18n-t>\n        <p\n          v-if=\"!hideScopeNotice && newStatus.visibility === 'public'\"\n          class=\"visibility-notice notice-dismissible\"\n        >\n          <span>{{ $t('post_status.scope_notice.public') }}</span>\n          <a\n            class=\"fa-scale-110 fa-old-padding dismiss\"\n            @click.prevent=\"dismissScopeNotice()\"\n          >\n            <FAIcon icon=\"times\" />\n          </a>\n        </p>\n        <p\n          v-else-if=\"!hideScopeNotice && newStatus.visibility === 'unlisted'\"\n          class=\"visibility-notice notice-dismissible\"\n        >\n          <span>{{ $t('post_status.scope_notice.unlisted') }}</span>\n          <a\n            class=\"fa-scale-110 fa-old-padding dismiss\"\n            @click.prevent=\"dismissScopeNotice()\"\n          >\n            <FAIcon icon=\"times\" />\n          </a>\n        </p>\n        <p\n          v-else-if=\"!hideScopeNotice && newStatus.visibility === 'private' && $store.state.users.currentUser.locked\"\n          class=\"visibility-notice notice-dismissible\"\n        >\n          <span>{{ $t('post_status.scope_notice.private') }}</span>\n          <a\n            class=\"fa-scale-110 fa-old-padding dismiss\"\n            @click.prevent=\"dismissScopeNotice()\"\n          >\n            <FAIcon icon=\"times\" />\n          </a>\n        </p>\n        <p\n          v-else-if=\"newStatus.visibility === 'direct'\"\n          class=\"visibility-notice\"\n        >\n          <span v-if=\"safeDMEnabled\">{{ $t('post_status.direct_warning_to_first_only') }}</span>\n          <span v-else>{{ $t('post_status.direct_warning_to_all') }}</span>\n        </p>\n        <div\n          v-if=\"!disablePreview\"\n          class=\"preview-heading faint\"\n        >\n          <a\n            class=\"preview-toggle faint\"\n            @click.stop.prevent=\"togglePreview\"\n          >\n            {{ $t('post_status.preview') }}\n            <FAIcon :icon=\"showPreview ? 'chevron-left' : 'chevron-right'\" />\n          </a>\n          <div\n            v-show=\"previewLoading\"\n            class=\"preview-spinner\"\n          >\n            <FAIcon\n              class=\"fa-old-padding\"\n              spin\n              icon=\"circle-notch\"\n            />\n          </div>\n        </div>\n        <div\n          v-if=\"showPreview\"\n          class=\"preview-container\"\n        >\n          <div\n            v-if=\"!preview\"\n            class=\"preview-status\"\n          >\n            {{ $t('general.loading') }}\n          </div>\n          <div\n            v-else-if=\"preview.error\"\n            class=\"preview-status preview-error\"\n          >\n            {{ preview.error }}\n          </div>\n          <StatusContent\n            v-else\n            :status=\"preview\"\n            class=\"preview-status\"\n          />\n        </div>\n        <EmojiInput\n          v-if=\"!disableSubject && (newStatus.spoilerText || alwaysShowSubject)\"\n          v-model=\"newStatus.spoilerText\"\n          enable-emoji-picker\n          :suggest=\"emojiSuggestor\"\n          class=\"form-control\"\n        >\n          <input\n            v-model=\"newStatus.spoilerText\"\n            type=\"text\"\n            :placeholder=\"$t('post_status.content_warning')\"\n            :disabled=\"posting && !optimisticPosting\"\n            size=\"1\"\n            class=\"form-post-subject\"\n          >\n        </EmojiInput>\n        <EmojiInput\n          ref=\"emoji-input\"\n          v-model=\"newStatus.status\"\n          :suggest=\"emojiUserSuggestor\"\n          :placement=\"emojiPickerPlacement\"\n          class=\"form-control main-input\"\n          enable-emoji-picker\n          hide-emoji-button\n          :newline-on-ctrl-enter=\"submitOnEnter\"\n          enable-sticker-picker\n          @input=\"onEmojiInputInput\"\n          @sticker-uploaded=\"addMediaFile\"\n          @sticker-upload-failed=\"uploadFailed\"\n          @shown=\"handleEmojiInputShow\"\n        >\n          <textarea\n            ref=\"textarea\"\n            v-model=\"newStatus.status\"\n            :placeholder=\"placeholder || $t('post_status.default')\"\n            rows=\"1\"\n            cols=\"1\"\n            :disabled=\"posting && !optimisticPosting\"\n            class=\"form-post-body\"\n            :class=\"{ 'scrollable-form': !!maxHeight }\"\n            @keydown.exact.enter=\"submitOnEnter && postStatus($event, newStatus)\"\n            @keydown.meta.enter=\"postStatus($event, newStatus)\"\n            @keydown.ctrl.enter=\"!submitOnEnter && postStatus($event, newStatus)\"\n            @input=\"resize\"\n            @compositionupdate=\"resize\"\n            @paste=\"paste\"\n          />\n          <p\n            v-if=\"hasStatusLengthLimit\"\n            class=\"character-counter faint\"\n            :class=\"{ error: isOverLengthLimit }\"\n          >\n            {{ charactersLeft }}\n          </p>\n        </EmojiInput>\n        <div\n          v-if=\"!disableScopeSelector\"\n          class=\"visibility-tray\"\n        >\n          <scope-selector\n            :show-all=\"showAllScopes\"\n            :user-default=\"userDefaultScope\"\n            :original-scope=\"copyMessageScope\"\n            :initial-scope=\"newStatus.visibility\"\n            :on-scope-change=\"changeVis\"\n          />\n\n          <div\n            v-if=\"postFormats.length > 1\"\n            class=\"text-format\"\n          >\n            <Select\n              id=\"post-content-type\"\n              v-model=\"newStatus.contentType\"\n              class=\"form-control\"\n            >\n              <option\n                v-for=\"postFormat in postFormats\"\n                :key=\"postFormat\"\n                :value=\"postFormat\"\n              >\n                {{ $t(`post_status.content_type[\"${postFormat}\"]`) }}\n              </option>\n            </Select>\n          </div>\n          <div\n            v-if=\"postFormats.length === 1 && postFormats[0] !== 'text/plain'\"\n            class=\"text-format\"\n          >\n            <span class=\"only-format\">\n              {{ $t(`post_status.content_type[\"${postFormats[0]}\"]`) }}\n            </span>\n          </div>\n        </div>\n      </div>\n      <poll-form\n        v-if=\"pollsAvailable\"\n        ref=\"pollForm\"\n        :visible=\"pollFormVisible\"\n        @update-poll=\"setPoll\"\n      />\n      <div\n        ref=\"bottom\"\n        class=\"form-bottom\"\n      >\n        <div class=\"form-bottom-left\">\n          <media-upload\n            ref=\"mediaUpload\"\n            class=\"media-upload-icon\"\n            :drop-files=\"dropFiles\"\n            :disabled=\"uploadFileLimitReached\"\n            @uploading=\"startedUploadingFiles\"\n            @uploaded=\"addMediaFile\"\n            @upload-failed=\"uploadFailed\"\n            @all-uploaded=\"finishedUploadingFiles\"\n          />\n          <button\n            class=\"emoji-icon button-unstyled\"\n            :title=\"$t('emoji.add_emoji')\"\n            @click=\"showEmojiPicker\"\n          >\n            <FAIcon icon=\"smile-beam\" />\n          </button>\n          <button\n            v-if=\"pollsAvailable\"\n            class=\"poll-icon button-unstyled\"\n            :class=\"{ selected: pollFormVisible }\"\n            :title=\"$t('polls.add_poll')\"\n            @click=\"togglePollForm\"\n          >\n            <FAIcon icon=\"poll-h\" />\n          </button>\n        </div>\n        <button\n          v-if=\"posting\"\n          disabled\n          class=\"btn button-default\"\n        >\n          {{ $t('post_status.posting') }}\n        </button>\n        <button\n          v-else-if=\"isOverLengthLimit\"\n          disabled\n          class=\"btn button-default\"\n        >\n          {{ $t('post_status.post') }}\n        </button>\n        <!-- touchstart is used to keep the OSK at the same position after a message send -->\n        <button\n          v-else\n          :disabled=\"uploadingFiles || disableSubmit\"\n          class=\"btn button-default\"\n          @touchstart.stop.prevent=\"postStatus($event, newStatus)\"\n          @click.stop.prevent=\"postStatus($event, newStatus)\"\n        >\n          {{ $t('post_status.post') }}\n        </button>\n      </div>\n      <div\n        v-show=\"showDropIcon !== 'hide'\"\n        :style=\"{ animation: showDropIcon === 'show' ? 'fade-in 0.25s' : 'fade-out 0.5s' }\"\n        class=\"drop-indicator\"\n        @dragleave=\"fileDragStop\"\n        @drop.stop=\"fileDrop\"\n      >\n        <FAIcon :icon=\"uploadFileLimitReached ? 'ban' : 'upload'\" />\n      </div>\n      <div\n        v-if=\"error\"\n        class=\"alert error\"\n      >\n        Error: {{ error }}\n        <button\n          class=\"button-unstyled\"\n          @click=\"clearError\"\n        >\n          <FAIcon\n            class=\"fa-scale-110 fa-old-padding\"\n            icon=\"times\"\n          />\n        </button>\n      </div>\n      <gallery\n        v-if=\"newStatus.files && newStatus.files.length > 0\"\n        class=\"attachments\"\n        :grid=\"true\"\n        :nsfw=\"false\"\n        :attachments=\"newStatus.files\"\n        :descriptions=\"newStatus.mediaDescriptions\"\n        :set-media=\"() => $store.dispatch('setMedia', newStatus.files)\"\n        :editable=\"true\"\n        :edit-attachment=\"editAttachment\"\n        :remove-attachment=\"removeMediaFile\"\n        :shift-up-attachment=\"newStatus.files.length > 1 && shiftUpMediaFile\"\n        :shift-dn-attachment=\"newStatus.files.length > 1 && shiftDnMediaFile\"\n        @play=\"$emit('mediaplay', attachment.id)\"\n        @pause=\"$emit('mediapause', attachment.id)\"\n      />\n      <div\n        v-if=\"newStatus.files.length > 0 && !disableSensitivityCheckbox\"\n        class=\"upload_settings\"\n      >\n        <Checkbox v-model=\"newStatus.nsfw\">\n          {{ $t('post_status.attachments_sensitive') }}\n        </Checkbox>\n      </div>\n    </form>\n  </div>\n</template>\n\n<script src=\"./post_status_form.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.post-status-form {\n  position: relative;\n\n  .attachments {\n    margin-bottom: 0.5em;\n  }\n\n  .form-bottom {\n    display: flex;\n    justify-content: space-between;\n    padding: 0.5em;\n    height: 2.5em;\n\n    button {\n      width: 10em;\n    }\n\n    p {\n      margin: 0.35em;\n      padding: 0.35em;\n      display: flex;\n    }\n  }\n\n  .form-bottom-left {\n    display: flex;\n    flex: 1;\n    padding-right: 7px;\n    margin-right: 7px;\n    max-width: 10em;\n  }\n\n  .preview-heading {\n    display: flex;\n    padding-left: 0.5em;\n  }\n\n  .preview-toggle {\n    flex: 1;\n    cursor: pointer;\n    user-select: none;\n\n    &:hover {\n      text-decoration: underline;\n    }\n    svg, i {\n      margin-left: 0.2em;\n      font-size: 0.8em;\n      transform: rotate(90deg);\n    }\n  }\n\n  .preview-container {\n    margin-bottom: 1em;\n  }\n\n  .preview-error {\n    font-style: italic;\n    color: $fallback--faint;\n    color: var(--faint, $fallback--faint);\n  }\n\n  .preview-status {\n    border: 1px solid $fallback--border;\n    border: 1px solid var(--border, $fallback--border);\n    border-radius: $fallback--tooltipRadius;\n    border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n    padding: 0.5em;\n    margin: 0;\n  }\n\n  .text-format {\n    .only-format {\n      color: $fallback--faint;\n      color: var(--faint, $fallback--faint);\n    }\n  }\n\n  .visibility-tray {\n    display: flex;\n    justify-content: space-between;\n    padding-top: 5px;\n    align-items: baseline;\n  }\n\n  .media-upload-icon, .poll-icon, .emoji-icon {\n    font-size: 1.85em;\n    line-height: 1.1;\n    flex: 1;\n    padding: 0 0.1em;\n    display: flex;\n    align-items: center;\n\n    &.selected, &:hover {\n      // needs to be specific to override icon default color\n      svg, i, label {\n        color: $fallback--lightText;\n        color: var(--lightText, $fallback--lightText);\n      }\n    }\n\n    &.disabled {\n      svg, i {\n        cursor: not-allowed;\n        color: $fallback--icon;\n        color: var(--btnDisabledText, $fallback--icon);\n\n        &:hover {\n          color: $fallback--icon;\n          color: var(--btnDisabledText, $fallback--icon);\n        }\n      }\n    }\n  }\n\n  // Order is not necessary but a good indicator\n  .media-upload-icon {\n    order: 1;\n    justify-content: left;\n  }\n\n  .emoji-icon {\n    order: 2;\n    justify-content: center;\n  }\n\n  .poll-icon {\n    order: 3;\n    justify-content: right;\n  }\n\n  .error {\n    text-align: center;\n  }\n\n  .media-upload-wrapper {\n    margin-right: .2em;\n    margin-bottom: .5em;\n    width: 18em;\n\n    img, video {\n      object-fit: contain;\n      max-height: 10em;\n    }\n\n    .video {\n      max-height: 10em;\n    }\n\n    input {\n      flex: 1;\n      width: 100%;\n    }\n  }\n\n  .status-input-wrapper {\n    display: flex;\n    position: relative;\n    width: 100%;\n    flex-direction: column;\n  }\n\n  .btn[disabled] {\n    cursor: not-allowed;\n  }\n\n  form {\n    display: flex;\n    flex-direction: column;\n    margin: 0.6em;\n    position: relative;\n  }\n\n  .form-group {\n    display: flex;\n    flex-direction: column;\n    padding: 0.25em 0.5em 0.5em;\n    line-height: 1.85;\n  }\n\n  .form-post-body {\n    // TODO: make a resizable textarea component?\n    box-sizing: content-box; // needed for easier computation of dynamic size\n    overflow: hidden;\n    transition: min-height 200ms 100ms;\n    // stock padding + 1 line of text (for counter)\n    padding-bottom: calc(var(--_padding) + var(--post-line-height) * 1em);\n    // two lines of text\n    height: calc(var(--post-line-height) * 1em);\n    min-height: calc(var(--post-line-height) * 1em);\n    resize: none;\n\n    &.scrollable-form {\n      overflow-y: auto;\n    }\n  }\n\n  .main-input {\n    position: relative;\n  }\n\n  .character-counter {\n    position: absolute;\n    bottom: 0;\n    right: 0;\n    padding: 0;\n    margin: 0 0.5em;\n\n    &.error {\n      color: $fallback--cRed;\n      color: var(--cRed, $fallback--cRed);\n    }\n  }\n\n  .btn[disabled] {\n    cursor: not-allowed;\n  }\n\n  @keyframes fade-in {\n    from { opacity: 0; }\n    to   { opacity: 0.6; }\n  }\n\n  @keyframes fade-out {\n    from { opacity: 0.6; }\n    to   { opacity: 0; }\n  }\n\n  .drop-indicator {\n    position: absolute;\n    width: 100%;\n    height: 100%;\n    font-size: 5em;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    opacity: 0.6;\n    color: $fallback--text;\n    color: var(--text, $fallback--text);\n    background-color: $fallback--bg;\n    background-color: var(--bg, $fallback--bg);\n    border-radius: $fallback--tooltipRadius;\n    border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n    border: 2px dashed $fallback--text;\n    border: 2px dashed var(--text, $fallback--text);\n  }\n}\n</style>\n","/* eslint-env browser */\nimport statusPosterService from '../../services/status_poster/status_poster.service.js'\nimport fileSizeFormatService from '../../services/file_size_format/file_size_format.js'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faUpload, faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faUpload,\n  faCircleNotch\n)\n\nconst mediaUpload = {\n  data () {\n    return {\n      uploadCount: 0,\n      uploadReady: true\n    }\n  },\n  computed: {\n    uploading () {\n      return this.uploadCount > 0\n    }\n  },\n  methods: {\n    uploadFile (file) {\n      const self = this\n      const store = this.$store\n      if (file.size > store.state.instance.uploadlimit) {\n        const filesize = fileSizeFormatService.fileSizeFormat(file.size)\n        const allowedsize = fileSizeFormatService.fileSizeFormat(store.state.instance.uploadlimit)\n        self.$emit('upload-failed', 'file_too_big', { filesize: filesize.num, filesizeunit: filesize.unit, allowedsize: allowedsize.num, allowedsizeunit: allowedsize.unit })\n        return\n      }\n      const formData = new FormData()\n      formData.append('file', file)\n\n      self.$emit('uploading')\n      self.uploadCount++\n\n      statusPosterService.uploadMedia({ store, formData })\n        .then((fileData) => {\n          self.$emit('uploaded', fileData)\n          self.decreaseUploadCount()\n        }, (error) => { // eslint-disable-line handle-callback-err\n          self.$emit('upload-failed', 'default')\n          self.decreaseUploadCount()\n        })\n    },\n    decreaseUploadCount () {\n      this.uploadCount--\n      if (this.uploadCount === 0) {\n        this.$emit('all-uploaded')\n      }\n    },\n    clearFile () {\n      this.uploadReady = false\n      this.$nextTick(() => {\n        this.uploadReady = true\n      })\n    },\n    multiUpload (files) {\n      for (const file of files) {\n        this.uploadFile(file)\n      }\n    },\n    change ({ target }) {\n      this.multiUpload(target.files)\n    }\n  },\n  props: [\n    'dropFiles',\n    'disabled'\n  ],\n  watch: {\n    'dropFiles': function (fileInfos) {\n      if (!this.uploading) {\n        this.multiUpload(fileInfos)\n      }\n    }\n  }\n}\n\nexport default mediaUpload\n","import { render } from \"./media_upload.vue?vue&type=template&id=8e180d3a\"\nimport script from \"./media_upload.js?vue&type=script&lang=js\"\nexport * from \"./media_upload.js?vue&type=script&lang=js\"\n\nimport \"./media_upload.vue?vue&type=style&index=0&id=8e180d3a&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <label\n    class=\"media-upload\"\n    :class=\"{ disabled: disabled }\"\n    :title=\"$t('tool_tip.media_upload')\"\n  >\n    <FAIcon\n      v-if=\"uploading\"\n      class=\"progress-icon\"\n      icon=\"circle-notch\"\n      spin\n    />\n    <FAIcon\n      v-if=\"!uploading\"\n      class=\"new-icon\"\n      icon=\"upload\"\n    />\n    <input\n      v-if=\"uploadReady\"\n      class=\"hidden-input-file\"\n      :disabled=\"disabled\"\n      type=\"file\"\n      multiple=\"true\"\n      @change=\"change\"\n    >\n  </label>\n</template>\n\n<script src=\"./media_upload.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.media-upload {\n  cursor: pointer; // We use <label> for interactivity... i wonder if it's fine\n\n  .hidden-input-file {\n    display: none;\n  }\n}\n </style>\n","<template>\n  <div\n    v-if=\"visible\"\n    class=\"poll-form\"\n  >\n    <div\n      v-for=\"(option, index) in options\"\n      :key=\"index\"\n      class=\"poll-option\"\n    >\n      <div class=\"input-container\">\n        <input\n          :id=\"`poll-${index}`\"\n          v-model=\"options[index]\"\n          size=\"1\"\n          class=\"poll-option-input\"\n          type=\"text\"\n          :placeholder=\"$t('polls.option')\"\n          :maxlength=\"maxLength\"\n          @change=\"updatePollToParent\"\n          @keydown.enter.stop.prevent=\"nextOption(index)\"\n        >\n      </div>\n      <button\n        v-if=\"options.length > 2\"\n        class=\"delete-option button-unstyled -hover-highlight\"\n        @click=\"deleteOption(index)\"\n      >\n        <FAIcon icon=\"times\" />\n      </button>\n    </div>\n    <button\n      v-if=\"options.length < maxOptions\"\n      class=\"add-option faint button-unstyled -hover-highlight\"\n      @click=\"addOption\"\n    >\n      <FAIcon\n        icon=\"plus\"\n        size=\"sm\"\n      />\n\n      {{ $t(\"polls.add_option\") }}\n    </button>\n    <div class=\"poll-type-expiry\">\n      <div\n        class=\"poll-type\"\n        :title=\"$t('polls.type')\"\n      >\n        <Select\n          v-model=\"pollType\"\n          class=\"poll-type-select\"\n          unstyled=\"true\"\n          @change=\"updatePollToParent\"\n        >\n          <option value=\"single\">\n            {{ $t('polls.single_choice') }}\n          </option>\n          <option value=\"multiple\">\n            {{ $t('polls.multiple_choices') }}\n          </option>\n        </Select>\n      </div>\n      <div\n        class=\"poll-expiry\"\n        :title=\"$t('polls.expiry')\"\n      >\n        <input\n          v-model=\"expiryAmount\"\n          type=\"number\"\n          class=\"expiry-amount hide-number-spinner\"\n          :min=\"minExpirationInCurrentUnit\"\n          :max=\"maxExpirationInCurrentUnit\"\n          @change=\"expiryAmountChange\"\n        >\n        {{ ' ' }}\n        <Select\n          v-model=\"expiryUnit\"\n          unstyled=\"true\"\n          class=\"expiry-unit\"\n          @change=\"expiryAmountChange\"\n        >\n          <option\n            v-for=\"unit in expiryUnits\"\n            :key=\"unit\"\n            :value=\"unit\"\n          >\n            {{ $t(`time.${unit}_short`, ['']) }}\n          </option>\n        </Select>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./poll_form.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.poll-form {\n  display: flex;\n  flex-direction: column;\n  padding: 0 0.5em 0.5em;\n\n  .add-option {\n    align-self: flex-start;\n    padding-top: 0.25em;\n    padding-left: 0.1em;\n  }\n\n  .poll-option {\n    display: flex;\n    align-items: baseline;\n    justify-content: space-between;\n    margin-bottom: 0.25em;\n  }\n\n  .input-container {\n    width: 100%;\n    input {\n      // Hack: dodge the floating X icon\n      padding-right: 2.5em;\n      width: 100%;\n    }\n  }\n\n  .delete-option {\n    // Hack: Move the icon over the input box\n    width: 1.5em;\n    margin-left: -1.5em;\n    z-index: 1;\n  }\n\n  .poll-type-expiry {\n    margin-top: 0.5em;\n    display: flex;\n    width: 100%;\n  }\n\n  .poll-type {\n    margin-right: 0.75em;\n    flex: 1 1 60%;\n\n    .poll-type-select {\n      padding-right: 0.75em;\n    }\n  }\n\n  .poll-expiry {\n    display: flex;\n\n    .expiry-amount {\n      width: 3em;\n      text-align: right;\n    }\n  }\n}\n</style>\n","import * as DateUtils from 'src/services/date_utils/date_utils.js'\nimport { uniq } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport Select from '../select/select.vue'\nimport {\n  faTimes,\n  faPlus\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes,\n  faPlus\n)\n\nexport default {\n  components: {\n    Select\n  },\n  name: 'PollForm',\n  props: ['visible'],\n  data: () => ({\n    pollType: 'single',\n    options: ['', ''],\n    expiryAmount: 10,\n    expiryUnit: 'minutes'\n  }),\n  computed: {\n    pollLimits () {\n      return this.$store.state.instance.pollLimits\n    },\n    maxOptions () {\n      return this.pollLimits.max_options\n    },\n    maxLength () {\n      return this.pollLimits.max_option_chars\n    },\n    expiryUnits () {\n      const allUnits = ['minutes', 'hours', 'days']\n      const expiry = this.convertExpiryFromUnit\n      return allUnits.filter(\n        unit => this.pollLimits.max_expiration >= expiry(unit, 1)\n      )\n    },\n    minExpirationInCurrentUnit () {\n      return Math.ceil(\n        this.convertExpiryToUnit(\n          this.expiryUnit,\n          this.pollLimits.min_expiration\n        )\n      )\n    },\n    maxExpirationInCurrentUnit () {\n      return Math.floor(\n        this.convertExpiryToUnit(\n          this.expiryUnit,\n          this.pollLimits.max_expiration\n        )\n      )\n    }\n  },\n  methods: {\n    clear () {\n      this.pollType = 'single'\n      this.options = ['', '']\n      this.expiryAmount = 10\n      this.expiryUnit = 'minutes'\n    },\n    nextOption (index) {\n      const element = this.$el.querySelector(`#poll-${index + 1}`)\n      if (element) {\n        element.focus()\n      } else {\n        // Try adding an option and try focusing on it\n        const addedOption = this.addOption()\n        if (addedOption) {\n          this.$nextTick(function () {\n            this.nextOption(index)\n          })\n        }\n      }\n    },\n    addOption () {\n      if (this.options.length < this.maxOptions) {\n        this.options.push('')\n        return true\n      }\n      return false\n    },\n    deleteOption (index, event) {\n      if (this.options.length > 2) {\n        this.options.splice(index, 1)\n        this.updatePollToParent()\n      }\n    },\n    convertExpiryToUnit (unit, amount) {\n      // Note: we want seconds and not milliseconds\n      switch (unit) {\n        case 'minutes': return (1000 * amount) / DateUtils.MINUTE\n        case 'hours': return (1000 * amount) / DateUtils.HOUR\n        case 'days': return (1000 * amount) / DateUtils.DAY\n      }\n    },\n    convertExpiryFromUnit (unit, amount) {\n      // Note: we want seconds and not milliseconds\n      switch (unit) {\n        case 'minutes': return 0.001 * amount * DateUtils.MINUTE\n        case 'hours': return 0.001 * amount * DateUtils.HOUR\n        case 'days': return 0.001 * amount * DateUtils.DAY\n      }\n    },\n    expiryAmountChange () {\n      this.expiryAmount =\n        Math.max(this.minExpirationInCurrentUnit, this.expiryAmount)\n      this.expiryAmount =\n        Math.min(this.maxExpirationInCurrentUnit, this.expiryAmount)\n      this.updatePollToParent()\n    },\n    updatePollToParent () {\n      const expiresIn = this.convertExpiryFromUnit(\n        this.expiryUnit,\n        this.expiryAmount\n      )\n\n      const options = uniq(this.options.filter(option => option !== ''))\n      if (options.length < 2) {\n        this.$emit('update-poll', { error: this.$t('polls.not_enough_options') })\n        return\n      }\n      this.$emit('update-poll', {\n        options,\n        multiple: this.pollType === 'multiple',\n        expiresIn\n      })\n    }\n  }\n}\n","import { render } from \"./poll_form.vue?vue&type=template&id=21f5ba7b\"\nimport script from \"./poll_form.js?vue&type=script&lang=js\"\nexport * from \"./poll_form.js?vue&type=script&lang=js\"\n\nimport \"./poll_form.vue?vue&type=style&index=0&id=21f5ba7b&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import statusPoster from '../../services/status_poster/status_poster.service.js'\nimport MediaUpload from '../media_upload/media_upload.vue'\nimport ScopeSelector from '../scope_selector/scope_selector.vue'\nimport EmojiInput from '../emoji_input/emoji_input.vue'\nimport PollForm from '../poll/poll_form.vue'\nimport Attachment from '../attachment/attachment.vue'\nimport Gallery from 'src/components/gallery/gallery.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { findOffset } from '../../services/offset_finder/offset_finder.service.js'\nimport { reject, map, uniqBy, debounce } from 'lodash'\nimport suggestor from '../emoji_input/suggestor.js'\nimport { mapGetters, mapState } from 'vuex'\nimport Checkbox from '../checkbox/checkbox.vue'\nimport Select from '../select/select.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faSmileBeam,\n  faPollH,\n  faUpload,\n  faBan,\n  faTimes,\n  faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faSmileBeam,\n  faPollH,\n  faUpload,\n  faBan,\n  faTimes,\n  faCircleNotch\n)\n\nconst buildMentionsString = ({ user, attentions = [] }, currentUser) => {\n  let allAttentions = [...attentions]\n\n  allAttentions.unshift(user)\n\n  allAttentions = uniqBy(allAttentions, 'id')\n  allAttentions = reject(allAttentions, { id: currentUser.id })\n\n  let mentions = map(allAttentions, (attention) => {\n    return `@${attention.screen_name}`\n  })\n\n  return mentions.length > 0 ? mentions.join(' ') + ' ' : ''\n}\n\n// Converts a string with px to a number like '2px' -> 2\nconst pxStringToNumber = (str) => {\n  return Number(str.substring(0, str.length - 2))\n}\n\nconst PostStatusForm = {\n  props: [\n    'replyTo',\n    'repliedUser',\n    'attentions',\n    'copyMessageScope',\n    'subject',\n    'disableSubject',\n    'disableScopeSelector',\n    'disableNotice',\n    'disableLockWarning',\n    'disablePolls',\n    'disableSensitivityCheckbox',\n    'disableSubmit',\n    'disablePreview',\n    'placeholder',\n    'maxHeight',\n    'postHandler',\n    'preserveFocus',\n    'autoFocus',\n    'fileLimit',\n    'submitOnEnter',\n    'emojiPickerPlacement',\n    'optimisticPosting'\n  ],\n  emits: [\n    'posted',\n    'resize',\n    'mediaplay',\n    'mediapause'\n  ],\n  components: {\n    MediaUpload,\n    EmojiInput,\n    PollForm,\n    ScopeSelector,\n    Checkbox,\n    Select,\n    Attachment,\n    StatusContent,\n    Gallery\n  },\n  mounted () {\n    this.updateIdempotencyKey()\n    this.resize(this.$refs.textarea)\n\n    if (this.replyTo) {\n      const textLength = this.$refs.textarea.value.length\n      this.$refs.textarea.setSelectionRange(textLength, textLength)\n    }\n\n    if (this.replyTo || this.autoFocus) {\n      this.$refs.textarea.focus()\n    }\n  },\n  data () {\n    const preset = this.$route.query.message\n    let statusText = preset || ''\n\n    const { scopeCopy } = this.$store.getters.mergedConfig\n\n    if (this.replyTo) {\n      const currentUser = this.$store.state.users.currentUser\n      statusText = buildMentionsString({ user: this.repliedUser, attentions: this.attentions }, currentUser)\n    }\n\n    const scope = ((this.copyMessageScope && scopeCopy) || this.copyMessageScope === 'direct')\n      ? this.copyMessageScope\n      : this.$store.state.users.currentUser.default_scope\n\n    const { postContentType: contentType, sensitiveByDefault, sensitiveIfSubject } = this.$store.getters.mergedConfig\n\n    return {\n      dropFiles: [],\n      uploadingFiles: false,\n      error: null,\n      posting: false,\n      highlighted: 0,\n      newStatus: {\n        spoilerText: this.subject || '',\n        status: statusText,\n        sensitiveIfSubject,\n        nsfw: !!sensitiveByDefault,\n        files: [],\n        poll: {},\n        mediaDescriptions: {},\n        visibility: scope,\n        contentType\n      },\n      caret: 0,\n      pollFormVisible: false,\n      showDropIcon: 'hide',\n      dropStopTimeout: null,\n      preview: null,\n      previewLoading: false,\n      emojiInputShown: false,\n      idempotencyKey: ''\n    }\n  },\n  computed: {\n    users () {\n      return this.$store.state.users.users\n    },\n    userDefaultScope () {\n      return this.$store.state.users.currentUser.default_scope\n    },\n    showAllScopes () {\n      return !this.mergedConfig.minimalScopesMode\n    },\n    emojiUserSuggestor () {\n      return suggestor({\n        emoji: [\n          ...this.$store.state.instance.emoji,\n          ...this.$store.state.instance.customEmoji\n        ],\n        store: this.$store\n      })\n    },\n    emojiSuggestor () {\n      return suggestor({\n        emoji: [\n          ...this.$store.state.instance.emoji,\n          ...this.$store.state.instance.customEmoji\n        ]\n      })\n    },\n    emoji () {\n      return this.$store.state.instance.emoji || []\n    },\n    customEmoji () {\n      return this.$store.state.instance.customEmoji || []\n    },\n    statusLength () {\n      return this.newStatus.status.length\n    },\n    spoilerTextLength () {\n      return this.newStatus.spoilerText.length\n    },\n    statusLengthLimit () {\n      return this.$store.state.instance.textlimit\n    },\n    hasStatusLengthLimit () {\n      return this.statusLengthLimit > 0\n    },\n    charactersLeft () {\n      return this.statusLengthLimit - (this.statusLength + this.spoilerTextLength)\n    },\n    isOverLengthLimit () {\n      return this.hasStatusLengthLimit && (this.charactersLeft < 0)\n    },\n    minimalScopesMode () {\n      return this.$store.state.instance.minimalScopesMode\n    },\n    alwaysShowSubject () {\n      return this.mergedConfig.alwaysShowSubjectInput\n    },\n    postFormats () {\n      return this.$store.state.instance.postFormats || []\n    },\n    safeDMEnabled () {\n      return this.$store.state.instance.safeDM\n    },\n    pollsAvailable () {\n      return this.$store.state.instance.pollsAvailable &&\n        this.$store.state.instance.pollLimits.max_options >= 2 &&\n        this.disablePolls !== true\n    },\n    hideScopeNotice () {\n      return this.disableNotice || this.$store.getters.mergedConfig.hideScopeNotice\n    },\n    pollContentError () {\n      return this.pollFormVisible &&\n        this.newStatus.poll &&\n        this.newStatus.poll.error\n    },\n    showPreview () {\n      return !this.disablePreview && (!!this.preview || this.previewLoading)\n    },\n    emptyStatus () {\n      return this.newStatus.status.trim() === '' && this.newStatus.files.length === 0\n    },\n    uploadFileLimitReached () {\n      return this.newStatus.files.length >= this.fileLimit\n    },\n    ...mapGetters(['mergedConfig']),\n    ...mapState({\n      mobileLayout: state => state.interface.mobileLayout\n    })\n  },\n  watch: {\n    'newStatus': {\n      deep: true,\n      handler () {\n        this.statusChanged()\n      }\n    }\n  },\n  methods: {\n    statusChanged () {\n      this.autoPreview()\n      this.updateIdempotencyKey()\n    },\n    clearStatus () {\n      const newStatus = this.newStatus\n      this.newStatus = {\n        status: '',\n        spoilerText: '',\n        files: [],\n        visibility: newStatus.visibility,\n        contentType: newStatus.contentType,\n        poll: {},\n        mediaDescriptions: {}\n      }\n      this.pollFormVisible = false\n      this.$refs.mediaUpload && this.$refs.mediaUpload.clearFile()\n      this.clearPollForm()\n      if (this.preserveFocus) {\n        this.$nextTick(() => {\n          this.$refs.textarea.focus()\n        })\n      }\n      let el = this.$el.querySelector('textarea')\n      el.style.height = 'auto'\n      el.style.height = undefined\n      this.error = null\n      if (this.preview) this.previewStatus()\n    },\n    async postStatus (event, newStatus, opts = {}) {\n      const { sensitiveIfSubject } = this.$store.getters.mergedConfig\n\n      if (this.posting && !this.optimisticPosting) { return }\n      if (this.disableSubmit) { return }\n      if (this.emojiInputShown) { return }\n      if (this.submitOnEnter) {\n        event.stopPropagation()\n        event.preventDefault()\n      }\n\n      if (this.optimisticPosting && (this.emptyStatus || this.isOverLengthLimit)) { return }\n\n      if (this.emptyStatus) {\n        this.error = this.$t('post_status.empty_status_error')\n        return\n      }\n\n      const poll = this.pollFormVisible ? this.newStatus.poll : {}\n      if (this.pollContentError) {\n        this.error = this.pollContentError\n        return\n      }\n\n      this.posting = true\n\n      try {\n        await this.setAllMediaDescriptions()\n      } catch (e) {\n        this.error = this.$t('post_status.media_description_error')\n        this.posting = false\n        return\n      }\n\n      const postingOptions = {\n        status: newStatus.status,\n        spoilerText: newStatus.spoilerText || null,\n        visibility: newStatus.visibility,\n        sensitive: (newStatus.nsfw || (sensitiveIfSubject && newStatus.spoilerText)),\n        media: newStatus.files,\n        store: this.$store,\n        inReplyToStatusId: this.replyTo,\n        contentType: newStatus.contentType,\n        poll,\n        idempotencyKey: this.idempotencyKey\n      }\n\n      const postHandler = this.postHandler ? this.postHandler : statusPoster.postStatus\n\n      postHandler(postingOptions).then((data) => {\n        if (!data.error) {\n          this.clearStatus()\n          this.$emit('posted', data)\n        } else {\n          this.error = data.error\n        }\n        this.posting = false\n      })\n    },\n    previewStatus () {\n      if (this.emptyStatus && this.newStatus.spoilerText.trim() === '') {\n        this.preview = { error: this.$t('post_status.preview_empty') }\n        this.previewLoading = false\n        return\n      }\n      const newStatus = this.newStatus\n      this.previewLoading = true\n      statusPoster.postStatus({\n        status: newStatus.status,\n        spoilerText: newStatus.spoilerText || null,\n        visibility: newStatus.visibility,\n        sensitive: newStatus.nsfw,\n        media: [],\n        store: this.$store,\n        inReplyToStatusId: this.replyTo,\n        contentType: newStatus.contentType,\n        poll: {},\n        preview: true\n      }).then((data) => {\n        // Don't apply preview if not loading, because it means\n        // user has closed the preview manually.\n        if (!this.previewLoading) return\n        if (!data.error) {\n          this.preview = data\n        } else {\n          this.preview = { error: data.error }\n        }\n      }).catch((error) => {\n        this.preview = { error }\n      }).finally(() => {\n        this.previewLoading = false\n      })\n    },\n    debouncePreviewStatus: debounce(function () { this.previewStatus() }, 500),\n    autoPreview () {\n      if (!this.preview) return\n      this.previewLoading = true\n      this.debouncePreviewStatus()\n    },\n    closePreview () {\n      this.preview = null\n      this.previewLoading = false\n    },\n    togglePreview () {\n      if (this.showPreview) {\n        this.closePreview()\n      } else {\n        this.previewStatus()\n      }\n    },\n    addMediaFile (fileInfo) {\n      this.newStatus.files.push(fileInfo)\n      this.$emit('resize', { delayed: true })\n    },\n    removeMediaFile (fileInfo) {\n      let index = this.newStatus.files.indexOf(fileInfo)\n      this.newStatus.files.splice(index, 1)\n      this.$emit('resize')\n    },\n    editAttachment (fileInfo, newText) {\n      this.newStatus.mediaDescriptions[fileInfo.id] = newText\n    },\n    shiftUpMediaFile (fileInfo) {\n      const { files } = this.newStatus\n      const index = this.newStatus.files.indexOf(fileInfo)\n      files.splice(index, 1)\n      files.splice(index - 1, 0, fileInfo)\n    },\n    shiftDnMediaFile (fileInfo) {\n      const { files } = this.newStatus\n      const index = this.newStatus.files.indexOf(fileInfo)\n      files.splice(index, 1)\n      files.splice(index + 1, 0, fileInfo)\n    },\n    uploadFailed (errString, templateArgs) {\n      templateArgs = templateArgs || {}\n      this.error = this.$t('upload.error.base') + ' ' + this.$t('upload.error.' + errString, templateArgs)\n    },\n    startedUploadingFiles () {\n      this.uploadingFiles = true\n    },\n    finishedUploadingFiles () {\n      this.$emit('resize')\n      this.uploadingFiles = false\n    },\n    type (fileInfo) {\n      return fileTypeService.fileType(fileInfo.mimetype)\n    },\n    paste (e) {\n      this.autoPreview()\n      this.resize(e)\n      if (e.clipboardData.files.length > 0) {\n        // prevent pasting of file as text\n        e.preventDefault()\n        // Strangely, files property gets emptied after event propagation\n        // Trying to wrap it in array doesn't work. Plus I doubt it's possible\n        // to hold more than one file in clipboard.\n        this.dropFiles = [e.clipboardData.files[0]]\n      }\n    },\n    fileDrop (e) {\n      if (e.dataTransfer && e.dataTransfer.types.includes('Files')) {\n        e.preventDefault() // allow dropping text like before\n        this.dropFiles = e.dataTransfer.files\n        clearTimeout(this.dropStopTimeout)\n        this.showDropIcon = 'hide'\n      }\n    },\n    fileDragStop (e) {\n      // The false-setting is done with delay because just using leave-events\n      // directly caused unwanted flickering, this is not perfect either but\n      // much less noticable.\n      clearTimeout(this.dropStopTimeout)\n      this.showDropIcon = 'fade'\n      this.dropStopTimeout = setTimeout(() => (this.showDropIcon = 'hide'), 500)\n    },\n    fileDrag (e) {\n      e.dataTransfer.dropEffect = this.uploadFileLimitReached ? 'none' : 'copy'\n      if (e.dataTransfer && e.dataTransfer.types.includes('Files')) {\n        clearTimeout(this.dropStopTimeout)\n        this.showDropIcon = 'show'\n      }\n    },\n    onEmojiInputInput (e) {\n      this.$nextTick(() => {\n        this.resize(this.$refs['textarea'])\n      })\n    },\n    resize (e) {\n      const target = e.target || e\n      if (!(target instanceof window.Element)) { return }\n\n      // Reset to default height for empty form, nothing else to do here.\n      if (target.value === '') {\n        target.style.height = null\n        this.$emit('resize')\n        this.$refs['emoji-input'].resize()\n        return\n      }\n\n      const formRef = this.$refs['form']\n      const bottomRef = this.$refs['bottom']\n      /* Scroller is either `window` (replies in TL), sidebar (main post form,\n       * replies in notifs) or mobile post form. Note that getting and setting\n       * scroll is different for `Window` and `Element`s\n       */\n      const bottomBottomPaddingStr = window.getComputedStyle(bottomRef)['padding-bottom']\n      const bottomBottomPadding = pxStringToNumber(bottomBottomPaddingStr)\n\n      const scrollerRef = this.$el.closest('.column.-scrollable') ||\n            this.$el.closest('.post-form-modal-view') ||\n            window\n\n      // Getting info about padding we have to account for, removing 'px' part\n      const topPaddingStr = window.getComputedStyle(target)['padding-top']\n      const bottomPaddingStr = window.getComputedStyle(target)['padding-bottom']\n      const topPadding = pxStringToNumber(topPaddingStr)\n      const bottomPadding = pxStringToNumber(bottomPaddingStr)\n      const vertPadding = topPadding + bottomPadding\n\n      const oldHeight = pxStringToNumber(target.style.height)\n\n      /* Explanation:\n       *\n       * https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight\n       * scrollHeight returns element's scrollable content height, i.e. visible\n       * element + overscrolled parts of it. We use it to determine when text\n       * inside the textarea exceeded its height, so we can set height to prevent\n       * overscroll, i.e. make textarea grow with the text. HOWEVER, since we\n       * explicitly set new height, scrollHeight won't go below that, so we can't\n       * SHRINK the textarea when there's extra space. To workaround that we set\n       * height to 'auto' which makes textarea tiny again, so that scrollHeight\n       * will match text height again. HOWEVER, shrinking textarea can screw with\n       * the scroll since there might be not enough padding around form-bottom to even\n       * warrant a scroll, so it will jump to 0 and refuse to move anywhere,\n       * so we check current scroll position before shrinking and then restore it\n       * with needed delta.\n       */\n\n      // this part has to be BEFORE the content size update\n      const currentScroll = scrollerRef === window\n        ? scrollerRef.scrollY\n        : scrollerRef.scrollTop\n      const scrollerHeight = scrollerRef === window\n        ? scrollerRef.innerHeight\n        : scrollerRef.offsetHeight\n      const scrollerBottomBorder = currentScroll + scrollerHeight\n\n      // BEGIN content size update\n      target.style.height = 'auto'\n      const heightWithoutPadding = Math.floor(target.scrollHeight - vertPadding)\n      let newHeight = this.maxHeight ? Math.min(heightWithoutPadding, this.maxHeight) : heightWithoutPadding\n      // This is a bit of a hack to combat target.scrollHeight being different on every other input\n      // on some browsers for whatever reason. Don't change the height if difference is 1px or less.\n      if (Math.abs(newHeight - oldHeight) <= 1) {\n        newHeight = oldHeight\n      }\n      target.style.height = `${newHeight}px`\n      this.$emit('resize', newHeight)\n      // END content size update\n\n      // We check where the bottom border of form-bottom element is, this uses findOffset\n      // to find offset relative to scrollable container (scroller)\n      const bottomBottomBorder = bottomRef.offsetHeight + findOffset(bottomRef, scrollerRef).top + bottomBottomPadding\n\n      const isBottomObstructed = scrollerBottomBorder < bottomBottomBorder\n      const isFormBiggerThanScroller = scrollerHeight < formRef.offsetHeight\n      const bottomChangeDelta = bottomBottomBorder - scrollerBottomBorder\n      // The intention is basically this;\n      // Keep form-bottom always visible so that submit button is in view EXCEPT\n      // if form element bigger than scroller and caret isn't at the end, so that\n      // if you scroll up and edit middle of text you won't get scrolled back to bottom\n      const shouldScrollToBottom = isBottomObstructed &&\n            !(isFormBiggerThanScroller &&\n              this.$refs.textarea.selectionStart !== this.$refs.textarea.value.length)\n      const totalDelta = shouldScrollToBottom ? bottomChangeDelta : 0\n      const targetScroll = Math.round(currentScroll + totalDelta)\n\n      if (scrollerRef === window) {\n        scrollerRef.scroll(0, targetScroll)\n      } else {\n        scrollerRef.scrollTop = targetScroll\n      }\n\n      this.$refs['emoji-input'].resize()\n    },\n    showEmojiPicker () {\n      this.$refs['textarea'].focus()\n      this.$refs['emoji-input'].triggerShowPicker()\n    },\n    clearError () {\n      this.error = null\n    },\n    changeVis (visibility) {\n      this.newStatus.visibility = visibility\n    },\n    togglePollForm () {\n      this.pollFormVisible = !this.pollFormVisible\n    },\n    setPoll (poll) {\n      this.newStatus.poll = poll\n    },\n    clearPollForm () {\n      if (this.$refs.pollForm) {\n        this.$refs.pollForm.clear()\n      }\n    },\n    dismissScopeNotice () {\n      this.$store.dispatch('setOption', { name: 'hideScopeNotice', value: true })\n    },\n    setMediaDescription (id) {\n      const description = this.newStatus.mediaDescriptions[id]\n      if (!description || description.trim() === '') return\n      return statusPoster.setMediaDescription({ store: this.$store, id, description })\n    },\n    setAllMediaDescriptions () {\n      const ids = this.newStatus.files.map(file => file.id)\n      return Promise.all(ids.map(id => this.setMediaDescription(id)))\n    },\n    handleEmojiInputShow (value) {\n      this.emojiInputShown = value\n    },\n    updateIdempotencyKey () {\n      this.idempotencyKey = Date.now().toString()\n    },\n    openProfileTab () {\n      this.$store.dispatch('openSettingsModalTab', 'profile')\n    }\n  }\n}\n\nexport default PostStatusForm\n","import { render } from \"./post_status_form.vue?vue&type=template&id=ae252da2\"\nimport script from \"./post_status_form.js?vue&type=script&lang=js\"\nexport * from \"./post_status_form.js?vue&type=script&lang=js\"\n\nimport \"./post_status_form.vue?vue&type=style&index=0&id=ae252da2&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <button\n    v-if=\"usePlaceholder\"\n    class=\"Attachment -placeholder button-unstyled\"\n    :class=\"classNames\"\n    @click=\"openModal\"\n  >\n    <a\n      v-if=\"type !== 'html'\"\n      class=\"placeholder\"\n      target=\"_blank\"\n      :href=\"attachment.url\"\n      :alt=\"attachment.description\"\n      :title=\"attachment.description\"\n      @click.prevent\n    >\n      <FAIcon :icon=\"placeholderIconClass\" />\n      <b>{{ nsfw ? \"NSFW / \" : \"\" }}</b>{{ edit ? '' : placeholderName }}\n    </a>\n    <div\n      v-if=\"edit || remove\"\n      class=\"attachment-buttons\"\n    >\n      <button\n        v-if=\"remove\"\n        class=\"button-unstyled attachment-button\"\n        @click.prevent=\"onRemove\"\n      >\n        <FAIcon icon=\"trash-alt\" />\n      </button>\n    </div>\n    <div\n      v-if=\"size !== 'hide' && !hideDescription && (edit || localDescription || showDescription)\"\n      class=\"description-container\"\n      :class=\"{ '-static': !edit }\"\n    >\n      <input\n        v-if=\"edit\"\n        v-model=\"localDescription\"\n        type=\"text\"\n        class=\"description-field\"\n        :placeholder=\"$t('post_status.media_description')\"\n        @keydown.enter.prevent=\"\"\n      >\n      <p v-else>\n        {{ localDescription }}\n      </p>\n    </div>\n  </button>\n  <div\n    v-else\n    class=\"Attachment\"\n    :class=\"classNames\"\n  >\n    <div\n      v-show=\"!isEmpty\"\n      class=\"attachment-wrapper\"\n    >\n      <a\n        v-if=\"hidden\"\n        class=\"image-container\"\n        :href=\"attachment.url\"\n        :alt=\"attachment.description\"\n        :title=\"attachment.description\"\n        @click.prevent.stop=\"toggleHidden\"\n      >\n        <img\n          :key=\"nsfwImage\"\n          class=\"nsfw\"\n          :src=\"nsfwImage\"\n        >\n        <FAIcon\n          v-if=\"type === 'video'\"\n          class=\"play-icon\"\n          icon=\"play-circle\"\n        />\n      </a>\n      <div\n        v-if=\"!hidden\"\n        class=\"attachment-buttons\"\n      >\n        <button\n          v-if=\"type === 'flash' && flashLoaded\"\n          class=\"button-unstyled attachment-button\"\n          :title=\"$t('status.attachment_stop_flash')\"\n          @click.prevent=\"stopFlash\"\n        >\n          <FAIcon icon=\"stop\" />\n        </button>\n        <button\n          v-if=\"attachment.description && size !== 'small' && !edit && type !== 'unknown'\"\n          class=\"button-unstyled attachment-button\"\n          :title=\"$t('status.show_attachment_description')\"\n          @click.prevent=\"toggleDescription\"\n        >\n          <FAIcon icon=\"align-right\" />\n        </button>\n        <button\n          v-if=\"!useModal && type !== 'unknown'\"\n          class=\"button-unstyled attachment-button\"\n          :title=\"$t('status.show_attachment_in_modal')\"\n          @click.prevent=\"openModalForce\"\n        >\n          <FAIcon icon=\"search-plus\" />\n        </button>\n        <button\n          v-if=\"nsfw && hideNsfwLocal\"\n          class=\"button-unstyled attachment-button\"\n          :title=\"$t('status.hide_attachment')\"\n          @click.prevent=\"toggleHidden\"\n        >\n          <FAIcon icon=\"times\" />\n        </button>\n        <button\n          v-if=\"shiftUp\"\n          class=\"button-unstyled attachment-button\"\n          :title=\"$t('status.move_up')\"\n          @click.prevent=\"onShiftUp\"\n        >\n          <FAIcon icon=\"chevron-left\" />\n        </button>\n        <button\n          v-if=\"shiftDn\"\n          class=\"button-unstyled attachment-button\"\n          :title=\"$t('status.move_down')\"\n          @click.prevent=\"onShiftDn\"\n        >\n          <FAIcon icon=\"chevron-right\" />\n        </button>\n        <button\n          v-if=\"remove\"\n          class=\"button-unstyled attachment-button\"\n          :title=\"$t('status.remove_attachment')\"\n          @click.prevent=\"onRemove\"\n        >\n          <FAIcon icon=\"trash-alt\" />\n        </button>\n      </div>\n\n      <a\n        v-if=\"type === 'image' && (!hidden || preloadImage)\"\n        class=\"image-container\"\n        :class=\"{'-hidden': hidden && preloadImage }\"\n        :href=\"attachment.url\"\n        target=\"_blank\"\n        @click.stop.prevent=\"openModal\"\n      >\n        <StillImage\n          class=\"image\"\n          :referrerpolicy=\"referrerpolicy\"\n          :mimetype=\"attachment.mimetype\"\n          :src=\"attachment.large_thumb_url || attachment.url\"\n          :image-load-handler=\"onImageLoad\"\n          :alt=\"attachment.description\"\n        />\n      </a>\n\n      <a\n        v-if=\"type === 'unknown' && !hidden\"\n        class=\"placeholder-container\"\n        :href=\"attachment.url\"\n        target=\"_blank\"\n      >\n        <FAIcon\n          size=\"5x\"\n          :icon=\"placeholderIconClass\"\n        />\n        <p>\n          {{ localDescription }}\n        </p>\n      </a>\n\n      <component\n        :is=\"videoTag\"\n        v-if=\"type === 'video' && !hidden\"\n        class=\"video-container\"\n        :class=\"{ 'button-unstyled': 'isModal' }\"\n        :href=\"attachment.url\"\n        @click.stop.prevent=\"openModal\"\n      >\n        <VideoAttachment\n          class=\"video\"\n          :attachment=\"attachment\"\n          :controls=\"!useModal\"\n          @play=\"$emit('play')\"\n          @pause=\"$emit('pause')\"\n        />\n        <FAIcon\n          v-if=\"useModal\"\n          class=\"play-icon\"\n          icon=\"play-circle\"\n        />\n      </component>\n\n      <span\n        v-if=\"type === 'audio' && !hidden\"\n        class=\"audio-container\"\n        :href=\"attachment.url\"\n        @click.stop.prevent=\"openModal\"\n      >\n        <audio\n          v-if=\"type === 'audio'\"\n          :src=\"attachment.url\"\n          :alt=\"attachment.description\"\n          :title=\"attachment.description\"\n          controls\n          @play=\"$emit('play')\"\n          @pause=\"$emit('pause')\"\n        />\n      </span>\n\n      <div\n        v-if=\"type === 'html' && attachment.oembed\"\n        class=\"oembed-container\"\n        @click.prevent=\"linkClicked\"\n      >\n        <div\n          v-if=\"attachment.thumb_url\"\n          class=\"image\"\n        >\n          <img :src=\"attachment.thumb_url\">\n        </div>\n        <div class=\"text\">\n          <!-- eslint-disable vue/no-v-html -->\n          <h1><a :href=\"attachment.url\">{{ attachment.oembed.title }}</a></h1>\n          <div v-html=\"attachment.oembed.oembedHTML\" />\n          <!-- eslint-enable vue/no-v-html -->\n        </div>\n      </div>\n\n      <span\n        v-if=\"type === 'flash' && !hidden\"\n        class=\"flash-container\"\n        :href=\"attachment.url\"\n        @click.stop.prevent=\"openModal\"\n      >\n        <Flash\n          ref=\"flash\"\n          class=\"flash\"\n          :src=\"attachment.large_thumb_url || attachment.url\"\n          @playerOpened=\"setFlashLoaded(true)\"\n          @playerClosed=\"setFlashLoaded(false)\"\n        />\n      </span>\n    </div>\n    <div\n      v-if=\"size !== 'hide' && !hideDescription && (edit || (localDescription && showDescription))\"\n      class=\"description-container\"\n      :class=\"{ '-static': !edit }\"\n    >\n      <input\n        v-if=\"edit\"\n        v-model=\"localDescription\"\n        type=\"text\"\n        class=\"description-field\"\n        :placeholder=\"$t('post_status.media_description')\"\n        @keydown.enter.prevent=\"\"\n      >\n      <p v-else>\n        {{ localDescription }}\n      </p>\n    </div>\n  </div>\n</template>\n\n<script src=\"./attachment.js\"></script>\n\n<style src=\"./attachment.scss\" lang=\"scss\"></style>\n","import StillImage from '../still-image/still-image.vue'\nimport Flash from '../flash/flash.vue'\nimport VideoAttachment from '../video_attachment/video_attachment.vue'\nimport nsfwImage from '../../assets/nsfw.png'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faFile,\n  faMusic,\n  faImage,\n  faVideo,\n  faPlayCircle,\n  faTimes,\n  faStop,\n  faSearchPlus,\n  faTrashAlt,\n  faPencilAlt,\n  faAlignRight\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faFile,\n  faMusic,\n  faImage,\n  faVideo,\n  faPlayCircle,\n  faTimes,\n  faStop,\n  faSearchPlus,\n  faTrashAlt,\n  faPencilAlt,\n  faAlignRight\n)\n\nconst Attachment = {\n  props: [\n    'attachment',\n    'description',\n    'hideDescription',\n    'nsfw',\n    'size',\n    'setMedia',\n    'remove',\n    'shiftUp',\n    'shiftDn',\n    'edit'\n  ],\n  data () {\n    return {\n      localDescription: this.description || this.attachment.description,\n      nsfwImage: this.$store.state.instance.nsfwCensorImage || nsfwImage,\n      hideNsfwLocal: this.$store.getters.mergedConfig.hideNsfw,\n      preloadImage: this.$store.getters.mergedConfig.preloadImage,\n      loading: false,\n      img: fileTypeService.fileType(this.attachment.mimetype) === 'image' && document.createElement('img'),\n      modalOpen: false,\n      showHidden: false,\n      flashLoaded: false,\n      showDescription: false\n    }\n  },\n  components: {\n    Flash,\n    StillImage,\n    VideoAttachment\n  },\n  computed: {\n    classNames () {\n      return [\n        {\n          '-loading': this.loading,\n          '-nsfw-placeholder': this.hidden,\n          '-editable': this.edit !== undefined\n        },\n        '-type-' + this.type,\n        this.size && '-size-' + this.size,\n        `-${this.useContainFit ? 'contain' : 'cover'}-fit`\n      ]\n    },\n    usePlaceholder () {\n      return this.size === 'hide'\n    },\n    useContainFit () {\n      return this.$store.getters.mergedConfig.useContainFit\n    },\n    placeholderName () {\n      if (this.attachment.description === '' || !this.attachment.description) {\n        return this.type.toUpperCase()\n      }\n      return this.attachment.description\n    },\n    placeholderIconClass () {\n      if (this.type === 'image') return 'image'\n      if (this.type === 'video') return 'video'\n      if (this.type === 'audio') return 'music'\n      return 'file'\n    },\n    referrerpolicy () {\n      return this.$store.state.instance.mediaProxyAvailable ? '' : 'no-referrer'\n    },\n    type () {\n      return fileTypeService.fileType(this.attachment.mimetype)\n    },\n    hidden () {\n      return this.nsfw && this.hideNsfwLocal && !this.showHidden\n    },\n    isEmpty () {\n      return (this.type === 'html' && !this.attachment.oembed)\n    },\n    useModal () {\n      let modalTypes = []\n      switch (this.size) {\n        case 'hide':\n        case 'small':\n          modalTypes = ['image', 'video', 'audio', 'flash']\n          break\n        default:\n          modalTypes = this.mergedConfig.playVideosInModal\n            ? ['image', 'video', 'flash']\n            : ['image']\n          break\n      }\n      return modalTypes.includes(this.type)\n    },\n    videoTag () {\n      return this.useModal ? 'button' : 'span'\n    },\n    ...mapGetters(['mergedConfig'])\n  },\n  watch: {\n    localDescription (newVal) {\n      this.onEdit(newVal)\n    }\n  },\n  methods: {\n    linkClicked ({ target }) {\n      if (target.tagName === 'A') {\n        window.open(target.href, '_blank')\n      }\n    },\n    openModal (event) {\n      if (this.useModal) {\n        this.$emit('setMedia')\n        this.$store.dispatch('setCurrentMedia', this.attachment)\n      } else if (this.type === 'unknown') {\n        window.open(this.attachment.url)\n      }\n    },\n    openModalForce (event) {\n      this.$emit('setMedia')\n      this.$store.dispatch('setCurrentMedia', this.attachment)\n    },\n    onEdit (event) {\n      this.edit && this.edit(this.attachment, event)\n    },\n    onRemove () {\n      this.remove && this.remove(this.attachment)\n    },\n    onShiftUp () {\n      this.shiftUp && this.shiftUp(this.attachment)\n    },\n    onShiftDn () {\n      this.shiftDn && this.shiftDn(this.attachment)\n    },\n    stopFlash () {\n      this.$refs.flash.closePlayer()\n    },\n    setFlashLoaded (event) {\n      this.flashLoaded = event\n    },\n    toggleDescription () {\n      this.showDescription = !this.showDescription\n    },\n    toggleHidden (event) {\n      if (\n        (this.mergedConfig.useOneClickNsfw && !this.showHidden) &&\n        (this.type !== 'video' || this.mergedConfig.playVideosInModal)\n      ) {\n        this.openModal(event)\n        return\n      }\n      if (this.img && !this.preloadImage) {\n        if (this.img.onload) {\n          this.img.onload()\n        } else {\n          this.loading = true\n          this.img.src = this.attachment.url\n          this.img.onload = () => {\n            this.loading = false\n            this.showHidden = !this.showHidden\n          }\n        }\n      } else {\n        this.showHidden = !this.showHidden\n      }\n    },\n    onImageLoad (image) {\n      const width = image.naturalWidth\n      const height = image.naturalHeight\n      this.$emit('naturalSizeLoad', { id: this.attachment.id, width, height })\n    }\n  }\n}\n\nexport default Attachment\n","import { render } from \"./attachment.vue?vue&type=template&id=1177e21f\"\nimport script from \"./attachment.js?vue&type=script&lang=js\"\nexport * from \"./attachment.js?vue&type=script&lang=js\"\n\nimport \"./attachment.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <time\n    :datetime=\"time\"\n    :title=\"localeDateString\"\n  >\n    {{ $t(relativeTime.key, [relativeTime.num]) }}\n  </time>\n</template>\n\n<script>\nimport * as DateUtils from 'src/services/date_utils/date_utils.js'\nimport localeService from 'src/services/locale/locale.service.js'\n\nexport default {\n  name: 'Timeago',\n  props: ['time', 'autoUpdate', 'longFormat', 'nowThreshold'],\n  data () {\n    return {\n      relativeTime: { key: 'time.now', num: 0 },\n      interval: null\n    }\n  },\n  computed: {\n    localeDateString () {\n      const browserLocale = localeService.internalToBrowserLocale(this.$i18n.locale)\n      return typeof this.time === 'string'\n        ? new Date(Date.parse(this.time)).toLocaleString(browserLocale)\n        : this.time.toLocaleString(browserLocale)\n    }\n  },\n  created () {\n    this.refreshRelativeTimeObject()\n  },\n  unmounted () {\n    clearTimeout(this.interval)\n  },\n  methods: {\n    refreshRelativeTimeObject () {\n      const nowThreshold = typeof this.nowThreshold === 'number' ? this.nowThreshold : 1\n      this.relativeTime = this.longFormat\n        ? DateUtils.relativeTime(this.time, nowThreshold)\n        : DateUtils.relativeTimeShort(this.time, nowThreshold)\n\n      if (this.autoUpdate) {\n        this.interval = setTimeout(\n          this.refreshRelativeTimeObject,\n          1000 * this.autoUpdate\n        )\n      }\n    }\n  }\n}\n</script>\n","import { render } from \"./timeago.vue?vue&type=template&id=4a007a5d\"\nimport script from \"./timeago.vue?vue&type=script&lang=js\"\nexport * from \"./timeago.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"list\">\n    <div\n      v-for=\"item in items\"\n      :key=\"getKey(item)\"\n      class=\"list-item\"\n    >\n      <slot\n        name=\"item\"\n        :item=\"item\"\n      />\n    </div>\n    <div\n      v-if=\"items.length === 0 && !!$slots.empty\"\n      class=\"list-empty-content faint\"\n    >\n      <slot name=\"empty\" />\n    </div>\n  </div>\n</template>\n\n<script>\nexport default {\n  props: {\n    items: {\n      type: Array,\n      default: () => []\n    },\n    getKey: {\n      type: Function,\n      default: item => item.id\n    }\n  }\n}\n</script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.list {\n  &-item:not(:last-child) {\n    border-bottom: 1px solid;\n    border-bottom-color: $fallback--border;\n    border-bottom-color: var(--border, $fallback--border);\n  }\n\n  &-empty-content {\n    text-align: center;\n    padding: 10px;\n  }\n}\n</style>\n","import { render } from \"./list.vue?vue&type=template&id=c1790f52\"\nimport script from \"./list.vue?vue&type=script&lang=js\"\nexport * from \"./list.vue?vue&type=script&lang=js\"\n\nimport \"./list.vue?vue&type=style&index=0&id=c1790f52&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// When contributing, please sort JSON before committing so it would be easier to see what's missing and what's being added compared to English and other languages. It's not obligatory, but just an advice.\n// To sort json use jq https://stedolan.github.io/jq and invoke it like `jq -S . xx.json > xx.sorted.json`, AFAIK, there's no inplace edit option like in sed\n// Also, when adding a new language to \"messages\" variable, please do it alphabetically by language code so that users can search or check their custom language easily.\n\n// For anyone contributing to old huge messages.js and in need to quickly convert it to JSON\n// sed command for converting currently formatted JS to JSON:\n// sed -i -e \"s/'//gm\" -e 's/\"/\\\\\"/gm' -re 's/^( +)(.+?): ((.+?))?(,?)(\\{?)$/\\1\"\\2\": \"\\4\"/gm' -e 's/\\\"\\{\\\"/{/g' -e 's/,\"$/\",/g' file.json\n// There's only problem that apostrophe character ' gets replaced by \\\\ so you have to fix it manually, sorry.\n\nconst loaders = {\n  ar: () => import('./ar.json'),\n  ca: () => import('./ca.json'),\n  cs: () => import('./cs.json'),\n  de: () => import('./de.json'),\n  eo: () => import('./eo.json'),\n  es: () => import('./es.json'),\n  et: () => import('./et.json'),\n  eu: () => import('./eu.json'),\n  fi: () => import('./fi.json'),\n  fr: () => import('./fr.json'),\n  ga: () => import('./ga.json'),\n  he: () => import('./he.json'),\n  hu: () => import('./hu.json'),\n  it: () => import('./it.json'),\n  ja: () => import('./ja_pedantic.json'),\n  ja_easy: () => import('./ja_easy.json'),\n  ko: () => import('./ko.json'),\n  nb: () => import('./nb.json'),\n  nl: () => import('./nl.json'),\n  oc: () => import('./oc.json'),\n  pl: () => import('./pl.json'),\n  pt: () => import('./pt.json'),\n  ro: () => import('./ro.json'),\n  ru: () => import('./ru.json'),\n  te: () => import('./te.json'),\n  uk: () => import('./uk.json'),\n  zh: () => import('./zh.json'),\n  zh_Hant: () => import('./zh_Hant.json')\n}\n\nconst messages = {\n  languages: ['en', ...Object.keys(loaders)],\n  default: {\n    en: require('./en.json').default\n  },\n  setLanguage: async (i18n, language) => {\n    if (loaders[language]) {\n      let messages = await loaders[language]()\n      i18n.setLocaleMessage(language, messages.default)\n    }\n    i18n.locale = language\n  }\n}\n\nexport default messages\n","// eslint-disable-next-line no-unused\nimport { h, Fragment } from 'vue'\nimport { mapState } from 'vuex'\nimport { FontAwesomeIcon as FAIcon } from '@fortawesome/vue-fontawesome'\n\nimport './tab_switcher.scss'\n\nconst findFirstUsable = (slots) => slots.findIndex(_ => _.props)\n\nexport default {\n  name: 'TabSwitcher',\n  props: {\n    renderOnlyFocused: {\n      required: false,\n      type: Boolean,\n      default: false\n    },\n    onSwitch: {\n      required: false,\n      type: Function,\n      default: undefined\n    },\n    activeTab: {\n      required: false,\n      type: String,\n      default: undefined\n    },\n    scrollableTabs: {\n      required: false,\n      type: Boolean,\n      default: false\n    },\n    sideTabBar: {\n      required: false,\n      type: Boolean,\n      default: false\n    },\n    bodyScrollLock: {\n      required: false,\n      type: Boolean,\n      default: false\n    }\n  },\n  data () {\n    return {\n      active: findFirstUsable(this.slots())\n    }\n  },\n  computed: {\n    activeIndex () {\n      // In case of controlled component\n      if (this.activeTab) {\n        return this.slots().findIndex(slot => slot && slot.props && this.activeTab === slot.props.key)\n      } else {\n        return this.active\n      }\n    },\n    isActive () {\n      return tabName => {\n        const isWanted = slot => slot.props && slot.props['data-tab-name'] === tabName\n        return this.$slots.default().findIndex(isWanted) === this.activeIndex\n      }\n    },\n    settingsModalVisible () {\n      return this.settingsModalState === 'visible'\n    },\n    ...mapState({\n      settingsModalState: state => state.interface.settingsModalState\n    })\n  },\n  beforeUpdate () {\n    const currentSlot = this.slots()[this.active]\n    if (!currentSlot.props) {\n      this.active = findFirstUsable(this.slots())\n    }\n  },\n  methods: {\n    clickTab (index) {\n      return (e) => {\n        e.preventDefault()\n        this.setTab(index)\n      }\n    },\n    // DO NOT put it to computed, it doesn't work (caching?)\n    slots () {\n      if (this.$slots.default()[0].type === Fragment) {\n        return this.$slots.default()[0].children\n      }\n      return this.$slots.default()\n    },\n    setTab (index) {\n      if (typeof this.onSwitch === 'function') {\n        this.onSwitch.call(null, this.slots()[index].key)\n      }\n      this.active = index\n      if (this.scrollableTabs) {\n        this.$refs.contents.scrollTop = 0\n      }\n    }\n  },\n  render () {\n    const tabs = this.slots()\n      .map((slot, index) => {\n        const props = slot.props\n        if (!props) return\n        const classesTab = ['tab', 'button-default']\n        const classesWrapper = ['tab-wrapper']\n        if (this.activeIndex === index) {\n          classesTab.push('active')\n          classesWrapper.push('active')\n        }\n        if (props.image) {\n          return (\n            <div class={classesWrapper.join(' ')}>\n              <button\n                disabled={props.disabled}\n                onClick={this.clickTab(index)}\n                class={classesTab.join(' ')}\n                type=\"button\"\n              >\n                <img src={props.image} title={props['image-tooltip']}/>\n                {props.label ? '' : props.label}\n              </button>\n            </div>\n          )\n        }\n        return (\n          <div class={classesWrapper.join(' ')}>\n            <button\n              disabled={props.disabled}\n              onClick={this.clickTab(index)}\n              class={classesTab.join(' ')}\n              type=\"button\"\n            >\n              {!props.icon ? '' : (<FAIcon class=\"tab-icon\" size=\"2x\" fixed-width icon={props.icon}/>)}\n              <span class=\"text\">\n                {props.label}\n              </span>\n            </button>\n          </div>\n        )\n      })\n\n    const contents = this.slots().map((slot, index) => {\n      const props = slot.props\n      if (!props) return\n      const active = this.activeIndex === index\n      const classes = [ active ? 'active' : 'hidden' ]\n      if (props.fullHeight) {\n        classes.push('full-height')\n      }\n      const renderSlot = (!this.renderOnlyFocused || active)\n        ? slot\n        : ''\n\n      return (\n        <div class={classes}>\n          {\n            this.sideTabBar\n              ? <h1 class=\"mobile-label\">{props.label}</h1>\n              : ''\n          }\n          {renderSlot}\n        </div>\n      )\n    })\n\n    return (\n      <div class={'tab-switcher ' + (this.sideTabBar ? 'side-tabs' : 'top-tabs')}>\n        <div class=\"tabs\">\n          {tabs}\n        </div>\n        <div\n          ref=\"contents\"\n          class={'contents' + (this.scrollableTabs ? ' scrollable-tabs' : '')}\n          v-body-scroll-lock={this.bodyScrollLock}\n        >\n          {contents}\n        </div>\n      </div>\n    )\n  }\n}\n","import { map } from 'lodash'\nimport apiService from '../api/api.service.js'\n\nconst postStatus = ({\n  store,\n  status,\n  spoilerText,\n  visibility,\n  sensitive,\n  poll,\n  media = [],\n  inReplyToStatusId = undefined,\n  contentType = 'text/plain',\n  preview = false,\n  idempotencyKey = ''\n}) => {\n  const mediaIds = map(media, 'id')\n\n  return apiService.postStatus({\n    credentials: store.state.users.currentUser.credentials,\n    status,\n    spoilerText,\n    visibility,\n    sensitive,\n    mediaIds,\n    inReplyToStatusId,\n    contentType,\n    poll,\n    preview,\n    idempotencyKey\n  })\n    .then((data) => {\n      if (!data.error && !preview) {\n        store.dispatch('addNewStatuses', {\n          statuses: [data],\n          timeline: 'friends',\n          showImmediately: true,\n          noIdUpdate: true // To prevent missing notices on next pull.\n        })\n      }\n      return data\n    })\n    .catch((err) => {\n      return {\n        error: err.message\n      }\n    })\n}\n\nconst uploadMedia = ({ store, formData }) => {\n  const credentials = store.state.users.currentUser.credentials\n  return apiService.uploadMedia({ credentials, formData })\n}\n\nconst setMediaDescription = ({ store, id, description }) => {\n  const credentials = store.state.users.currentUser.credentials\n  return apiService.setMediaDescription({ credentials, id, description })\n}\n\nconst statusPosterService = {\n  postStatus,\n  uploadMedia,\n  setMediaDescription\n}\n\nexport default statusPosterService\n","<template>\n  <teleport\n    :disabled=\"minimalMode || disableTeleport\"\n    :to=\"teleportTarget\"\n  >\n    <div\n      :class=\"{ minimal: minimalMode }\"\n      class=\"Notifications\"\n    >\n      <div :class=\"mainClass\">\n        <div\n          v-if=\"!noHeading\"\n          class=\"notifications-heading panel-heading -sticky\"\n        >\n          <div class=\"title\">\n            {{ $t('notifications.notifications') }}\n            <span\n              v-if=\"unseenCount\"\n              class=\"badge badge-notification unseen-count\"\n            >{{ unseenCount }}</span>\n          </div>\n          <button\n            v-if=\"unseenCount\"\n            class=\"button-default read-button\"\n            @click.prevent=\"markAsSeen\"\n          >\n            {{ $t('notifications.read') }}\n          </button>\n          <NotificationFilters />\n        </div>\n        <div class=\"panel-body\">\n          <div\n            v-for=\"notification in notificationsToDisplay\"\n            :key=\"notification.id\"\n            class=\"notification\"\n            :class=\"{unseen: !minimalMode && !notification.seen}\"\n          >\n            <div class=\"notification-overlay\" />\n            <notification :notification=\"notification\" />\n          </div>\n        </div>\n        <div class=\"panel-footer\">\n          <div\n            v-if=\"bottomedOut\"\n            class=\"new-status-notification text-center faint\"\n          >\n            {{ $t('notifications.no_more_notifications') }}\n          </div>\n          <button\n            v-else-if=\"!loading\"\n            class=\"button-unstyled -link -fullwidth\"\n            @click.prevent=\"fetchOlderNotifications()\"\n          >\n            <div class=\"new-status-notification text-center\">\n              {{ minimalMode ? $t('interactions.load_older') : $t('notifications.load_older') }}\n            </div>\n          </button>\n          <div\n            v-else\n            class=\"new-status-notification text-center\"\n          >\n            <FAIcon\n              icon=\"circle-notch\"\n              spin\n              size=\"lg\"\n            />\n          </div>\n        </div>\n      </div>\n    </div>\n  </teleport>\n</template>\n\n<script src=\"./notifications.js\"></script>\n<style lang=\"scss\" src=\"./notifications.scss\"></style>\n","<template>\n  <Status\n    v-if=\"notification.type === 'mention'\"\n    class=\"Notification\"\n    :compact=\"true\"\n    :statusoid=\"notification.status\"\n  />\n  <div v-else>\n    <div\n      v-if=\"needMute && !unmuted\"\n      class=\"Notification container -muted\"\n    >\n      <small>\n        <router-link :to=\"userProfileLink\">\n          {{ notification.from_profile.screen_name_ui }}\n        </router-link>\n      </small>\n      <button\n        class=\"button-unstyled unmute\"\n        @click.prevent=\"toggleMute\"\n      >\n        <FAIcon\n          class=\"fa-scale-110 fa-old-padding\"\n          icon=\"eye-slash\"\n        />\n      </button>\n    </div>\n    <div\n      v-else\n      class=\"Notification non-mention\"\n      :class=\"[userClass, { highlighted: userStyle }, '-type--' + notification.type]\"\n      :style=\"[ userStyle ]\"\n    >\n      <a\n        class=\"avatar-container\"\n        :href=\"$router.resolve(userProfileLink).href\"\n        @click.stop.prevent.capture=\"toggleUserExpanded\"\n      >\n        <UserAvatar\n          :compact=\"true\"\n          :better-shadow=\"betterShadow\"\n          :user=\"notification.from_profile\"\n        />\n      </a>\n      <div class=\"notification-right\">\n        <UserCard\n          v-if=\"userExpanded\"\n          :user-id=\"getUser(notification).id\"\n          :rounded=\"true\"\n          :bordered=\"true\"\n        />\n        <span class=\"notification-details\">\n          <div class=\"name-and-action\">\n            <!-- eslint-disable vue/no-v-html -->\n            <bdi v-if=\"!!notification.from_profile.name_html\">\n              <RichContent\n                class=\"username\"\n                :title=\"'@'+notification.from_profile.screen_name_ui\"\n                :html=\"notification.from_profile.name_html\"\n                :emoji=\"notification.from_profile.emoji\"\n              />\n            </bdi>\n            <!-- eslint-enable vue/no-v-html -->\n            <span\n              v-else\n              class=\"username\"\n              :title=\"'@'+notification.from_profile.screen_name_ui\"\n            >\n              {{ notification.from_profile.name }}\n            </span>\n            {{ ' ' }}\n            <span v-if=\"notification.type === 'like'\">\n              <FAIcon\n                class=\"type-icon\"\n                icon=\"star\"\n              />\n              {{ ' ' }}\n              <small>{{ $t('notifications.favorited_you') }}</small>\n            </span>\n            <span v-if=\"notification.type === 'repeat'\">\n              <FAIcon\n                class=\"type-icon\"\n                icon=\"retweet\"\n                :title=\"$t('tool_tip.repeat')\"\n              />\n              {{ ' ' }}\n              <small>{{ $t('notifications.repeated_you') }}</small>\n            </span>\n            <span v-if=\"notification.type === 'follow'\">\n              <FAIcon\n                class=\"type-icon\"\n                icon=\"user-plus\"\n              />\n              {{ ' ' }}\n              <small>{{ $t('notifications.followed_you') }}</small>\n            </span>\n            <span v-if=\"notification.type === 'follow_request'\">\n              <FAIcon\n                class=\"type-icon\"\n                icon=\"user\"\n              />\n              {{ ' ' }}\n              <small>{{ $t('notifications.follow_request') }}</small>\n            </span>\n            <span v-if=\"notification.type === 'move'\">\n              <FAIcon\n                class=\"type-icon\"\n                icon=\"suitcase-rolling\"\n              />\n              {{ ' ' }}\n              <small>{{ $t('notifications.migrated_to') }}</small>\n            </span>\n            <span v-if=\"notification.type === 'pleroma:emoji_reaction'\">\n              <small>\n                <i18n-t\n                  scope=\"global\"\n                  keypath=\"notifications.reacted_with\"\n                >\n                  <img\n                    v-if=\"notification.emoji_url !== null\"\n                    class=\"notification-reaction-emoji\"\n                    :src=\"notification.emoji_url\"\n                    :name=\"notification.emoji\"\n                  >\n                  <span\n                    v-else\n                    class=\"emoji-reaction-emoji\"\n                  >\n                    {{ notification.emoji }}\n                  </span>\n                </i18n-t>\n              </small>\n            </span>\n            <span v-if=\"notification.type === 'poll'\">\n              <FAIcon\n                class=\"type-icon\"\n                icon=\"poll-h\"\n              />\n              {{ ' ' }}\n              <small>{{ $t('notifications.poll_ended') }}</small>\n            </span>\n          </div>\n          <div\n            v-if=\"isStatusNotification\"\n            class=\"timeago\"\n          >\n            <router-link\n              v-if=\"notification.status\"\n              :to=\"{ name: 'conversation', params: { id: notification.status.id } }\"\n              class=\"faint-link\"\n            >\n              <Timeago\n                :time=\"notification.created_at\"\n                :auto-update=\"240\"\n              />\n            </router-link>\n          </div>\n          <div\n            v-else\n            class=\"timeago\"\n          >\n            <span class=\"faint\">\n              <Timeago\n                :time=\"notification.created_at\"\n                :auto-update=\"240\"\n              />\n            </span>\n          </div>\n          <button\n            v-if=\"needMute\"\n            class=\"button-unstyled\"\n            @click.prevent=\"toggleMute\"\n          >\n            <FAIcon\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"eye-slash\"\n            />\n          </button>\n        </span>\n        <div\n          v-if=\"notification.type === 'follow' || notification.type === 'follow_request'\"\n          class=\"follow-text\"\n        >\n          <router-link\n            :to=\"userProfileLink\"\n            class=\"follow-name\"\n          >\n            @{{ notification.from_profile.screen_name_ui }}\n          </router-link>\n          <div\n            v-if=\"notification.type === 'follow_request'\"\n            style=\"white-space: nowrap;\"\n          >\n            <button\n              class=\"button-unstyled\"\n              :title=\"$t('tool_tip.accept_follow_request')\"\n              @click=\"approveUser()\"\n            >\n              <FAIcon\n                icon=\"check\"\n                class=\"fa-scale-110 fa-old-padding follow-request-accept\"\n              />\n            </button>\n            <button\n              class=\"button-unstyled\"\n              :title=\"$t('tool_tip.reject_follow_request')\"\n              @click=\"denyUser()\"\n            >\n              <FAIcon\n                icon=\"times\"\n                class=\"fa-scale-110 fa-old-padding follow-request-reject\"\n              />\n            </button>\n          </div>\n        </div>\n        <div\n          v-else-if=\"notification.type === 'move'\"\n          class=\"move-text\"\n        >\n          <router-link :to=\"targetUserProfileLink\">\n            @{{ notification.target.screen_name_ui }}\n          </router-link>\n        </div>\n        <template v-else>\n          <StatusContent\n            class=\"faint\"\n            :compact=\"true\"\n            :status=\"notification.action\"\n          />\n        </template>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./notification.js\"></script>\n<style src=\"./notification.scss\" lang=\"scss\"></style>\n","import StatusContent from '../status_content/status_content.vue'\nimport { mapState } from 'vuex'\nimport Status from '../status/status.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport UserCard from '../user_card/user_card.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport { isStatusNotification } from '../../services/notification_utils/notification_utils.js'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faCheck,\n  faTimes,\n  faStar,\n  faRetweet,\n  faUserPlus,\n  faEyeSlash,\n  faUser,\n  faSuitcaseRolling\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCheck,\n  faTimes,\n  faStar,\n  faRetweet,\n  faUserPlus,\n  faUser,\n  faEyeSlash,\n  faSuitcaseRolling\n)\n\nconst Notification = {\n  data () {\n    return {\n      userExpanded: false,\n      betterShadow: this.$store.state.interface.browserSupport.cssFilter,\n      unmuted: false\n    }\n  },\n  props: [ 'notification' ],\n  components: {\n    StatusContent,\n    UserAvatar,\n    UserCard,\n    Timeago,\n    Status,\n    RichContent\n  },\n  methods: {\n    toggleUserExpanded () {\n      this.userExpanded = !this.userExpanded\n    },\n    generateUserProfileLink (user) {\n      return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n    },\n    getUser (notification) {\n      return this.$store.state.users.usersObject[notification.from_profile.id]\n    },\n    toggleMute () {\n      this.unmuted = !this.unmuted\n    },\n    approveUser () {\n      this.$store.state.api.backendInteractor.approveUser({ id: this.user.id })\n      this.$store.dispatch('removeFollowRequest', this.user)\n      this.$store.dispatch('markSingleNotificationAsSeen', { id: this.notification.id })\n      this.$store.dispatch('updateNotification', {\n        id: this.notification.id,\n        updater: notification => {\n          notification.type = 'follow'\n        }\n      })\n    },\n    denyUser () {\n      this.$store.state.api.backendInteractor.denyUser({ id: this.user.id })\n        .then(() => {\n          this.$store.dispatch('dismissNotificationLocal', { id: this.notification.id })\n          this.$store.dispatch('removeFollowRequest', this.user)\n        })\n    }\n  },\n  computed: {\n    userClass () {\n      return highlightClass(this.notification.from_profile)\n    },\n    userStyle () {\n      const highlight = this.$store.getters.mergedConfig.highlight\n      const user = this.notification.from_profile\n      return highlightStyle(highlight[user.screen_name])\n    },\n    user () {\n      return this.$store.getters.findUser(this.notification.from_profile.id)\n    },\n    userProfileLink () {\n      return this.generateUserProfileLink(this.user)\n    },\n    targetUser () {\n      return this.$store.getters.findUser(this.notification.target.id)\n    },\n    targetUserProfileLink () {\n      return this.generateUserProfileLink(this.targetUser)\n    },\n    needMute () {\n      return this.$store.getters.relationship(this.user.id).muting\n    },\n    isStatusNotification () {\n      return isStatusNotification(this.notification.type)\n    },\n    ...mapState({\n      currentUser: state => state.users.currentUser\n    })\n  }\n}\n\nexport default Notification\n","import { render } from \"./notification.vue?vue&type=template&id=437c5ef8\"\nimport script from \"./notification.js?vue&type=script&lang=js\"\nexport * from \"./notification.js?vue&type=script&lang=js\"\n\nimport \"./notification.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Popover\n    trigger=\"click\"\n    class=\"NotificationFilters\"\n    placement=\"bottom\"\n    :bound-to=\"{ x: 'container' }\"\n  >\n    <template v-slot:content>\n      <div class=\"dropdown-menu\">\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"toggleNotificationFilter('likes')\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': filters.likes }\"\n          />{{ $t('settings.notification_visibility_likes') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"toggleNotificationFilter('repeats')\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': filters.repeats }\"\n          />{{ $t('settings.notification_visibility_repeats') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"toggleNotificationFilter('follows')\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': filters.follows }\"\n          />{{ $t('settings.notification_visibility_follows') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"toggleNotificationFilter('mentions')\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': filters.mentions }\"\n          />{{ $t('settings.notification_visibility_mentions') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"toggleNotificationFilter('emojiReactions')\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': filters.emojiReactions }\"\n          />{{ $t('settings.notification_visibility_emoji_reactions') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"toggleNotificationFilter('moves')\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': filters.moves }\"\n          />{{ $t('settings.notification_visibility_moves') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"toggleNotificationFilter('polls')\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': filters.polls }\"\n          />{{ $t('settings.notification_visibility_polls') }}\n        </button>\n      </div>\n    </template>\n    <template v-slot:trigger>\n      <button class=\"filter-trigger-button button-unstyled\">\n        <FAIcon icon=\"filter\" />\n      </button>\n    </template>\n  </Popover>\n</template>\n\n<script>\nimport Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faFilter } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faFilter\n)\n\nexport default {\n  components: { Popover },\n  computed: {\n    filters () {\n      return this.$store.getters.mergedConfig.notificationVisibility\n    }\n  },\n  methods: {\n    toggleNotificationFilter (type) {\n      this.$store.dispatch('setOption', {\n        name: 'notificationVisibility',\n        value: {\n          ...this.filters,\n          [type]: !this.filters[type]\n        }\n      })\n    }\n  }\n}\n</script>\n\n<style lang=\"scss\">\n\n.NotificationFilters {\n  align-self: stretch;\n\n  > button {\n    line-height: 100%;\n    height: 100%;\n    width: var(--__panel-heading-height-inner);\n    text-align: center;\n\n    svg {\n      font-size: 1.2em;\n    }\n  }\n}\n\n</style>\n","import { render } from \"./notification_filters.vue?vue&type=template&id=afbf2f10\"\nimport script from \"./notification_filters.vue?vue&type=script&lang=js\"\nexport * from \"./notification_filters.vue?vue&type=script&lang=js\"\n\nimport \"./notification_filters.vue?vue&type=style&index=0&id=afbf2f10&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapGetters } from 'vuex'\nimport Notification from '../notification/notification.vue'\nimport NotificationFilters from './notification_filters.vue'\nimport notificationsFetcher from '../../services/notifications_fetcher/notifications_fetcher.service.js'\nimport {\n  notificationsFromStore,\n  filteredNotificationsFromStore,\n  unseenNotificationsFromStore\n} from '../../services/notification_utils/notification_utils.js'\nimport FaviconService from '../../services/favicon_service/favicon_service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch\n)\n\nconst DEFAULT_SEEN_TO_DISPLAY_COUNT = 30\n\nconst Notifications = {\n  components: {\n    Notification,\n    NotificationFilters\n  },\n  props: {\n    // Disables panel styles, unread mark, potentially other notification-related actions\n    // meant for \"Interactions\" timeline\n    minimalMode: Boolean,\n    // Custom filter mode, an array of strings, possible values 'mention', 'repeat', 'like', 'follow', used to override global filter for use in \"Interactions\" timeline\n    filterMode: Array,\n    // Disable teleporting (i.e. for /users/user/notifications)\n    disableTeleport: Boolean\n  },\n  data () {\n    return {\n      bottomedOut: false,\n      // How many seen notifications to display in the list. The more there are,\n      // the heavier the page becomes. This count is increased when loading\n      // older notifications, and cut back to default whenever hitting \"Read!\".\n      seenToDisplayCount: DEFAULT_SEEN_TO_DISPLAY_COUNT\n    }\n  },\n  computed: {\n    mainClass () {\n      return this.minimalMode ? '' : 'panel panel-default'\n    },\n    notifications () {\n      return notificationsFromStore(this.$store)\n    },\n    error () {\n      return this.$store.state.statuses.notifications.error\n    },\n    unseenNotifications () {\n      return unseenNotificationsFromStore(this.$store)\n    },\n    filteredNotifications () {\n      return filteredNotificationsFromStore(this.$store, this.filterMode)\n    },\n    unseenCount () {\n      return this.unseenNotifications.length\n    },\n    unseenCountTitle () {\n      return this.unseenCount + (this.unreadChatCount)\n    },\n    loading () {\n      return this.$store.state.statuses.notifications.loading\n    },\n    noHeading () {\n      const { layoutType } = this.$store.state.interface\n      return this.minimalMode || layoutType === 'mobile'\n    },\n    teleportTarget () {\n      const { layoutType } = this.$store.state.interface\n      const map = {\n        wide: '#notifs-column',\n        mobile: '#mobile-notifications'\n      }\n      return map[layoutType] || '#notifs-sidebar'\n    },\n    notificationsToDisplay () {\n      return this.filteredNotifications.slice(0, this.unseenCount + this.seenToDisplayCount)\n    },\n    ...mapGetters(['unreadChatCount'])\n  },\n  watch: {\n    unseenCountTitle (count) {\n      if (count > 0) {\n        FaviconService.drawFaviconBadge()\n        this.$store.dispatch('setPageTitle', `(${count})`)\n      } else {\n        FaviconService.clearFaviconBadge()\n        this.$store.dispatch('setPageTitle', '')\n      }\n    }\n  },\n  methods: {\n    markAsSeen () {\n      this.$store.dispatch('markNotificationsAsSeen')\n      this.seenToDisplayCount = DEFAULT_SEEN_TO_DISPLAY_COUNT\n    },\n    fetchOlderNotifications () {\n      if (this.loading) {\n        return\n      }\n\n      const seenCount = this.filteredNotifications.length - this.unseenCount\n      if (this.seenToDisplayCount < seenCount) {\n        this.seenToDisplayCount = Math.min(this.seenToDisplayCount + 20, seenCount)\n        return\n      } else if (this.seenToDisplayCount > seenCount) {\n        this.seenToDisplayCount = seenCount\n      }\n\n      const store = this.$store\n      const credentials = store.state.users.currentUser.credentials\n      store.commit('setNotificationsLoading', { value: true })\n      notificationsFetcher.fetchAndUpdate({\n        store,\n        credentials,\n        older: true\n      }).then(notifs => {\n        store.commit('setNotificationsLoading', { value: false })\n        if (notifs.length === 0) {\n          this.bottomedOut = true\n        }\n        this.seenToDisplayCount += notifs.length\n      })\n    }\n  }\n}\n\nexport default Notifications\n","import { render } from \"./notifications.vue?vue&type=template&id=5c6b19b5\"\nimport script from \"./notifications.js?vue&type=script&lang=js\"\nexport * from \"./notifications.js?vue&type=script&lang=js\"\n\nimport \"./notifications.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    ref=\"galleryContainer\"\n    class=\"Gallery\"\n    :class=\"{ '-long': tooManyAttachments && hidingLong }\"\n  >\n    <div class=\"gallery-rows\">\n      <div\n        v-for=\"(row, rowIndex) in rows\"\n        :key=\"rowIndex\"\n        class=\"gallery-row\"\n        :style=\"rowStyle(row)\"\n        :class=\"{ '-audio': row.audio, '-minimal': row.minimal, '-grid': grid }\"\n      >\n        <div\n          class=\"gallery-row-inner\"\n          :class=\"{ '-grid': grid }\"\n        >\n          <Attachment\n            v-for=\"(attachment, attachmentIndex) in row.items\"\n            :key=\"attachment.id\"\n            class=\"gallery-item\"\n            :nsfw=\"nsfw\"\n            :attachment=\"attachment\"\n            :size=\"size\"\n            :editable=\"editable\"\n            :remove=\"removeAttachment\"\n            :shift-up=\"!(attachmentIndex === 0 && rowIndex === 0) && shiftUpAttachment\"\n            :shift-dn=\"!(attachmentIndex === row.items.length - 1 && rowIndex === rows.length - 1) && shiftDnAttachment\"\n            :edit=\"editAttachment\"\n            :description=\"descriptions && descriptions[attachment.id]\"\n            :hide-description=\"size === 'small' || tooManyAttachments && hidingLong\"\n            :style=\"itemStyle(attachment.id, row.items)\"\n            @setMedia=\"onMedia\"\n            @naturalSizeLoad=\"onNaturalSizeLoad\"\n          />\n        </div>\n      </div>\n    </div>\n    <div\n      v-if=\"tooManyAttachments\"\n      class=\"many-attachments\"\n    >\n      <div class=\"many-attachments-text\">\n        {{ $t(\"status.many_attachments\", { number: attachments.length }) }}\n      </div>\n      <div class=\"many-attachments-buttons\">\n        <span\n          v-if=\"!hidingLong\"\n          class=\"many-attachments-button\"\n        >\n          <button\n            class=\"button-unstyled -link\"\n            @click=\"toggleHidingLong(true)\"\n          >\n            {{ $t(\"status.collapse_attachments\") }}\n          </button>\n        </span>\n        <span\n          v-if=\"hidingLong\"\n          class=\"many-attachments-button\"\n        >\n          <button\n            class=\"button-unstyled -link\"\n            @click=\"toggleHidingLong(false)\"\n          >\n            {{ $t(\"status.show_all_attachments\") }}\n          </button>\n        </span>\n        <span\n          v-if=\"hidingLong\"\n          class=\"many-attachments-button\"\n        >\n          <button\n            class=\"button-unstyled -link\"\n            @click=\"openGallery\"\n          >\n            {{ $t(\"status.open_gallery\") }}\n          </button>\n        </span>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src='./gallery.js'></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.Gallery {\n  .gallery-rows {\n    display: flex;\n    flex-direction: column;\n  }\n\n  .gallery-row {\n    position: relative;\n    height: 0;\n    width: 100%;\n    flex-grow: 1;\n\n    &:not(:first-child) {\n      margin-top: 0.5em;\n    }\n  }\n\n  &.-long {\n    .gallery-rows {\n      max-height: 25em;\n      overflow: hidden;\n      mask:\n        linear-gradient(to top, white, transparent) bottom/100% 70px no-repeat,\n        linear-gradient(to top, white, white);\n\n      /* Autoprefixed seem to ignore this one, and also syntax is different */\n      -webkit-mask-composite: xor;\n      mask-composite: exclude;\n    }\n  }\n\n  .many-attachments-text {\n    text-align: center;\n    line-height: 2;\n  }\n\n  .many-attachments-buttons {\n    display: flex;\n  }\n\n  .many-attachments-button {\n    display: flex;\n    flex: 1;\n    justify-content: center;\n    line-height: 2;\n\n    button {\n      padding: 0 2em;\n    }\n  }\n\n  .gallery-row {\n    &.-grid,\n    &.-minimal {\n      height: auto;\n      .gallery-row-inner {\n        position: relative;\n      }\n    }\n  }\n\n  .gallery-row-inner {\n    position: absolute;\n    top: 0;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    display: flex;\n    flex-direction: row;\n    flex-wrap: nowrap;\n    align-content: stretch;\n\n    &.-grid {\n      width: 100%;\n      height: auto;\n      position: relative;\n      display: grid;\n      grid-column-gap: 0.5em;\n      grid-row-gap: 0.5em;\n      grid-template-columns: repeat(auto-fill, minmax(15em, 1fr));\n\n      .gallery-item {\n        margin: 0;\n        height: 200px;\n      }\n    }\n  }\n\n  .gallery-item {\n    margin: 0 0.5em 0 0;\n    flex-grow: 1;\n    height: 100%;\n    box-sizing: border-box;\n    // to make failed images a bit more noticeable on chromium\n    min-width: 2em;\n    &:last-child {\n      margin: 0;\n    }\n  }\n}\n</style>\n","import Attachment from '../attachment/attachment.vue'\nimport { sumBy, set } from 'lodash'\n\nconst Gallery = {\n  props: [\n    'attachments',\n    'limitRows',\n    'descriptions',\n    'limit',\n    'nsfw',\n    'setMedia',\n    'size',\n    'editable',\n    'removeAttachment',\n    'shiftUpAttachment',\n    'shiftDnAttachment',\n    'editAttachment',\n    'grid'\n  ],\n  data () {\n    return {\n      sizes: {},\n      hidingLong: true\n    }\n  },\n  components: { Attachment },\n  computed: {\n    rows () {\n      if (!this.attachments) {\n        return []\n      }\n      const attachments = this.limit > 0\n        ? this.attachments.slice(0, this.limit)\n        : this.attachments\n      if (this.size === 'hide') {\n        return attachments.map(item => ({ minimal: true, items: [item] }))\n      }\n      const rows = this.grid\n        ? [{ grid: true, items: attachments }]\n        : attachments.reduce((acc, attachment, i) => {\n          if (attachment.mimetype.includes('audio')) {\n            return [...acc, { audio: true, items: [attachment] }, { items: [] }]\n          }\n          if (!(\n            attachment.mimetype.includes('image') ||\n              attachment.mimetype.includes('video') ||\n              attachment.mimetype.includes('flash')\n          )) {\n            return [...acc, { minimal: true, items: [attachment] }, { items: [] }]\n          }\n          const maxPerRow = 3\n          const attachmentsRemaining = this.attachments.length - i + 1\n          const currentRow = acc[acc.length - 1].items\n          currentRow.push(attachment)\n          if (currentRow.length >= maxPerRow && attachmentsRemaining > maxPerRow) {\n            return [...acc, { items: [] }]\n          } else {\n            return acc\n          }\n        }, [{ items: [] }]).filter(_ => _.items.length > 0)\n      return rows\n    },\n    attachmentsDimensionalScore () {\n      return this.rows.reduce((acc, row) => {\n        let size = 0\n        if (row.minimal) {\n          size += 1 / 8\n        } else if (row.audio) {\n          size += 1 / 4\n        } else {\n          size += 1 / (row.items.length + 0.6)\n        }\n        return acc + size\n      }, 0)\n    },\n    tooManyAttachments () {\n      if (this.editable || this.size === 'small') {\n        return false\n      } else if (this.size === 'hide') {\n        return this.attachments.length > 8\n      } else {\n        return this.attachmentsDimensionalScore > 1\n      }\n    }\n  },\n  methods: {\n    onNaturalSizeLoad ({ id, width, height }) {\n      set(this.sizes, id, { width, height })\n    },\n    rowStyle (row) {\n      if (row.audio) {\n        return { 'padding-bottom': '25%' } // fixed reduced height for audio\n      } else if (!row.minimal && !row.grid) {\n        return { 'padding-bottom': `${(100 / (row.items.length + 0.6))}%` }\n      }\n    },\n    itemStyle (id, row) {\n      const total = sumBy(row, item => this.getAspectRatio(item.id))\n      return { flex: `${this.getAspectRatio(id) / total} 1 0%` }\n    },\n    getAspectRatio (id) {\n      const size = this.sizes[id]\n      return size ? size.width / size.height : 1\n    },\n    toggleHidingLong (event) {\n      this.hidingLong = event\n    },\n    openGallery () {\n      this.$store.dispatch('setMedia', this.attachments)\n      this.$store.dispatch('setCurrentMedia', this.attachments[0])\n    },\n    onMedia () {\n      this.$store.dispatch('setMedia', this.attachments)\n    }\n  }\n}\n\nexport default Gallery\n","import { render } from \"./gallery.vue?vue&type=template&id=2bf4ca36\"\nimport script from \"./gallery.js?vue&type=script&lang=js\"\nexport * from \"./gallery.js?vue&type=script&lang=js\"\n\nimport \"./gallery.vue?vue&type=style&index=0&id=2bf4ca36&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <span\n    class=\"MentionLink\"\n  >\n    <!-- eslint-disable vue/no-v-html -->\n    <a\n      v-if=\"!user\"\n      :href=\"url\"\n      class=\"original\"\n      target=\"_blank\"\n      v-html=\"content\"\n    /><!-- eslint-enable vue/no-v-html --><span\n      v-if=\"user\"\n      class=\"new\"\n      :style=\"style\"\n      :class=\"classnames\"\n    >\n      <a\n        class=\"short button-unstyled\"\n        :class=\"{ '-with-tooltip': shouldShowTooltip }\"\n        :href=\"url\"\n        @click.prevent=\"onClick\"\n      >\n        <!-- eslint-disable vue/no-v-html -->\n        <span class=\"shortName\">@<span\n          class=\"userName\"\n          v-html=\"userName\"\n        /><span\n          v-if=\"shouldShowFullUserName\"\n          class=\"serverName\"\n          :class=\"{ '-faded': shouldFadeDomain }\"\n          v-html=\"'@' + serverName\"\n        />\n        </span>\n        <span\n          v-if=\"isYou && shouldShowYous\"\n          :class=\"{ '-you': shouldBoldenYou }\"\n        > {{ ' ' + $t('status.you') }}</span>\n        <!-- eslint-enable vue/no-v-html -->\n      </a><span\n        v-if=\"shouldShowTooltip\"\n        class=\"full popover-default\"\n        :class=\"[highlightType]\"\n      >\n        <span\n          class=\"userNameFull\"\n        >\n          <!-- eslint-disable vue/no-v-html -->\n          @<span\n            class=\"userName\"\n            v-html=\"userName\"\n          /><span\n            class=\"serverName\"\n            :class=\"{ '-faded': shouldFadeDomain }\"\n            v-html=\"'@' + serverName\"\n          />\n          <!-- eslint-enable vue/no-v-html -->\n        </span>\n      </span>\n    </span>\n  </span>\n</template>\n\n<script src=\"./mention_link.js\"/>\n\n<style lang=\"scss\" src=\"./mention_link.scss\"/>\n","import { render } from \"./mention_link.vue?vue&type=template&id=eeed6d12\"\nimport script from \"./mention_link.js?vue&type=script&lang=js\"\nexport * from \"./mention_link.js?vue&type=script&lang=js\"\n\nimport \"./mention_link.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <span class=\"MentionsLine\">\n    <MentionLink\n      v-for=\"mention in mentionsComputed\"\n      :key=\"mention.index\"\n      class=\"mention-link\"\n      :content=\"mention.content\"\n      :url=\"mention.url\"\n    /><span\n      v-if=\"manyMentions\"\n      class=\"extraMentions\"\n    >\n      <span\n        v-if=\"expanded\"\n        class=\"fullExtraMentions\"\n      >\n        <MentionLink\n          v-for=\"mention in extraMentions\"\n          :key=\"mention.index\"\n          class=\"mention-link\"\n          :content=\"mention.content\"\n          :url=\"mention.url\"\n        />\n      </span><button\n        v-if=\"!expanded\"\n        class=\"button-unstyled showMoreLess\"\n        @click=\"toggleShowMore\"\n      >\n        {{ $t('status.plus_more', { number: extraMentions.length }) }}\n      </button><button\n        v-if=\"expanded\"\n        class=\"button-unstyled showMoreLess\"\n        @click=\"toggleShowMore\"\n      >\n        {{ $t('general.show_less') }}\n      </button>\n    </span>\n  </span>\n</template>\n<script src=\"./mentions_line.js\" ></script>\n<style lang=\"scss\" src=\"./mentions_line.scss\" />\n","import MentionLink from 'src/components/mention_link/mention_link.vue'\nimport { mapGetters } from 'vuex'\n\nexport const MENTIONS_LIMIT = 5\n\nconst MentionsLine = {\n  name: 'MentionsLine',\n  props: {\n    mentions: {\n      required: true,\n      type: Array\n    }\n  },\n  data: () => ({ expanded: false }),\n  components: {\n    MentionLink\n  },\n  computed: {\n    mentionsComputed () {\n      return this.mentions.slice(0, MENTIONS_LIMIT)\n    },\n    extraMentions () {\n      return this.mentions.slice(MENTIONS_LIMIT)\n    },\n    manyMentions () {\n      return this.extraMentions.length > 0\n    },\n    ...mapGetters(['mergedConfig'])\n  },\n  methods: {\n    toggleShowMore () {\n      this.expanded = !this.expanded\n    }\n  }\n}\n\nexport default MentionsLine\n","import { render } from \"./mentions_line.vue?vue&type=template&id=f231046a\"\nimport script from \"./mentions_line.js?vue&type=script&lang=js\"\nexport * from \"./mentions_line.js?vue&type=script&lang=js\"\n\nimport \"./mentions_line.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","const fileSizeFormat = (num) => {\n  var exponent\n  var unit\n  var units = ['B', 'KiB', 'MiB', 'GiB', 'TiB']\n  if (num < 1) {\n    return num + ' ' + units[0]\n  }\n\n  exponent = Math.min(Math.floor(Math.log(num) / Math.log(1024)), units.length - 1)\n  num = (num / Math.pow(1024, exponent)).toFixed(2) * 1\n  unit = units[exponent]\n  return { num: num, unit: unit }\n}\nconst fileSizeFormatService = {\n  fileSizeFormat\n}\nexport default fileSizeFormatService\n","import apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst update = ({ store, notifications, older }) => {\n  store.dispatch('addNewNotifications', { notifications, older })\n}\n\nconst fetchAndUpdate = ({ store, credentials, older = false, since }) => {\n  const args = { credentials }\n  const { getters } = store\n  const rootState = store.rootState || store.state\n  const timelineData = rootState.statuses.notifications\n  const hideMutedPosts = getters.mergedConfig.hideMutedPosts\n\n  args['withMuted'] = !hideMutedPosts\n\n  args['timeline'] = 'notifications'\n  if (older) {\n    if (timelineData.minId !== Number.POSITIVE_INFINITY) {\n      args['until'] = timelineData.minId\n    }\n    return fetchNotifications({ store, args, older })\n  } else {\n    // fetch new notifications\n    if (since === undefined && timelineData.maxId !== Number.POSITIVE_INFINITY) {\n      args['since'] = timelineData.maxId\n    } else if (since !== null) {\n      args['since'] = since\n    }\n    const result = fetchNotifications({ store, args, older })\n\n    // If there's any unread notifications, try fetch notifications since\n    // the newest read notification to check if any of the unread notifs\n    // have changed their 'seen' state (marked as read in another session), so\n    // we can update the state in this session to mark them as read as well.\n    // The normal maxId-check does not tell if older notifications have changed\n    const notifications = timelineData.data\n    const readNotifsIds = notifications.filter(n => n.seen).map(n => n.id)\n    const numUnseenNotifs = notifications.length - readNotifsIds.length\n    if (numUnseenNotifs > 0 && readNotifsIds.length > 0) {\n      args['since'] = Math.max(...readNotifsIds)\n      fetchNotifications({ store, args, older })\n    }\n\n    return result\n  }\n}\n\nconst fetchNotifications = ({ store, args, older }) => {\n  return apiService.fetchTimeline(args)\n    .then((response) => {\n      if (response.errors) {\n        throw new Error(`${response.status} ${response.statusText}`)\n      }\n      const notifications = response.data\n      update({ store, notifications, older })\n      return notifications\n    })\n    .catch((error) => {\n      store.dispatch('pushGlobalNotice', {\n        level: 'error',\n        messageKey: 'notifications.error',\n        messageArgs: [error.message],\n        timeout: 5000\n      })\n    })\n}\n\nconst startFetching = ({ credentials, store }) => {\n  // Initially there's set flag to silence all desktop notifications so\n  // that there won't spam of them when user just opened up the FE we\n  // reset that flag after a while to show new notifications once again.\n  setTimeout(() => store.dispatch('setNotificationsSilence', false), 10000)\n  const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store })\n  boundFetchAndUpdate()\n  return promiseInterval(boundFetchAndUpdate, 20000)\n}\n\nconst notificationsFetcher = {\n  fetchAndUpdate,\n  startFetching\n}\n\nexport default notificationsFetcher\n","const createFaviconService = () => {\n  const favicons = []\n  const faviconWidth = 128\n  const faviconHeight = 128\n  const badgeRadius = 32\n\n  const initFaviconService = () => {\n    const nodes = document.querySelectorAll('link[rel=\"icon\"]')\n    nodes.forEach(favicon => {\n      if (favicon) {\n        const favcanvas = document.createElement('canvas')\n        favcanvas.width = faviconWidth\n        favcanvas.height = faviconHeight\n        const favimg = new Image()\n        favimg.crossOrigin = 'anonymous'\n        favimg.src = favicon.href\n        const favcontext = favcanvas.getContext('2d')\n        favicons.push({ favcanvas, favimg, favcontext, favicon })\n      }\n    })\n  }\n\n  const isImageLoaded = (img) => img.complete && img.naturalHeight !== 0\n\n  const clearFaviconBadge = () => {\n    if (favicons.length === 0) return\n    favicons.forEach(({ favimg, favcanvas, favcontext, favicon }) => {\n      if (!favimg || !favcontext || !favicon) return\n\n      favcontext.clearRect(0, 0, faviconWidth, faviconHeight)\n      if (isImageLoaded(favimg)) {\n        favcontext.drawImage(favimg, 0, 0, favimg.width, favimg.height, 0, 0, faviconWidth, faviconHeight)\n      }\n      favicon.href = favcanvas.toDataURL('image/png')\n    })\n  }\n\n  const drawFaviconBadge = () => {\n    if (favicons.length === 0) return\n    clearFaviconBadge()\n    favicons.forEach(({ favimg, favcanvas, favcontext, favicon }) => {\n      if (!favimg || !favcontext || !favcontext) return\n\n      const style = getComputedStyle(document.body)\n      const badgeColor = `${style.getPropertyValue('--badgeNotification') || 'rgb(240, 100, 100)'}`\n\n      if (isImageLoaded(favimg)) {\n        favcontext.drawImage(favimg, 0, 0, favimg.width, favimg.height, 0, 0, faviconWidth, faviconHeight)\n      }\n      favcontext.fillStyle = badgeColor\n      favcontext.beginPath()\n      favcontext.arc(faviconWidth - badgeRadius, badgeRadius, badgeRadius, 0, 2 * Math.PI, false)\n      favcontext.fill()\n      favicon.href = favcanvas.toDataURL('image/png')\n    })\n  }\n\n  return {\n    initFaviconService,\n    clearFaviconBadge,\n    drawFaviconBadge\n  }\n}\n\nconst FaviconService = createFaviconService()\n\nexport default FaviconService\n","<template>\n  <button\n    :disabled=\"progress || disabled\"\n    @click=\"onClick\"\n  >\n    <template v-if=\"progress && $slots.progress\">\n      <slot name=\"progress\" />\n    </template>\n    <template v-else>\n      <slot />\n    </template>\n  </button>\n</template>\n\n<script>\nexport default {\n  props: {\n    disabled: {\n      type: Boolean\n    },\n    click: { // click event handler. Must return a promise\n      type: Function,\n      default: () => Promise.resolve()\n    }\n  },\n  data () {\n    return {\n      progress: false\n    }\n  },\n  methods: {\n    onClick () {\n      this.progress = true\n      this.click().then(() => { this.progress = false })\n    }\n  }\n}\n</script>\n","import { render } from \"./progress_button.vue?vue&type=template&id=9f751ae6\"\nimport script from \"./progress_button.vue?vue&type=script&lang=js\"\nexport * from \"./progress_button.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Cookies from 'js-cookie'\nimport { setPreset, applyTheme } from '../services/style_setter/style_setter.js'\nimport messages from '../i18n/messages'\nimport localeService from '../services/locale/locale.service.js'\n\nconst BACKEND_LANGUAGE_COOKIE_NAME = 'userLanguage'\n\nconst browserLocale = (window.navigator.language || 'en').split('-')[0]\n\n/* TODO this is a bit messy.\n * We need to declare settings with their types and also deal with\n * instance-default settings in some way, hopefully try to avoid copy-pasta\n * in general.\n */\nexport const multiChoiceProperties = [\n  'postContentType',\n  'subjectLineBehavior',\n  'conversationDisplay', // tree | linear\n  'conversationOtherRepliesButton', // below | inside\n  'mentionLinkDisplay' // short | full_for_remote | full\n]\n\nexport const defaultState = {\n  expertLevel: 0, // used to track which settings to show and hide\n  colors: {},\n  theme: undefined,\n  customTheme: undefined,\n  customThemeSource: undefined,\n  hideISP: false,\n  hideInstanceWallpaper: false,\n  hideShoutbox: false,\n  // bad name: actually hides posts of muted USERS\n  hideMutedPosts: undefined, // instance default\n  hideMutedThreads: undefined, // instance default\n  hideWordFilteredPosts: undefined, // instance default\n  muteBotStatuses: undefined, // instance default\n  collapseMessageWithSubject: undefined, // instance default\n  padEmoji: true,\n  hideAttachments: false,\n  hideAttachmentsInConv: false,\n  maxThumbnails: 16,\n  hideNsfw: true,\n  preloadImage: true,\n  loopVideo: true,\n  loopVideoSilentOnly: true,\n  streaming: false,\n  emojiReactionsOnTimeline: true,\n  alwaysShowNewPostButton: false,\n  autohideFloatingPostButton: false,\n  pauseOnUnfocused: true,\n  stopGifs: true,\n  replyVisibility: 'all',\n  thirdColumnMode: 'notifications',\n  notificationVisibility: {\n    follows: true,\n    mentions: true,\n    likes: true,\n    repeats: true,\n    moves: true,\n    emojiReactions: true,\n    followRequest: true,\n    chatMention: true,\n    polls: true\n  },\n  webPushNotifications: false,\n  muteWords: [],\n  highlight: {},\n  interfaceLanguage: browserLocale,\n  hideScopeNotice: false,\n  useStreamingApi: true,\n  sidebarRight: undefined, // instance default\n  scopeCopy: undefined, // instance default\n  subjectLineBehavior: undefined, // instance default\n  alwaysShowSubjectInput: undefined, // instance default\n  postContentType: undefined, // instance default\n  minimalScopesMode: undefined, // instance default\n  // This hides statuses filtered via a word filter\n  hideFilteredStatuses: undefined, // instance default\n  playVideosInModal: false,\n  useOneClickNsfw: false,\n  useContainFit: true,\n  disableStickyHeaders: false,\n  showScrollbars: false,\n  greentext: undefined, // instance default\n  useAtIcon: undefined, // instance default\n  mentionLinkDisplay: undefined, // instance default\n  mentionLinkShowTooltip: undefined, // instance default\n  mentionLinkShowAvatar: undefined, // instance default\n  mentionLinkFadeDomain: undefined, // instance default\n  mentionLinkShowYous: undefined, // instance default\n  mentionLinkBoldenYou: undefined, // instance default\n  hidePostStats: undefined, // instance default\n  hideBotIndication: undefined, // instance default\n  hideUserStats: undefined, // instance default\n  virtualScrolling: undefined, // instance default\n  sensitiveByDefault: undefined, // instance default\n  sensitiveIfSubject: undefined,\n  renderMisskeyMarkdown: undefined,\n  conversationDisplay: undefined, // instance default\n  conversationTreeAdvanced: undefined, // instance default\n  conversationOtherRepliesButton: undefined, // instance default\n  conversationTreeFadeAncestors: undefined, // instance default\n  maxDepthInThread: undefined // instance default\n}\n\n// caching the instance default properties\nexport const instanceDefaultProperties = Object.entries(defaultState)\n  .filter(([key, value]) => value === undefined)\n  .map(([key, value]) => key)\n\nconst config = {\n  state: { ...defaultState },\n  getters: {\n    defaultConfig (state, getters, rootState, rootGetters) {\n      const { instance } = rootState\n      return {\n        ...defaultState,\n        ...Object.fromEntries(\n          instanceDefaultProperties.map(key => [key, instance[key]])\n        )\n      }\n    },\n    mergedConfig (state, getters, rootState, rootGetters) {\n      const { defaultConfig } = rootGetters\n      return {\n        ...defaultConfig,\n        // Do not override with undefined\n        ...Object.fromEntries(Object.entries(state).filter(([k, v]) => v !== undefined))\n      }\n    }\n  },\n  mutations: {\n    setOption (state, { name, value }) {\n      state[name] = value\n    },\n    setHighlight (state, { user, color, type }) {\n      const data = this.state.config.highlight[user]\n      if (color || type) {\n        state.highlight[user] = { color: color || data.color, type: type || data.type }\n      } else {\n        delete state.highlight[user]\n      }\n    }\n  },\n  actions: {\n    loadSettings ({ dispatch }, data) {\n      const knownKeys = new Set(Object.keys(defaultState))\n      const presentKeys = new Set(Object.keys(data))\n      const intersection = new Set()\n      for (let elem of presentKeys) {\n        if (knownKeys.has(elem)) {\n          intersection.add(elem)\n        }\n      }\n\n      intersection.forEach(\n        name => dispatch('setOption', { name, value: data[name] })\n      )\n    },\n    setHighlight ({ commit, dispatch }, { user, color, type }) {\n      commit('setHighlight', { user, color, type })\n    },\n    setOption ({ commit, dispatch }, { name, value }) {\n      commit('setOption', { name, value })\n      switch (name) {\n        case 'theme':\n          setPreset(value)\n          break\n        case 'customTheme':\n        case 'customThemeSource':\n          applyTheme(value)\n          break\n        case 'interfaceLanguage':\n          messages.setLanguage(this.getters.i18n, value)\n          Cookies.set(BACKEND_LANGUAGE_COOKIE_NAME, localeService.internalToBackendLocale(value))\n          break\n        case 'thirdColumnMode':\n          dispatch('setLayoutWidth', undefined)\n          break\n      }\n    }\n  }\n}\n\nexport default config\n","import { filter } from 'lodash'\n\nexport const muteWordHits = (status, muteWords) => {\n  const statusText = status.text.toLowerCase()\n  const statusSummary = status.summary.toLowerCase()\n  const hits = filter(muteWords, (muteWord) => {\n    return statusText.includes(muteWord.toLowerCase()) || statusSummary.includes(muteWord.toLowerCase())\n  })\n\n  return hits\n}\n","export const showDesktopNotification = (rootState, desktopNotificationOpts) => {\n  if (!('Notification' in window && window.Notification.permission === 'granted')) return\n  if (rootState.statuses.notifications.desktopNotificationSilence) { return }\n\n  const desktopNotification = new window.Notification(desktopNotificationOpts.title, desktopNotificationOpts)\n  // Chrome is known for not closing notifications automatically\n  // according to MDN, anyway.\n  setTimeout(desktopNotification.close.bind(desktopNotification), 5000)\n}\n","export const findOffset = (child, parent, { top = 0, left = 0 } = {}, ignorePadding = true) => {\n  const result = {\n    top: top + child.offsetTop,\n    left: left + child.offsetLeft\n  }\n  if (!ignorePadding && child !== window) {\n    const { topPadding, leftPadding } = findPadding(child)\n    result.top += ignorePadding ? 0 : topPadding\n    result.left += ignorePadding ? 0 : leftPadding\n  }\n\n  if (child.offsetParent && window.getComputedStyle(child.offsetParent).position !== 'sticky' && (parent === window || parent.contains(child.offsetParent) || parent === child.offsetParent)) {\n    return findOffset(child.offsetParent, parent, result, false)\n  } else {\n    if (parent !== window) {\n      const { topPadding, leftPadding } = findPadding(parent)\n      result.top += topPadding\n      result.left += leftPadding\n    }\n    return result\n  }\n}\n\nconst findPadding = (el) => {\n  const topPaddingStr = window.getComputedStyle(el)['padding-top']\n  const topPadding = Number(topPaddingStr.substring(0, topPaddingStr.length - 2))\n  const leftPaddingStr = window.getComputedStyle(el)['padding-left']\n  const leftPadding = Number(leftPaddingStr.substring(0, leftPaddingStr.length - 2))\n\n  return { topPadding, leftPadding }\n}\n","export const newExporter = ({\n  filename = 'data',\n  getExportedObject\n}) => ({\n  exportData () {\n    const stringified = JSON.stringify(getExportedObject(), null, 2) // Pretty-print and indent with 2 spaces\n\n    // Create an invisible link with a data url and simulate a click\n    const e = document.createElement('a')\n    e.setAttribute('download', `${filename}.json`)\n    e.setAttribute('href', 'data:application/json;base64,' + window.btoa(stringified))\n    e.style.display = 'none'\n\n    document.body.appendChild(e)\n    e.click()\n    document.body.removeChild(e)\n  }\n})\n\nexport const newImporter = ({\n  onImport,\n  onImportFailure,\n  validator = () => true\n}) => ({\n  importData () {\n    const filePicker = document.createElement('input')\n    filePicker.setAttribute('type', 'file')\n    filePicker.setAttribute('accept', '.json')\n\n    filePicker.addEventListener('change', event => {\n      if (event.target.files[0]) {\n        // eslint-disable-next-line no-undef\n        const reader = new FileReader()\n        reader.onload = ({ target }) => {\n          try {\n            const parsed = JSON.parse(target.result)\n            const validationResult = validator(parsed)\n            if (validationResult === true) {\n              onImport(parsed)\n            } else {\n              onImportFailure({ validationResult })\n            }\n          } catch (error) {\n            onImportFailure({ error })\n          }\n        }\n        reader.readAsText(event.target.files[0])\n      }\n    })\n\n    document.body.appendChild(filePicker)\n    filePicker.click()\n    document.body.removeChild(filePicker)\n  }\n})\n","<template>\n  <div class=\"Flash\">\n    <div\n      v-if=\"player === true || player === 'hidden'\"\n      ref=\"container\"\n      class=\"player\"\n      :class=\"{ hidden: player === 'hidden' }\"\n    />\n    <button\n      v-if=\"player !== true\"\n      class=\"button-unstyled placeholder\"\n      @click=\"openPlayer\"\n    >\n      <span\n        v-if=\"player === 'hidden'\"\n        class=\"label\"\n      >\n        {{ $t('general.loading') }}\n      </span>\n      <span\n        v-if=\"player === 'error'\"\n        class=\"label\"\n      >\n        {{ $t('general.flash_fail') }}\n      </span>\n      <span\n        v-else\n        class=\"label\"\n      >\n        <p>\n          {{ $t('general.flash_content') }}\n        </p>\n        <p>\n          <FAIcon icon=\"exclamation-triangle\" />\n          {{ $t('general.flash_security') }}\n        </p>\n      </span>\n    </button>\n  </div>\n</template>\n\n<script src=\"./flash.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n.Flash {\n  display: inline-block;\n  width: 100%;\n  height: 100%;\n  position: relative;\n\n  .player {\n    height: 100%;\n    width: 100%;\n  }\n\n  .placeholder {\n    height: 100%;\n    width: 100%;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    background: var(--bg);\n    color: var(--link);\n  }\n\n  .hider {\n    top: 0;\n  }\n\n  .label {\n    text-align: center;\n    flex: 1 1 0;\n    line-height: 1.2;\n    white-space: normal;\n    word-wrap: normal;\n  }\n\n  .hidden {\n    display: none;\n    visibility: 'hidden';\n  }\n}\n</style>\n","const createRuffleService = () => {\n  let ruffleInstance = null\n\n  const getRuffle = () => new Promise((resolve, reject) => {\n    if (ruffleInstance) {\n      resolve(ruffleInstance)\n      return\n    }\n    // Ruffle needs these to be set before it's loaded\n    // https://github.com/ruffle-rs/ruffle/issues/3952\n    window.RufflePlayer = {}\n    window.RufflePlayer.config = {\n      polyfills: false,\n      publicPath: '/static/ruffle'\n    }\n\n    // Currently it's seems like a better way of loading ruffle\n    // because it needs the wasm publically accessible, but it needs path to it\n    // and filename of wasm seems to be pseudo-randomly generated (is it a hash?)\n    const script = document.createElement('script')\n    // see webpack config, using CopyPlugin to copy it from node_modules\n    // provided via ruffle-mirror\n    script.src = '/static/ruffle/ruffle.js'\n    script.type = 'text/javascript'\n    script.onerror = (e) => { reject(e) }\n    script.onabort = (e) => { reject(e) }\n    script.oncancel = (e) => { reject(e) }\n    script.onload = () => {\n      ruffleInstance = window.RufflePlayer\n      resolve(ruffleInstance)\n    }\n    document.body.appendChild(script)\n  })\n\n  return { getRuffle }\n}\n\nconst RuffleService = createRuffleService()\n\nexport default RuffleService\n","import RuffleService from '../../services/ruffle_service/ruffle_service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faStop,\n  faExclamationTriangle\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faStop,\n  faExclamationTriangle\n)\n\nconst Flash = {\n  props: [ 'src' ],\n  data () {\n    return {\n      player: false, // can be true, \"hidden\", false. hidden = element exists\n      loaded: false,\n      ruffleInstance: null\n    }\n  },\n  methods: {\n    openPlayer () {\n      if (this.player) return // prevent double-loading, or re-loading on failure\n      this.player = 'hidden'\n      RuffleService.getRuffle().then((ruffle) => {\n        const player = ruffle.newest().createPlayer()\n        player.config = {\n          letterbox: 'on'\n        }\n        const container = this.$refs.container\n        container.appendChild(player)\n        player.style.width = '100%'\n        player.style.height = '100%'\n        player.load(this.src).then(() => {\n          this.player = true\n        }).catch((e) => {\n          console.error('Error loading ruffle', e)\n          this.player = 'error'\n        })\n        this.ruffleInstance = player\n        this.$emit('playerOpened')\n      })\n    },\n    closePlayer () {\n      this.ruffleInstance && this.ruffleInstance.remove()\n      this.player = false\n      this.$emit('playerClosed')\n    }\n  }\n}\n\nexport default Flash\n","import { render } from \"./flash.vue?vue&type=template&id=0dec384a\"\nimport script from \"./flash.js?vue&type=script&lang=js\"\nexport * from \"./flash.js?vue&type=script&lang=js\"\n\nimport \"./flash.vue?vue&type=style&index=0&id=0dec384a&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","const fetchRelationship = (attempt, userId, store) => new Promise((resolve, reject) => {\n  setTimeout(() => {\n    store.state.api.backendInteractor.fetchUserRelationship({ id: userId })\n      .then((relationship) => {\n        store.commit('updateUserRelationship', [relationship])\n        return relationship\n      })\n      .then((relationship) => resolve([relationship.following, relationship.requested, relationship.locked, attempt]))\n      .catch((e) => reject(e))\n  }, 500)\n}).then(([following, sent, locked, attempt]) => {\n  if (!following && !(locked && sent) && attempt <= 3) {\n    // If we BE reports that we still not following that user - retry,\n    // increment attempts by one\n    fetchRelationship(++attempt, userId, store)\n  }\n})\n\nexport const requestFollow = (userId, store) => new Promise((resolve, reject) => {\n  store.state.api.backendInteractor.followUser({ id: userId })\n    .then((updated) => {\n      store.commit('updateUserRelationship', [updated])\n\n      if (updated.following || (updated.locked && updated.requested)) {\n        // If we get result immediately or the account is locked, just stop.\n        resolve()\n        return\n      }\n\n      // But usually we don't get result immediately, so we ask server\n      // for updated user profile to confirm if we are following them\n      // Sometimes it takes several tries. Sometimes we end up not following\n      // user anyway, probably because they locked themselves and we\n      // don't know that yet.\n      // Recursive Promise, it will call itself up to 3 times.\n\n      return fetchRelationship(1, updated, store)\n        .then(() => {\n          resolve()\n        })\n    })\n})\n\nexport const requestUnfollow = (userId, store) => new Promise((resolve, reject) => {\n  store.state.api.backendInteractor.unfollowUser({ id: userId })\n    .then((updated) => {\n      store.commit('updateUserRelationship', [updated])\n      resolve({\n        updated\n      })\n    })\n})\n","import { requestFollow, requestUnfollow } from '../../services/follow_manipulate/follow_manipulate'\nexport default {\n  props: ['relationship', 'user', 'labelFollowing', 'buttonClass'],\n  data () {\n    return {\n      inProgress: false\n    }\n  },\n  computed: {\n    isPressed () {\n      return this.inProgress || this.relationship.following\n    },\n    title () {\n      if (this.inProgress || this.relationship.following) {\n        return this.$t('user_card.follow_unfollow')\n      } else if (this.relationship.requested) {\n        return this.$t('user_card.follow_cancel')\n      } else {\n        return this.$t('user_card.follow')\n      }\n    },\n    label () {\n      if (this.inProgress) {\n        return this.$t('user_card.follow_progress')\n      } else if (this.relationship.following) {\n        return this.labelFollowing || this.$t('user_card.following')\n      } else if (this.relationship.requested) {\n        return this.$t('user_card.follow_sent')\n      } else {\n        return this.$t('user_card.follow')\n      }\n    },\n    disabled () {\n      return this.inProgress || this.user.deactivated\n    }\n  },\n  methods: {\n    onClick () {\n      this.relationship.following || this.relationship.requested ? this.unfollow() : this.follow()\n    },\n    follow () {\n      this.inProgress = true\n      requestFollow(this.relationship.id, this.$store).then(() => {\n        this.inProgress = false\n      })\n    },\n    unfollow () {\n      const store = this.$store\n      this.inProgress = true\n      requestUnfollow(this.relationship.id, store).then(() => {\n        this.inProgress = false\n        store.commit('removeStatus', { timeline: 'friends', userId: this.relationship.id })\n      })\n    }\n  }\n}\n","import { render } from \"./follow_button.vue?vue&type=template&id=2c877477\"\nimport script from \"./follow_button.js?vue&type=script&lang=js\"\nexport * from \"./follow_button.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <button\n    class=\"btn button-default follow-button\"\n    :class=\"{ toggled: isPressed }\"\n    :disabled=\"disabled\"\n    :title=\"title\"\n    @click=\"onClick\"\n  >\n    {{ label }}\n  </button>\n</template>\n\n<script src=\"./follow_button.js\"></script>\n","\nconst VideoAttachment = {\n  props: ['attachment', 'controls'],\n  data () {\n    return {\n      blocksSuspend: false,\n      // Start from true because removing \"loop\" property seems buggy in Vue\n      hasAudio: true\n    }\n  },\n  computed: {\n    loopVideo () {\n      if (this.$store.getters.mergedConfig.loopVideoSilentOnly) {\n        return !this.hasAudio\n      }\n      return this.$store.getters.mergedConfig.loopVideo\n    }\n  },\n  methods: {\n    onPlaying (e) {\n      this.setHasAudio(e)\n      if (this.loopVideo) {\n        this.$emit('play', { looping: true })\n        return\n      }\n      this.$emit('play')\n    },\n    onPaused (e) {\n      this.$emit('pause')\n    },\n    setHasAudio (e) {\n      const target = e.srcElement || e.target\n      // If hasAudio is false, we've already marked this video to not have audio,\n      // a video can't gain audio out of nowhere so don't bother checking again.\n      if (!this.hasAudio) return\n      if (typeof target.webkitAudioDecodedByteCount !== 'undefined') {\n        // non-zero if video has audio track\n        if (target.webkitAudioDecodedByteCount > 0) return\n      }\n      if (typeof target.mozHasAudio !== 'undefined') {\n        // true if video has audio track\n        if (target.mozHasAudio) return\n      }\n      if (typeof target.audioTracks !== 'undefined') {\n        if (target.audioTracks.length > 0) return\n      }\n      this.hasAudio = false\n    }\n  }\n}\n\nexport default VideoAttachment\n","import { render } from \"./video_attachment.vue?vue&type=template&id=dda2841a\"\nimport script from \"./video_attachment.js?vue&type=script&lang=js\"\nexport * from \"./video_attachment.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <video\n    class=\"video\"\n    preload=\"metadata\"\n    :src=\"attachment.url\"\n    :loop=\"loopVideo\"\n    :controls=\"controls\"\n    :alt=\"attachment.description\"\n    :title=\"attachment.description\"\n    playsinline\n    @playing=\"onPlaying\"\n    @pause=\"onPaused\"\n  />\n</template>\n\n<script src=\"./video_attachment.js\"></script>\n","<template>\n  <div>\n    <a\n      class=\"link-preview-card\"\n      :href=\"card.url\"\n      target=\"_blank\"\n      rel=\"noopener\"\n    >\n      <div\n        v-if=\"useImage && imageLoaded\"\n        class=\"card-image\"\n      >\n        <img :src=\"card.image\">\n      </div>\n      <div class=\"card-content\">\n        <span class=\"card-host faint\">\n          <span\n            v-if=\"censored\"\n            class=\"nsfw-alert alert warning\"\n          >{{ $t('status.nsfw') }}</span>\n          {{ card.provider_name }}\n        </span>\n        <h4 class=\"card-title\">{{ card.title }}</h4>\n        <p\n          v-if=\"useDescription\"\n          class=\"card-description\"\n        >{{ card.description }}</p>\n      </div>\n    </a>\n  </div>\n</template>\n\n<script src=\"./link-preview.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.link-preview-card {\n  display: flex;\n  flex-direction: row;\n  cursor: pointer;\n  overflow: hidden;\n  margin-top: 0.5em;\n\n  .card-image {\n    flex-shrink: 0;\n    width: 120px;\n    max-width: 25%;\n    img {\n      width: 100%;\n      height: 100%;\n      object-fit: cover;\n      border-radius: $fallback--attachmentRadius;\n      border-radius: var(--attachmentRadius, $fallback--attachmentRadius);\n    }\n  }\n\n  .card-content {\n    max-height: 100%;\n    margin: 0.5em;\n    display: flex;\n    flex-direction: column;\n  }\n\n  .card-host {\n    font-size: 0.85em;\n  }\n\n  .card-description {\n    margin: 0.5em 0 0 0;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    word-break: break-word;\n    line-height: 1.2em;\n    // cap description at 3 lines, the 1px is to clean up some stray pixels\n    // TODO: fancier fade-out at the bottom to show off that it's too long?\n    max-height: calc(1.2em * 3 - 1px);\n  }\n\n  .nsfw-alert {\n    margin: 2em 0;\n  }\n\n  color: $fallback--text;\n  color: var(--text, $fallback--text);\n  border-style: solid;\n  border-width: 1px;\n  border-radius: $fallback--attachmentRadius;\n  border-radius: var(--attachmentRadius, $fallback--attachmentRadius);\n  border-color: $fallback--border;\n  border-color: var(--border, $fallback--border);\n}\n</style>\n","import { mapGetters } from 'vuex'\n\nconst LinkPreview = {\n  name: 'LinkPreview',\n  props: [\n    'card',\n    'size',\n    'nsfw'\n  ],\n  data () {\n    return {\n      imageLoaded: false\n    }\n  },\n  computed: {\n    useImage () {\n      // Currently BE shoudn't give cards if tagged NSFW, this is a bit paranoid\n      // as it makes sure to hide the image if somehow NSFW tagged preview can\n      // exist.\n      return this.card.image && !this.censored && this.size !== 'hide'\n    },\n    censored () {\n      return this.nsfw && this.hideNsfwConfig\n    },\n    useDescription () {\n      return this.card.description && /\\S/.test(this.card.description)\n    },\n    hideNsfwConfig () {\n      return this.mergedConfig.hideNsfw\n    },\n    ...mapGetters([\n      'mergedConfig'\n    ])\n  },\n  created () {\n    if (this.useImage) {\n      const newImg = new Image()\n      newImg.onload = () => {\n        this.imageLoaded = true\n      }\n      newImg.src = this.card.image\n    }\n  }\n}\n\nexport default LinkPreview\n","import { render } from \"./link-preview.vue?vue&type=template&id=03087feb\"\nimport script from \"./link-preview.js?vue&type=script&lang=js\"\nexport * from \"./link-preview.js?vue&type=script&lang=js\"\n\nimport \"./link-preview.vue?vue&type=style&index=0&id=03087feb&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"remote-follow\">\n    <form\n      method=\"POST\"\n      :action=\"subscribeUrl\"\n    >\n      <input\n        type=\"hidden\"\n        name=\"nickname\"\n        :value=\"user.screen_name\"\n      >\n      <input\n        type=\"hidden\"\n        name=\"profile\"\n        value=\"\"\n      >\n      <button\n        click=\"submit\"\n        class=\"button-default remote-button\"\n      >\n        {{ $t('user_card.remote_follow') }}\n      </button>\n    </form>\n  </div>\n</template>\n\n<script src=\"./remote_follow.js\"></script>\n\n<style lang=\"scss\">\n.remote-follow {\n  max-width: 220px;\n\n  .remote-button {\n    width: 100%;\n    min-height: 2em;\n  }\n}\n</style>\n","export default {\n  props: [ 'user' ],\n  computed: {\n    subscribeUrl () {\n      // eslint-disable-next-line no-undef\n      const serverUrl = new URL(this.user.statusnet_profile_url)\n      return `${serverUrl.protocol}//${serverUrl.host}/main/ostatus`\n    }\n  }\n}\n","import { render } from \"./remote_follow.vue?vue&type=template&id=2aed8421\"\nimport script from \"./remote_follow.js?vue&type=script&lang=js\"\nexport * from \"./remote_follow.js?vue&type=script&lang=js\"\n\nimport \"./remote_follow.vue?vue&type=style&index=0&id=2aed8421&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"avatars\">\n    <router-link\n      v-for=\"user in slicedUsers\"\n      :key=\"user.id\"\n      :to=\"userProfileLink(user)\"\n      class=\"avatars-item\"\n    >\n      <UserAvatar\n        :user=\"user\"\n        class=\"avatar-small\"\n      />\n    </router-link>\n  </div>\n</template>\n\n<script src=\"./avatar_list.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.avatars {\n  display: flex;\n  margin: 0;\n  padding: 0;\n\n  // For hiding overflowing elements\n  flex-wrap: wrap;\n  height: 24px;\n\n  .avatars-item {\n    margin: 0 0 5px 5px;\n\n    &:first-child {\n      padding-left: 5px;\n    }\n\n    .avatar-small {\n      border-radius: $fallback--avatarAltRadius;\n      border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n      height: 24px;\n      width: 24px;\n    }\n  }\n}\n</style>\n","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\n\nconst AvatarList = {\n  props: ['users'],\n  computed: {\n    slicedUsers () {\n      return this.users ? this.users.slice(0, 15) : []\n    }\n  },\n  components: {\n    UserAvatar\n  },\n  methods: {\n    userProfileLink (user) {\n      return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n    }\n  }\n}\n\nexport default AvatarList\n","import { render } from \"./avatar_list.vue?vue&type=template&id=4cea5bcf\"\nimport script from \"./avatar_list.js?vue&type=script&lang=js\"\nexport * from \"./avatar_list.js?vue&type=script&lang=js\"\n\nimport \"./avatar_list.vue?vue&type=style&index=0&id=4cea5bcf&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","/**\n * suggest - generates a suggestor function to be used by emoji-input\n * data: object providing source information for specific types of suggestions:\n * data.emoji - optional, an array of all emoji available i.e.\n *   (state.instance.emoji + state.instance.customEmoji)\n * data.users - optional, an array of all known users\n * updateUsersList - optional, a function to search and append to users\n *\n * Depending on data present one or both (or none) can be present, so if field\n * doesn't support user linking you can just provide only emoji.\n */\n\nexport default data => {\n  const emojiCurry = suggestEmoji(data.emoji)\n  const usersCurry = data.store && suggestUsers(data.store)\n  return input => {\n    const firstChar = input[0]\n    if (firstChar === ':' && data.emoji) {\n      return emojiCurry(input)\n    }\n    if (firstChar === '@' && usersCurry) {\n      return usersCurry(input)\n    }\n    return []\n  }\n}\n\nexport const suggestEmoji = emojis => input => {\n  const noPrefix = input.toLowerCase().substr(1)\n  return emojis\n    .filter(({ displayText }) => displayText.toLowerCase().match(noPrefix))\n    .sort((a, b) => {\n      let aScore = 0\n      let bScore = 0\n\n      // An exact match always wins\n      aScore += a.displayText.toLowerCase() === noPrefix ? 200 : 0\n      bScore += b.displayText.toLowerCase() === noPrefix ? 200 : 0\n\n      // Prioritize custom emoji a lot\n      aScore += a.imageUrl ? 100 : 0\n      bScore += b.imageUrl ? 100 : 0\n\n      // Prioritize prefix matches somewhat\n      aScore += a.displayText.toLowerCase().startsWith(noPrefix) ? 10 : 0\n      bScore += b.displayText.toLowerCase().startsWith(noPrefix) ? 10 : 0\n\n      // Sort by length\n      aScore -= a.displayText.length\n      bScore -= b.displayText.length\n\n      // Break ties alphabetically\n      const alphabetically = a.displayText > b.displayText ? 0.5 : -0.5\n\n      return bScore - aScore + alphabetically\n    })\n}\n\nexport const suggestUsers = ({ dispatch, state }) => {\n  // Keep some persistent values in closure, most importantly for the\n  // custom debounce to work. Lodash debounce does not return a promise.\n  let suggestions = []\n  let previousQuery = ''\n  let timeout = null\n  let cancelUserSearch = null\n\n  const userSearch = (query) => dispatch('searchUsers', { query })\n  const debounceUserSearch = (query) => {\n    cancelUserSearch && cancelUserSearch()\n    return new Promise((resolve, reject) => {\n      timeout = setTimeout(() => {\n        userSearch(query).then(resolve).catch(reject)\n      }, 300)\n      cancelUserSearch = () => {\n        clearTimeout(timeout)\n        resolve([])\n      }\n    })\n  }\n\n  return async input => {\n    const noPrefix = input.toLowerCase().substr(1)\n    if (previousQuery === noPrefix) return suggestions\n\n    suggestions = []\n    previousQuery = noPrefix\n    // Fetch more and wait, don't fetch if there's the 2nd @ because\n    // the backend user search can't deal with it.\n    // Reference semantics make it so that we get the updated data after\n    // the await.\n    if (!noPrefix.includes('@')) {\n      await debounceUserSearch(noPrefix)\n    }\n\n    const newSuggestions = state.users.users.filter(\n      user =>\n        user.screen_name.toLowerCase().startsWith(noPrefix) ||\n        user.name.toLowerCase().startsWith(noPrefix)\n    ).slice(0, 20).sort((a, b) => {\n      let aScore = 0\n      let bScore = 0\n\n      // Matches on screen name (i.e. user@instance) makes a priority\n      aScore += a.screen_name.toLowerCase().startsWith(noPrefix) ? 2 : 0\n      bScore += b.screen_name.toLowerCase().startsWith(noPrefix) ? 2 : 0\n\n      // Matches on name takes second priority\n      aScore += a.name.toLowerCase().startsWith(noPrefix) ? 1 : 0\n      bScore += b.name.toLowerCase().startsWith(noPrefix) ? 1 : 0\n\n      const diff = (bScore - aScore) * 10\n\n      // Then sort alphabetically\n      const nameAlphabetically = a.name > b.name ? 1 : -1\n      const screenNameAlphabetically = a.screen_name > b.screen_name ? 1 : -1\n\n      return diff + nameAlphabetically + screenNameAlphabetically\n      /* eslint-disable camelcase */\n    }).map(({ screen_name, screen_name_ui, name, profile_image_url_original }) => ({\n      displayText: screen_name_ui,\n      detailText: name,\n      imageUrl: profile_image_url_original,\n      replacement: '@' + screen_name + ' '\n    }))\n    /* eslint-enable camelcase */\n\n    suggestions = newSuggestions || []\n    return suggestions\n  }\n}\n","<template>\n  <div>\n    <label for=\"interface-language-switcher\">\n      {{ promptText }}\n    </label>\n    {{ ' ' }}\n    <Select\n      id=\"interface-language-switcher\"\n      v-model=\"controlledLanguage\"\n    >\n      <option\n        v-for=\"lang in languages\"\n        :key=\"lang.code\"\n        :value=\"lang.code\"\n      >\n        {{ lang.name }}\n      </option>\n    </Select>\n  </div>\n</template>\n\n<script>\nimport localeService from '../../services/locale/locale.service.js'\nimport Select from '../select/select.vue'\n\nexport default {\n  components: {\n    Select\n  },\n  props: {\n    promptText: {\n      type: String,\n      required: true\n    },\n    language: {\n      type: String,\n      required: true\n    },\n    setLanguage: {\n      type: Function,\n      required: true\n    }\n  },\n  computed: {\n    languages () {\n      return localeService.languages\n    },\n\n    controlledLanguage: {\n      get: function () { return this.language },\n      set: function (val) {\n        this.setLanguage(val)\n      }\n    }\n  },\n\n  methods: {\n    getLanguageName (code) {\n      return localeService.getLanguageName(code)\n    }\n  }\n}\n</script>\n","import { render } from \"./interface_language_switcher.vue?vue&type=template&id=25be3710\"\nimport script from \"./interface_language_switcher.vue?vue&type=script&lang=js\"\nexport * from \"./interface_language_switcher.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    v-if=\"!showNothing\"\n    class=\"ScopeSelector\"\n  >\n    <button\n      v-if=\"showDirect\"\n      class=\"button-unstyled scope\"\n      :class=\"css.direct\"\n      :title=\"$t('post_status.scope.direct')\"\n      type=\"button\"\n      @click=\"changeVis('direct')\"\n    >\n      <FAIcon\n        icon=\"envelope\"\n        class=\"fa-scale-110 fa-old-padding\"\n      />\n    </button>\n    {{ ' ' }}\n    <button\n      v-if=\"showPrivate\"\n      class=\"button-unstyled scope\"\n      :class=\"css.private\"\n      :title=\"$t('post_status.scope.private')\"\n      type=\"button\"\n      @click=\"changeVis('private')\"\n    >\n      <FAIcon\n        icon=\"lock\"\n        class=\"fa-scale-110 fa-old-padding\"\n      />\n    </button>\n    {{ ' ' }}\n    <button\n      v-if=\"showUnlisted\"\n      class=\"button-unstyled scope\"\n      :class=\"css.unlisted\"\n      :title=\"$t('post_status.scope.unlisted')\"\n      type=\"button\"\n      @click=\"changeVis('unlisted')\"\n    >\n      <FAIcon\n        icon=\"lock-open\"\n        class=\"fa-scale-110 fa-old-padding\"\n      />\n    </button>\n    {{ ' ' }}\n    <button\n      v-if=\"showPublic\"\n      class=\"button-unstyled scope\"\n      :class=\"css.public\"\n      :title=\"$t('post_status.scope.public')\"\n      type=\"button\"\n      @click=\"changeVis('public')\"\n    >\n      <FAIcon\n        icon=\"globe\"\n        class=\"fa-scale-110 fa-old-padding\"\n      />\n    </button>\n    <button\n      v-if=\"showLocal\"\n      class=\"button-unstyled scope\"\n      :class=\"css.local\"\n      :title=\"$t('post_status.scope.local')\"\n      type=\"button\"\n      @click=\"changeVis('local')\"\n    >\n      <FAIcon\n        icon=\"users\"\n        class=\"fa-scale-110 fa-old-padding\"\n      />\n    </button>\n  </div>\n</template>\n\n<script src=\"./scope_selector.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.ScopeSelector {\n\n  .scope {\n    display: inline-block;\n    cursor: pointer;\n    min-width: 1.3em;\n    min-height: 1.3em;\n    text-align: center;\n\n    &.selected svg {\n      color: $fallback--lightText;\n      color: var(--lightText, $fallback--lightText);\n    }\n  }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faEnvelope,\n  faLock,\n  faLockOpen,\n  faGlobe\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faEnvelope,\n  faGlobe,\n  faLock,\n  faLockOpen\n)\n\nconst ScopeSelector = {\n  props: [\n    'showAll',\n    'userDefault',\n    'originalScope',\n    'initialScope',\n    'onScopeChange'\n  ],\n  data () {\n    return {\n      currentScope: this.initialScope\n    }\n  },\n  computed: {\n    showNothing () {\n      return !this.showPublic && !this.showUnlisted && !this.showPrivate && !this.showDirect\n    },\n    showPublic () {\n      return this.originalScope !== 'direct' && this.shouldShow('public')\n    },\n    showLocal () {\n      return this.originalScope !== 'direct' && this.shouldShow('local')\n    },\n    showUnlisted () {\n      return this.originalScope !== 'direct' && this.shouldShow('unlisted')\n    },\n    showPrivate () {\n      return this.originalScope !== 'direct' && this.shouldShow('private')\n    },\n    showDirect () {\n      return this.shouldShow('direct')\n    },\n    css () {\n      return {\n        public: { selected: this.currentScope === 'public' },\n        unlisted: { selected: this.currentScope === 'unlisted' },\n        private: { selected: this.currentScope === 'private' },\n        direct: { selected: this.currentScope === 'direct' },\n        local: { selected: this.currentScope === 'local' }\n      }\n    }\n  },\n  methods: {\n    shouldShow (scope) {\n      return this.showAll ||\n        this.currentScope === scope ||\n        this.originalScope === scope ||\n        this.userDefault === scope ||\n        scope === 'direct'\n    },\n    changeVis (scope) {\n      this.currentScope = scope\n      this.onScopeChange && this.onScopeChange(scope)\n    }\n  }\n}\n\nexport default ScopeSelector\n","import { render } from \"./scope_selector.vue?vue&type=template&id=4ebab9b5\"\nimport script from \"./scope_selector.js?vue&type=script&lang=js\"\nexport * from \"./scope_selector.js?vue&type=script&lang=js\"\n\nimport \"./scope_selector.vue?vue&type=style&index=0&id=4ebab9b5&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { get, set } from 'lodash'\n\nconst defaultApi = ({ rootState, commit }, { path, value }) => {\n  const params = {}\n  set(params, path, value)\n  return rootState\n    .api\n    .backendInteractor\n    .updateProfile({ params })\n    .then(result => {\n      commit('addNewUsers', [result])\n      commit('setCurrentUser', result)\n    })\n}\n\nconst notificationsApi = ({ rootState, commit }, { path, value, oldValue }) => {\n  const settings = {}\n  set(settings, path, value)\n  return rootState\n    .api\n    .backendInteractor\n    .updateNotificationSettings({ settings })\n    .then(result => {\n      if (result.status === 'success') {\n        commit('confirmServerSideOption', { name, value })\n      } else {\n        commit('confirmServerSideOption', { name, value: oldValue })\n      }\n    })\n}\n\n/**\n * Map that stores relation between path for reading (from user profile),\n * for writing (into API) an what API to use.\n *\n * Shorthand - instead of { get, set, api? } object it's possible to use string\n * in case default api is used and get = set\n *\n * If no api is specified, defaultApi is used (see above)\n */\nexport const settingsMap = {\n  'defaultScope': 'source.privacy',\n  'defaultNSFW': 'source.sensitive', // BROKEN: pleroma/pleroma#2837\n  'stripRichContent': {\n    get: 'source.pleroma.no_rich_text',\n    set: 'no_rich_text'\n  },\n  // Privacy\n  'locked': 'locked',\n  'acceptChatMessages': {\n    get: 'pleroma.accepts_chat_messages',\n    set: 'accepts_chat_messages'\n  },\n  'allowFollowingMove': {\n    get: 'pleroma.allow_following_move',\n    set: 'allow_following_move'\n  },\n  'discoverable': {\n    get: 'source.pleroma.discoverable',\n    set: 'discoverable'\n  },\n  'hideFavorites': {\n    get: 'pleroma.hide_favorites',\n    set: 'hide_favorites'\n  },\n  'hideFollowers': {\n    get: 'pleroma.hide_followers',\n    set: 'hide_followers'\n  },\n  'hideFollows': {\n    get: 'pleroma.hide_follows',\n    set: 'hide_follows'\n  },\n  'hideFollowersCount': {\n    get: 'pleroma.hide_followers_count',\n    set: 'hide_followers_count'\n  },\n  'hideFollowsCount': {\n    get: 'pleroma.hide_follows_count',\n    set: 'hide_follows_count'\n  },\n  // NotificationSettingsAPIs\n  'webPushHideContents': {\n    get: 'pleroma.notification_settings.hide_notification_contents',\n    set: 'hide_notification_contents',\n    api: notificationsApi\n  },\n  'blockNotificationsFromStrangers': {\n    get: 'pleroma.notification_settings.block_from_strangers',\n    set: 'block_from_strangers',\n    api: notificationsApi\n  }\n}\n\nexport const defaultState = Object.fromEntries(Object.keys(settingsMap).map(key => [key, null]))\n\nconst serverSideConfig = {\n  state: { ...defaultState },\n  mutations: {\n    confirmServerSideOption (state, { name, value }) {\n      set(state, name, value)\n    },\n    wipeServerSideOption (state, { name }) {\n      set(state, name, null)\n    },\n    wipeAllServerSideOptions (state) {\n      Object.keys(settingsMap).forEach(key => {\n        set(state, key, null)\n      })\n    },\n    // Set the settings based on their path location\n    setCurrentUser (state, user) {\n      Object.entries(settingsMap).forEach((map) => {\n        const [name, value] = map\n        const { get: path = value } = value\n        set(state, name, get(user._original, path))\n      })\n    }\n  },\n  actions: {\n    setServerSideOption ({ rootState, state, commit, dispatch }, { name, value }) {\n      const oldValue = get(state, name)\n      const map = settingsMap[name]\n      if (!map) throw new Error('Invalid server-side setting')\n      const { set: path = map, api = defaultApi } = map\n      commit('wipeServerSideOption', { name })\n\n      api({ rootState, commit }, { path, value, oldValue })\n        .catch((e) => {\n          console.warn('Error setting server-side option:', e)\n          commit('confirmServerSideOption', { name, value: oldValue })\n        })\n    },\n    logout ({ commit }) {\n      commit('wipeAllServerSideOptions')\n    }\n  }\n}\n\nexport default serverSideConfig\n","import isFunction from 'lodash/isFunction'\n\nconst getComponentOptions = (Component) => (isFunction(Component)) ? Component.options : Component\n\nconst getComponentProps = (Component) => getComponentOptions(Component).props\n\nexport {\n  getComponentOptions,\n  getComponentProps\n}\n","<template>\n  <div\n    ref=\"root\"\n    v-click-outside=\"onClickOutside\"\n    class=\"emoji-input\"\n    :class=\"{ 'with-picker': !hideEmojiButton }\"\n  >\n    <slot />\n    <template v-if=\"enableEmojiPicker\">\n      <button\n        v-if=\"!hideEmojiButton\"\n        class=\"button-unstyled emoji-picker-icon\"\n        type=\"button\"\n        @click.prevent=\"togglePicker\"\n      >\n        <FAIcon :icon=\"['far', 'smile-beam']\" />\n      </button>\n      <EmojiPicker\n        v-if=\"enableEmojiPicker\"\n        ref=\"picker\"\n        :class=\"{ hide: !showPicker }\"\n        :enable-sticker-picker=\"enableStickerPicker\"\n        class=\"emoji-picker-panel\"\n        @emoji=\"insert\"\n        @sticker-uploaded=\"onStickerUploaded\"\n        @sticker-upload-failed=\"onStickerUploadFailed\"\n      />\n    </template>\n    <div\n      ref=\"panel\"\n      class=\"autocomplete-panel\"\n      :class=\"{ hide: !showSuggestions }\"\n    >\n      <div\n        ref=\"panel-body\"\n        class=\"autocomplete-panel-body\"\n      >\n        <div\n          v-for=\"(suggestion, index) in suggestions\"\n          :key=\"index\"\n          class=\"autocomplete-item\"\n          :class=\"{ highlighted: index === highlighted }\"\n          @click.stop.prevent=\"onClick($event, suggestion)\"\n        >\n          <span class=\"image\">\n            <img\n              v-if=\"suggestion.img\"\n              :src=\"suggestion.img\"\n            >\n            <span v-else>{{ suggestion.replacement }}</span>\n          </span>\n          <div class=\"label\">\n            <span class=\"displayText\">{{ suggestion.displayText }}</span>\n            <span class=\"detailText\">{{ suggestion.detailText }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./emoji_input.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.emoji-input {\n  display: flex;\n  flex-direction: column;\n  position: relative;\n\n  &.with-picker input {\n    padding-right: 30px;\n  }\n\n  .emoji-picker-icon {\n    position: absolute;\n    top: 0;\n    right: 0;\n    margin: .2em .25em;\n    font-size: 1.3em;\n    cursor: pointer;\n    line-height: 24px;\n\n    &:hover i {\n      color: $fallback--text;\n      color: var(--text, $fallback--text);\n    }\n  }\n  .emoji-picker-panel {\n    position: absolute;\n    z-index: 20;\n    margin-top: 2px;\n\n    &.hide {\n      display: none\n    }\n  }\n\n  .autocomplete {\n    &-panel {\n      position: absolute;\n      z-index: 20;\n      margin-top: 2px;\n\n      &.hide {\n        display: none\n      }\n\n      &-body {\n        margin: 0 0.5em 0 0.5em;\n        border-radius: $fallback--tooltipRadius;\n        border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n        box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.5);\n        box-shadow: var(--popupShadow);\n        min-width: 75%;\n        background-color: $fallback--bg;\n        background-color: var(--popover, $fallback--bg);\n        color: $fallback--link;\n        color: var(--popoverText, $fallback--link);\n        --faint: var(--popoverFaintText, $fallback--faint);\n        --faintLink: var(--popoverFaintLink, $fallback--faint);\n        --lightText: var(--popoverLightText, $fallback--lightText);\n        --postLink: var(--popoverPostLink, $fallback--link);\n        --postFaintLink: var(--popoverPostFaintLink, $fallback--link);\n        --icon: var(--popoverIcon, $fallback--icon);\n      }\n    }\n\n    &-item {\n      display: flex;\n      cursor: pointer;\n      padding: 0.2em 0.4em;\n      border-bottom: 1px solid rgba(0, 0, 0, 0.4);\n      height: 32px;\n\n      .image {\n        width: 32px;\n        height: 32px;\n        line-height: 32px;\n        text-align: center;\n        font-size: 32px;\n\n        margin-right: 4px;\n\n        img {\n          width: 32px;\n          height: 32px;\n          object-fit: contain;\n        }\n      }\n\n      .label {\n        display: flex;\n        flex-direction: column;\n        justify-content: center;\n        margin: 0 0.1em 0 0.2em;\n\n        .displayText {\n          line-height: 1.5;\n        }\n\n        .detailText {\n          font-size: 9px;\n          line-height: 9px;\n        }\n      }\n\n      &.highlighted {\n        background-color: $fallback--fg;\n        background-color: var(--selectedMenuPopover, $fallback--fg);\n        color: var(--selectedMenuPopoverText, $fallback--text);\n        --faint: var(--selectedMenuPopoverFaintText, $fallback--faint);\n        --faintLink: var(--selectedMenuPopoverFaintLink, $fallback--faint);\n        --lightText: var(--selectedMenuPopoverLightText, $fallback--lightText);\n        --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n      }\n    }\n  }\n\n  input, textarea {\n    flex: 1 0 auto;\n  }\n}\n</style>\n","import { reduce, find } from 'lodash'\n\nexport const replaceWord = (str, toReplace, replacement) => {\n  return str.slice(0, toReplace.start) + replacement + str.slice(toReplace.end)\n}\n\nexport const wordAtPosition = (str, pos) => {\n  const words = splitByWhitespaceBoundary(str)\n  const wordsWithPosition = addPositionToWords(words)\n\n  return find(wordsWithPosition, ({ start, end }) => start <= pos && end > pos)\n}\n\nexport const addPositionToWords = (words) => {\n  return reduce(words, (result, word) => {\n    const data = {\n      word,\n      start: 0,\n      end: word.length\n    }\n\n    if (result.length > 0) {\n      const previous = result.pop()\n\n      data.start += previous.end\n      data.end += previous.end\n\n      result.push(previous)\n    }\n\n    result.push(data)\n\n    return result\n  }, [])\n}\n\nexport const splitByWhitespaceBoundary = (str) => {\n  let result = []\n  let currentWord = ''\n  for (let i = 0; i < str.length; i++) {\n    const currentChar = str[i]\n    // Starting a new word\n    if (!currentWord) {\n      currentWord = currentChar\n      continue\n    }\n    // current character is whitespace while word isn't, or vice versa:\n    // add our current word to results, start over the current word.\n    if (!!currentChar.trim() !== !!currentWord.trim()) {\n      result.push(currentWord)\n      currentWord = currentChar\n      continue\n    }\n    currentWord += currentChar\n  }\n  // Add the last word we were working on\n  if (currentWord) {\n    result.push(currentWord)\n  }\n  return result\n}\n\nconst completion = {\n  wordAtPosition,\n  addPositionToWords,\n  splitByWhitespaceBoundary,\n  replaceWord\n}\n\nexport default completion\n","<template>\n  <div class=\"emoji-picker panel panel-default panel-body\">\n    <div class=\"heading\">\n      <span class=\"emoji-tabs\">\n        <span\n          v-for=\"group in emojis\"\n          :key=\"group.id\"\n          class=\"emoji-tabs-item\"\n          :class=\"{\n            active: activeGroupView === group.id,\n            disabled: group.emojis.length === 0\n          }\"\n          :title=\"group.text\"\n          @click.prevent=\"highlight(group.id)\"\n        >\n          <FAIcon\n            :icon=\"group.icon\"\n            fixed-width\n          />\n        </span>\n      </span>\n      <span\n        v-if=\"stickerPickerEnabled\"\n        class=\"additional-tabs\"\n      >\n        <span\n          class=\"stickers-tab-icon additional-tabs-item\"\n          :class=\"{active: showingStickers}\"\n          :title=\"$t('emoji.stickers')\"\n          @click.prevent=\"toggleStickers\"\n        >\n          <FAIcon\n            icon=\"sticky-note\"\n            fixed-width\n          />\n        </span>\n      </span>\n    </div>\n    <div class=\"content\">\n      <div\n        class=\"emoji-content\"\n        :class=\"{hidden: showingStickers}\"\n      >\n        <div class=\"emoji-search\">\n          <input\n            v-model=\"keyword\"\n            type=\"text\"\n            class=\"form-control\"\n            :placeholder=\"$t('emoji.search_emoji')\"\n          >\n        </div>\n        <div\n          ref=\"emoji-groups\"\n          class=\"emoji-groups\"\n          :class=\"groupsScrolledClass\"\n          @scroll=\"onScroll\"\n        >\n          <div\n            v-for=\"group in emojisView\"\n            :key=\"group.id\"\n            class=\"emoji-group\"\n          >\n            <h6\n              :ref=\"'group-' + group.id\"\n              class=\"emoji-group-title\"\n            >\n              {{ group.text }}\n            </h6>\n            <span\n              v-for=\"emoji in group.emojis\"\n              :key=\"group.id + emoji.displayText\"\n              :title=\"emoji.displayText\"\n              class=\"emoji-item\"\n              @click.stop.prevent=\"onEmoji(emoji)\"\n            >\n              <span v-if=\"!emoji.imageUrl\">{{ emoji.replacement }}</span>\n              <img\n                v-else\n                :src=\"emoji.imageUrl\"\n              >\n            </span>\n            <span :ref=\"'group-end-' + group.id\" />\n          </div>\n        </div>\n        <div class=\"keep-open\">\n          <Checkbox v-model=\"keepOpen\">\n            {{ $t('emoji.keep_open') }}\n          </Checkbox>\n        </div>\n      </div>\n      <div\n        v-if=\"showingStickers\"\n        class=\"stickers-content\"\n      >\n        <sticker-picker\n          @uploaded=\"onStickerUploaded\"\n          @upload-failed=\"onStickerUploadFailed\"\n        />\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./emoji_picker.js\"></script>\n<style lang=\"scss\" src=\"./emoji_picker.scss\"></style>\n","import { defineAsyncComponent } from 'vue'\nimport Checkbox from '../checkbox/checkbox.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faBoxOpen,\n  faStickyNote,\n  faSmileBeam\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faBoxOpen,\n  faStickyNote,\n  faSmileBeam\n)\n\n// At widest, approximately 20 emoji are visible in a row,\n// loading 3 rows, could be overkill for narrow picker\nconst LOAD_EMOJI_BY = 60\n\n// When to start loading new batch emoji, in pixels\nconst LOAD_EMOJI_MARGIN = 64\n\nconst filterByKeyword = (list, keyword = '') => {\n  if (keyword === '') return list\n\n  const keywordLowercase = keyword.toLowerCase()\n  let orderedEmojiList = []\n  for (const emoji of list) {\n    const indexOfKeyword = emoji.displayText.toLowerCase().indexOf(keywordLowercase)\n    if (indexOfKeyword > -1) {\n      if (!Array.isArray(orderedEmojiList[indexOfKeyword])) {\n        orderedEmojiList[indexOfKeyword] = []\n      }\n      orderedEmojiList[indexOfKeyword].push(emoji)\n    }\n  }\n  return orderedEmojiList.flat()\n}\n\nconst EmojiPicker = {\n  props: {\n    enableStickerPicker: {\n      required: false,\n      type: Boolean,\n      default: false\n    }\n  },\n  data () {\n    return {\n      keyword: '',\n      activeGroup: 'custom',\n      showingStickers: false,\n      groupsScrolledClass: 'scrolled-top',\n      keepOpen: false,\n      customEmojiBufferSlice: LOAD_EMOJI_BY,\n      customEmojiTimeout: null,\n      customEmojiLoadAllConfirmed: false\n    }\n  },\n  components: {\n    StickerPicker: defineAsyncComponent(() => import('../sticker_picker/sticker_picker.vue')),\n    Checkbox\n  },\n  methods: {\n    onStickerUploaded (e) {\n      this.$emit('sticker-uploaded', e)\n    },\n    onStickerUploadFailed (e) {\n      this.$emit('sticker-upload-failed', e)\n    },\n    onEmoji (emoji) {\n      const value = emoji.imageUrl ? `:${emoji.displayText}:` : emoji.replacement\n      this.$emit('emoji', { insertion: value, keepOpen: this.keepOpen })\n    },\n    onScroll (e) {\n      const target = (e && e.target) || this.$refs['emoji-groups']\n      this.updateScrolledClass(target)\n      this.scrolledGroup(target)\n      this.triggerLoadMore(target)\n    },\n    highlight (key) {\n      const ref = this.$refs['group-' + key]\n      const top = ref.offsetTop\n      this.setShowStickers(false)\n      this.activeGroup = key\n      this.$nextTick(() => {\n        this.$refs['emoji-groups'].scrollTop = top + 1\n      })\n    },\n    updateScrolledClass (target) {\n      if (target.scrollTop <= 5) {\n        this.groupsScrolledClass = 'scrolled-top'\n      } else if (target.scrollTop >= target.scrollTopMax - 5) {\n        this.groupsScrolledClass = 'scrolled-bottom'\n      } else {\n        this.groupsScrolledClass = 'scrolled-middle'\n      }\n    },\n    triggerLoadMore (target) {\n      const ref = this.$refs['group-end-custom']\n      if (!ref) return\n      const bottom = ref.offsetTop + ref.offsetHeight\n\n      const scrollerBottom = target.scrollTop + target.clientHeight\n      const scrollerTop = target.scrollTop\n      const scrollerMax = target.scrollHeight\n\n      // Loads more emoji when they come into view\n      const approachingBottom = bottom - scrollerBottom < LOAD_EMOJI_MARGIN\n      // Always load when at the very top in case there's no scroll space yet\n      const atTop = scrollerTop < 5\n      // Don't load when looking at unicode category or at the very bottom\n      const bottomAboveViewport = bottom < scrollerTop || scrollerBottom === scrollerMax\n      if (!bottomAboveViewport && (approachingBottom || atTop)) {\n        this.loadEmoji()\n      }\n    },\n    scrolledGroup (target) {\n      const top = target.scrollTop + 5\n      this.$nextTick(() => {\n        this.emojisView.forEach(group => {\n          const ref = this.$refs['group-' + group.id]\n          if (ref.offsetTop <= top) {\n            this.activeGroup = group.id\n          }\n        })\n      })\n    },\n    loadEmoji () {\n      const allLoaded = this.customEmojiBuffer.length === this.filteredEmoji.length\n\n      if (allLoaded) {\n        return\n      }\n\n      this.customEmojiBufferSlice += LOAD_EMOJI_BY\n    },\n    startEmojiLoad (forceUpdate = false) {\n      if (!forceUpdate) {\n        this.keyword = ''\n      }\n      this.$nextTick(() => {\n        this.$refs['emoji-groups'].scrollTop = 0\n      })\n      const bufferSize = this.customEmojiBuffer.length\n      const bufferPrefilledAll = bufferSize === this.filteredEmoji.length\n      if (bufferPrefilledAll && !forceUpdate) {\n        return\n      }\n      this.customEmojiBufferSlice = LOAD_EMOJI_BY\n    },\n    toggleStickers () {\n      this.showingStickers = !this.showingStickers\n    },\n    setShowStickers (value) {\n      this.showingStickers = value\n    }\n  },\n  watch: {\n    keyword () {\n      this.customEmojiLoadAllConfirmed = false\n      this.onScroll()\n      this.startEmojiLoad(true)\n    }\n  },\n  computed: {\n    activeGroupView () {\n      return this.showingStickers ? '' : this.activeGroup\n    },\n    stickersAvailable () {\n      if (this.$store.state.instance.stickers) {\n        return this.$store.state.instance.stickers.length > 0\n      }\n      return 0\n    },\n    filteredEmoji () {\n      return filterByKeyword(\n        this.$store.state.instance.customEmoji || [],\n        this.keyword\n      )\n    },\n    customEmojiBuffer () {\n      return this.filteredEmoji.slice(0, this.customEmojiBufferSlice)\n    },\n    emojis () {\n      const standardEmojis = this.$store.state.instance.emoji || []\n      const customEmojis = this.customEmojiBuffer\n\n      return [\n        {\n          id: 'custom',\n          text: this.$t('emoji.custom'),\n          icon: 'smile-beam',\n          emojis: customEmojis\n        },\n        {\n          id: 'standard',\n          text: this.$t('emoji.unicode'),\n          icon: 'box-open',\n          emojis: filterByKeyword(standardEmojis, this.keyword)\n        }\n      ]\n    },\n    emojisView () {\n      return this.emojis.filter(value => value.emojis.length > 0)\n    },\n    stickerPickerEnabled () {\n      return (this.$store.state.instance.stickers || []).length !== 0\n    }\n  }\n}\n\nexport default EmojiPicker\n","import { render } from \"./emoji_picker.vue?vue&type=template&id=50bb08b3\"\nimport script from \"./emoji_picker.js?vue&type=script&lang=js\"\nexport * from \"./emoji_picker.js?vue&type=script&lang=js\"\n\nimport \"./emoji_picker.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Completion from '../../services/completion/completion.js'\nimport EmojiPicker from '../emoji_picker/emoji_picker.vue'\nimport { take } from 'lodash'\nimport { findOffset } from '../../services/offset_finder/offset_finder.service.js'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faSmileBeam\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n  faSmileBeam\n)\n\n/**\n * EmojiInput - augmented inputs for emoji and autocomplete support in inputs\n * without having to give up the comfort of <input/> and <textarea/> elements\n *\n * Intended usage is:\n * <EmojiInput v-model=\"something\">\n *   <input v-model=\"something\"/>\n * </EmojiInput>\n *\n * Works only with <input> and <textarea>. Intended to use with only one nested\n * input. It will find first input or textarea and work with that, multiple\n * nested children not tested. You HAVE TO duplicate v-model for both\n * <emoji-input> and <input>/<textarea> otherwise it will not work.\n *\n * Be prepared for CSS troubles though because it still wraps component in a div\n * while TRYING to make it look like nothing happened, but it could break stuff.\n */\n\nconst EmojiInput = {\n  emits: ['update:modelValue', 'shown'],\n  props: {\n    suggest: {\n      /**\n       * suggest: function (input: String) => Suggestion[]\n       *\n       * Function that takes input string which takes string (textAtCaret)\n       * and returns an array of Suggestions\n       *\n       * Suggestion is an object containing following properties:\n       * displayText: string. Main display text, what actual suggestion\n       *    represents (user's screen name/emoji shortcode)\n       * replacement: string. Text that should replace the textAtCaret\n       * detailText: string, optional. Subtitle text, providing additional info\n       *    if present (user's nickname)\n       * imageUrl: string, optional. Image to display alongside with suggestion,\n       *    currently if no image is provided, replacement will be used (for\n       *    unicode emojis)\n       *\n       * TODO: make it asynchronous when adding proper server-provided user\n       * suggestions\n       *\n       * For commonly used suggestors (emoji, users, both) use suggestor.js\n       */\n      required: true,\n      type: Function\n    },\n    modelValue: {\n      /**\n       * Used for v-model\n       */\n      required: true,\n      type: String\n    },\n    enableEmojiPicker: {\n      /**\n       * Enables emoji picker support, this implies that custom emoji are supported\n       */\n      required: false,\n      type: Boolean,\n      default: false\n    },\n    hideEmojiButton: {\n      /**\n       * intended to use with external picker trigger, i.e. you have a button outside\n       * input that will open up the picker, see triggerShowPicker()\n       */\n      required: false,\n      type: Boolean,\n      default: false\n    },\n    enableStickerPicker: {\n      /**\n       * Enables sticker picker support, only makes sense when enableEmojiPicker=true\n       */\n      required: false,\n      type: Boolean,\n      default: false\n    },\n    placement: {\n      /**\n       * Forces the panel to take a specific position relative to the input element.\n       * The 'auto' placement chooses either bottom or top depending on which has the available space (when both have available space, bottom is preferred).\n       */\n      required: false,\n      type: String, // 'auto', 'top', 'bottom'\n      default: 'auto'\n    },\n    newlineOnCtrlEnter: {\n      required: false,\n      type: Boolean,\n      default: false\n    }\n  },\n  data () {\n    return {\n      input: undefined,\n      highlighted: 0,\n      caret: 0,\n      focused: false,\n      blurTimeout: null,\n      showPicker: false,\n      temporarilyHideSuggestions: false,\n      keepOpen: false,\n      disableClickOutside: false,\n      suggestions: []\n    }\n  },\n  components: {\n    EmojiPicker\n  },\n  computed: {\n    padEmoji () {\n      return this.$store.getters.mergedConfig.padEmoji\n    },\n    showSuggestions () {\n      return this.focused &&\n        this.suggestions &&\n        this.suggestions.length > 0 &&\n        !this.showPicker &&\n        !this.temporarilyHideSuggestions\n    },\n    textAtCaret () {\n      return (this.wordAtCaret || {}).word || ''\n    },\n    wordAtCaret () {\n      if (this.modelValue && this.caret) {\n        const word = Completion.wordAtPosition(this.modelValue, this.caret - 1) || {}\n        return word\n      }\n    }\n  },\n  mounted () {\n    const { root } = this.$refs\n    const input = root.querySelector('.emoji-input > input') || root.querySelector('.emoji-input > textarea')\n    if (!input) return\n    this.input = input\n    this.resize()\n    input.addEventListener('blur', this.onBlur)\n    input.addEventListener('focus', this.onFocus)\n    input.addEventListener('paste', this.onPaste)\n    input.addEventListener('keyup', this.onKeyUp)\n    input.addEventListener('keydown', this.onKeyDown)\n    input.addEventListener('click', this.onClickInput)\n    input.addEventListener('transitionend', this.onTransition)\n    input.addEventListener('input', this.onInput)\n  },\n  unmounted () {\n    const { input } = this\n    if (input) {\n      input.removeEventListener('blur', this.onBlur)\n      input.removeEventListener('focus', this.onFocus)\n      input.removeEventListener('paste', this.onPaste)\n      input.removeEventListener('keyup', this.onKeyUp)\n      input.removeEventListener('keydown', this.onKeyDown)\n      input.removeEventListener('click', this.onClickInput)\n      input.removeEventListener('transitionend', this.onTransition)\n      input.removeEventListener('input', this.onInput)\n    }\n  },\n  watch: {\n    showSuggestions: function (newValue) {\n      this.$emit('shown', newValue)\n    },\n    textAtCaret: async function (newWord) {\n      const firstchar = newWord.charAt(0)\n      this.suggestions = []\n      if (newWord === firstchar) return\n      const matchedSuggestions = await this.suggest(newWord)\n      // Async: cancel if textAtCaret has changed during wait\n      if (this.textAtCaret !== newWord) return\n      if (matchedSuggestions.length <= 0) return\n      this.suggestions = take(matchedSuggestions, 5)\n        .map(({ imageUrl, ...rest }) => ({\n          ...rest,\n          img: imageUrl || ''\n        }))\n    },\n    suggestions: {\n      handler (newValue) {\n        this.$nextTick(this.resize)\n      },\n      deep: true\n    }\n  },\n  methods: {\n    focusPickerInput () {\n      const pickerEl = this.$refs.picker.$el\n      if (!pickerEl) return\n      const pickerInput = pickerEl.querySelector('input')\n      if (pickerInput) pickerInput.focus()\n    },\n    triggerShowPicker () {\n      this.showPicker = true\n      this.$refs.picker.startEmojiLoad()\n      this.$nextTick(() => {\n        this.scrollIntoView()\n        this.focusPickerInput()\n      })\n      // This temporarily disables \"click outside\" handler\n      // since external trigger also means click originates\n      // from outside, thus preventing picker from opening\n      this.disableClickOutside = true\n      setTimeout(() => {\n        this.disableClickOutside = false\n      }, 0)\n    },\n    togglePicker () {\n      this.input.focus()\n      this.showPicker = !this.showPicker\n      if (this.showPicker) {\n        this.scrollIntoView()\n        this.$refs.picker.startEmojiLoad()\n        this.$nextTick(this.focusPickerInput)\n      }\n    },\n    replace (replacement) {\n      const newValue = Completion.replaceWord(this.modelValue, this.wordAtCaret, replacement)\n      this.$emit('update:modelValue', newValue)\n      this.caret = 0\n    },\n    insert ({ insertion, keepOpen, surroundingSpace = true }) {\n      const before = this.modelValue.substring(0, this.caret) || ''\n      const after = this.modelValue.substring(this.caret) || ''\n\n      /* Using a bit more smart approach to padding emojis with spaces:\n       * - put a space before cursor if there isn't one already, unless we\n       *   are at the beginning of post or in spam mode\n       * - put a space after emoji if there isn't one already unless we are\n       *   in spam mode\n       *\n       * The idea is that when you put a cursor somewhere in between sentence\n       * inserting just ' :emoji: ' will add more spaces to post which might\n       * break the flow/spacing, as well as the case where user ends sentence\n       * with a space before adding emoji.\n       *\n       * Spam mode is intended for creating multi-part emojis and overall spamming\n       * them, masto seem to be rendering :emoji::emoji: correctly now so why not\n       */\n      const isSpaceRegex = /\\s/\n      const spaceBefore = (surroundingSpace && !isSpaceRegex.exec(before.slice(-1)) && before.length && this.padEmoji > 0) ? ' ' : ''\n      const spaceAfter = (surroundingSpace && !isSpaceRegex.exec(after[0]) && this.padEmoji) ? ' ' : ''\n\n      const newValue = [\n        before,\n        spaceBefore,\n        insertion,\n        spaceAfter,\n        after\n      ].join('')\n      this.keepOpen = keepOpen\n      this.$emit('update:modelValue', newValue)\n      const position = this.caret + (insertion + spaceAfter + spaceBefore).length\n      if (!keepOpen) {\n        this.input.focus()\n      }\n\n      this.$nextTick(function () {\n        // Re-focus inputbox after clicking suggestion\n        // Set selection right after the replacement instead of the very end\n        this.input.setSelectionRange(position, position)\n        this.caret = position\n      })\n    },\n    replaceText (e, suggestion) {\n      const len = this.suggestions.length || 0\n      if (this.textAtCaret.length === 1) { return }\n      if (len > 0 || suggestion) {\n        const chosenSuggestion = suggestion || this.suggestions[this.highlighted]\n        const replacement = chosenSuggestion.replacement\n        const newValue = Completion.replaceWord(this.modelValue, this.wordAtCaret, replacement)\n        this.$emit('update:modelValue', newValue)\n        this.highlighted = 0\n        const position = this.wordAtCaret.start + replacement.length\n\n        this.$nextTick(function () {\n          // Re-focus inputbox after clicking suggestion\n          this.input.focus()\n          // Set selection right after the replacement instead of the very end\n          this.input.setSelectionRange(position, position)\n          this.caret = position\n        })\n        e.preventDefault()\n      }\n    },\n    cycleBackward (e) {\n      const len = this.suggestions.length || 0\n      if (len > 1) {\n        this.highlighted -= 1\n        if (this.highlighted < 0) {\n          this.highlighted = this.suggestions.length - 1\n        }\n        e.preventDefault()\n      } else {\n        this.highlighted = 0\n      }\n    },\n    cycleForward (e) {\n      const len = this.suggestions.length || 0\n      if (len > 1) {\n        this.highlighted += 1\n        if (this.highlighted >= len) {\n          this.highlighted = 0\n        }\n        e.preventDefault()\n      } else {\n        this.highlighted = 0\n      }\n    },\n    scrollIntoView () {\n      const rootRef = this.$refs['picker'].$el\n      /* Scroller is either `window` (replies in TL), sidebar (main post form,\n       * replies in notifs) or mobile post form. Note that getting and setting\n       * scroll is different for `Window` and `Element`s\n       */\n      const scrollerRef = this.$el.closest('.sidebar-scroller') ||\n            this.$el.closest('.post-form-modal-view') ||\n            window\n      const currentScroll = scrollerRef === window\n        ? scrollerRef.scrollY\n        : scrollerRef.scrollTop\n      const scrollerHeight = scrollerRef === window\n        ? scrollerRef.innerHeight\n        : scrollerRef.offsetHeight\n\n      const scrollerBottomBorder = currentScroll + scrollerHeight\n      // We check where the bottom border of root element is, this uses findOffset\n      // to find offset relative to scrollable container (scroller)\n      const rootBottomBorder = rootRef.offsetHeight + findOffset(rootRef, scrollerRef).top\n\n      const bottomDelta = Math.max(0, rootBottomBorder - scrollerBottomBorder)\n      // could also check top delta but there's no case for it\n      const targetScroll = currentScroll + bottomDelta\n\n      if (scrollerRef === window) {\n        scrollerRef.scroll(0, targetScroll)\n      } else {\n        scrollerRef.scrollTop = targetScroll\n      }\n\n      this.$nextTick(() => {\n        const { offsetHeight } = this.input\n        const { picker } = this.$refs\n        const pickerBottom = picker.$el.getBoundingClientRect().bottom\n        if (pickerBottom > window.innerHeight) {\n          picker.$el.style.top = 'auto'\n          picker.$el.style.bottom = offsetHeight + 'px'\n        }\n      })\n    },\n    onTransition (e) {\n      this.resize()\n    },\n    onBlur (e) {\n      // Clicking on any suggestion removes focus from autocomplete,\n      // preventing click handler ever executing.\n      this.blurTimeout = setTimeout(() => {\n        this.focused = false\n        this.setCaret(e)\n        this.resize()\n      }, 200)\n    },\n    onClick (e, suggestion) {\n      this.replaceText(e, suggestion)\n    },\n    onFocus (e) {\n      if (this.blurTimeout) {\n        clearTimeout(this.blurTimeout)\n        this.blurTimeout = null\n      }\n\n      if (!this.keepOpen) {\n        this.showPicker = false\n      }\n      this.focused = true\n      this.setCaret(e)\n      this.resize()\n      this.temporarilyHideSuggestions = false\n    },\n    onKeyUp (e) {\n      const { key } = e\n      this.setCaret(e)\n      this.resize()\n\n      // Setting hider in keyUp to prevent suggestions from blinking\n      // when moving away from suggested spot\n      if (key === 'Escape') {\n        this.temporarilyHideSuggestions = true\n      } else {\n        this.temporarilyHideSuggestions = false\n      }\n    },\n    onPaste (e) {\n      this.setCaret(e)\n      this.resize()\n    },\n    onKeyDown (e) {\n      const { ctrlKey, shiftKey, key } = e\n      if (this.newlineOnCtrlEnter && ctrlKey && key === 'Enter') {\n        this.insert({ insertion: '\\n', surroundingSpace: false })\n        // Ensure only one new line is added on macos\n        e.stopPropagation()\n        e.preventDefault()\n\n        // Scroll the input element to the position of the cursor\n        this.$nextTick(() => {\n          this.input.blur()\n          this.input.focus()\n        })\n      }\n      // Disable suggestions hotkeys if suggestions are hidden\n      if (!this.temporarilyHideSuggestions) {\n        if (key === 'Tab') {\n          if (shiftKey) {\n            this.cycleBackward(e)\n          } else {\n            this.cycleForward(e)\n          }\n        }\n        if (key === 'ArrowUp') {\n          this.cycleBackward(e)\n        } else if (key === 'ArrowDown') {\n          this.cycleForward(e)\n        }\n        if (key === 'Enter') {\n          if (!ctrlKey) {\n            this.replaceText(e)\n          }\n        }\n      }\n      // Probably add optional keyboard controls for emoji picker?\n\n      // Escape hides suggestions, if suggestions are hidden it\n      // de-focuses the element (i.e. default browser behavior)\n      if (key === 'Escape') {\n        if (!this.temporarilyHideSuggestions) {\n          this.input.focus()\n        }\n      }\n\n      this.showPicker = false\n      this.resize()\n    },\n    onInput (e) {\n      this.showPicker = false\n      this.setCaret(e)\n      this.resize()\n      this.$emit('update:modelValue', e.target.value)\n    },\n    onClickInput (e) {\n      this.showPicker = false\n    },\n    onClickOutside (e) {\n      if (this.disableClickOutside) return\n      this.showPicker = false\n    },\n    onStickerUploaded (e) {\n      this.showPicker = false\n      this.$emit('sticker-uploaded', e)\n    },\n    onStickerUploadFailed (e) {\n      this.showPicker = false\n      this.$emit('sticker-upload-Failed', e)\n    },\n    setCaret ({ target: { selectionStart } }) {\n      this.caret = selectionStart\n    },\n    resize () {\n      const panel = this.$refs.panel\n      if (!panel) return\n      const picker = this.$refs.picker.$el\n      const panelBody = this.$refs['panel-body']\n      const { offsetHeight, offsetTop } = this.input\n      const offsetBottom = offsetTop + offsetHeight\n\n      this.setPlacement(panelBody, panel, offsetBottom)\n      this.setPlacement(picker, picker, offsetBottom)\n    },\n    setPlacement (container, target, offsetBottom) {\n      if (!container || !target) return\n\n      target.style.top = offsetBottom + 'px'\n      target.style.bottom = 'auto'\n\n      if (this.placement === 'top' || (this.placement === 'auto' && this.overflowsBottom(container))) {\n        target.style.top = 'auto'\n        target.style.bottom = this.input.offsetHeight + 'px'\n      }\n    },\n    overflowsBottom (el) {\n      return el.getBoundingClientRect().bottom > window.innerHeight\n    }\n  }\n}\n\nexport default EmojiInput\n","import { render } from \"./emoji_input.vue?vue&type=template&id=59b4cd40\"\nimport script from \"./emoji_input.js?vue&type=script&lang=js\"\nexport * from \"./emoji_input.js?vue&type=script&lang=js\"\n\nimport \"./emoji_input.vue?vue&type=style&index=0&id=59b4cd40&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","module.exports = __webpack_public_path__ + \"static/img/nsfw.ca95de9.png\";","export default {\n  \"about\": {\n    \"mrf\": {\n      \"federation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Federation\"])},\n      \"keyword\": {\n        \"keyword_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keyword policies\"])},\n        \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Removal from \\\"The Whole Known Network\\\" Timeline\"])},\n        \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reject\"])},\n        \"replace\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Replace\"])},\n        \"is_replaced_by\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"→\"])}\n      },\n      \"mrf_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enabled MRF policies\"])},\n      \"mrf_policies_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MRF policies manipulate the federation behaviour of the instance.  The following policies are enabled:\"])},\n      \"simple\": {\n        \"simple_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instance-specific policies\"])},\n        \"instance\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instance\"])},\n        \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reason\"])},\n        \"not_applicable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N/A\"])},\n        \"accept\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accept\"])},\n        \"accept_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance only accepts messages from the following instances:\"])},\n        \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reject\"])},\n        \"reject_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance will not accept messages from the following instances:\"])},\n        \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Quarantine\"])},\n        \"quarantine_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance will send only public posts to the following instances:\"])},\n        \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Removal from \\\"Known Network\\\" Timeline\"])},\n        \"ftl_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance removes these instances from \\\"Known Network\\\" timeline:\"])},\n        \"media_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media Removal\"])},\n        \"media_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance removes media from posts on the following instances:\"])},\n        \"media_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media force-set as sensitive\"])},\n        \"media_nsfw_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance forces media to be set sensitive in posts on the following instances:\"])}\n      }\n    },\n    \"staff\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Staff\"])}\n  },\n  \"shoutbox\": {\n    \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shoutbox\"])}\n  },\n  \"domain_mute_card\": {\n    \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute\"])},\n    \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Muting…\"])},\n    \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmute\"])},\n    \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmuting…\"])}\n  },\n  \"exporter\": {\n    \"export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Export\"])},\n    \"processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Processing, you'll soon be asked to download your file\"])}\n  },\n  \"features_panel\": {\n    \"shout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shoutbox\"])},\n    \"pleroma_chat_messages\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma Chat\"])},\n    \"gopher\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gopher\"])},\n    \"media_proxy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media proxy\"])},\n    \"scope_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scope options\"])},\n    \"text_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Text limit\"])},\n    \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Features\"])},\n    \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Who to follow\"])},\n    \"upload_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload limit\"])}\n  },\n  \"finder\": {\n    \"error_fetching_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error fetching user\"])},\n    \"find_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Find user\"])}\n  },\n  \"general\": {\n    \"apply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Apply\"])},\n    \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n    \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More\"])},\n    \"loading\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Loading…\"])},\n    \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"An error occured\"])},\n    \"error_retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Please try again\"])},\n    \"retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Try again\"])},\n    \"optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"optional\"])},\n    \"show_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show more\"])},\n    \"show_less\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show less\"])},\n    \"dismiss\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dismiss\"])},\n    \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])},\n    \"disable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disable\"])},\n    \"enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enable\"])},\n    \"confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirm\"])},\n    \"verify\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verify\"])},\n    \"close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close\"])},\n    \"peek\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Peek\"])},\n    \"role\": {\n      \"admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n      \"moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Moderator\"])}\n    },\n    \"flash_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Click to show Flash content using Ruffle (Experimental, may not work).\"])},\n    \"flash_security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Note that this can be potentially dangerous since Flash content is still arbitrary code.\"])},\n    \"flash_fail\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Failed to load flash content, see console for details.\"])},\n    \"scope_in_timeline\": {\n      \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Direct\"])},\n      \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Followers-only\"])},\n      \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Public\"])},\n      \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unlisted\"])}\n    }\n  },\n  \"image_cropper\": {\n    \"crop_picture\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Crop picture\"])},\n    \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save\"])},\n    \"save_without_cropping\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save without cropping\"])},\n    \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])}\n  },\n  \"importer\": {\n    \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n    \"success\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Imported successfully.\"])},\n    \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"An error occured while importing this file.\"])}\n  },\n  \"login\": {\n    \"login\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in\"])},\n    \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in with OAuth\"])},\n    \"logout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log out\"])},\n    \"password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password\"])},\n    \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g. lain\"])},\n    \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n    \"username\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Username\"])},\n    \"hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in to join the discussion\"])},\n    \"authentication_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Authentication code\"])},\n    \"enter_recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter a recovery code\"])},\n    \"enter_two_factor_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter a two-factor code\"])},\n    \"recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Recovery code\"])},\n    \"heading\": {\n      \"totp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Two-factor authentication\"])},\n      \"recovery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Two-factor recovery\"])}\n    }\n  },\n  \"media_modal\": {\n    \"previous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Previous\"])},\n    \"next\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Next\"])},\n    \"counter\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"current\")), \" / \", _interpolate(_named(\"total\"))])},\n    \"hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close media viewer\"])}\n  },\n  \"nav\": {\n    \"about\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"About\"])},\n    \"administration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n    \"back\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back\"])},\n    \"friend_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow requests\"])},\n    \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mentions\"])},\n    \"interactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interactions\"])},\n    \"dms\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Direct messages\"])},\n    \"public_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Public timeline\"])},\n    \"timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timeline\"])},\n    \"home_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Home timeline\"])},\n    \"twkn\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Known Network\"])},\n    \"bookmarks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bookmarks\"])},\n    \"user_search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Search\"])},\n    \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search\"])},\n    \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Who to follow\"])},\n    \"preferences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preferences\"])},\n    \"timelines\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timelines\"])},\n    \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Chats\"])}\n  },\n  \"notifications\": {\n    \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unknown status, searching for it…\"])},\n    \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Error fetching notifications: \", _interpolate(_list(0))])},\n    \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"favorited your status\"])},\n    \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"followed you\"])},\n    \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wants to follow you\"])},\n    \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load older notifications\"])},\n    \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifications\"])},\n    \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Read!\"])},\n    \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"repeated your status\"])},\n    \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No more notifications\"])},\n    \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"migrated to\"])},\n    \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reacted with \", _interpolate(_list(0))])},\n    \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"poll has ended\"])}\n  },\n  \"polls\": {\n    \"add_poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add poll\"])},\n    \"add_option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add option\"])},\n    \"option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Option\"])},\n    \"votes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"votes\"])},\n    \"people_voted_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" person voted\"]), _normalize([_interpolate(_named(\"count\")), \" people voted\"])])},\n    \"votes_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" vote\"]), _normalize([_interpolate(_named(\"count\")), \" votes\"])])},\n    \"vote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vote\"])},\n    \"type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Poll type\"])},\n    \"single_choice\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Single choice\"])},\n    \"multiple_choices\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Multiple choices\"])},\n    \"expiry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Poll age\"])},\n    \"expires_in\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Poll ends in \", _interpolate(_list(0))])},\n    \"expired\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Poll ended \", _interpolate(_list(0)), \" ago\"])},\n    \"not_enough_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Too few unique options in poll\"])}\n  },\n  \"emoji\": {\n    \"stickers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Stickers\"])},\n    \"emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emoji\"])},\n    \"keep_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep picker open\"])},\n    \"search_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search for an emoji\"])},\n    \"add_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Insert emoji\"])},\n    \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Custom emoji\"])},\n    \"unicode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unicode emoji\"])},\n    \"load_all_hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Loaded first \", _interpolate(_named(\"saneAmount\")), \" emoji, loading all emoji may cause performance issues.\"])},\n    \"load_all\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Loading all \", _interpolate(_named(\"emojiAmount\")), \" emoji\"])}\n  },\n  \"errors\": {\n    \"storage_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma could not access browser storage. Your login or your local settings won't be saved and you might encounter unexpected issues. Try enabling cookies.\"])}\n  },\n  \"interactions\": {\n    \"favs_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeats and favorites\"])},\n    \"follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New follows\"])},\n    \"moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User migrates\"])},\n    \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load older interactions\"])}\n  },\n  \"post_status\": {\n    \"new_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post new status\"])},\n    \"account_not_locked_warning\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Your account is not \", _interpolate(_list(0)), \". Anyone can follow you to view your follower-only posts.\"])},\n    \"account_not_locked_warning_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"locked\"])},\n    \"attachments_sensitive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mark attachments as sensitive\"])},\n    \"media_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media description\"])},\n    \"content_type\": {\n      \"text/plain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Plain text\"])},\n      \"text/html\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"HTML\"])},\n      \"text/markdown\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Markdown\"])},\n      \"text/bbcode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"BBCode\"])},\n      \"text/x.misskeymarkdown\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MFM\"])}\n    },\n    \"content_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Subject (optional)\"])},\n    \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Just landed in L.A.\"])},\n    \"direct_warning_to_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will be visible to all the mentioned users.\"])},\n    \"direct_warning_to_first_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will only be visible to the mentioned users at the beginning of the message.\"])},\n    \"posting\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posting\"])},\n    \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post\"])},\n    \"preview\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preview\"])},\n    \"preview_empty\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Empty\"])},\n    \"empty_status_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Can't post an empty status with no files\"])},\n    \"media_description_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Failed to update media, try again\"])},\n    \"scope_notice\": {\n      \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will be visible to everyone\"])},\n      \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will be visible to your followers only\"])},\n      \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will not be visible in Public Timeline and The Whole Known Network\"])},\n      \"local\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will not be visible on other instances\"])}\n    },\n    \"scope\": {\n      \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Direct - post to mentioned users only\"])},\n      \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Followers-only - post to followers only\"])},\n      \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Public - post to public timelines\"])},\n      \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unlisted - do not post to public timelines\"])},\n      \"local\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Local - do not federate this post\"])}\n    }\n  },\n  \"registration\": {\n    \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n    \"email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email\"])},\n    \"fullname\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Display name\"])},\n    \"password_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password confirmation\"])},\n    \"registration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration\"])},\n    \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invite token\"])},\n    \"captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"CAPTCHA\"])},\n    \"new_captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Click the image to get a new captcha\"])},\n    \"username_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g. lain\"])},\n    \"fullname_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g. Lain Iwakura\"])},\n    \"bio_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g.\\nHi, I'm Lain.\\nI’m an anime girl living in suburban Japan. You may know me from the Wired.\"])},\n    \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reason to register\"])},\n    \"reason_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance approves registrations manually.\\nLet the administration know why you want to register.\"])},\n    \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n    \"validations\": {\n      \"username_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n      \"fullname_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n      \"email_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n      \"password_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n      \"password_confirmation_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n      \"password_confirmation_match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"should be the same as password\"])}\n    },\n    \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"In which language do you want to receive emails from the server?\"])}\n  },\n  \"remote_user_resolver\": {\n    \"remote_user_resolver\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remote user resolver\"])},\n    \"searching_for\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Searching for\"])},\n    \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Not found.\"])}\n  },\n  \"selectable_list\": {\n    \"select_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Select all\"])}\n  },\n  \"settings\": {\n    \"app_name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App name\"])},\n    \"expert_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show advanced\"])},\n    \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save changes\"])},\n    \"security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Security\"])},\n    \"setting_changed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Setting is different from default\"])},\n    \"setting_server_side\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This setting is tied to your profile and affects all sessions and clients\"])},\n    \"enter_current_password_to_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter your current password to confirm your identity\"])},\n    \"post_look_feel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posts Look & Feel\"])},\n    \"mention_links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mention links\"])},\n    \"mfa\": {\n      \"otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OTP\"])},\n      \"setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Setup OTP\"])},\n      \"wait_pre_setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"presetting OTP\"])},\n      \"confirm_and_enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirm & enable OTP\"])},\n      \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Two-factor Authentication\"])},\n      \"generate_new_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Generate new recovery codes\"])},\n      \"warning_of_generate_new_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"When you generate new recovery codes, your old codes won’t work anymore.\"])},\n      \"recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Recovery codes.\"])},\n      \"waiting_a_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Receiving backup codes…\"])},\n      \"recovery_codes_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Write the codes down or save them somewhere secure - otherwise you won't see them again. If you lose access to your 2FA app and recovery codes you'll be locked out of your account.\"])},\n      \"authentication_methods\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Authentication methods\"])},\n      \"scan\": {\n        \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scan\"])},\n        \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Using your two-factor app, scan this QR code or enter text key:\"])},\n        \"secret_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Key\"])}\n      },\n      \"verify\": {\n        \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"To enable two-factor authentication, enter the code from your two-factor app:\"])}\n      }\n    },\n    \"allow_following_move\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Allow auto-follow when following account moves\"])},\n    \"attachmentRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attachments\"])},\n    \"attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attachments\"])},\n    \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avatar\"])},\n    \"avatarAltRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avatars (notifications)\"])},\n    \"avatarRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avatars\"])},\n    \"background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Background\"])},\n    \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n    \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Language for receiving emails from the server\"])},\n    \"block_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block export\"])},\n    \"block_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Export your blocks to a csv file\"])},\n    \"block_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block import\"])},\n    \"block_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error importing blocks\"])},\n    \"blocks_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocks imported! Processing them will take a while.\"])},\n    \"mute_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute export\"])},\n    \"mute_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Export your mutes to a csv file\"])},\n    \"mute_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute import\"])},\n    \"mute_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error importing mutes\"])},\n    \"mutes_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mutes imported! Processing them will take a while.\"])},\n    \"import_mutes_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Import mutes from a csv file\"])},\n    \"blocks_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocks\"])},\n    \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This is a bot account\"])},\n    \"btnRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Buttons\"])},\n    \"cBlue\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blue (Reply, follow)\"])},\n    \"cGreen\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Green (Retweet)\"])},\n    \"cOrange\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Orange (Favorite)\"])},\n    \"cRed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Red (Cancel)\"])},\n    \"change_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Change email\"])},\n    \"change_email_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"There was an issue changing your email.\"])},\n    \"changed_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email changed successfully!\"])},\n    \"change_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Change password\"])},\n    \"change_password_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"There was an issue changing your password.\"])},\n    \"changed_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password changed successfully!\"])},\n    \"chatMessageRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Chat message\"])},\n    \"collapse_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Collapse posts with subjects\"])},\n    \"composing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Composing\"])},\n    \"confirm_new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirm new password\"])},\n    \"current_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your current avatar\"])},\n    \"current_mascot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your current mascot\"])},\n    \"current_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Current password\"])},\n    \"mutes_and_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mutes and Blocks\"])},\n    \"data_import_export_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Data import / export\"])},\n    \"default_vis\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Default visibility scope\"])},\n    \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete account\"])},\n    \"delete_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Permanently delete your data and deactivate your account.\"])},\n    \"delete_account_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"There was an issue deleting your account. If this persists please contact your instance administrator.\"])},\n    \"delete_account_instructions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Type your password in the input below to confirm account deletion.\"])},\n    \"discoverable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Allow discovery of this account in search results and other services\"])},\n    \"domain_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Domains\"])},\n    \"avatar_size_instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The recommended minimum size for avatar images is 150x150 pixels.\"])},\n    \"pad_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pad emoji with spaces when adding from picker\"])},\n    \"emoji_reactions_on_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show emoji reactions on timeline\"])},\n    \"export_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save preset\"])},\n    \"filtering\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtering\"])},\n    \"wordfilter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wordfilter\"])},\n    \"filtering_explanation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"All statuses containing these words will be muted, one per line\"])},\n    \"word_filter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Word filter\"])},\n    \"follow_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow export\"])},\n    \"follow_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Export your follows to a csv file\"])},\n    \"follow_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow import\"])},\n    \"follow_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error importing followers\"])},\n    \"follows_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follows imported! Processing them will take a while.\"])},\n    \"accent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accent\"])},\n    \"foreground\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Foreground\"])},\n    \"general\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"General\"])},\n    \"hide_attachments_in_convo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide attachments in conversations\"])},\n    \"hide_attachments_in_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide attachments in timeline\"])},\n    \"hide_media_previews\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide media previews\"])},\n    \"hide_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide posts of muted users\"])},\n    \"mute_bot_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute bot posts\"])},\n    \"hide_bot_indication\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide bot indication in posts\"])},\n    \"hide_all_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide muted posts\"])},\n    \"max_thumbnails\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maximum amount of thumbnails per post (empty = no limit)\"])},\n    \"hide_isp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide instance-specific panel\"])},\n    \"hide_shoutbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide instance shoutbox\"])},\n    \"right_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reverse order of columns\"])},\n    \"always_show_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Always show floating New Post button\"])},\n    \"hide_wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide instance wallpaper\"])},\n    \"preload_images\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preload images\"])},\n    \"use_one_click_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open NSFW attachments with just one click\"])},\n    \"hide_post_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide post statistics (e.g. the number of favorites)\"])},\n    \"hide_user_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide user statistics (e.g. the number of followers)\"])},\n    \"hide_filtered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide all filtered posts\"])},\n    \"hide_wordfiltered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide word-filtered statuses\"])},\n    \"hide_muted_threads\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide muted threads\"])},\n    \"import_blocks_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Import blocks from a csv file\"])},\n    \"import_followers_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Import follows from a csv file\"])},\n    \"import_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load preset\"])},\n    \"inputRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input fields\"])},\n    \"checkboxRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Checkboxes\"])},\n    \"instance_default\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(default: \", _interpolate(_named(\"value\")), \")\"])},\n    \"instance_default_simple\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(default)\"])},\n    \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interface\"])},\n    \"interfaceLanguage\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interface language\"])},\n    \"invalid_theme_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The selected file is not a supported Pleroma theme. No changes to your theme were made.\"])},\n    \"limited_availability\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unavailable in your browser\"])},\n    \"links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Links\"])},\n    \"lock_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Restrict your account to approved followers only\"])},\n    \"loop_video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Loop videos\"])},\n    \"loop_video_silent_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Loop only videos without sound (i.e. Mastodon's \\\"gifs\\\")\"])},\n    \"mutes_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mutes\"])},\n    \"play_videos_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Play videos in a popup frame\"])},\n    \"file_export_import\": {\n      \"backup_restore\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Settings backup\"])},\n      \"backup_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Backup settings to file\"])},\n      \"backup_settings_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Backup settings and theme to file\"])},\n      \"restore_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Restore settings from file\"])},\n      \"errors\": {\n        \"invalid_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The selected file is not a supported Pleroma settings backup. No changes were made.\"])},\n        \"file_too_new\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Incompatile major version: \", _interpolate(_named(\"fileMajor\")), \", this PleromaFE (settings ver \", _interpolate(_named(\"feMajor\")), \") is too old to handle it\"])},\n        \"file_too_old\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Incompatile major version: \", _interpolate(_named(\"fileMajor\")), \", file version is too old and not supported (min. set. ver. \", _interpolate(_named(\"feMajor\")), \")\"])},\n        \"file_slightly_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File minor version is different, some settings might not load\"])}\n      }\n    },\n    \"profile_fields\": {\n      \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile metadata\"])},\n      \"add_field\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add field\"])},\n      \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])},\n      \"value\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Content\"])}\n    },\n    \"account_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privacy\"])},\n    \"use_contain_fit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't crop the attachment in thumbnails\"])},\n    \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Name\"])},\n    \"name_bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Name & bio\"])},\n    \"new_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New email\"])},\n    \"new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New password\"])},\n    \"posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posts\"])},\n    \"user_profiles\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Profiles\"])},\n    \"notification_visibility\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Types of notifications to show\"])},\n    \"notification_visibility_follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follows\"])},\n    \"notification_visibility_likes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorites\"])},\n    \"notification_visibility_mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mentions\"])},\n    \"notification_visibility_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeats\"])},\n    \"notification_visibility_moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Migrates\"])},\n    \"notification_visibility_emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reactions\"])},\n    \"notification_visibility_polls\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ends of polls you voted in\"])},\n    \"no_rich_text_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Strip rich text formatting from all posts\"])},\n    \"no_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No blocks\"])},\n    \"no_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No mutes\"])},\n    \"hide_favorites_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show list of my favorites (people still get notified)\"])},\n    \"hide_follows_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show who I'm following\"])},\n    \"hide_followers_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show who's following me\"])},\n    \"hide_follows_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show follow count\"])},\n    \"hide_followers_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show follower count\"])},\n    \"show_admin_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show \\\"Admin\\\" badge in my profile\"])},\n    \"show_moderator_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show \\\"Moderator\\\" badge in my profile\"])},\n    \"nsfw_clickthrough\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide sensitive/NSFW media\"])},\n    \"oauth_tokens\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth tokens\"])},\n    \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Token\"])},\n    \"refresh_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Refresh token\"])},\n    \"valid_until\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Valid until\"])},\n    \"revoke_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revoke\"])},\n    \"panelRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panels\"])},\n    \"pause_on_unfocused\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pause when tab is not focused\"])},\n    \"presets\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Presets\"])},\n    \"profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile background\"])},\n    \"profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile banner\"])},\n    \"profile_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile\"])},\n    \"radii_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set up interface edge rounding (in pixels)\"])},\n    \"replies_in_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Replies in timeline\"])},\n    \"reply_visibility_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show all replies\"])},\n    \"reply_visibility_following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Only show replies directed at me or users I'm following\"])},\n    \"reply_visibility_self\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Only show replies directed at me\"])},\n    \"reply_visibility_following_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show replies to my follows\"])},\n    \"reply_visibility_self_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show replies to self only\"])},\n    \"autohide_floating_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Automatically hide New Post button (mobile)\"])},\n    \"saving_err\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error saving settings\"])},\n    \"saving_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Settings saved\"])},\n    \"search_user_to_block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search whom you want to block\"])},\n    \"search_user_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search whom you want to mute\"])},\n    \"security_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Security\"])},\n    \"scope_copy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Copy scope when replying (DMs are always copied)\"])},\n    \"mascot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mastodon FE Mascot\"])},\n    \"minimal_scopes_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Minimize post scope selection options\"])},\n    \"set_new_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set new avatar\"])},\n    \"set_new_mascot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set new mascot\"])},\n    \"set_new_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set new profile background\"])},\n    \"set_new_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set new profile banner\"])},\n    \"reset_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset avatar\"])},\n    \"reset_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset profile background\"])},\n    \"reset_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset profile banner\"])},\n    \"reset_avatar_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to reset the avatar?\"])},\n    \"reset_banner_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to reset the banner?\"])},\n    \"reset_background_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to reset the background?\"])},\n    \"settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Settings\"])},\n    \"subject_input_always_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Always show subject field\"])},\n    \"subject_line_behavior\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Copy subject when replying\"])},\n    \"subject_line_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Like email: \\\"re: subject\\\"\"])},\n    \"subject_line_mastodon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Like mastodon: copy as is\"])},\n    \"subject_line_noop\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not copy\"])},\n    \"conversation_display\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Conversation display style\"])},\n    \"conversation_display_tree\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tree-style\"])},\n    \"disable_sticky_headers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't stick column headers to top of the screen\"])},\n    \"show_scrollbars\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show side column's scrollbars\"])},\n    \"third_column_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"When there's enough space, show third column containing\"])},\n    \"third_column_mode_none\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show third column at all\"])},\n    \"third_column_mode_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifications column\"])},\n    \"third_column_mode_postform\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Main post form and navigation\"])},\n    \"tree_advanced\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Allow more flexible navigation in tree view\"])},\n    \"tree_fade_ancestors\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Display ancestors of the current status in faint text\"])},\n    \"conversation_display_linear\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Linear-style\"])},\n    \"conversation_other_replies_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show the \\\"other replies\\\" button\"])},\n    \"conversation_other_replies_button_below\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Below statuses\"])},\n    \"conversation_other_replies_button_inside\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inside statuses\"])},\n    \"max_depth_in_thread\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maximum number of levels in thread to display by default\"])},\n    \"post_status_content_type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post status content type\"])},\n    \"sensitive_by_default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mark posts as sensitive by default\"])},\n    \"sensitive_if_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Automatically mark images as sensitive if a subject line is specified\"])},\n    \"render_mfm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Render Misskey Markdown\"])},\n    \"useStreamingApiWarning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"It's cool use it. If it breaks refresh I guess?\"])},\n    \"stop_gifs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pause animated images until you hover on them\"])},\n    \"streaming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Automatically show new posts when scrolled to the top\"])},\n    \"user_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Users\"])},\n    \"useStreamingApi\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Receive posts and notifications real-time\"])},\n    \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Text\"])},\n    \"theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Theme\"])},\n    \"theme_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Use hex color codes (#rrggbb) to customize your color theme.\"])},\n    \"theme_help_v2_1\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You can also override certain component's colors and opacity by toggling the checkbox, use \\\"Clear all\\\" button to clear all overrides.\"])},\n    \"theme_help_v2_2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Icons underneath some entries are background/text contrast indicators, hover over for detailed info. Please keep in mind that when using transparency contrast indicators show the worst possible case.\"])},\n    \"tooltipRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tooltips/alerts\"])},\n    \"type_domains_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search domains to mute\"])},\n    \"upload_a_photo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload a photo\"])},\n    \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Settings\"])},\n    \"values\": {\n      \"false\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no\"])},\n      \"true\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"yes\"])}\n    },\n    \"virtual_scrolling\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Optimize timeline rendering\"])},\n    \"use_at_icon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Display \", \"@\", \" symbol as an icon instead of text\"])},\n    \"mention_link_display\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Display mention links\"])},\n    \"mention_link_display_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"always as short names (e.g. \", \"@\", \"foo)\"])},\n    \"mention_link_display_full_for_remote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"as full names only for remote users (e.g. \", \"@\", \"foo\", \"@\", \"example.org)\"])},\n    \"mention_link_display_full\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"always as full names (e.g. \", \"@\", \"foo\", \"@\", \"example.org)\"])},\n    \"mention_link_show_tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show full user names as tooltip for remote users\"])},\n    \"mention_link_show_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show user avatar beside the link\"])},\n    \"mention_link_fade_domain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fade domains (e.g. \", \"@\", \"example.org in \", \"@\", \"foo\", \"@\", \"example.org)\"])},\n    \"mention_link_bolden_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Highlight mention of you when you are mentioned\"])},\n    \"fun\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fun\"])},\n    \"greentext\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Meme arrows\"])},\n    \"show_yous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show (You)s\"])},\n    \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifications\"])},\n    \"notification_setting_filters\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filters\"])},\n    \"notification_setting_block_from_strangers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block notifications from users who you do not follow\"])},\n    \"notification_setting_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privacy\"])},\n    \"notification_setting_hide_notification_contents\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide the sender and contents of push notifications\"])},\n    \"notification_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"To stop receiving notifications from a specific user, use a mute.\"])},\n    \"notification_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocking a user stops all notifications as well as unsubscribes them.\"])},\n    \"enable_web_push_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enable web push notifications\"])},\n    \"more_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More settings\"])},\n    \"style\": {\n      \"switcher\": {\n        \"keep_color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep colors\"])},\n        \"keep_shadows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep shadows\"])},\n        \"keep_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep opacity\"])},\n        \"keep_roundness\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep roundness\"])},\n        \"keep_fonts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep fonts\"])},\n        \"save_load_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"\\\"Keep\\\" options preserve currently set options when selecting or loading themes, it also stores said options when exporting a theme. When all checkboxes unset, exporting theme will save everything.\"])},\n        \"reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset\"])},\n        \"clear_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Clear all\"])},\n        \"clear_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Clear opacity\"])},\n        \"load_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load theme\"])},\n        \"keep_as_is\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep as is\"])},\n        \"use_snapshot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Old version\"])},\n        \"use_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New version\"])},\n        \"help\": {\n          \"upgraded_from_v2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE has been upgraded, theme could look a little bit different than you remember.\"])},\n          \"v2_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File you imported was made for older FE. We try to maximize compatibility but there still could be inconsistencies.\"])},\n          \"future_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File you imported was made in newer version of FE.\"])},\n          \"older_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File you imported was made in older version of FE.\"])},\n          \"snapshot_present\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Theme snapshot is loaded, so all values are overriden. You can load theme's actual data instead.\"])},\n          \"snapshot_missing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No theme snapshot was in the file so it could look different than originally envisioned.\"])},\n          \"fe_upgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE's theme engine upgraded after version update.\"])},\n          \"fe_downgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE's version rolled back.\"])},\n          \"migration_snapshot_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Just to be safe, theme snapshot loaded. You can try loading theme data.\"])},\n          \"migration_napshot_gone\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"For whatever reason snapshot was missing, some stuff could look different than you remember.\"])},\n          \"snapshot_source_mismatch\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versions conflict: most likely FE was rolled back and updated again, if you changed theme using older version of FE you most likely want to use old version, otherwise use new version.\"])}\n        }\n      },\n      \"common\": {\n        \"color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Color\"])},\n        \"opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Opacity\"])},\n        \"contrast\": {\n          \"hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Contrast ratio is \", _interpolate(_named(\"ratio\")), \", it \", _interpolate(_named(\"level\")), \" \", _interpolate(_named(\"context\"))])},\n          \"level\": {\n            \"aa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"meets Level AA guideline (minimal)\"])},\n            \"aaa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"meets Level AAA guideline (recommended)\"])},\n            \"bad\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"doesn't meet any accessibility guidelines\"])}\n          },\n          \"context\": {\n            \"18pt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"for large (18pt+) text\"])},\n            \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"for text\"])}\n          }\n        }\n      },\n      \"common_colors\": {\n        \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Common\"])},\n        \"main\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Common colors\"])},\n        \"foreground_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"See \\\"Advanced\\\" tab for more detailed control\"])},\n        \"rgbo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Icons, accents, badges\"])}\n      },\n      \"advanced_colors\": {\n        \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Advanced\"])},\n        \"alert\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alert background\"])},\n        \"alert_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error\"])},\n        \"alert_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Warning\"])},\n        \"alert_neutral\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neutral\"])},\n        \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posts/User bios\"])},\n        \"badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Badge background\"])},\n        \"popover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tooltips, menus, popovers\"])},\n        \"badge_notification\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notification\"])},\n        \"panel_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panel header\"])},\n        \"top_bar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Top bar\"])},\n        \"borders\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Borders\"])},\n        \"buttons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Buttons\"])},\n        \"inputs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input fields\"])},\n        \"faint_text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Faded text\"])},\n        \"underlay\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Underlay\"])},\n        \"wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wallpaper\"])},\n        \"poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Poll graph\"])},\n        \"icons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Icons\"])},\n        \"highlight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Highlighted elements\"])},\n        \"pressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pressed\"])},\n        \"selectedPost\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Selected post\"])},\n        \"selectedMenu\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Selected menu item\"])},\n        \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disabled\"])},\n        \"toggled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toggled\"])},\n        \"tabs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tabs\"])},\n        \"chat\": {\n          \"incoming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Incoming\"])},\n          \"outgoing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Outgoing\"])},\n          \"border\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Border\"])}\n        }\n      },\n      \"radii\": {\n        \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Roundness\"])}\n      },\n      \"shadows\": {\n        \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shadow and lighting\"])},\n        \"component\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Component\"])},\n        \"override\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Override\"])},\n        \"shadow_id\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Shadow #\", _interpolate(_named(\"value\"))])},\n        \"blur\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blur\"])},\n        \"spread\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Spread\"])},\n        \"inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inset\"])},\n        \"hintV3\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"For shadows you can also use the \", _interpolate(_list(0)), \" notation to use other color slot.\"])},\n        \"filter_hint\": {\n          \"always_drop_shadow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Warning, this shadow always uses \", _interpolate(_list(0)), \" when browser supports it.\"])},\n          \"drop_shadow_syntax\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" does not support \", _interpolate(_list(1)), \" parameter and \", _interpolate(_list(2)), \" keyword.\"])},\n          \"avatar_inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Please note that combining both inset and non-inset shadows on avatars might give unexpected results with transparent avatars.\"])},\n          \"spread_zero\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shadows with spread > 0 will appear as if it was set to zero\"])},\n          \"inset_classic\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Inset shadows will be using \", _interpolate(_list(0))])}\n        },\n        \"components\": {\n          \"panel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panel\"])},\n          \"panelHeader\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panel header\"])},\n          \"topBar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Top bar\"])},\n          \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User avatar (in profile view)\"])},\n          \"avatarStatus\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User avatar (in post display)\"])},\n          \"popup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Popups and tooltips\"])},\n          \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button\"])},\n          \"buttonHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button (hover)\"])},\n          \"buttonPressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button (pressed)\"])},\n          \"buttonPressedHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button (pressed+hover)\"])},\n          \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input field\"])}\n        }\n      },\n      \"fonts\": {\n        \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fonts\"])},\n        \"help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Select font to use for elements of UI. For \\\"custom\\\" you have to enter exact font name as it appears in system.\"])},\n        \"components\": {\n          \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interface\"])},\n          \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input fields\"])},\n          \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post text\"])},\n          \"postCode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Monospaced text in a post (rich text)\"])}\n        },\n        \"family\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Font name\"])},\n        \"size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Size (in px)\"])},\n        \"weight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weight (boldness)\"])},\n        \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Custom\"])}\n      },\n      \"preview\": {\n        \"header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preview\"])},\n        \"content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Content\"])},\n        \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Example error\"])},\n        \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button\"])},\n        \"text\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"A bunch of more \", _interpolate(_list(0)), \" and \", _interpolate(_list(1))])},\n        \"mono\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"content\"])},\n        \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Just landed in L.A.\"])},\n        \"faint_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"helpful manual\"])},\n        \"fine_print\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Read our \", _interpolate(_list(0)), \" to learn nothing useful!\"])},\n        \"header_faint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This is fine\"])},\n        \"checkbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"I have skimmed over terms and conditions\"])},\n        \"link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"a nice lil' link\"])}\n      }\n    },\n    \"version\": {\n      \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Version\"])},\n      \"backend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Backend version\"])},\n      \"frontend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Frontend version\"])}\n    }\n  },\n  \"time\": {\n    \"day\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" day\"])},\n    \"days\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" days\"])},\n    \"day_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"d\"])},\n    \"days_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"d\"])},\n    \"hour\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" hour\"])},\n    \"hours\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" hours\"])},\n    \"hour_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"h\"])},\n    \"hours_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"h\"])},\n    \"in_future\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"in \", _interpolate(_list(0))])},\n    \"in_past\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" ago\"])},\n    \"minute\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" minute\"])},\n    \"minutes\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" minutes\"])},\n    \"minute_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"min\"])},\n    \"minutes_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"min\"])},\n    \"month\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" month\"])},\n    \"months\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" months\"])},\n    \"month_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"mo\"])},\n    \"months_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"mo\"])},\n    \"now\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"just now\"])},\n    \"now_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"now\"])},\n    \"second\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" second\"])},\n    \"seconds\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" seconds\"])},\n    \"second_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"s\"])},\n    \"seconds_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"s\"])},\n    \"week\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" week\"])},\n    \"weeks\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" weeks\"])},\n    \"week_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"w\"])},\n    \"weeks_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"w\"])},\n    \"year\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" year\"])},\n    \"years\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" years\"])},\n    \"year_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"y\"])},\n    \"years_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"y\"])}\n  },\n  \"timeline\": {\n    \"collapse\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Collapse\"])},\n    \"conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Conversation\"])},\n    \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Error fetching timeline: \", _interpolate(_list(0))])},\n    \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load older statuses\"])},\n    \"no_retweet_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post is marked as followers-only or direct and cannot be repeated\"])},\n    \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"repeated\"])},\n    \"show_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show new\"])},\n    \"reload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reload\"])},\n    \"up_to_date\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Up-to-date\"])},\n    \"no_more_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No more statuses\"])},\n    \"no_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No statuses\"])},\n    \"socket_reconnected\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Realtime connection established\"])},\n    \"socket_broke\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Realtime connection lost: CloseEvent code \", _interpolate(_list(0))])}\n  },\n  \"status\": {\n    \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorites\"])},\n    \"repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeats\"])},\n    \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete status\"])},\n    \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pin on profile\"])},\n    \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unpin from profile\"])},\n    \"pinned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pinned\"])},\n    \"bookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bookmark\"])},\n    \"unbookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unbookmark\"])},\n    \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to delete this status?\"])},\n    \"reply_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reply to\"])},\n    \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mentions\"])},\n    \"replies_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Replies:\"])},\n    \"replies_list_with_others\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Replies (+\", _interpolate(_named(\"numReplies\")), \" other):\"]), _normalize([\"Replies (+\", _interpolate(_named(\"numReplies\")), \" others):\"])])},\n    \"mute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute conversation\"])},\n    \"unmute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmute conversation\"])},\n    \"status_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Status unavailable\"])},\n    \"copy_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Copy link to status\"])},\n    \"external_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"External source\"])},\n    \"thread_muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Thread muted\"])},\n    \"thread_muted_and_words\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\", has words:\"])},\n    \"show_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show full subject\"])},\n    \"hide_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide full subject\"])},\n    \"show_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show content\"])},\n    \"hide_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide content\"])},\n    \"status_deleted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post was deleted\"])},\n    \"nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NSFW\"])},\n    \"expand\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Expand\"])},\n    \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(You)\"])},\n    \"plus_more\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"+\", _interpolate(_named(\"number\")), \" more\"])},\n    \"many_attachments\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Post has \", _interpolate(_named(\"number\")), \" attachment(s)\"])},\n    \"collapse_attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Collapse attachments\"])},\n    \"show_all_attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show all attachments\"])},\n    \"show_attachment_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show in media modal\"])},\n    \"show_attachment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preview description (open attachment for full description)\"])},\n    \"hide_attachment\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide attachment\"])},\n    \"remove_attachment\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove attachment\"])},\n    \"attachment_stop_flash\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Stop Flash player\"])},\n    \"move_up\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shift attachment left\"])},\n    \"move_down\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shift attachment right\"])},\n    \"open_gallery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open gallery\"])},\n    \"thread_hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide this thread\"])},\n    \"thread_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show this thread\"])},\n    \"thread_show_full\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Show everything under this thread (\", _interpolate(_named(\"numStatus\")), \" status in total, max depth \", _interpolate(_named(\"depth\")), \")\"]), _normalize([\"Show everything under this thread (\", _interpolate(_named(\"numStatus\")), \" statuses in total, max depth \", _interpolate(_named(\"depth\")), \")\"])])},\n    \"thread_show_full_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n    \"thread_follow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"See the remaining part of this thread (\", _interpolate(_named(\"numStatus\")), \" status in total)\"]), _normalize([\"See the remaining part of this thread (\", _interpolate(_named(\"numStatus\")), \" statuses in total)\"])])},\n    \"thread_follow_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n    \"ancestor_follow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"See \", _interpolate(_named(\"numReplies\")), \" other reply under this status\"]), _normalize([\"See \", _interpolate(_named(\"numReplies\")), \" other replies under this status\"])])},\n    \"ancestor_follow_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n    \"show_all_conversation_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n    \"show_all_conversation\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Show full conversation (\", _interpolate(_named(\"numStatus\")), \" other status)\"]), _normalize([\"Show full conversation (\", _interpolate(_named(\"numStatus\")), \" other statuses)\"])])},\n    \"show_only_conversation_under_this\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Only show replies to this status\"])}\n  },\n  \"user_card\": {\n    \"approve\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Approve\"])},\n    \"block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block\"])},\n    \"blocked\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocked!\"])},\n    \"deactivated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deactivated\"])},\n    \"deny\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deny\"])},\n    \"edit_profile\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit profile\"])},\n    \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorites\"])},\n    \"follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow\"])},\n    \"follow_cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel request\"])},\n    \"follow_sent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Request sent!\"])},\n    \"follow_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Requesting…\"])},\n    \"follow_unfollow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unfollow\"])},\n    \"followees\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Following\"])},\n    \"followers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Followers\"])},\n    \"following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Following!\"])},\n    \"follows_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follows you!\"])},\n    \"hidden\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hidden\"])},\n    \"its_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"It's you!\"])},\n    \"media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media\"])},\n    \"mention\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mention\"])},\n    \"message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Message\"])},\n    \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute\"])},\n    \"muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Muted\"])},\n    \"per_day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"per day\"])},\n    \"remote_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remote follow\"])},\n    \"report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Report\"])},\n    \"statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statuses\"])},\n    \"subscribe\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Subscribe\"])},\n    \"unsubscribe\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unsubscribe\"])},\n    \"unblock\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unblock\"])},\n    \"unblock_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unblocking…\"])},\n    \"block_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocking…\"])},\n    \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmute\"])},\n    \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmuting…\"])},\n    \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Muting…\"])},\n    \"hide_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide repeats\"])},\n    \"show_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show repeats\"])},\n    \"domain_muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unblock domain\"])},\n    \"mute_domain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block domain\"])},\n    \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bot\"])},\n    \"admin_menu\": {\n      \"moderation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Moderation\"])},\n      \"grant_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Grant Admin\"])},\n      \"revoke_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revoke Admin\"])},\n      \"grant_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Grant Moderator\"])},\n      \"revoke_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revoke Moderator\"])},\n      \"activate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activate account\"])},\n      \"deactivate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deactivate account\"])},\n      \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete account\"])},\n      \"force_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mark all posts as NSFW\"])},\n      \"strip_media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove media from posts\"])},\n      \"force_unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Force posts to be unlisted\"])},\n      \"sandbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Force posts to be followers-only\"])},\n      \"disable_remote_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disallow following user from remote instances\"])},\n      \"disable_any_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disallow following user at all\"])},\n      \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disallow user posts from federating\"])},\n      \"delete_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete user\"])},\n      \"delete_user_confirmation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you absolutely sure? This action cannot be undone.\"])}\n    },\n    \"highlight\": {\n      \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No highlight\"])},\n      \"solid\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Solid bg\"])},\n      \"striped\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Striped bg\"])},\n      \"side\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Side stripe\"])}\n    }\n  },\n  \"user_profile\": {\n    \"timeline_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User timeline\"])},\n    \"profile_does_not_exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, this profile does not exist.\"])},\n    \"profile_loading_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, there was an error loading this profile.\"])}\n  },\n  \"user_reporting\": {\n    \"title\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Reporting \", _interpolate(_list(0))])},\n    \"add_comment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:\"])},\n    \"additional_comments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Additional comments\"])},\n    \"forward_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The account is from another server. Send a copy of the report there as well?\"])},\n    \"forward_to\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Forward to \", _interpolate(_list(0))])},\n    \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n    \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"An error occurred while processing your request.\"])}\n  },\n  \"who_to_follow\": {\n    \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More\"])},\n    \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Who to follow\"])}\n  },\n  \"tool_tip\": {\n    \"media_upload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload media\"])},\n    \"repeat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeat\"])},\n    \"reply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reply\"])},\n    \"favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorite\"])},\n    \"add_reaction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add Reaction\"])},\n    \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Settings\"])},\n    \"accept_follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accept follow request\"])},\n    \"reject_follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reject follow request\"])},\n    \"bookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bookmark\"])}\n  },\n  \"upload\": {\n    \"error\": {\n      \"base\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload failed.\"])},\n      \"message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Upload failed: \", _interpolate(_list(0))])},\n      \"file_too_big\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"File too big [\", _interpolate(_named(\"filesize\")), _interpolate(_named(\"filesizeunit\")), \" / \", _interpolate(_named(\"allowedsize\")), _interpolate(_named(\"allowedsizeunit\")), \"]\"])},\n      \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Try again later\"])}\n    },\n    \"file_size_units\": {\n      \"B\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"B\"])},\n      \"KiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"KiB\"])},\n      \"MiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MiB\"])},\n      \"GiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"GiB\"])},\n      \"TiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"TiB\"])}\n    }\n  },\n  \"search\": {\n    \"people\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"People\"])},\n    \"hashtags\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hashtags\"])},\n    \"person_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" person talking\"])},\n    \"people_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" people talking\"])},\n    \"no_results\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No results\"])}\n  },\n  \"password_reset\": {\n    \"forgot_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forgot password?\"])},\n    \"password_reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password reset\"])},\n    \"instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter your email address or username. We will send you a link to reset your password.\"])},\n    \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your email or username\"])},\n    \"check_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Check your email for a link to reset your password.\"])},\n    \"return_home\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Return to the home page\"])},\n    \"too_many_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You have reached the limit of attempts, try again later.\"])},\n    \"password_reset_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password reset is disabled. Please contact your instance administrator.\"])},\n    \"password_reset_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You must reset your password to log in.\"])},\n    \"password_reset_required_but_mailer_is_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You must reset your password, but password reset is disabled. Please contact your instance administrator.\"])}\n  },\n  \"chats\": {\n    \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You:\"])},\n    \"message_user\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Message \", _interpolate(_named(\"nickname\"))])},\n    \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete\"])},\n    \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Chats\"])},\n    \"new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New Chat\"])},\n    \"empty_message_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cannot post empty message\"])},\n    \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More\"])},\n    \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to delete this message?\"])},\n    \"error_loading_chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Something went wrong when loading the chat.\"])},\n    \"error_sending_message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Something went wrong when sending the message.\"])},\n    \"empty_chat_list_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You don't have any chats yet. Start a new chat!\"])}\n  },\n  \"file_type\": {\n    \"audio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Audio\"])},\n    \"video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Video\"])},\n    \"image\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Image\"])},\n    \"file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File\"])}\n  },\n  \"display_date\": {\n    \"today\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Today\"])}\n  }\n}","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./login_form.vue?vue&type=style&index=0&id=9e104930&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./media_upload.vue?vue&type=style&index=0&id=8e180d3a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./scope_selector.vue?vue&type=style&index=0&id=4ebab9b5&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./checkbox.vue?vue&type=style&index=0&id=deb5bfe6&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./emoji_picker.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./emoji_input.vue?vue&type=style&index=0&id=59b4cd40&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./select.vue?vue&type=style&index=0&id=099d3e32&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./poll_form.vue?vue&type=style&index=0&id=21f5ba7b&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./still-image.vue?vue&type=style&index=0&id=4da90e4a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./flash.vue?vue&type=style&index=0&id=0dec384a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./attachment.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./gallery.vue?vue&type=style&index=0&id=2bf4ca36&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./user_avatar.vue?vue&type=style&index=0&id=764c87f9&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./mention_link.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./mentions_line.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./hashtag_link.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./poll.vue?vue&type=style&index=0&id=5e9dea28&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./status_body.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./link-preview.vue?vue&type=style&index=0&id=03087feb&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./status_content.vue?vue&type=style&index=0&id=475fea91&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./post_status_form.vue?vue&type=style&index=0&id=ae252da2&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./remote_follow.vue?vue&type=style&index=0&id=2aed8421&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./dialog_modal.vue?vue&type=style&index=0&id=202a26c4&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./popover.vue?vue&type=style&index=0&id=24420bf0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./moderation_tools.vue?vue&type=style&index=0&id=0ae1f97e&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./account_actions.vue?vue&type=style&index=0&id=cbff36f6&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./user_card.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./user_panel.vue?vue&type=style&index=0&id=460aaa4a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./nav_panel.vue?vue&type=style&index=0&id=fdfe5e92&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./features_panel.vue?vue&type=style&index=0&id=9d4c35f4&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./who_to_follow_panel.vue?vue&type=style&index=0&id=b4d31272&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./shout_panel.vue?vue&type=style&index=0&id=3464bd9c&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./modal.vue?vue&type=style&index=0&id=1b320182&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./panel_loading.vue?vue&type=style&index=0&id=595215a2&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./async_component_error.vue?vue&type=style&index=0&id=26dcc164&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./settings_modal.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./media_modal.vue?vue&type=style&index=0&id=85a073e6&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./side_drawer.vue?vue&type=style&index=0&id=4a50df4d&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./mobile_post_status_button.vue?vue&type=style&index=0&id=9a586640&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./reply_button.vue?vue&type=style&index=0&id=56f413c0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./favorite_button.vue?vue&type=style&index=0&id=21f861d8&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./react_button.vue?vue&type=style&index=0&id=0101edf8&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./retweet_button.vue?vue&type=style&index=0&id=46fe49c4&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./extra_buttons.vue?vue&type=style&index=0&id=3a956a44&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./avatar_list.vue?vue&type=style&index=0&id=4cea5bcf&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./status_popover.vue?vue&type=style&index=0&id=fa4a5d94&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./user_list_popover.vue?vue&type=style&index=0&id=3dc0c2d4&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./emoji_reactions.vue?vue&type=style&index=0&id=1bf35779&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./status.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./notification.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./notification_filters.vue?vue&type=style&index=0&id=afbf2f10&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./notifications.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./mobile_nav.vue?vue&type=style&index=0&id=cab8ee52&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./search_bar.vue?vue&type=style&index=0&id=105122b7&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./desktop_nav.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./list.vue?vue&type=style&index=0&id=c1790f52&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./user_reporting_modal.vue?vue&type=style&index=0&id=116c0e28&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./post_status_modal.vue?vue&type=style&index=0&id=b6b8d3a2&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./global_notice_list.vue?vue&type=style&index=0&id=5e034d4c&lang=scss\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js!../node_modules/css-loader/index.js!../node_modules/vue-loader/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js!../node_modules/sass-loader/lib/loader.js!./App.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./thread_tree.vue?vue&type=style&index=0&id=38969046&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./conversation.vue?vue&type=style&index=0&id=ee2f7a9a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./timeline_menu.vue?vue&type=style&index=0&id=0d348974&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./timeline_quick_settings.vue?vue&type=style&index=0&id=ad1076ec&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./timeline.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./chat_title.vue?vue&type=style&index=0&id=113f5355&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./chat_list_item.vue?vue&type=style&index=0&id=0623aed7&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./basic_user_card.vue?vue&type=style&index=0&id=dd332bac&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./chat_new.vue?vue&type=style&index=0&id=54e93eee&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./chat_list.vue?vue&type=style&index=0&id=598ab446&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./chat_message.vue?vue&type=style&index=0&id=3566ce4a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./chat.vue?vue&type=style&index=0&id=9416a190&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./follow_card.vue?vue&type=style&index=0&id=4030f5aa&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./user_profile.vue?vue&type=style&index=0&id=56ed1f7e&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./search.vue?vue&type=style&index=0&id=52f57ebe&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./registration.vue?vue&type=style&index=0&id=c19f87d0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./password_reset.vue?vue&type=style&index=0&id=3a677309&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./follow_request_card.vue?vue&type=style&index=0&id=84be1288&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./terms_of_service_panel.vue?vue&type=style&index=0&id=687e38f6&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./staff_panel.vue?vue&type=style&index=0&id=31dce24a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./mrf_transparency_panel.vue?vue&type=style&index=0&id=7f2ca562&lang=scss\"","import EventTargetPolyfill from '@ungap/event-target'\n\ntry {\n  /* eslint-disable no-new  */\n  new EventTarget()\n  /* eslint-enable no-new  */\n} catch (e) {\n  window.EventTarget = EventTargetPolyfill\n}\n","const defaultState = {\n  settingsModalState: 'hidden',\n  settingsModalLoaded: false,\n  settingsModalTargetTab: null,\n  settings: {\n    currentSaveStateNotice: null,\n    noticeClearTimeout: null,\n    notificationPermission: null\n  },\n  browserSupport: {\n    cssFilter: window.CSS && window.CSS.supports && (\n      window.CSS.supports('filter', 'drop-shadow(0 0)') ||\n      window.CSS.supports('-webkit-filter', 'drop-shadow(0 0)')\n    )\n  },\n  layoutType: 'normal',\n  globalNotices: [],\n  layoutHeight: 0,\n  lastTimeline: null\n}\n\nconst interfaceMod = {\n  state: defaultState,\n  mutations: {\n    settingsSaved (state, { success, error }) {\n      if (success) {\n        if (state.noticeClearTimeout) {\n          clearTimeout(state.noticeClearTimeout)\n        }\n        state.settings.currentSaveStateNotice = { error: false, data: success }\n        state.settings.noticeClearTimeout = setTimeout(() => delete state.settings.currentSaveStateNotice, 2000)\n      } else {\n        state.settings.currentSaveStateNotice = { error: true, errorData: error }\n      }\n    },\n    setNotificationPermission (state, permission) {\n      state.notificationPermission = permission\n    },\n    setLayoutType (state, value) {\n      state.layoutType = value\n    },\n    closeSettingsModal (state) {\n      state.settingsModalState = 'hidden'\n    },\n    togglePeekSettingsModal (state) {\n      switch (state.settingsModalState) {\n        case 'minimized':\n          state.settingsModalState = 'visible'\n          return\n        case 'visible':\n          state.settingsModalState = 'minimized'\n          return\n        default:\n          throw new Error('Illegal minimization state of settings modal')\n      }\n    },\n    openSettingsModal (state) {\n      state.settingsModalState = 'visible'\n      if (!state.settingsModalLoaded) {\n        state.settingsModalLoaded = true\n      }\n    },\n    setSettingsModalTargetTab (state, value) {\n      state.settingsModalTargetTab = value\n    },\n    pushGlobalNotice (state, notice) {\n      state.globalNotices.push(notice)\n    },\n    removeGlobalNotice (state, notice) {\n      state.globalNotices = state.globalNotices.filter(n => n !== notice)\n    },\n    setLayoutHeight (state, value) {\n      state.layoutHeight = value\n    },\n    setLayoutWidth (state, value) {\n      state.layoutWidth = value\n    },\n    setLastTimeline (state, value) {\n      state.lastTimeline = value\n    }\n  },\n  actions: {\n    setPageTitle ({ rootState }, option = '') {\n      document.title = `${option} ${rootState.instance.name}`\n    },\n    settingsSaved ({ commit, dispatch }, { success, error }) {\n      commit('settingsSaved', { success, error })\n    },\n    setNotificationPermission ({ commit }, permission) {\n      commit('setNotificationPermission', permission)\n    },\n    closeSettingsModal ({ commit }) {\n      commit('closeSettingsModal')\n    },\n    openSettingsModal ({ commit }) {\n      commit('openSettingsModal')\n    },\n    togglePeekSettingsModal ({ commit }) {\n      commit('togglePeekSettingsModal')\n    },\n    clearSettingsModalTargetTab ({ commit }) {\n      commit('setSettingsModalTargetTab', null)\n    },\n    openSettingsModalTab ({ commit }, value) {\n      commit('setSettingsModalTargetTab', value)\n      commit('openSettingsModal')\n    },\n    pushGlobalNotice (\n      { commit, dispatch, state },\n      {\n        messageKey,\n        messageArgs = {},\n        level = 'error',\n        timeout = 0\n      }) {\n      const notice = {\n        messageKey,\n        messageArgs,\n        level\n      }\n      commit('pushGlobalNotice', notice)\n      // Adding a new element to array wraps it in a Proxy, which breaks the comparison\n      // TODO: Generate UUID or something instead or relying on !== operator?\n      const newNotice = state.globalNotices[state.globalNotices.length - 1]\n      if (timeout) {\n        setTimeout(() => dispatch('removeGlobalNotice', newNotice), timeout)\n      }\n      return newNotice\n    },\n    removeGlobalNotice ({ commit }, notice) {\n      commit('removeGlobalNotice', notice)\n    },\n    setLayoutHeight ({ commit }, value) {\n      commit('setLayoutHeight', value)\n    },\n    // value is optional, assuming it was cached prior\n    setLayoutWidth ({ commit, state, rootGetters, rootState }, value) {\n      let width = value\n      if (value !== undefined) {\n        commit('setLayoutWidth', value)\n      } else {\n        width = state.layoutWidth\n      }\n      const mobileLayout = width <= 800\n      const normalOrMobile = mobileLayout ? 'mobile' : 'normal'\n      const { thirdColumnMode } = rootGetters.mergedConfig\n      if (thirdColumnMode === 'none' || !rootState.users.currentUser) {\n        commit('setLayoutType', normalOrMobile)\n      } else {\n        const wideLayout = width >= 1300\n        commit('setLayoutType', wideLayout ? 'wide' : normalOrMobile)\n      }\n    },\n    setLastTimeline ({ commit }, value) {\n      commit('setLastTimeline', value)\n    }\n  }\n}\n\nexport default interfaceMod\n","import { getPreset, applyTheme } from '../services/style_setter/style_setter.js'\nimport { CURRENT_VERSION } from '../services/theme_data/theme_data.service.js'\nimport apiService from '../services/api/api.service.js'\nimport { instanceDefaultProperties } from './config.js'\n\nconst defaultState = {\n  // Stuff from apiConfig\n  name: 'Pleroma FE',\n  registrationOpen: true,\n  server: 'http://localhost:4040/',\n  textlimit: 5000,\n  themeData: undefined,\n  vapidPublicKey: undefined,\n\n  // Stuff from static/config.json\n  alwaysShowSubjectInput: true,\n  defaultAvatar: '/images/avi.png',\n  defaultBanner: '/images/banner.png',\n  background: '/static/aurora_borealis.jpg',\n  collapseMessageWithSubject: false,\n  greentext: false,\n  useAtIcon: false,\n  mentionLinkDisplay: 'short',\n  mentionLinkShowTooltip: true,\n  mentionLinkShowAvatar: false,\n  mentionLinkFadeDomain: true,\n  mentionLinkShowYous: false,\n  mentionLinkBoldenYou: true,\n  hideFilteredStatuses: false,\n  // bad name: actually hides posts of muted USERS\n  hideMutedPosts: false,\n  hideMutedThreads: true,\n  hideWordFilteredPosts: false,\n  hidePostStats: false,\n  hideBotIndication: false,\n  hideSitename: false,\n  hideUserStats: false,\n  muteBotStatuses: false,\n  loginMethod: 'password',\n  logo: '/static/logo.svg',\n  logoMargin: '.2em',\n  logoMask: true,\n  logoLeft: false,\n  minimalScopesMode: false,\n  nsfwCensorImage: undefined,\n  postContentType: 'text/plain',\n  redirectRootLogin: '/main/friends',\n  redirectRootNoLogin: '/main/all',\n  scopeCopy: true,\n  showFeaturesPanel: true,\n  showInstanceSpecificPanel: false,\n  sidebarRight: false,\n  subjectLineBehavior: 'email',\n  theme: 'pleroma-dark',\n  virtualScrolling: true,\n  sensitiveByDefault: false,\n  sensitiveIfSubject: false,\n  renderMisskeyMarkdown: false,\n  conversationDisplay: 'linear',\n  conversationTreeAdvanced: false,\n  conversationOtherRepliesButton: 'below',\n  conversationTreeFadeAncestors: false,\n  maxDepthInThread: 6,\n\n  // Nasty stuff\n  customEmoji: [],\n  customEmojiFetched: false,\n  emoji: [],\n  emojiFetched: false,\n  pleromaBackend: true,\n  postFormats: [],\n  restrictedNicknames: [],\n  safeDM: true,\n  knownDomains: [],\n\n  // Feature-set, apparently, not everything here is reported...\n  shoutAvailable: false,\n  pleromaChatMessagesAvailable: false,\n  gopherAvailable: false,\n  mediaProxyAvailable: false,\n  suggestionsEnabled: false,\n  suggestionsWeb: '',\n\n  // Html stuff\n  instanceSpecificPanelContent: '',\n  tos: '',\n\n  // Version Information\n  backendVersion: '',\n  frontendVersion: '',\n\n  pollsAvailable: false,\n  pollLimits: {\n    max_options: 4,\n    max_option_chars: 255,\n    min_expiration: 60,\n    max_expiration: 60 * 60 * 24\n  }\n}\n\nconst instance = {\n  state: defaultState,\n  mutations: {\n    setInstanceOption (state, { name, value }) {\n      if (typeof value !== 'undefined') {\n        state[name] = value\n      }\n    },\n    setKnownDomains (state, domains) {\n      state.knownDomains = domains\n    }\n  },\n  getters: {\n    instanceDefaultConfig (state) {\n      return instanceDefaultProperties\n        .map(key => [key, state[key]])\n        .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {})\n    },\n    instanceDomain (state) {\n      return new URL(state.server).hostname\n    }\n  },\n  actions: {\n    setInstanceOption ({ commit, dispatch }, { name, value }) {\n      commit('setInstanceOption', { name, value })\n      switch (name) {\n        case 'name':\n          dispatch('setPageTitle')\n          break\n        case 'shoutAvailable':\n          if (value) {\n            dispatch('initializeSocket')\n          }\n          break\n        case 'theme':\n          dispatch('setTheme', value)\n          break\n      }\n    },\n    async getStaticEmoji ({ commit }) {\n      try {\n        const res = await window.fetch('/static/emoji.json')\n        if (res.ok) {\n          const values = await res.json()\n          const emoji = Object.keys(values).map((key) => {\n            return {\n              displayText: key,\n              imageUrl: false,\n              replacement: values[key]\n            }\n          }).sort((a, b) => a.name > b.name ? 1 : -1)\n          commit('setInstanceOption', { name: 'emoji', value: emoji })\n        } else {\n          throw (res)\n        }\n      } catch (e) {\n        console.warn(\"Can't load static emoji\")\n        console.warn(e)\n      }\n    },\n\n    async getCustomEmoji ({ commit, state }) {\n      try {\n        const res = await window.fetch('/api/pleroma/emoji.json')\n        if (res.ok) {\n          const result = await res.json()\n          const values = Array.isArray(result) ? Object.assign({}, ...result) : result\n          const emoji = Object.entries(values).map(([key, value]) => {\n            const imageUrl = value.image_url\n            return {\n              displayText: key,\n              imageUrl: imageUrl ? state.server + imageUrl : value,\n              tags: imageUrl ? value.tags.sort((a, b) => a > b ? 1 : 0) : ['utf'],\n              replacement: `:${key}: `\n            }\n            // Technically could use tags but those are kinda useless right now,\n            // should have been \"pack\" field, that would be more useful\n          }).sort((a, b) => a.displayText.toLowerCase() > b.displayText.toLowerCase() ? 1 : -1)\n          commit('setInstanceOption', { name: 'customEmoji', value: emoji })\n        } else {\n          throw (res)\n        }\n      } catch (e) {\n        console.warn(\"Can't load custom emojis\")\n        console.warn(e)\n      }\n    },\n\n    setTheme ({ commit, rootState }, themeName) {\n      commit('setInstanceOption', { name: 'theme', value: themeName })\n      getPreset(themeName)\n        .then(themeData => {\n          commit('setInstanceOption', { name: 'themeData', value: themeData })\n          // No need to apply theme if there's user theme already\n          const { customTheme } = rootState.config\n          if (customTheme) return\n\n          // New theme presets don't have 'theme' property, they use 'source'\n          const themeSource = themeData.source\n          if (!themeData.theme || (themeSource && themeSource.themeEngineVersion === CURRENT_VERSION)) {\n            applyTheme(themeSource)\n          } else {\n            applyTheme(themeData.theme)\n          }\n        })\n    },\n    fetchEmoji ({ dispatch, state }) {\n      if (!state.customEmojiFetched) {\n        state.customEmojiFetched = true\n        dispatch('getCustomEmoji')\n      }\n      if (!state.emojiFetched) {\n        state.emojiFetched = true\n        dispatch('getStaticEmoji')\n      }\n    },\n\n    async getKnownDomains ({ commit, rootState }) {\n      try {\n        const result = await apiService.fetchKnownDomains({\n          credentials: rootState.users.currentUser.credentials\n        })\n        commit('setKnownDomains', result)\n      } catch (e) {\n        console.warn(\"Can't load known domains\")\n        console.warn(e)\n      }\n    }\n  }\n}\n\nexport default instance\n","import {\n  remove,\n  slice,\n  each,\n  findIndex,\n  find,\n  maxBy,\n  minBy,\n  merge,\n  first,\n  last,\n  isArray,\n  omitBy\n} from 'lodash'\nimport {\n  isStatusNotification,\n  isValidNotification,\n  maybeShowNotification\n} from '../services/notification_utils/notification_utils.js'\nimport apiService from '../services/api/api.service.js'\n\nconst emptyTl = (userId = 0) => ({\n  statuses: [],\n  statusesObject: {},\n  faves: [],\n  visibleStatuses: [],\n  visibleStatusesObject: {},\n  newStatusCount: 0,\n  maxId: 0,\n  minId: 0,\n  minVisibleId: 0,\n  loading: false,\n  followers: [],\n  friends: [],\n  userId,\n  flushMarker: 0\n})\n\nconst emptyNotifications = () => ({\n  desktopNotificationSilence: true,\n  maxId: 0,\n  minId: Number.POSITIVE_INFINITY,\n  data: [],\n  idStore: {},\n  loading: false\n})\n\nexport const defaultState = () => ({\n  allStatuses: [],\n  allStatusesObject: {},\n  conversationsObject: {},\n  maxId: 0,\n  notifications: emptyNotifications(),\n  favorites: new Set(),\n  timelines: {\n    mentions: emptyTl(),\n    public: emptyTl(),\n    user: emptyTl(),\n    favorites: emptyTl(),\n    media: emptyTl(),\n    publicAndExternal: emptyTl(),\n    friends: emptyTl(),\n    tag: emptyTl(),\n    dms: emptyTl(),\n    bookmarks: emptyTl()\n  }\n})\n\nexport const prepareStatus = (status) => {\n  // Set deleted flag\n  status.deleted = false\n\n  // To make the array reactive\n  status.attachments = status.attachments || []\n\n  return status\n}\n\nconst mergeOrAdd = (arr, obj, item) => {\n  const oldItem = obj[item.id]\n\n  if (oldItem) {\n    // We already have this, so only merge the new info.\n    // We ignore null values to avoid overwriting existing properties with missing data\n    // we also skip 'user' because that is handled by users module\n    merge(oldItem, omitBy(item, (v, k) => v === null || k === 'user'))\n    // Reactivity fix.\n    oldItem.attachments.splice(oldItem.attachments.length)\n    return { item: oldItem, new: false }\n  } else {\n    // This is a new item, prepare it\n    prepareStatus(item)\n    arr.push(item)\n    obj[item.id] = item\n    return { item, new: true }\n  }\n}\n\nconst sortById = (a, b) => {\n  const seqA = Number(a.id)\n  const seqB = Number(b.id)\n  const isSeqA = !Number.isNaN(seqA)\n  const isSeqB = !Number.isNaN(seqB)\n  if (isSeqA && isSeqB) {\n    return seqA > seqB ? -1 : 1\n  } else if (isSeqA && !isSeqB) {\n    return 1\n  } else if (!isSeqA && isSeqB) {\n    return -1\n  } else {\n    return a.id > b.id ? -1 : 1\n  }\n}\n\nconst sortTimeline = (timeline) => {\n  timeline.visibleStatuses = timeline.visibleStatuses.sort(sortById)\n  timeline.statuses = timeline.statuses.sort(sortById)\n  timeline.minVisibleId = (last(timeline.visibleStatuses) || {}).id\n  return timeline\n}\n\n// Add status to the global storages (arrays and objects maintaining statuses) except timelines\nconst addStatusToGlobalStorage = (state, data) => {\n  const result = mergeOrAdd(state.allStatuses, state.allStatusesObject, data)\n  if (result.new) {\n    // Add to conversation\n    const status = result.item\n    const conversationsObject = state.conversationsObject\n    const conversationId = status.statusnet_conversation_id\n    if (conversationsObject[conversationId]) {\n      conversationsObject[conversationId].push(status)\n    } else {\n      conversationsObject[conversationId] = [status]\n    }\n  }\n  return result\n}\n\n// Remove status from the global storages (arrays and objects maintaining statuses) except timelines\nconst removeStatusFromGlobalStorage = (state, status) => {\n  remove(state.allStatuses, { id: status.id })\n\n  // TODO: Need to remove from allStatusesObject?\n\n  // Remove possible notification\n  remove(state.notifications.data, ({ action: { id } }) => id === status.id)\n\n  // Remove from conversation\n  const conversationId = status.statusnet_conversation_id\n  if (state.conversationsObject[conversationId]) {\n    remove(state.conversationsObject[conversationId], { id: status.id })\n  }\n}\n\nconst addNewStatuses = (state, { statuses, showImmediately = false, timeline, user = {}, noIdUpdate = false, userId, pagination = {} }) => {\n  // Sanity check\n  if (!isArray(statuses)) {\n    return false\n  }\n\n  const allStatuses = state.allStatuses\n  const timelineObject = state.timelines[timeline]\n\n  // Mismatch between API pagination and our internal minId/maxId tracking systems:\n  // pagination.maxId is the oldest of the returned statuses when fetching older,\n  // and pagination.minId is the newest when fetching newer. The names come directly\n  // from the arguments they're supposed to be passed as for the next fetch.\n  const minNew = pagination.maxId || (statuses.length > 0 ? minBy(statuses, 'id').id : 0)\n  const maxNew = pagination.minId || (statuses.length > 0 ? maxBy(statuses, 'id').id : 0)\n\n  const newer = timeline && (maxNew > timelineObject.maxId || timelineObject.maxId === 0) && statuses.length > 0\n  const older = timeline && (minNew < timelineObject.minId || timelineObject.minId === 0) && statuses.length > 0\n\n  if (!noIdUpdate && newer) {\n    timelineObject.maxId = maxNew\n  }\n  if (!noIdUpdate && older) {\n    timelineObject.minId = minNew\n  }\n\n  // This makes sure that user timeline won't get data meant for other\n  // user. I.e. opening different user profiles makes request which could\n  // return data late after user already viewing different user profile\n  if ((timeline === 'user' || timeline === 'media') && timelineObject.userId !== userId) {\n    return\n  }\n\n  const addStatus = (data, showImmediately, addToTimeline = true) => {\n    const result = addStatusToGlobalStorage(state, data)\n    const status = result.item\n\n    if (result.new) {\n      // We are mentioned in a post\n      if (status.type === 'status' && find(status.attentions, { id: user.id })) {\n        const mentions = state.timelines.mentions\n\n        // Add the mention to the mentions timeline\n        if (timelineObject !== mentions) {\n          mergeOrAdd(mentions.statuses, mentions.statusesObject, status)\n          mentions.newStatusCount += 1\n\n          sortTimeline(mentions)\n        }\n      }\n      if (status.visibility === 'direct') {\n        const dms = state.timelines.dms\n\n        mergeOrAdd(dms.statuses, dms.statusesObject, status)\n        dms.newStatusCount += 1\n\n        sortTimeline(dms)\n      }\n    }\n\n    // Decide if we should treat the status as new for this timeline.\n    let resultForCurrentTimeline\n    // Some statuses should only be added to the global status repository.\n    if (timeline && addToTimeline) {\n      resultForCurrentTimeline = mergeOrAdd(timelineObject.statuses, timelineObject.statusesObject, status)\n    }\n\n    if (timeline && showImmediately) {\n      // Add it directly to the visibleStatuses, don't change\n      // newStatusCount\n      mergeOrAdd(timelineObject.visibleStatuses, timelineObject.visibleStatusesObject, status)\n    } else if (timeline && addToTimeline && resultForCurrentTimeline.new) {\n      // Just change newStatuscount\n      timelineObject.newStatusCount += 1\n    }\n\n    return status\n  }\n\n  const favoriteStatus = (favorite, counter) => {\n    const status = find(allStatuses, { id: favorite.in_reply_to_status_id })\n    if (status) {\n      // This is our favorite, so the relevant bit.\n      if (favorite.user.id === user.id) {\n        status.favorited = true\n      } else {\n        status.fave_num += 1\n      }\n    }\n    return status\n  }\n\n  const processors = {\n    'status': (status) => {\n      addStatus(status, showImmediately)\n    },\n    'retweet': (status) => {\n      // RetweetedStatuses are never shown immediately\n      const retweetedStatus = addStatus(status.retweeted_status, false, false)\n\n      let retweet\n      // If the retweeted status is already there, don't add the retweet\n      // to the timeline.\n      if (timeline && find(timelineObject.statuses, (s) => {\n        if (s.retweeted_status) {\n          return s.id === retweetedStatus.id || s.retweeted_status.id === retweetedStatus.id\n        } else {\n          return s.id === retweetedStatus.id\n        }\n      })) {\n        // Already have it visible (either as the original or another RT), don't add to timeline, don't show.\n        retweet = addStatus(status, false, false)\n      } else {\n        retweet = addStatus(status, showImmediately)\n      }\n\n      retweet.retweeted_status = retweetedStatus\n    },\n    'favorite': (favorite) => {\n      // Only update if this is a new favorite.\n      // Ignore our own favorites because we get info about likes as response to like request\n      if (!state.favorites.has(favorite.id)) {\n        state.favorites.add(favorite.id)\n        favoriteStatus(favorite)\n      }\n    },\n    'deletion': (deletion) => {\n      const uri = deletion.uri\n      const status = find(allStatuses, { uri })\n      if (!status) {\n        return\n      }\n\n      removeStatusFromGlobalStorage(state, status)\n\n      if (timeline) {\n        remove(timelineObject.statuses, { uri })\n        remove(timelineObject.visibleStatuses, { uri })\n      }\n    },\n    'follow': (follow) => {\n      // NOOP, it is known status but we don't do anything about it for now\n    },\n    'default': (unknown) => {\n      console.log('unknown status type')\n      console.log(unknown)\n    }\n  }\n\n  each(statuses, (status) => {\n    const type = status.type\n    const processor = processors[type] || processors['default']\n    processor(status)\n  })\n\n  // Keep the visible statuses sorted\n  if (timeline && !(timeline === 'bookmarks')) {\n    sortTimeline(timelineObject)\n  }\n}\n\nconst updateNotificationsMinMaxId = (state, notification) => {\n  state.notifications.maxId = notification.id > state.notifications.maxId\n    ? notification.id\n    : state.notifications.maxId\n  state.notifications.minId = notification.id < state.notifications.minId\n    ? notification.id\n    : state.notifications.minId\n}\n\nconst addNewNotifications = (state, { dispatch, notifications, older, visibleNotificationTypes, rootGetters, newNotificationSideEffects }) => {\n  each(notifications, (notification) => {\n    // If invalid notification, update ids but don't add it to store\n    if (!isValidNotification(notification)) {\n      console.error('Invalid notification:', notification)\n      updateNotificationsMinMaxId(state, notification)\n      return\n    }\n\n    if (isStatusNotification(notification.type)) {\n      notification.action = addStatusToGlobalStorage(state, notification.action).item\n      notification.status = notification.status && addStatusToGlobalStorage(state, notification.status).item\n    }\n\n    if (notification.type === 'pleroma:emoji_reaction') {\n      dispatch('fetchEmojiReactionsBy', notification.status.id)\n    }\n\n    // Only add a new notification if we don't have one for the same action\n    if (!state.notifications.idStore.hasOwnProperty(notification.id)) {\n      updateNotificationsMinMaxId(state, notification)\n\n      state.notifications.data.push(notification)\n      state.notifications.idStore[notification.id] = notification\n\n      newNotificationSideEffects(notification)\n    } else if (notification.seen) {\n      state.notifications.idStore[notification.id].seen = true\n    }\n  })\n}\n\nconst removeStatus = (state, { timeline, userId }) => {\n  const timelineObject = state.timelines[timeline]\n  if (userId) {\n    remove(timelineObject.statuses, { user: { id: userId } })\n    remove(timelineObject.visibleStatuses, { user: { id: userId } })\n    timelineObject.minVisibleId = timelineObject.visibleStatuses.length > 0 ? last(timelineObject.visibleStatuses).id : 0\n    timelineObject.maxId = timelineObject.statuses.length > 0 ? first(timelineObject.statuses).id : 0\n  }\n}\n\nexport const mutations = {\n  addNewStatuses,\n  addNewNotifications,\n  removeStatus,\n  showNewStatuses (state, { timeline }) {\n    const oldTimeline = (state.timelines[timeline])\n\n    oldTimeline.newStatusCount = 0\n    oldTimeline.visibleStatuses = slice(oldTimeline.statuses, 0, 50)\n    oldTimeline.minVisibleId = last(oldTimeline.visibleStatuses).id\n    oldTimeline.minId = oldTimeline.minVisibleId\n    oldTimeline.visibleStatusesObject = {}\n    each(oldTimeline.visibleStatuses, (status) => { oldTimeline.visibleStatusesObject[status.id] = status })\n  },\n  resetStatuses (state) {\n    const emptyState = defaultState()\n    Object.entries(emptyState).forEach(([key, value]) => {\n      state[key] = value\n    })\n  },\n  clearTimeline (state, { timeline, excludeUserId = false }) {\n    const userId = excludeUserId ? state.timelines[timeline].userId : undefined\n    state.timelines[timeline] = emptyTl(userId)\n  },\n  clearNotifications (state) {\n    state.notifications = emptyNotifications()\n  },\n  setFavorited (state, { status, value }) {\n    const newStatus = state.allStatusesObject[status.id]\n\n    if (newStatus.favorited !== value) {\n      if (value) {\n        newStatus.fave_num++\n      } else {\n        newStatus.fave_num--\n      }\n    }\n\n    newStatus.favorited = value\n  },\n  setFavoritedConfirm (state, { status, user }) {\n    const newStatus = state.allStatusesObject[status.id]\n    newStatus.favorited = status.favorited\n    newStatus.fave_num = status.fave_num\n    const index = findIndex(newStatus.favoritedBy, { id: user.id })\n    if (index !== -1 && !newStatus.favorited) {\n      newStatus.favoritedBy.splice(index, 1)\n    } else if (index === -1 && newStatus.favorited) {\n      newStatus.favoritedBy.push(user)\n    }\n  },\n  setMutedStatus (state, status) {\n    const newStatus = state.allStatusesObject[status.id]\n    newStatus.thread_muted = status.thread_muted\n\n    if (newStatus.thread_muted !== undefined) {\n      state.conversationsObject[newStatus.statusnet_conversation_id].forEach(status => { status.thread_muted = newStatus.thread_muted })\n    }\n  },\n  setRetweeted (state, { status, value }) {\n    const newStatus = state.allStatusesObject[status.id]\n\n    if (newStatus.repeated !== value) {\n      if (value) {\n        newStatus.repeat_num++\n      } else {\n        newStatus.repeat_num--\n      }\n    }\n\n    newStatus.repeated = value\n  },\n  setRetweetedConfirm (state, { status, user }) {\n    const newStatus = state.allStatusesObject[status.id]\n    newStatus.repeated = status.repeated\n    newStatus.repeat_num = status.repeat_num\n    const index = findIndex(newStatus.rebloggedBy, { id: user.id })\n    if (index !== -1 && !newStatus.repeated) {\n      newStatus.rebloggedBy.splice(index, 1)\n    } else if (index === -1 && newStatus.repeated) {\n      newStatus.rebloggedBy.push(user)\n    }\n  },\n  setBookmarked (state, { status, value }) {\n    const newStatus = state.allStatusesObject[status.id]\n    newStatus.bookmarked = value\n  },\n  setBookmarkedConfirm (state, { status }) {\n    const newStatus = state.allStatusesObject[status.id]\n    newStatus.bookmarked = status.bookmarked\n  },\n  setDeleted (state, { status }) {\n    const newStatus = state.allStatusesObject[status.id]\n    if (newStatus) newStatus.deleted = true\n  },\n  setManyDeleted (state, condition) {\n    Object.values(state.allStatusesObject).forEach(status => {\n      if (condition(status)) {\n        status.deleted = true\n      }\n    })\n  },\n  setLoading (state, { timeline, value }) {\n    state.timelines[timeline].loading = value\n  },\n  setNsfw (state, { id, nsfw }) {\n    const newStatus = state.allStatusesObject[id]\n    newStatus.nsfw = nsfw\n  },\n  setNotificationsLoading (state, { value }) {\n    state.notifications.loading = value\n  },\n  setNotificationsSilence (state, { value }) {\n    state.notifications.desktopNotificationSilence = value\n  },\n  markNotificationsAsSeen (state) {\n    each(state.notifications.data, (notification) => {\n      notification.seen = true\n    })\n  },\n  markSingleNotificationAsSeen (state, { id }) {\n    const notification = find(state.notifications.data, n => n.id === id)\n    if (notification) notification.seen = true\n  },\n  dismissNotification (state, { id }) {\n    state.notifications.data = state.notifications.data.filter(n => n.id !== id)\n  },\n  dismissNotifications (state, { finder }) {\n    state.notifications.data = state.notifications.data.filter(n => finder)\n  },\n  updateNotification (state, { id, updater }) {\n    const notification = find(state.notifications.data, n => n.id === id)\n    notification && updater(notification)\n  },\n  queueFlush (state, { timeline, id }) {\n    state.timelines[timeline].flushMarker = id\n  },\n  queueFlushAll (state) {\n    Object.keys(state.timelines).forEach((timeline) => {\n      state.timelines[timeline].flushMarker = state.timelines[timeline].maxId\n    })\n  },\n  addRepeats (state, { id, rebloggedByUsers, currentUser }) {\n    const newStatus = state.allStatusesObject[id]\n    newStatus.rebloggedBy = rebloggedByUsers.filter(_ => _)\n    // repeats stats can be incorrect based on polling condition, let's update them using the most recent data\n    newStatus.repeat_num = newStatus.rebloggedBy.length\n    newStatus.repeated = !!newStatus.rebloggedBy.find(({ id }) => currentUser.id === id)\n  },\n  addFavs (state, { id, favoritedByUsers, currentUser }) {\n    const newStatus = state.allStatusesObject[id]\n    newStatus.favoritedBy = favoritedByUsers.filter(_ => _)\n    // favorites stats can be incorrect based on polling condition, let's update them using the most recent data\n    newStatus.fave_num = newStatus.favoritedBy.length\n    newStatus.favorited = !!newStatus.favoritedBy.find(({ id }) => currentUser.id === id)\n  },\n  addEmojiReactionsBy (state, { id, emojiReactions, currentUser }) {\n    const status = state.allStatusesObject[id]\n    status['emoji_reactions'] = emojiReactions\n  },\n  addOwnReaction (state, { id, emoji, currentUser }) {\n    const status = state.allStatusesObject[id]\n    const reactionIndex = findIndex(status.emoji_reactions, { name: emoji })\n    const reaction = status.emoji_reactions[reactionIndex] || { name: emoji, count: 0, accounts: [] }\n\n    const newReaction = {\n      ...reaction,\n      count: reaction.count + 1,\n      me: true,\n      accounts: [\n        ...reaction.accounts,\n        currentUser\n      ]\n    }\n\n    // Update count of existing reaction if it exists, otherwise append at the end\n    if (reactionIndex >= 0) {\n      status.emoji_reactions[reactionIndex] = newReaction\n    } else {\n      status['emoji_reactions'] = [...status.emoji_reactions, newReaction]\n    }\n  },\n  removeOwnReaction (state, { id, emoji, currentUser }) {\n    const status = state.allStatusesObject[id]\n    const reactionIndex = findIndex(status.emoji_reactions, { name: emoji })\n    if (reactionIndex < 0) return\n\n    const reaction = status.emoji_reactions[reactionIndex]\n    const accounts = reaction.accounts || []\n\n    const newReaction = {\n      ...reaction,\n      count: reaction.count - 1,\n      me: false,\n      accounts: accounts.filter(acc => acc.id !== currentUser.id)\n    }\n\n    if (newReaction.count > 0) {\n      status.emoji_reactions[reactionIndex] = newReaction\n    } else {\n      status['emoji_reactions'] = status.emoji_reactions.filter(r => r.name !== emoji)\n    }\n  },\n  updateStatusWithPoll (state, { id, poll }) {\n    const status = state.allStatusesObject[id]\n    status.poll = poll\n  },\n  setVirtualHeight (state, { statusId, height }) {\n    state.allStatusesObject[statusId].virtualHeight = height\n  }\n}\n\nconst statuses = {\n  state: defaultState(),\n  actions: {\n    addNewStatuses ({ rootState, commit }, { statuses, showImmediately = false, timeline = false, noIdUpdate = false, userId, pagination }) {\n      commit('addNewStatuses', { statuses, showImmediately, timeline, noIdUpdate, user: rootState.users.currentUser, userId, pagination })\n    },\n    addNewNotifications (store, { notifications, older }) {\n      const { commit, dispatch, rootGetters } = store\n\n      const newNotificationSideEffects = (notification) => {\n        maybeShowNotification(store, notification)\n      }\n      commit('addNewNotifications', { dispatch, notifications, older, rootGetters, newNotificationSideEffects })\n    },\n    setNotificationsLoading ({ rootState, commit }, { value }) {\n      commit('setNotificationsLoading', { value })\n    },\n    setNotificationsSilence ({ rootState, commit }, { value }) {\n      commit('setNotificationsSilence', { value })\n    },\n    fetchStatus ({ rootState, dispatch }, id) {\n      return rootState.api.backendInteractor.fetchStatus({ id })\n        .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n    },\n    deleteStatus ({ rootState, commit }, status) {\n      commit('setDeleted', { status })\n      apiService.deleteStatus({ id: status.id, credentials: rootState.users.currentUser.credentials })\n    },\n    deleteStatusById ({ rootState, commit }, id) {\n      const status = rootState.statuses.allStatusesObject[id]\n      commit('setDeleted', { status })\n    },\n    markStatusesAsDeleted ({ commit }, condition) {\n      commit('setManyDeleted', condition)\n    },\n    favorite ({ rootState, commit }, status) {\n      // Optimistic favoriting...\n      commit('setFavorited', { status, value: true })\n      rootState.api.backendInteractor.favorite({ id: status.id })\n        .then(status => commit('setFavoritedConfirm', { status, user: rootState.users.currentUser }))\n    },\n    unfavorite ({ rootState, commit }, status) {\n      // Optimistic unfavoriting...\n      commit('setFavorited', { status, value: false })\n      rootState.api.backendInteractor.unfavorite({ id: status.id })\n        .then(status => commit('setFavoritedConfirm', { status, user: rootState.users.currentUser }))\n    },\n    fetchPinnedStatuses ({ rootState, dispatch }, userId) {\n      rootState.api.backendInteractor.fetchPinnedStatuses({ id: userId })\n        .then(statuses => dispatch('addNewStatuses', { statuses, timeline: 'user', userId, showImmediately: true, noIdUpdate: true }))\n    },\n    pinStatus ({ rootState, dispatch }, statusId) {\n      return rootState.api.backendInteractor.pinOwnStatus({ id: statusId })\n        .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n    },\n    unpinStatus ({ rootState, dispatch }, statusId) {\n      rootState.api.backendInteractor.unpinOwnStatus({ id: statusId })\n        .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n    },\n    muteConversation ({ rootState, commit }, statusId) {\n      return rootState.api.backendInteractor.muteConversation({ id: statusId })\n        .then((status) => commit('setMutedStatus', status))\n    },\n    unmuteConversation ({ rootState, commit }, statusId) {\n      return rootState.api.backendInteractor.unmuteConversation({ id: statusId })\n        .then((status) => commit('setMutedStatus', status))\n    },\n    retweet ({ rootState, commit }, status) {\n      // Optimistic retweeting...\n      commit('setRetweeted', { status, value: true })\n      rootState.api.backendInteractor.retweet({ id: status.id })\n        .then(status => commit('setRetweetedConfirm', { status: status.retweeted_status, user: rootState.users.currentUser }))\n    },\n    unretweet ({ rootState, commit }, status) {\n      // Optimistic unretweeting...\n      commit('setRetweeted', { status, value: false })\n      rootState.api.backendInteractor.unretweet({ id: status.id })\n        .then(status => commit('setRetweetedConfirm', { status, user: rootState.users.currentUser }))\n    },\n    bookmark ({ rootState, commit }, status) {\n      commit('setBookmarked', { status, value: true })\n      rootState.api.backendInteractor.bookmarkStatus({ id: status.id })\n        .then(status => {\n          commit('setBookmarkedConfirm', { status })\n        })\n    },\n    unbookmark ({ rootState, commit }, status) {\n      commit('setBookmarked', { status, value: false })\n      rootState.api.backendInteractor.unbookmarkStatus({ id: status.id })\n        .then(status => {\n          commit('setBookmarkedConfirm', { status })\n        })\n    },\n    queueFlush ({ rootState, commit }, { timeline, id }) {\n      commit('queueFlush', { timeline, id })\n    },\n    queueFlushAll ({ rootState, commit }) {\n      commit('queueFlushAll')\n    },\n    markNotificationsAsSeen ({ rootState, commit }) {\n      commit('markNotificationsAsSeen')\n      apiService.markNotificationsAsSeen({\n        id: rootState.statuses.notifications.maxId,\n        credentials: rootState.users.currentUser.credentials\n      })\n    },\n    markSingleNotificationAsSeen ({ rootState, commit }, { id }) {\n      commit('markSingleNotificationAsSeen', { id })\n      apiService.markNotificationsAsSeen({\n        single: true,\n        id,\n        credentials: rootState.users.currentUser.credentials\n      })\n    },\n    dismissNotificationLocal ({ rootState, commit }, { id }) {\n      commit('dismissNotification', { id })\n    },\n    dismissNotification ({ rootState, commit }, { id }) {\n      commit('dismissNotification', { id })\n      rootState.api.backendInteractor.dismissNotification({ id })\n    },\n    updateNotification ({ rootState, commit }, { id, updater }) {\n      commit('updateNotification', { id, updater })\n    },\n    fetchFavsAndRepeats ({ rootState, commit }, id) {\n      Promise.all([\n        rootState.api.backendInteractor.fetchFavoritedByUsers({ id }),\n        rootState.api.backendInteractor.fetchRebloggedByUsers({ id })\n      ]).then(([favoritedByUsers, rebloggedByUsers]) => {\n        commit('addFavs', { id, favoritedByUsers, currentUser: rootState.users.currentUser })\n        commit('addRepeats', { id, rebloggedByUsers, currentUser: rootState.users.currentUser })\n      })\n    },\n    reactWithEmoji ({ rootState, dispatch, commit }, { id, emoji }) {\n      const currentUser = rootState.users.currentUser\n      if (!currentUser) return\n\n      commit('addOwnReaction', { id, emoji, currentUser })\n      rootState.api.backendInteractor.reactWithEmoji({ id, emoji }).then(\n        ok => {\n          dispatch('fetchEmojiReactionsBy', id)\n        }\n      )\n    },\n    unreactWithEmoji ({ rootState, dispatch, commit }, { id, emoji }) {\n      const currentUser = rootState.users.currentUser\n      if (!currentUser) return\n\n      commit('removeOwnReaction', { id, emoji, currentUser })\n      rootState.api.backendInteractor.unreactWithEmoji({ id, emoji }).then(\n        ok => {\n          dispatch('fetchEmojiReactionsBy', id)\n        }\n      )\n    },\n    fetchEmojiReactionsBy ({ rootState, commit }, id) {\n      rootState.api.backendInteractor.fetchEmojiReactions({ id }).then(\n        emojiReactions => {\n          commit('addEmojiReactionsBy', { id, emojiReactions, currentUser: rootState.users.currentUser })\n        }\n      )\n    },\n    fetchFavs ({ rootState, commit }, id) {\n      rootState.api.backendInteractor.fetchFavoritedByUsers({ id })\n        .then(favoritedByUsers => commit('addFavs', { id, favoritedByUsers, currentUser: rootState.users.currentUser }))\n    },\n    fetchRepeats ({ rootState, commit }, id) {\n      rootState.api.backendInteractor.fetchRebloggedByUsers({ id })\n        .then(rebloggedByUsers => commit('addRepeats', { id, rebloggedByUsers, currentUser: rootState.users.currentUser }))\n    },\n    search (store, { q, resolve, limit, offset, following }) {\n      return store.rootState.api.backendInteractor.search2({ q, resolve, limit, offset, following })\n        .then((data) => {\n          store.commit('addNewUsers', data.accounts)\n          store.commit('addNewStatuses', { statuses: data.statuses })\n          return data\n        })\n    },\n    setVirtualHeight ({ commit }, { statusId, height }) {\n      commit('setVirtualHeight', { statusId, height })\n    }\n  },\n  mutations\n}\n\nexport default statuses\n","import { camelCase } from 'lodash'\n\nimport apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst update = ({ store, statuses, timeline, showImmediately, userId, pagination }) => {\n  const ccTimeline = camelCase(timeline)\n\n  store.dispatch('addNewStatuses', {\n    timeline: ccTimeline,\n    userId,\n    statuses,\n    showImmediately,\n    pagination\n  })\n}\n\nconst fetchAndUpdate = ({\n  store,\n  credentials,\n  timeline = 'friends',\n  older = false,\n  showImmediately = false,\n  userId = false,\n  tag = false,\n  until,\n  since\n}) => {\n  const args = { timeline, credentials }\n  const rootState = store.rootState || store.state\n  const { getters } = store\n  const timelineData = rootState.statuses.timelines[camelCase(timeline)]\n  const { hideMutedPosts, replyVisibility } = getters.mergedConfig\n  const loggedIn = !!rootState.users.currentUser\n\n  if (older) {\n    args['until'] = until || timelineData.minId\n  } else {\n    if (since === undefined) {\n      args['since'] = timelineData.maxId\n    } else if (since !== null) {\n      args['since'] = since\n    }\n  }\n\n  args['userId'] = userId\n  args['tag'] = tag\n  args['withMuted'] = !hideMutedPosts\n  if (loggedIn && ['friends', 'public', 'publicAndExternal'].includes(timeline)) {\n    args['replyVisibility'] = replyVisibility\n  }\n\n  const numStatusesBeforeFetch = timelineData.statuses.length\n\n  return apiService.fetchTimeline(args)\n    .then(response => {\n      if (response.errors) {\n        throw new Error(`${response.status} ${response.statusText}`)\n      }\n\n      const { data: statuses, pagination } = response\n      if (!older && statuses.length >= 20 && !timelineData.loading && numStatusesBeforeFetch > 0) {\n        store.dispatch('queueFlush', { timeline: timeline, id: timelineData.maxId })\n      }\n      update({ store, statuses, timeline, showImmediately, userId, pagination })\n      return { statuses, pagination }\n    })\n    .catch((error) => {\n      store.dispatch('pushGlobalNotice', {\n        level: 'error',\n        messageKey: 'timeline.error',\n        messageArgs: [error.message],\n        timeout: 5000\n      })\n    })\n}\n\nconst startFetching = ({ timeline = 'friends', credentials, store, userId = false, tag = false }) => {\n  const rootState = store.rootState || store.state\n  const timelineData = rootState.statuses.timelines[camelCase(timeline)]\n  const showImmediately = timelineData.visibleStatuses.length === 0\n  timelineData.userId = userId\n  fetchAndUpdate({ timeline, credentials, store, showImmediately, userId, tag })\n  const boundFetchAndUpdate = () =>\n    fetchAndUpdate({ timeline, credentials, store, userId, tag })\n  return promiseInterval(boundFetchAndUpdate, 20000)\n}\nconst timelineFetcher = {\n  fetchAndUpdate,\n  startFetching\n}\n\nexport default timelineFetcher\n","import apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst fetchAndUpdate = ({ store, credentials }) => {\n  return apiService.fetchFollowRequests({ credentials })\n    .then((requests) => {\n      store.commit('setFollowRequests', requests)\n      store.commit('addNewUsers', requests)\n    }, () => {})\n    .catch(() => {})\n}\n\nconst startFetching = ({ credentials, store }) => {\n  const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store })\n  boundFetchAndUpdate()\n  return promiseInterval(boundFetchAndUpdate, 240000)\n}\n\nconst followRequestFetcher = {\n  startFetching\n}\n\nexport default followRequestFetcher\n","import apiService, { getMastodonSocketURI, ProcessedWS } from '../api/api.service.js'\nimport timelineFetcher from '../timeline_fetcher/timeline_fetcher.service.js'\nimport notificationsFetcher from '../notifications_fetcher/notifications_fetcher.service.js'\nimport followRequestFetcher from '../../services/follow_request_fetcher/follow_request_fetcher.service'\n\nconst backendInteractorService = credentials => ({\n  startFetchingTimeline ({ timeline, store, userId = false, tag }) {\n    return timelineFetcher.startFetching({ timeline, store, credentials, userId, tag })\n  },\n\n  fetchTimeline (args) {\n    return timelineFetcher.fetchAndUpdate({ ...args, credentials })\n  },\n\n  startFetchingNotifications ({ store }) {\n    return notificationsFetcher.startFetching({ store, credentials })\n  },\n\n  fetchNotifications (args) {\n    return notificationsFetcher.fetchAndUpdate({ ...args, credentials })\n  },\n\n  startFetchingFollowRequests ({ store }) {\n    return followRequestFetcher.startFetching({ store, credentials })\n  },\n\n  startUserSocket ({ store }) {\n    const serv = store.rootState.instance.server.replace('http', 'ws')\n    const url = serv + getMastodonSocketURI({ credentials, stream: 'user' })\n    return ProcessedWS({ url, id: 'User' })\n  },\n\n  ...Object.entries(apiService).reduce((acc, [key, func]) => {\n    return {\n      ...acc,\n      [key]: (args) => func({ credentials, ...args })\n    }\n  }, {}),\n\n  verifyCredentials: apiService.verifyCredentials\n})\n\nexport default backendInteractorService\n","\nexport const windowWidth = () =>\n  window.innerWidth ||\n  document.documentElement.clientWidth ||\n  document.body.clientWidth\n\nexport const windowHeight = () =>\n  window.innerHeight ||\n  document.documentElement.clientHeight ||\n  document.body.clientHeight\n","import { reduce } from 'lodash'\n\nconst REDIRECT_URI = `${window.location.origin}/oauth-callback`\n\nexport const getOrCreateApp = ({ clientId, clientSecret, instance, commit }) => {\n  if (clientId && clientSecret) {\n    return Promise.resolve({ clientId, clientSecret })\n  }\n\n  const url = `${instance}/api/v1/apps`\n  const form = new window.FormData()\n\n  form.append('client_name', `PleromaFE_${window.___pleromafe_commit_hash}_${(new Date()).toISOString()}`)\n  form.append('redirect_uris', REDIRECT_URI)\n  form.append('scopes', 'read write follow push admin')\n\n  return window.fetch(url, {\n    method: 'POST',\n    body: form\n  })\n    .then((data) => data.json())\n    .then((app) => ({ clientId: app.client_id, clientSecret: app.client_secret }))\n    .then((app) => commit('setClientData', app) || app)\n}\n\nconst login = ({ instance, clientId }) => {\n  const data = {\n    response_type: 'code',\n    client_id: clientId,\n    redirect_uri: REDIRECT_URI,\n    scope: 'read write follow push admin'\n  }\n\n  const dataString = reduce(data, (acc, v, k) => {\n    const encoded = `${k}=${encodeURIComponent(v)}`\n    if (!acc) {\n      return encoded\n    } else {\n      return `${acc}&${encoded}`\n    }\n  }, false)\n\n  // Do the redirect...\n  const url = `${instance}/oauth/authorize?${dataString}`\n\n  window.location.href = url\n}\n\nconst getTokenWithCredentials = ({ clientId, clientSecret, instance, username, password }) => {\n  const url = `${instance}/oauth/token`\n  const form = new window.FormData()\n\n  form.append('client_id', clientId)\n  form.append('client_secret', clientSecret)\n  form.append('grant_type', 'password')\n  form.append('username', username)\n  form.append('password', password)\n\n  return window.fetch(url, {\n    method: 'POST',\n    body: form\n  }).then((data) => data.json())\n}\n\nconst getToken = ({ clientId, clientSecret, instance, code }) => {\n  const url = `${instance}/oauth/token`\n  const form = new window.FormData()\n\n  form.append('client_id', clientId)\n  form.append('client_secret', clientSecret)\n  form.append('grant_type', 'authorization_code')\n  form.append('code', code)\n  form.append('redirect_uri', `${window.location.origin}/oauth-callback`)\n\n  return window.fetch(url, {\n    method: 'POST',\n    body: form\n  })\n    .then((data) => data.json())\n}\n\nexport const getClientToken = ({ clientId, clientSecret, instance }) => {\n  const url = `${instance}/oauth/token`\n  const form = new window.FormData()\n\n  form.append('client_id', clientId)\n  form.append('client_secret', clientSecret)\n  form.append('grant_type', 'client_credentials')\n  form.append('redirect_uri', `${window.location.origin}/oauth-callback`)\n\n  return window.fetch(url, {\n    method: 'POST',\n    body: form\n  }).then((data) => data.json())\n}\nconst verifyOTPCode = ({ app, instance, mfaToken, code }) => {\n  const url = `${instance}/oauth/mfa/challenge`\n  const form = new window.FormData()\n\n  form.append('client_id', app.client_id)\n  form.append('client_secret', app.client_secret)\n  form.append('mfa_token', mfaToken)\n  form.append('code', code)\n  form.append('challenge_type', 'totp')\n\n  return window.fetch(url, {\n    method: 'POST',\n    body: form\n  }).then((data) => data.json())\n}\n\nconst verifyRecoveryCode = ({ app, instance, mfaToken, code }) => {\n  const url = `${instance}/oauth/mfa/challenge`\n  const form = new window.FormData()\n\n  form.append('client_id', app.client_id)\n  form.append('client_secret', app.client_secret)\n  form.append('mfa_token', mfaToken)\n  form.append('code', code)\n  form.append('challenge_type', 'recovery')\n\n  return window.fetch(url, {\n    method: 'POST',\n    body: form\n  }).then((data) => data.json())\n}\n\nconst revokeToken = ({ app, instance, token }) => {\n  const url = `${instance}/oauth/revoke`\n  const form = new window.FormData()\n\n  form.append('client_id', app.clientId)\n  form.append('client_secret', app.clientSecret)\n  form.append('token', token)\n\n  return window.fetch(url, {\n    method: 'POST',\n    body: form\n  }).then((data) => data.json())\n}\n\nconst oauth = {\n  login,\n  getToken,\n  getTokenWithCredentials,\n  getOrCreateApp,\n  verifyOTPCode,\n  verifyRecoveryCode,\n  revokeToken\n}\n\nexport default oauth\n","import runtime from 'serviceworker-webpack-plugin/lib/runtime'\n\nfunction urlBase64ToUint8Array (base64String) {\n  const padding = '='.repeat((4 - base64String.length % 4) % 4)\n  const base64 = (base64String + padding)\n    .replace(/-/g, '+')\n    .replace(/_/g, '/')\n\n  const rawData = window.atob(base64)\n  return Uint8Array.from([...rawData].map((char) => char.charCodeAt(0)))\n}\n\nfunction isPushSupported () {\n  return 'serviceWorker' in navigator && 'PushManager' in window\n}\n\nfunction getOrCreateServiceWorker () {\n  return runtime.register()\n    .catch((err) => console.error('Unable to get or create a service worker.', err))\n}\n\nfunction subscribePush (registration, isEnabled, vapidPublicKey) {\n  if (!isEnabled) return Promise.reject(new Error('Web Push is disabled in config'))\n  if (!vapidPublicKey) return Promise.reject(new Error('VAPID public key is not found'))\n\n  const subscribeOptions = {\n    userVisibleOnly: true,\n    applicationServerKey: urlBase64ToUint8Array(vapidPublicKey)\n  }\n  return registration.pushManager.subscribe(subscribeOptions)\n}\n\nfunction unsubscribePush (registration) {\n  return registration.pushManager.getSubscription()\n    .then((subscribtion) => {\n      if (subscribtion === null) { return }\n      return subscribtion.unsubscribe()\n    })\n}\n\nfunction deleteSubscriptionFromBackEnd (token) {\n  return window.fetch('/api/v1/push/subscription/', {\n    method: 'DELETE',\n    headers: {\n      'Content-Type': 'application/json',\n      'Authorization': `Bearer ${token}`\n    }\n  }).then((response) => {\n    if (!response.ok) throw new Error('Bad status code from server.')\n    return response\n  })\n}\n\nfunction sendSubscriptionToBackEnd (subscription, token, notificationVisibility) {\n  return window.fetch('/api/v1/push/subscription/', {\n    method: 'POST',\n    headers: {\n      'Content-Type': 'application/json',\n      'Authorization': `Bearer ${token}`\n    },\n    body: JSON.stringify({\n      subscription,\n      data: {\n        alerts: {\n          follow: notificationVisibility.follows,\n          favourite: notificationVisibility.likes,\n          mention: notificationVisibility.mentions,\n          reblog: notificationVisibility.repeats,\n          move: notificationVisibility.moves\n        }\n      }\n    })\n  }).then((response) => {\n    if (!response.ok) throw new Error('Bad status code from server.')\n    return response.json()\n  }).then((responseData) => {\n    if (!responseData.id) throw new Error('Bad response from server.')\n    return responseData\n  })\n}\n\nexport function registerPushNotifications (isEnabled, vapidPublicKey, token, notificationVisibility) {\n  if (isPushSupported()) {\n    getOrCreateServiceWorker()\n      .then((registration) => subscribePush(registration, isEnabled, vapidPublicKey))\n      .then((subscription) => sendSubscriptionToBackEnd(subscription, token, notificationVisibility))\n      .catch((e) => console.warn(`Failed to setup Web Push Notifications: ${e.message}`))\n  }\n}\n\nexport function unregisterPushNotifications (token) {\n  if (isPushSupported()) {\n    Promise.all([\n      deleteSubscriptionFromBackEnd(token),\n      getOrCreateServiceWorker()\n        .then((registration) => {\n          return unsubscribePush(registration).then((result) => [registration, result])\n        })\n        .then(([registration, unsubResult]) => {\n          if (!unsubResult) {\n            console.warn('Push subscription cancellation wasn\\'t successful, killing SW anyway...')\n          }\n          return registration.unregister().then((result) => {\n            if (!result) {\n              console.warn('Failed to kill SW')\n            }\n          })\n        })\n    ]).catch((e) => console.warn(`Failed to disable Web Push Notifications: ${e.message}`))\n  }\n}\n","import backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { windowWidth, windowHeight } from '../services/window_utils/window_utils'\nimport oauthApi from '../services/new_api/oauth.js'\nimport { compact, map, each, mergeWith, last, concat, uniq, isArray } from 'lodash'\nimport { registerPushNotifications, unregisterPushNotifications } from '../services/push/push.js'\n\n// TODO: Unify with mergeOrAdd in statuses.js\nexport const mergeOrAdd = (arr, obj, item) => {\n  if (!item) { return false }\n  const oldItem = obj[item.id]\n  if (oldItem) {\n    // We already have this, so only merge the new info.\n    mergeWith(oldItem, item, mergeArrayLength)\n    return { item: oldItem, new: false }\n  } else {\n    // This is a new item, prepare it\n    arr.push(item)\n    obj[item.id] = item\n    if (item.screen_name && !item.screen_name.includes('@')) {\n      obj[item.screen_name.toLowerCase()] = item\n    }\n    return { item, new: true }\n  }\n}\n\nconst mergeArrayLength = (oldValue, newValue) => {\n  if (isArray(oldValue) && isArray(newValue)) {\n    oldValue.length = newValue.length\n    return mergeWith(oldValue, newValue, mergeArrayLength)\n  }\n}\n\nconst getNotificationPermission = () => {\n  const Notification = window.Notification\n\n  if (!Notification) return Promise.resolve(null)\n  if (Notification.permission === 'default') return Notification.requestPermission()\n  return Promise.resolve(Notification.permission)\n}\n\nconst blockUser = (store, id) => {\n  return store.rootState.api.backendInteractor.blockUser({ id })\n    .then((relationship) => {\n      store.commit('updateUserRelationship', [relationship])\n      store.commit('addBlockId', id)\n      store.commit('removeStatus', { timeline: 'friends', userId: id })\n      store.commit('removeStatus', { timeline: 'public', userId: id })\n      store.commit('removeStatus', { timeline: 'publicAndExternal', userId: id })\n    })\n}\n\nconst unblockUser = (store, id) => {\n  return store.rootState.api.backendInteractor.unblockUser({ id })\n    .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst muteUser = (store, id) => {\n  const predictedRelationship = store.state.relationships[id] || { id }\n  predictedRelationship.muting = true\n  store.commit('updateUserRelationship', [predictedRelationship])\n  store.commit('addMuteId', id)\n\n  return store.rootState.api.backendInteractor.muteUser({ id })\n    .then((relationship) => {\n      store.commit('updateUserRelationship', [relationship])\n      store.commit('addMuteId', id)\n    })\n}\n\nconst unmuteUser = (store, id) => {\n  const predictedRelationship = store.state.relationships[id] || { id }\n  predictedRelationship.muting = false\n  store.commit('updateUserRelationship', [predictedRelationship])\n\n  return store.rootState.api.backendInteractor.unmuteUser({ id })\n    .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst hideReblogs = (store, userId) => {\n  return store.rootState.api.backendInteractor.followUser({ id: userId, reblogs: false })\n    .then((relationship) => {\n      store.commit('updateUserRelationship', [relationship])\n    })\n}\n\nconst showReblogs = (store, userId) => {\n  return store.rootState.api.backendInteractor.followUser({ id: userId, reblogs: true })\n    .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst fetchMascot = (store) => {\n  return store.rootState.api.backendInteractor.fetchMascot()\n    .then(({ url }) => store.commit('updateMascot', url))\n}\nconst muteDomain = (store, domain) => {\n  return store.rootState.api.backendInteractor.muteDomain({ domain })\n    .then(() => store.commit('addDomainMute', domain))\n}\n\nconst unmuteDomain = (store, domain) => {\n  return store.rootState.api.backendInteractor.unmuteDomain({ domain })\n    .then(() => store.commit('removeDomainMute', domain))\n}\n\nexport const mutations = {\n  tagUser (state, { user: { id }, tag }) {\n    const user = state.usersObject[id]\n    const tags = user.tags || []\n    const newTags = tags.concat([tag])\n    user['tags'] = newTags\n  },\n  untagUser (state, { user: { id }, tag }) {\n    const user = state.usersObject[id]\n    const tags = user.tags || []\n    const newTags = tags.filter(t => t !== tag)\n    user['tags'] = newTags\n  },\n  updateRight (state, { user: { id }, right, value }) {\n    const user = state.usersObject[id]\n    let newRights = user.rights\n    newRights[right] = value\n    user['rights'] = newRights\n  },\n  updateActivationStatus (state, { user: { id }, deactivated }) {\n    const user = state.usersObject[id]\n    user['deactivated'] = deactivated\n  },\n  setCurrentUser (state, user) {\n    state.lastLoginName = user.screen_name\n    state.currentUser = mergeWith(state.currentUser || {}, user, mergeArrayLength)\n  },\n  clearCurrentUser (state) {\n    state.currentUser = false\n    state.lastLoginName = false\n  },\n  beginLogin (state) {\n    state.loggingIn = true\n  },\n  endLogin (state) {\n    state.loggingIn = false\n  },\n  saveFriendIds (state, { id, friendIds }) {\n    const user = state.usersObject[id]\n    user.friendIds = uniq(concat(user.friendIds || [], friendIds))\n  },\n  saveFollowerIds (state, { id, followerIds }) {\n    const user = state.usersObject[id]\n    user.followerIds = uniq(concat(user.followerIds || [], followerIds))\n  },\n  // Because frontend doesn't have a reason to keep these stuff in memory\n  // outside of viewing someones user profile.\n  clearFriends (state, userId) {\n    const user = state.usersObject[userId]\n    if (user) {\n      user['friendIds'] = []\n    }\n  },\n  clearFollowers (state, userId) {\n    const user = state.usersObject[userId]\n    if (user) {\n      user['followerIds'] = []\n    }\n  },\n  addNewUsers (state, users) {\n    each(users, (user) => {\n      if (user.relationship) {\n        state.relationships[user.relationship.id] = user.relationship\n      }\n      mergeOrAdd(state.users, state.usersObject, user)\n    })\n  },\n  updateUserRelationship (state, relationships) {\n    relationships.forEach((relationship) => {\n      state.relationships[relationship.id] = relationship\n    })\n  },\n  saveBlockIds (state, blockIds) {\n    state.currentUser.blockIds = blockIds\n  },\n  addBlockId (state, blockId) {\n    if (state.currentUser.blockIds.indexOf(blockId) === -1) {\n      state.currentUser.blockIds.push(blockId)\n    }\n  },\n  saveMuteIds (state, muteIds) {\n    state.currentUser.muteIds = muteIds\n  },\n  addMuteId (state, muteId) {\n    if (state.currentUser.muteIds.indexOf(muteId) === -1) {\n      state.currentUser.muteIds.push(muteId)\n    }\n  },\n  updateMascot (state, mascotUrl) {\n    state.currentUser.mascot = mascotUrl\n  },\n  saveDomainMutes (state, domainMutes) {\n    state.currentUser.domainMutes = domainMutes\n  },\n  addDomainMute (state, domain) {\n    if (state.currentUser.domainMutes.indexOf(domain) === -1) {\n      state.currentUser.domainMutes.push(domain)\n    }\n  },\n  removeDomainMute (state, domain) {\n    const index = state.currentUser.domainMutes.indexOf(domain)\n    if (index !== -1) {\n      state.currentUser.domainMutes.splice(index, 1)\n    }\n  },\n  setPinnedToUser (state, status) {\n    const user = state.usersObject[status.user.id]\n    user.pinnedStatusIds = user.pinnedStatusIds || []\n    const index = user.pinnedStatusIds.indexOf(status.id)\n\n    if (status.pinned && index === -1) {\n      user.pinnedStatusIds.push(status.id)\n    } else if (!status.pinned && index !== -1) {\n      user.pinnedStatusIds.splice(index, 1)\n    }\n  },\n  setUserForStatus (state, status) {\n    status.user = state.usersObject[status.user.id]\n  },\n  setUserForNotification (state, notification) {\n    if (notification.type !== 'follow') {\n      notification.action.user = state.usersObject[notification.action.user.id]\n    }\n    notification.from_profile = state.usersObject[notification.from_profile.id]\n  },\n  setColor (state, { user: { id }, highlighted }) {\n    const user = state.usersObject[id]\n    user['highlight'] = highlighted\n  },\n  signUpPending (state) {\n    state.signUpPending = true\n    state.signUpErrors = []\n  },\n  signUpSuccess (state) {\n    state.signUpPending = false\n  },\n  signUpFailure (state, errors) {\n    state.signUpPending = false\n    state.signUpErrors = errors\n  }\n}\n\nexport const getters = {\n  findUser: state => query => {\n    const result = state.usersObject[query]\n    // In case it's a screen_name, we can try searching case-insensitive\n    if (!result && typeof query === 'string') {\n      return state.usersObject[query.toLowerCase()]\n    }\n    return result\n  },\n  findUserByUrl: state => query => {\n    return state.users\n      .find(u => u.statusnet_profile_url &&\n            u.statusnet_profile_url.toLowerCase() === query.toLowerCase())\n  },\n  relationship: state => id => {\n    const rel = id && state.relationships[id]\n    return rel || { id, loading: true }\n  }\n}\n\nexport const defaultState = {\n  loggingIn: false,\n  lastLoginName: false,\n  currentUser: false,\n  users: [],\n  usersObject: {},\n  signUpPending: false,\n  signUpErrors: [],\n  relationships: {}\n}\n\nconst users = {\n  state: defaultState,\n  mutations,\n  getters,\n  actions: {\n    fetchUserIfMissing (store, id) {\n      if (!store.getters.findUser(id)) {\n        store.dispatch('fetchUser', id)\n      }\n    },\n    fetchUser (store, id) {\n      return store.rootState.api.backendInteractor.fetchUser({ id })\n        .then((user) => {\n          store.commit('addNewUsers', [user])\n          return user\n        })\n    },\n    fetchUserRelationship (store, id) {\n      if (store.state.currentUser) {\n        store.rootState.api.backendInteractor.fetchUserRelationship({ id })\n          .then((relationships) => store.commit('updateUserRelationship', relationships))\n      }\n    },\n    fetchBlocks (store) {\n      return store.rootState.api.backendInteractor.fetchBlocks()\n        .then((blocks) => {\n          store.commit('saveBlockIds', map(blocks, 'id'))\n          store.commit('addNewUsers', blocks)\n          return blocks\n        })\n    },\n    blockUser (store, id) {\n      return blockUser(store, id)\n    },\n    unblockUser (store, id) {\n      return unblockUser(store, id)\n    },\n    blockUsers (store, ids = []) {\n      return Promise.all(ids.map(id => blockUser(store, id)))\n    },\n    unblockUsers (store, ids = []) {\n      return Promise.all(ids.map(id => unblockUser(store, id)))\n    },\n    fetchMutes (store) {\n      return store.rootState.api.backendInteractor.fetchMutes()\n        .then((mutes) => {\n          store.commit('saveMuteIds', map(mutes, 'id'))\n          store.commit('addNewUsers', mutes)\n          return mutes\n        })\n    },\n    muteUser (store, id) {\n      return muteUser(store, id)\n    },\n    unmuteUser (store, id) {\n      return unmuteUser(store, id)\n    },\n    hideReblogs (store, id) {\n      return hideReblogs(store, id)\n    },\n    showReblogs (store, id) {\n      return showReblogs(store, id)\n    },\n    muteUsers (store, ids = []) {\n      return Promise.all(ids.map(id => muteUser(store, id)))\n    },\n    unmuteUsers (store, ids = []) {\n      return Promise.all(ids.map(id => unmuteUser(store, id)))\n    },\n    fetchMascot (store) {\n      return fetchMascot(store)\n    },\n    fetchDomainMutes (store) {\n      return store.rootState.api.backendInteractor.fetchDomainMutes()\n        .then((domainMutes) => {\n          store.commit('saveDomainMutes', domainMutes)\n          return domainMutes\n        })\n    },\n    muteDomain (store, domain) {\n      return muteDomain(store, domain)\n    },\n    unmuteDomain (store, domain) {\n      return unmuteDomain(store, domain)\n    },\n    muteDomains (store, domains = []) {\n      return Promise.all(domains.map(domain => muteDomain(store, domain)))\n    },\n    unmuteDomains (store, domain = []) {\n      return Promise.all(domain.map(domain => unmuteDomain(store, domain)))\n    },\n    fetchFriends ({ rootState, commit }, id) {\n      const user = rootState.users.usersObject[id]\n      const maxId = last(user.friendIds)\n      return rootState.api.backendInteractor.fetchFriends({ id, maxId })\n        .then((friends) => {\n          commit('addNewUsers', friends)\n          commit('saveFriendIds', { id, friendIds: map(friends, 'id') })\n          return friends\n        })\n    },\n    fetchFollowers ({ rootState, commit }, id) {\n      const user = rootState.users.usersObject[id]\n      const maxId = last(user.followerIds)\n      return rootState.api.backendInteractor.fetchFollowers({ id, maxId })\n        .then((followers) => {\n          commit('addNewUsers', followers)\n          commit('saveFollowerIds', { id, followerIds: map(followers, 'id') })\n          return followers\n        })\n    },\n    clearFriends ({ commit }, userId) {\n      commit('clearFriends', userId)\n    },\n    clearFollowers ({ commit }, userId) {\n      commit('clearFollowers', userId)\n    },\n    subscribeUser ({ rootState, commit }, id) {\n      return rootState.api.backendInteractor.subscribeUser({ id })\n        .then((relationship) => commit('updateUserRelationship', [relationship]))\n    },\n    unsubscribeUser ({ rootState, commit }, id) {\n      return rootState.api.backendInteractor.unsubscribeUser({ id })\n        .then((relationship) => commit('updateUserRelationship', [relationship]))\n    },\n    toggleActivationStatus ({ rootState, commit }, { user }) {\n      const api = user.deactivated ? rootState.api.backendInteractor.activateUser : rootState.api.backendInteractor.deactivateUser\n      api({ user })\n        .then((user) => { let deactivated = !user.is_active; commit('updateActivationStatus', { user, deactivated }) })\n    },\n    registerPushNotifications (store) {\n      const token = store.state.currentUser.credentials\n      const vapidPublicKey = store.rootState.instance.vapidPublicKey\n      const isEnabled = store.rootState.config.webPushNotifications\n      const notificationVisibility = store.rootState.config.notificationVisibility\n\n      registerPushNotifications(isEnabled, vapidPublicKey, token, notificationVisibility)\n    },\n    unregisterPushNotifications (store) {\n      const token = store.state.currentUser.credentials\n\n      unregisterPushNotifications(token)\n    },\n    addNewUsers ({ commit }, users) {\n      commit('addNewUsers', users)\n    },\n    addNewStatuses (store, { statuses }) {\n      const users = map(statuses, 'user')\n      const retweetedUsers = compact(map(statuses, 'retweeted_status.user'))\n      store.commit('addNewUsers', users)\n      store.commit('addNewUsers', retweetedUsers)\n\n      each(statuses, (status) => {\n        // Reconnect users to statuses\n        store.commit('setUserForStatus', status)\n        // Set pinned statuses to user\n        store.commit('setPinnedToUser', status)\n      })\n      each(compact(map(statuses, 'retweeted_status')), (status) => {\n        // Reconnect users to retweets\n        store.commit('setUserForStatus', status)\n        // Set pinned retweets to user\n        store.commit('setPinnedToUser', status)\n      })\n    },\n    addNewNotifications (store, { notifications }) {\n      const users = map(notifications, 'from_profile')\n      const targetUsers = map(notifications, 'target').filter(_ => _)\n      const notificationIds = notifications.map(_ => _.id)\n      store.commit('addNewUsers', users)\n      store.commit('addNewUsers', targetUsers)\n\n      const notificationsObject = store.rootState.statuses.notifications.idStore\n      const relevantNotifications = Object.entries(notificationsObject)\n        .filter(([k, val]) => notificationIds.includes(k))\n        .map(([k, val]) => val)\n\n      // Reconnect users to notifications\n      each(relevantNotifications, (notification) => {\n        store.commit('setUserForNotification', notification)\n      })\n    },\n    searchUsers ({ rootState, commit }, { query }) {\n      return rootState.api.backendInteractor.searchUsers({ query })\n        .then((users) => {\n          commit('addNewUsers', users)\n          return users\n        })\n    },\n    async signUp (store, userInfo) {\n      store.commit('signUpPending')\n\n      let rootState = store.rootState\n\n      try {\n        let data = await rootState.api.backendInteractor.register(\n          { params: { ...userInfo } }\n        )\n        store.commit('signUpSuccess')\n        store.commit('setToken', data.access_token)\n        store.dispatch('loginUser', data.access_token)\n      } catch (e) {\n        let errors = e.message\n        store.commit('signUpFailure', errors)\n        throw e\n      }\n    },\n    async getCaptcha (store) {\n      return store.rootState.api.backendInteractor.getCaptcha()\n    },\n\n    logout (store) {\n      const { oauth, instance } = store.rootState\n\n      const data = {\n        ...oauth,\n        commit: store.commit,\n        instance: instance.server\n      }\n\n      return oauthApi.getOrCreateApp(data)\n        .then((app) => {\n          const params = {\n            app,\n            instance: data.instance,\n            token: oauth.userToken\n          }\n\n          return oauthApi.revokeToken(params)\n        })\n        .then(() => {\n          store.commit('clearCurrentUser')\n          store.dispatch('disconnectFromSocket')\n          store.commit('clearToken')\n          store.dispatch('stopFetchingTimeline', 'friends')\n          store.commit('setBackendInteractor', backendInteractorService(store.getters.getToken()))\n          store.dispatch('stopFetchingNotifications')\n          store.dispatch('stopFetchingFollowRequests')\n          store.commit('clearNotifications')\n          store.commit('resetStatuses')\n          store.dispatch('resetChats')\n          store.dispatch('setLastTimeline', 'public-timeline')\n          store.dispatch('setLayoutWidth', windowWidth())\n          store.dispatch('setLayoutHeight', windowHeight())\n        })\n    },\n    loginUser (store, accessToken) {\n      return new Promise((resolve, reject) => {\n        const commit = store.commit\n        commit('beginLogin')\n        store.rootState.api.backendInteractor.verifyCredentials(accessToken)\n          .then((data) => {\n            if (!data.error) {\n              const user = data\n              // user.credentials = userCredentials\n              user.credentials = accessToken\n              user.blockIds = []\n              user.muteIds = []\n              user.domainMutes = []\n              commit('setCurrentUser', user)\n              commit('addNewUsers', [user])\n\n              store.dispatch('fetchEmoji')\n\n              getNotificationPermission()\n                .then(permission => commit('setNotificationPermission', permission))\n\n              // Set our new backend interactor\n              commit('setBackendInteractor', backendInteractorService(accessToken))\n\n              if (user.token) {\n                store.dispatch('setWsToken', user.token)\n\n                // Initialize the shout socket.\n                store.dispatch('initializeSocket')\n              }\n\n              const startPolling = () => {\n                // Start getting fresh posts.\n                store.dispatch('startFetchingTimeline', { timeline: 'friends' })\n\n                // Start fetching notifications\n                store.dispatch('startFetchingNotifications')\n\n                // Start fetching chats\n                store.dispatch('startFetchingChats')\n              }\n\n              if (store.getters.mergedConfig.useStreamingApi) {\n                store.dispatch('fetchTimeline', 'friends', { since: null })\n                store.dispatch('fetchNotifications', { since: null })\n                store.dispatch('enableMastoSockets', true).catch((error) => {\n                  console.error('Failed initializing MastoAPI Streaming socket', error)\n                }).then(() => {\n                  store.dispatch('fetchChats', { latest: true })\n                  setTimeout(() => store.dispatch('setNotificationsSilence', false), 10000)\n                })\n              } else {\n                startPolling()\n              }\n\n              // Get user mutes\n              store.dispatch('fetchMutes')\n\n              store.dispatch('setLayoutWidth', windowWidth())\n              store.dispatch('setLayoutHeight', windowHeight())\n\n              // Fetch our friends\n              store.rootState.api.backendInteractor.fetchFriends({ id: user.id })\n                .then((friends) => commit('addNewUsers', friends))\n            } else {\n              const response = data.error\n              // Authentication failed\n              commit('endLogin')\n              if (response.status === 401) {\n                reject(new Error('Wrong username or password'))\n              } else {\n                reject(new Error('An error occurred, please try again'))\n              }\n            }\n            commit('endLogin')\n            resolve()\n          })\n          .catch((error) => {\n            console.log(error)\n            commit('endLogin')\n            reject(new Error('Failed to connect to server, try again'))\n          })\n      })\n    }\n  }\n}\n\nexport default users\n","import { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js'\n\nexport const maybeShowChatNotification = (store, chat) => {\n  if (!chat.lastMessage) return\n  if (store.rootState.chats.currentChatId === chat.id && !document.hidden) return\n  if (store.rootState.users.currentUser.id === chat.lastMessage.account_id) return\n\n  const opts = {\n    tag: chat.lastMessage.id,\n    title: chat.account.name,\n    icon: chat.account.profile_image_url,\n    body: chat.lastMessage.content\n  }\n\n  if (chat.lastMessage.attachment && chat.lastMessage.attachment.type === 'image') {\n    opts.image = chat.lastMessage.attachment.preview_url\n  }\n\n  showDesktopNotification(store.rootState, opts)\n}\n\nexport const buildFakeMessage = ({ content, chatId, attachments, userId, idempotencyKey }) => {\n  const fakeMessage = {\n    content,\n    chat_id: chatId,\n    created_at: new Date(),\n    id: `${new Date().getTime()}`,\n    attachments: attachments,\n    account_id: userId,\n    idempotency_key: idempotencyKey,\n    emojis: [],\n    pending: true,\n    isNormalized: true\n  }\n\n  if (attachments[0]) {\n    fakeMessage.attachment = attachments[0]\n  }\n\n  return fakeMessage\n}\n","import backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { WSConnectionStatus } from '../services/api/api.service.js'\nimport { maybeShowChatNotification } from '../services/chat_utils/chat_utils.js'\nimport { Socket } from 'phoenix'\n\nconst retryTimeout = (multiplier) => 1000 * multiplier\n\nconst api = {\n  state: {\n    retryMultiplier: 1,\n    backendInteractor: backendInteractorService(),\n    fetchers: {},\n    socket: null,\n    mastoUserSocket: null,\n    mastoUserSocketStatus: null,\n    followRequests: []\n  },\n  mutations: {\n    setBackendInteractor (state, backendInteractor) {\n      state.backendInteractor = backendInteractor\n    },\n    addFetcher (state, { fetcherName, fetcher }) {\n      state.fetchers[fetcherName] = fetcher\n    },\n    removeFetcher (state, { fetcherName, fetcher }) {\n      state.fetchers[fetcherName].stop()\n      delete state.fetchers[fetcherName]\n    },\n    setWsToken (state, token) {\n      state.wsToken = token\n    },\n    setSocket (state, socket) {\n      state.socket = socket\n    },\n    setFollowRequests (state, value) {\n      state.followRequests = value\n    },\n    setMastoUserSocketStatus (state, value) {\n      state.mastoUserSocketStatus = value\n    },\n    incrementRetryMultiplier (state) {\n      state.retryMultiplier = Math.max(++state.retryMultiplier, 3)\n    },\n    resetRetryMultiplier (state) {\n      state.retryMultiplier = 1\n    }\n  },\n  actions: {\n    /**\n     * Global MastoAPI socket control, in future should disable ALL sockets/(re)start relevant sockets\n     *\n     * @param {Boolean} [initial] - whether this enabling happened at boot time or not\n     */\n    enableMastoSockets (store, initial) {\n      const { state, dispatch, commit } = store\n      // Do not initialize unless nonexistent or closed\n      if (\n        state.mastoUserSocket &&\n          ![\n            WebSocket.CLOSED,\n            WebSocket.CLOSING\n          ].includes(state.mastoUserSocket.getState())\n      ) {\n        return\n      }\n      if (initial) {\n        commit('setMastoUserSocketStatus', WSConnectionStatus.STARTING_INITIAL)\n      } else {\n        commit('setMastoUserSocketStatus', WSConnectionStatus.STARTING)\n      }\n      return dispatch('startMastoUserSocket')\n    },\n    disableMastoSockets (store) {\n      const { state, dispatch, commit } = store\n      if (!state.mastoUserSocket) return\n      commit('setMastoUserSocketStatus', WSConnectionStatus.DISABLED)\n      return dispatch('stopMastoUserSocket')\n    },\n\n    // MastoAPI 'User' sockets\n    startMastoUserSocket (store) {\n      return new Promise((resolve, reject) => {\n        try {\n          const { state, commit, dispatch, rootState } = store\n          const timelineData = rootState.statuses.timelines.friends\n          state.mastoUserSocket = state.backendInteractor.startUserSocket({ store })\n          state.mastoUserSocket.addEventListener(\n            'message',\n            ({ detail: message }) => {\n              if (!message) return // pings\n              if (message.event === 'notification') {\n                dispatch('addNewNotifications', {\n                  notifications: [message.notification],\n                  older: false\n                })\n              } else if (message.event === 'update') {\n                dispatch('addNewStatuses', {\n                  statuses: [message.status],\n                  userId: false,\n                  showImmediately: timelineData.visibleStatuses.length === 0,\n                  timeline: 'friends'\n                })\n              } else if (message.event === 'delete') {\n                dispatch('deleteStatusById', message.id)\n              } else if (message.event === 'pleroma:chat_update') {\n                // The setTimeout wrapper is a temporary band-aid to avoid duplicates for the user's own messages when doing optimistic sending.\n                // The cause of the duplicates is the WS event arriving earlier than the HTTP response.\n                // This setTimeout wrapper can be removed once the commit `8e41baff` is in the stable Pleroma release.\n                // (`8e41baff` adds the idempotency key to the chat message entity, which PleromaFE uses when it's available, and it makes this artificial delay unnecessary).\n                setTimeout(() => {\n                  dispatch('addChatMessages', {\n                    chatId: message.chatUpdate.id,\n                    messages: [message.chatUpdate.lastMessage]\n                  })\n                  dispatch('updateChat', { chat: message.chatUpdate })\n                  maybeShowChatNotification(store, message.chatUpdate)\n                }, 100)\n              }\n            }\n          )\n          state.mastoUserSocket.addEventListener('open', () => {\n            // Do not show notification when we just opened up the page\n            if (state.mastoUserSocketStatus !== WSConnectionStatus.STARTING_INITIAL) {\n              dispatch('pushGlobalNotice', {\n                level: 'success',\n                messageKey: 'timeline.socket_reconnected',\n                timeout: 5000\n              })\n            }\n            // Stop polling if we were errored or disabled\n            if (new Set([\n              WSConnectionStatus.ERROR,\n              WSConnectionStatus.DISABLED\n            ]).has(state.mastoUserSocketStatus)) {\n              dispatch('stopFetchingTimeline', { timeline: 'friends' })\n              dispatch('stopFetchingNotifications')\n              dispatch('stopFetchingChats')\n            }\n            commit('resetRetryMultiplier')\n            commit('setMastoUserSocketStatus', WSConnectionStatus.JOINED)\n          })\n          state.mastoUserSocket.addEventListener('error', ({ detail: error }) => {\n            console.error('Error in MastoAPI websocket:', error)\n            // TODO is this needed?\n            dispatch('clearOpenedChats')\n          })\n          state.mastoUserSocket.addEventListener('close', ({ detail: closeEvent }) => {\n            const ignoreCodes = new Set([\n              1000, // Normal (intended) closure\n              1001 // Going away\n            ])\n            const { code } = closeEvent\n            if (ignoreCodes.has(code)) {\n              console.debug(`Not restarting socket becasue of closure code ${code} is in ignore list`)\n              commit('setMastoUserSocketStatus', WSConnectionStatus.CLOSED)\n            } else {\n              console.warn(`MastoAPI websocket disconnected, restarting. CloseEvent code: ${code}`)\n              setTimeout(() => {\n                dispatch('startMastoUserSocket')\n              }, retryTimeout(state.retryMultiplier))\n              commit('incrementRetryMultiplier')\n              if (state.mastoUserSocketStatus !== WSConnectionStatus.ERROR) {\n                dispatch('startFetchingTimeline', { timeline: 'friends' })\n                dispatch('startFetchingNotifications')\n                dispatch('startFetchingChats')\n                dispatch('pushGlobalNotice', {\n                  level: 'error',\n                  messageKey: 'timeline.socket_broke',\n                  messageArgs: [code],\n                  timeout: 5000\n                })\n              }\n              commit('setMastoUserSocketStatus', WSConnectionStatus.ERROR)\n            }\n            dispatch('clearOpenedChats')\n          })\n          resolve()\n        } catch (e) {\n          reject(e)\n        }\n      })\n    },\n    stopMastoUserSocket ({ state, dispatch }) {\n      dispatch('startFetchingTimeline', { timeline: 'friends' })\n      dispatch('startFetchingNotifications')\n      dispatch('startFetchingChats')\n      state.mastoUserSocket.close()\n    },\n\n    // Timelines\n    startFetchingTimeline (store, {\n      timeline = 'friends',\n      tag = false,\n      userId = false\n    }) {\n      if (store.state.fetchers[timeline]) return\n\n      const fetcher = store.state.backendInteractor.startFetchingTimeline({\n        timeline, store, userId, tag\n      })\n      store.commit('addFetcher', { fetcherName: timeline, fetcher })\n    },\n    stopFetchingTimeline (store, timeline) {\n      const fetcher = store.state.fetchers[timeline]\n      if (!fetcher) return\n      store.commit('removeFetcher', { fetcherName: timeline, fetcher })\n    },\n    fetchTimeline (store, timeline, { ...rest }) {\n      store.state.backendInteractor.fetchTimeline({\n        store,\n        timeline,\n        ...rest\n      })\n    },\n\n    // Notifications\n    startFetchingNotifications (store) {\n      if (store.state.fetchers.notifications) return\n      const fetcher = store.state.backendInteractor.startFetchingNotifications({ store })\n      store.commit('addFetcher', { fetcherName: 'notifications', fetcher })\n    },\n    stopFetchingNotifications (store) {\n      const fetcher = store.state.fetchers.notifications\n      if (!fetcher) return\n      store.commit('removeFetcher', { fetcherName: 'notifications', fetcher })\n    },\n    fetchNotifications (store, { ...rest }) {\n      store.state.backendInteractor.fetchNotifications({\n        store,\n        ...rest\n      })\n    },\n\n    // Follow requests\n    startFetchingFollowRequests (store) {\n      if (store.state.fetchers['followRequests']) return\n      const fetcher = store.state.backendInteractor.startFetchingFollowRequests({ store })\n\n      store.commit('addFetcher', { fetcherName: 'followRequests', fetcher })\n    },\n    stopFetchingFollowRequests (store) {\n      const fetcher = store.state.fetchers.followRequests\n      if (!fetcher) return\n      store.commit('removeFetcher', { fetcherName: 'followRequests', fetcher })\n    },\n    removeFollowRequest (store, request) {\n      let requests = store.state.followRequests.filter((it) => it !== request)\n      store.commit('setFollowRequests', requests)\n    },\n\n    // Pleroma websocket\n    setWsToken (store, token) {\n      store.commit('setWsToken', token)\n    },\n    initializeSocket ({ dispatch, commit, state, rootState }) {\n      // Set up websocket connection\n      const token = state.wsToken\n      if (rootState.instance.shoutAvailable && typeof token !== 'undefined' && state.socket === null) {\n        const socket = new Socket('/socket', { params: { token } })\n        socket.connect()\n\n        commit('setSocket', socket)\n        dispatch('initializeShout', socket)\n      }\n    },\n    disconnectFromSocket ({ commit, state }) {\n      state.socket && state.socket.disconnect()\n      commit('setSocket', null)\n    }\n  }\n}\n\nexport default api\n","const shout = {\n  state: {\n    messages: [],\n    channel: { state: '' },\n    joined: false\n  },\n  mutations: {\n    setChannel (state, channel) {\n      state.channel = channel\n    },\n    addMessage (state, message) {\n      state.messages.push(message)\n      state.messages = state.messages.slice(-19, 20)\n    },\n    setMessages (state, messages) {\n      state.messages = messages.slice(-19, 20)\n    },\n    setJoined (state, joined) {\n      state.joined = joined\n    }\n  },\n  actions: {\n    initializeShout (store, socket) {\n      const channel = socket.channel('chat:public')\n      channel.joinPush.receive('ok', () => {\n        store.commit('setJoined', true)\n      })\n      channel.onClose(() => {\n        store.commit('setJoined', false)\n      })\n      channel.onError(() => {\n        store.commit('setJoined', false)\n      })\n      channel.on('new_msg', (msg) => {\n        store.commit('addMessage', msg)\n      })\n      channel.on('messages', ({ messages }) => {\n        store.commit('setMessages', messages)\n      })\n      channel.join()\n      store.commit('setChannel', channel)\n    }\n  }\n}\n\nexport default shout\n","const oauth = {\n  state: {\n    clientId: false,\n    clientSecret: false,\n    /* App token is authentication for app without any user, used mostly for\n     * MastoAPI's registration of new users, stored so that we can fall back to\n     * it on logout\n     */\n    appToken: false,\n    /* User token is authentication for app with user, this is for every calls\n     * that need authorized user to be successful (i.e. posting, liking etc)\n     */\n    userToken: false\n  },\n  mutations: {\n    setClientData (state, { clientId, clientSecret }) {\n      state.clientId = clientId\n      state.clientSecret = clientSecret\n    },\n    setAppToken (state, token) {\n      state.appToken = token\n    },\n    setToken (state, token) {\n      state.userToken = token\n    },\n    clearToken (state) {\n      state.userToken = false\n      // state.token is userToken with older name, coming from persistent state\n      // let's clear it as well, since it is being used as a fallback of state.userToken\n      delete state.token\n    }\n  },\n  getters: {\n    getToken: state => () => {\n      // state.token is userToken with older name, coming from persistent state\n      // added here for smoother transition, otherwise user will be logged out\n      return state.userToken || state.token || state.appToken\n    },\n    getUserToken: state => () => {\n      // state.token is userToken with older name, coming from persistent state\n      // added here for smoother transition, otherwise user will be logged out\n      return state.userToken || state.token\n    }\n  }\n}\n\nexport default oauth\n","const PASSWORD_STRATEGY = 'password'\nconst TOKEN_STRATEGY = 'token'\n\n// MFA strategies\nconst TOTP_STRATEGY = 'totp'\nconst RECOVERY_STRATEGY = 'recovery'\n\n// initial state\nconst state = {\n  settings: {},\n  strategy: PASSWORD_STRATEGY,\n  initStrategy: PASSWORD_STRATEGY // default strategy from config\n}\n\nconst resetState = (state) => {\n  state.strategy = state.initStrategy\n  state.settings = {}\n}\n\n// getters\nconst getters = {\n  settings: (state, getters) => {\n    return state.settings\n  },\n  requiredPassword: (state, getters, rootState) => {\n    return state.strategy === PASSWORD_STRATEGY\n  },\n  requiredToken: (state, getters, rootState) => {\n    return state.strategy === TOKEN_STRATEGY\n  },\n  requiredTOTP: (state, getters, rootState) => {\n    return state.strategy === TOTP_STRATEGY\n  },\n  requiredRecovery: (state, getters, rootState) => {\n    return state.strategy === RECOVERY_STRATEGY\n  }\n}\n\n// mutations\nconst mutations = {\n  setInitialStrategy (state, strategy) {\n    if (strategy) {\n      state.initStrategy = strategy\n      state.strategy = strategy\n    }\n  },\n  requirePassword (state) {\n    state.strategy = PASSWORD_STRATEGY\n  },\n  requireToken (state) {\n    state.strategy = TOKEN_STRATEGY\n  },\n  requireMFA (state, { settings }) {\n    state.settings = settings\n    state.strategy = TOTP_STRATEGY // default strategy of MFA\n  },\n  requireRecovery (state) {\n    state.strategy = RECOVERY_STRATEGY\n  },\n  requireTOTP (state) {\n    state.strategy = TOTP_STRATEGY\n  },\n  abortMFA (state) {\n    resetState(state)\n  }\n}\n\n// actions\nconst actions = {\n  // eslint-disable-next-line camelcase\n  async login ({ state, dispatch, commit }, { access_token }) {\n    commit('setToken', access_token, { root: true })\n    await dispatch('loginUser', access_token, { root: true })\n    resetState(state)\n  }\n}\n\nexport default {\n  namespaced: true,\n  state,\n  getters,\n  mutations,\n  actions\n}\n","import fileTypeService from '../services/file_type/file_type.service.js'\nconst supportedTypes = new Set(['image', 'video', 'audio', 'flash'])\n\nconst mediaViewer = {\n  state: {\n    media: [],\n    currentIndex: 0,\n    activated: false\n  },\n  mutations: {\n    setMedia (state, media) {\n      state.media = media\n    },\n    setCurrentMedia (state, index) {\n      state.activated = true\n      state.currentIndex = index\n    },\n    close (state) {\n      state.activated = false\n    }\n  },\n  actions: {\n    setMedia ({ commit }, attachments) {\n      const media = attachments.filter(attachment => {\n        const type = fileTypeService.fileType(attachment.mimetype)\n        return supportedTypes.has(type)\n      })\n      commit('setMedia', media)\n    },\n    setCurrentMedia ({ commit, state }, current) {\n      const index = state.media.indexOf(current)\n      commit('setCurrentMedia', index || 0)\n    },\n    closeMediaViewer ({ commit }) {\n      commit('close')\n    }\n  }\n}\n\nexport default mediaViewer\n","const oauthTokens = {\n  state: {\n    tokens: []\n  },\n  actions: {\n    fetchTokens ({ rootState, commit }) {\n      rootState.api.backendInteractor.fetchOAuthTokens().then((tokens) => {\n        commit('swapTokens', tokens)\n      })\n    },\n    revokeToken ({ rootState, commit, state }, id) {\n      rootState.api.backendInteractor.revokeOAuthToken({ id }).then((response) => {\n        if (response.status === 201) {\n          commit('swapTokens', state.tokens.filter(token => token.id !== id))\n        }\n      })\n    }\n  },\n  mutations: {\n    swapTokens (state, tokens) {\n      state.tokens = tokens\n    }\n  }\n}\n\nexport default oauthTokens\n","import filter from 'lodash/filter'\n\nconst reports = {\n  state: {\n    userId: null,\n    statuses: [],\n    preTickedIds: [],\n    modalActivated: false\n  },\n  mutations: {\n    openUserReportingModal (state, { userId, statuses, preTickedIds }) {\n      state.userId = userId\n      state.statuses = statuses\n      state.preTickedIds = preTickedIds\n      state.modalActivated = true\n    },\n    closeUserReportingModal (state) {\n      state.modalActivated = false\n    }\n  },\n  actions: {\n    openUserReportingModal ({ rootState, commit }, { userId, statusIds = [] }) {\n      const preTickedStatuses = statusIds.map(id => rootState.statuses.allStatusesObject[id])\n      const preTickedIds = statusIds\n      const statuses = preTickedStatuses.concat(\n        filter(rootState.statuses.allStatuses,\n          status => status.user.id === userId && !preTickedIds.includes(status.id)\n        )\n      )\n      commit('openUserReportingModal', { userId, statuses, preTickedIds })\n    },\n    closeUserReportingModal ({ commit }) {\n      commit('closeUserReportingModal')\n    }\n  }\n}\n\nexport default reports\n","import { merge } from 'lodash'\n\nconst polls = {\n  state: {\n    // Contains key = id, value = number of trackers for this poll\n    trackedPolls: {},\n    pollsObject: {}\n  },\n  mutations: {\n    mergeOrAddPoll (state, poll) {\n      const existingPoll = state.pollsObject[poll.id]\n      // Make expired-state change trigger re-renders properly\n      poll.expired = Date.now() > Date.parse(poll.expires_at)\n      if (existingPoll) {\n        state.pollsObject[poll.id] = merge(existingPoll, poll)\n      } else {\n        state.pollsObject[poll.id] = poll\n      }\n    },\n    trackPoll (state, pollId) {\n      const currentValue = state.trackedPolls[pollId]\n      if (currentValue) {\n        state.trackedPolls[pollId] = currentValue + 1\n      } else {\n        state.trackedPolls[pollId] = 1\n      }\n    },\n    untrackPoll (state, pollId) {\n      const currentValue = state.trackedPolls[pollId]\n      if (currentValue) {\n        state.trackedPolls[pollId] = currentValue - 1\n      } else {\n        state.trackedPolls[pollId] = 0\n      }\n    }\n  },\n  actions: {\n    mergeOrAddPoll ({ commit }, poll) {\n      commit('mergeOrAddPoll', poll)\n    },\n    updateTrackedPoll ({ rootState, dispatch, commit }, pollId) {\n      rootState.api.backendInteractor.fetchPoll({ pollId }).then(poll => {\n        setTimeout(() => {\n          if (rootState.polls.trackedPolls[pollId]) {\n            dispatch('updateTrackedPoll', pollId)\n          }\n        }, 30 * 1000)\n        commit('mergeOrAddPoll', poll)\n      })\n    },\n    trackPoll ({ rootState, commit, dispatch }, pollId) {\n      if (!rootState.polls.trackedPolls[pollId]) {\n        setTimeout(() => dispatch('updateTrackedPoll', pollId), 30 * 1000)\n      }\n      commit('trackPoll', pollId)\n    },\n    untrackPoll ({ commit }, pollId) {\n      commit('untrackPoll', pollId)\n    },\n    votePoll ({ rootState, commit }, { id, pollId, choices }) {\n      return rootState.api.backendInteractor.vote({ pollId, choices }).then(poll => {\n        commit('mergeOrAddPoll', poll)\n        return poll\n      })\n    }\n  }\n}\n\nexport default polls\n","const postStatus = {\n  state: {\n    params: null,\n    modalActivated: false\n  },\n  mutations: {\n    openPostStatusModal (state, params) {\n      state.params = params\n      state.modalActivated = true\n    },\n    closePostStatusModal (state) {\n      state.modalActivated = false\n    }\n  },\n  actions: {\n    openPostStatusModal ({ commit }, params) {\n      commit('openPostStatusModal', params)\n    },\n    closePostStatusModal ({ commit }) {\n      commit('closePostStatusModal')\n    }\n  }\n}\n\nexport default postStatus\n","import _ from 'lodash'\n\nconst empty = (chatId) => {\n  return {\n    idIndex: {},\n    idempotencyKeyIndex: {},\n    messages: [],\n    newMessageCount: 0,\n    lastSeenMessageId: '0',\n    chatId: chatId,\n    minId: undefined,\n    maxId: undefined\n  }\n}\n\nconst clear = (storage) => {\n  const failedMessageIds = []\n\n  for (const message of storage.messages) {\n    if (message.error) {\n      failedMessageIds.push(message.id)\n    } else {\n      delete storage.idIndex[message.id]\n      delete storage.idempotencyKeyIndex[message.idempotency_key]\n    }\n  }\n\n  storage.messages = storage.messages.filter(m => failedMessageIds.includes(m.id))\n  storage.newMessageCount = 0\n  storage.lastSeenMessageId = '0'\n  storage.minId = undefined\n  storage.maxId = undefined\n}\n\nconst deleteMessage = (storage, messageId) => {\n  if (!storage) { return }\n  storage.messages = storage.messages.filter(m => m.id !== messageId)\n  delete storage.idIndex[messageId]\n\n  if (storage.maxId === messageId) {\n    const lastMessage = _.maxBy(storage.messages, 'id')\n    storage.maxId = lastMessage.id\n  }\n\n  if (storage.minId === messageId) {\n    const firstMessage = _.minBy(storage.messages, 'id')\n    storage.minId = firstMessage.id\n  }\n}\n\nconst cullOlderMessages = (storage) => {\n  const maxIndex = storage.messages.length\n  const minIndex = maxIndex - 50\n  if (maxIndex <= 50) return\n\n  storage.messages = _.sortBy(storage.messages, ['id'])\n  storage.minId = storage.messages[minIndex].id\n  for (const message of storage.messages) {\n    if (message.id < storage.minId) {\n      delete storage.idIndex[message.id]\n      delete storage.idempotencyKeyIndex[message.idempotency_key]\n    }\n  }\n  storage.messages = storage.messages.slice(minIndex, maxIndex)\n}\n\nconst handleMessageError = (storage, fakeId, isRetry) => {\n  if (!storage) { return }\n  const fakeMessage = storage.idIndex[fakeId]\n  if (fakeMessage) {\n    fakeMessage.error = true\n    fakeMessage.pending = false\n    if (!isRetry) {\n      // Ensure the failed message doesn't stay at the bottom of the list.\n      const lastPersistedMessage = _.orderBy(storage.messages, ['pending', 'id'], ['asc', 'desc'])[0]\n      if (lastPersistedMessage) {\n        const oldId = fakeMessage.id\n        fakeMessage.id = `${lastPersistedMessage.id}-${new Date().getTime()}`\n        storage.idIndex[fakeMessage.id] = fakeMessage\n        delete storage.idIndex[oldId]\n      }\n    }\n  }\n}\n\nconst add = (storage, { messages: newMessages, updateMaxId = true }) => {\n  if (!storage) { return }\n  for (let i = 0; i < newMessages.length; i++) {\n    const message = newMessages[i]\n\n    // sanity check\n    if (message.chat_id !== storage.chatId) { return }\n\n    if (message.fakeId) {\n      const fakeMessage = storage.idIndex[message.fakeId]\n      if (fakeMessage) {\n        // In case the same id exists (chat update before POST response)\n        // make sure to remove the older duplicate message.\n        if (storage.idIndex[message.id]) {\n          delete storage.idIndex[message.id]\n          storage.messages = storage.messages.filter(msg => msg.id !== message.id)\n        }\n        Object.assign(fakeMessage, message, { error: false })\n        delete fakeMessage['fakeId']\n        storage.idIndex[fakeMessage.id] = fakeMessage\n        delete storage.idIndex[message.fakeId]\n\n        return\n      }\n    }\n\n    if (!storage.minId || (!message.pending && message.id < storage.minId)) {\n      storage.minId = message.id\n    }\n\n    if (!storage.maxId || message.id > storage.maxId) {\n      if (updateMaxId) {\n        storage.maxId = message.id\n      }\n    }\n\n    if (!storage.idIndex[message.id] && !isConfirmation(storage, message)) {\n      if (storage.lastSeenMessageId < message.id) {\n        storage.newMessageCount++\n      }\n      storage.idIndex[message.id] = message\n      storage.messages.push(storage.idIndex[message.id])\n      storage.idempotencyKeyIndex[message.idempotency_key] = true\n    }\n  }\n}\n\nconst isConfirmation = (storage, message) => {\n  if (!message.idempotency_key) return\n  return storage.idempotencyKeyIndex[message.idempotency_key]\n}\n\nconst resetNewMessageCount = (storage) => {\n  if (!storage) { return }\n  storage.newMessageCount = 0\n  storage.lastSeenMessageId = storage.maxId\n}\n\n// Inserts date separators and marks the head and tail if it's the chain of messages made by the same user\nconst getView = (storage) => {\n  if (!storage) { return [] }\n\n  const result = []\n  const messages = _.orderBy(storage.messages, ['pending', 'id'], ['asc', 'asc'])\n  const firstMessage = messages[0]\n  let previousMessage = messages[messages.length - 1]\n  let currentMessageChainId\n\n  if (firstMessage) {\n    const date = new Date(firstMessage.created_at)\n    date.setHours(0, 0, 0, 0)\n    result.push({\n      type: 'date',\n      date,\n      id: date.getTime().toString()\n    })\n  }\n\n  let afterDate = false\n\n  for (let i = 0; i < messages.length; i++) {\n    const message = messages[i]\n    const nextMessage = messages[i + 1]\n\n    const date = new Date(message.created_at)\n    date.setHours(0, 0, 0, 0)\n\n    // insert date separator and start a new message chain\n    if (previousMessage && previousMessage.date < date) {\n      result.push({\n        type: 'date',\n        date,\n        id: date.getTime().toString()\n      })\n\n      previousMessage['isTail'] = true\n      currentMessageChainId = undefined\n      afterDate = true\n    }\n\n    const object = {\n      type: 'message',\n      data: message,\n      date,\n      id: message.id,\n      messageChainId: currentMessageChainId\n    }\n\n    // end a message chian\n    if ((nextMessage && nextMessage.account_id) !== message.account_id) {\n      object['isTail'] = true\n      currentMessageChainId = undefined\n    }\n\n    // start a new message chain\n    if ((previousMessage && previousMessage.data && previousMessage.data.account_id) !== message.account_id || afterDate) {\n      currentMessageChainId = _.uniqueId()\n      object['isHead'] = true\n      object['messageChainId'] = currentMessageChainId\n    }\n\n    result.push(object)\n    previousMessage = object\n    afterDate = false\n  }\n\n  return result\n}\n\nconst ChatService = {\n  add,\n  empty,\n  getView,\n  deleteMessage,\n  cullOlderMessages,\n  resetNewMessageCount,\n  clear,\n  handleMessageError\n}\n\nexport default ChatService\n","import { reactive } from 'vue'\nimport { find, omitBy, orderBy, sumBy } from 'lodash'\nimport chatService from '../services/chat_service/chat_service.js'\nimport { parseChat, parseChatMessage } from '../services/entity_normalizer/entity_normalizer.service.js'\nimport { maybeShowChatNotification } from '../services/chat_utils/chat_utils.js'\nimport { promiseInterval } from '../services/promise_interval/promise_interval.js'\n\nconst emptyChatList = () => ({\n  data: [],\n  idStore: {}\n})\n\nconst defaultState = {\n  chatList: emptyChatList(),\n  chatListFetcher: null,\n  openedChats: reactive({}),\n  openedChatMessageServices: reactive({}),\n  fetcher: undefined,\n  currentChatId: null,\n  lastReadMessageId: null\n}\n\nconst getChatById = (state, id) => {\n  return find(state.chatList.data, { id })\n}\n\nconst sortedChatList = (state) => {\n  return orderBy(state.chatList.data, ['updated_at'], ['desc'])\n}\n\nconst unreadChatCount = (state) => {\n  return sumBy(state.chatList.data, 'unread')\n}\n\nconst chats = {\n  state: { ...defaultState },\n  getters: {\n    currentChat: state => state.openedChats[state.currentChatId],\n    currentChatMessageService: state => state.openedChatMessageServices[state.currentChatId],\n    findOpenedChatByRecipientId: state => recipientId => find(state.openedChats, c => c.account.id === recipientId),\n    sortedChatList,\n    unreadChatCount\n  },\n  actions: {\n    // Chat list\n    startFetchingChats ({ dispatch, commit }) {\n      const fetcher = () => dispatch('fetchChats', { latest: true })\n      fetcher()\n      commit('setChatListFetcher', {\n        fetcher: () => promiseInterval(fetcher, 60000)\n      })\n    },\n    stopFetchingChats ({ commit }) {\n      commit('setChatListFetcher', { fetcher: undefined })\n    },\n    fetchChats ({ dispatch, rootState, commit }, params = {}) {\n      return rootState.api.backendInteractor.chats()\n        .then(({ chats }) => {\n          dispatch('addNewChats', { chats })\n          return chats\n        })\n    },\n    addNewChats (store, { chats }) {\n      const { commit, dispatch, rootGetters } = store\n      const newChatMessageSideEffects = (chat) => {\n        maybeShowChatNotification(store, chat)\n      }\n      commit('addNewChats', { dispatch, chats, rootGetters, newChatMessageSideEffects })\n    },\n    updateChat ({ commit }, { chat }) {\n      commit('updateChat', { chat })\n    },\n\n    // Opened Chats\n    startFetchingCurrentChat ({ commit, dispatch }, { fetcher }) {\n      dispatch('setCurrentChatFetcher', { fetcher })\n    },\n    setCurrentChatFetcher ({ rootState, commit }, { fetcher }) {\n      commit('setCurrentChatFetcher', { fetcher })\n    },\n    addOpenedChat ({ rootState, commit, dispatch }, { chat }) {\n      commit('addOpenedChat', { dispatch, chat: parseChat(chat) })\n      dispatch('addNewUsers', [chat.account])\n    },\n    addChatMessages ({ commit }, value) {\n      commit('addChatMessages', { commit, ...value })\n    },\n    resetChatNewMessageCount ({ commit }, value) {\n      commit('resetChatNewMessageCount', value)\n    },\n    clearCurrentChat ({ rootState, commit, dispatch }, value) {\n      commit('setCurrentChatId', { chatId: undefined })\n      commit('setCurrentChatFetcher', { fetcher: undefined })\n    },\n    readChat ({ rootState, commit, dispatch }, { id, lastReadId }) {\n      const isNewMessage = rootState.chats.lastReadMessageId !== lastReadId\n\n      dispatch('resetChatNewMessageCount')\n      commit('readChat', { id, lastReadId })\n\n      if (isNewMessage) {\n        rootState.api.backendInteractor.readChat({ id, lastReadId })\n      }\n    },\n    deleteChatMessage ({ rootState, commit }, value) {\n      rootState.api.backendInteractor.deleteChatMessage(value)\n      commit('deleteChatMessage', { commit, ...value })\n    },\n    resetChats ({ commit, dispatch }) {\n      dispatch('clearCurrentChat')\n      commit('resetChats', { commit })\n    },\n    clearOpenedChats ({ rootState, commit, dispatch, rootGetters }) {\n      commit('clearOpenedChats', { commit })\n    },\n    handleMessageError ({ commit }, value) {\n      commit('handleMessageError', { commit, ...value })\n    },\n    cullOlderMessages ({ commit }, chatId) {\n      commit('cullOlderMessages', chatId)\n    }\n  },\n  mutations: {\n    setChatListFetcher (state, { commit, fetcher }) {\n      const prevFetcher = state.chatListFetcher\n      if (prevFetcher) {\n        prevFetcher.stop()\n      }\n      state.chatListFetcher = fetcher && fetcher()\n    },\n    setCurrentChatFetcher (state, { fetcher }) {\n      const prevFetcher = state.fetcher\n      if (prevFetcher) {\n        prevFetcher.stop()\n      }\n      state.fetcher = fetcher && fetcher()\n    },\n    addOpenedChat (state, { _dispatch, chat }) {\n      state.currentChatId = chat.id\n      state.openedChats[chat.id] = chat\n\n      if (!state.openedChatMessageServices[chat.id]) {\n        state.openedChatMessageServices[chat.id] = chatService.empty(chat.id)\n      }\n    },\n    setCurrentChatId (state, { chatId }) {\n      state.currentChatId = chatId\n    },\n    addNewChats (state, { chats, newChatMessageSideEffects }) {\n      chats.forEach((updatedChat) => {\n        const chat = getChatById(state, updatedChat.id)\n\n        if (chat) {\n          const isNewMessage = (chat.lastMessage && chat.lastMessage.id) !== (updatedChat.lastMessage && updatedChat.lastMessage.id)\n          chat.lastMessage = updatedChat.lastMessage\n          chat.unread = updatedChat.unread\n          chat.updated_at = updatedChat.updated_at\n          if (isNewMessage && chat.unread) {\n            newChatMessageSideEffects(updatedChat)\n          }\n        } else {\n          state.chatList.data.push(updatedChat)\n          state.chatList.idStore[updatedChat.id] = updatedChat\n        }\n      })\n    },\n    updateChat (state, { _dispatch, chat: updatedChat, _rootGetters }) {\n      const chat = getChatById(state, updatedChat.id)\n      if (chat) {\n        chat.lastMessage = updatedChat.lastMessage\n        chat.unread = updatedChat.unread\n        chat.updated_at = updatedChat.updated_at\n      }\n      if (!chat) { state.chatList.data.unshift(updatedChat) }\n      state.chatList.idStore[updatedChat.id] = updatedChat\n    },\n    deleteChat (state, { _dispatch, id, _rootGetters }) {\n      state.chats.data = state.chats.data.filter(conversation =>\n        conversation.last_status.id !== id\n      )\n      state.chats.idStore = omitBy(state.chats.idStore, conversation => conversation.last_status.id === id)\n    },\n    resetChats (state, { commit }) {\n      state.chatList = emptyChatList()\n      state.currentChatId = null\n      commit('setChatListFetcher', { fetcher: undefined })\n      for (const chatId in state.openedChats) {\n        chatService.clear(state.openedChatMessageServices[chatId])\n        delete state.openedChats[chatId]\n        delete state.openedChatMessageServices[chatId]\n      }\n    },\n    setChatsLoading (state, { value }) {\n      state.chats.loading = value\n    },\n    addChatMessages (state, { chatId, messages, updateMaxId }) {\n      const chatMessageService = state.openedChatMessageServices[chatId]\n      if (chatMessageService) {\n        chatService.add(chatMessageService, { messages: messages.map(parseChatMessage), updateMaxId })\n      }\n    },\n    deleteChatMessage (state, { chatId, messageId }) {\n      const chatMessageService = state.openedChatMessageServices[chatId]\n      if (chatMessageService) {\n        chatService.deleteMessage(chatMessageService, messageId)\n      }\n    },\n    resetChatNewMessageCount (state, _value) {\n      const chatMessageService = state.openedChatMessageServices[state.currentChatId]\n      chatService.resetNewMessageCount(chatMessageService)\n    },\n    // Used when a connection loss occurs\n    clearOpenedChats (state) {\n      const currentChatId = state.currentChatId\n      for (const chatId in state.openedChats) {\n        if (currentChatId !== chatId) {\n          chatService.clear(state.openedChatMessageServices[chatId])\n          delete state.openedChats[chatId]\n          delete state.openedChatMessageServices[chatId]\n        }\n      }\n    },\n    readChat (state, { id, lastReadId }) {\n      state.lastReadMessageId = lastReadId\n      const chat = getChatById(state, id)\n      if (chat) {\n        chat.unread = 0\n      }\n    },\n    handleMessageError (state, { chatId, fakeId, isRetry }) {\n      const chatMessageService = state.openedChatMessageServices[chatId]\n      chatService.handleMessageError(chatMessageService, fakeId, isRetry)\n    },\n    cullOlderMessages (state, chatId) {\n      chatService.cullOlderMessages(state.openedChatMessageServices[chatId])\n    }\n  }\n}\n\nexport default chats\n","import merge from 'lodash.merge'\nimport localforage from 'localforage'\nimport { each, get, set, cloneDeep } from 'lodash'\n\nlet loaded = false\n\nconst defaultReducer = (state, paths) => (\n  paths.length === 0 ? state : paths.reduce((substate, path) => {\n    set(substate, path, get(state, path))\n    return substate\n  }, {})\n)\n\nconst saveImmedeatelyActions = [\n  'markNotificationsAsSeen',\n  'clearCurrentUser',\n  'setCurrentUser',\n  'setHighlight',\n  'setOption',\n  'setClientData',\n  'setToken',\n  'clearToken'\n]\n\nconst defaultStorage = (() => {\n  return localforage\n})()\n\nexport default function createPersistedState ({\n  key = 'vuex-lz',\n  paths = [],\n  getState = (key, storage) => {\n    let value = storage.getItem(key)\n    return value\n  },\n  setState = (key, state, storage) => {\n    if (!loaded) {\n      console.log('waiting for old state to be loaded...')\n      return Promise.resolve()\n    } else {\n      return storage.setItem(key, state)\n    }\n  },\n  reducer = defaultReducer,\n  storage = defaultStorage,\n  subscriber = store => handler => store.subscribe(handler)\n} = {}) {\n  return getState(key, storage).then((savedState) => {\n    return store => {\n      try {\n        if (savedState !== null && typeof savedState === 'object') {\n          // build user cache\n          const usersState = savedState.users || {}\n          usersState.usersObject = {}\n          const users = usersState.users || []\n          each(users, (user) => { usersState.usersObject[user.id] = user })\n          savedState.users = usersState\n\n          store.replaceState(\n            merge({}, store.state, savedState)\n          )\n        }\n        loaded = true\n      } catch (e) {\n        console.log(\"Couldn't load state\")\n        console.error(e)\n        loaded = true\n      }\n      subscriber(store)((mutation, state) => {\n        try {\n          if (saveImmedeatelyActions.includes(mutation.type)) {\n            setState(key, reducer(cloneDeep(state), paths), storage)\n              .then(success => {\n                if (typeof success !== 'undefined') {\n                  if (mutation.type === 'setOption' || mutation.type === 'setCurrentUser') {\n                    store.dispatch('settingsSaved', { success })\n                  }\n                }\n              }, error => {\n                if (mutation.type === 'setOption' || mutation.type === 'setCurrentUser') {\n                  store.dispatch('settingsSaved', { error })\n                }\n              })\n          }\n        } catch (e) {\n          console.log(\"Couldn't persist state:\")\n          console.log(e)\n        }\n      })\n    }\n  })\n}\n","export default (store) => {\n  store.subscribe((mutation, state) => {\n    const vapidPublicKey = state.instance.vapidPublicKey\n    const webPushNotification = state.config.webPushNotifications\n    const permission = state.interface.notificationPermission === 'granted'\n    const user = state.users.currentUser\n\n    const isUserMutation = mutation.type === 'setCurrentUser'\n    const isVapidMutation = mutation.type === 'setInstanceOption' && mutation.payload.name === 'vapidPublicKey'\n    const isPermMutation = mutation.type === 'setNotificationPermission' && mutation.payload === 'granted'\n    const isUserConfigMutation = mutation.type === 'setOption' && mutation.payload.name === 'webPushNotifications'\n    const isVisibilityMutation = mutation.type === 'setOption' && mutation.payload.name === 'notificationVisibility'\n\n    if (isUserMutation || isVapidMutation || isPermMutation || isUserConfigMutation || isVisibilityMutation) {\n      if (user && vapidPublicKey && permission && webPushNotification) {\n        return store.dispatch('registerPushNotifications')\n      } else if (isUserConfigMutation && !webPushNotification) {\n        return store.dispatch('unregisterPushNotifications')\n      }\n    }\n  })\n}\n","<template>\n  <div\n    id=\"app-loaded\"\n    :style=\"bgStyle\"\n  >\n    <div\n      id=\"app_bg_wrapper\"\n      class=\"app-bg-wrapper\"\n    />\n    <MobileNav v-if=\"layoutType === 'mobile'\" />\n    <DesktopNav v-else />\n    <Notifications v-if=\"currentUser\" />\n    <div\n      id=\"content\"\n      class=\"app-layout container\"\n      :class=\"classes\"\n    >\n      <div class=\"underlay\"/>\n      <div id=\"sidebar\" class=\"column -scrollable\" :class=\"{ '-show-scrollbar': showScrollbars }\">\n        <user-panel />\n        <template v-if=\"layoutType !== 'mobile'\">\n          <nav-panel />\n          <instance-specific-panel v-if=\"showInstanceSpecificPanel\" />\n          <features-panel v-if=\"!currentUser && showFeaturesPanel\" />\n          <who-to-follow-panel v-if=\"currentUser && suggestionsEnabled\" />\n          <div id=\"notifs-sidebar\" />\n        </template>\n      </div>\n      <div id=\"main-scroller\" class=\"column main\" :class=\"{ '-full-height': isChats }\">\n        <div\n          v-if=\"!currentUser\"\n          class=\"login-hint panel panel-default\"\n        >\n          <router-link\n            :to=\"{ name: 'login' }\"\n            class=\"panel-body\"\n          >\n            {{ $t(\"login.hint\") }}\n          </router-link>\n        </div>\n        <router-view />\n      </div>\n      <div id=\"notifs-column\" class=\"column -scrollable\" :class=\"{ '-show-scrollbar': showScrollbars }\"/>\n    </div>\n    <media-modal />\n    <shout-panel\n      v-if=\"currentUser && shout && !hideShoutbox\"\n      :floating=\"true\"\n      class=\"floating-shout mobile-hidden\"\n      :class=\"{ '-left': shoutboxPosition }\"\n    />\n    <MobilePostStatusButton />\n    <UserReportingModal />\n    <PostStatusModal />\n    <SettingsModal />\n    <div id=\"modal\" />\n    <GlobalNoticeList />\n  </div>\n</template>\n\n<script src=\"./App.js\"></script>\n<style lang=\"scss\" src=\"./App.scss\"></style>\n","<template>\n  <div class=\"user-panel\">\n    <div\n      v-if=\"signedIn\"\n      key=\"user-panel-signed\"\n      class=\"panel panel-default signed-in\"\n    >\n      <UserCard\n        :user-id=\"user.id\"\n        :hide-bio=\"true\"\n        rounded=\"top\"\n      />\n      <PostStatusForm />\n    </div>\n    <auth-form\n      v-else\n      key=\"user-panel\"\n    />\n  </div>\n</template>\n\n<script src=\"./user_panel.js\"></script>\n\n<style lang=\"scss\">\n.user-panel .signed-in {\n  overflow: visible;\n  z-index: 10;\n}\n</style>\n","<template>\n  <div class=\"login panel panel-default\">\n    <!-- Default panel contents -->\n\n    <div class=\"panel-heading\">\n      {{ $t('login.login') }}\n    </div>\n\n    <div class=\"panel-body\">\n      <form\n        class=\"login-form\"\n        @submit.prevent=\"submit\"\n      >\n        <template v-if=\"isPasswordAuth\">\n          <div class=\"form-group\">\n            <label for=\"username\">{{ $t('login.username') }}</label>\n            <input\n              id=\"username\"\n              v-model=\"user.username\"\n              :disabled=\"loggingIn\"\n              class=\"form-control\"\n              :placeholder=\"$t('login.placeholder')\"\n            >\n          </div>\n          <div class=\"form-group\">\n            <label for=\"password\">{{ $t('login.password') }}</label>\n            <input\n              id=\"password\"\n              ref=\"passwordInput\"\n              v-model=\"user.password\"\n              :disabled=\"loggingIn\"\n              class=\"form-control\"\n              type=\"password\"\n            >\n          </div>\n          <div class=\"form-group\">\n            <router-link :to=\"{name: 'password-reset'}\">\n              {{ $t('password_reset.forgot_password') }}\n            </router-link>\n          </div>\n        </template>\n\n        <div\n          v-if=\"isTokenAuth\"\n          class=\"form-group\"\n        >\n          <p>{{ $t('login.description') }}</p>\n        </div>\n\n        <div class=\"form-group\">\n          <div class=\"login-bottom\">\n            <div>\n              <router-link\n                v-if=\"registrationOpen\"\n                :to=\"{name: 'registration'}\"\n                class=\"register\"\n              >\n                {{ $t('login.register') }}\n              </router-link>\n            </div>\n            <button\n              :disabled=\"loggingIn\"\n              type=\"submit\"\n              class=\"btn button-default\"\n            >\n              {{ $t('login.login') }}\n            </button>\n          </div>\n        </div>\n      </form>\n    </div>\n\n    <div\n      v-if=\"error\"\n      class=\"form-group\"\n    >\n      <div class=\"alert error\">\n        {{ error }}\n        <button\n          class=\"button-unstyled\"\n          @click=\"clearError\"\n        >\n          <FAIcon\n            class=\"fa-scale-110 fa-old-padding\"\n            icon=\"times\"\n          />\n        </button>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./login_form.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.login-form {\n  display: flex;\n  flex-direction: column;\n  padding: 0.6em;\n\n  .btn {\n    min-height: 2em;\n    width: 10em;\n  }\n\n  .register {\n    flex: 1 1;\n  }\n\n  .login-bottom {\n    margin-top: 1.0em;\n    display: flex;\n    flex-direction: row;\n    align-items: center;\n    justify-content: space-between;\n  }\n\n  .form-group {\n    display: flex;\n    flex-direction: column;\n    padding: 0.3em 0.5em 0.6em;\n    line-height:24px;\n  }\n\n  .form-bottom {\n    display: flex;\n    padding: 0.5em;\n    height: 32px;\n\n    button {\n      width: 10em;\n    }\n\n    p {\n      margin: 0.35em;\n      padding: 0.35em;\n      display: flex;\n    }\n  }\n\n  .error {\n    text-align: center;\n\n    animation-name: shakeError;\n    animation-duration: 0.4s;\n    animation-timing-function: ease-in-out;\n  }\n}\n</style>\n","import { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport oauthApi from '../../services/new_api/oauth.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes\n)\n\nconst LoginForm = {\n  data: () => ({\n    user: {},\n    error: false\n  }),\n  computed: {\n    isPasswordAuth () { return this.requiredPassword },\n    isTokenAuth () { return this.requiredToken },\n    ...mapState({\n      registrationOpen: state => state.instance.registrationOpen,\n      instance: state => state.instance,\n      loggingIn: state => state.users.loggingIn,\n      oauth: state => state.oauth\n    }),\n    ...mapGetters(\n      'authFlow', ['requiredPassword', 'requiredToken', 'requiredMFA']\n    )\n  },\n  methods: {\n    ...mapMutations('authFlow', ['requireMFA']),\n    ...mapActions({ login: 'authFlow/login' }),\n    submit () {\n      this.isTokenAuth ? this.submitToken() : this.submitPassword()\n    },\n    submitToken () {\n      const { clientId, clientSecret } = this.oauth\n      const data = {\n        clientId,\n        clientSecret,\n        instance: this.instance.server,\n        commit: this.$store.commit\n      }\n\n      oauthApi.getOrCreateApp(data)\n        .then((app) => { oauthApi.login({ ...app, ...data }) })\n    },\n    submitPassword () {\n      const { clientId } = this.oauth\n      const data = {\n        clientId,\n        oauth: this.oauth,\n        instance: this.instance.server,\n        commit: this.$store.commit\n      }\n      this.error = false\n\n      oauthApi.getOrCreateApp(data).then((app) => {\n        oauthApi.getTokenWithCredentials(\n          {\n            ...app,\n            instance: data.instance,\n            username: this.user.username,\n            password: this.user.password\n          }\n        ).then((result) => {\n          if (result.error) {\n            if (result.error === 'mfa_required') {\n              this.requireMFA({ settings: result })\n            } else if (result.identifier === 'password_reset_required') {\n              this.$router.push({ name: 'password-reset', params: { passwordResetRequested: true } })\n            } else {\n              this.error = result.error\n              this.focusOnPasswordInput()\n            }\n            return\n          }\n          this.login(result).then(() => {\n            this.$router.push({ name: 'friends' })\n          })\n        })\n      })\n    },\n    clearError () { this.error = false },\n    focusOnPasswordInput () {\n      let passwordInput = this.$refs.passwordInput\n      passwordInput.focus()\n      passwordInput.setSelectionRange(0, passwordInput.value.length)\n    }\n  }\n}\n\nexport default LoginForm\n","import { render } from \"./login_form.vue?vue&type=template&id=9e104930\"\nimport script from \"./login_form.js?vue&type=script&lang=js\"\nexport * from \"./login_form.js?vue&type=script&lang=js\"\n\nimport \"./login_form.vue?vue&type=style&index=0&id=9e104930&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"login panel panel-default\">\n    <!-- Default panel contents -->\n\n    <div class=\"panel-heading\">\n      {{ $t('login.heading.recovery') }}\n    </div>\n\n    <div class=\"panel-body\">\n      <form\n        class=\"login-form\"\n        @submit.prevent=\"submit\"\n      >\n        <div class=\"form-group\">\n          <label for=\"code\">{{ $t('login.recovery_code') }}</label>\n          <input\n            id=\"code\"\n            v-model=\"code\"\n            class=\"form-control\"\n          >\n        </div>\n\n        <div class=\"form-group\">\n          <div class=\"login-bottom\">\n            <div>\n              <button\n                class=\"button-unstyled -link\"\n                type=\"button\"\n                @click.prevent=\"requireTOTP\"\n              >\n                {{ $t('login.enter_two_factor_code') }}\n              </button>\n              <br>\n              <button\n                class=\"button-unstyled -link\"\n                type=\"button\"\n                @click.prevent=\"abortMFA\"\n              >\n                {{ $t('general.cancel') }}\n              </button>\n            </div>\n            <button\n              type=\"submit\"\n              class=\"btn button-default\"\n            >\n              {{ $t('general.verify') }}\n            </button>\n          </div>\n        </div>\n      </form>\n    </div>\n\n    <div\n      v-if=\"error\"\n      class=\"form-group\"\n    >\n      <div class=\"alert error\">\n        {{ error }}\n        <button\n          class=\"button-unstyled\"\n          @click=\"clearError\"\n        >\n          <FAIcon\n            class=\"fa-scale-110 fa-old-padding\"\n            icon=\"times\"\n          />\n        </button>\n      </div>\n    </div>\n  </div>\n</template>\n<script src=\"./recovery_form.js\" ></script>\n","const verifyOTPCode = ({ clientId, clientSecret, instance, mfaToken, code }) => {\n  const url = `${instance}/oauth/mfa/challenge`\n  const form = new window.FormData()\n\n  form.append('client_id', clientId)\n  form.append('client_secret', clientSecret)\n  form.append('mfa_token', mfaToken)\n  form.append('code', code)\n  form.append('challenge_type', 'totp')\n\n  return window.fetch(url, {\n    method: 'POST',\n    body: form\n  }).then((data) => data.json())\n}\n\nconst verifyRecoveryCode = ({ clientId, clientSecret, instance, mfaToken, code }) => {\n  const url = `${instance}/oauth/mfa/challenge`\n  const form = new window.FormData()\n\n  form.append('client_id', clientId)\n  form.append('client_secret', clientSecret)\n  form.append('mfa_token', mfaToken)\n  form.append('code', code)\n  form.append('challenge_type', 'recovery')\n\n  return window.fetch(url, {\n    method: 'POST',\n    body: form\n  }).then((data) => data.json())\n}\n\nconst mfa = {\n  verifyOTPCode,\n  verifyRecoveryCode\n}\n\nexport default mfa\n","import mfaApi from '../../services/new_api/mfa.js'\nimport { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes\n)\n\nexport default {\n  data: () => ({\n    code: null,\n    error: false\n  }),\n  computed: {\n    ...mapGetters({\n      authSettings: 'authFlow/settings'\n    }),\n    ...mapState({\n      instance: 'instance',\n      oauth: 'oauth'\n    })\n  },\n  methods: {\n    ...mapMutations('authFlow', ['requireTOTP', 'abortMFA']),\n    ...mapActions({ login: 'authFlow/login' }),\n    clearError () { this.error = false },\n    submit () {\n      const { clientId, clientSecret } = this.oauth\n\n      const data = {\n        clientId,\n        clientSecret,\n        instance: this.instance.server,\n        mfaToken: this.authSettings.mfa_token,\n        code: this.code\n      }\n\n      mfaApi.verifyRecoveryCode(data).then((result) => {\n        if (result.error) {\n          this.error = result.error\n          this.code = null\n          return\n        }\n\n        this.login(result).then(() => {\n          this.$router.push({ name: 'friends' })\n        })\n      })\n    }\n  }\n}\n","import { render } from \"./recovery_form.vue?vue&type=template&id=13ff0678\"\nimport script from \"./recovery_form.js?vue&type=script&lang=js\"\nexport * from \"./recovery_form.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"login panel panel-default\">\n    <!-- Default panel contents -->\n\n    <div class=\"panel-heading\">\n      {{ $t('login.heading.totp') }}\n    </div>\n\n    <div class=\"panel-body\">\n      <form\n        class=\"login-form\"\n        @submit.prevent=\"submit\"\n      >\n        <div class=\"form-group\">\n          <label for=\"code\">\n            {{ $t('login.authentication_code') }}\n          </label>\n          <input\n            id=\"code\"\n            v-model=\"code\"\n            class=\"form-control\"\n          >\n        </div>\n\n        <div class=\"form-group\">\n          <div class=\"login-bottom\">\n            <div>\n              <button\n                class=\"button-unstyled -link\"\n                type=\"button\"\n                @click.prevent=\"requireRecovery\"\n              >\n                {{ $t('login.enter_recovery_code') }}\n              </button>\n              <br>\n              <button\n                class=\"button-unstyled -link\"\n                type=\"button\"\n                @click.prevent=\"abortMFA\"\n              >\n                {{ $t('general.cancel') }}\n              </button>\n            </div>\n            <button\n              type=\"submit\"\n              class=\"btn button-default\"\n            >\n              {{ $t('general.verify') }}\n            </button>\n          </div>\n        </div>\n      </form>\n    </div>\n\n    <div\n      v-if=\"error\"\n      class=\"form-group\"\n    >\n      <div class=\"alert error\">\n        {{ error }}\n        <button\n          class=\"button-unstyled\"\n          @click=\"clearError\"\n        >\n          <FAIcon\n            size=\"lg\"\n            class=\"fa-scale-110 fa-old-padding\"\n            icon=\"times\"\n          />\n        </button>\n      </div>\n    </div>\n  </div>\n</template>\n<script src=\"./totp_form.js\"></script>\n","import mfaApi from '../../services/new_api/mfa.js'\nimport { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes\n)\n\nexport default {\n  data: () => ({\n    code: null,\n    error: false\n  }),\n  computed: {\n    ...mapGetters({\n      authSettings: 'authFlow/settings'\n    }),\n    ...mapState({\n      instance: 'instance',\n      oauth: 'oauth'\n    })\n  },\n  methods: {\n    ...mapMutations('authFlow', ['requireRecovery', 'abortMFA']),\n    ...mapActions({ login: 'authFlow/login' }),\n    clearError () { this.error = false },\n    submit () {\n      const { clientId, clientSecret } = this.oauth\n\n      const data = {\n        clientId,\n        clientSecret,\n        instance: this.instance.server,\n        mfaToken: this.authSettings.mfa_token,\n        code: this.code\n      }\n\n      mfaApi.verifyOTPCode(data).then((result) => {\n        if (result.error) {\n          this.error = result.error\n          this.code = null\n          return\n        }\n\n        this.login(result).then(() => {\n          this.$router.push({ name: 'friends' })\n        })\n      })\n    }\n  }\n}\n","import { render } from \"./totp_form.vue?vue&type=template&id=6fb04413\"\nimport script from \"./totp_form.js?vue&type=script&lang=js\"\nexport * from \"./totp_form.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { h, resolveComponent } from 'vue'\nimport LoginForm from '../login_form/login_form.vue'\nimport MFARecoveryForm from '../mfa_form/recovery_form.vue'\nimport MFATOTPForm from '../mfa_form/totp_form.vue'\nimport { mapGetters } from 'vuex'\n\nconst AuthForm = {\n  name: 'AuthForm',\n  render () {\n    return h(resolveComponent(this.authForm))\n  },\n  computed: {\n    authForm () {\n      if (this.requiredTOTP) { return 'MFATOTPForm' }\n      if (this.requiredRecovery) { return 'MFARecoveryForm' }\n      return 'LoginForm'\n    },\n    ...mapGetters('authFlow', ['requiredTOTP', 'requiredRecovery'])\n  },\n  components: {\n    MFARecoveryForm,\n    MFATOTPForm,\n    LoginForm\n  }\n}\n\nexport default AuthForm\n","import AuthForm from '../auth_form/auth_form.js'\nimport PostStatusForm from '../post_status_form/post_status_form.vue'\nimport UserCard from '../user_card/user_card.vue'\nimport { mapState } from 'vuex'\n\nconst UserPanel = {\n  computed: {\n    signedIn () { return this.user },\n    ...mapState({ user: state => state.users.currentUser })\n  },\n  components: {\n    AuthForm,\n    PostStatusForm,\n    UserCard\n  }\n}\n\nexport default UserPanel\n","import { render } from \"./user_panel.vue?vue&type=template&id=460aaa4a\"\nimport script from \"./user_panel.js?vue&type=script&lang=js\"\nexport * from \"./user_panel.js?vue&type=script&lang=js\"\n\nimport \"./user_panel.vue?vue&type=style&index=0&id=460aaa4a&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"NavPanel\">\n    <div class=\"panel panel-default\">\n      <ul>\n        <li v-if=\"currentUser || !privateMode\">\n          <button\n            class=\"button-unstyled menu-item\"\n            @click=\"toggleTimelines\"\n          >\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110\"\n              icon=\"stream\"\n            />{{ $t(\"nav.timelines\") }}\n            <FAIcon\n              class=\"timelines-chevron\"\n              fixed-width\n              :icon=\"showTimelines ? 'chevron-up' : 'chevron-down'\"\n            />\n          </button>\n          <div\n            v-show=\"showTimelines\"\n            class=\"timelines-background\"\n          >\n            <TimelineMenuContent class=\"timelines\" />\n          </div>\n        </li>\n        <li v-if=\"currentUser\">\n          <router-link\n            class=\"menu-item\"\n            :to=\"{ name: 'interactions', params: { username: currentUser.screen_name } }\"\n          >\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110\"\n              icon=\"bell\"\n            />{{ $t(\"nav.interactions\") }}\n          </router-link>\n        </li>\n        <li v-if=\"currentUser && pleromaChatMessagesAvailable\">\n          <router-link\n            class=\"menu-item\"\n            :to=\"{ name: 'chats', params: { username: currentUser.screen_name } }\"\n          >\n            <div\n              v-if=\"unreadChatCount\"\n              class=\"badge badge-notification\"\n            >\n              {{ unreadChatCount }}\n            </div>\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110\"\n              icon=\"comments\"\n            />{{ $t(\"nav.chats\") }}\n          </router-link>\n        </li>\n        <li v-if=\"currentUser && currentUser.locked\">\n          <router-link\n            class=\"menu-item\"\n            :to=\"{ name: 'friend-requests' }\"\n          >\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110\"\n              icon=\"user-plus\"\n            />{{ $t(\"nav.friend_requests\") }}\n            <span\n              v-if=\"followRequestCount > 0\"\n              class=\"badge badge-notification\"\n            >\n              {{ followRequestCount }}\n            </span>\n          </router-link>\n        </li>\n        <li>\n          <router-link\n            class=\"menu-item\"\n            :to=\"{ name: 'about' }\"\n          >\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110\"\n              icon=\"info-circle\"\n            />{{ $t(\"nav.about\") }}\n          </router-link>\n        </li>\n      </ul>\n    </div>\n  </div>\n</template>\n\n<script src=\"./nav_panel.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.NavPanel {\n  .panel {\n    overflow: hidden;\n    box-shadow: var(--panelShadow);\n  }\n\n  ul {\n    list-style: none;\n    margin: 0;\n    padding: 0;\n  }\n\n  li {\n    position: relative;\n    border-bottom: 1px solid;\n    border-color: $fallback--border;\n    border-color: var(--border, $fallback--border);\n    padding: 0;\n\n    &:first-child .menu-item {\n      border-top-right-radius: $fallback--panelRadius;\n      border-top-right-radius: var(--panelRadius, $fallback--panelRadius);\n      border-top-left-radius: $fallback--panelRadius;\n      border-top-left-radius: var(--panelRadius, $fallback--panelRadius);\n    }\n\n    &:last-child .menu-item {\n      border-bottom-right-radius: $fallback--panelRadius;\n      border-bottom-right-radius: var(--panelRadius, $fallback--panelRadius);\n      border-bottom-left-radius: $fallback--panelRadius;\n      border-bottom-left-radius: var(--panelRadius, $fallback--panelRadius);\n    }\n  }\n\n  li:last-child {\n    border: none;\n  }\n\n  .menu-item {\n    display: block;\n    box-sizing: border-box;\n    height: 3.5em;\n    line-height: 3.5em;\n    padding: 0 1em;\n    width: 100%;\n    color: $fallback--link;\n    color: var(--link, $fallback--link);\n\n    &:hover {\n      background-color: $fallback--lightBg;\n      background-color: var(--selectedMenu, $fallback--lightBg);\n      color: $fallback--link;\n      color: var(--selectedMenuText, $fallback--link);\n      --faint: var(--selectedMenuFaintText, $fallback--faint);\n      --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n      --lightText: var(--selectedMenuLightText, $fallback--lightText);\n      --icon: var(--selectedMenuIcon, $fallback--icon);\n    }\n\n    &.router-link-active {\n      font-weight: bolder;\n      background-color: $fallback--lightBg;\n      background-color: var(--selectedMenu, $fallback--lightBg);\n      color: $fallback--text;\n      color: var(--selectedMenuText, $fallback--text);\n      --faint: var(--selectedMenuFaintText, $fallback--faint);\n      --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n      --lightText: var(--selectedMenuLightText, $fallback--lightText);\n      --icon: var(--selectedMenuIcon, $fallback--icon);\n\n      &:hover {\n        text-decoration: underline;\n      }\n    }\n  }\n\n  .timelines-chevron {\n    margin-left: 0.8em;\n    font-size: 1.1em;\n  }\n\n  .timelines-background {\n    padding: 0 0 0 0.6em;\n    background-color: $fallback--lightBg;\n    background-color: var(--selectedMenu, $fallback--lightBg);\n    border-top: 1px solid;\n    border-color: $fallback--border;\n    border-color: var(--border, $fallback--border);\n  }\n\n  .timelines {\n    background-color: $fallback--bg;\n    background-color: var(--bg, $fallback--bg);\n  }\n\n  .fa-scale-110 {\n    margin-right: 0.8em;\n  }\n\n  .badge {\n    position: absolute;\n    right: 0.6rem;\n    top: 1.25em;\n  }\n}\n</style>\n","import { mapState } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faUsers,\n  faGlobe,\n  faBookmark,\n  faEnvelope,\n  faHome\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faUsers,\n  faGlobe,\n  faBookmark,\n  faEnvelope,\n  faHome\n)\n\nconst TimelineMenuContent = {\n  computed: {\n    ...mapState({\n      currentUser: state => state.users.currentUser,\n      privateMode: state => state.instance.private,\n      federating: state => state.instance.federating\n    })\n  }\n}\n\nexport default TimelineMenuContent\n","import { render } from \"./timeline_menu_content.vue?vue&type=template&id=9e3b525a\"\nimport script from \"./timeline_menu_content.js?vue&type=script&lang=js\"\nexport * from \"./timeline_menu_content.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <ul>\n    <li v-if=\"currentUser\">\n      <router-link\n        class=\"menu-item\"\n        :to=\"{ name: 'friends' }\"\n      >\n        <FAIcon\n          fixed-width\n          class=\"fa-scale-110 fa-old-padding \"\n          icon=\"home\"\n        />{{ $t(\"nav.home_timeline\") }}\n      </router-link>\n    </li>\n    <li v-if=\"currentUser || !privateMode\">\n      <router-link\n        class=\"menu-item\"\n        :to=\"{ name: 'public-timeline' }\"\n      >\n        <FAIcon\n          fixed-width\n          class=\"fa-scale-110 fa-old-padding \"\n          icon=\"users\"\n        />{{ $t(\"nav.public_tl\") }}\n      </router-link>\n    </li>\n    <li v-if=\"federating && (currentUser || !privateMode)\">\n      <router-link\n        class=\"menu-item\"\n        :to=\"{ name: 'public-external-timeline' }\"\n      >\n        <FAIcon\n          fixed-width\n          class=\"fa-scale-110 fa-old-padding \"\n          icon=\"globe\"\n        />{{ $t(\"nav.twkn\") }}\n      </router-link>\n    </li>\n    <li v-if=\"currentUser\">\n      <router-link\n        class=\"menu-item\"\n        :to=\"{ name: 'bookmarks'}\"\n      >\n        <FAIcon\n          fixed-width\n          class=\"fa-scale-110 fa-old-padding \"\n          icon=\"bookmark\"\n        />{{ $t(\"nav.bookmarks\") }}\n      </router-link>\n    </li>\n    <li v-if=\"currentUser\">\n      <router-link\n        class=\"menu-item\"\n        :to=\"{ name: 'dms', params: { username: currentUser.screen_name } }\"\n      >\n        <FAIcon\n          fixed-width\n          class=\"fa-scale-110 fa-old-padding \"\n          icon=\"envelope\"\n        />{{ $t(\"nav.dms\") }}\n      </router-link>\n    </li>\n  </ul>\n</template>\n\n<script src=\"./timeline_menu_content.js\" ></script>\n","import TimelineMenuContent from '../timeline_menu/timeline_menu_content.vue'\nimport { mapState, mapGetters } from 'vuex'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faUsers,\n  faGlobe,\n  faBookmark,\n  faEnvelope,\n  faChevronDown,\n  faChevronUp,\n  faComments,\n  faBell,\n  faInfoCircle,\n  faStream\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faUsers,\n  faGlobe,\n  faBookmark,\n  faEnvelope,\n  faChevronDown,\n  faChevronUp,\n  faComments,\n  faBell,\n  faInfoCircle,\n  faStream\n)\n\nconst NavPanel = {\n  created () {\n    if (this.currentUser && this.currentUser.locked) {\n      this.$store.dispatch('startFetchingFollowRequests')\n    }\n  },\n  components: {\n    TimelineMenuContent\n  },\n  data () {\n    return {\n      showTimelines: false\n    }\n  },\n  methods: {\n    toggleTimelines () {\n      this.showTimelines = !this.showTimelines\n    }\n  },\n  computed: {\n    ...mapState({\n      currentUser: state => state.users.currentUser,\n      followRequestCount: state => state.api.followRequests.length,\n      privateMode: state => state.instance.private,\n      federating: state => state.instance.federating,\n      pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable\n    }),\n    ...mapGetters(['unreadChatCount'])\n  }\n}\n\nexport default NavPanel\n","import { render } from \"./nav_panel.vue?vue&type=template&id=fdfe5e92\"\nimport script from \"./nav_panel.js?vue&type=script&lang=js\"\nexport * from \"./nav_panel.js?vue&type=script&lang=js\"\n\nimport \"./nav_panel.vue?vue&type=style&index=0&id=fdfe5e92&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"instance-specific-panel\">\n    <div class=\"panel panel-default\">\n      <div class=\"panel-body\">\n        <!-- eslint-disable vue/no-v-html -->\n        <div v-html=\"instanceSpecificPanelContent\" />\n        <!-- eslint-enable vue/no-v-html -->\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./instance_specific_panel.js\" ></script>\n","const InstanceSpecificPanel = {\n  computed: {\n    instanceSpecificPanelContent () {\n      return this.$store.state.instance.instanceSpecificPanelContent\n    }\n  }\n}\n\nexport default InstanceSpecificPanel\n","import { render } from \"./instance_specific_panel.vue?vue&type=template&id=5b01187b\"\nimport script from \"./instance_specific_panel.js?vue&type=script&lang=js\"\nexport * from \"./instance_specific_panel.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"features-panel\">\n    <div class=\"panel panel-default base01-background\">\n      <div class=\"panel-heading timeline-heading base02-background base04\">\n        <div class=\"title\">\n          {{ $t('features_panel.title') }}\n        </div>\n      </div>\n      <div class=\"panel-body features-panel\">\n        <ul>\n          <li v-if=\"shout\">\n            {{ $t('features_panel.shout') }}\n          </li>\n          <li v-if=\"pleromaChatMessages\">\n            {{ $t('features_panel.pleroma_chat_messages') }}\n          </li>\n          <li v-if=\"gopher\">\n            {{ $t('features_panel.gopher') }}\n          </li>\n          <li v-if=\"whoToFollow\">\n            {{ $t('features_panel.who_to_follow') }}\n          </li>\n          <li v-if=\"mediaProxy\">\n            {{ $t('features_panel.media_proxy') }}\n          </li>\n          <li>{{ $t('features_panel.scope_options') }}</li>\n          <li>{{ $t('features_panel.text_limit') }} = {{ textlimit }}</li>\n          <li>{{ $t('features_panel.upload_limit') }} = {{ uploadlimit.num }} {{ $t('upload.file_size_units.' + uploadlimit.unit) }}</li>\n        </ul>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./features_panel.js\" ></script>\n\n<style lang=\"scss\">\n  .features-panel li {\n    line-height: 24px;\n  }\n</style>\n","import fileSizeFormatService from '../../services/file_size_format/file_size_format.js'\n\nconst FeaturesPanel = {\n  computed: {\n    shout: function () { return this.$store.state.instance.shoutAvailable },\n    pleromaChatMessages: function () { return this.$store.state.instance.pleromaChatMessagesAvailable },\n    gopher: function () { return this.$store.state.instance.gopherAvailable },\n    whoToFollow: function () { return this.$store.state.instance.suggestionsEnabled },\n    mediaProxy: function () { return this.$store.state.instance.mediaProxyAvailable },\n    minimalScopesMode: function () { return this.$store.state.instance.minimalScopesMode },\n    textlimit: function () { return this.$store.state.instance.textlimit },\n    uploadlimit: function () { return fileSizeFormatService.fileSizeFormat(this.$store.state.instance.uploadlimit) }\n  }\n}\n\nexport default FeaturesPanel\n","import { render } from \"./features_panel.vue?vue&type=template&id=9d4c35f4\"\nimport script from \"./features_panel.js?vue&type=script&lang=js\"\nexport * from \"./features_panel.js?vue&type=script&lang=js\"\n\nimport \"./features_panel.vue?vue&type=style&index=0&id=9d4c35f4&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"who-to-follow-panel\">\n    <div class=\"panel panel-default base01-background\">\n      <div class=\"panel-heading timeline-heading base02-background base04\">\n        <div class=\"title\">\n          {{ $t('who_to_follow.who_to_follow') }}\n        </div>\n      </div>\n      <div class=\"who-to-follow\">\n        <p\n          v-for=\"user in usersToFollow\"\n          :key=\"user.id\"\n          class=\"who-to-follow-items\"\n        >\n          <img :src=\"user.img\">\n          <router-link :to=\"userProfileLink(user.id, user.name)\">\n            {{ user.name }}\n          </router-link><br>\n        </p>\n        <p class=\"who-to-follow-more\">\n          <router-link :to=\"{ name: 'who-to-follow' }\">\n            {{ $t('who_to_follow.more') }}\n          </router-link>\n        </p>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./who_to_follow_panel.js\" ></script>\n\n<style lang=\"scss\">\n  .who-to-follow * {\n    vertical-align: middle;\n  }\n  .who-to-follow img {\n    width: 32px;\n    height: 32px;\n  }\n  .who-to-follow {\n    padding: 0em 1em;\n    margin: 0px;\n  }\n  .who-to-follow-items {\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    padding: 0px;\n    margin: 1em 0em;\n  }\n  .who-to-follow-more {\n    padding: 0px;\n    margin: 1em 0em;\n    text-align: center;\n  }\n</style>\n","import apiService from '../../services/api/api.service.js'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { shuffle } from 'lodash'\n\nfunction showWhoToFollow (panel, reply) {\n  const shuffled = shuffle(reply)\n\n  panel.usersToFollow.forEach((toFollow, index) => {\n    let user = shuffled[index]\n    let img = user.avatar || this.$store.state.instance.defaultAvatar\n    let name = user.acct\n\n    toFollow.img = img\n    toFollow.name = name\n\n    panel.$store.state.api.backendInteractor.fetchUser({ id: name })\n      .then((externalUser) => {\n        if (!externalUser.error) {\n          panel.$store.commit('addNewUsers', [externalUser])\n          toFollow.id = externalUser.id\n        }\n      })\n  })\n}\n\nfunction getWhoToFollow (panel) {\n  var credentials = panel.$store.state.users.currentUser.credentials\n  if (credentials) {\n    panel.usersToFollow.forEach(toFollow => {\n      toFollow.name = 'Loading...'\n    })\n    apiService.suggestions({ credentials: credentials })\n      .then((reply) => {\n        showWhoToFollow(panel, reply)\n      })\n  }\n}\n\nconst WhoToFollowPanel = {\n  data: () => ({\n    usersToFollow: []\n  }),\n  computed: {\n    user: function () {\n      return this.$store.state.users.currentUser.screen_name\n    },\n    suggestionsEnabled () {\n      return this.$store.state.instance.suggestionsEnabled\n    }\n  },\n  methods: {\n    userProfileLink (id, name) {\n      return generateProfileLink(id, name, this.$store.state.instance.restrictedNicknames)\n    }\n  },\n  watch: {\n    user: function (user, oldUser) {\n      if (this.suggestionsEnabled) {\n        getWhoToFollow(this)\n      }\n    }\n  },\n  mounted:\n    function () {\n      this.usersToFollow = new Array(3).fill().map(x => (\n        {\n          img: this.$store.state.instance.defaultAvatar,\n          name: '',\n          id: 0\n        }\n      ))\n      if (this.suggestionsEnabled) {\n        getWhoToFollow(this)\n      }\n    }\n}\n\nexport default WhoToFollowPanel\n","import { render } from \"./who_to_follow_panel.vue?vue&type=template&id=b4d31272\"\nimport script from \"./who_to_follow_panel.js?vue&type=script&lang=js\"\nexport * from \"./who_to_follow_panel.js?vue&type=script&lang=js\"\n\nimport \"./who_to_follow_panel.vue?vue&type=style&index=0&id=b4d31272&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    v-if=\"!collapsed || !floating\"\n    class=\"shout-panel\"\n  >\n    <div class=\"panel panel-default\">\n      <div\n        class=\"panel-heading timeline-heading\"\n        :class=\"{ 'shout-heading': floating }\"\n        @click.stop.prevent=\"togglePanel\"\n      >\n        <div class=\"title\">\n          {{ $t('shoutbox.title') }}\n          <FAIcon\n            v-if=\"floating\"\n            icon=\"times\"\n            class=\"close-icon\"\n          />\n        </div>\n      </div>\n      <div class=\"shout-window\">\n        <div\n          v-for=\"message in messages\"\n          :key=\"message.id\"\n          class=\"shout-message\"\n        >\n          <span class=\"shout-avatar\">\n            <img :src=\"message.author.avatar\">\n          </span>\n          <div class=\"shout-content\">\n            <router-link\n              class=\"shout-name\"\n              :to=\"userProfileLink(message.author)\"\n            >\n              {{ message.author.username }}\n            </router-link>\n            <br>\n            <span class=\"shout-text\">\n              {{ message.text }}\n            </span>\n          </div>\n        </div>\n      </div>\n      <div class=\"shout-input\">\n        <textarea\n          v-model=\"currentMessage\"\n          class=\"shout-input-textarea\"\n          rows=\"1\"\n          @keyup.enter=\"submit(currentMessage)\"\n        />\n      </div>\n    </div>\n  </div>\n  <div\n    v-else\n    class=\"shout-panel\"\n  >\n    <div class=\"panel panel-default\">\n      <div\n        class=\"panel-heading -stub timeline-heading shout-heading\"\n        @click.stop.prevent=\"togglePanel\"\n      >\n        <div class=\"title\">\n          <FAIcon\n            class=\"icon\"\n            icon=\"bullhorn\"\n          />\n          {{ $t('shoutbox.title') }}\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./shout_panel.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.floating-shout {\n  position: fixed;\n  bottom: 0.5em;\n  z-index: 1000;\n  max-width: 25em;\n\n  &.-left {\n    left: 0.5em;\n  }\n\n  &:not(.-left) {\n    right: 0.5em;\n  }\n}\n\n.shout-panel {\n  .shout-heading {\n    cursor: pointer;\n\n    .icon {\n      color: $fallback--text;\n      color: var(--panelText, $fallback--text);\n      margin-right: 0.5em;\n    }\n\n    .title {\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n  }\n\n  .shout-window {\n    overflow-y: auto;\n    overflow-x: hidden;\n    max-height: 20em;\n  }\n\n  .shout-window-container {\n    height: 100%;\n  }\n\n  .shout-message {\n    display: flex;\n    padding: 0.2em 0.5em;\n  }\n\n  .shout-avatar {\n    img {\n      height: 24px;\n      width: 24px;\n      border-radius: $fallback--avatarRadius;\n      border-radius: var(--avatarRadius, $fallback--avatarRadius);\n      margin-right: 0.5em;\n      margin-top: 0.25em;\n    }\n  }\n\n  .shout-input {\n    display: flex;\n\n    textarea {\n      flex: 1;\n      margin: 0.6em;\n      min-height: 3.5em;\n      resize: none;\n    }\n  }\n\n  .shout-panel {\n    .title {\n      display: flex;\n      justify-content: space-between;\n    }\n  }\n}\n</style>\n","import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faBullhorn,\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faBullhorn,\n  faTimes\n)\n\nconst shoutPanel = {\n  props: [ 'floating' ],\n  data () {\n    return {\n      currentMessage: '',\n      channel: null,\n      collapsed: true\n    }\n  },\n  computed: {\n    messages () {\n      return this.$store.state.shout.messages\n    }\n  },\n  methods: {\n    submit (message) {\n      this.$store.state.shout.channel.push('new_msg', { text: message }, 10000)\n      this.currentMessage = ''\n    },\n    togglePanel () {\n      this.collapsed = !this.collapsed\n    },\n    userProfileLink (user) {\n      return generateProfileLink(user.id, user.username, this.$store.state.instance.restrictedNicknames)\n    }\n  },\n  watch: {\n    messages (newVal) {\n      const scrollEl = this.$el.querySelector('.chat-window')\n      if (!scrollEl) return\n      if (scrollEl.scrollTop + scrollEl.offsetHeight + 20 > scrollEl.scrollHeight) {\n        this.$nextTick(() => {\n          if (!scrollEl) return\n          scrollEl.scrollTop = scrollEl.scrollHeight - scrollEl.offsetHeight\n        })\n      }\n    }\n  }\n}\n\nexport default shoutPanel\n","import { render } from \"./shout_panel.vue?vue&type=template&id=3464bd9c\"\nimport script from \"./shout_panel.js?vue&type=script&lang=js\"\nexport * from \"./shout_panel.js?vue&type=script&lang=js\"\n\nimport \"./shout_panel.vue?vue&type=style&index=0&id=3464bd9c&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Modal\n    :is-open=\"modalActivated\"\n    class=\"settings-modal\"\n    :class=\"{ peek: modalPeeked }\"\n    :no-background=\"modalPeeked\"\n  >\n    <div class=\"settings-modal-panel panel\">\n      <div class=\"panel-heading\">\n        <span class=\"title\">\n          {{ $t('settings.settings') }}\n        </span>\n        <transition name=\"fade\">\n          <div\n            v-if=\"currentSaveStateNotice\"\n            class=\"alert\"\n            :class=\"{ transparent: !currentSaveStateNotice.error, error: currentSaveStateNotice.error}\"\n            @click.prevent\n          >\n            {{ currentSaveStateNotice.error ? $t('settings.saving_err') : $t('settings.saving_ok') }}\n          </div>\n        </transition>\n        <button\n          class=\"btn button-default\"\n          :title=\"$t('general.peek')\"\n          @click=\"peekModal\"\n        >\n          <FAIcon\n            :icon=\"['far', 'window-minimize']\"\n            fixed-width\n          />\n        </button>\n        <button\n          class=\"btn button-default\"\n          :title=\"$t('general.close')\"\n          @click=\"closeModal\"\n        >\n          <FAIcon\n            icon=\"times\"\n            fixed-width\n          />\n        </button>\n      </div>\n      <div class=\"panel-body\">\n        <SettingsModalContent v-if=\"modalOpenedOnce\" />\n      </div>\n      <div class=\"panel-footer settings-footer\">\n        <Popover\n          class=\"export\"\n          trigger=\"click\"\n          placement=\"top\"\n          :offset=\"{ y: 5, x: 5 }\"\n          :bound-to=\"{ x: 'container' }\"\n          remove-padding\n        >\n          <template v-slot:trigger>\n            <button\n              class=\"btn button-default\"\n              :title=\"$t('general.close')\"\n            >\n              <span>{{ $t(\"settings.file_export_import.backup_restore\") }}</span>\n              {{ ' ' }}\n              <FAIcon\n                icon=\"chevron-down\"\n              />\n            </button>\n          </template>\n          <template v-slot:content=\"{close}\">\n            <div class=\"dropdown-menu\">\n              <button\n                class=\"button-default dropdown-item dropdown-item-icon\"\n                @click.prevent=\"backup\"\n                @click=\"close\"\n              >\n                <FAIcon\n                  icon=\"file-download\"\n                  fixed-width\n                /><span>{{ $t(\"settings.file_export_import.backup_settings\") }}</span>\n              </button>\n              <button\n                class=\"button-default dropdown-item dropdown-item-icon\"\n                @click.prevent=\"backupWithTheme\"\n                @click=\"close\"\n              >\n                <FAIcon\n                  icon=\"file-download\"\n                  fixed-width\n                /><span>{{ $t(\"settings.file_export_import.backup_settings_theme\") }}</span>\n              </button>\n              <button\n                class=\"button-default dropdown-item dropdown-item-icon\"\n                @click.prevent=\"restore\"\n                @click=\"close\"\n              >\n                <FAIcon\n                  icon=\"file-upload\"\n                  fixed-width\n                /><span>{{ $t(\"settings.file_export_import.restore_settings\") }}</span>\n              </button>\n            </div>\n          </template>\n        </Popover>\n\n        <Checkbox\n          :model-value=\"!!expertLevel\"\n          @update:modelValue=\"expertLevel = Number($event)\"\n        >\n          {{ $t(\"settings.expert_mode\") }}\n        </Checkbox>\n        <span\n          id=\"unscrolled-content\"\n          class=\"extra-content\"\n        />\n      </div>\n    </div>\n  </Modal>\n</template>\n\n<script src=\"./settings_modal.js\"></script>\n\n<style src=\"./settings_modal.scss\" lang=\"scss\"></style>\n","<template>\n  <div\n    v-show=\"isOpen\"\n    v-body-scroll-lock=\"isOpen && !noBackground\"\n    class=\"modal-view\"\n    :class=\"classes\"\n    @click.self=\"$emit('backdropClicked')\"\n  >\n    <slot />\n  </div>\n</template>\n\n<script>\nexport default {\n  props: {\n    isOpen: {\n      type: Boolean,\n      default: true\n    },\n    noBackground: {\n      type: Boolean,\n      default: false\n    }\n  },\n  computed: {\n    classes () {\n      return {\n        'modal-background': !this.noBackground,\n        'open': this.isOpen\n      }\n    }\n  }\n}\n</script>\n\n<style lang=\"scss\">\n.modal-view {\n  z-index: 2000;\n  position: fixed;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  overflow: auto;\n  pointer-events: none;\n  animation-duration: 0.2s;\n  animation-name: modal-background-fadein;\n  opacity: 0;\n\n  > * {\n    pointer-events: initial;\n  }\n\n  &.modal-background {\n    pointer-events: initial;\n    background-color: rgba(0, 0, 0, 0.5);\n  }\n\n  &.open {\n    opacity: 1;\n  }\n}\n\n@keyframes modal-background-fadein {\n  from {\n    background-color: rgba(0, 0, 0, 0);\n  }\n  to {\n    background-color: rgba(0, 0, 0, 0.5);\n  }\n}\n</style>\n","import { render } from \"./modal.vue?vue&type=template&id=1b320182\"\nimport script from \"./modal.vue?vue&type=script&lang=js\"\nexport * from \"./modal.vue?vue&type=script&lang=js\"\n\nimport \"./modal.vue?vue&type=style&index=0&id=1b320182&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"panel-loading\">\n    <span class=\"loading-text\">\n      <FAIcon\n        icon=\"circle-notch\"\n        spin\n        size=\"3x\"\n      />\n      {{ $t('general.loading') }}\n    </span>\n  </div>\n</template>\n\n<script>\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch\n)\n\nexport default {}\n</script>\n\n<style lang=\"scss\">\n@import 'src/_variables.scss';\n\n.panel-loading {\n  display: flex;\n  height: 100%;\n  align-items: center;\n  justify-content: center;\n  font-size: 2em;\n  color: $fallback--text;\n  color: var(--text, $fallback--text);\n  .loading-text svg {\n    line-height: 0;\n    vertical-align: middle;\n    color: $fallback--text;\n    color: var(--text, $fallback--text);\n  }\n}\n</style>\n","import { render } from \"./panel_loading.vue?vue&type=template&id=595215a2\"\nimport script from \"./panel_loading.vue?vue&type=script&lang=js\"\nexport * from \"./panel_loading.vue?vue&type=script&lang=js\"\n\nimport \"./panel_loading.vue?vue&type=style&index=0&id=595215a2&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"async-component-error\">\n    <div>\n      <h4>\n        {{ $t('general.generic_error') }}\n      </h4>\n      <p>\n        {{ $t('general.error_retry') }}\n      </p>\n      <button\n        class=\"btn button-default\"\n        @click=\"retry\"\n      >\n        {{ $t('general.retry') }}\n      </button>\n    </div>\n  </div>\n</template>\n\n<script>\nexport default {\n  emits: ['resetAsyncComponent'],\n  methods: {\n    retry () {\n      this.$emit('resetAsyncComponent')\n    }\n  }\n}\n</script>\n\n<style lang=\"scss\">\n.async-component-error {\n  display: flex;\n  height: 100%;\n  align-items: center;\n  justify-content: center;\n  .btn {\n    margin: .5em;\n    padding: .5em 2em;\n  }\n}\n</style>\n","import { render } from \"./async_component_error.vue?vue&type=template&id=26dcc164\"\nimport script from \"./async_component_error.vue?vue&type=script&lang=js\"\nexport * from \"./async_component_error.vue?vue&type=script&lang=js\"\n\nimport \"./async_component_error.vue?vue&type=style&index=0&id=26dcc164&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineAsyncComponent, shallowReactive, h } from 'vue'\n\n/* By default async components don't have any way to recover, if component is\n * failed, it is failed forever. This helper tries to remedy that by recreating\n * async component when retry is requested (by user). You need to emit the\n * `resetAsyncComponent` event from child to reset the component. Generally,\n * this should be done from error component but could be done from loading or\n * actual target component itself if needs to be.\n */\nfunction getResettableAsyncComponent (asyncComponent, options) {\n  const asyncComponentFactory = () => () => defineAsyncComponent({\n    loader: asyncComponent,\n    ...options\n  })\n\n  const observe = shallowReactive({ c: asyncComponentFactory() })\n\n  return {\n    render () {\n      //  emit event resetAsyncComponent to reloading\n      return h(observe.c(), {\n        onResetAsyncComponent () {\n          observe.c = asyncComponentFactory()\n        }\n      })\n    }\n  }\n}\n\nexport default getResettableAsyncComponent\n","import Modal from 'src/components/modal/modal.vue'\nimport PanelLoading from 'src/components/panel_loading/panel_loading.vue'\nimport AsyncComponentError from 'src/components/async_component_error/async_component_error.vue'\nimport getResettableAsyncComponent from 'src/services/resettable_async_component.js'\nimport Popover from '../popover/popover.vue'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { cloneDeep } from 'lodash'\nimport {\n  newImporter,\n  newExporter\n} from 'src/services/export_import/export_import.js'\nimport {\n  faTimes,\n  faFileUpload,\n  faFileDownload,\n  faChevronDown\n} from '@fortawesome/free-solid-svg-icons'\nimport {\n  faWindowMinimize\n} from '@fortawesome/free-regular-svg-icons'\n\nconst PLEROMAFE_SETTINGS_MAJOR_VERSION = 1\nconst PLEROMAFE_SETTINGS_MINOR_VERSION = 0\n\nlibrary.add(\n  faTimes,\n  faWindowMinimize,\n  faFileUpload,\n  faFileDownload,\n  faChevronDown\n)\n\nconst SettingsModal = {\n  data () {\n    return {\n      dataImporter: newImporter({\n        validator: this.importValidator,\n        onImport: this.onImport,\n        onImportFailure: this.onImportFailure\n      }),\n      dataThemeExporter: newExporter({\n        filename: 'pleromafe_settings.full',\n        getExportedObject: () => this.generateExport(true)\n      }),\n      dataExporter: newExporter({\n        filename: 'pleromafe_settings',\n        getExportedObject: () => this.generateExport()\n      })\n    }\n  },\n  components: {\n    Modal,\n    Popover,\n    Checkbox,\n    SettingsModalContent: getResettableAsyncComponent(\n      () => import('./settings_modal_content.vue'),\n      {\n        loadingComponent: PanelLoading,\n        errorComponent: AsyncComponentError,\n        delay: 0\n      }\n    )\n  },\n  methods: {\n    closeModal () {\n      this.$store.dispatch('closeSettingsModal')\n    },\n    peekModal () {\n      this.$store.dispatch('togglePeekSettingsModal')\n    },\n    importValidator (data) {\n      if (!Array.isArray(data._pleroma_settings_version)) {\n        return {\n          messageKey: 'settings.file_import_export.invalid_file'\n        }\n      }\n\n      const [major, minor] = data._pleroma_settings_version\n\n      if (major > PLEROMAFE_SETTINGS_MAJOR_VERSION) {\n        return {\n          messageKey: 'settings.file_export_import.errors.file_too_new',\n          messageArgs: {\n            fileMajor: major,\n            feMajor: PLEROMAFE_SETTINGS_MAJOR_VERSION\n          }\n        }\n      }\n\n      if (major < PLEROMAFE_SETTINGS_MAJOR_VERSION) {\n        return {\n          messageKey: 'settings.file_export_import.errors.file_too_old',\n          messageArgs: {\n            fileMajor: major,\n            feMajor: PLEROMAFE_SETTINGS_MAJOR_VERSION\n          }\n        }\n      }\n\n      if (minor > PLEROMAFE_SETTINGS_MINOR_VERSION) {\n        this.$store.dispatch('pushGlobalNotice', {\n          level: 'warning',\n          messageKey: 'settings.file_export_import.errors.file_slightly_new'\n        })\n      }\n\n      return true\n    },\n    onImportFailure (result) {\n      if (result.error) {\n        this.$store.dispatch('pushGlobalNotice', { messageKey: 'settings.invalid_settings_imported', level: 'error' })\n      } else {\n        this.$store.dispatch('pushGlobalNotice', { ...result.validationResult, level: 'error' })\n      }\n    },\n    onImport (data) {\n      if (data) { this.$store.dispatch('loadSettings', data) }\n    },\n    restore () {\n      this.dataImporter.importData()\n    },\n    backup () {\n      this.dataExporter.exportData()\n    },\n    backupWithTheme () {\n      this.dataThemeExporter.exportData()\n    },\n    generateExport (theme = false) {\n      const { config } = this.$store.state\n      let sample = config\n      if (!theme) {\n        const ignoreList = new Set([\n          'customTheme',\n          'customThemeSource',\n          'colors'\n        ])\n        sample = Object.fromEntries(\n          Object\n            .entries(sample)\n            .filter(([key]) => !ignoreList.has(key))\n        )\n      }\n      const clone = cloneDeep(sample)\n      clone._pleroma_settings_version = [\n        PLEROMAFE_SETTINGS_MAJOR_VERSION,\n        PLEROMAFE_SETTINGS_MINOR_VERSION\n      ]\n      return clone\n    }\n  },\n  computed: {\n    currentSaveStateNotice () {\n      return this.$store.state.interface.settings.currentSaveStateNotice\n    },\n    modalActivated () {\n      return this.$store.state.interface.settingsModalState !== 'hidden'\n    },\n    modalOpenedOnce () {\n      return this.$store.state.interface.settingsModalLoaded\n    },\n    modalPeeked () {\n      return this.$store.state.interface.settingsModalState === 'minimized'\n    },\n    expertLevel: {\n      get () {\n        return this.$store.state.config.expertLevel > 0\n      },\n      set (value) {\n        console.log(value)\n        this.$store.dispatch('setOption', { name: 'expertLevel', value: value ? 1 : 0 })\n      }\n    }\n  }\n}\n\nexport default SettingsModal\n","import { render } from \"./settings_modal.vue?vue&type=template&id=417af644\"\nimport script from \"./settings_modal.js?vue&type=script&lang=js\"\nexport * from \"./settings_modal.js?vue&type=script&lang=js\"\n\nimport \"./settings_modal.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Modal\n    v-if=\"showing\"\n    class=\"media-modal-view\"\n    @backdropClicked=\"hideIfNotSwiped\"\n  >\n    <SwipeClick\n      v-if=\"type === 'image'\"\n      ref=\"swipeClick\"\n      class=\"modal-image-container\"\n      :direction=\"swipeDirection\"\n      :threshold=\"swipeThreshold\"\n      @preview-requested=\"handleSwipePreview\"\n      @swipe-finished=\"handleSwipeEnd\"\n      @swipeless-clicked=\"hide\"\n    >\n      <PinchZoom\n        ref=\"pinchZoom\"\n        class=\"modal-image-container-inner\"\n        selector=\".modal-image\"\n        reach-min-scale-strategy=\"reset\"\n        stop-propagate-handled=\"stop-propgate-handled\"\n        :allow-pan-min-scale=\"pinchZoomMinScale\"\n        :min-scale=\"pinchZoomMinScale\"\n        :reset-to-min-scale-limit=\"pinchZoomScaleResetLimit\"\n      >\n        <img\n          :class=\"{ loading }\"\n          class=\"modal-image\"\n          :src=\"currentMedia.url\"\n          :alt=\"currentMedia.description\"\n          :title=\"currentMedia.description\"\n          @load=\"onImageLoaded\"\n        >\n      </PinchZoom>\n    </SwipeClick>\n    <VideoAttachment\n      v-if=\"type === 'video'\"\n      class=\"modal-image\"\n      :attachment=\"currentMedia\"\n      :controls=\"true\"\n    />\n    <audio\n      v-if=\"type === 'audio'\"\n      class=\"modal-image\"\n      :src=\"currentMedia.url\"\n      :alt=\"currentMedia.description\"\n      :title=\"currentMedia.description\"\n      controls\n    />\n    <Flash\n      v-if=\"type === 'flash'\"\n      class=\"modal-image\"\n      :src=\"currentMedia.url\"\n      :alt=\"currentMedia.description\"\n      :title=\"currentMedia.description\"\n    />\n    <button\n      v-if=\"canNavigate\"\n      :title=\"$t('media_modal.previous')\"\n      class=\"modal-view-button modal-view-button-arrow modal-view-button-arrow--prev\"\n      @click.stop.prevent=\"goPrev\"\n    >\n      <FAIcon\n        class=\"button-icon arrow-icon\"\n        icon=\"chevron-left\"\n      />\n    </button>\n    <button\n      v-if=\"canNavigate\"\n      :title=\"$t('media_modal.next')\"\n      class=\"modal-view-button modal-view-button-arrow modal-view-button-arrow--next\"\n      @click.stop.prevent=\"goNext\"\n    >\n      <FAIcon\n        class=\"button-icon arrow-icon\"\n        icon=\"chevron-right\"\n      />\n    </button>\n    <button\n      class=\"modal-view-button modal-view-button-hide\"\n      :title=\"$t('media_modal.hide')\"\n      @click.stop.prevent=\"hide\"\n    >\n      <FAIcon\n        class=\"button-icon\"\n        icon=\"times\"\n      />\n    </button>\n\n    <span\n      v-if=\"description\"\n      class=\"description\"\n    >\n      {{ description }}\n    </span>\n    <span\n      class=\"counter\"\n    >\n      {{ $tc('media_modal.counter', currentIndex + 1, { current: currentIndex + 1, total: media.length }) }}\n    </span>\n    <span\n      v-if=\"loading\"\n      class=\"loading-spinner\"\n    >\n      <FAIcon\n        spin\n        icon=\"circle-notch\"\n        size=\"5x\"\n      />\n    </span>\n  </Modal>\n</template>\n\n<script src=\"./media_modal.js\"></script>\n\n<style lang=\"scss\">\n$modal-view-button-icon-height: 3em;\n$modal-view-button-icon-half-height: calc(#{$modal-view-button-icon-height} / 2);\n$modal-view-button-icon-width: 3em;\n$modal-view-button-icon-margin: 0.5em;\n\n.modal-view.media-modal-view {\n  z-index: 9000;\n  flex-direction: column;\n\n  .modal-view-button-arrow,\n  .modal-view-button-hide {\n    opacity: 0.75;\n\n    &:focus,\n    &:hover {\n      outline: none;\n      box-shadow: none;\n    }\n\n    &:hover {\n      opacity: 1;\n    }\n  }\n  overflow: hidden;\n}\n\n.media-modal-view {\n  @keyframes media-fadein {\n    from {\n      opacity: 0;\n    }\n    to {\n      opacity: 1;\n    }\n  }\n\n  .modal-image-container {\n    display: flex;\n    overflow: hidden;\n    align-items: center;\n    flex-direction: column;\n    max-width: 100%;\n    max-height: 100%;\n    width: 100%;\n    height: 100%;\n    flex-grow: 1;\n    justify-content: center;\n\n    &-inner {\n      width: 100%;\n      height: 100%;\n      flex-grow: 1;\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      justify-content: center;\n    }\n  }\n\n  .description,\n  .counter {\n    /* Hardcoded since background is also hardcoded */\n    color: white;\n    margin-top: 1em;\n    text-shadow: 0 0 10px black, 0 0 10px black;\n    padding: 0.2em 2em;\n  }\n\n  .description {\n    flex: 0 0 auto;\n    overflow-y: auto;\n    min-height: 1em;\n    max-width: 500px;\n    max-height: 9.5em;\n    word-break: break-all;\n  }\n\n  .modal-image {\n    max-width: 100%;\n    max-height: 100%;\n    image-orientation: from-image; // NOTE: only FF supports this\n    animation: 0.1s cubic-bezier(0.7, 0, 1, 0.6) media-fadein;\n\n    &.loading {\n      opacity: 0.5;\n    }\n  }\n\n  .loading-spinner {\n    width: 100%;\n    height: 100%;\n    position: absolute;\n    pointer-events: none;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n\n    svg {\n      color: white;\n    }\n  }\n\n  .modal-view-button {\n    border: 0;\n    padding: 0;\n    opacity: 0;\n    box-shadow: none;\n    background: none;\n    appearance: none;\n    overflow: visible;\n    cursor: pointer;\n    transition: opacity 333ms cubic-bezier(.4,0,.22,1);\n    height: $modal-view-button-icon-height;\n    width: $modal-view-button-icon-width;\n\n    .button-icon {\n      position: absolute;\n      height: $modal-view-button-icon-height;\n      width: $modal-view-button-icon-width;\n      font-size: 1rem;\n      line-height: $modal-view-button-icon-height;\n      color: #FFF;\n      text-align: center;\n      background-color: rgba(0,0,0,.3);\n    }\n  }\n\n  .modal-view-button-arrow {\n    position: absolute;\n    display: block;\n    top: 50%;\n    margin-top: $modal-view-button-icon-half-height;\n    width: $modal-view-button-icon-width;\n    height: $modal-view-button-icon-height;\n\n    .arrow-icon {\n      position: absolute;\n      top: 0;\n      line-height: $modal-view-button-icon-height;\n      color: #FFF;\n      text-align: center;\n      background-color: rgba(0,0,0,.3);\n    }\n\n    &--prev {\n      left: 0;\n      .arrow-icon {\n        left: $modal-view-button-icon-margin;\n      }\n    }\n\n    &--next {\n      right: 0;\n      .arrow-icon {\n        right: $modal-view-button-icon-margin;\n      }\n    }\n  }\n\n  .modal-view-button-hide {\n    position: absolute;\n    top: 0;\n    right: 0;\n    .button-icon {\n      top: $modal-view-button-icon-margin;\n      right: $modal-view-button-icon-margin;\n    }\n  }\n}\n</style>\n","import PinchZoom from '@kazvmoe-infra/pinch-zoom-element'\n\nexport default {\n  methods: {\n    setTransform ({ scale, x, y }) {\n      this.$el.setTransform({ scale, x, y })\n    }\n  },\n  created () {\n    // Make lint happy\n    (() => PinchZoom)()\n  }\n}\n","import { render } from \"./pinch_zoom.vue?vue&type=template&id=4608b5bf\"\nimport script from \"./pinch_zoom.js?vue&type=script&lang=js\"\nexport * from \"./pinch_zoom.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <pinch-zoom\n    class=\"pinch-zoom-parent\"\n    v-bind=\"$attrs\"\n    v-on=\"$listeners\"\n  >\n    <slot />\n  </pinch-zoom>\n</template>\n\n<script src=\"./pinch_zoom.js\"></script>\n","\nconst DIRECTION_LEFT = [-1, 0]\nconst DIRECTION_RIGHT = [1, 0]\nconst DIRECTION_UP = [0, -1]\nconst DIRECTION_DOWN = [0, 1]\n\nconst BUTTON_LEFT = 0\n\nconst deltaCoord = (oldCoord, newCoord) => [newCoord[0] - oldCoord[0], newCoord[1] - oldCoord[1]]\n\nconst touchCoord = touch => [touch.screenX, touch.screenY]\n\nconst touchEventCoord = e => touchCoord(e.touches[0])\n\nconst pointerEventCoord = e => [e.clientX, e.clientY]\n\nconst vectorLength = v => Math.sqrt(v[0] * v[0] + v[1] * v[1])\n\nconst perpendicular = v => [v[1], -v[0]]\n\nconst dotProduct = (v1, v2) => v1[0] * v2[0] + v1[1] * v2[1]\n\nconst project = (v1, v2) => {\n  const scalar = (dotProduct(v1, v2) / dotProduct(v2, v2))\n  return [scalar * v2[0], scalar * v2[1]]\n}\n\n// direction: either use the constants above or an arbitrary 2d vector.\n// threshold: how many Px to move from touch origin before checking if the\n//    callback should be called.\n// divergentTolerance: a scalar for much of divergent direction we tolerate when\n//    above threshold. for example, with 1.0 we only call the callback if\n//    divergent component of delta is < 1.0 * direction component of delta.\nconst swipeGesture = (direction, onSwipe, threshold = 30, perpendicularTolerance = 1.0) => {\n  return {\n    direction,\n    onSwipe,\n    threshold,\n    perpendicularTolerance,\n    _startPos: [0, 0],\n    _swiping: false\n  }\n}\n\nconst beginSwipe = (event, gesture) => {\n  gesture._startPos = touchEventCoord(event)\n  gesture._swiping = true\n}\n\nconst updateSwipe = (event, gesture) => {\n  if (!gesture._swiping) return\n  // movement too small\n  const delta = deltaCoord(gesture._startPos, touchEventCoord(event))\n  if (vectorLength(delta) < gesture.threshold) return\n  // movement is opposite from direction\n  if (dotProduct(delta, gesture.direction) < 0) return\n  // movement perpendicular to direction is too much\n  const towardsDir = project(delta, gesture.direction)\n  const perpendicularDir = perpendicular(gesture.direction)\n  const towardsPerpendicular = project(delta, perpendicularDir)\n  if (\n    vectorLength(towardsDir) * gesture.perpendicularTolerance <\n    vectorLength(towardsPerpendicular)\n  ) return\n\n  gesture.onSwipe()\n  gesture._swiping = false\n}\n\nclass SwipeAndClickGesture {\n  // swipePreviewCallback(offsets: Array[Number])\n  //   offsets: the offset vector which the underlying component should move, from the starting position\n  // swipeEndCallback(sign: 0|-1|1)\n  //   sign: if the swipe does not meet the threshold, 0\n  //         if the swipe meets the threshold in the positive direction, 1\n  //         if the swipe meets the threshold in the negative direction, -1\n  constructor ({\n    direction,\n    // swipeStartCallback\n    swipePreviewCallback,\n    swipeEndCallback,\n    swipeCancelCallback,\n    swipelessClickCallback,\n    threshold = 30,\n    perpendicularTolerance = 1.0,\n    disableClickThreshold = 1\n  }) {\n    const nop = () => {}\n    this.direction = direction\n    this.swipePreviewCallback = swipePreviewCallback || nop\n    this.swipeEndCallback = swipeEndCallback || nop\n    this.swipeCancelCallback = swipeCancelCallback || nop\n    this.swipelessClickCallback = swipelessClickCallback || nop\n    this.threshold = typeof threshold === 'function' ? threshold : () => threshold\n    this.disableClickThreshold = typeof disableClickThreshold === 'function' ? disableClickThreshold : () => disableClickThreshold\n    this.perpendicularTolerance = perpendicularTolerance\n    this._reset()\n  }\n\n  _reset () {\n    this._startPos = [0, 0]\n    this._pointerId = -1\n    this._swiping = false\n    this._swiped = false\n    this._preventNextClick = false\n  }\n\n  start (event) {\n    // Only handle left click\n    if (event.button !== BUTTON_LEFT) {\n      return\n    }\n\n    this._startPos = pointerEventCoord(event)\n    this._pointerId = event.pointerId\n    this._swiping = true\n    this._swiped = false\n  }\n\n  move (event) {\n    if (this._swiping && this._pointerId === event.pointerId) {\n      this._swiped = true\n\n      const coord = pointerEventCoord(event)\n      const delta = deltaCoord(this._startPos, coord)\n\n      this.swipePreviewCallback(delta)\n    }\n  }\n\n  cancel (event) {\n    if (!this._swiping || this._pointerId !== event.pointerId) {\n      return\n    }\n\n    this.swipeCancelCallback()\n  }\n\n  end (event) {\n    if (!this._swiping) {\n      return\n    }\n\n    if (this._pointerId !== event.pointerId) {\n      return\n    }\n\n    this._swiping = false\n\n    // movement too small\n    const coord = pointerEventCoord(event)\n    const delta = deltaCoord(this._startPos, coord)\n\n    const sign = (() => {\n      if (vectorLength(delta) < this.threshold()) {\n        return 0\n      }\n      // movement is opposite from direction\n      const isPositive = dotProduct(delta, this.direction) > 0\n\n      // movement perpendicular to direction is too much\n      const towardsDir = project(delta, this.direction)\n      const perpendicularDir = perpendicular(this.direction)\n      const towardsPerpendicular = project(delta, perpendicularDir)\n      if (\n        vectorLength(towardsDir) * this.perpendicularTolerance <\n          vectorLength(towardsPerpendicular)\n      ) {\n        return 0\n      }\n\n      return isPositive ? 1 : -1\n    })()\n\n    if (this._swiped) {\n      this.swipeEndCallback(sign)\n    }\n    this._reset()\n    // Only a mouse will fire click event when\n    // the end point is far from the starting point\n    // so for other kinds of pointers do not check\n    // whether we have swiped\n    if (vectorLength(delta) >= this.disableClickThreshold() && event.pointerType === 'mouse') {\n      this._preventNextClick = true\n    }\n  }\n\n  click (event) {\n    if (!this._preventNextClick) {\n      this.swipelessClickCallback()\n    }\n    this._reset()\n  }\n}\n\nconst GestureService = {\n  DIRECTION_LEFT,\n  DIRECTION_RIGHT,\n  DIRECTION_UP,\n  DIRECTION_DOWN,\n  swipeGesture,\n  beginSwipe,\n  updateSwipe,\n  SwipeAndClickGesture\n}\n\nexport default GestureService\n","import GestureService from '../../services/gesture_service/gesture_service'\n\n/**\n * props:\n *   direction: a vector that indicates the direction of the intended swipe\n *   threshold: the minimum distance in pixels the swipe has moved on `direction'\n *              for swipe-finished() to have a non-zero sign\n *   perpendicularTolerance: see gesture_service\n *\n * Events:\n *   preview-requested(offsets)\n *     Emitted when the pointer has moved.\n *     offsets: the offsets from the start of the swipe to the current cursor position\n *\n *   swipe-canceled()\n *     Emitted when the swipe has been canceled due to a pointercancel event.\n *\n *   swipe-finished(sign: 0|-1|1)\n *     Emitted when the swipe has finished.\n *     sign: if the swipe does not meet the threshold, 0\n *           if the swipe meets the threshold in the positive direction, 1\n *           if the swipe meets the threshold in the negative direction, -1\n *\n *   swipeless-clicked()\n *     Emitted when there is a click without swipe.\n *     This and swipe-finished() cannot be emitted for the same pointerup event.\n */\nconst SwipeClick = {\n  props: {\n    direction: {\n      type: Array\n    },\n    threshold: {\n      type: Function,\n      default: () => 30\n    },\n    perpendicularTolerance: {\n      type: Number,\n      default: 1.0\n    }\n  },\n  methods: {\n    handlePointerDown (event) {\n      this.$gesture.start(event)\n    },\n    handlePointerMove (event) {\n      this.$gesture.move(event)\n    },\n    handlePointerUp (event) {\n      this.$gesture.end(event)\n    },\n    handlePointerCancel (event) {\n      this.$gesture.cancel(event)\n    },\n    handleNativeClick (event) {\n      this.$gesture.click(event)\n    },\n    preview (offsets) {\n      this.$emit('preview-requested', offsets)\n    },\n    end (sign) {\n      this.$emit('swipe-finished', sign)\n    },\n    click () {\n      this.$emit('swipeless-clicked')\n    },\n    cancel () {\n      this.$emit('swipe-canceled')\n    }\n  },\n  created () {\n    this.$gesture = new GestureService.SwipeAndClickGesture({\n      direction: this.direction,\n      threshold: this.threshold,\n      perpendicularTolerance: this.perpendicularTolerance,\n      swipePreviewCallback: this.preview,\n      swipeEndCallback: this.end,\n      swipeCancelCallback: this.cancel,\n      swipelessClickCallback: this.click\n    })\n  }\n}\n\nexport default SwipeClick\n","import { render } from \"./swipe_click.vue?vue&type=template&id=4c0f684c\"\nimport script from \"./swipe_click.js?vue&type=script&lang=js\"\nexport * from \"./swipe_click.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    v-bind=\"$attrs\"\n    @pointerdown=\"handlePointerDown\"\n    @pointermove=\"handlePointerMove\"\n    @pointerup=\"handlePointerUp\"\n    @pointercancel=\"handlePointerCancel\"\n    @click=\"handleNativeClick\"\n  >\n    <slot />\n  </div>\n</template>\n\n<script src=\"./swipe_click.js\"></script>\n","import StillImage from '../still-image/still-image.vue'\nimport VideoAttachment from '../video_attachment/video_attachment.vue'\nimport Modal from '../modal/modal.vue'\nimport PinchZoom from '../pinch_zoom/pinch_zoom.vue'\nimport SwipeClick from '../swipe_click/swipe_click.vue'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport Flash from 'src/components/flash/flash.vue'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faChevronLeft,\n  faChevronRight,\n  faCircleNotch,\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faChevronLeft,\n  faChevronRight,\n  faCircleNotch,\n  faTimes\n)\n\nconst MediaModal = {\n  components: {\n    StillImage,\n    VideoAttachment,\n    PinchZoom,\n    SwipeClick,\n    Modal,\n    Flash\n  },\n  data () {\n    return {\n      loading: false,\n      swipeDirection: GestureService.DIRECTION_LEFT,\n      swipeThreshold: () => {\n        const considerableMoveRatio = 1 / 4\n        return window.innerWidth * considerableMoveRatio\n      },\n      pinchZoomMinScale: 1,\n      pinchZoomScaleResetLimit: 1.2\n    }\n  },\n  computed: {\n    showing () {\n      return this.$store.state.mediaViewer.activated\n    },\n    media () {\n      return this.$store.state.mediaViewer.media\n    },\n    description () {\n      return this.currentMedia.description\n    },\n    currentIndex () {\n      return this.$store.state.mediaViewer.currentIndex\n    },\n    currentMedia () {\n      return this.media[this.currentIndex]\n    },\n    canNavigate () {\n      return this.media.length > 1\n    },\n    type () {\n      return this.currentMedia ? this.getType(this.currentMedia) : null\n    }\n  },\n  methods: {\n    getType (media) {\n      return fileTypeService.fileType(media.mimetype)\n    },\n    hide () {\n      // HACK: Closing immediately via a touch will cause the click\n      // to be processed on the content below the overlay\n      const transitionTime = 100 // ms\n      setTimeout(() => {\n        this.$store.dispatch('closeMediaViewer')\n      }, transitionTime)\n    },\n    hideIfNotSwiped (event) {\n      // If we have swiped over SwipeClick, do not trigger hide\n      const comp = this.$refs.swipeClick\n      if (!comp) {\n        this.hide()\n      } else {\n        comp.$gesture.click(event)\n      }\n    },\n    goPrev () {\n      if (this.canNavigate) {\n        const prevIndex = this.currentIndex === 0 ? this.media.length - 1 : (this.currentIndex - 1)\n        const newMedia = this.media[prevIndex]\n        if (this.getType(newMedia) === 'image') {\n          this.loading = true\n        }\n        this.$store.dispatch('setCurrentMedia', newMedia)\n      }\n    },\n    goNext () {\n      if (this.canNavigate) {\n        const nextIndex = this.currentIndex === this.media.length - 1 ? 0 : (this.currentIndex + 1)\n        const newMedia = this.media[nextIndex]\n        if (this.getType(newMedia) === 'image') {\n          this.loading = true\n        }\n        this.$store.dispatch('setCurrentMedia', newMedia)\n      }\n    },\n    onImageLoaded () {\n      this.loading = false\n    },\n    handleSwipePreview (offsets) {\n      this.$refs.pinchZoom.setTransform({ scale: 1, x: offsets[0], y: 0 })\n    },\n    handleSwipeEnd (sign) {\n      this.$refs.pinchZoom.setTransform({ scale: 1, x: 0, y: 0 })\n      if (sign > 0) {\n        this.goNext()\n      } else if (sign < 0) {\n        this.goPrev()\n      }\n    },\n    handleKeyupEvent (e) {\n      if (this.showing && e.keyCode === 27) { // escape\n        this.hide()\n      }\n    },\n    handleKeydownEvent (e) {\n      if (!this.showing) {\n        return\n      }\n\n      if (e.keyCode === 39) { // arrow right\n        this.goNext()\n      } else if (e.keyCode === 37) { // arrow left\n        this.goPrev()\n      }\n    }\n  },\n  mounted () {\n    window.addEventListener('popstate', this.hide)\n    document.addEventListener('keyup', this.handleKeyupEvent)\n    document.addEventListener('keydown', this.handleKeydownEvent)\n  },\n  unmounted () {\n    window.removeEventListener('popstate', this.hide)\n    document.removeEventListener('keyup', this.handleKeyupEvent)\n    document.removeEventListener('keydown', this.handleKeydownEvent)\n  }\n}\n\nexport default MediaModal\n","import { render } from \"./media_modal.vue?vue&type=template&id=85a073e6\"\nimport script from \"./media_modal.js?vue&type=script&lang=js\"\nexport * from \"./media_modal.js?vue&type=script&lang=js\"\n\nimport \"./media_modal.vue?vue&type=style&index=0&id=85a073e6&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    class=\"side-drawer-container\"\n    :class=\"{ 'side-drawer-container-closed': closed, 'side-drawer-container-open': !closed }\"\n  >\n    <div\n      class=\"side-drawer-darken\"\n      :class=\"{ 'side-drawer-darken-closed': closed}\"\n    />\n    <div\n      class=\"side-drawer\"\n      :class=\"{'side-drawer-closed': closed}\"\n      @touchstart=\"touchStart\"\n      @touchmove=\"touchMove\"\n    >\n      <div\n        class=\"side-drawer-heading\"\n        @click=\"toggleDrawer\"\n      >\n        <UserCard\n          v-if=\"currentUser\"\n          :user-id=\"currentUser.id\"\n          :hide-bio=\"true\"\n        />\n        <div\n          v-else\n          class=\"side-drawer-logo-wrapper\"\n        >\n          <img :src=\"logo\">\n          <span v-if=\"!hideSitename\">{{ sitename }}</span>\n        </div>\n      </div>\n      <ul>\n        <li\n          v-if=\"!currentUser\"\n          @click=\"toggleDrawer\"\n        >\n          <router-link :to=\"{ name: 'login' }\">\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"sign-in-alt\"\n            /> {{ $t(\"login.login\") }}\n          </router-link>\n        </li>\n        <li\n          v-if=\"currentUser || !privateMode\"\n          @click=\"toggleDrawer\"\n        >\n          <router-link :to=\"{ name: timelinesRoute }\">\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"home\"\n            /> {{ $t(\"nav.timelines\") }}\n          </router-link>\n        </li>\n        <li\n          v-if=\"currentUser && pleromaChatMessagesAvailable\"\n          @click=\"toggleDrawer\"\n        >\n          <router-link\n            :to=\"{ name: 'chats', params: { username: currentUser.screen_name } }\"\n            style=\"position: relative\"\n          >\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"comments\"\n            /> {{ $t(\"nav.chats\") }}\n            <span\n              v-if=\"unreadChatCount\"\n              class=\"badge badge-notification\"\n            >\n              {{ unreadChatCount }}\n            </span>\n          </router-link>\n        </li>\n      </ul>\n      <ul v-if=\"currentUser\">\n        <li @click=\"toggleDrawer\">\n          <router-link :to=\"{ name: 'interactions', params: { username: currentUser.screen_name } }\">\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"bell\"\n            /> {{ $t(\"nav.interactions\") }}\n          </router-link>\n        </li>\n        <li\n          v-if=\"currentUser.locked\"\n          @click=\"toggleDrawer\"\n        >\n          <router-link to=\"/friend-requests\">\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"user-plus\"\n            /> {{ $t(\"nav.friend_requests\") }}\n            <span\n              v-if=\"followRequestCount > 0\"\n              class=\"badge badge-notification\"\n            >\n              {{ followRequestCount }}\n            </span>\n          </router-link>\n        </li>\n        <li\n          v-if=\"shout\"\n          @click=\"toggleDrawer\"\n        >\n          <router-link :to=\"{ name: 'shout-panel' }\">\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"bullhorn\"\n            /> {{ $t(\"shoutbox.title\") }}\n          </router-link>\n        </li>\n      </ul>\n      <ul>\n        <li\n          v-if=\"currentUser || !privateMode\"\n          @click=\"toggleDrawer\"\n        >\n          <router-link :to=\"{ name: 'search' }\">\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"search\"\n            /> {{ $t(\"nav.search\") }}\n          </router-link>\n        </li>\n        <li\n          v-if=\"currentUser && suggestionsEnabled\"\n          @click=\"toggleDrawer\"\n        >\n          <router-link :to=\"{ name: 'who-to-follow' }\">\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"user-plus\"\n            /> {{ $t(\"nav.who_to_follow\") }}\n          </router-link>\n        </li>\n        <li @click=\"toggleDrawer\">\n          <button\n            class=\"button-unstyled -link -fullwidth\"\n            @click=\"openSettingsModal\"\n          >\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"cog\"\n            /> {{ $t(\"settings.settings\") }}\n          </button>\n        </li>\n        <li @click=\"toggleDrawer\">\n          <router-link :to=\"{ name: 'about'}\">\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"info-circle\"\n            /> {{ $t(\"nav.about\") }}\n          </router-link>\n        </li>\n        <li\n          v-if=\"currentUser && currentUser.role === 'admin'\"\n          @click=\"toggleDrawer\"\n        >\n          <a\n            href=\"/pleroma/admin/#/login-pleroma\"\n            target=\"_blank\"\n          >\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"tachometer-alt\"\n            /> {{ $t(\"nav.administration\") }}\n          </a>\n        </li>\n        <li\n          v-if=\"currentUser\"\n          @click=\"toggleDrawer\"\n        >\n          <button\n            class=\"button-unstyled -link -fullwidth\"\n            @click=\"doLogout\"\n          >\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"sign-out-alt\"\n            /> {{ $t(\"login.logout\") }}\n          </button>\n        </li>\n      </ul>\n    </div>\n    <div\n      class=\"side-drawer-click-outside\"\n      :class=\"{'side-drawer-click-outside-closed': closed}\"\n      @click.stop.prevent=\"toggleDrawer\"\n    />\n  </div>\n</template>\n\n<script src=\"./side_drawer.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.side-drawer-container {\n  position: fixed;\n  z-index: 1000;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  display: flex;\n  align-items: stretch;\n  transition-duration: 0s;\n  transition-property: transform;\n}\n\n.side-drawer-container-open {\n  transform: translate(0%);\n}\n\n.side-drawer-container-closed {\n  transition-delay: 0.35s;\n  transform: translate(-100%);\n}\n\n.side-drawer-darken {\n  top: 0;\n  left: 0;\n  width: 100vw;\n  height: 100vh;\n  position: fixed;\n  z-index: -1;\n  transition: 0.35s;\n  transition-property: background-color;\n  background-color: rgba(0, 0, 0, 0.5);\n}\n\n.side-drawer-darken-closed {\n  background-color: rgba(0, 0, 0, 0);\n}\n\n.side-drawer-click-outside {\n  flex: 1 1 100%;\n}\n\n.side-drawer {\n  overflow-x: hidden;\n  transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n  transition: 0.35s;\n  transition-property: transform;\n  margin: 0 0 0 -100px;\n  padding: 0 0 1em 100px;\n  width: 80%;\n  max-width: 20em;\n  flex: 0 0 80%;\n  box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.6);\n  box-shadow: var(--panelShadow);\n  background-color: $fallback--bg;\n  background-color: var(--popover, $fallback--bg);\n  color: $fallback--link;\n  color: var(--popoverText, $fallback--link);\n  --faint: var(--popoverFaintText, $fallback--faint);\n  --faintLink: var(--popoverFaintLink, $fallback--faint);\n  --lightText: var(--popoverLightText, $fallback--lightText);\n  --icon: var(--popoverIcon, $fallback--icon);\n\n  .badge {\n    margin-left: 10px;\n  }\n}\n\n.side-drawer-logo-wrapper {\n  display: flex;\n  align-items: center;\n  padding: 0.85em;\n\n  img {\n    flex: none;\n    height: 50px;\n    margin-right: 0.85em;\n  }\n\n  span {\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n}\n\n.side-drawer-click-outside-closed {\n  flex: 0 0 0;\n}\n\n.side-drawer-closed {\n  transform: translate(-100%);\n}\n\n.side-drawer-heading {\n  background: transparent;\n  flex-direction: column;\n  align-items: stretch;\n  display: flex;\n  padding: 0;\n  margin: 0;\n}\n\n.side-drawer ul {\n  list-style: none;\n  margin: 0;\n  padding: 0;\n\n  border-bottom: 1px solid;\n  border-color: $fallback--border;\n  border-color: var(--border, $fallback--border);\n}\n\n.side-drawer ul:last-child {\n  border: 0;\n}\n\n.side-drawer li {\n  padding: 0;\n\n  a, button {\n    box-sizing: border-box;\n    display: block;\n    height: 3em;\n    line-height: 3em;\n    padding: 0 0.7em;\n\n    &:hover {\n      background-color: $fallback--lightBg;\n      background-color: var(--selectedMenuPopover, $fallback--lightBg);\n      color: $fallback--text;\n      color: var(--selectedMenuPopoverText, $fallback--text);\n      --faint: var(--selectedMenuPopoverFaintText, $fallback--faint);\n      --faintLink: var(--selectedMenuPopoverFaintLink, $fallback--faint);\n      --lightText: var(--selectedMenuPopoverLightText, $fallback--lightText);\n      --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n    }\n  }\n}\n</style>\n","import { mapState, mapGetters } from 'vuex'\nimport UserCard from '../user_card/user_card.vue'\nimport { unseenNotificationsFromStore } from '../../services/notification_utils/notification_utils'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faSignInAlt,\n  faSignOutAlt,\n  faHome,\n  faComments,\n  faBell,\n  faUserPlus,\n  faBullhorn,\n  faSearch,\n  faTachometerAlt,\n  faCog,\n  faInfoCircle\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faSignInAlt,\n  faSignOutAlt,\n  faHome,\n  faComments,\n  faBell,\n  faUserPlus,\n  faBullhorn,\n  faSearch,\n  faTachometerAlt,\n  faCog,\n  faInfoCircle\n)\n\nconst SideDrawer = {\n  props: [ 'logout' ],\n  data: () => ({\n    closed: true,\n    closeGesture: undefined\n  }),\n  created () {\n    this.closeGesture = GestureService.swipeGesture(GestureService.DIRECTION_LEFT, this.toggleDrawer)\n\n    if (this.currentUser && this.currentUser.locked) {\n      this.$store.dispatch('startFetchingFollowRequests')\n    }\n  },\n  components: { UserCard },\n  computed: {\n    currentUser () {\n      return this.$store.state.users.currentUser\n    },\n    shout () { return this.$store.state.shout.joined },\n    unseenNotifications () {\n      return unseenNotificationsFromStore(this.$store)\n    },\n    unseenNotificationsCount () {\n      return this.unseenNotifications.length\n    },\n    suggestionsEnabled () {\n      return this.$store.state.instance.suggestionsEnabled\n    },\n    logo () {\n      return this.$store.state.instance.logo\n    },\n    hideSitename () {\n      return this.$store.state.instance.hideSitename\n    },\n    sitename () {\n      return this.$store.state.instance.name\n    },\n    followRequestCount () {\n      return this.$store.state.api.followRequests.length\n    },\n    privateMode () {\n      return this.$store.state.instance.private\n    },\n    federating () {\n      return this.$store.state.instance.federating\n    },\n    timelinesRoute () {\n      if (this.$store.state.interface.lastTimeline) {\n        return this.$store.state.interface.lastTimeline\n      }\n      return this.currentUser ? 'friends' : 'public-timeline'\n    },\n    ...mapState({\n      pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable\n    }),\n    ...mapGetters(['unreadChatCount'])\n  },\n  methods: {\n    toggleDrawer () {\n      this.closed = !this.closed\n    },\n    doLogout () {\n      this.logout()\n      this.toggleDrawer()\n    },\n    touchStart (e) {\n      GestureService.beginSwipe(e, this.closeGesture)\n    },\n    touchMove (e) {\n      GestureService.updateSwipe(e, this.closeGesture)\n    },\n    openSettingsModal () {\n      this.$store.dispatch('openSettingsModal')\n    }\n  }\n}\n\nexport default SideDrawer\n","import { render } from \"./side_drawer.vue?vue&type=template&id=4a50df4d\"\nimport script from \"./side_drawer.js?vue&type=script&lang=js\"\nexport * from \"./side_drawer.js?vue&type=script&lang=js\"\n\nimport \"./side_drawer.vue?vue&type=style&index=0&id=4a50df4d&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { debounce } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faPen\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faPen\n)\n\nconst HIDDEN_FOR_PAGES = new Set([\n  'chats',\n  'chat'\n])\n\nconst MobilePostStatusButton = {\n  data () {\n    return {\n      hidden: false,\n      scrollingDown: false,\n      inputActive: false,\n      oldScrollPos: 0,\n      amountScrolled: 0\n    }\n  },\n  created () {\n    if (this.autohideFloatingPostButton) {\n      this.activateFloatingPostButtonAutohide()\n    }\n    window.addEventListener('resize', this.handleOSK)\n  },\n  unmounted () {\n    if (this.autohideFloatingPostButton) {\n      this.deactivateFloatingPostButtonAutohide()\n    }\n    window.removeEventListener('resize', this.handleOSK)\n  },\n  computed: {\n    isLoggedIn () {\n      return !!this.$store.state.users.currentUser\n    },\n    isHidden () {\n      if (HIDDEN_FOR_PAGES.has(this.$route.name)) { return true }\n\n      return this.autohideFloatingPostButton && (this.hidden || this.inputActive)\n    },\n    isPersistent () {\n      return !!this.$store.getters.mergedConfig.alwaysShowNewPostButton\n    },\n    autohideFloatingPostButton () {\n      return !!this.$store.getters.mergedConfig.autohideFloatingPostButton\n    }\n  },\n  watch: {\n    autohideFloatingPostButton: function (isEnabled) {\n      if (isEnabled) {\n        this.activateFloatingPostButtonAutohide()\n      } else {\n        this.deactivateFloatingPostButtonAutohide()\n      }\n    }\n  },\n  methods: {\n    activateFloatingPostButtonAutohide () {\n      window.addEventListener('scroll', this.handleScrollStart)\n      window.addEventListener('scroll', this.handleScrollEnd)\n    },\n    deactivateFloatingPostButtonAutohide () {\n      window.removeEventListener('scroll', this.handleScrollStart)\n      window.removeEventListener('scroll', this.handleScrollEnd)\n    },\n    openPostForm () {\n      this.$store.dispatch('openPostStatusModal')\n    },\n    handleOSK () {\n      // This is a big hack: we're guessing from changed window sizes if the\n      // on-screen keyboard is active or not. This is only really important\n      // for phones in portrait mode and it's more important to show the button\n      // in normal scenarios on all phones, than it is to hide it when the\n      // keyboard is active.\n      // Guesswork based on https://www.mydevice.io/#compare-devices\n\n      // for example, iphone 4 and android phones from the same time period\n      const smallPhone = window.innerWidth < 350\n      const smallPhoneKbOpen = smallPhone && window.innerHeight < 345\n\n      const biggerPhone = !smallPhone && window.innerWidth < 450\n      const biggerPhoneKbOpen = biggerPhone && window.innerHeight < 560\n      if (smallPhoneKbOpen || biggerPhoneKbOpen) {\n        this.inputActive = true\n      } else {\n        this.inputActive = false\n      }\n    },\n    handleScrollStart: debounce(function () {\n      if (window.scrollY > this.oldScrollPos) {\n        this.hidden = true\n      } else {\n        this.hidden = false\n      }\n      this.oldScrollPos = window.scrollY\n    }, 100, { leading: true, trailing: false }),\n\n    handleScrollEnd: debounce(function () {\n      this.hidden = false\n      this.oldScrollPos = window.scrollY\n    }, 100, { leading: false, trailing: true })\n  }\n}\n\nexport default MobilePostStatusButton\n","import { render } from \"./mobile_post_status_button.vue?vue&type=template&id=9a586640\"\nimport script from \"./mobile_post_status_button.js?vue&type=script&lang=js\"\nexport * from \"./mobile_post_status_button.js?vue&type=script&lang=js\"\n\nimport \"./mobile_post_status_button.vue?vue&type=style&index=0&id=9a586640&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <button\n    v-if=\"isLoggedIn\"\n    class=\"MobilePostButton button-default new-status-button\"\n    :class=\"{ 'hidden': isHidden, 'always-show': isPersistent }\"\n    @click=\"openPostForm\"\n  >\n    <FAIcon icon=\"pen\" />\n  </button>\n</template>\n\n<script src=\"./mobile_post_status_button.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.MobilePostButton {\n  &.button-default {\n    width: 5em;\n    height: 5em;\n    border-radius: 100%;\n    position: fixed;\n    bottom: 1.5em;\n    right: 1.5em;\n    // TODO: this needs its own color, it has to stand out enough and link color\n    // is not very optimal for this particular use.\n    background-color: $fallback--fg;\n    background-color: var(--btn, $fallback--fg);\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3), 0px 4px 6px rgba(0, 0, 0, 0.3);\n    z-index: 10;\n\n    transition: 0.35s transform;\n    transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n  }\n\n  &.hidden {\n    transform: translateY(150%);\n  }\n\n  svg {\n    font-size: 1.5em;\n    color: $fallback--text;\n    color: var(--text, $fallback--text);\n  }\n}\n\n@media all and (min-width: 801px) {\n  .new-status-button:not(.always-show) {\n    display: none;\n  }\n}\n\n</style>\n","<template>\n  <div\n    class=\"MobileNav\"\n  >\n    <nav\n      id=\"nav\"\n      class=\"mobile-nav\"\n      @click=\"scrollToTop()\"\n    >\n      <div class=\"item\">\n        <button\n          class=\"button-unstyled mobile-nav-button\"\n          @click.stop.prevent=\"toggleMobileSidebar()\"\n        >\n          <FAIcon\n            class=\"fa-scale-110 fa-old-padding\"\n            icon=\"bars\"\n          />\n          <div\n            v-if=\"unreadChatCount\"\n            class=\"alert-dot\"\n          />\n        </button>\n        <router-link\n          v-if=\"!hideSitename\"\n          class=\"site-name\"\n          :to=\"{ name: 'root' }\"\n          active-class=\"home\"\n        >\n          {{ sitename }}\n        </router-link>\n      </div>\n      <div class=\"item right\">\n        <button\n          v-if=\"currentUser\"\n          class=\"button-unstyled mobile-nav-button\"\n          @click.stop.prevent=\"openMobileNotifications()\"\n        >\n          <FAIcon\n            class=\"fa-scale-110 fa-old-padding\"\n            icon=\"bell\"\n          />\n          <div\n            v-if=\"unseenNotificationsCount\"\n            class=\"alert-dot\"\n          />\n        </button>\n      </div>\n    </nav>\n    <div\n      v-if=\"currentUser\"\n      class=\"mobile-notifications-drawer\"\n      :class=\"{ '-closed': !notificationsOpen }\"\n      @touchstart.stop=\"notificationsTouchStart\"\n      @touchmove.stop=\"notificationsTouchMove\"\n    >\n      <div class=\"mobile-notifications-header\">\n        <span class=\"title\">{{ $t('notifications.notifications') }}</span>\n        <a\n          class=\"mobile-nav-button\"\n          @click.stop.prevent=\"closeMobileNotifications()\"\n        >\n          <FAIcon\n            class=\"fa-scale-110 fa-old-padding\"\n            icon=\"times\"\n          />\n        </a>\n      </div>\n      <div\n        class=\"mobile-notifications\"\n        id=\"mobile-notifications\"\n        @scroll=\"onScroll\"\n      >\n      </div>\n    </div>\n    <SideDrawer\n      ref=\"sideDrawer\"\n      :logout=\"logout\"\n    />\n  </div>\n</template>\n\n<script src=\"./mobile_nav.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.MobileNav {\n  .mobile-nav {\n    display: grid;\n    line-height: var(--navbar-height);\n    grid-template-rows: 50px;\n    grid-template-columns: 2fr auto;\n    width: 100%;\n    box-sizing: border-box;\n    a {\n      color: var(--topBarLink, $fallback--link);\n    }\n  }\n\n  .mobile-inner-nav {\n    width: 100%;\n    display: flex;\n    align-items: center;\n  }\n\n  .mobile-nav-button {\n    display: inline-block;\n    text-align: center;\n    padding: 0 1em;\n    position: relative;\n    cursor: pointer;\n  }\n\n  .site-name {\n    padding: 0 .3em;\n    display: inline-block;\n  }\n\n  .item {\n    /* moslty just to get rid of extra whitespaces */\n    display: flex;\n  }\n\n  .alert-dot {\n    border-radius: 100%;\n    height: 8px;\n    width: 8px;\n    position: absolute;\n    left: calc(50% - 4px);\n    top: calc(50% - 4px);\n    margin-left: 6px;\n    margin-top: -6px;\n    background-color: $fallback--cRed;\n    background-color: var(--badgeNotification, $fallback--cRed);\n  }\n\n  .mobile-notifications-drawer {\n    width: 100%;\n    height: 100vh;\n    overflow-x: hidden;\n    position: fixed;\n    top: 0;\n    left: 0;\n    box-shadow: 1px 1px 4px rgba(0,0,0,.6);\n    box-shadow: var(--panelShadow);\n    transition-property: transform;\n    transition-duration: 0.25s;\n    transform: translateX(0);\n    z-index: 1001;\n    -webkit-overflow-scrolling: touch;\n\n    &.-closed {\n      transform: translateX(100%);\n      box-shadow: none;\n    }\n  }\n\n  .mobile-notifications-header {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    z-index: 1;\n    width: 100%;\n    height: 50px;\n    line-height: 50px;\n    position: absolute;\n    color: var(--topBarText);\n    background-color: $fallback--fg;\n    background-color: var(--topBar, $fallback--fg);\n    box-shadow: 0px 0px 4px rgba(0,0,0,.6);\n    box-shadow: var(--topBarShadow);\n\n    .title {\n      font-size: 1.3em;\n      margin-left: 0.6em;\n    }\n  }\n\n  .mobile-notifications {\n    margin-top: 50px;\n    width: 100vw;\n    height: calc(100vh - var(--navbar-height));\n    overflow-x: hidden;\n    overflow-y: scroll;\n\n    color: $fallback--text;\n    color: var(--text, $fallback--text);\n    background-color: $fallback--bg;\n    background-color: var(--bg, $fallback--bg);\n\n    .notifications {\n      padding: 0;\n      border-radius: 0;\n      box-shadow: none;\n      .panel {\n        border-radius: 0;\n        margin: 0;\n        box-shadow: none;\n      }\n      .panel:after {\n        border-radius: 0;\n      }\n      .panel .panel-heading {\n        border-radius: 0;\n        box-shadow: none;\n      }\n    }\n  }\n}\n\n</style>\n","import SideDrawer from '../side_drawer/side_drawer.vue'\nimport Notifications from '../notifications/notifications.vue'\nimport { unseenNotificationsFromStore } from '../../services/notification_utils/notification_utils'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes,\n  faBell,\n  faBars\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes,\n  faBell,\n  faBars\n)\n\nconst MobileNav = {\n  components: {\n    SideDrawer,\n    Notifications\n  },\n  data: () => ({\n    notificationsCloseGesture: undefined,\n    notificationsOpen: false\n  }),\n  created () {\n    this.notificationsCloseGesture = GestureService.swipeGesture(\n      GestureService.DIRECTION_RIGHT,\n      this.closeMobileNotifications,\n      50\n    )\n  },\n  computed: {\n    currentUser () {\n      return this.$store.state.users.currentUser\n    },\n    unseenNotifications () {\n      return unseenNotificationsFromStore(this.$store)\n    },\n    unseenNotificationsCount () {\n      return this.unseenNotifications.length\n    },\n    hideSitename () { return this.$store.state.instance.hideSitename },\n    sitename () { return this.$store.state.instance.name },\n    isChat () {\n      return this.$route.name === 'chat'\n    },\n    ...mapGetters(['unreadChatCount'])\n  },\n  methods: {\n    toggleMobileSidebar () {\n      this.$refs.sideDrawer.toggleDrawer()\n    },\n    openMobileNotifications () {\n      this.notificationsOpen = true\n    },\n    closeMobileNotifications () {\n      if (this.notificationsOpen) {\n        // make sure to mark notifs seen only when the notifs were open and not\n        // from close-calls.\n        this.notificationsOpen = false\n        this.markNotificationsAsSeen()\n      }\n    },\n    notificationsTouchStart (e) {\n      GestureService.beginSwipe(e, this.notificationsCloseGesture)\n    },\n    notificationsTouchMove (e) {\n      GestureService.updateSwipe(e, this.notificationsCloseGesture)\n    },\n    scrollToTop () {\n      window.scrollTo(0, 0)\n    },\n    logout () {\n      this.$router.replace('/main/public')\n      this.$store.dispatch('logout')\n    },\n    markNotificationsAsSeen () {\n      // this.$refs.notifications.markAsSeen()\n      this.$store.dispatch('markNotificationsAsSeen')\n    },\n    onScroll ({ target: { scrollTop, clientHeight, scrollHeight } }) {\n      if (scrollTop + clientHeight >= scrollHeight) {\n        this.$refs.notifications.fetchOlderNotifications()\n      }\n    }\n  },\n  watch: {\n    $route () {\n      // handles closing notificaitons when you press any router-link on the\n      // notifications.\n      this.closeMobileNotifications()\n    }\n  }\n}\n\nexport default MobileNav\n","import { render } from \"./mobile_nav.vue?vue&type=template&id=cab8ee52\"\nimport script from \"./mobile_nav.js?vue&type=script&lang=js\"\nexport * from \"./mobile_nav.js?vue&type=script&lang=js\"\n\nimport \"./mobile_nav.vue?vue&type=style&index=0&id=cab8ee52&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <nav\n    id=\"nav\"\n    class=\"DesktopNav\"\n    :class=\"{ '-logoLeft': logoLeft }\"\n    @click=\"scrollToTop()\"\n  >\n    <div class=\"inner-nav\">\n      <div class=\"item sitename\">\n        <router-link\n          v-if=\"!hideSitename\"\n          class=\"site-name\"\n          :to=\"{ name: 'root' }\"\n          active-class=\"home\"\n        >\n          {{ sitename }}\n        </router-link>\n      </div>\n      <router-link\n        class=\"logo\"\n        :to=\"{ name: 'root' }\"\n        :style=\"logoBgStyle\"\n      >\n        <div\n          class=\"mask\"\n          :style=\"logoMaskStyle\"\n        />\n        <img\n          :src=\"logo\"\n          :style=\"logoStyle\"\n        >\n      </router-link>\n      <div class=\"item right actions\">\n        <search-bar\n          v-if=\"currentUser || !privateMode\"\n          @toggled=\"onSearchBarToggled\"\n          @click.stop\n        />\n        <button\n          class=\"button-unstyled nav-icon\"\n          @click.stop=\"openSettingsModal\"\n        >\n          <FAIcon\n            fixed-width\n            class=\"fa-scale-110 fa-old-padding\"\n            icon=\"cog\"\n            :title=\"$t('nav.preferences')\"\n          />\n        </button>\n        <a\n          v-if=\"currentUser && currentUser.role === 'admin'\"\n          href=\"/pleroma/admin/#/login-pleroma\"\n          class=\"nav-icon\"\n          target=\"_blank\"\n          @click.stop\n        >\n          <FAIcon\n            fixed-width\n            class=\"fa-scale-110 fa-old-padding\"\n            icon=\"tachometer-alt\"\n            :title=\"$t('nav.administration')\"\n          />\n        </a>\n        <button\n          v-if=\"currentUser\"\n          class=\"button-unstyled nav-icon\"\n          @click.prevent=\"logout\"\n        >\n          <FAIcon\n            fixed-width\n            class=\"fa-scale-110 fa-old-padding\"\n            icon=\"sign-out-alt\"\n            :title=\"$t('login.logout')\"\n          />\n        </button>\n      </div>\n    </div>\n  </nav>\n</template>\n<script src=\"./desktop_nav.js\"></script>\n\n<style src=\"./desktop_nav.scss\" lang=\"scss\"></style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes,\n  faSearch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes,\n  faSearch\n)\n\nconst SearchBar = {\n  data: () => ({\n    searchTerm: undefined,\n    hidden: true,\n    error: false\n  }),\n  watch: {\n    '$route': function (route) {\n      if (route.name === 'search') {\n        this.searchTerm = route.query.query\n      }\n    }\n  },\n  methods: {\n    find (searchTerm) {\n      this.$router.push({ name: 'search', query: { query: searchTerm } })\n      this.$refs.searchInput.focus()\n    },\n    toggleHidden () {\n      this.hidden = !this.hidden\n      this.$emit('toggled', this.hidden)\n      this.$nextTick(() => {\n        if (!this.hidden) {\n          this.$refs.searchInput.focus()\n        }\n      })\n    }\n  }\n}\n\nexport default SearchBar\n","import { render } from \"./search_bar.vue?vue&type=template&id=105122b7\"\nimport script from \"./search_bar.js?vue&type=script&lang=js\"\nexport * from \"./search_bar.js?vue&type=script&lang=js\"\n\nimport \"./search_bar.vue?vue&type=style&index=0&id=105122b7&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    class=\"SearchBar\"\n    :class=\"{ '-expanded': !hidden }\"\n  >\n    <button\n      v-if=\"hidden\"\n      class=\"button-unstyled nav-icon\"\n      :title=\"$t('nav.search')\"\n      type=\"button\"\n      @click.prevent.stop=\"toggleHidden\"\n    >\n      <FAIcon\n        fixed-width\n        class=\"fa-scale-110 fa-old-padding\"\n        icon=\"search\"\n      />\n    </button>\n    <template v-else>\n      <input\n        id=\"search-bar-input\"\n        ref=\"searchInput\"\n        v-model=\"searchTerm\"\n        class=\"search-bar-input\"\n        :placeholder=\"$t('nav.search')\"\n        type=\"text\"\n        @keyup.enter=\"find(searchTerm)\"\n      >\n      <button\n        class=\"button-default search-button\"\n        type=\"submit\"\n        @click=\"find(searchTerm)\"\n      >\n        <FAIcon\n          fixed-width\n          icon=\"search\"\n        />\n      </button>\n      <button\n        class=\"button-unstyled cancel-search\"\n        type=\"button\"\n        @click.prevent.stop=\"toggleHidden\"\n      >\n        <FAIcon\n          fixed-width\n          icon=\"times\"\n          class=\"cancel-icon fa-scale-110 fa-old-padding\"\n        />\n      </button>\n    </template>\n  </div>\n</template>\n\n<script src=\"./search_bar.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.SearchBar {\n  display: inline-flex;\n  align-items: baseline;\n  vertical-align: baseline;\n  justify-content: flex-end;\n\n  &.-expanded {\n    width: 100%;\n  }\n\n  .search-bar-input,\n  .search-button {\n    height: 29px;\n  }\n\n  .search-bar-input {\n    flex: 1 0 auto;\n  }\n\n  .cancel-search {\n    height: 50px;\n  }\n\n  .cancel-icon {\n    color: $fallback--text;\n    color: var(--btnTopBarText, $fallback--text);\n  }\n}\n\n</style>\n","import SearchBar from 'components/search_bar/search_bar.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faSignInAlt,\n  faSignOutAlt,\n  faHome,\n  faComments,\n  faBell,\n  faUserPlus,\n  faBullhorn,\n  faSearch,\n  faTachometerAlt,\n  faCog,\n  faInfoCircle\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faSignInAlt,\n  faSignOutAlt,\n  faHome,\n  faComments,\n  faBell,\n  faUserPlus,\n  faBullhorn,\n  faSearch,\n  faTachometerAlt,\n  faCog,\n  faInfoCircle\n)\n\nexport default {\n  components: {\n    SearchBar\n  },\n  data: () => ({\n    searchBarHidden: true,\n    supportsMask: window.CSS && window.CSS.supports && (\n      window.CSS.supports('mask-size', 'contain') ||\n        window.CSS.supports('-webkit-mask-size', 'contain') ||\n        window.CSS.supports('-moz-mask-size', 'contain') ||\n        window.CSS.supports('-ms-mask-size', 'contain') ||\n        window.CSS.supports('-o-mask-size', 'contain')\n    )\n  }),\n  computed: {\n    enableMask () { return this.supportsMask && this.$store.state.instance.logoMask },\n    logoStyle () {\n      return {\n        'visibility': this.enableMask ? 'hidden' : 'visible'\n      }\n    },\n    logoMaskStyle () {\n      return this.enableMask ? {\n        'mask-image': `url(${this.$store.state.instance.logo})`\n      } : {\n        'background-color': this.enableMask ? '' : 'transparent'\n      }\n    },\n    logoBgStyle () {\n      return Object.assign({\n        'margin': `${this.$store.state.instance.logoMargin} 0`,\n        opacity: this.searchBarHidden ? 1 : 0\n      }, this.enableMask ? {} : {\n        'background-color': this.enableMask ? '' : 'transparent'\n      })\n    },\n    logo () { return this.$store.state.instance.logo },\n    sitename () { return this.$store.state.instance.name },\n    hideSitename () { return this.$store.state.instance.hideSitename },\n    logoLeft () { return this.$store.state.instance.logoLeft },\n    currentUser () { return this.$store.state.users.currentUser },\n    privateMode () { return this.$store.state.instance.private }\n  },\n  methods: {\n    scrollToTop () {\n      window.scrollTo(0, 0)\n    },\n    logout () {\n      this.$router.replace('/main/public')\n      this.$store.dispatch('logout')\n    },\n    onSearchBarToggled (hidden) {\n      this.searchBarHidden = hidden\n    },\n    openSettingsModal () {\n      this.$store.dispatch('openSettingsModal')\n    }\n  }\n}\n","import { render } from \"./desktop_nav.vue?vue&type=template&id=a81d722a\"\nimport script from \"./desktop_nav.js?vue&type=script&lang=js\"\nexport * from \"./desktop_nav.js?vue&type=script&lang=js\"\n\nimport \"./desktop_nav.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Modal\n    v-if=\"isOpen\"\n    @backdropClicked=\"closeModal\"\n  >\n    <div class=\"user-reporting-panel panel\">\n      <div class=\"panel-heading\">\n        <div class=\"title\">\n          {{ $t('user_reporting.title', [user.screen_name_ui]) }}\n        </div>\n      </div>\n      <div class=\"panel-body\">\n        <div class=\"user-reporting-panel-left\">\n          <div>\n            <p>{{ $t('user_reporting.add_comment_description') }}</p>\n            <textarea\n              v-model=\"comment\"\n              class=\"form-control\"\n              :placeholder=\"$t('user_reporting.additional_comments')\"\n              rows=\"1\"\n              @input=\"resize\"\n            />\n          </div>\n          <div v-if=\"!user.is_local\">\n            <p>{{ $t('user_reporting.forward_description') }}</p>\n            <Checkbox v-model=\"forward\">\n              {{ $t('user_reporting.forward_to', [remoteInstance]) }}\n            </Checkbox>\n          </div>\n          <div>\n            <button\n              class=\"btn button-default\"\n              :disabled=\"processing\"\n              @click=\"reportUser\"\n            >\n              {{ $t('user_reporting.submit') }}\n            </button>\n            <div\n              v-if=\"error\"\n              class=\"alert error\"\n            >\n              {{ $t('user_reporting.generic_error') }}\n            </div>\n          </div>\n        </div>\n        <div class=\"user-reporting-panel-right\">\n          <List :items=\"statuses\">\n            <template v-slot:item=\"{item}\">\n              <div class=\"status-fadein user-reporting-panel-sitem\">\n                <Status\n                  :in-conversation=\"false\"\n                  :focused=\"false\"\n                  :statusoid=\"item\"\n                />\n                <Checkbox\n                  :model-value=\"isChecked(item.id)\"\n                  @update:model-value=\"checked => toggleStatus(checked, item.id)\"\n                />\n              </div>\n            </template>\n          </List>\n        </div>\n      </div>\n    </div>\n  </Modal>\n</template>\n\n<script src=\"./user_reporting_modal.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.user-reporting-panel {\n  width: 90vw;\n  max-width: 700px;\n  min-height: 20vh;\n  max-height: 80vh;\n\n  .panel-body {\n    display: flex;\n    flex-direction: column-reverse;\n    border-top: 1px solid;\n    border-color: $fallback--border;\n    border-color: var(--border, $fallback--border);\n    overflow: hidden;\n  }\n\n  &-left {\n    padding: 1.1em 0.7em 0.7em;\n    line-height: var(--post-line-height);\n    box-sizing: border-box;\n\n    > div {\n      margin-bottom: 1em;\n\n      &:last-child {\n        margin-bottom: 0;\n      }\n    }\n\n    p {\n      margin-top: 0;\n    }\n\n    textarea.form-control {\n      line-height: 16px;\n      resize: none;\n      overflow: hidden;\n      transition: min-height 200ms 100ms;\n      min-height: 44px;\n      width: 100%;\n    }\n\n    .btn {\n      min-width: 10em;\n      padding: 0 2em;\n    }\n\n    .alert {\n      margin: 1em 0 0 0;\n      line-height: 1.3em;\n    }\n  }\n\n  &-right {\n    display: flex;\n    flex-direction: column;\n    overflow-y: auto;\n  }\n\n  &-sitem {\n    display: flex;\n    justify-content: space-between;\n\n    /* TODO cleanup this */\n    > .Status {\n      flex: 1;\n    }\n\n    > .checkbox {\n      margin: 0.75em;\n    }\n  }\n\n  @media all and (min-width: 801px) {\n    .panel-body {\n      flex-direction: row;\n    }\n\n    &-left {\n      width: 50%;\n      max-width: 320px;\n      border-right: 1px solid;\n      border-color: $fallback--border;\n      border-color: var(--border, $fallback--border);\n      padding: 1.1em;\n\n      > div {\n        margin-bottom: 2em;\n      }\n    }\n\n    &-right {\n      width: 50%;\n      flex: 1 1 auto;\n      margin-bottom: 12px;\n    }\n  }\n}\n</style>\n","\nimport Status from '../status/status.vue'\nimport List from '../list/list.vue'\nimport Checkbox from '../checkbox/checkbox.vue'\nimport Modal from '../modal/modal.vue'\n\nconst UserReportingModal = {\n  components: {\n    Status,\n    List,\n    Checkbox,\n    Modal\n  },\n  data () {\n    return {\n      comment: '',\n      forward: false,\n      statusIdsToReport: [],\n      processing: false,\n      error: false\n    }\n  },\n  computed: {\n    isLoggedIn () {\n      return !!this.$store.state.users.currentUser\n    },\n    isOpen () {\n      return this.isLoggedIn && this.$store.state.reports.modalActivated\n    },\n    userId () {\n      return this.$store.state.reports.userId\n    },\n    user () {\n      return this.$store.getters.findUser(this.userId)\n    },\n    remoteInstance () {\n      return !this.user.is_local && this.user.screen_name.substr(this.user.screen_name.indexOf('@') + 1)\n    },\n    statuses () {\n      return this.$store.state.reports.statuses\n    },\n    preTickedIds () {\n      return this.$store.state.reports.preTickedIds\n    }\n  },\n  watch: {\n    userId: 'resetState',\n    preTickedIds (newValue) {\n      this.statusIdsToReport = newValue\n    }\n  },\n  methods: {\n    resetState () {\n      // Reset state\n      this.comment = ''\n      this.forward = false\n      this.statusIdsToReport = this.preTickedIds\n      this.processing = false\n      this.error = false\n    },\n    closeModal () {\n      this.$store.dispatch('closeUserReportingModal')\n    },\n    reportUser () {\n      this.processing = true\n      this.error = false\n      const params = {\n        userId: this.userId,\n        comment: this.comment,\n        forward: this.forward,\n        statusIds: this.statusIdsToReport\n      }\n      this.$store.state.api.backendInteractor.reportUser({ ...params })\n        .then(() => {\n          this.processing = false\n          this.resetState()\n          this.closeModal()\n        })\n        .catch(() => {\n          this.processing = false\n          this.error = true\n        })\n    },\n    clearError () {\n      this.error = false\n    },\n    isChecked (statusId) {\n      return this.statusIdsToReport.indexOf(statusId) !== -1\n    },\n    toggleStatus (checked, statusId) {\n      if (checked === this.isChecked(statusId)) {\n        return\n      }\n\n      if (checked) {\n        this.statusIdsToReport.push(statusId)\n      } else {\n        this.statusIdsToReport.splice(this.statusIdsToReport.indexOf(statusId), 1)\n      }\n    },\n    resize (e) {\n      const target = e.target || e\n      if (!(target instanceof window.Element)) { return }\n      // Auto is needed to make textbox shrink when removing lines\n      target.style.height = 'auto'\n      target.style.height = `${target.scrollHeight}px`\n      if (target.value === '') {\n        target.style.height = null\n      }\n    }\n  }\n}\n\nexport default UserReportingModal\n","import { render } from \"./user_reporting_modal.vue?vue&type=template&id=116c0e28\"\nimport script from \"./user_reporting_modal.js?vue&type=script&lang=js\"\nexport * from \"./user_reporting_modal.js?vue&type=script&lang=js\"\n\nimport \"./user_reporting_modal.vue?vue&type=style&index=0&id=116c0e28&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Modal\n    v-if=\"isLoggedIn && !resettingForm\"\n    :is-open=\"modalActivated\"\n    class=\"post-form-modal-view\"\n    @backdropClicked=\"closeModal\"\n  >\n    <div class=\"post-form-modal-panel panel\">\n      <div class=\"panel-heading\">\n        {{ $t('post_status.new_status') }}\n      </div>\n      <PostStatusForm\n        class=\"panel-body\"\n        v-bind=\"params\"\n        @posted=\"closeModal\"\n      />\n    </div>\n  </Modal>\n</template>\n\n<script src=\"./post_status_modal.js\"></script>\n\n<style lang=\"scss\">\n.modal-view.post-form-modal-view {\n  align-items: flex-start;\n}\n\n.post-form-modal-panel {\n  flex-shrink: 0;\n  margin-top: 25%;\n  margin-bottom: 2em;\n  width: 100%;\n  max-width: 700px;\n\n  @media (orientation: landscape) {\n    margin-top: 8%;\n  }\n}\n</style>\n","import PostStatusForm from '../post_status_form/post_status_form.vue'\nimport Modal from '../modal/modal.vue'\nimport get from 'lodash/get'\n\nconst PostStatusModal = {\n  components: {\n    PostStatusForm,\n    Modal\n  },\n  data () {\n    return {\n      resettingForm: false\n    }\n  },\n  computed: {\n    isLoggedIn () {\n      return !!this.$store.state.users.currentUser\n    },\n    modalActivated () {\n      return this.$store.state.postStatus.modalActivated\n    },\n    isFormVisible () {\n      return this.isLoggedIn && !this.resettingForm && this.modalActivated\n    },\n    params () {\n      return this.$store.state.postStatus.params || {}\n    }\n  },\n  watch: {\n    params (newVal, oldVal) {\n      if (get(newVal, 'repliedUser.id') !== get(oldVal, 'repliedUser.id')) {\n        this.resettingForm = true\n        this.$nextTick(() => {\n          this.resettingForm = false\n        })\n      }\n    },\n    isFormVisible (val) {\n      if (val) {\n        this.$nextTick(() => this.$el && this.$el.querySelector('textarea').focus())\n      }\n    }\n  },\n  methods: {\n    closeModal () {\n      this.$store.dispatch('closePostStatusModal')\n    }\n  }\n}\n\nexport default PostStatusModal\n","import { render } from \"./post_status_modal.vue?vue&type=template&id=b6b8d3a2\"\nimport script from \"./post_status_modal.js?vue&type=script&lang=js\"\nexport * from \"./post_status_modal.js?vue&type=script&lang=js\"\n\nimport \"./post_status_modal.vue?vue&type=style&index=0&id=b6b8d3a2&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"global-notice-list\">\n    <div\n      v-for=\"(notice, index) in notices\"\n      :key=\"index\"\n      class=\"alert global-notice\"\n      :class=\"{ ['global-' + notice.level]: true }\"\n    >\n      <div class=\"notice-message\">\n        {{ $t(notice.messageKey, notice.messageArgs) }}\n      </div>\n      <button\n        class=\"button-unstyled close-notice\"\n        @click=\"closeNotice(notice)\"\n      >\n        <FAIcon\n          class=\"fa-scale-110 fa-old-padding\"\n          icon=\"times\"\n        />\n      </button>\n    </div>\n  </div>\n</template>\n\n<script src=\"./global_notice_list.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.global-notice-list {\n  position: fixed;\n  top: 50px;\n  width: 100%;\n  pointer-events: none;\n  z-index: 1001;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n\n  .global-notice {\n    pointer-events: auto;\n    text-align: center;\n    width: 40em;\n    max-width: calc(100% - 3em);\n    display: flex;\n    padding-left: 1.5em;\n    line-height: 2;\n    margin-bottom: 0.5em;\n\n    .notice-message {\n      flex: 1 1 100%;\n    }\n  }\n\n  .global-error {\n    background-color: var(--alertPopupError, $fallback--cRed);\n    color: var(--alertPopupErrorText, $fallback--text);\n\n    .svg-inline--fa {\n      color: var(--alertPopupErrorText, $fallback--text);\n    }\n  }\n\n  .global-warning {\n    background-color: var(--alertPopupWarning, $fallback--cOrange);\n    color: var(--alertPopupWarningText, $fallback--text);\n\n    .svg-inline--fa {\n      color: var(--alertPopupWarningText, $fallback--text);\n    }\n  }\n\n  .global-success {\n    background-color: var(--alertPopupSuccess, $fallback--cGreen);\n    color: var(--alertPopupSuccessText, $fallback--text);\n    .svg-inline--fa {\n      color: var(--alertPopupSuccessText, $fallback--text);\n    }\n  }\n\n  .global-info {\n    background-color: var(--alertPopupNeutral, $fallback--fg);\n    color: var(--alertPopupNeutralText, $fallback--text);\n    .svg-inline--fa {\n      color: var(--alertPopupNeutralText, $fallback--text);\n    }\n  }\n\n  .close-notice {\n    padding-right: 0.2em;\n    .svg-inline--fa:hover {\n      opacity: 0.6;\n    }\n  }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes\n)\n\nconst GlobalNoticeList = {\n  computed: {\n    notices () {\n      return this.$store.state.interface.globalNotices\n    }\n  },\n  methods: {\n    closeNotice (notice) {\n      this.$store.dispatch('removeGlobalNotice', notice)\n    }\n  }\n}\n\nexport default GlobalNoticeList\n","import { render } from \"./global_notice_list.vue?vue&type=template&id=5e034d4c\"\nimport script from \"./global_notice_list.js?vue&type=script&lang=js\"\nexport * from \"./global_notice_list.js?vue&type=script&lang=js\"\n\nimport \"./global_notice_list.vue?vue&type=style&index=0&id=5e034d4c&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import UserPanel from './components/user_panel/user_panel.vue'\nimport NavPanel from './components/nav_panel/nav_panel.vue'\nimport InstanceSpecificPanel from './components/instance_specific_panel/instance_specific_panel.vue'\nimport FeaturesPanel from './components/features_panel/features_panel.vue'\nimport WhoToFollowPanel from './components/who_to_follow_panel/who_to_follow_panel.vue'\nimport ShoutPanel from './components/shout_panel/shout_panel.vue'\nimport SettingsModal from './components/settings_modal/settings_modal.vue'\nimport MediaModal from './components/media_modal/media_modal.vue'\nimport SideDrawer from './components/side_drawer/side_drawer.vue'\nimport MobilePostStatusButton from './components/mobile_post_status_button/mobile_post_status_button.vue'\nimport MobileNav from './components/mobile_nav/mobile_nav.vue'\nimport DesktopNav from './components/desktop_nav/desktop_nav.vue'\nimport UserReportingModal from './components/user_reporting_modal/user_reporting_modal.vue'\nimport PostStatusModal from './components/post_status_modal/post_status_modal.vue'\nimport GlobalNoticeList from './components/global_notice_list/global_notice_list.vue'\nimport { windowWidth, windowHeight } from './services/window_utils/window_utils'\nimport { mapGetters } from 'vuex'\nimport { defineAsyncComponent } from 'vue'\n\nexport default {\n  name: 'app',\n  components: {\n    UserPanel,\n    NavPanel,\n    Notifications: defineAsyncComponent(() => import('./components/notifications/notifications.vue')),\n    InstanceSpecificPanel,\n    FeaturesPanel,\n    WhoToFollowPanel,\n    ShoutPanel,\n    MediaModal,\n    SideDrawer,\n    MobilePostStatusButton,\n    MobileNav,\n    DesktopNav,\n    SettingsModal,\n    UserReportingModal,\n    PostStatusModal,\n    GlobalNoticeList\n  },\n  data: () => ({\n    mobileActivePanel: 'timeline'\n  }),\n  created () {\n    // Load the locale from the storage\n    const val = this.$store.getters.mergedConfig.interfaceLanguage\n    this.$store.dispatch('setOption', { name: 'interfaceLanguage', value: val })\n    window.addEventListener('resize', this.updateMobileState)\n  },\n  unmounted () {\n    window.removeEventListener('resize', this.updateMobileState)\n  },\n  computed: {\n    classes () {\n      return [\n        {\n          '-reverse': this.reverseLayout,\n          '-no-sticky-headers': this.noSticky,\n          '-has-new-post-button': this.newPostButtonShown\n        },\n        '-' + this.layoutType\n      ]\n    },\n    currentUser () { return this.$store.state.users.currentUser },\n    userBackground () { return this.currentUser.background_image },\n    instanceBackground () {\n      return this.mergedConfig.hideInstanceWallpaper\n        ? null\n        : this.$store.state.instance.background\n    },\n    background () { return this.userBackground || this.instanceBackground },\n    bgStyle () {\n      if (this.background) {\n        return {\n          '--body-background-image': `url(${this.background})`\n        }\n      }\n    },\n    shout () { return this.$store.state.shout.joined },\n    suggestionsEnabled () { return this.$store.state.instance.suggestionsEnabled },\n    showInstanceSpecificPanel () {\n      return this.$store.state.instance.showInstanceSpecificPanel &&\n        !this.$store.getters.mergedConfig.hideISP &&\n        this.$store.state.instance.instanceSpecificPanelContent\n    },\n    isChats () {\n      return this.$route.name === 'chat' || this.$route.name === 'chats'\n    },\n    newPostButtonShown () {\n      if (this.isChats) return false\n      return this.$store.getters.mergedConfig.alwaysShowNewPostButton || this.layoutType === 'mobile'\n    },\n    showFeaturesPanel () { return this.$store.state.instance.showFeaturesPanel },\n    shoutboxPosition () {\n      return this.$store.getters.mergedConfig.alwaysShowNewPostButton || false\n    },\n    hideShoutbox () {\n      return this.$store.getters.mergedConfig.hideShoutbox\n    },\n    layoutType () { return this.$store.state.interface.layoutType },\n    privateMode () { return this.$store.state.instance.private },\n    reverseLayout () {\n      const { thirdColumnMode, sidebarRight: reverseSetting } = this.$store.getters.mergedConfig\n      if (this.layoutType !== 'wide') {\n        return reverseSetting\n      } else {\n        return thirdColumnMode === 'notifications' ? reverseSetting : !reverseSetting\n      }\n    },\n    noSticky () { return this.$store.getters.mergedConfig.disableStickyHeaders },\n    showScrollbars () { return this.$store.getters.mergedConfig.showScrollbars },\n    ...mapGetters(['mergedConfig'])\n  },\n  methods: {\n    updateMobileState () {\n      this.$store.dispatch('setLayoutWidth', windowWidth())\n      this.$store.dispatch('setLayoutHeight', windowHeight())\n    }\n  }\n}\n","import { render } from \"./App.vue?vue&type=template&id=6df91bcb\"\nimport script from \"./App.js?vue&type=script&lang=js\"\nexport * from \"./App.js?vue&type=script&lang=js\"\n\nimport \"./App.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div :class=\"['Timeline', classes.root]\">\n    <div :class=\"classes.header\">\n      <TimelineMenu v-if=\"!embedded\" />\n      <button\n        v-if=\"showLoadButton\"\n        class=\"button-default loadmore-button\"\n        @click.prevent=\"showNewStatuses\"\n      >\n        {{ loadButtonString }}\n      </button>\n      <div\n        v-else-if=\"!embedded\"\n        class=\"loadmore-text faint\"\n        @click.prevent\n      >\n        {{ $t('timeline.up_to_date') }}\n      </div>\n      <TimelineQuickSettings v-if=\"!embedded\" />\n    </div>\n    <div :class=\"classes.body\">\n      <div\n        ref=\"timeline\"\n        class=\"timeline\"\n      >\n        <conversation\n          v-for=\"statusId in filteredPinnedStatusIds\"\n          :key=\"statusId + '-pinned'\"\n          class=\"status-fadein\"\n          :status-id=\"statusId\"\n          :collapsable=\"true\"\n          :pinned-status-ids-object=\"pinnedStatusIdsObject\"\n          :in-profile=\"inProfile\"\n          :profile-user-id=\"userId\"\n        />\n        <conversation\n          v-for=\"status in filteredVisibleStatuses\"\n          :key=\"status.id\"\n          class=\"status-fadein\"\n          :status-id=\"status.id\"\n          :collapsable=\"true\"\n          :in-profile=\"inProfile\"\n          :profile-user-id=\"userId\"\n          :virtual-hidden=\"virtualScrollingEnabled && !statusesToDisplay.includes(status.id)\"\n        />\n      </div>\n    </div>\n    <div :class=\"classes.footer\">\n      <teleport :to=\"footerSlipgate\" :disabled=\"!embedded || !footerSlipgate\">\n        <div\n          v-if=\"count===0\"\n          class=\"new-status-notification text-center faint\"\n        >\n          {{ $t('timeline.no_statuses') }}\n        </div>\n        <div\n          v-else-if=\"bottomedOut\"\n          class=\"new-status-notification text-center faint\"\n        >\n          {{ $t('timeline.no_more_statuses') }}\n        </div>\n        <button\n          v-else-if=\"!timeline.loading\"\n          class=\"button-unstyled -link\"\n          @click.prevent=\"fetchOlderStatuses()\"\n        >\n          <div class=\"new-status-notification text-center\">\n            {{ $t('timeline.load_older') }}\n          </div>\n        </button>\n        <div\n          v-else\n          class=\"new-status-notification text-center\"\n        >\n          <FAIcon\n            icon=\"circle-notch\"\n            spin\n            size=\"lg\"\n          />\n        </div>\n      </teleport>\n    </div>\n  </div>\n</template>\n\n<script src=\"./timeline.js\"></script>\n\n<style src=\"./timeline.scss\" lang=\"scss\"> </style>\n","<template>\n  <div\n    v-if=\"!hideStatus\"\n    :style=\"hiddenStyle\"\n    class=\"Conversation\"\n    :class=\"{ '-expanded' : isExpanded, 'panel' : isExpanded }\"\n  >\n    <div\n      v-if=\"isExpanded\"\n      class=\"panel-heading conversation-heading -sticky\"\n    >\n      <span class=\"title\"> {{ $t('timeline.conversation') }} </span>\n      <button\n        v-if=\"collapsable\"\n        class=\"button-unstyled -link\"\n        @click.prevent=\"toggleExpanded\"\n      >\n        {{ $t('timeline.collapse') }}\n      </button>\n    </div>\n    <div class=\"conversation-body panel-body\">\n      <div\n        v-if=\"isTreeView\"\n        class=\"thread-body\"\n      >\n        <div\n          v-if=\"shouldShowAllConversationButton\"\n          class=\"conversation-dive-to-top-level-box\"\n        >\n          <i18n-t\n            keypath=\"status.show_all_conversation_with_icon\"\n            tag=\"button\"\n            class=\"button-unstyled -link\"\n            @click.prevent=\"diveToTopLevel\"\n            scope=\"global\"\n          >\n            <template #icon>\n              <FAIcon\n                icon=\"angle-double-left\"\n              />\n            </template>\n            <template #text>\n              <span>\n                {{ $tc('status.show_all_conversation', otherTopLevelCount, { numStatus: otherTopLevelCount }) }}\n              </span>\n            </template>\n          </i18n-t>\n        </div>\n        <div\n          v-if=\"shouldShowAncestors\"\n          class=\"thread-ancestors\"\n        >\n          <div\n            v-for=\"status in ancestorsOf(diveRoot)\"\n            :key=\"status.id\"\n            class=\"thread-ancestor\"\n            :class=\"{'thread-ancestor-has-other-replies': getReplies(status.id).length > 1, '-faded': shouldFadeAncestors}\"\n          >\n            <status\n              ref=\"statusComponent\"\n              :inline-expanded=\"collapsable && isExpanded\"\n              :statusoid=\"status\"\n              :expandable=\"!isExpanded\"\n              :show-pinned=\"pinnedStatusIdsObject && pinnedStatusIdsObject[status.id]\"\n              :focused=\"focused(status.id)\"\n              :in-conversation=\"isExpanded\"\n              :highlight=\"getHighlight()\"\n              :replies=\"getReplies(status.id)\"\n              :in-profile=\"inProfile\"\n              :profile-user-id=\"profileUserId\"\n              class=\"conversation-status status-fadein panel-body\"\n\n              :simple-tree=\"treeViewIsSimple\"\n              :toggle-thread-display=\"toggleThreadDisplay\"\n              :thread-display-status=\"threadDisplayStatus\"\n              :show-thread-recursively=\"showThreadRecursively\"\n              :total-reply-count=\"totalReplyCount\"\n              :total-reply-depth=\"totalReplyDepth\"\n              :show-other-replies-as-button=\"showOtherRepliesButtonInsideStatus\"\n              :dive=\"() => diveIntoStatus(status.id)\"\n\n              :controlled-showing-tall=\"statusContentProperties[status.id].showingTall\"\n              :controlled-expanding-subject=\"statusContentProperties[status.id].expandingSubject\"\n              :controlled-showing-long-subject=\"statusContentProperties[status.id].showingLongSubject\"\n              :controlled-replying=\"statusContentProperties[status.id].replying\"\n              :controlled-media-playing=\"statusContentProperties[status.id].mediaPlaying\"\n              :controlled-toggle-showing-tall=\"() => toggleStatusContentProperty(status.id, 'showingTall')\"\n              :controlled-toggle-expanding-subject=\"() => toggleStatusContentProperty(status.id, 'expandingSubject')\"\n              :controlled-toggle-showing-long-subject=\"() => toggleStatusContentProperty(status.id, 'showingLongSubject')\"\n              :controlled-toggle-replying=\"() => toggleStatusContentProperty(status.id, 'replying')\"\n              :controlled-set-media-playing=\"(newVal) => toggleStatusContentProperty(status.id, 'mediaPlaying', newVal)\"\n\n              @goto=\"setHighlight\"\n              @toggleExpanded=\"toggleExpanded\"\n            />\n            <div\n              v-if=\"showOtherRepliesButtonBelowStatus && getReplies(status.id).length > 1\"\n              class=\"thread-ancestor-dive-box\"\n            >\n              <div\n                class=\"thread-ancestor-dive-box-inner\"\n              >\n                <i18n-t\n                  tag=\"button\"\n                  scope=\"global\"\n                  keypath=\"status.ancestor_follow_with_icon\"\n                  class=\"button-unstyled -link thread-tree-show-replies-button\"\n                  @click.prevent=\"diveIntoStatus(status.id)\"\n                >\n                  <template #icon>\n                    <FAIcon\n                      icon=\"angle-double-right\"\n                    />\n                  </template>\n                  <template #text>\n                    <span>\n                      {{ $tc('status.ancestor_follow', getReplies(status.id).length - 1, { numReplies: getReplies(status.id).length - 1 }) }}\n                    </span>\n                  </template>\n                </i18n-t>\n              </div>\n            </div>\n          </div>\n        </div>\n        <thread-tree\n          v-for=\"status in showingTopLevel\"\n          :key=\"status.id\"\n          ref=\"statusComponent\"\n          :depth=\"0\"\n\n          :status=\"status\"\n          :in-profile=\"inProfile\"\n          :conversation=\"conversation\"\n          :collapsable=\"collapsable\"\n          :is-expanded=\"isExpanded\"\n          :pinned-status-ids-object=\"pinnedStatusIdsObject\"\n          :profile-user-id=\"profileUserId\"\n\n          :focused=\"focused\"\n          :get-replies=\"getReplies\"\n          :highlight=\"maybeHighlight\"\n          :set-highlight=\"setHighlight\"\n          :toggle-expanded=\"toggleExpanded\"\n\n          :simple=\"treeViewIsSimple\"\n          :toggle-thread-display=\"toggleThreadDisplay\"\n          :thread-display-status=\"threadDisplayStatus\"\n          :show-thread-recursively=\"showThreadRecursively\"\n          :total-reply-count=\"totalReplyCount\"\n          :total-reply-depth=\"totalReplyDepth\"\n          :status-content-properties=\"statusContentProperties\"\n          :set-status-content-property=\"setStatusContentProperty\"\n          :toggle-status-content-property=\"toggleStatusContentProperty\"\n          :dive=\"canDive ? diveIntoStatus : undefined\"\n        />\n      </div>\n      <div\n        v-if=\"isLinearView\"\n        class=\"thread-body\"\n      >\n        <status\n          v-for=\"status in conversation\"\n          :key=\"status.id\"\n          ref=\"statusComponent\"\n          :inline-expanded=\"collapsable && isExpanded\"\n          :statusoid=\"status\"\n          :expandable=\"!isExpanded\"\n          :show-pinned=\"pinnedStatusIdsObject && pinnedStatusIdsObject[status.id]\"\n          :focused=\"focused(status.id)\"\n          :in-conversation=\"isExpanded\"\n          :highlight=\"getHighlight()\"\n          :replies=\"getReplies(status.id)\"\n          :in-profile=\"inProfile\"\n          :profile-user-id=\"profileUserId\"\n          class=\"conversation-status status-fadein panel-body\"\n\n          :toggle-thread-display=\"toggleThreadDisplay\"\n          :thread-display-status=\"threadDisplayStatus\"\n          :show-thread-recursively=\"showThreadRecursively\"\n          :total-reply-count=\"totalReplyCount\"\n          :total-reply-depth=\"totalReplyDepth\"\n          :status-content-properties=\"statusContentProperties\"\n          :set-status-content-property=\"setStatusContentProperty\"\n          :toggle-status-content-property=\"toggleStatusContentProperty\"\n\n          @goto=\"setHighlight\"\n          @toggleExpanded=\"toggleExpanded\"\n        />\n      </div>\n    </div>\n  </div>\n  <div\n    v-else\n    :style=\"hiddenStyle\"\n  />\n</template>\n\n<script src=\"./conversation.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.Conversation {\n  z-index: 1;\n\n  .conversation-dive-to-top-level-box {\n    padding: var(--status-margin, $status-margin);\n    border-bottom-width: 1px;\n    border-bottom-style: solid;\n    border-bottom-color: var(--border, $fallback--border);\n    border-radius: 0;\n    /* Make the button stretch along the whole row */\n    display: flex;\n    align-items: stretch;\n    flex-direction: column;\n  }\n\n  .thread-ancestors {\n    margin-left: var(--status-margin, $status-margin);\n    border-left: 2px solid var(--border, $fallback--border);\n  }\n\n  .thread-ancestor.-faded .StatusContent {\n    --link: var(--faintLink);\n    --text: var(--faint);\n    color: var(--text);\n  }\n\n  .thread-ancestor-dive-box {\n    padding-left: var(--status-margin, $status-margin);\n    border-bottom-width: 1px;\n    border-bottom-style: solid;\n    border-bottom-color: var(--border, $fallback--border);\n    border-radius: 0;\n    /* Make the button stretch along the whole row */\n    &, &-inner {\n      display: flex;\n      align-items: stretch;\n      flex-direction: column;\n    }\n  }\n  .thread-ancestor-dive-box-inner {\n    padding: var(--status-margin, $status-margin);\n  }\n\n  .conversation-status {\n    border-bottom-width: 1px;\n    border-bottom-style: solid;\n    border-bottom-color: var(--border, $fallback--border);\n    border-radius: 0;\n  }\n\n  .thread-ancestor-has-other-replies .conversation-status,\n  .thread-ancestor:last-child .conversation-status,\n  .thread-ancestor:last-child .thread-ancestor-dive-box,\n  &:last-child .conversation-status,\n  &.-expanded .thread-tree .conversation-status {\n    border-bottom: none;\n  }\n\n  .thread-ancestors + .thread-tree > .conversation-status {\n    border-top-width: 1px;\n    border-top-style: solid;\n    border-top-color: var(--border, $fallback--border);\n  }\n\n  /* expanded conversation in timeline */\n  &.status-fadein.-expanded .thread-body {\n    border-left-width: 4px;\n    border-left-style: solid;\n    border-left-color: $fallback--cRed;\n    border-left-color: var(--cRed, $fallback--cRed);\n    border-radius: 0 0 $fallback--panelRadius $fallback--panelRadius;\n    border-radius: 0 0 var(--panelRadius, $fallback--panelRadius) var(--panelRadius, $fallback--panelRadius);\n    border-bottom: 1px solid var(--border, $fallback--border);\n  }\n\n  &.-expanded.status-fadein {\n    margin: calc(var(--status-margin, $status-margin) / 2);\n  }\n}\n</style>\n","<template>\n  <div class=\"thread-tree\">\n    <status\n      :key=\"status.id\"\n      ref=\"statusComponent\"\n      :inline-expanded=\"collapsable && isExpanded\"\n      :statusoid=\"status\"\n      :expandable=\"!isExpanded\"\n      :show-pinned=\"pinnedStatusIdsObject && pinnedStatusIdsObject[status.id]\"\n      :focused=\"focused(status.id)\"\n      :in-conversation=\"isExpanded\"\n      :highlight=\"highlight\"\n      :replies=\"getReplies(status.id)\"\n      :in-profile=\"inProfile\"\n      :profile-user-id=\"profileUserId\"\n      class=\"conversation-status conversation-status-treeview status-fadein panel-body\"\n\n      :simple-tree=\"simple\"\n      :controlled-thread-display-status=\"threadDisplayStatus[status.id]\"\n      :controlled-toggle-thread-display=\"() => toggleThreadDisplay(status.id)\"\n\n      :controlled-showing-tall=\"currentProp.showingTall\"\n      :controlled-expanding-subject=\"currentProp.expandingSubject\"\n      :controlled-showing-long-subject=\"currentProp.showingLongSubject\"\n      :controlled-replying=\"currentProp.replying\"\n      :controlled-media-playing=\"currentProp.mediaPlaying\"\n      :controlled-toggle-showing-tall=\"() => toggleCurrentProp('showingTall')\"\n      :controlled-toggle-expanding-subject=\"() => toggleCurrentProp('expandingSubject')\"\n      :controlled-toggle-showing-long-subject=\"() => toggleCurrentProp('showingLongSubject')\"\n      :controlled-toggle-replying=\"() => toggleCurrentProp('replying')\"\n      :controlled-set-media-playing=\"(newVal) => setCurrentProp('mediaPlaying', newVal)\"\n      :dive=\"dive ? () => dive(status.id) : undefined\"\n\n      @goto=\"setHighlight\"\n      @toggleExpanded=\"toggleExpanded\"\n    />\n    <div\n      v-if=\"currentReplies.length && threadShowing\"\n      class=\"thread-tree-replies\"\n    >\n      <thread-tree\n        v-for=\"replyStatus in currentReplies\"\n        :key=\"replyStatus.id\"\n        ref=\"childComponent\"\n        :depth=\"depth + 1\"\n        :status=\"replyStatus\"\n\n        :in-profile=\"inProfile\"\n        :conversation=\"conversation\"\n        :collapsable=\"collapsable\"\n        :is-expanded=\"isExpanded\"\n        :pinned-status-ids-object=\"pinnedStatusIdsObject\"\n        :profile-user-id=\"profileUserId\"\n\n        :focused=\"focused\"\n        :get-replies=\"getReplies\"\n        :highlight=\"highlight\"\n        :set-highlight=\"setHighlight\"\n        :toggle-expanded=\"toggleExpanded\"\n\n        :simple=\"simple\"\n        :toggle-thread-display=\"toggleThreadDisplay\"\n        :thread-display-status=\"threadDisplayStatus\"\n        :show-thread-recursively=\"showThreadRecursively\"\n        :total-reply-count=\"totalReplyCount\"\n        :total-reply-depth=\"totalReplyDepth\"\n        :status-content-properties=\"statusContentProperties\"\n        :set-status-content-property=\"setStatusContentProperty\"\n        :toggle-status-content-property=\"toggleStatusContentProperty\"\n        :dive=\"dive\"\n      />\n    </div>\n    <div\n      v-if=\"currentReplies.length && !threadShowing\"\n      class=\"thread-tree-replies thread-tree-replies-hidden\"\n    >\n      <i18n-t\n        v-if=\"simple\"\n        scope=\"global\"\n        tag=\"button\"\n        keypath=\"status.thread_follow_with_icon\"\n        class=\"button-unstyled -link thread-tree-show-replies-button\"\n        @click.prevent=\"dive(status.id)\"\n      >\n        <template #icon>\n          <FAIcon\n            icon=\"angle-double-right\"\n          />\n        </template>\n        <template #text>\n          <span>\n            {{ $tc('status.thread_follow', totalReplyCount[status.id], { numStatus: totalReplyCount[status.id] }) }}\n          </span>\n        </template>\n      </i18n-t>\n      <i18n-t\n        v-else\n        scope=\"global\"\n        tag=\"button\"\n        keypath=\"status.thread_show_full_with_icon\"\n        class=\"button-unstyled -link thread-tree-show-replies-button\"\n        @click.prevent=\"showThreadRecursively(status.id)\"\n      >\n        <template #icon>\n          <FAIcon\n            icon=\"angle-double-down\"\n          />\n        </template>\n        <template #text>\n          <span>\n            {{ $tc('status.thread_show_full', totalReplyCount[status.id], { numStatus: totalReplyCount[status.id], depth: totalReplyDepth[status.id] }) }}\n          </span>\n        </template>\n      </i18n-t>\n    </div>\n  </div>\n</template>\n\n<script src=\"./thread_tree.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n.thread-tree-replies {\n  margin-left: var(--status-margin, $status-margin);\n  border-left: 2px solid var(--border, $fallback--border);\n}\n\n.thread-tree-replies-hidden {\n  padding: var(--status-margin, $status-margin);\n  /* Make the button stretch along the whole row */\n  display: flex;\n  align-items: stretch;\n  flex-direction: column;\n}\n</style>\n","import Status from '../status/status.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faAngleDoubleDown,\n  faAngleDoubleRight\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faAngleDoubleDown,\n  faAngleDoubleRight\n)\n\nconst ThreadTree = {\n  components: {\n    Status\n  },\n  name: 'ThreadTree',\n  props: {\n    depth: Number,\n    status: Object,\n    inProfile: Boolean,\n    conversation: Array,\n    collapsable: Boolean,\n    isExpanded: Boolean,\n    pinnedStatusIdsObject: Object,\n    profileUserId: String,\n\n    focused: Function,\n    highlight: String,\n    getReplies: Function,\n    setHighlight: Function,\n    toggleExpanded: Function,\n\n    simple: Boolean,\n    // to control display of the whole thread forest\n    toggleThreadDisplay: Function,\n    threadDisplayStatus: Object,\n    showThreadRecursively: Function,\n    totalReplyCount: Object,\n    totalReplyDepth: Object,\n    statusContentProperties: Object,\n    setStatusContentProperty: Function,\n    toggleStatusContentProperty: Function,\n    dive: Function\n  },\n  computed: {\n    suspendable () {\n      const selfSuspendable = this.$refs.statusComponent ? this.$refs.statusComponent.suspendable : true\n      if (this.$refs.childComponent) {\n        return selfSuspendable && this.$refs.childComponent.every(s => s.suspendable)\n      }\n      return selfSuspendable\n    },\n    reverseLookupTable () {\n      return this.conversation.reduce((table, status, index) => {\n        table[status.id] = index\n        return table\n      }, {})\n    },\n    currentReplies () {\n      return this.getReplies(this.status.id).map(({ id }) => this.statusById(id))\n    },\n    threadShowing () {\n      return this.threadDisplayStatus[this.status.id] === 'showing'\n    },\n    currentProp () {\n      return this.statusContentProperties[this.status.id]\n    }\n  },\n  methods: {\n    statusById (id) {\n      return this.conversation[this.reverseLookupTable[id]]\n    },\n    collapseThread () {\n    },\n    showThread () {\n    },\n    showAllSubthreads () {\n    },\n    toggleCurrentProp (name) {\n      this.toggleStatusContentProperty(this.status.id, name)\n    },\n    setCurrentProp (name, newVal) {\n      this.setStatusContentProperty(this.status.id, name)\n    }\n  }\n}\n\nexport default ThreadTree\n","import { render } from \"./thread_tree.vue?vue&type=template&id=38969046\"\nimport script from \"./thread_tree.js?vue&type=script&lang=js\"\nexport * from \"./thread_tree.js?vue&type=script&lang=js\"\n\nimport \"./thread_tree.vue?vue&type=style&index=0&id=38969046&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { reduce, filter, findIndex, clone, get } from 'lodash'\nimport Status from '../status/status.vue'\nimport ThreadTree from '../thread_tree/thread_tree.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faAngleDoubleDown,\n  faAngleDoubleLeft,\n  faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faAngleDoubleDown,\n  faAngleDoubleLeft,\n  faChevronLeft\n)\n\nconst sortById = (a, b) => {\n  const idA = a.type === 'retweet' ? a.retweeted_status.id : a.id\n  const idB = b.type === 'retweet' ? b.retweeted_status.id : b.id\n  const seqA = Number(idA)\n  const seqB = Number(idB)\n  const isSeqA = !Number.isNaN(seqA)\n  const isSeqB = !Number.isNaN(seqB)\n  if (isSeqA && isSeqB) {\n    return seqA < seqB ? -1 : 1\n  } else if (isSeqA && !isSeqB) {\n    return -1\n  } else if (!isSeqA && isSeqB) {\n    return 1\n  } else {\n    return idA < idB ? -1 : 1\n  }\n}\n\nconst sortAndFilterConversation = (conversation, statusoid) => {\n  if (statusoid.type === 'retweet') {\n    conversation = filter(\n      conversation,\n      (status) => (status.type === 'retweet' || status.id !== statusoid.retweeted_status.id)\n    )\n  } else {\n    conversation = filter(conversation, (status) => status.type !== 'retweet')\n  }\n  return conversation.filter(_ => _).sort(sortById)\n}\n\nconst conversation = {\n  data () {\n    return {\n      highlight: null,\n      expanded: false,\n      threadDisplayStatusObject: {}, // id => 'showing' | 'hidden'\n      statusContentPropertiesObject: {},\n      inlineDivePosition: null\n    }\n  },\n  props: [\n    'statusId',\n    'collapsable',\n    'isPage',\n    'pinnedStatusIdsObject',\n    'inProfile',\n    'profileUserId',\n    'virtualHidden'\n  ],\n  created () {\n    if (this.isPage) {\n      this.fetchConversation()\n    }\n  },\n  computed: {\n    maxDepthToShowByDefault () {\n      // maxDepthInThread = max number of depths that is *visible*\n      // since our depth starts with 0 and \"showing\" means \"showing children\"\n      // there is a -2 here\n      const maxDepth = this.$store.getters.mergedConfig.maxDepthInThread - 2\n      return maxDepth >= 1 ? maxDepth : 1\n    },\n    displayStyle () {\n      return this.$store.getters.mergedConfig.conversationDisplay\n    },\n    isTreeView () {\n      return !this.isLinearView\n    },\n    treeViewIsSimple () {\n      return !this.$store.getters.mergedConfig.conversationTreeAdvanced\n    },\n    isLinearView () {\n      return this.displayStyle === 'linear'\n    },\n    shouldFadeAncestors () {\n      return this.$store.getters.mergedConfig.conversationTreeFadeAncestors\n    },\n    otherRepliesButtonPosition () {\n      return this.$store.getters.mergedConfig.conversationOtherRepliesButton\n    },\n    showOtherRepliesButtonBelowStatus () {\n      return this.otherRepliesButtonPosition === 'below'\n    },\n    showOtherRepliesButtonInsideStatus () {\n      return this.otherRepliesButtonPosition === 'inside'\n    },\n    suspendable () {\n      if (this.isTreeView) {\n        return Object.entries(this.statusContentProperties)\n          .every(([k, prop]) => !prop.replying && prop.mediaPlaying.length === 0)\n      }\n      if (this.$refs.statusComponent && this.$refs.statusComponent[0]) {\n        return this.$refs.statusComponent.every(s => s.suspendable)\n      } else {\n        return true\n      }\n    },\n    hideStatus () {\n      return this.virtualHidden && this.suspendable\n    },\n    status () {\n      return this.$store.state.statuses.allStatusesObject[this.statusId]\n    },\n    originalStatusId () {\n      if (this.status.retweeted_status) {\n        return this.status.retweeted_status.id\n      } else {\n        return this.statusId\n      }\n    },\n    conversationId () {\n      return this.getConversationId(this.statusId)\n    },\n    conversation () {\n      if (!this.status) {\n        return []\n      }\n\n      if (!this.isExpanded) {\n        return [this.status]\n      }\n\n      const conversation = clone(this.$store.state.statuses.conversationsObject[this.conversationId])\n      const statusIndex = findIndex(conversation, { id: this.originalStatusId })\n      if (statusIndex !== -1) {\n        conversation[statusIndex] = this.status\n      }\n\n      return sortAndFilterConversation(conversation, this.status)\n    },\n    statusMap () {\n      return this.conversation.reduce((res, s) => {\n        res[s.id] = s\n        return res\n      }, {})\n    },\n    threadTree () {\n      const reverseLookupTable = this.conversation.reduce((table, status, index) => {\n        table[status.id] = index\n        return table\n      }, {})\n\n      const threads = this.conversation.reduce((a, cur) => {\n        const id = cur.id\n        a.forest[id] = this.getReplies(id)\n          .map(s => s.id)\n\n        return a\n      }, {\n        forest: {}\n      })\n\n      const walk = (forest, topLevel, depth = 0, processed = {}) => topLevel.map(id => {\n        if (processed[id]) {\n          return []\n        }\n\n        processed[id] = true\n        return [{\n          status: this.conversation[reverseLookupTable[id]],\n          id,\n          depth\n        }, walk(forest, forest[id], depth + 1, processed)].reduce((a, b) => a.concat(b), [])\n      }).reduce((a, b) => a.concat(b), [])\n\n      const linearized = walk(threads.forest, this.topLevel.map(k => k.id))\n\n      return linearized\n    },\n    replyIds () {\n      return this.conversation.map(k => k.id)\n        .reduce((res, id) => {\n          res[id] = (this.replies[id] || []).map(k => k.id)\n          return res\n        }, {})\n    },\n    totalReplyCount () {\n      const sizes = {}\n      const subTreeSizeFor = (id) => {\n        if (sizes[id]) {\n          return sizes[id]\n        }\n        sizes[id] = 1 + this.replyIds[id].map(cid => subTreeSizeFor(cid)).reduce((a, b) => a + b, 0)\n        return sizes[id]\n      }\n      this.conversation.map(k => k.id).map(subTreeSizeFor)\n      return Object.keys(sizes).reduce((res, id) => {\n        res[id] = sizes[id] - 1 // exclude itself\n        return res\n      }, {})\n    },\n    totalReplyDepth () {\n      const depths = {}\n      const subTreeDepthFor = (id) => {\n        if (depths[id]) {\n          return depths[id]\n        }\n        depths[id] = 1 + this.replyIds[id].map(cid => subTreeDepthFor(cid)).reduce((a, b) => a > b ? a : b, 0)\n        return depths[id]\n      }\n      this.conversation.map(k => k.id).map(subTreeDepthFor)\n      return Object.keys(depths).reduce((res, id) => {\n        res[id] = depths[id] - 1 // exclude itself\n        return res\n      }, {})\n    },\n    depths () {\n      return this.threadTree.reduce((a, k) => {\n        a[k.id] = k.depth\n        return a\n      }, {})\n    },\n    topLevel () {\n      const topLevel = this.conversation.reduce((tl, cur) =>\n        tl.filter(k => this.getReplies(cur.id).map(v => v.id).indexOf(k.id) === -1), this.conversation)\n      return topLevel\n    },\n    otherTopLevelCount () {\n      return this.topLevel.length - 1\n    },\n    showingTopLevel () {\n      if (this.canDive && this.diveRoot) {\n        return [this.statusMap[this.diveRoot]]\n      }\n      return this.topLevel\n    },\n    diveRoot () {\n      const statusId = this.inlineDivePosition || this.statusId\n      const isTopLevel = !this.parentOf(statusId)\n      return isTopLevel ? null : statusId\n    },\n    diveDepth () {\n      return this.canDive && this.diveRoot ? this.depths[this.diveRoot] : 0\n    },\n    diveMode () {\n      return this.canDive && !!this.diveRoot\n    },\n    shouldShowAllConversationButton () {\n      // The \"show all conversation\" button tells the user that there exist\n      // other toplevel statuses, so do not show it if there is only a single root\n      return this.isTreeView && this.isExpanded && this.diveMode && this.topLevel.length > 1\n    },\n    shouldShowAncestors () {\n      return this.isTreeView && this.isExpanded && this.ancestorsOf(this.diveRoot).length\n    },\n    replies () {\n      let i = 1\n      // eslint-disable-next-line camelcase\n      return reduce(this.conversation, (result, { id, in_reply_to_status_id }) => {\n        /* eslint-disable camelcase */\n        const irid = in_reply_to_status_id\n        /* eslint-enable camelcase */\n        if (irid) {\n          result[irid] = result[irid] || []\n          result[irid].push({\n            name: `#${i}`,\n            id: id\n          })\n        }\n        i++\n        return result\n      }, {})\n    },\n    isExpanded () {\n      return !!(this.expanded || this.isPage)\n    },\n    hiddenStyle () {\n      const height = (this.status && this.status.virtualHeight) || '120px'\n      return this.virtualHidden ? { height } : {}\n    },\n    threadDisplayStatus () {\n      return this.conversation.reduce((a, k) => {\n        const id = k.id\n        const depth = this.depths[id]\n        const status = (() => {\n          if (this.threadDisplayStatusObject[id]) {\n            return this.threadDisplayStatusObject[id]\n          }\n          if ((depth - this.diveDepth) <= this.maxDepthToShowByDefault) {\n            return 'showing'\n          } else {\n            return 'hidden'\n          }\n        })()\n\n        a[id] = status\n        return a\n      }, {})\n    },\n    statusContentProperties () {\n      return this.conversation.reduce((a, k) => {\n        const id = k.id\n        const props = (() => {\n          const def = {\n            showingTall: false,\n            expandingSubject: false,\n            showingLongSubject: false,\n            isReplying: false,\n            mediaPlaying: []\n          }\n\n          if (this.statusContentPropertiesObject[id]) {\n            return {\n              ...def,\n              ...this.statusContentPropertiesObject[id]\n            }\n          }\n          return def\n        })()\n\n        a[id] = props\n        return a\n      }, {})\n    },\n    canDive () {\n      return this.isTreeView && this.isExpanded\n    },\n    focused () {\n      return (id) => {\n        return (this.isExpanded) && id === this.highlight\n      }\n    },\n    maybeHighlight () {\n      return this.isExpanded ? this.highlight : null\n    }\n  },\n  components: {\n    Status,\n    ThreadTree\n  },\n  watch: {\n    statusId (newVal, oldVal) {\n      const newConversationId = this.getConversationId(newVal)\n      const oldConversationId = this.getConversationId(oldVal)\n      if (newConversationId && oldConversationId && newConversationId === oldConversationId) {\n        this.setHighlight(this.originalStatusId)\n      } else {\n        this.fetchConversation()\n      }\n    },\n    expanded (value) {\n      if (value) {\n        this.fetchConversation()\n      } else {\n        this.resetDisplayState()\n      }\n    },\n    virtualHidden (value) {\n      this.$store.dispatch(\n        'setVirtualHeight',\n        { statusId: this.statusId, height: `${this.$el.clientHeight}px` }\n      )\n    }\n  },\n  methods: {\n    fetchConversation () {\n      if (this.status) {\n        this.$store.state.api.backendInteractor.fetchConversation({ id: this.statusId })\n          .then(({ ancestors, descendants }) => {\n            this.$store.dispatch('addNewStatuses', { statuses: ancestors })\n            this.$store.dispatch('addNewStatuses', { statuses: descendants })\n            this.setHighlight(this.originalStatusId)\n          })\n      } else {\n        this.$store.state.api.backendInteractor.fetchStatus({ id: this.statusId })\n          .then((status) => {\n            this.$store.dispatch('addNewStatuses', { statuses: [status] })\n            this.fetchConversation()\n          })\n      }\n    },\n    getReplies (id) {\n      return this.replies[id] || []\n    },\n    getHighlight () {\n      return this.isExpanded ? this.highlight : null\n    },\n    setHighlight (id) {\n      if (!id) return\n      this.highlight = id\n      this.$store.dispatch('fetchFavsAndRepeats', id)\n      this.$store.dispatch('fetchEmojiReactionsBy', id)\n    },\n    toggleExpanded () {\n      this.expanded = !this.expanded\n    },\n    getConversationId (statusId) {\n      const status = this.$store.state.statuses.allStatusesObject[statusId]\n      return get(status, 'retweeted_status.statusnet_conversation_id', get(status, 'statusnet_conversation_id'))\n    },\n    setThreadDisplay (id, nextStatus) {\n      this.threadDisplayStatusObject = {\n        ...this.threadDisplayStatusObject,\n        [id]: nextStatus\n      }\n    },\n    toggleThreadDisplay (id) {\n      const curStatus = this.threadDisplayStatus[id]\n      const nextStatus = curStatus === 'showing' ? 'hidden' : 'showing'\n      this.setThreadDisplay(id, nextStatus)\n    },\n    setThreadDisplayRecursively (id, nextStatus) {\n      this.setThreadDisplay(id, nextStatus)\n      this.getReplies(id).map(k => k.id).map(id => this.setThreadDisplayRecursively(id, nextStatus))\n    },\n    showThreadRecursively (id) {\n      this.setThreadDisplayRecursively(id, 'showing')\n    },\n    setStatusContentProperty (id, name, value) {\n      this.statusContentPropertiesObject = {\n        ...this.statusContentPropertiesObject,\n        [id]: {\n          ...this.statusContentPropertiesObject[id],\n          [name]: value\n        }\n      }\n    },\n    toggleStatusContentProperty (id, name) {\n      this.setStatusContentProperty(id, name, !this.statusContentProperties[id][name])\n    },\n    leastVisibleAncestor (id) {\n      let cur = id\n      let parent = this.parentOf(cur)\n      while (cur) {\n        // if the parent is showing it means cur is visible\n        if (this.threadDisplayStatus[parent] === 'showing') {\n          return cur\n        }\n        parent = this.parentOf(parent)\n        cur = this.parentOf(cur)\n      }\n      // nothing found, fall back to toplevel\n      return this.topLevel[0] ? this.topLevel[0].id : undefined\n    },\n    diveIntoStatus (id, preventScroll) {\n      this.tryScrollTo(id)\n    },\n    diveToTopLevel () {\n      this.tryScrollTo(this.topLevelAncestorOrSelfId(this.diveRoot) || this.topLevel[0].id)\n    },\n    // only used when we are not on a page\n    undive () {\n      this.inlineDivePosition = null\n      this.setHighlight(this.statusId)\n    },\n    tryScrollTo (id) {\n      if (!id) {\n        return\n      }\n      if (this.isPage) {\n        // set statusId\n        this.$router.push({ name: 'conversation', params: { id } })\n      } else {\n        this.inlineDivePosition = id\n      }\n      // Because the conversation can be unmounted when out of sight\n      // and mounted again when it comes into sight,\n      // the `mounted` or `created` function in `status` should not\n      // contain scrolling calls, as we do not want the page to jump\n      // when we scroll with an expanded conversation.\n      //\n      // Now the method is to rely solely on the `highlight` watcher\n      // in `status` components.\n      // In linear views, all statuses are rendered at all times, but\n      // in tree views, it is possible that a change in active status\n      // removes and adds status components (e.g. an originally child\n      // status becomes an ancestor status, and thus they will be\n      // different).\n      // Here, let the components be rendered first, in order to trigger\n      // the `highlight` watcher.\n      this.$nextTick(() => {\n        this.setHighlight(id)\n      })\n    },\n    goToCurrent () {\n      this.tryScrollTo(this.diveRoot || this.topLevel[0].id)\n    },\n    statusById (id) {\n      return this.statusMap[id]\n    },\n    parentOf (id) {\n      const status = this.statusById(id)\n      if (!status) {\n        return undefined\n      }\n      const { in_reply_to_status_id: parentId } = status\n      if (!this.statusMap[parentId]) {\n        return undefined\n      }\n      return parentId\n    },\n    parentOrSelf (id) {\n      return this.parentOf(id) || id\n    },\n    // Ancestors of some status, from top to bottom\n    ancestorsOf (id) {\n      const ancestors = []\n      let cur = this.parentOf(id)\n      while (cur) {\n        ancestors.unshift(this.statusMap[cur])\n        cur = this.parentOf(cur)\n      }\n      return ancestors\n    },\n    topLevelAncestorOrSelfId (id) {\n      let cur = id\n      let parent = this.parentOf(id)\n      while (parent) {\n        cur = this.parentOf(cur)\n        parent = this.parentOf(parent)\n      }\n      return cur\n    },\n    resetDisplayState () {\n      this.undive()\n      this.threadDisplayStatusObject = {}\n    }\n  }\n}\n\nexport default conversation\n","import { render } from \"./conversation.vue?vue&type=template&id=ee2f7a9a\"\nimport script from \"./conversation.js?vue&type=script&lang=js\"\nexport * from \"./conversation.js?vue&type=script&lang=js\"\n\nimport \"./conversation.vue?vue&type=style&index=0&id=ee2f7a9a&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Popover\n    trigger=\"click\"\n    class=\"TimelineMenu\"\n    :class=\"{ 'open': isOpen }\"\n    :margin=\"{ left: -15, right: -200 }\"\n    :bound-to=\"{ x: 'container' }\"\n    popover-class=\"timeline-menu-popover-wrap\"\n    @show=\"openMenu\"\n    @close=\"() => isOpen = false\"\n  >\n    <template v-slot:content>\n      <div class=\"timeline-menu-popover popover-default\">\n        <TimelineMenuContent />\n      </div>\n    </template>\n    <template v-slot:trigger>\n      <button class=\"button-unstyled title timeline-menu-title\">\n        <span class=\"timeline-title\">{{ timelineName() }}</span>\n        <span>\n          <FAIcon\n            size=\"sm\"\n            icon=\"chevron-down\"\n          />\n        </span>\n        <span\n          class=\"click-blocker\"\n          @click=\"blockOpen\"\n        />\n      </button>\n    </template>\n  </Popover>\n</template>\n\n<script src=\"./timeline_menu.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.TimelineMenu {\n  flex-shrink: 1;\n  margin-right: auto;\n  min-width: 0;\n  width: 24rem;\n\n  .popover-trigger-button {\n    vertical-align: bottom;\n  }\n\n  .timeline-menu-popover-wrap {\n    overflow: hidden;\n    // Match panel heading padding to line up menu with bottom of heading\n    margin-top: 0.6rem;\n    padding: 0 15px 15px 15px;\n  }\n\n  .timeline-menu-popover {\n    width: 24rem;\n    max-width: 100vw;\n    margin: 0;\n    font-size: 1rem;\n    border-top-right-radius: 0;\n    border-top-left-radius: 0;\n    transform: translateY(-100%);\n    transition: transform 100ms;\n  }\n\n  .panel::after {\n    border-top-right-radius: 0;\n    border-top-left-radius: 0;\n  }\n\n  &.open .timeline-menu-popover {\n    transform: translateY(0);\n  }\n\n  .timeline-menu-title {\n    margin: 0;\n    cursor: pointer;\n    user-select: none;\n    width: 100%;\n    display: flex;\n\n    .timeline-menu-name {\n      overflow: hidden;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n    }\n\n    svg {\n      margin-left: 0.6em;\n      transition: transform 100ms;\n    }\n\n    .click-blocker {\n      cursor: default;\n      flex-grow: 1;\n    }\n  }\n\n  &.open .timeline-menu-title svg {\n    color: $fallback--text;\n    color: var(--panelText, $fallback--text);\n    transform: rotate(180deg);\n  }\n\n  .panel {\n    box-shadow: var(--popoverShadow);\n  }\n\n  ul {\n    list-style: none;\n    margin: 0;\n    padding: 0;\n  }\n\n  li {\n    border-bottom: 1px solid;\n    border-color: $fallback--border;\n    border-color: var(--border, $fallback--border);\n    padding: 0;\n\n    &:last-child a {\n      border-bottom-right-radius: $fallback--panelRadius;\n      border-bottom-right-radius: var(--panelRadius, $fallback--panelRadius);\n      border-bottom-left-radius: $fallback--panelRadius;\n      border-bottom-left-radius: var(--panelRadius, $fallback--panelRadius);\n    }\n\n    &:last-child {\n      border: none;\n    }\n  }\n\n  a {\n    display: block;\n    padding: 0.6em 0.65em;\n\n    &:hover {\n      background-color: $fallback--lightBg;\n      background-color: var(--selectedMenu, $fallback--lightBg);\n      color: $fallback--link;\n      color: var(--selectedMenuText, $fallback--link);\n      --faint: var(--selectedMenuFaintText, $fallback--faint);\n      --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n      --lightText: var(--selectedMenuLightText, $fallback--lightText);\n      --icon: var(--selectedMenuIcon, $fallback--icon);\n    }\n\n    &.router-link-active {\n      font-weight: bolder;\n      background-color: $fallback--lightBg;\n      background-color: var(--selectedMenu, $fallback--lightBg);\n      color: $fallback--text;\n      color: var(--selectedMenuText, $fallback--text);\n      --faint: var(--selectedMenuFaintText, $fallback--faint);\n      --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n      --lightText: var(--selectedMenuLightText, $fallback--lightText);\n      --icon: var(--selectedMenuIcon, $fallback--icon);\n\n      &:hover {\n        text-decoration: underline;\n      }\n    }\n\n    svg {\n      margin-right: 0.4em;\n      margin-left: -0.2em;\n    }\n  }\n}\n\n</style>\n","import Popover from '../popover/popover.vue'\nimport TimelineMenuContent from './timeline_menu_content.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faChevronDown\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faChevronDown)\n\n// Route -> i18n key mapping, exported and not in the computed\n// because nav panel benefits from the same information.\nexport const timelineNames = () => {\n  return {\n    'friends': 'nav.home_timeline',\n    'bookmarks': 'nav.bookmarks',\n    'dms': 'nav.dms',\n    'public-timeline': 'nav.public_tl',\n    'public-external-timeline': 'nav.twkn'\n  }\n}\n\nconst TimelineMenu = {\n  components: {\n    Popover,\n    TimelineMenuContent\n  },\n  data () {\n    return {\n      isOpen: false\n    }\n  },\n  created () {\n    if (timelineNames()[this.$route.name]) {\n      this.$store.dispatch('setLastTimeline', this.$route.name)\n    }\n  },\n  methods: {\n    openMenu () {\n      // $nextTick is too fast, animation won't play back but\n      // instead starts in fully open position. Low values\n      // like 1-5 work on fast machines but not on mobile, 25\n      // seems like a good compromise that plays without significant\n      // added lag.\n      setTimeout(() => {\n        this.isOpen = true\n      }, 25)\n    },\n    blockOpen (event) {\n      // For the blank area inside the button element.\n      // Just setting @click.stop=\"\" makes unintuitive behavior when\n      // menu is open and clicking on the blank area doesn't close it.\n      if (!this.isOpen) {\n        event.stopPropagation()\n      }\n    },\n    timelineName () {\n      const route = this.$route.name\n      if (route === 'tag-timeline') {\n        return '#' + this.$route.params.tag\n      }\n      const i18nkey = timelineNames()[this.$route.name]\n      return i18nkey ? this.$t(i18nkey) : route\n    }\n  }\n}\n\nexport default TimelineMenu\n","import { render } from \"./timeline_menu.vue?vue&type=template&id=0d348974\"\nimport script from \"./timeline_menu.js?vue&type=script&lang=js\"\nexport * from \"./timeline_menu.js?vue&type=script&lang=js\"\n\nimport \"./timeline_menu.vue?vue&type=style&index=0&id=0d348974&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Popover\n    trigger=\"click\"\n    class=\"TimelineQuickSettings\"\n    :bound-to=\"{ x: 'container' }\"\n  >\n    <template v-slot:content>\n      <div class=\"dropdown-menu\">\n        <div v-if=\"loggedIn\">\n          <button\n            class=\"button-default dropdown-item\"\n            @click=\"replyVisibilityAll = true\"\n          >\n            <span\n              class=\"menu-checkbox -radio\"\n              :class=\"{ 'menu-checkbox-checked': replyVisibilityAll }\"\n            />{{ $t('settings.reply_visibility_all') }}\n          </button>\n          <button\n            class=\"button-default dropdown-item\"\n            @click=\"replyVisibilityFollowing = true\"\n          >\n            <span\n              class=\"menu-checkbox -radio\"\n              :class=\"{ 'menu-checkbox-checked': replyVisibilityFollowing }\"\n            />{{ $t('settings.reply_visibility_following_short') }}\n          </button>\n          <button\n            class=\"button-default dropdown-item\"\n            @click=\"replyVisibilitySelf = true\"\n          >\n            <span\n              class=\"menu-checkbox -radio\"\n              :class=\"{ 'menu-checkbox-checked': replyVisibilitySelf }\"\n            />{{ $t('settings.reply_visibility_self_short') }}\n          </button>\n          <div\n            role=\"separator\"\n            class=\"dropdown-divider\"\n          />\n        </div>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"muteBotStatuses = !muteBotStatuses\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': muteBotStatuses }\"\n          />{{ $t('settings.mute_bot_posts') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"hideMedia = !hideMedia\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': hideMedia }\"\n          />{{ $t('settings.hide_media_previews') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"hideMutedPosts = !hideMutedPosts\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': hideMutedPosts }\"\n          />{{ $t('settings.hide_all_muted_posts') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click=\"openTab('filtering')\"\n        >\n          <FAIcon icon=\"font\" />{{ $t('settings.word_filter') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click=\"openTab('general')\"\n        >\n          <FAIcon icon=\"wrench\" />{{ $t('settings.more_settings') }}\n        </button>\n      </div>\n    </template>\n    <template v-slot:trigger>\n      <button class=\"button-unstyled\">\n        <FAIcon icon=\"filter\" />\n      </button>\n    </template>\n  </Popover>\n</template>\n\n<script src=\"./timeline_quick_settings.js\"></script>\n\n<style lang=\"scss\">\n\n.TimelineQuickSettings {\n\n  > button {\n    line-height: 100%;\n    height: 100%;\n    width: var(--__panel-heading-height-inner);\n    text-align: center;\n\n    svg {\n      font-size: 1.2em;\n    }\n  }\n}\n\n</style>\n","import Popover from '../popover/popover.vue'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faFilter, faFont, faWrench } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faFilter,\n  faFont,\n  faWrench\n)\n\nconst TimelineQuickSettings = {\n  components: {\n    Popover\n  },\n  methods: {\n    setReplyVisibility (visibility) {\n      this.$store.dispatch('setOption', { name: 'replyVisibility', value: visibility })\n      this.$store.dispatch('queueFlushAll')\n    },\n    openTab (tab) {\n      this.$store.dispatch('openSettingsModalTab', tab)\n    }\n  },\n  computed: {\n    ...mapGetters(['mergedConfig']),\n    loggedIn () {\n      return !!this.$store.state.users.currentUser\n    },\n    replyVisibilitySelf: {\n      get () { return this.mergedConfig.replyVisibility === 'self' },\n      set () { this.setReplyVisibility('self') }\n    },\n    replyVisibilityFollowing: {\n      get () { return this.mergedConfig.replyVisibility === 'following' },\n      set () { this.setReplyVisibility('following') }\n    },\n    replyVisibilityAll: {\n      get () { return this.mergedConfig.replyVisibility === 'all' },\n      set () { this.setReplyVisibility('all') }\n    },\n    hideMedia: {\n      get () { return this.mergedConfig.hideAttachments || this.mergedConfig.hideAttachmentsInConv },\n      set () {\n        const value = !this.hideMedia\n        this.$store.dispatch('setOption', { name: 'hideAttachments', value })\n        this.$store.dispatch('setOption', { name: 'hideAttachmentsInConv', value })\n      }\n    },\n    hideMutedPosts: {\n      get () { return this.mergedConfig.hideFilteredStatuses },\n      set () {\n        const value = !this.hideMutedPosts\n        this.$store.dispatch('setOption', { name: 'hideFilteredStatuses', value })\n      }\n    },\n    muteBotStatuses: {\n      get () { return this.mergedConfig.muteBotStatuses },\n      set () {\n        const value = !this.muteBotStatuses\n        this.$store.dispatch('setOption', { name: 'muteBotStatuses', value })\n      }\n    }\n  }\n}\n\nexport default TimelineQuickSettings\n","import { render } from \"./timeline_quick_settings.vue?vue&type=template&id=ad1076ec\"\nimport script from \"./timeline_quick_settings.js?vue&type=script&lang=js\"\nexport * from \"./timeline_quick_settings.js?vue&type=script&lang=js\"\n\nimport \"./timeline_quick_settings.vue?vue&type=style&index=0&id=ad1076ec&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Status from '../status/status.vue'\nimport timelineFetcher from '../../services/timeline_fetcher/timeline_fetcher.service.js'\nimport Conversation from '../conversation/conversation.vue'\nimport TimelineMenu from '../timeline_menu/timeline_menu.vue'\nimport TimelineQuickSettings from './timeline_quick_settings.vue'\nimport { debounce, throttle, keyBy } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch, faCog } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch,\n  faCog\n)\n\nconst Timeline = {\n  props: [\n    'timeline',\n    'timelineName',\n    'title',\n    'userId',\n    'tag',\n    'embedded',\n    'count',\n    'pinnedStatusIds',\n    'inProfile',\n    'footerSlipgate' // reference to an element where we should put our footer\n  ],\n  data () {\n    return {\n      paused: false,\n      unfocused: false,\n      bottomedOut: false,\n      virtualScrollIndex: 0,\n      blockingClicks: false\n    }\n  },\n  components: {\n    Status,\n    Conversation,\n    TimelineMenu,\n    TimelineQuickSettings\n  },\n  computed: {\n    filteredVisibleStatuses () {\n      return this.timeline.visibleStatuses.filter(status => this.timelineName !== 'user' || (status.id >= this.timeline.minId && status.id <= this.timeline.maxId))\n    },\n    filteredPinnedStatusIds () {\n      return (this.pinnedStatusIds || []).filter(statusId => this.timeline.statusesObject[statusId])\n    },\n    newStatusCount () {\n      return this.timeline.newStatusCount\n    },\n    showLoadButton () {\n      return this.timeline.newStatusCount > 0 || this.timeline.flushMarker !== 0\n    },\n    loadButtonString () {\n      if (this.timeline.flushMarker !== 0) {\n        return this.$t('timeline.reload')\n      } else {\n        return `${this.$t('timeline.show_new')} (${this.newStatusCount})`\n      }\n    },\n    classes () {\n      let rootClasses = !this.embedded ? ['panel', 'panel-default'] : ['-nonpanel']\n      if (this.blockingClicks) rootClasses = rootClasses.concat(['-blocked', '_misclick-prevention'])\n      return {\n        root: rootClasses,\n        header: ['timeline-heading'].concat(!this.embedded ? ['panel-heading', '-sticky'] : []),\n        body: ['timeline-body'].concat(!this.embedded ? ['panel-body'] : []),\n        footer: ['timeline-footer'].concat(!this.embedded ? ['panel-footer'] : [])\n      }\n    },\n    // id map of statuses which need to be hidden in the main list due to pinning logic\n    pinnedStatusIdsObject () {\n      return keyBy(this.pinnedStatusIds)\n    },\n    statusesToDisplay () {\n      const amount = this.timeline.visibleStatuses.length\n      const statusesPerSide = Math.ceil(Math.max(3, window.innerHeight / 80))\n      const nonPinnedIndex = this.virtualScrollIndex - this.filteredPinnedStatusIds.length\n      const min = Math.max(0, nonPinnedIndex - statusesPerSide)\n      const max = Math.min(amount, nonPinnedIndex + statusesPerSide)\n      return this.timeline.visibleStatuses.slice(min, max).map(_ => _.id)\n    },\n    virtualScrollingEnabled () {\n      return this.$store.getters.mergedConfig.virtualScrolling\n    }\n  },\n  created () {\n    const store = this.$store\n    const credentials = store.state.users.currentUser.credentials\n    const showImmediately = this.timeline.visibleStatuses.length === 0\n\n    window.addEventListener('scroll', this.handleScroll)\n\n    if (store.state.api.fetchers[this.timelineName]) { return false }\n\n    timelineFetcher.fetchAndUpdate({\n      store,\n      credentials,\n      timeline: this.timelineName,\n      showImmediately,\n      userId: this.userId,\n      tag: this.tag\n    })\n  },\n  mounted () {\n    if (typeof document.hidden !== 'undefined') {\n      document.addEventListener('visibilitychange', this.handleVisibilityChange, false)\n      this.unfocused = document.hidden\n    }\n    window.addEventListener('keydown', this.handleShortKey)\n    setTimeout(this.determineVisibleStatuses, 250)\n  },\n  unmounted () {\n    window.removeEventListener('scroll', this.handleScroll)\n    window.removeEventListener('keydown', this.handleShortKey)\n    if (typeof document.hidden !== 'undefined') document.removeEventListener('visibilitychange', this.handleVisibilityChange, false)\n    this.$store.commit('setLoading', { timeline: this.timelineName, value: false })\n  },\n  methods: {\n    stopBlockingClicks: debounce(function () {\n      this.blockingClicks = false\n    }, 1000),\n    blockClicksTemporarily () {\n      if (!this.blockingClicks) {\n        this.blockingClicks = true\n      }\n      this.stopBlockingClicks()\n    },\n    handleShortKey (e) {\n      // Ignore when input fields are focused\n      if (['textarea', 'input'].includes(e.target.tagName.toLowerCase())) return\n      if (e.key === '.') this.showNewStatuses()\n    },\n    showNewStatuses () {\n      if (this.timeline.flushMarker !== 0) {\n        this.$store.commit('clearTimeline', { timeline: this.timelineName, excludeUserId: true })\n        this.$store.commit('queueFlush', { timeline: this.timelineName, id: 0 })\n        this.fetchOlderStatuses()\n      } else {\n        this.blockClicksTemporarily()\n        this.$store.commit('showNewStatuses', { timeline: this.timelineName })\n        this.paused = false\n      }\n      window.scrollTo({ top: 0 })\n    },\n    fetchOlderStatuses: throttle(function () {\n      const store = this.$store\n      const credentials = store.state.users.currentUser.credentials\n      store.commit('setLoading', { timeline: this.timelineName, value: true })\n      timelineFetcher.fetchAndUpdate({\n        store,\n        credentials,\n        timeline: this.timelineName,\n        older: true,\n        showImmediately: true,\n        userId: this.userId,\n        tag: this.tag\n      }).then(({ statuses }) => {\n        if (statuses && statuses.length === 0) {\n          this.bottomedOut = true\n        }\n      }).finally(() =>\n        store.commit('setLoading', { timeline: this.timelineName, value: false })\n      )\n    }, 1000, this),\n    determineVisibleStatuses () {\n      if (!this.$refs.timeline) return\n      if (!this.virtualScrollingEnabled) return\n\n      const statuses = this.$refs.timeline.children\n      const cappedScrollIndex = Math.max(0, Math.min(this.virtualScrollIndex, statuses.length - 1))\n\n      if (statuses.length === 0) return\n\n      const height = Math.max(document.body.offsetHeight, window.pageYOffset)\n\n      const centerOfScreen = window.pageYOffset + (window.innerHeight * 0.5)\n\n      // Start from approximating the index of some visible status by using the\n      // the center of the screen on the timeline.\n      let approxIndex = Math.floor(statuses.length * (centerOfScreen / height))\n      let err = statuses[approxIndex].getBoundingClientRect().y\n\n      // if we have a previous scroll index that can be used, test if it's\n      // closer than the previous approximation, use it if so\n\n      const virtualScrollIndexY = statuses[cappedScrollIndex].getBoundingClientRect().y\n      if (Math.abs(err) > virtualScrollIndexY) {\n        approxIndex = cappedScrollIndex\n        err = virtualScrollIndexY\n      }\n\n      // if the status is too far from viewport, check the next/previous ones if\n      // they happen to be better\n      while (err < -20 && approxIndex < statuses.length - 1) {\n        err += statuses[approxIndex].offsetHeight\n        approxIndex++\n      }\n      while (err > window.innerHeight + 100 && approxIndex > 0) {\n        approxIndex--\n        err -= statuses[approxIndex].offsetHeight\n      }\n\n      // this status is now the center point for virtual scrolling and visible\n      // statuses will be nearby statuses before and after it\n      this.virtualScrollIndex = approxIndex\n    },\n    scrollLoad (e) {\n      const bodyBRect = document.body.getBoundingClientRect()\n      const height = Math.max(bodyBRect.height, -(bodyBRect.y))\n      if (this.timeline.loading === false &&\n          this.$el.offsetHeight > 0 &&\n          (window.innerHeight + window.pageYOffset) >= (height - 750)) {\n        this.fetchOlderStatuses()\n      }\n    },\n    handleScroll: throttle(function (e) {\n      this.determineVisibleStatuses()\n      this.scrollLoad(e)\n    }, 200),\n    handleVisibilityChange () {\n      this.unfocused = document.hidden\n    }\n  },\n  watch: {\n    newStatusCount (count) {\n      if (!this.$store.getters.mergedConfig.streaming) {\n        return\n      }\n      if (count > 0) {\n        // only 'stream' them when you're scrolled to the top\n        const doc = document.documentElement\n        const top = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)\n        if (top < 15 &&\n            !this.paused &&\n            !(this.unfocused && this.$store.getters.mergedConfig.pauseOnUnfocused)\n        ) {\n          this.showNewStatuses()\n        } else {\n          this.paused = true\n        }\n      }\n    }\n  }\n}\n\nexport default Timeline\n","import { render } from \"./timeline.vue?vue&type=template&id=17475b75\"\nimport script from \"./timeline.js?vue&type=script&lang=js\"\nexport * from \"./timeline.js?vue&type=script&lang=js\"\n\nimport \"./timeline.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Timeline from '../timeline/timeline.vue'\nconst PublicTimeline = {\n  components: {\n    Timeline\n  },\n  computed: {\n    timeline () { return this.$store.state.statuses.timelines.public }\n  },\n  created () {\n    this.$store.dispatch('startFetchingTimeline', { timeline: 'public' })\n  },\n  unmounted () {\n    this.$store.dispatch('stopFetchingTimeline', 'public')\n  }\n\n}\n\nexport default PublicTimeline\n","import { render } from \"./public_timeline.vue?vue&type=template&id=5f2a502e\"\nimport script from \"./public_timeline.js?vue&type=script&lang=js\"\nexport * from \"./public_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Timeline\n    :title=\"$t('nav.public_tl')\"\n    :timeline=\"timeline\"\n    :timeline-name=\"'public'\"\n  />\n</template>\n\n<script src=\"./public_timeline.js\"></script>\n","import Timeline from '../timeline/timeline.vue'\nconst PublicAndExternalTimeline = {\n  components: {\n    Timeline\n  },\n  computed: {\n    timeline () { return this.$store.state.statuses.timelines.publicAndExternal }\n  },\n  created () {\n    this.$store.dispatch('startFetchingTimeline', { timeline: 'publicAndExternal' })\n  },\n  unmounted () {\n    this.$store.dispatch('stopFetchingTimeline', 'publicAndExternal')\n  }\n}\n\nexport default PublicAndExternalTimeline\n","import { render } from \"./public_and_external_timeline.vue?vue&type=template&id=f6923484\"\nimport script from \"./public_and_external_timeline.js?vue&type=script&lang=js\"\nexport * from \"./public_and_external_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Timeline\n    :title=\"$t('nav.twkn')\"\n    :timeline=\"timeline\"\n    :timeline-name=\"'publicAndExternal'\"\n  />\n</template>\n\n<script src=\"./public_and_external_timeline.js\"></script>\n","import Timeline from '../timeline/timeline.vue'\nconst FriendsTimeline = {\n  components: {\n    Timeline\n  },\n  computed: {\n    timeline () { return this.$store.state.statuses.timelines.friends }\n  }\n}\n\nexport default FriendsTimeline\n","import { render } from \"./friends_timeline.vue?vue&type=template&id=22490669\"\nimport script from \"./friends_timeline.js?vue&type=script&lang=js\"\nexport * from \"./friends_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Timeline\n    :title=\"$t('nav.timeline')\"\n    :timeline=\"timeline\"\n    :timeline-name=\"'friends'\"\n  />\n</template>\n\n<script src=\"./friends_timeline.js\"></script>\n","import Timeline from '../timeline/timeline.vue'\n\nconst TagTimeline = {\n  created () {\n    this.$store.commit('clearTimeline', { timeline: 'tag' })\n    this.$store.dispatch('startFetchingTimeline', { timeline: 'tag', tag: this.tag })\n  },\n  components: {\n    Timeline\n  },\n  computed: {\n    tag () { return this.$route.params.tag },\n    timeline () { return this.$store.state.statuses.timelines.tag }\n  },\n  watch: {\n    tag () {\n      this.$store.commit('clearTimeline', { timeline: 'tag' })\n      this.$store.dispatch('startFetchingTimeline', { timeline: 'tag', tag: this.tag })\n    }\n  },\n  unmounted () {\n    this.$store.dispatch('stopFetchingTimeline', 'tag')\n  }\n}\n\nexport default TagTimeline\n","import { render } from \"./tag_timeline.vue?vue&type=template&id=047310d3\"\nimport script from \"./tag_timeline.js?vue&type=script&lang=js\"\nexport * from \"./tag_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Timeline\n    :title=\"tag\"\n    :timeline=\"timeline\"\n    :timeline-name=\"'tag'\"\n    :tag=\"tag\"\n  />\n</template>\n\n<script src='./tag_timeline.js'></script>\n","import Timeline from '../timeline/timeline.vue'\n\nconst Bookmarks = {\n  computed: {\n    timeline () {\n      return this.$store.state.statuses.timelines.bookmarks\n    }\n  },\n  components: {\n    Timeline\n  },\n  unmounted () {\n    this.$store.commit('clearTimeline', { timeline: 'bookmarks' })\n  }\n}\n\nexport default Bookmarks\n","import { render } from \"./bookmark_timeline.vue?vue&type=template&id=2b9c8ba0\"\nimport script from \"./bookmark_timeline.js?vue&type=script&lang=js\"\nexport * from \"./bookmark_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Timeline\n    :title=\"$t('nav.bookmarks')\"\n    :timeline=\"timeline\"\n    :timeline-name=\"'bookmarks'\"\n  />\n</template>\n\n<script src=\"./bookmark_timeline.js\"></script>\n","import Conversation from '../conversation/conversation.vue'\n\nconst conversationPage = {\n  components: {\n    Conversation\n  },\n  computed: {\n    statusId () {\n      return this.$route.params.id\n    }\n  }\n}\n\nexport default conversationPage\n","import { render } from \"./conversation-page.vue?vue&type=template&id=46654d24\"\nimport script from \"./conversation-page.js?vue&type=script&lang=js\"\nexport * from \"./conversation-page.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <conversation\n    :collapsable=\"false\"\n    is-page=\"true\"\n    :status-id=\"statusId\"\n  />\n</template>\n\n<script src=\"./conversation-page.js\"></script>\n","<template>\n  <div class=\"panel panel-default\">\n    <div class=\"panel-heading\">\n      <div class=\"title\">\n        {{ $t(\"nav.interactions\") }}\n      </div>\n    </div>\n    <tab-switcher\n      ref=\"tabSwitcher\"\n      :on-switch=\"onModeSwitch\"\n    >\n      <span\n        key=\"mentions\"\n        :label=\"$t('nav.mentions')\"\n      />\n      <span\n        key=\"likes+repeats\"\n        :label=\"$t('interactions.favs_repeats')\"\n      />\n      <span\n        key=\"follows\"\n        :label=\"$t('interactions.follows')\"\n      />\n      <span\n        v-if=\"!allowFollowingMove\"\n        key=\"moves\"\n        :label=\"$t('interactions.moves')\"\n      />\n    </tab-switcher>\n    <Notifications\n      ref=\"notifications\"\n      :no-heading=\"true\"\n      :minimal-mode=\"true\"\n      :filter-mode=\"filterMode\"\n    />\n  </div>\n</template>\n\n<script src=\"./interactions.js\"></script>\n","import Notifications from '../notifications/notifications.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\n\nconst tabModeDict = {\n  mentions: ['mention'],\n  'likes+repeats': ['repeat', 'like'],\n  follows: ['follow'],\n  moves: ['move']\n}\n\nconst Interactions = {\n  data () {\n    return {\n      allowFollowingMove: this.$store.state.users.currentUser.allow_following_move,\n      filterMode: tabModeDict['mentions']\n    }\n  },\n  methods: {\n    onModeSwitch (key) {\n      this.filterMode = tabModeDict[key]\n    }\n  },\n  components: {\n    Notifications,\n    TabSwitcher\n  }\n}\n\nexport default Interactions\n","import { render } from \"./interactions.vue?vue&type=template&id=109005c8\"\nimport script from \"./interactions.js?vue&type=script&lang=js\"\nexport * from \"./interactions.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Timeline from '../timeline/timeline.vue'\n\nconst DMs = {\n  computed: {\n    timeline () {\n      return this.$store.state.statuses.timelines.dms\n    }\n  },\n  components: {\n    Timeline\n  }\n}\n\nexport default DMs\n","import { render } from \"./dm_timeline.vue?vue&type=template&id=294f8b6d\"\nimport script from \"./dm_timeline.js?vue&type=script&lang=js\"\nexport * from \"./dm_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Timeline\n    :title=\"$t('nav.dms')\"\n    :timeline=\"timeline\"\n    :timeline-name=\"'dms'\"\n  />\n</template>\n\n<script src=\"./dm_timeline.js\"></script>\n","<template>\n  <div v-if=\"isNew\">\n    <ChatNew @cancel=\"cancelNewChat\" />\n  </div>\n  <div\n    v-else\n    class=\"chat-list panel panel-default\"\n  >\n    <div class=\"panel-heading -sticky\">\n      <span class=\"title\">\n        {{ $t(\"chats.chats\") }}\n      </span>\n      <button\n        class=\"button-default\"\n        @click=\"newChat\"\n      >\n        {{ $t(\"chats.new\") }}\n      </button>\n    </div>\n    <div class=\"panel-body\">\n      <div\n        v-if=\"sortedChatList.length > 0\"\n        class=\"timeline\"\n      >\n        <List :items=\"sortedChatList\">\n          <template v-slot:item=\"{item}\">\n            <ChatListItem\n              :key=\"item.id\"\n              :compact=\"false\"\n              :chat=\"item\"\n            />\n          </template>\n        </List>\n      </div>\n      <div\n        v-else\n        class=\"emtpy-chat-list-alert\"\n      >\n        <span>{{ $t('chats.empty_chat_list_placeholder') }}</span>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./chat_list.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.chat-list {\n  min-height: 25em;\n  margin-bottom: 0;\n}\n\n.emtpy-chat-list-alert {\n  padding: 3em;\n  font-size: 1.2em;\n  display: flex;\n  justify-content: center;\n  color: $fallback--text;\n  color: var(--faint, $fallback--text);\n}\n\n</style>\n","<template>\n  <div\n    class=\"chat-list-item\"\n    @click.capture.prevent=\"openChat\"\n  >\n    <div class=\"chat-list-item-left\">\n      <UserAvatar\n        :user=\"chat.account\"\n        height=\"48px\"\n        width=\"48px\"\n      />\n    </div>\n    <div class=\"chat-list-item-center\">\n      <div class=\"heading\">\n        <span\n          v-if=\"chat.account\"\n          class=\"name-and-account-name\"\n        >\n          <ChatTitle\n            :user=\"chat.account\"\n          />\n        </span>\n        <span class=\"heading-right\" />\n        <div class=\"time-wrapper\">\n          <Timeago\n            :time=\"chat.updated_at\"\n            :auto-update=\"60\"\n          />\n        </div>\n      </div>\n      <div class=\"chat-preview\">\n        <StatusBody\n          class=\"chat-preview-body\"\n          :status=\"messageForStatusContent\"\n          :single-line=\"true\"\n        />\n        <div\n          v-if=\"chat.unread > 0\"\n          class=\"badge badge-notification unread-chat-count\"\n        >\n          {{ chat.unread }}\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./chat_list_item.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n@import './chat_list_item.scss';\n</style>\n","import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\n\nexport default {\n  name: 'ChatTitle',\n  components: {\n    UserAvatar,\n    RichContent\n  },\n  props: [\n    'user', 'withAvatar'\n  ],\n  computed: {\n    title () {\n      return this.user ? this.user.screen_name_ui : ''\n    },\n    htmlTitle () {\n      return this.user ? this.user.name_html : ''\n    }\n  },\n  methods: {\n    getUserProfileLink (user) {\n      return generateProfileLink(user.id, user.screen_name)\n    }\n  }\n}\n","import { render } from \"./chat_title.vue?vue&type=template&id=113f5355\"\nimport script from \"./chat_title.js?vue&type=script&lang=js\"\nexport * from \"./chat_title.js?vue&type=script&lang=js\"\n\nimport \"./chat_title.vue?vue&type=style&index=0&id=113f5355&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    class=\"chat-title\"\n    :title=\"title\"\n  >\n    <router-link\n      class=\"avatar-container\"\n      v-if=\"withAvatar && user\"\n      :to=\"getUserProfileLink(user)\"\n    >\n      <UserAvatar\n        class=\"titlebar-avatar\"\n        :user=\"user\"\n      />\n    </router-link>\n    <RichContent\n      v-if=\"user\"\n      class=\"username\"\n      :title=\"'@'+(user && user.screen_name_ui)\"\n      :html=\"htmlTitle\"\n      :emoji=\"user.emoji || []\"\n    />\n  </div>\n</template>\n\n<script src=\"./chat_title.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.chat-title {\n  display: flex;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n\n  --emoji-size: 14px;\n\n  .username {\n    max-width: 100%;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    display: inline;\n    word-wrap: break-word;\n    overflow: hidden;\n  }\n\n  .avatar-container {\n    align-self: center;\n    line-height: 1;\n  }\n\n  .titlebar-avatar {\n    margin-right: 0.5em;\n    height: 1.5em;\n    width: 1.5em;\n    border-radius: $fallback--avatarAltRadius;\n    border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n\n    &.animated::before {\n      display: none;\n    }\n  }\n}\n</style>\n","import { mapState } from 'vuex'\nimport StatusBody from '../status_content/status_content.vue'\nimport fileType from 'src/services/file_type/file_type.service'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport AvatarList from '../avatar_list/avatar_list.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport ChatTitle from '../chat_title/chat_title.vue'\n\nconst ChatListItem = {\n  name: 'ChatListItem',\n  props: [\n    'chat'\n  ],\n  components: {\n    UserAvatar,\n    AvatarList,\n    Timeago,\n    ChatTitle,\n    StatusBody\n  },\n  computed: {\n    ...mapState({\n      currentUser: state => state.users.currentUser\n    }),\n    attachmentInfo () {\n      if (this.chat.lastMessage.attachments.length === 0) { return }\n\n      const types = this.chat.lastMessage.attachments.map(file => fileType.fileType(file.mimetype))\n      if (types.includes('video')) {\n        return this.$t('file_type.video')\n      } else if (types.includes('audio')) {\n        return this.$t('file_type.audio')\n      } else if (types.includes('image')) {\n        return this.$t('file_type.image')\n      } else {\n        return this.$t('file_type.file')\n      }\n    },\n    messageForStatusContent () {\n      const message = this.chat.lastMessage\n      const messageEmojis = message ? message.emojis : []\n      const isYou = message && message.account_id === this.currentUser.id\n      const content = message ? (this.attachmentInfo || message.content) : ''\n      const messagePreview = isYou ? `<i>${this.$t('chats.you')}</i> ${content}` : content\n      return {\n        summary: '',\n        emojis: messageEmojis,\n        raw_html: messagePreview,\n        text: messagePreview,\n        attachments: []\n      }\n    }\n  },\n  methods: {\n    openChat (_e) {\n      if (this.chat.id) {\n        this.$router.push({\n          name: 'chat',\n          params: {\n            username: this.currentUser.screen_name,\n            recipient_id: this.chat.account.id\n          }\n        })\n      }\n    }\n  }\n}\n\nexport default ChatListItem\n","import { render } from \"./chat_list_item.vue?vue&type=template&id=0623aed7\"\nimport script from \"./chat_list_item.js?vue&type=script&lang=js\"\nexport * from \"./chat_list_item.js?vue&type=script&lang=js\"\n\nimport \"./chat_list_item.vue?vue&type=style&index=0&id=0623aed7&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    class=\"panel-default panel chat-new\"\n  >\n    <div\n      ref=\"header\"\n      class=\"panel-heading\"\n    >\n      <button\n        class=\"button-unstyled go-back-button\"\n        @click=\"goBack\"\n      >\n        <FAIcon\n          size=\"lg\"\n          icon=\"chevron-left\"\n        />\n      </button>\n    </div>\n    <div class=\"input-wrap\">\n      <div class=\"input-search\">\n        <FAIcon\n          class=\"search-icon fa-scale-110 fa-old-padding\"\n          icon=\"search\"\n        />\n      </div>\n      <input\n        ref=\"search\"\n        v-model=\"query\"\n        placeholder=\"Search people\"\n        @input=\"onInput\"\n      >\n    </div>\n    <div class=\"member-list\">\n      <div\n        v-for=\"user in availableUsers\"\n        :key=\"user.id\"\n        class=\"member\"\n      >\n        <div @click.capture.prevent=\"goToChat(user)\">\n          <BasicUserCard :user=\"user\" />\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./chat_new.js\"></script>\n<style lang=\"scss\">\n@import '../../_variables.scss';\n@import './chat_new.scss';\n</style>\n","import { mapState, mapGetters } from 'vuex'\nimport BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faSearch,\n  faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faSearch,\n  faChevronLeft\n)\n\nconst chatNew = {\n  components: {\n    BasicUserCard,\n    UserAvatar\n  },\n  data () {\n    return {\n      suggestions: [],\n      userIds: [],\n      loading: false,\n      query: ''\n    }\n  },\n  async created () {\n    const { chats } = await this.backendInteractor.chats()\n    chats.forEach(chat => this.suggestions.push(chat.account))\n  },\n  computed: {\n    users () {\n      return this.userIds.map(userId => this.findUser(userId))\n    },\n    availableUsers () {\n      if (this.query.length !== 0) {\n        return this.users\n      } else {\n        return this.suggestions\n      }\n    },\n    ...mapState({\n      currentUser: state => state.users.currentUser,\n      backendInteractor: state => state.api.backendInteractor\n    }),\n    ...mapGetters(['findUser'])\n  },\n  methods: {\n    goBack () {\n      this.$emit('cancel')\n    },\n    goToChat (user) {\n      this.$router.push({ name: 'chat', params: { recipient_id: user.id } })\n    },\n    onInput () {\n      this.search(this.query)\n    },\n    addUser (user) {\n      this.selectedUserIds.push(user.id)\n      this.query = ''\n    },\n    removeUser (userId) {\n      this.selectedUserIds = this.selectedUserIds.filter(id => id !== userId)\n    },\n    search (query) {\n      if (!query) {\n        this.loading = false\n        return\n      }\n\n      this.loading = true\n      this.userIds = []\n      this.$store.dispatch('search', { q: query, resolve: true, type: 'accounts' })\n        .then(data => {\n          this.loading = false\n          this.userIds = data.accounts.map(a => a.id)\n        })\n    }\n  }\n}\n\nexport default chatNew\n","import { render } from \"./chat_new.vue?vue&type=template&id=54e93eee\"\nimport script from \"./chat_new.js?vue&type=script&lang=js\"\nexport * from \"./chat_new.js?vue&type=script&lang=js\"\n\nimport \"./chat_new.vue?vue&type=style&index=0&id=54e93eee&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapState, mapGetters } from 'vuex'\nimport ChatListItem from '../chat_list_item/chat_list_item.vue'\nimport ChatNew from '../chat_new/chat_new.vue'\nimport List from '../list/list.vue'\n\nconst ChatList = {\n  components: {\n    ChatListItem,\n    List,\n    ChatNew\n  },\n  computed: {\n    ...mapState({\n      currentUser: state => state.users.currentUser\n    }),\n    ...mapGetters(['sortedChatList'])\n  },\n  data () {\n    return {\n      isNew: false\n    }\n  },\n  created () {\n    this.$store.dispatch('fetchChats', { latest: true })\n  },\n  methods: {\n    cancelNewChat () {\n      this.isNew = false\n      this.$store.dispatch('fetchChats', { latest: true })\n    },\n    newChat () {\n      this.isNew = true\n    }\n  }\n}\n\nexport default ChatList\n","import { render } from \"./chat_list.vue?vue&type=template&id=598ab446\"\nimport script from \"./chat_list.js?vue&type=script&lang=js\"\nexport * from \"./chat_list.js?vue&type=script&lang=js\"\n\nimport \"./chat_list.vue?vue&type=style&index=0&id=598ab446&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"chat-view\">\n    <div class=\"chat-view-inner\">\n      <div\n        ref=\"inner\"\n        class=\"panel-default panel chat-view-body\"\n      >\n        <div\n          ref=\"header\"\n          class=\"panel-heading -sticky chat-view-heading\"\n        >\n          <button\n            class=\"button-unstyled go-back-button\"\n            @click=\"goBack\"\n          >\n            <FAIcon\n              size=\"lg\"\n              icon=\"chevron-left\"\n            />\n          </button>\n          <div class=\"title text-center\">\n            <ChatTitle\n              :user=\"recipient\"\n              :with-avatar=\"true\"\n            />\n          </div>\n        </div>\n        <div\n          class=\"message-list\"\n          :style=\"{ height: scrollableContainerHeight }\"\n        >\n          <template v-if=\"!errorLoadingChat\">\n            <ChatMessage\n              v-for=\"chatViewItem in chatViewItems\"\n              :key=\"chatViewItem.id\"\n              :author=\"recipient\"\n              :chat-view-item=\"chatViewItem\"\n              :hovered-message-chain=\"chatViewItem.messageChainId === hoveredMessageChainId\"\n              @hover=\"onMessageHover\"\n            />\n          </template>\n          <div\n            v-else\n            class=\"chat-loading-error\"\n          >\n            <div class=\"alert error\">\n              {{ $t('chats.error_loading_chat') }}\n            </div>\n          </div>\n        </div>\n        <div\n          ref=\"footer\"\n          class=\"panel-body footer\"\n        >\n          <div\n            class=\"jump-to-bottom-button\"\n            :class=\"{ 'visible': jumpToBottomButtonVisible }\"\n            @click=\"scrollDown({ behavior: 'smooth' })\"\n          >\n            <span>\n              <FAIcon icon=\"chevron-down\" />\n              <div\n                v-if=\"newMessageCount\"\n                class=\"badge badge-notification unread-chat-count unread-message-count\"\n              >\n                {{ newMessageCount }}\n              </div>\n            </span>\n          </div>\n          <PostStatusForm\n            :disable-subject=\"true\"\n            :disable-scope-selector=\"true\"\n            :disable-notice=\"true\"\n            :disable-lock-warning=\"true\"\n            :disable-polls=\"true\"\n            :disable-sensitivity-checkbox=\"true\"\n            :disable-submit=\"errorLoadingChat || !currentChat\"\n            :disable-preview=\"true\"\n            :optimistic-posting=\"true\"\n            :post-handler=\"sendMessage\"\n            :submit-on-enter=\"!mobileLayout\"\n            :preserve-focus=\"!mobileLayout\"\n            :auto-focus=\"!mobileLayout\"\n            :placeholder=\"formPlaceholder\"\n            :file-limit=\"1\"\n            max-height=\"160\"\n            emoji-picker-placement=\"top\"\n            @resize=\"handleResize\"\n          />\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./chat.js\"></script>\n<style lang=\"scss\">\n@import '../../_variables.scss';\n@import './chat.scss';\n</style>\n","<template>\n  <div\n    v-if=\"isMessage\"\n    class=\"chat-message-wrapper\"\n    :class=\"{ 'hovered-message-chain': hoveredMessageChain }\"\n    @mouseover=\"onHover(true)\"\n    @mouseleave=\"onHover(false)\"\n  >\n    <div\n      class=\"chat-message\"\n      :class=\"[{ 'outgoing': isCurrentUser, 'incoming': !isCurrentUser }]\"\n    >\n      <div\n        v-if=\"!isCurrentUser\"\n        class=\"avatar-wrapper\"\n      >\n        <router-link\n          v-if=\"chatViewItem.isHead\"\n          :to=\"userProfileLink\"\n        >\n          <UserAvatar\n            :compact=\"true\"\n            :better-shadow=\"betterShadow\"\n            :user=\"author\"\n          />\n        </router-link>\n      </div>\n      <div class=\"chat-message-inner\">\n        <div\n          class=\"status-body\"\n          :style=\"{ 'min-width': message.attachment ? '80%' : '' }\"\n        >\n          <div\n            class=\"media status\"\n            :class=\"{ 'without-attachment': !hasAttachment, 'pending': chatViewItem.data.pending, 'error': chatViewItem.data.error }\"\n            style=\"position: relative\"\n            @mouseenter=\"hovered = true\"\n            @mouseleave=\"hovered = false\"\n          >\n            <div\n              class=\"chat-message-menu\"\n              :class=\"{ 'visible': hovered || menuOpened }\"\n            >\n              <Popover\n                trigger=\"click\"\n                placement=\"top\"\n                :bound-to-selector=\"isCurrentUser ? '' : '.scrollable-message-list'\"\n                :bound-to=\"{ x: 'container' }\"\n                :margin=\"popoverMarginStyle\"\n                @show=\"menuOpened = true\"\n                @close=\"menuOpened = false\"\n              >\n                <template v-slot:content>\n                  <div class=\"dropdown-menu\">\n                    <button\n                      class=\"button-default dropdown-item dropdown-item-icon\"\n                      @click=\"deleteMessage\"\n                    >\n                      <FAIcon icon=\"times\" /> {{ $t(\"chats.delete\") }}\n                    </button>\n                  </div>\n                </template>\n                <template v-slot:trigger>\n                  <button\n                    class=\"button-default menu-icon\"\n                    :title=\"$t('chats.more')\"\n                  >\n                    <FAIcon icon=\"ellipsis-h\" />\n                  </button>\n                </template>\n              </Popover>\n            </div>\n            <StatusContent\n              class=\"message-content\"\n              :status=\"messageForStatusContent\"\n              :full-content=\"true\"\n            >\n              <template v-slot:footer>\n                <span\n                  class=\"created-at\"\n                >\n                  {{ createdAt }}\n                </span>\n              </template>\n            </StatusContent>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <div\n    v-else\n    class=\"chat-message-date-separator\"\n  >\n    <ChatMessageDate :date=\"chatViewItem.date\" />\n  </div>\n</template>\n\n<script src=\"./chat_message.js\" ></script>\n<style lang=\"scss\">\n@import './chat_message.scss';\n\n</style>\n","<template>\n  <time>\n    {{ displayDate }}\n  </time>\n</template>\n\n<script>\nimport localeService from 'src/services/locale/locale.service.js'\n\nexport default {\n  name: 'Timeago',\n  props: ['date'],\n  computed: {\n    displayDate () {\n      const today = new Date()\n      today.setHours(0, 0, 0, 0)\n\n      if (this.date.getTime() === today.getTime()) {\n        return this.$t('display_date.today')\n      } else {\n        return this.date.toLocaleDateString(localeService.internalToBrowserLocale(this.$i18n.locale), { day: 'numeric', month: 'long' })\n      }\n    }\n  }\n}\n</script>\n","import { render } from \"./chat_message_date.vue?vue&type=template&id=23377998\"\nimport script from \"./chat_message_date.vue?vue&type=script&lang=js\"\nexport * from \"./chat_message_date.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapState, mapGetters } from 'vuex'\nimport Popover from '../popover/popover.vue'\nimport Attachment from '../attachment/attachment.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport Gallery from '../gallery/gallery.vue'\nimport LinkPreview from '../link-preview/link-preview.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport ChatMessageDate from '../chat_message_date/chat_message_date.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes,\n  faEllipsisH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes,\n  faEllipsisH\n)\n\nconst ChatMessage = {\n  name: 'ChatMessage',\n  props: [\n    'author',\n    'edited',\n    'noHeading',\n    'chatViewItem',\n    'hoveredMessageChain'\n  ],\n  emits: ['hover'],\n  components: {\n    Popover,\n    Attachment,\n    StatusContent,\n    UserAvatar,\n    Gallery,\n    LinkPreview,\n    ChatMessageDate\n  },\n  computed: {\n    // Returns HH:MM (hours and minutes) in local time.\n    createdAt () {\n      const time = this.chatViewItem.data.created_at\n      return time.toLocaleTimeString('en', { hour: '2-digit', minute: '2-digit', hour12: false })\n    },\n    isCurrentUser () {\n      return this.message.account_id === this.currentUser.id\n    },\n    message () {\n      return this.chatViewItem.data\n    },\n    userProfileLink () {\n      return generateProfileLink(this.author.id, this.author.screen_name, this.$store.state.instance.restrictedNicknames)\n    },\n    isMessage () {\n      return this.chatViewItem.type === 'message'\n    },\n    messageForStatusContent () {\n      return {\n        summary: '',\n        emojis: this.message.emojis,\n        raw_html: this.message.content || '',\n        text: this.message.content || '',\n        attachments: this.message.attachments\n      }\n    },\n    hasAttachment () {\n      return this.message.attachments.length > 0\n    },\n    ...mapState({\n      betterShadow: state => state.interface.browserSupport.cssFilter,\n      currentUser: state => state.users.currentUser,\n      restrictedNicknames: state => state.instance.restrictedNicknames\n    }),\n    popoverMarginStyle () {\n      if (this.isCurrentUser) {\n        return {}\n      } else {\n        return { left: 50 }\n      }\n    },\n    ...mapGetters(['mergedConfig', 'findUser'])\n  },\n  data () {\n    return {\n      hovered: false,\n      menuOpened: false\n    }\n  },\n  methods: {\n    onHover (bool) {\n      this.$emit('hover', { isHovered: bool, messageChainId: this.chatViewItem.messageChainId })\n    },\n    async deleteMessage () {\n      const confirmed = window.confirm(this.$t('chats.delete_confirm'))\n      if (confirmed) {\n        await this.$store.dispatch('deleteChatMessage', {\n          messageId: this.chatViewItem.data.id,\n          chatId: this.chatViewItem.data.chat_id\n        })\n      }\n      this.hovered = false\n      this.menuOpened = false\n    }\n  }\n}\n\nexport default ChatMessage\n","import { render } from \"./chat_message.vue?vue&type=template&id=3566ce4a\"\nimport script from \"./chat_message.js?vue&type=script&lang=js\"\nexport * from \"./chat_message.js?vue&type=script&lang=js\"\n\nimport \"./chat_message.vue?vue&type=style&index=0&id=3566ce4a&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// Captures a scroll position\nexport const getScrollPosition = () => {\n  return {\n    scrollTop: window.scrollY,\n    scrollHeight: document.documentElement.scrollHeight,\n    offsetHeight: window.innerHeight\n  }\n}\n\n// A helper function that is used to keep the scroll position fixed as the new elements are added to the top\n// Takes two scroll positions, before and after the update.\nexport const getNewTopPosition = (previousPosition, newPosition) => {\n  return previousPosition.scrollTop + (newPosition.scrollHeight - previousPosition.scrollHeight)\n}\n\nexport const isBottomedOut = (offset = 0) => {\n  const scrollHeight = window.scrollY + offset\n  const totalHeight = document.documentElement.scrollHeight - window.innerHeight\n  return totalHeight <= scrollHeight\n}\n// Returns whether or not the scrollbar is visible.\nexport const isScrollable = () => {\n  return document.documentElement.scrollHeight > window.innerHeight\n}\n","import _ from 'lodash'\nimport { WSConnectionStatus } from '../../services/api/api.service.js'\nimport { mapGetters, mapState } from 'vuex'\nimport ChatMessage from '../chat_message/chat_message.vue'\nimport PostStatusForm from '../post_status_form/post_status_form.vue'\nimport ChatTitle from '../chat_title/chat_title.vue'\nimport chatService from '../../services/chat_service/chat_service.js'\nimport { promiseInterval } from '../../services/promise_interval/promise_interval.js'\nimport { getScrollPosition, getNewTopPosition, isBottomedOut, isScrollable } from './chat_layout_utils.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faChevronDown,\n  faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\nimport { buildFakeMessage } from '../../services/chat_utils/chat_utils.js'\n\nlibrary.add(\n  faChevronDown,\n  faChevronLeft\n)\n\nconst BOTTOMED_OUT_OFFSET = 10\nconst JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET = 10\nconst SAFE_RESIZE_TIME_OFFSET = 100\nconst MARK_AS_READ_DELAY = 1500\nconst MAX_RETRIES = 10\n\nconst Chat = {\n  components: {\n    ChatMessage,\n    ChatTitle,\n    PostStatusForm\n  },\n  data () {\n    return {\n      jumpToBottomButtonVisible: false,\n      hoveredMessageChainId: undefined,\n      lastScrollPosition: {},\n      scrollableContainerHeight: '100%',\n      errorLoadingChat: false,\n      messageRetriers: {}\n    }\n  },\n  created () {\n    this.startFetching()\n    window.addEventListener('resize', this.handleResize)\n  },\n  mounted () {\n    window.addEventListener('scroll', this.handleScroll)\n    if (typeof document.hidden !== 'undefined') {\n      document.addEventListener('visibilitychange', this.handleVisibilityChange, false)\n    }\n\n    this.$nextTick(() => {\n      this.handleResize()\n    })\n  },\n  unmounted () {\n    window.removeEventListener('scroll', this.handleScroll)\n    if (typeof document.hidden !== 'undefined') document.removeEventListener('visibilitychange', this.handleVisibilityChange, false)\n    this.$store.dispatch('clearCurrentChat')\n  },\n  computed: {\n    recipient () {\n      return this.currentChat && this.currentChat.account\n    },\n    recipientId () {\n      return this.$route.params.recipient_id\n    },\n    formPlaceholder () {\n      if (this.recipient) {\n        return this.$t('chats.message_user', { nickname: this.recipient.screen_name_ui })\n      } else {\n        return ''\n      }\n    },\n    chatViewItems () {\n      return chatService.getView(this.currentChatMessageService)\n    },\n    newMessageCount () {\n      return this.currentChatMessageService && this.currentChatMessageService.newMessageCount\n    },\n    streamingEnabled () {\n      return this.mergedConfig.useStreamingApi && this.mastoUserSocketStatus === WSConnectionStatus.JOINED\n    },\n    ...mapGetters([\n      'currentChat',\n      'currentChatMessageService',\n      'findOpenedChatByRecipientId',\n      'mergedConfig'\n    ]),\n    ...mapState({\n      backendInteractor: state => state.api.backendInteractor,\n      mastoUserSocketStatus: state => state.api.mastoUserSocketStatus,\n      mobileLayout: state => state.interface.layoutType === 'mobile',\n      currentUser: state => state.users.currentUser\n    })\n  },\n  watch: {\n    chatViewItems () {\n      // We don't want to scroll to the bottom on a new message when the user is viewing older messages.\n      // Therefore we need to know whether the scroll position was at the bottom before the DOM update.\n      const bottomedOutBeforeUpdate = this.bottomedOut(BOTTOMED_OUT_OFFSET)\n      this.$nextTick(() => {\n        if (bottomedOutBeforeUpdate) {\n          this.scrollDown()\n        }\n      })\n    },\n    '$route': function () {\n      this.startFetching()\n    },\n    mastoUserSocketStatus (newValue) {\n      if (newValue === WSConnectionStatus.JOINED) {\n        this.fetchChat({ isFirstFetch: true })\n      }\n    }\n  },\n  methods: {\n    // Used to animate the avatar near the first message of the message chain when any message belonging to the chain is hovered\n    onMessageHover ({ isHovered, messageChainId }) {\n      this.hoveredMessageChainId = isHovered ? messageChainId : undefined\n    },\n    onFilesDropped () {\n      this.$nextTick(() => {\n        this.handleResize()\n      })\n    },\n    handleVisibilityChange () {\n      this.$nextTick(() => {\n        if (!document.hidden && this.bottomedOut(BOTTOMED_OUT_OFFSET)) {\n          this.scrollDown({ forceRead: true })\n        }\n      })\n    },\n    // \"Sticks\" scroll to bottom instead of top, helps with OSK resizing the viewport\n    handleResize (opts = {}) {\n      const { expand = false, delayed = false } = opts\n\n      if (delayed) {\n        setTimeout(() => {\n          this.handleResize({ ...opts, delayed: false })\n        }, SAFE_RESIZE_TIME_OFFSET)\n        return\n      }\n\n      this.$nextTick(() => {\n        const { offsetHeight = undefined } = getScrollPosition()\n        const diff = this.lastScrollPosition.offsetHeight - offsetHeight\n        if (diff !== 0 || (!this.bottomedOut() && expand)) {\n          this.$nextTick(() => {\n            window.scrollTo({ top: window.scrollY + diff })\n          })\n        }\n        this.lastScrollPosition = getScrollPosition()\n      })\n    },\n    scrollDown (options = {}) {\n      const { behavior = 'auto', forceRead = false } = options\n      this.$nextTick(() => {\n        window.scrollTo({ top: document.documentElement.scrollHeight, behavior })\n      })\n      if (forceRead) {\n        this.readChat()\n      }\n    },\n    readChat () {\n      if (!(this.currentChatMessageService && this.currentChatMessageService.maxId)) { return }\n      if (document.hidden) { return }\n      const lastReadId = this.currentChatMessageService.maxId\n      this.$store.dispatch('readChat', {\n        id: this.currentChat.id,\n        lastReadId\n      })\n    },\n    bottomedOut (offset) {\n      return isBottomedOut(offset)\n    },\n    reachedTop () {\n      return window.scrollY <= 0\n    },\n    cullOlderCheck () {\n      window.setTimeout(() => {\n        if (this.bottomedOut(JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET)) {\n          this.$store.dispatch('cullOlderMessages', this.currentChatMessageService.chatId)\n        }\n      }, 5000)\n    },\n    handleScroll: _.throttle(function () {\n      if (!this.currentChat) { return }\n\n      if (this.reachedTop()) {\n        this.fetchChat({ maxId: this.currentChatMessageService.minId })\n      } else if (this.bottomedOut(JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET)) {\n        this.jumpToBottomButtonVisible = false\n        this.cullOlderCheck()\n        if (this.newMessageCount > 0) {\n          // Use a delay before marking as read to prevent situation where new messages\n          // arrive just as you're leaving the view and messages that you didn't actually\n          // get to see get marked as read.\n          window.setTimeout(() => {\n            // Don't mark as read if the element doesn't exist, user has left chat view\n            if (this.$el) this.readChat()\n          }, MARK_AS_READ_DELAY)\n        }\n      } else {\n        this.jumpToBottomButtonVisible = true\n      }\n    }, 200),\n    handleScrollUp (positionBeforeLoading) {\n      const positionAfterLoading = getScrollPosition()\n      window.scrollTo({\n        top: getNewTopPosition(positionBeforeLoading, positionAfterLoading)\n      })\n    },\n    fetchChat ({ isFirstFetch = false, fetchLatest = false, maxId }) {\n      const chatMessageService = this.currentChatMessageService\n      if (!chatMessageService) { return }\n      if (fetchLatest && this.streamingEnabled) { return }\n\n      const chatId = chatMessageService.chatId\n      const fetchOlderMessages = !!maxId\n      const sinceId = fetchLatest && chatMessageService.maxId\n\n      return this.backendInteractor.chatMessages({ id: chatId, maxId, sinceId })\n        .then((messages) => {\n          // Clear the current chat in case we're recovering from a ws connection loss.\n          if (isFirstFetch) {\n            chatService.clear(chatMessageService)\n          }\n\n          const positionBeforeUpdate = getScrollPosition()\n          this.$store.dispatch('addChatMessages', { chatId, messages }).then(() => {\n            this.$nextTick(() => {\n              if (fetchOlderMessages) {\n                this.handleScrollUp(positionBeforeUpdate)\n              }\n\n              // In vertical screens, the first batch of fetched messages may not always take the\n              // full height of the scrollable container.\n              // If this is the case, we want to fetch the messages until the scrollable container\n              // is fully populated so that the user has the ability to scroll up and load the history.\n              if (!isScrollable() && messages.length > 0) {\n                this.fetchChat({ maxId: this.currentChatMessageService.minId })\n              }\n            })\n          })\n        })\n    },\n    async startFetching () {\n      let chat = this.findOpenedChatByRecipientId(this.recipientId)\n      if (!chat) {\n        try {\n          chat = await this.backendInteractor.getOrCreateChat({ accountId: this.recipientId })\n        } catch (e) {\n          console.error('Error creating or getting a chat', e)\n          this.errorLoadingChat = true\n        }\n      }\n      if (chat) {\n        this.$nextTick(() => {\n          this.scrollDown({ forceRead: true })\n        })\n        this.$store.dispatch('addOpenedChat', { chat })\n        this.doStartFetching()\n      }\n    },\n    doStartFetching () {\n      this.$store.dispatch('startFetchingCurrentChat', {\n        fetcher: () => promiseInterval(() => this.fetchChat({ fetchLatest: true }), 5000)\n      })\n      this.fetchChat({ isFirstFetch: true })\n    },\n    handleAttachmentPosting () {\n      this.$nextTick(() => {\n        this.handleResize()\n        // When the posting form size changes because of a media attachment, we need an extra resize\n        // to account for the potential delay in the DOM update.\n        this.scrollDown({ forceRead: true })\n      })\n    },\n    sendMessage ({ status, media, idempotencyKey }) {\n      const params = {\n        id: this.currentChat.id,\n        content: status,\n        idempotencyKey\n      }\n\n      if (media[0]) {\n        params.mediaId = media[0].id\n      }\n\n      const fakeMessage = buildFakeMessage({\n        attachments: media,\n        chatId: this.currentChat.id,\n        content: status,\n        userId: this.currentUser.id,\n        idempotencyKey\n      })\n\n      this.$store.dispatch('addChatMessages', {\n        chatId: this.currentChat.id,\n        messages: [fakeMessage]\n      }).then(() => {\n        this.handleAttachmentPosting()\n      })\n\n      return this.doSendMessage({ params, fakeMessage, retriesLeft: MAX_RETRIES })\n    },\n    doSendMessage ({ params, fakeMessage, retriesLeft = MAX_RETRIES }) {\n      if (retriesLeft <= 0) return\n\n      this.backendInteractor.sendChatMessage(params)\n        .then(data => {\n          this.$store.dispatch('addChatMessages', {\n            chatId: this.currentChat.id,\n            updateMaxId: false,\n            messages: [{ ...data, fakeId: fakeMessage.id }]\n          })\n\n          return data\n        })\n        .catch(error => {\n          console.error('Error sending message', error)\n          this.$store.dispatch('handleMessageError', {\n            chatId: this.currentChat.id,\n            fakeId: fakeMessage.id,\n            isRetry: retriesLeft !== MAX_RETRIES\n          })\n          if ((error.statusCode >= 500 && error.statusCode < 600) || error.message === 'Failed to fetch') {\n            this.messageRetriers[fakeMessage.id] = setTimeout(() => {\n              this.doSendMessage({ params, fakeMessage, retriesLeft: retriesLeft - 1 })\n            }, 1000 * (2 ** (MAX_RETRIES - retriesLeft)))\n          }\n          return {}\n        })\n\n      return Promise.resolve(fakeMessage)\n    },\n    goBack () {\n      this.$router.push({ name: 'chats', params: { username: this.currentUser.screen_name } })\n    }\n  }\n}\n\nexport default Chat\n","import { render } from \"./chat.vue?vue&type=template&id=9416a190\"\nimport script from \"./chat.js?vue&type=script&lang=js\"\nexport * from \"./chat.js?vue&type=script&lang=js\"\n\nimport \"./chat.vue?vue&type=style&index=0&id=9416a190&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div>\n    <div\n      v-if=\"user\"\n      class=\"user-profile panel panel-default\"\n    >\n      <UserCard\n        :user-id=\"userId\"\n        :switcher=\"true\"\n        :selected=\"timeline.viewing\"\n        :allow-zooming-avatar=\"true\"\n        rounded=\"top\"\n      />\n      <div\n        v-if=\"user.fields_html && user.fields_html.length > 0\"\n        class=\"user-profile-fields\"\n      >\n        <dl\n          v-for=\"(field, index) in user.fields_html\"\n          :key=\"index\"\n          class=\"user-profile-field\"\n        >\n          <dt\n            :title=\"user.fields_text[index].name\"\n            class=\"user-profile-field-name\"\n          >\n            <RichContent\n              :html=\"field.name\"\n              :emoji=\"user.emoji\"\n            />\n          </dt>\n          <dd\n            :title=\"user.fields_text[index].value\"\n            class=\"user-profile-field-value\"\n          >\n            <RichContent\n              :html=\"field.value\"\n              :emoji=\"user.emoji\"\n            />\n          </dd>\n        </dl>\n      </div>\n      <tab-switcher\n        :active-tab=\"tab\"\n        :render-only-focused=\"true\"\n        :on-switch=\"onTabSwitch\"\n      >\n        <Timeline\n          key=\"statuses\"\n          :label=\"$t('user_card.statuses')\"\n          :count=\"user.statuses_count\"\n          :embedded=\"true\"\n          :title=\"$t('user_profile.timeline_title')\"\n          :timeline=\"timeline\"\n          timeline-name=\"user\"\n          :user-id=\"userId\"\n          :pinned-status-ids=\"user.pinnedStatusIds\"\n          :in-profile=\"true\"\n          :footerSlipgate=\"footerRef\"\n        />\n        <div\n          v-if=\"followsTabVisible\"\n          key=\"followees\"\n          :label=\"$t('user_card.followees')\"\n          :disabled=\"!user.friends_count\"\n        >\n          <FriendList :user-id=\"userId\">\n            <template v-slot:item=\"{item}\">\n              <FollowCard :user=\"item\" />\n            </template>\n          </FriendList>\n        </div>\n        <div\n          v-if=\"followersTabVisible\"\n          key=\"followers\"\n          :label=\"$t('user_card.followers')\"\n          :disabled=\"!user.followers_count\"\n        >\n          <FollowerList :user-id=\"userId\">\n            <template v-slot:item=\"{item}\">\n              <FollowCard\n                :user=\"item\"\n                :no-follows-you=\"isUs\"\n              />\n            </template>\n          </FollowerList>\n        </div>\n        <Timeline\n          key=\"media\"\n          :label=\"$t('user_card.media')\"\n          :disabled=\"!media.visibleStatuses.length\"\n          :embedded=\"true\"\n          :title=\"$t('user_card.media')\"\n          timeline-name=\"media\"\n          :timeline=\"media\"\n          :user-id=\"userId\"\n          :in-profile=\"true\"\n          :footerSlipgate=\"footerRef\"\n        />\n        <Timeline\n          v-if=\"isUs\"\n          key=\"favorites\"\n          :label=\"$t('user_card.favorites')\"\n          :disabled=\"!favorites.visibleStatuses.length\"\n          :embedded=\"true\"\n          :title=\"$t('user_card.favorites')\"\n          timeline-name=\"favorites\"\n          :timeline=\"favorites\"\n          :in-profile=\"true\"\n          :footerSlipgate=\"footerRef\"\n        />\n      </tab-switcher>\n      <div class=\"panel-footer\" :ref=\"setFooterRef\"></div>\n    </div>\n    <div\n      v-else\n      class=\"panel user-profile-placeholder\"\n    >\n      <div class=\"panel-heading\">\n        <div class=\"title\">\n          {{ $t('settings.profile_tab') }}\n        </div>\n      </div>\n      <div class=\"panel-body\">\n        <span v-if=\"error\">{{ error }}</span>\n        <FAIcon\n          v-else\n          spin\n          icon=\"circle-notch\"\n        />\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./user_profile.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.user-profile {\n  flex: 2;\n  flex-basis: 500px;\n\n  // No sticky header on user profile\n  --currentPanelStack: 1;\n\n  .user-profile-fields {\n    margin: 0 0.5em;\n\n    img {\n      object-fit: contain;\n      vertical-align: middle;\n      max-width: 100%;\n      max-height: 400px;\n\n      &.emoji {\n        width: 18px;\n        height: 18px;\n      }\n    }\n\n    .user-profile-field {\n      display: flex;\n      margin: 0.25em;\n      border: 1px solid var(--border, $fallback--border);\n      border-radius: $fallback--inputRadius;\n      border-radius: var(--inputRadius, $fallback--inputRadius);\n\n      .user-profile-field-name {\n        flex: 0 1 30%;\n        font-weight: 500;\n        text-align: right;\n        color: var(--lightText);\n        min-width: 120px;\n        border-right: 1px solid var(--border, $fallback--border);\n      }\n\n      .user-profile-field-value {\n        flex: 1 1 70%;\n        color: var(--text);\n        margin: 0 0 0 0.25em;\n      }\n\n      .user-profile-field-name, .user-profile-field-value {\n        line-height: 1.3;\n        text-overflow: ellipsis;\n        white-space: nowrap;\n        overflow: hidden;\n        padding: 0.5em 1.5em;\n        box-sizing: border-box;\n      }\n    }\n  }\n\n  .userlist-placeholder {\n    display: flex;\n    justify-content: center;\n    align-items: middle;\n    padding: 2em;\n  }\n}\n.user-profile-placeholder {\n  .panel-body {\n    display: flex;\n    justify-content: center;\n    align-items: middle;\n    padding: 7em;\n  }\n}\n</style>\n","<template>\n  <basic-user-card :user=\"user\">\n    <div class=\"follow-card-content-container\">\n      <span\n        v-if=\"isMe || (!noFollowsYou && relationship.followed_by)\"\n        class=\"faint\"\n      >\n        {{ isMe ? $t('user_card.its_you') : $t('user_card.follows_you') }}\n      </span>\n      <template v-if=\"!loggedIn\">\n        <div\n          v-if=\"!relationship.following\"\n          class=\"follow-card-follow-button\"\n        >\n          <RemoteFollow :user=\"user\" />\n        </div>\n      </template>\n      <template v-else-if=\"!isMe\">\n        <FollowButton\n          :relationship=\"relationship\"\n          :label-following=\"$t('user_card.follow_unfollow')\"\n          class=\"follow-card-follow-button\"\n          :user=\"user\"\n        />\n      </template>\n    </div>\n  </basic-user-card>\n</template>\n\n<script src=\"./follow_card.js\"></script>\n\n<style lang=\"scss\">\n.follow-card {\n  &-content-container {\n    flex-shrink: 0;\n    display: flex;\n    flex-direction: row;\n    justify-content: space-between;\n    flex-wrap: wrap;\n    line-height: 1.5em;\n  }\n\n  &-follow-button {\n    margin-top: 0.5em;\n    margin-left: auto;\n    width: 10em;\n  }\n}\n</style>\n","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport RemoteFollow from '../remote_follow/remote_follow.vue'\nimport FollowButton from '../follow_button/follow_button.vue'\n\nconst FollowCard = {\n  props: [\n    'user',\n    'noFollowsYou'\n  ],\n  components: {\n    BasicUserCard,\n    RemoteFollow,\n    FollowButton\n  },\n  computed: {\n    isMe () {\n      return this.$store.state.users.currentUser.id === this.user.id\n    },\n    loggedIn () {\n      return this.$store.state.users.currentUser\n    },\n    relationship () {\n      return this.$store.getters.relationship(this.user.id)\n    }\n  }\n}\n\nexport default FollowCard\n","import { render } from \"./follow_card.vue?vue&type=template&id=4030f5aa\"\nimport script from \"./follow_card.js?vue&type=script&lang=js\"\nexport * from \"./follow_card.js?vue&type=script&lang=js\"\n\nimport \"./follow_card.vue?vue&type=style&index=0&id=4030f5aa&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// eslint-disable-next-line no-unused\nimport { h } from 'vue'\nimport isEmpty from 'lodash/isEmpty'\nimport { getComponentProps } from '../../services/component_utils/component_utils'\nimport './with_load_more.scss'\n\nimport { FontAwesomeIcon as FAIcon } from '@fortawesome/vue-fontawesome'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch\n)\n\nconst withLoadMore = ({\n  fetch, // function to fetch entries and return a promise\n  select, // function to select data from store\n  unmounted, // function called at \"destroyed\" lifecycle\n  childPropName = 'entries', // name of the prop to be passed into the wrapped component\n  additionalPropNames = [] // additional prop name list of the wrapper component\n}) => (WrappedComponent) => {\n  const originalProps = Object.keys(getComponentProps(WrappedComponent))\n  const props = originalProps.filter(v => v !== childPropName).concat(additionalPropNames)\n\n  return {\n    props,\n    data () {\n      return {\n        loading: false,\n        bottomedOut: false,\n        error: false,\n        entries: []\n      }\n    },\n    created () {\n      window.addEventListener('scroll', this.scrollLoad)\n      if (this.entries.length === 0) {\n        this.fetchEntries()\n      }\n    },\n    unmounted () {\n      window.removeEventListener('scroll', this.scrollLoad)\n      unmounted && unmounted(this.$props, this.$store)\n    },\n    methods: {\n      // Entries is not a computed because computed can't track the dynamic\n      // selector for changes and won't trigger after fetch.\n      updateEntries () {\n        this.entries = select(this.$props, this.$store) || []\n      },\n      fetchEntries () {\n        if (!this.loading) {\n          this.loading = true\n          this.error = false\n          fetch(this.$props, this.$store)\n            .then((newEntries) => {\n              this.loading = false\n              this.bottomedOut = isEmpty(newEntries)\n            })\n            .catch(() => {\n              this.loading = false\n              this.error = true\n            })\n            .finally(() => {\n              this.updateEntries()\n            })\n        }\n      },\n      scrollLoad (e) {\n        const bodyBRect = document.body.getBoundingClientRect()\n        const height = Math.max(bodyBRect.height, -(bodyBRect.y))\n        if (this.loading === false &&\n          this.bottomedOut === false &&\n          this.$el.offsetHeight > 0 &&\n          (window.innerHeight + window.pageYOffset) >= (height - 750)\n        ) {\n          this.fetchEntries()\n        }\n      }\n    },\n    render () {\n      const props = {\n        ...this.$props,\n        [childPropName]: this.entries\n      }\n      const children = this.$slots\n      return (\n        <div class=\"with-load-more\">\n          <WrappedComponent {...props}>\n            {children}\n          </WrappedComponent>\n          <div class=\"with-load-more-footer\">\n            {this.error &&\n              <button onClick={this.fetchEntries} class=\"button-unstyled -link -fullwidth alert error\">\n                {this.$t('general.generic_error')}\n              </button>\n            }\n            {!this.error && this.loading && <FAIcon spin icon=\"circle-notch\"/>}\n            {!this.error && !this.loading && !this.bottomedOut && <a onClick={this.fetchEntries}>{this.$t('general.more')}</a>}\n          </div>\n        </div>\n      )\n    }\n  }\n}\n\nexport default withLoadMore\n","import get from 'lodash/get'\nimport UserCard from '../user_card/user_card.vue'\nimport FollowCard from '../follow_card/follow_card.vue'\nimport Timeline from '../timeline/timeline.vue'\nimport Conversation from '../conversation/conversation.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport List from '../list/list.vue'\nimport withLoadMore from '../../hocs/with_load_more/with_load_more'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch\n)\n\nconst FollowerList = withLoadMore({\n  fetch: (props, $store) => $store.dispatch('fetchFollowers', props.userId),\n  select: (props, $store) => get($store.getters.findUser(props.userId), 'followerIds', []).map(id => $store.getters.findUser(id)),\n  destroy: (props, $store) => $store.dispatch('clearFollowers', props.userId),\n  childPropName: 'items',\n  additionalPropNames: ['userId']\n})(List)\n\nconst FriendList = withLoadMore({\n  fetch: (props, $store) => $store.dispatch('fetchFriends', props.userId),\n  select: (props, $store) => get($store.getters.findUser(props.userId), 'friendIds', []).map(id => $store.getters.findUser(id)),\n  destroy: (props, $store) => $store.dispatch('clearFriends', props.userId),\n  childPropName: 'items',\n  additionalPropNames: ['userId']\n})(List)\n\nconst defaultTabKey = 'statuses'\n\nconst UserProfile = {\n  data () {\n    return {\n      error: false,\n      userId: null,\n      tab: defaultTabKey,\n      footerRef: null\n    }\n  },\n  created () {\n    const routeParams = this.$route.params\n    this.load(routeParams.name || routeParams.id)\n    this.tab = get(this.$route, 'query.tab', defaultTabKey)\n  },\n  unmounted () {\n    this.stopFetching()\n  },\n  computed: {\n    timeline () {\n      return this.$store.state.statuses.timelines.user\n    },\n    favorites () {\n      return this.$store.state.statuses.timelines.favorites\n    },\n    media () {\n      return this.$store.state.statuses.timelines.media\n    },\n    isUs () {\n      return this.userId && this.$store.state.users.currentUser.id &&\n        this.userId === this.$store.state.users.currentUser.id\n    },\n    user () {\n      return this.$store.getters.findUser(this.userId)\n    },\n    isExternal () {\n      return this.$route.name === 'external-user-profile'\n    },\n    followsTabVisible () {\n      return this.isUs || !this.user.hide_follows\n    },\n    followersTabVisible () {\n      return this.isUs || !this.user.hide_followers\n    }\n  },\n  methods: {\n    setFooterRef (el) {\n      this.footerRef = el\n    },\n    load (userNameOrId) {\n      const startFetchingTimeline = (timeline, userId) => {\n        // Clear timeline only if load another user's profile\n        if (userId !== this.$store.state.statuses.timelines[timeline].userId) {\n          this.$store.commit('clearTimeline', { timeline })\n        }\n        this.$store.dispatch('startFetchingTimeline', { timeline, userId })\n      }\n\n      const loadById = (userId) => {\n        this.userId = userId\n        startFetchingTimeline('user', userId)\n        startFetchingTimeline('media', userId)\n        if (this.isUs) {\n          startFetchingTimeline('favorites', userId)\n        }\n        // Fetch all pinned statuses immediately\n        this.$store.dispatch('fetchPinnedStatuses', userId)\n      }\n\n      // Reset view\n      this.userId = null\n      this.error = false\n\n      // Check if user data is already loaded in store\n      const user = this.$store.getters.findUser(userNameOrId)\n      if (user) {\n        loadById(user.id)\n      } else {\n        this.$store.dispatch('fetchUser', userNameOrId)\n          .then(({ id }) => loadById(id))\n          .catch((reason) => {\n            const errorMessage = get(reason, 'error.error')\n            if (errorMessage === 'No user with such user_id') { // Known error\n              this.error = this.$t('user_profile.profile_does_not_exist')\n            } else if (errorMessage) {\n              this.error = errorMessage\n            } else {\n              this.error = this.$t('user_profile.profile_loading_error')\n            }\n          })\n      }\n    },\n    stopFetching () {\n      this.$store.dispatch('stopFetchingTimeline', 'user')\n      this.$store.dispatch('stopFetchingTimeline', 'favorites')\n      this.$store.dispatch('stopFetchingTimeline', 'media')\n    },\n    switchUser (userNameOrId) {\n      this.stopFetching()\n      this.load(userNameOrId)\n    },\n    onTabSwitch (tab) {\n      this.tab = tab\n      this.$router.replace({ query: { tab } })\n    },\n    linkClicked ({ target }) {\n      if (target.tagName === 'SPAN') {\n        target = target.parentNode\n      }\n      if (target.tagName === 'A') {\n        window.open(target.href, '_blank')\n      }\n    }\n  },\n  watch: {\n    '$route.params.id': function (newVal) {\n      if (newVal) {\n        this.switchUser(newVal)\n      }\n    },\n    '$route.params.name': function (newVal) {\n      if (newVal) {\n        this.switchUser(newVal)\n      }\n    },\n    '$route.query': function (newVal) {\n      this.tab = newVal.tab || defaultTabKey\n    }\n  },\n  components: {\n    UserCard,\n    Timeline,\n    FollowerList,\n    FriendList,\n    FollowCard,\n    TabSwitcher,\n    Conversation,\n    RichContent\n  }\n}\n\nexport default UserProfile\n","import { render } from \"./user_profile.vue?vue&type=template&id=56ed1f7e\"\nimport script from \"./user_profile.js?vue&type=script&lang=js\"\nexport * from \"./user_profile.js?vue&type=script&lang=js\"\n\nimport \"./user_profile.vue?vue&type=style&index=0&id=56ed1f7e&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"panel panel-default\">\n    <div class=\"panel-heading\">\n      <div class=\"title\">\n        {{ $t('nav.search') }}\n      </div>\n    </div>\n    <div class=\"search-input-container\">\n      <input\n        ref=\"searchInput\"\n        v-model=\"searchTerm\"\n        class=\"search-input\"\n        :placeholder=\"$t('nav.search')\"\n        @keyup.enter=\"newQuery(searchTerm)\"\n      >\n      <button\n        class=\"btn button-default search-button\"\n        type=\"submit\"\n        @click=\"newQuery(searchTerm)\"\n      >\n        <FAIcon icon=\"search\" />\n      </button>\n    </div>\n    <div\n      v-if=\"loading\"\n      class=\"text-center loading-icon\"\n    >\n      <FAIcon\n        icon=\"circle-notch\"\n        spin\n        size=\"lg\"\n      />\n    </div>\n    <div v-else-if=\"loaded\">\n      <div class=\"search-nav-heading\">\n        <tab-switcher\n          ref=\"tabSwitcher\"\n          :on-switch=\"onResultTabSwitch\"\n          :active-tab=\"currenResultTab\"\n        >\n          <span\n            key=\"statuses\"\n            :label=\"$t('user_card.statuses') + resultCount('visibleStatuses')\"\n          />\n          <span\n            key=\"people\"\n            :label=\"$t('search.people') + resultCount('users')\"\n          />\n          <span\n            key=\"hashtags\"\n            :label=\"$t('search.hashtags') + resultCount('hashtags')\"\n          />\n        </tab-switcher>\n      </div>\n    </div>\n    <div class=\"panel-body\">\n      <div v-if=\"currenResultTab === 'statuses'\">\n        <div\n          v-if=\"visibleStatuses.length === 0 && !loading && loaded\"\n          class=\"search-result-heading\"\n        >\n          <h4>{{ $t('search.no_results') }}</h4>\n        </div>\n        <Status\n          v-for=\"status in visibleStatuses\"\n          :key=\"status.id\"\n          :collapsable=\"false\"\n          :expandable=\"false\"\n          :compact=\"false\"\n          class=\"search-result\"\n          :statusoid=\"status\"\n          :no-heading=\"false\"\n        />\n      </div>\n      <div v-else-if=\"currenResultTab === 'people'\">\n        <div\n          v-if=\"users.length === 0 && !loading && loaded\"\n          class=\"search-result-heading\"\n        >\n          <h4>{{ $t('search.no_results') }}</h4>\n        </div>\n        <FollowCard\n          v-for=\"user in users\"\n          :key=\"user.id\"\n          :user=\"user\"\n          class=\"list-item search-result\"\n        />\n      </div>\n      <div v-else-if=\"currenResultTab === 'hashtags'\">\n        <div\n          v-if=\"hashtags.length === 0 && !loading && loaded\"\n          class=\"search-result-heading\"\n        >\n          <h4>{{ $t('search.no_results') }}</h4>\n        </div>\n        <div\n          v-for=\"hashtag in hashtags\"\n          :key=\"hashtag.url\"\n          class=\"status trend search-result\"\n        >\n          <div class=\"hashtag\">\n            <router-link :to=\"{ name: 'tag-timeline', params: { tag: hashtag.name } }\">\n              #{{ hashtag.name }}\n            </router-link>\n            <div v-if=\"lastHistoryRecord(hashtag)\">\n              <span v-if=\"lastHistoryRecord(hashtag).accounts == 1\">\n                {{ $t('search.person_talking', { count: lastHistoryRecord(hashtag).accounts }) }}\n              </span>\n              <span v-else>\n                {{ $t('search.people_talking', { count: lastHistoryRecord(hashtag).accounts }) }}\n              </span>\n            </div>\n          </div>\n          <div\n            v-if=\"lastHistoryRecord(hashtag)\"\n            class=\"count\"\n          >\n            {{ lastHistoryRecord(hashtag).uses }}\n          </div>\n        </div>\n      </div>\n    </div>\n    <div class=\"search-result-footer text-center panel-footer faint\" />\n  </div>\n</template>\n\n<script src=\"./search.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.search-result-heading {\n  color: $fallback--faint;\n  color: var(--faint, $fallback--faint);\n  padding: 0.75rem;\n  text-align: center;\n}\n\n@media all and (max-width: 800px) {\n  .search-nav-heading {\n    .tab-switcher .tabs .tab-wrapper {\n      display: block;\n      justify-content: center;\n      flex: 1 1 auto;\n      text-align: center;\n    }\n  }\n}\n\n.search-result {\n  box-sizing: border-box;\n  border-bottom: 1px solid;\n  border-color: $fallback--border;\n  border-color: var(--border, $fallback--border);\n}\n\n.search-result-footer {\n  border-width: 1px 0 0 0;\n  border-style: solid;\n  border-color: var(--border, $fallback--border);\n  padding: 10px;\n  background-color: $fallback--fg;\n  background-color: var(--panel, $fallback--fg);\n}\n\n.search-input-container {\n  padding: 0.8rem;\n  display: flex;\n  justify-content: center;\n\n  .search-input {\n    width: 100%;\n    line-height: 1.125rem;\n    font-size: 1rem;\n    padding: 0.5rem;\n    box-sizing: border-box;\n  }\n\n  .search-button {\n    margin-left: 0.5em;\n  }\n}\n\n.loading-icon {\n  padding: 1em;\n}\n\n.trend {\n  display: flex;\n  align-items: center;\n\n  .hashtag {\n    flex: 1 1 auto;\n    color: $fallback--text;\n    color: var(--text, $fallback--text);\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n\n  .count {\n    flex: 0 0 auto;\n    width: 2rem;\n    font-size: 1.5rem;\n    line-height: 2.25rem;\n    font-weight: 500;\n    text-align: center;\n    color: $fallback--text;\n    color: var(--text, $fallback--text);\n  }\n}\n\n</style>\n","import FollowCard from '../follow_card/follow_card.vue'\nimport Conversation from '../conversation/conversation.vue'\nimport Status from '../status/status.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\nimport map from 'lodash/map'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faCircleNotch,\n  faSearch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch,\n  faSearch\n)\n\nconst Search = {\n  components: {\n    FollowCard,\n    Conversation,\n    Status,\n    TabSwitcher\n  },\n  props: [\n    'query'\n  ],\n  data () {\n    return {\n      loaded: false,\n      loading: false,\n      searchTerm: this.query || '',\n      userIds: [],\n      statuses: [],\n      hashtags: [],\n      currenResultTab: 'statuses'\n    }\n  },\n  computed: {\n    users () {\n      return this.userIds.map(userId => this.$store.getters.findUser(userId))\n    },\n    visibleStatuses () {\n      const allStatusesObject = this.$store.state.statuses.allStatusesObject\n\n      return this.statuses.filter(status =>\n        allStatusesObject[status.id] && !allStatusesObject[status.id].deleted\n      )\n    }\n  },\n  mounted () {\n    this.search(this.query)\n  },\n  watch: {\n    query (newValue) {\n      this.searchTerm = newValue\n      this.search(newValue)\n    }\n  },\n  methods: {\n    newQuery (query) {\n      this.$router.push({ name: 'search', query: { query } })\n      this.$refs.searchInput.focus()\n    },\n    search (query) {\n      if (!query) {\n        this.loading = false\n        return\n      }\n\n      this.loading = true\n      this.userIds = []\n      this.statuses = []\n      this.hashtags = []\n      this.$refs.searchInput.blur()\n\n      this.$store.dispatch('search', { q: query, resolve: true })\n        .then(data => {\n          this.loading = false\n          this.userIds = map(data.accounts, 'id')\n          this.statuses = data.statuses\n          this.hashtags = data.hashtags\n          this.currenResultTab = this.getActiveTab()\n          this.loaded = true\n        })\n    },\n    resultCount (tabName) {\n      const length = this[tabName].length\n      return length === 0 ? '' : ` (${length})`\n    },\n    onResultTabSwitch (key) {\n      this.currenResultTab = key\n    },\n    getActiveTab () {\n      if (this.visibleStatuses.length > 0) {\n        return 'statuses'\n      } else if (this.users.length > 0) {\n        return 'people'\n      } else if (this.hashtags.length > 0) {\n        return 'hashtags'\n      }\n\n      return 'statuses'\n    },\n    lastHistoryRecord (hashtag) {\n      return hashtag.history && hashtag.history[0]\n    }\n  }\n}\n\nexport default Search\n","import { render } from \"./search.vue?vue&type=template&id=52f57ebe\"\nimport script from \"./search.js?vue&type=script&lang=js\"\nexport * from \"./search.js?vue&type=script&lang=js\"\n\nimport \"./search.vue?vue&type=style&index=0&id=52f57ebe&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"settings panel panel-default\">\n    <div class=\"panel-heading\">\n      {{ $t('registration.registration') }}\n    </div>\n    <div class=\"panel-body\">\n      <form\n        class=\"registration-form\"\n        @submit.prevent=\"submit(user)\"\n      >\n        <div class=\"container\">\n          <div class=\"text-fields\">\n            <div\n              class=\"form-group\"\n              :class=\"{ 'form-group--error': v$.user.username.$error }\"\n            >\n              <label\n                class=\"form--label\"\n                for=\"sign-up-username\"\n              >{{ $t('login.username') }}</label>\n              <input\n                id=\"sign-up-username\"\n                v-model.trim=\"v$.user.username.$model\"\n                :disabled=\"isPending\"\n                class=\"form-control\"\n                :placeholder=\"$t('registration.username_placeholder')\"\n              >\n            </div>\n            <div\n              v-if=\"v$.user.username.$dirty\"\n              class=\"form-error\"\n            >\n              <ul>\n                <li v-if=\"!v$.user.username.required\">\n                  <span>{{ $t('registration.validations.username_required') }}</span>\n                </li>\n              </ul>\n            </div>\n\n            <div\n              class=\"form-group\"\n              :class=\"{ 'form-group--error': v$.user.fullname.$error }\"\n            >\n              <label\n                class=\"form--label\"\n                for=\"sign-up-fullname\"\n              >{{ $t('registration.fullname') }}</label>\n              <input\n                id=\"sign-up-fullname\"\n                v-model.trim=\"v$.user.fullname.$model\"\n                :disabled=\"isPending\"\n                class=\"form-control\"\n                :placeholder=\"$t('registration.fullname_placeholder')\"\n              >\n            </div>\n            <div\n              v-if=\"v$.user.fullname.$dirty\"\n              class=\"form-error\"\n            >\n              <ul>\n                <li v-if=\"!v$.user.fullname.required\">\n                  <span>{{ $t('registration.validations.fullname_required') }}</span>\n                </li>\n              </ul>\n            </div>\n\n            <div\n              class=\"form-group\"\n              :class=\"{ 'form-group--error': v$.user.email.$error }\"\n            >\n              <label\n                class=\"form--label\"\n                for=\"email\"\n              >{{ $t('registration.email') }}</label>\n              <input\n                id=\"email\"\n                v-model=\"v$.user.email.$model\"\n                :disabled=\"isPending\"\n                class=\"form-control\"\n                type=\"email\"\n              >\n            </div>\n            <div\n              v-if=\"v$.user.email.$dirty\"\n              class=\"form-error\"\n            >\n              <ul>\n                <li v-if=\"!v$.user.email.required\">\n                  <span>{{ $t('registration.validations.email_required') }}</span>\n                </li>\n              </ul>\n            </div>\n\n            <div class=\"form-group\">\n              <label\n                class=\"form--label\"\n                for=\"bio\"\n              >{{ $t('registration.bio') }} ({{ $t('general.optional') }})</label>\n              <textarea\n                id=\"bio\"\n                v-model=\"user.bio\"\n                :disabled=\"isPending\"\n                class=\"form-control\"\n                :placeholder=\"bioPlaceholder\"\n              />\n            </div>\n\n            <div\n              class=\"form-group\"\n              :class=\"{ 'form-group--error': v$.user.password.$error }\"\n            >\n              <label\n                class=\"form--label\"\n                for=\"sign-up-password\"\n              >{{ $t('login.password') }}</label>\n              <input\n                id=\"sign-up-password\"\n                v-model=\"user.password\"\n                :disabled=\"isPending\"\n                class=\"form-control\"\n                type=\"password\"\n              >\n            </div>\n            <div\n              v-if=\"v$.user.password.$dirty\"\n              class=\"form-error\"\n            >\n              <ul>\n                <li v-if=\"!v$.user.password.required\">\n                  <span>{{ $t('registration.validations.password_required') }}</span>\n                </li>\n              </ul>\n            </div>\n\n            <div\n              class=\"form-group\"\n              :class=\"{ 'form-group--error': v$.user.confirm.$error }\"\n            >\n              <label\n                class=\"form--label\"\n                for=\"sign-up-password-confirmation\"\n              >{{ $t('registration.password_confirm') }}</label>\n              <input\n                id=\"sign-up-password-confirmation\"\n                v-model=\"user.confirm\"\n                :disabled=\"isPending\"\n                class=\"form-control\"\n                type=\"password\"\n              >\n            </div>\n            <div\n              v-if=\"v$.user.confirm.$dirty\"\n              class=\"form-error\"\n            >\n              <ul>\n                <li v-if=\"!v$.user.confirm.required\">\n                  <span>{{ $t('registration.validations.password_confirmation_required') }}</span>\n                </li>\n                <li v-if=\"!v$.user.confirm.sameAsPassword\">\n                  <span>{{ $t('registration.validations.password_confirmation_match') }}</span>\n                </li>\n              </ul>\n            </div>\n\n            <div\n              class=\"form-group\"\n              :class=\"{ 'form-group--error': v$.user.language.$error }\"\n            >\n              <interface-language-switcher\n                for=\"email-language\"\n                :prompt-text=\"$t('registration.email_language')\"\n                :language=\"v$.user.language.$model\"\n                :set-language=\"val => v$.user.language.$model = val\"\n              />\n            </div>\n\n            <div\n              v-if=\"accountApprovalRequired\"\n              class=\"form-group\"\n            >\n              <label\n                class=\"form--label\"\n                for=\"reason\"\n              >{{ $t('registration.reason') }}</label>\n              <textarea\n                id=\"reason\"\n                v-model=\"user.reason\"\n                :disabled=\"isPending\"\n                class=\"form-control\"\n                :placeholder=\"reasonPlaceholder\"\n              />\n            </div>\n\n            <div\n              v-if=\"captcha.type != 'none'\"\n              id=\"captcha-group\"\n              class=\"form-group\"\n            >\n              <label\n                class=\"form--label\"\n                for=\"captcha-label\"\n              >{{ $t('registration.captcha') }}</label>\n\n              <template v-if=\"['kocaptcha', 'native'].includes(captcha.type)\">\n                <img\n                  :src=\"captcha.url\"\n                  @click=\"setCaptcha\"\n                >\n\n                <sub>{{ $t('registration.new_captcha') }}</sub>\n\n                <input\n                  id=\"captcha-answer\"\n                  v-model=\"captcha.solution\"\n                  :disabled=\"isPending\"\n                  class=\"form-control\"\n                  type=\"text\"\n                  autocomplete=\"off\"\n                  autocorrect=\"off\"\n                  autocapitalize=\"off\"\n                  spellcheck=\"false\"\n                >\n              </template>\n            </div>\n\n            <div\n              v-if=\"token\"\n              class=\"form-group\"\n            >\n              <label for=\"token\">{{ $t('registration.token') }}</label>\n              <input\n                id=\"token\"\n                v-model=\"token\"\n                disabled=\"true\"\n                class=\"form-control\"\n                type=\"text\"\n              >\n            </div>\n            <div class=\"form-group\">\n              <button\n                :disabled=\"isPending\"\n                type=\"submit\"\n                class=\"btn button-default\"\n              >\n                {{ $t('registration.register') }}\n              </button>\n            </div>\n          </div>\n\n          <!-- eslint-disable vue/no-v-html -->\n          <div\n            class=\"terms-of-service\"\n            v-html=\"termsOfService\"\n          />\n          <!-- eslint-enable vue/no-v-html -->\n        </div>\n        <div\n          v-if=\"serverValidationErrors.length\"\n          class=\"form-group\"\n        >\n          <div class=\"alert error\">\n            <span\n              v-for=\"error in serverValidationErrors\"\n              :key=\"error\"\n            >{{ error }}</span>\n          </div>\n        </div>\n      </form>\n    </div>\n  </div>\n</template>\n\n<script src=\"./registration.js\"></script>\n<style lang=\"scss\">\n@import '../../_variables.scss';\n$validations-cRed: #f04124;\n\n.registration-form {\n  display: flex;\n  flex-direction: column;\n  margin: 0.6em;\n\n  .container {\n    display: flex;\n    flex-direction: row;\n\n    > * {\n      min-width: 0;\n    }\n  }\n\n  .terms-of-service {\n    flex: 0 1 50%;\n    margin: 0.8em;\n  }\n\n  .text-fields {\n    margin-top: 0.6em;\n    flex: 1 0;\n    display: flex;\n    flex-direction: column;\n  }\n\n  textarea {\n    min-height: 100px;\n    resize: vertical;\n  }\n\n  .form-group {\n    display: flex;\n    flex-direction: column;\n    padding: 0.3em 0;\n    line-height: 2;\n    margin-bottom: 1em;\n  }\n\n  .form-group--error {\n    animation-name: shakeError;\n    animation-duration: .6s;\n    animation-timing-function: ease-in-out;\n  }\n\n  .form-group--error .form--label {\n    color: $validations-cRed;\n    color: var(--cRed, $validations-cRed);\n  }\n\n  .form-error {\n    margin-top: -0.7em;\n    text-align: left;\n\n    span {\n      font-size: 0.85em;\n    }\n  }\n\n  .form-error ul {\n    list-style: none;\n    padding: 0 0 0 5px;\n    margin-top: 0;\n\n    li::before {\n      content: \"• \";\n    }\n  }\n\n  form textarea {\n    line-height:16px;\n    resize: vertical;\n  }\n\n  .captcha {\n    max-width: 350px;\n    margin-bottom: 0.4em;\n  }\n\n  .btn {\n    margin-top: 0.6em;\n    height: 2em;\n  }\n\n  .error {\n    text-align: center;\n  }\n}\n\n@media all and (max-width: 800px) {\n  .registration-form .container {\n    flex-direction: column-reverse;\n  }\n}\n</style>\n","import useVuelidate from '@vuelidate/core'\nimport { required, requiredIf, sameAs } from '@vuelidate/validators'\nimport { mapActions, mapState } from 'vuex'\nimport InterfaceLanguageSwitcher from '../interface_language_switcher/interface_language_switcher.vue'\nimport localeService from '../../services/locale/locale.service.js'\n\nconst registration = {\n  setup () { return { v$: useVuelidate() } },\n  data: () => ({\n    user: {\n      email: '',\n      fullname: '',\n      username: '',\n      password: '',\n      confirm: '',\n      reason: '',\n      language: ''\n    },\n    captcha: {}\n  }),\n  components: {\n    InterfaceLanguageSwitcher\n  },\n  validations () {\n    return {\n      user: {\n        email: { required: requiredIf(() => this.accountActivationRequired) },\n        username: { required },\n        fullname: { required },\n        password: { required },\n        confirm: {\n          required,\n          sameAs: sameAs(this.user.password)\n        },\n        reason: { required: requiredIf(() => this.accountApprovalRequired) },\n        language: {}\n      }\n    }\n  },\n  created () {\n    if ((!this.registrationOpen && !this.token) || this.signedIn) {\n      this.$router.push({ name: 'root' })\n    }\n\n    this.setCaptcha()\n  },\n  computed: {\n    token () { return this.$route.params.token },\n    bioPlaceholder () {\n      return this.replaceNewlines(this.$t('registration.bio_placeholder'))\n    },\n    reasonPlaceholder () {\n      return this.replaceNewlines(this.$t('registration.reason_placeholder'))\n    },\n    ...mapState({\n      registrationOpen: (state) => state.instance.registrationOpen,\n      signedIn: (state) => !!state.users.currentUser,\n      isPending: (state) => state.users.signUpPending,\n      serverValidationErrors: (state) => state.users.signUpErrors,\n      termsOfService: (state) => state.instance.tos,\n      accountActivationRequired: (state) => state.instance.accountActivationRequired,\n      accountApprovalRequired: (state) => state.instance.accountApprovalRequired\n    })\n  },\n  methods: {\n    ...mapActions(['signUp', 'getCaptcha']),\n    async submit () {\n      this.user.nickname = this.user.username\n      this.user.token = this.token\n\n      this.user.captcha_solution = this.captcha.solution\n      this.user.captcha_token = this.captcha.token\n      this.user.captcha_answer_data = this.captcha.answer_data\n      if (this.user.language) {\n        this.user.language = localeService.internalToBackendLocale(this.user.language)\n      }\n\n      this.v$.$touch()\n\n      if (!this.v$.$invalid) {\n        try {\n          await this.signUp(this.user)\n          this.$router.push({ name: 'friends' })\n        } catch (error) {\n          console.warn('Registration failed: ', error)\n          this.setCaptcha()\n        }\n      }\n    },\n    setCaptcha () {\n      this.getCaptcha().then(cpt => { this.captcha = cpt })\n    },\n    replaceNewlines (str) {\n      return str.replace(/\\s*\\n\\s*/g, ' \\n')\n    }\n  }\n}\n\nexport default registration\n","import { render } from \"./registration.vue?vue&type=template&id=c19f87d0\"\nimport script from \"./registration.js?vue&type=script&lang=js\"\nexport * from \"./registration.js?vue&type=script&lang=js\"\n\nimport \"./registration.vue?vue&type=style&index=0&id=c19f87d0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"settings panel panel-default\">\n    <div class=\"panel-heading\">\n      {{ $t('password_reset.password_reset') }}\n    </div>\n    <div class=\"panel-body\">\n      <form\n        class=\"password-reset-form\"\n        @submit.prevent=\"submit\"\n      >\n        <div class=\"container\">\n          <div v-if=\"!mailerEnabled\">\n            <p v-if=\"passwordResetRequested\">\n              {{ $t('password_reset.password_reset_required_but_mailer_is_disabled') }}\n            </p>\n            <p v-else>\n              {{ $t('password_reset.password_reset_disabled') }}\n            </p>\n          </div>\n          <div v-else-if=\"success || throttled\">\n            <p v-if=\"success\">\n              {{ $t('password_reset.check_email') }}\n            </p>\n            <div class=\"form-group text-center\">\n              <router-link :to=\"{name: 'root'}\">\n                {{ $t('password_reset.return_home') }}\n              </router-link>\n            </div>\n          </div>\n          <div v-else>\n            <p\n              v-if=\"passwordResetRequested\"\n              class=\"password-reset-required error\"\n            >\n              {{ $t('password_reset.password_reset_required') }}\n            </p>\n            <p>\n              {{ $t('password_reset.instruction') }}\n            </p>\n            <div class=\"form-group\">\n              <input\n                ref=\"email\"\n                v-model=\"user.email\"\n                :disabled=\"isPending\"\n                :placeholder=\"$t('password_reset.placeholder')\"\n                class=\"form-control\"\n                type=\"input\"\n              >\n            </div>\n            <div class=\"form-group\">\n              <button\n                :disabled=\"isPending\"\n                type=\"submit\"\n                class=\"btn button-default btn-block\"\n              >\n                {{ $t('settings.save') }}\n              </button>\n            </div>\n          </div>\n          <p\n            v-if=\"error\"\n            class=\"alert error notice-dismissible\"\n          >\n            <span>{{ error }}</span>\n            <a\n              class=\"fa-scale-110 fa-old-padding dismiss\"\n              @click.prevent=\"dismissError()\"\n            >\n              <FAIcon icon=\"times\" />\n            </a>\n          </p>\n        </div>\n      </form>\n    </div>\n  </div>\n</template>\n\n<script src=\"./password_reset.js\"></script>\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.password-reset-form {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  margin: 0.6em;\n\n  .container {\n    display: flex;\n    flex: 1 0;\n    flex-direction: column;\n    margin-top: 0.6em;\n    max-width: 18rem;\n\n    > * {\n      min-width: 0;\n    }\n  }\n\n  .form-group {\n    display: flex;\n    flex-direction: column;\n    margin-bottom: 1em;\n    padding: 0.3em 0;\n    line-height: 1.85em;\n  }\n\n  .error {\n    text-align: center;\n    animation-name: shakeError;\n    animation-duration: 0.4s;\n    animation-timing-function: ease-in-out;\n  }\n\n  .alert {\n    padding: 0.5em;\n    margin: 0.3em 0 1em;\n  }\n\n  .password-reset-required {\n    background-color: var(--alertError, $fallback--alertError);\n    padding: 10px 0;\n  }\n\n  .notice-dismissible {\n    padding-right: 2rem;\n  }\n\n  .dismiss {\n    cursor: pointer;\n  }\n}\n\n</style>\n","import { reduce } from 'lodash'\n\nconst MASTODON_PASSWORD_RESET_URL = `/auth/password`\n\nconst resetPassword = ({ instance, email }) => {\n  const params = { email }\n  const query = reduce(params, (acc, v, k) => {\n    const encoded = `${k}=${encodeURIComponent(v)}`\n    return `${acc}&${encoded}`\n  }, '')\n  const url = `${instance}${MASTODON_PASSWORD_RESET_URL}?${query}`\n\n  return window.fetch(url, {\n    method: 'POST'\n  })\n}\n\nexport default resetPassword\n","import { mapState } from 'vuex'\nimport passwordResetApi from '../../services/new_api/password_reset.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes\n)\n\nconst passwordReset = {\n  data: () => ({\n    user: {\n      email: ''\n    },\n    isPending: false,\n    success: false,\n    throttled: false,\n    error: null\n  }),\n  computed: {\n    ...mapState({\n      signedIn: (state) => !!state.users.currentUser,\n      instance: state => state.instance\n    }),\n    mailerEnabled () {\n      return this.instance.mailerEnabled\n    }\n  },\n  created () {\n    if (this.signedIn) {\n      this.$router.push({ name: 'root' })\n    }\n  },\n  props: {\n    passwordResetRequested: {\n      default: false,\n      type: Boolean\n    }\n  },\n  methods: {\n    dismissError () {\n      this.error = null\n    },\n    submit () {\n      this.isPending = true\n      const email = this.user.email\n      const instance = this.instance.server\n\n      passwordResetApi({ instance, email }).then(({ status }) => {\n        this.isPending = false\n        this.user.email = ''\n\n        if (status === 204) {\n          this.success = true\n          this.error = null\n        } else if (status === 429) {\n          this.throttled = true\n          this.error = this.$t('password_reset.too_many_requests')\n        }\n      }).catch(() => {\n        this.isPending = false\n        this.user.email = ''\n        this.error = this.$t('general.generic_error')\n      })\n    }\n  }\n}\n\nexport default passwordReset\n","import { render } from \"./password_reset.vue?vue&type=template&id=3a677309\"\nimport script from \"./password_reset.js?vue&type=script&lang=js\"\nexport * from \"./password_reset.js?vue&type=script&lang=js\"\n\nimport \"./password_reset.vue?vue&type=style&index=0&id=3a677309&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"settings panel panel-default\">\n    <div class=\"panel-heading\">\n      <div class=\"title\">\n        {{ $t('nav.friend_requests') }}\n      </div>\n    </div>\n    <div class=\"panel-body\">\n      <FollowRequestCard\n        v-for=\"request in requests\"\n        :key=\"request.id\"\n        :user=\"request\"\n        class=\"list-item\"\n      />\n    </div>\n  </div>\n</template>\n\n<script src=\"./follow_requests.js\"></script>\n","<template>\n  <basic-user-card :user=\"user\">\n    <div class=\"follow-request-card-content-container\">\n      <button\n        class=\"btn button-default\"\n        @click=\"approveUser\"\n      >\n        {{ $t('user_card.approve') }}\n      </button>\n      <button\n        class=\"btn button-default\"\n        @click=\"denyUser\"\n      >\n        {{ $t('user_card.deny') }}\n      </button>\n    </div>\n  </basic-user-card>\n</template>\n\n<script src=\"./follow_request_card.js\"></script>\n\n<style lang=\"scss\">\n.follow-request-card-content-container {\n  display: flex;\n  flex-direction: row;\n  flex-wrap: wrap;\n  button {\n    margin-top: 0.5em;\n    margin-right: 0.5em;\n    flex: 1 1;\n    max-width: 12em;\n    min-width: 8em;\n\n    &:last-child {\n      margin-right: 0;\n    }\n  }\n}\n</style>\n","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport { notificationsFromStore } from '../../services/notification_utils/notification_utils.js'\n\nconst FollowRequestCard = {\n  props: ['user'],\n  components: {\n    BasicUserCard\n  },\n  methods: {\n    findFollowRequestNotificationId () {\n      const notif = notificationsFromStore(this.$store).find(\n        (notif) => notif.from_profile.id === this.user.id && notif.type === 'follow_request'\n      )\n      return notif && notif.id\n    },\n    approveUser () {\n      this.$store.state.api.backendInteractor.approveUser({ id: this.user.id })\n      this.$store.dispatch('removeFollowRequest', this.user)\n\n      const notifId = this.findFollowRequestNotificationId()\n      this.$store.dispatch('markSingleNotificationAsSeen', { id: notifId })\n      this.$store.dispatch('updateNotification', {\n        id: notifId,\n        updater: notification => {\n          notification.type = 'follow'\n        }\n      })\n    },\n    denyUser () {\n      const notifId = this.findFollowRequestNotificationId()\n      this.$store.state.api.backendInteractor.denyUser({ id: this.user.id })\n        .then(() => {\n          this.$store.dispatch('dismissNotificationLocal', { id: notifId })\n          this.$store.dispatch('removeFollowRequest', this.user)\n        })\n    }\n  }\n}\n\nexport default FollowRequestCard\n","import { render } from \"./follow_request_card.vue?vue&type=template&id=84be1288\"\nimport script from \"./follow_request_card.js?vue&type=script&lang=js\"\nexport * from \"./follow_request_card.js?vue&type=script&lang=js\"\n\nimport \"./follow_request_card.vue?vue&type=style&index=0&id=84be1288&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import FollowRequestCard from '../follow_request_card/follow_request_card.vue'\n\nconst FollowRequests = {\n  components: {\n    FollowRequestCard\n  },\n  computed: {\n    requests () {\n      return this.$store.state.api.followRequests\n    }\n  }\n}\n\nexport default FollowRequests\n","import { render } from \"./follow_requests.vue?vue&type=template&id=62e19784\"\nimport script from \"./follow_requests.js?vue&type=script&lang=js\"\nexport * from \"./follow_requests.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import oauth from '../../services/new_api/oauth.js'\n\nconst oac = {\n  props: ['code'],\n  mounted () {\n    if (this.code) {\n      const { clientId, clientSecret } = this.$store.state.oauth\n\n      oauth.getToken({\n        clientId,\n        clientSecret,\n        instance: this.$store.state.instance.server,\n        code: this.code\n      }).then((result) => {\n        this.$store.commit('setToken', result.access_token)\n        this.$store.dispatch('loginUser', result.access_token)\n        this.$router.push({ name: 'friends' })\n      })\n    }\n  }\n}\n\nexport default oac\n","import { render } from \"./oauth_callback.vue?vue&type=template&id=f514124c\"\nimport script from \"./oauth_callback.js?vue&type=script&lang=js\"\nexport * from \"./oauth_callback.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <h1>...</h1>\n</template>\n\n<script src=\"./oauth_callback.js\"></script>\n","<template>\n  <div class=\"panel panel-default\">\n    <div class=\"panel-heading\">\n      {{ $t('who_to_follow.who_to_follow') }}\n    </div>\n    <div class=\"panel-body\">\n      <FollowCard\n        v-for=\"user in users\"\n        :key=\"user.id\"\n        :user=\"user\"\n        class=\"list-item\"\n      />\n    </div>\n  </div>\n</template>\n\n<script src=\"./who_to_follow.js\"></script>\n\n<style lang=\"scss\">\n</style>\n","import apiService from '../../services/api/api.service.js'\nimport FollowCard from '../follow_card/follow_card.vue'\n\nconst WhoToFollow = {\n  components: {\n    FollowCard\n  },\n  data () {\n    return {\n      users: []\n    }\n  },\n  mounted () {\n    this.getWhoToFollow()\n  },\n  methods: {\n    showWhoToFollow (reply) {\n      reply.forEach((i, index) => {\n        this.$store.state.api.backendInteractor.fetchUser({ id: i.acct })\n          .then((externalUser) => {\n            if (!externalUser.error) {\n              this.$store.commit('addNewUsers', [externalUser])\n              this.users.push(externalUser)\n            }\n          })\n      })\n    },\n    getWhoToFollow () {\n      const credentials = this.$store.state.users.currentUser.credentials\n      if (credentials) {\n        apiService.suggestions({ credentials: credentials })\n          .then((reply) => {\n            this.showWhoToFollow(reply)\n          })\n      }\n    }\n  }\n}\n\nexport default WhoToFollow\n","import { render } from \"./who_to_follow.vue?vue&type=template&id=4f8c3288\"\nimport script from \"./who_to_follow.js?vue&type=script&lang=js\"\nexport * from \"./who_to_follow.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"column-inner\">\n    <instance-specific-panel v-if=\"showInstanceSpecificPanel\" />\n    <staff-panel />\n    <terms-of-service-panel />\n    <MRFTransparencyPanel />\n    <features-panel v-if=\"showFeaturesPanel\" />\n  </div>\n</template>\n\n<script src=\"./about.js\" ></script>\n\n<style lang=\"scss\">\n</style>\n","<template>\n  <div>\n    <div class=\"panel panel-default\">\n      <div class=\"panel-body\">\n        <!-- eslint-disable vue/no-v-html -->\n        <div\n          class=\"tos-content\"\n          v-html=\"content\"\n        />\n      <!-- eslint-enable vue/no-v-html -->\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./terms_of_service_panel.js\" ></script>\n\n<style lang=\"scss\">\n.tos-content {\n  margin: 1em\n}\n</style>\n","const TermsOfServicePanel = {\n  computed: {\n    content () {\n      return this.$store.state.instance.tos\n    }\n  }\n}\n\nexport default TermsOfServicePanel\n","import { render } from \"./terms_of_service_panel.vue?vue&type=template&id=687e38f6\"\nimport script from \"./terms_of_service_panel.js?vue&type=script&lang=js\"\nexport * from \"./terms_of_service_panel.js?vue&type=script&lang=js\"\n\nimport \"./terms_of_service_panel.vue?vue&type=style&index=0&id=687e38f6&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"staff-panel\">\n    <div class=\"panel panel-default base01-background\">\n      <div class=\"panel-heading timeline-heading base02-background\">\n        <div class=\"title\">\n          {{ $t(\"about.staff\") }}\n        </div>\n      </div>\n      <div class=\"panel-body\">\n        <div\n          v-for=\"group in groupedStaffAccounts\"\n          :key=\"group.role\"\n          class=\"staff-group\"\n        >\n          <h4>{{ $t('general.role.' + group.role) }}</h4>\n          <basic-user-card\n            v-for=\"user in group.users\"\n            :key=\"user.screen_name\"\n            :user=\"user\"\n          />\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./staff_panel.js\" ></script>\n\n<style lang=\"scss\">\n\n.staff-group {\n  padding-left: 1em;\n  padding-top: 1em;\n\n  .basic-user-card {\n    padding-left: 0;\n  }\n}\n\n</style>\n","import map from 'lodash/map'\nimport groupBy from 'lodash/groupBy'\nimport { mapGetters, mapState } from 'vuex'\nimport BasicUserCard from '../basic_user_card/basic_user_card.vue'\n\nconst StaffPanel = {\n  created () {\n    const nicknames = this.$store.state.instance.staffAccounts\n    nicknames.forEach(nickname => this.$store.dispatch('fetchUserIfMissing', nickname))\n  },\n  components: {\n    BasicUserCard\n  },\n  computed: {\n    groupedStaffAccounts () {\n      const staffAccounts = map(this.staffAccounts, this.findUser).filter(_ => _)\n      const groupedStaffAccounts = groupBy(staffAccounts, 'role')\n\n      return [\n        { role: 'admin', users: groupedStaffAccounts['admin'] },\n        { role: 'moderator', users: groupedStaffAccounts['moderator'] }\n      ].filter(group => group.users)\n    },\n    ...mapGetters([\n      'findUser'\n    ]),\n    ...mapState({\n      staffAccounts: state => state.instance.staffAccounts\n    })\n  }\n}\n\nexport default StaffPanel\n","import { render } from \"./staff_panel.vue?vue&type=template&id=31dce24a\"\nimport script from \"./staff_panel.js?vue&type=script&lang=js\"\nexport * from \"./staff_panel.js?vue&type=script&lang=js\"\n\nimport \"./staff_panel.vue?vue&type=style&index=0&id=31dce24a&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    v-if=\"federationPolicy\"\n    class=\"mrf-transparency-panel\"\n  >\n    <div class=\"panel panel-default base01-background\">\n      <div class=\"panel-heading timeline-heading base02-background\">\n        <div class=\"title\">\n          {{ $t(\"about.mrf.federation\") }}\n        </div>\n      </div>\n      <div class=\"panel-body\">\n        <div class=\"mrf-section\">\n          <h2>{{ $t(\"about.mrf.mrf_policies\") }}</h2>\n          <p>{{ $t(\"about.mrf.mrf_policies_desc\") }}</p>\n\n          <ul>\n            <li\n              v-for=\"policy in mrfPolicies\"\n              :key=\"policy\"\n              v-text=\"policy\"\n            />\n          </ul>\n\n          <h2 v-if=\"hasInstanceSpecificPolicies\">\n            {{ $t(\"about.mrf.simple.simple_policies\") }}\n          </h2>\n\n          <div v-if=\"acceptInstances.length\">\n            <h4>{{ $t(\"about.mrf.simple.accept\") }}</h4>\n\n            <p>{{ $t(\"about.mrf.simple.accept_desc\") }}</p>\n\n            <table>\n              <tr>\n                <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n                <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n              </tr>\n              <tr\n                v-for=\"entry in acceptInstances\"\n                :key=\"entry.instance + '_accept'\"\n              >\n                <td>{{ entry.instance }}</td>\n                <td v-if=\"entry.reason === ''\">\n                  {{ $t(\"about.mrf.simple.not_applicable\") }}\n                </td>\n                <td v-else>\n                  {{ entry.reason }}\n                </td>\n              </tr>\n            </table>\n          </div>\n\n          <div v-if=\"rejectInstances.length\">\n            <h4>{{ $t(\"about.mrf.simple.reject\") }}</h4>\n\n            <p>{{ $t(\"about.mrf.simple.reject_desc\") }}</p>\n\n            <table>\n              <tr>\n                <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n                <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n              </tr>\n              <tr\n                v-for=\"entry in rejectInstances\"\n                :key=\"entry.instance + '_reject'\"\n              >\n                <td>{{ entry.instance }}</td>\n                <td v-if=\"entry.reason === ''\">\n                  {{ $t(\"about.mrf.simple.not_applicable\") }}\n                </td>\n                <td v-else>\n                  {{ entry.reason }}\n                </td>\n              </tr>\n            </table>\n          </div>\n\n          <div v-if=\"quarantineInstances.length\">\n            <h4>{{ $t(\"about.mrf.simple.quarantine\") }}</h4>\n\n            <p>{{ $t(\"about.mrf.simple.quarantine_desc\") }}</p>\n\n            <table>\n              <tr>\n                <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n                <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n              </tr>\n              <tr\n                v-for=\"entry in quarantineInstances\"\n                :key=\"entry.instance + '_quarantine'\"\n              >\n                <td>{{ entry.instance }}</td>\n                <td v-if=\"entry.reason === ''\">\n                  {{ $t(\"about.mrf.simple.not_applicable\") }}\n                </td>\n                <td v-else>\n                  {{ entry.reason }}\n                </td>\n              </tr>\n            </table>\n          </div>\n\n          <div v-if=\"ftlRemovalInstances.length\">\n            <h4>{{ $t(\"about.mrf.simple.ftl_removal\") }}</h4>\n\n            <p>{{ $t(\"about.mrf.simple.ftl_removal_desc\") }}</p>\n\n            <table>\n              <tr>\n                <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n                <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n              </tr>\n              <tr\n                v-for=\"entry in ftlRemovalInstances\"\n                :key=\"entry.instance + '_ftl_removal'\"\n              >\n                <td>{{ entry.instance }}</td>\n                <td v-if=\"entry.reason === ''\">\n                  {{ $t(\"about.mrf.simple.not_applicable\") }}\n                </td>\n                <td v-else>\n                  {{ entry.reason }}\n                </td>\n              </tr>\n            </table>\n          </div>\n\n          <div v-if=\"mediaNsfwInstances.length\">\n            <h4>{{ $t(\"about.mrf.simple.media_nsfw\") }}</h4>\n\n            <p>{{ $t(\"about.mrf.simple.media_nsfw_desc\") }}</p>\n\n            <table>\n              <tr>\n                <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n                <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n              </tr>\n              <tr\n                v-for=\"entry in mediaNsfwInstances\"\n                :key=\"entry.instance + '_media_nsfw'\"\n              >\n                <td>{{ entry.instance }}</td>\n                <td v-if=\"entry.reason === ''\">\n                  {{ $t(\"about.mrf.simple.not_applicable\") }}\n                </td>\n                <td v-else>\n                  {{ entry.reason }}\n                </td>\n              </tr>\n            </table>\n          </div>\n\n          <div v-if=\"mediaRemovalInstances.length\">\n            <h4>{{ $t(\"about.mrf.simple.media_removal\") }}</h4>\n\n            <p>{{ $t(\"about.mrf.simple.media_removal_desc\") }}</p>\n\n            <table>\n              <tr>\n                <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n                <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n              </tr>\n              <tr\n                v-for=\"entry in mediaRemovalInstances\"\n                :key=\"entry.instance + '_media_removal'\"\n              >\n                <td>{{ entry.instance }}</td>\n                <td v-if=\"entry.reason === ''\">\n                  {{ $t(\"about.mrf.simple.not_applicable\") }}\n                </td>\n                <td v-else>\n                  {{ entry.reason }}\n                </td>\n              </tr>\n            </table>\n          </div>\n\n          <h2 v-if=\"hasKeywordPolicies\">\n            {{ $t(\"about.mrf.keyword.keyword_policies\") }}\n          </h2>\n\n          <div v-if=\"keywordsFtlRemoval.length\">\n            <h4>{{ $t(\"about.mrf.keyword.ftl_removal\") }}</h4>\n\n            <ul>\n              <li\n                v-for=\"keyword in keywordsFtlRemoval\"\n                :key=\"keyword\"\n                v-text=\"keyword\"\n              />\n            </ul>\n          </div>\n\n          <div v-if=\"keywordsReject.length\">\n            <h4>{{ $t(\"about.mrf.keyword.reject\") }}</h4>\n\n            <ul>\n              <li\n                v-for=\"keyword in keywordsReject\"\n                :key=\"keyword\"\n                v-text=\"keyword\"\n              />\n            </ul>\n          </div>\n\n          <div v-if=\"keywordsReplace.length\">\n            <h4>{{ $t(\"about.mrf.keyword.replace\") }}</h4>\n\n            <ul>\n              <li\n                v-for=\"keyword in keywordsReplace\"\n                :key=\"keyword\"\n              >\n                {{ keyword.pattern }}\n                {{ $t(\"about.mrf.keyword.is_replaced_by\") }}\n                {{ keyword.replacement }}\n              </li>\n            </ul>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./mrf_transparency_panel.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n@import './mrf_transparency_panel.scss';\n</style>\n","import { mapState } from 'vuex'\nimport { get } from 'lodash'\n\n/**\n * This is for backwards compatibility. We originally didn't recieve\n * extra info like a reason why an instance was rejected/quarantined/etc.\n * Because we didn't want to break backwards compatibility it was decided\n * to add an extra \"info\" key.\n */\nconst toInstanceReasonObject = (instances, info, key) => {\n  return instances.map(instance => {\n    if (info[key] && info[key][instance] && info[key][instance]['reason']) {\n      return { instance: instance, reason: info[key][instance]['reason'] }\n    }\n    return { instance: instance, reason: '' }\n  })\n}\n\nconst MRFTransparencyPanel = {\n  computed: {\n    ...mapState({\n      federationPolicy: state => get(state, 'instance.federationPolicy'),\n      mrfPolicies: state => get(state, 'instance.federationPolicy.mrf_policies', []),\n      quarantineInstances: state => toInstanceReasonObject(\n        get(state, 'instance.federationPolicy.quarantined_instances', []),\n        get(state, 'instance.federationPolicy.quarantined_instances_info', []),\n        'quarantined_instances'\n      ),\n      acceptInstances: state => toInstanceReasonObject(\n        get(state, 'instance.federationPolicy.mrf_simple.accept', []),\n        get(state, 'instance.federationPolicy.mrf_simple_info', []),\n        'accept'\n      ),\n      rejectInstances: state => toInstanceReasonObject(\n        get(state, 'instance.federationPolicy.mrf_simple.reject', []),\n        get(state, 'instance.federationPolicy.mrf_simple_info', []),\n        'reject'\n      ),\n      ftlRemovalInstances: state => toInstanceReasonObject(\n        get(state, 'instance.federationPolicy.mrf_simple.federated_timeline_removal', []),\n        get(state, 'instance.federationPolicy.mrf_simple_info', []),\n        'federated_timeline_removal'\n      ),\n      mediaNsfwInstances: state => toInstanceReasonObject(\n        get(state, 'instance.federationPolicy.mrf_simple.media_nsfw', []),\n        get(state, 'instance.federationPolicy.mrf_simple_info', []),\n        'media_nsfw'\n      ),\n      mediaRemovalInstances: state => toInstanceReasonObject(\n        get(state, 'instance.federationPolicy.mrf_simple.media_removal', []),\n        get(state, 'instance.federationPolicy.mrf_simple_info', []),\n        'media_removal'\n      ),\n      keywordsFtlRemoval: state => get(state, 'instance.federationPolicy.mrf_keyword.federated_timeline_removal', []),\n      keywordsReject: state => get(state, 'instance.federationPolicy.mrf_keyword.reject', []),\n      keywordsReplace: state => get(state, 'instance.federationPolicy.mrf_keyword.replace', [])\n    }),\n    hasInstanceSpecificPolicies () {\n      return this.quarantineInstances.length ||\n        this.acceptInstances.length ||\n        this.rejectInstances.length ||\n        this.ftlRemovalInstances.length ||\n        this.mediaNsfwInstances.length ||\n        this.mediaRemovalInstances.length\n    },\n    hasKeywordPolicies () {\n      return this.keywordsFtlRemoval.length ||\n        this.keywordsReject.length ||\n        this.keywordsReplace.length\n    }\n  }\n}\n\nexport default MRFTransparencyPanel\n","import { render } from \"./mrf_transparency_panel.vue?vue&type=template&id=7f2ca562\"\nimport script from \"./mrf_transparency_panel.js?vue&type=script&lang=js\"\nexport * from \"./mrf_transparency_panel.js?vue&type=script&lang=js\"\n\nimport \"./mrf_transparency_panel.vue?vue&type=style&index=0&id=7f2ca562&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import InstanceSpecificPanel from '../instance_specific_panel/instance_specific_panel.vue'\nimport FeaturesPanel from '../features_panel/features_panel.vue'\nimport TermsOfServicePanel from '../terms_of_service_panel/terms_of_service_panel.vue'\nimport StaffPanel from '../staff_panel/staff_panel.vue'\nimport MRFTransparencyPanel from '../mrf_transparency_panel/mrf_transparency_panel.vue'\n\nconst About = {\n  components: {\n    InstanceSpecificPanel,\n    FeaturesPanel,\n    TermsOfServicePanel,\n    StaffPanel,\n    MRFTransparencyPanel\n  },\n  computed: {\n    showFeaturesPanel () { return this.$store.state.instance.showFeaturesPanel },\n    showInstanceSpecificPanel () {\n      return this.$store.state.instance.showInstanceSpecificPanel &&\n        !this.$store.getters.mergedConfig.hideISP &&\n        this.$store.state.instance.instanceSpecificPanelContent\n    }\n  }\n}\n\nexport default About\n","import { render } from \"./about.vue?vue&type=template&id=37ac4f64\"\nimport script from \"./about.js?vue&type=script&lang=js\"\nexport * from \"./about.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"panel panel-default\">\n    <div class=\"panel-heading\">\n      {{ $t('remote_user_resolver.remote_user_resolver') }}\n    </div>\n    <div class=\"panel-body\">\n      <p>\n        {{ $t('remote_user_resolver.searching_for') }} @{{ $route.params.username }}@{{ $route.params.hostname }}\n      </p>\n      <p v-if=\"error\">\n        {{ $t('remote_user_resolver.error') }}\n      </p>\n    </div>\n  </div>\n</template>\n\n<script src=\"./remote_user_resolver.js\"></script>\n\n<style lang=\"scss\">\n</style>\n","const RemoteUserResolver = {\n  data: () => ({\n    error: false\n  }),\n  mounted () {\n    this.redirect()\n  },\n  methods: {\n    redirect () {\n      const acct = this.$route.params.username + '@' + this.$route.params.hostname\n      this.$store.state.api.backendInteractor.fetchUser({ id: acct })\n        .then((externalUser) => {\n          if (externalUser.error) {\n            this.error = true\n          } else {\n            this.$store.commit('addNewUsers', [externalUser])\n            const id = externalUser.id\n            this.$router.replace({\n              name: 'external-user-profile',\n              params: { id }\n            })\n          }\n        })\n        .catch(() => {\n          this.error = true\n        })\n    }\n  }\n}\n\nexport default RemoteUserResolver\n","import { render } from \"./remote_user_resolver.vue?vue&type=template&id=198402c4\"\nimport script from \"./remote_user_resolver.js?vue&type=script&lang=js\"\nexport * from \"./remote_user_resolver.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import * as bodyScrollLock from 'body-scroll-lock'\n\nlet previousNavPaddingRight\nlet previousAppBgWrapperRight\nconst lockerEls = new Set([])\n\nconst disableBodyScroll = (el) => {\n  const scrollBarGap = window.innerWidth - document.documentElement.clientWidth\n  bodyScrollLock.disableBodyScroll(el, {\n    reserveScrollBarGap: true\n  })\n  lockerEls.add(el)\n  setTimeout(() => {\n    if (lockerEls.size <= 1) {\n      // If previousNavPaddingRight is already set, don't set it again.\n      if (previousNavPaddingRight === undefined) {\n        const navEl = document.getElementById('nav')\n        previousNavPaddingRight = window.getComputedStyle(navEl).getPropertyValue('padding-right')\n        navEl.style.paddingRight = previousNavPaddingRight ? `calc(${previousNavPaddingRight} + ${scrollBarGap}px)` : `${scrollBarGap}px`\n      }\n      // If previousAppBgWrapeprRight is already set, don't set it again.\n      if (previousAppBgWrapperRight === undefined) {\n        const appBgWrapperEl = document.getElementById('app_bg_wrapper')\n        previousAppBgWrapperRight = window.getComputedStyle(appBgWrapperEl).getPropertyValue('right')\n        appBgWrapperEl.style.right = previousAppBgWrapperRight ? `calc(${previousAppBgWrapperRight} + ${scrollBarGap}px)` : `${scrollBarGap}px`\n      }\n      document.body.classList.add('scroll-locked')\n    }\n  })\n}\n\nconst enableBodyScroll = (el) => {\n  lockerEls.delete(el)\n  setTimeout(() => {\n    if (lockerEls.size === 0) {\n      if (previousNavPaddingRight !== undefined) {\n        document.getElementById('nav').style.paddingRight = previousNavPaddingRight\n        // Restore previousNavPaddingRight to undefined so disableBodyScroll knows it can be set again.\n        previousNavPaddingRight = undefined\n      }\n      if (previousAppBgWrapperRight !== undefined) {\n        document.getElementById('app_bg_wrapper').style.right = previousAppBgWrapperRight\n        // Restore previousAppBgWrapperRight to undefined so disableBodyScroll knows it can be set again.\n        previousAppBgWrapperRight = undefined\n      }\n      document.body.classList.remove('scroll-locked')\n    }\n  })\n  bodyScrollLock.enableBodyScroll(el)\n}\n\nconst directive = {\n  mounted: (el, binding) => {\n    if (binding.value) {\n      disableBodyScroll(el)\n    }\n  },\n  updated: (el, binding) => {\n    if (binding.oldValue === binding.value) {\n      return\n    }\n\n    if (binding.value) {\n      disableBodyScroll(el)\n    } else {\n      enableBodyScroll(el)\n    }\n  },\n  unmounted: (el) => {\n    enableBodyScroll(el)\n  }\n}\n\nexport default (Vue) => {\n  Vue.directive('body-scroll-lock', directive)\n}\n","import PublicTimeline from 'components/public_timeline/public_timeline.vue'\nimport PublicAndExternalTimeline from 'components/public_and_external_timeline/public_and_external_timeline.vue'\nimport FriendsTimeline from 'components/friends_timeline/friends_timeline.vue'\nimport TagTimeline from 'components/tag_timeline/tag_timeline.vue'\nimport BookmarkTimeline from 'components/bookmark_timeline/bookmark_timeline.vue'\nimport ConversationPage from 'components/conversation-page/conversation-page.vue'\nimport Interactions from 'components/interactions/interactions.vue'\nimport DMs from 'components/dm_timeline/dm_timeline.vue'\nimport ChatList from 'components/chat_list/chat_list.vue'\nimport Chat from 'components/chat/chat.vue'\nimport UserProfile from 'components/user_profile/user_profile.vue'\nimport Search from 'components/search/search.vue'\nimport Registration from 'components/registration/registration.vue'\nimport PasswordReset from 'components/password_reset/password_reset.vue'\nimport FollowRequests from 'components/follow_requests/follow_requests.vue'\nimport OAuthCallback from 'components/oauth_callback/oauth_callback.vue'\nimport Notifications from 'components/notifications/notifications.vue'\nimport AuthForm from 'components/auth_form/auth_form.js'\nimport ShoutPanel from 'components/shout_panel/shout_panel.vue'\nimport WhoToFollow from 'components/who_to_follow/who_to_follow.vue'\nimport About from 'components/about/about.vue'\nimport RemoteUserResolver from 'components/remote_user_resolver/remote_user_resolver.vue'\n\nexport default (store) => {\n  const validateAuthenticatedRoute = (to, from, next) => {\n    if (store.state.users.currentUser) {\n      next()\n    } else {\n      next(store.state.instance.redirectRootNoLogin || '/main/all')\n    }\n  }\n\n  let routes = [\n    { name: 'root',\n      path: '/',\n      redirect: _to => {\n        return (store.state.users.currentUser\n          ? store.state.instance.redirectRootLogin\n          : store.state.instance.redirectRootNoLogin) || '/main/all'\n      }\n    },\n    { name: 'public-external-timeline', path: '/main/all', component: PublicAndExternalTimeline },\n    { name: 'public-timeline', path: '/main/public', component: PublicTimeline },\n    { name: 'friends', path: '/main/friends', component: FriendsTimeline, beforeEnter: validateAuthenticatedRoute },\n    { name: 'tag-timeline', path: '/tag/:tag', component: TagTimeline },\n    { name: 'bookmarks', path: '/bookmarks', component: BookmarkTimeline },\n    { name: 'conversation', path: '/notice/:id', component: ConversationPage, meta: { dontScroll: true } },\n    { name: 'remote-user-profile-acct',\n      path: '/remote-users/:_(@)?:username([^/@]+)@:hostname([^/@]+)',\n      component: RemoteUserResolver,\n      beforeEnter: validateAuthenticatedRoute\n    },\n    { name: 'remote-user-profile',\n      path: '/remote-users/:hostname/:username',\n      component: RemoteUserResolver,\n      beforeEnter: validateAuthenticatedRoute\n    },\n    { name: 'external-user-profile', path: '/users/:id', component: UserProfile },\n    { name: 'interactions', path: '/users/:username/interactions', component: Interactions, beforeEnter: validateAuthenticatedRoute },\n    { name: 'dms', path: '/users/:username/dms', component: DMs, beforeEnter: validateAuthenticatedRoute },\n    { name: 'registration', path: '/registration', component: Registration },\n    { name: 'password-reset', path: '/password-reset', component: PasswordReset, props: true },\n    { name: 'registration-token', path: '/registration/:token', component: Registration },\n    { name: 'friend-requests', path: '/friend-requests', component: FollowRequests, beforeEnter: validateAuthenticatedRoute },\n    { name: 'notifications', path: '/:username/notifications', component: Notifications, props: () => ({ disableTeleport: true }), beforeEnter: validateAuthenticatedRoute },\n    { name: 'login', path: '/login', component: AuthForm },\n    { name: 'shout-panel', path: '/shout-panel', component: ShoutPanel, props: () => ({ floating: false }) },\n    { name: 'oauth-callback', path: '/oauth-callback', component: OAuthCallback, props: (route) => ({ code: route.query.code }) },\n    { name: 'search', path: '/search', component: Search, props: (route) => ({ query: route.query.query }) },\n    { name: 'who-to-follow', path: '/who-to-follow', component: WhoToFollow, beforeEnter: validateAuthenticatedRoute },\n    { name: 'about', path: '/about', component: About },\n    { name: 'user-profile', path: '/:_(users)?/:name', component: UserProfile }\n  ]\n\n  if (store.state.instance.pleromaChatMessagesAvailable) {\n    routes = routes.concat([\n      { name: 'chat', path: '/users/:username/chats/:recipient_id', component: Chat, meta: { dontScroll: false }, beforeEnter: validateAuthenticatedRoute },\n      { name: 'chats', path: '/users/:username/chats', component: ChatList, meta: { dontScroll: false }, beforeEnter: validateAuthenticatedRoute }\n    ])\n  }\n\n  return routes\n}\n","import { createApp } from 'vue'\nimport { createRouter, createWebHistory } from 'vue-router'\nimport vClickOutside from 'click-outside-vue3'\n\nimport { FontAwesomeIcon, FontAwesomeLayers } from '@fortawesome/vue-fontawesome'\n\nimport App from '../App.vue'\nimport routes from './routes'\nimport VBodyScrollLock from 'src/directives/body_scroll_lock'\n\nimport { windowWidth, windowHeight } from '../services/window_utils/window_utils'\nimport { getOrCreateApp, getClientToken } from '../services/new_api/oauth.js'\nimport backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { CURRENT_VERSION } from '../services/theme_data/theme_data.service.js'\nimport { applyTheme } from '../services/style_setter/style_setter.js'\nimport FaviconService from '../services/favicon_service/favicon_service.js'\n\nlet staticInitialResults = null\n\nconst parsedInitialResults = () => {\n  if (!document.getElementById('initial-results')) {\n    return null\n  }\n  if (!staticInitialResults) {\n    staticInitialResults = JSON.parse(document.getElementById('initial-results').textContent)\n  }\n  return staticInitialResults\n}\n\nconst decodeUTF8Base64 = (data) => {\n  const rawData = atob(data)\n  const array = Uint8Array.from([...rawData].map((char) => char.charCodeAt(0)))\n  const text = new TextDecoder().decode(array)\n  return text\n}\n\nconst preloadFetch = async (request) => {\n  const data = parsedInitialResults()\n  if (!data || !data[request]) {\n    return window.fetch(request)\n  }\n  const decoded = decodeUTF8Base64(data[request])\n  const requestData = JSON.parse(decoded)\n  return {\n    ok: true,\n    json: () => requestData,\n    text: () => requestData\n  }\n}\n\nconst getInstanceConfig = async ({ store }) => {\n  try {\n    const res = await preloadFetch('/api/v1/instance')\n    if (res.ok) {\n      const data = await res.json()\n      const textlimit = data.max_toot_chars\n      const vapidPublicKey = data.pleroma.vapid_public_key\n\n      store.dispatch('setInstanceOption', { name: 'textlimit', value: textlimit })\n      store.dispatch('setInstanceOption', { name: 'accountApprovalRequired', value: data.approval_required })\n\n      if (vapidPublicKey) {\n        store.dispatch('setInstanceOption', { name: 'vapidPublicKey', value: vapidPublicKey })\n      }\n    } else {\n      throw (res)\n    }\n  } catch (error) {\n    console.error('Could not load instance config, potentially fatal')\n    console.error(error)\n  }\n}\n\nconst getBackendProvidedConfig = async ({ store }) => {\n  try {\n    const res = await window.fetch('/api/pleroma/frontend_configurations')\n    if (res.ok) {\n      const data = await res.json()\n      return data.pleroma_fe\n    } else {\n      throw (res)\n    }\n  } catch (error) {\n    console.error('Could not load backend-provided frontend config, potentially fatal')\n    console.error(error)\n  }\n}\n\nconst getStaticConfig = async () => {\n  try {\n    const res = await window.fetch('/static/config.json')\n    if (res.ok) {\n      return res.json()\n    } else {\n      throw (res)\n    }\n  } catch (error) {\n    console.warn('Failed to load static/config.json, continuing without it.')\n    console.warn(error)\n    return {}\n  }\n}\n\nconst setSettings = async ({ apiConfig, staticConfig, store }) => {\n  const overrides = window.___pleromafe_dev_overrides || {}\n  const env = window.___pleromafe_mode.NODE_ENV\n\n  // This takes static config and overrides properties that are present in apiConfig\n  let config = {}\n  if (overrides.staticConfigPreference && env === 'development') {\n    console.warn('OVERRIDING API CONFIG WITH STATIC CONFIG')\n    config = Object.assign({}, apiConfig, staticConfig)\n  } else {\n    config = Object.assign({}, staticConfig, apiConfig)\n  }\n\n  const copyInstanceOption = (name) => {\n    store.dispatch('setInstanceOption', { name, value: config[name] })\n  }\n\n  copyInstanceOption('nsfwCensorImage')\n  copyInstanceOption('background')\n  copyInstanceOption('hidePostStats')\n  copyInstanceOption('hideBotIndication')\n  copyInstanceOption('hideUserStats')\n  copyInstanceOption('hideFilteredStatuses')\n  copyInstanceOption('logo')\n\n  store.dispatch('setInstanceOption', {\n    name: 'logoMask',\n    value: typeof config.logoMask === 'undefined'\n      ? true\n      : config.logoMask\n  })\n\n  store.dispatch('setInstanceOption', {\n    name: 'logoMargin',\n    value: typeof config.logoMargin === 'undefined'\n      ? 0\n      : config.logoMargin\n  })\n  copyInstanceOption('logoLeft')\n  store.commit('authFlow/setInitialStrategy', config.loginMethod)\n\n  copyInstanceOption('redirectRootNoLogin')\n  copyInstanceOption('redirectRootLogin')\n  copyInstanceOption('showInstanceSpecificPanel')\n  copyInstanceOption('minimalScopesMode')\n  copyInstanceOption('hideMutedPosts')\n  copyInstanceOption('collapseMessageWithSubject')\n  copyInstanceOption('scopeCopy')\n  copyInstanceOption('subjectLineBehavior')\n  copyInstanceOption('postContentType')\n  copyInstanceOption('alwaysShowSubjectInput')\n  copyInstanceOption('showFeaturesPanel')\n  copyInstanceOption('hideSitename')\n  copyInstanceOption('sidebarRight')\n\n  return store.dispatch('setTheme', config['theme'])\n}\n\nconst getTOS = async ({ store }) => {\n  try {\n    const res = await window.fetch('/static/terms-of-service.html')\n    if (res.ok) {\n      const html = await res.text()\n      store.dispatch('setInstanceOption', { name: 'tos', value: html })\n    } else {\n      throw (res)\n    }\n  } catch (e) {\n    console.warn(\"Can't load TOS\")\n    console.warn(e)\n  }\n}\n\nconst getInstancePanel = async ({ store }) => {\n  try {\n    const res = await preloadFetch('/instance/panel.html')\n    if (res.ok) {\n      const html = await res.text()\n      store.dispatch('setInstanceOption', { name: 'instanceSpecificPanelContent', value: html })\n    } else {\n      throw (res)\n    }\n  } catch (e) {\n    console.warn(\"Can't load instance panel\")\n    console.warn(e)\n  }\n}\n\nconst getStickers = async ({ store }) => {\n  try {\n    const res = await window.fetch('/static/stickers.json')\n    if (res.ok) {\n      const values = await res.json()\n      const stickers = (await Promise.all(\n        Object.entries(values).map(async ([name, path]) => {\n          const resPack = await window.fetch(path + 'pack.json')\n          var meta = {}\n          if (resPack.ok) {\n            meta = await resPack.json()\n          }\n          return {\n            pack: name,\n            path,\n            meta\n          }\n        })\n      )).sort((a, b) => {\n        return a.meta.title.localeCompare(b.meta.title)\n      })\n      store.dispatch('setInstanceOption', { name: 'stickers', value: stickers })\n    } else {\n      throw (res)\n    }\n  } catch (e) {\n    console.warn(\"Can't load stickers\")\n    console.warn(e)\n  }\n}\n\nconst getAppSecret = async ({ store }) => {\n  const { state, commit } = store\n  const { oauth, instance } = state\n  return getOrCreateApp({ ...oauth, instance: instance.server, commit })\n    .then((app) => getClientToken({ ...app, instance: instance.server }))\n    .then((token) => {\n      commit('setAppToken', token.access_token)\n      commit('setBackendInteractor', backendInteractorService(store.getters.getToken()))\n    })\n}\n\nconst resolveStaffAccounts = ({ store, accounts }) => {\n  const nicknames = accounts.map(uri => uri.split('/').pop())\n  store.dispatch('setInstanceOption', { name: 'staffAccounts', value: nicknames })\n}\n\nconst getNodeInfo = async ({ store }) => {\n  try {\n    const res = await preloadFetch('/nodeinfo/2.0.json')\n    if (res.ok) {\n      const data = await res.json()\n      const metadata = data.metadata\n      const features = metadata.features\n      store.dispatch('setInstanceOption', { name: 'name', value: metadata.nodeName })\n      store.dispatch('setInstanceOption', { name: 'registrationOpen', value: data.openRegistrations })\n      store.dispatch('setInstanceOption', { name: 'mediaProxyAvailable', value: features.includes('media_proxy') })\n      store.dispatch('setInstanceOption', { name: 'safeDM', value: features.includes('safe_dm_mentions') })\n      store.dispatch('setInstanceOption', { name: 'shoutAvailable', value: features.includes('chat') })\n      store.dispatch('setInstanceOption', { name: 'pleromaChatMessagesAvailable', value: features.includes('pleroma_chat_messages') })\n      store.dispatch('setInstanceOption', { name: 'gopherAvailable', value: features.includes('gopher') })\n      store.dispatch('setInstanceOption', { name: 'pollsAvailable', value: features.includes('polls') })\n      store.dispatch('setInstanceOption', { name: 'pollLimits', value: metadata.pollLimits })\n      store.dispatch('setInstanceOption', { name: 'mailerEnabled', value: metadata.mailerEnabled })\n\n      const uploadLimits = metadata.uploadLimits\n      store.dispatch('setInstanceOption', { name: 'uploadlimit', value: parseInt(uploadLimits.general) })\n      store.dispatch('setInstanceOption', { name: 'avatarlimit', value: parseInt(uploadLimits.avatar) })\n      store.dispatch('setInstanceOption', { name: 'backgroundlimit', value: parseInt(uploadLimits.background) })\n      store.dispatch('setInstanceOption', { name: 'bannerlimit', value: parseInt(uploadLimits.banner) })\n      store.dispatch('setInstanceOption', { name: 'fieldsLimits', value: metadata.fieldsLimits })\n\n      store.dispatch('setInstanceOption', { name: 'restrictedNicknames', value: metadata.restrictedNicknames })\n      store.dispatch('setInstanceOption', { name: 'postFormats', value: metadata.postFormats })\n\n      const suggestions = metadata.suggestions\n      store.dispatch('setInstanceOption', { name: 'suggestionsEnabled', value: suggestions.enabled })\n      store.dispatch('setInstanceOption', { name: 'suggestionsWeb', value: suggestions.web })\n\n      const software = data.software\n      store.dispatch('setInstanceOption', { name: 'backendVersion', value: software.version })\n      store.dispatch('setInstanceOption', { name: 'pleromaBackend', value: software.name === 'pleroma' })\n\n      const priv = metadata.private\n      store.dispatch('setInstanceOption', { name: 'private', value: priv })\n\n      const frontendVersion = window.___pleromafe_commit_hash\n      store.dispatch('setInstanceOption', { name: 'frontendVersion', value: frontendVersion })\n\n      const federation = metadata.federation\n\n      store.dispatch('setInstanceOption', {\n        name: 'tagPolicyAvailable',\n        value: typeof federation.mrf_policies === 'undefined'\n          ? false\n          : metadata.federation.mrf_policies.includes('TagPolicy')\n      })\n\n      store.dispatch('setInstanceOption', { name: 'federationPolicy', value: federation })\n      store.dispatch('setInstanceOption', {\n        name: 'federating',\n        value: typeof federation.enabled === 'undefined'\n          ? true\n          : federation.enabled\n      })\n\n      const accountActivationRequired = metadata.accountActivationRequired\n      store.dispatch('setInstanceOption', { name: 'accountActivationRequired', value: accountActivationRequired })\n\n      const accounts = metadata.staffAccounts\n      resolveStaffAccounts({ store, accounts })\n    } else {\n      throw (res)\n    }\n  } catch (e) {\n    console.warn('Could not load nodeinfo')\n    console.warn(e)\n  }\n}\n\nconst setConfig = async ({ store }) => {\n  // apiConfig, staticConfig\n  const configInfos = await Promise.all([getBackendProvidedConfig({ store }), getStaticConfig()])\n  const apiConfig = configInfos[0]\n  const staticConfig = configInfos[1]\n\n  await setSettings({ store, apiConfig, staticConfig }).then(getAppSecret({ store }))\n}\n\nconst checkOAuthToken = async ({ store }) => {\n  return new Promise(async (resolve, reject) => {\n    if (store.getters.getUserToken()) {\n      try {\n        await store.dispatch('loginUser', store.getters.getUserToken())\n      } catch (e) {\n        console.error(e)\n      }\n    }\n    resolve()\n  })\n}\n\nconst afterStoreSetup = async ({ store, i18n }) => {\n  store.dispatch('setLayoutWidth', windowWidth())\n  store.dispatch('setLayoutHeight', windowHeight())\n\n  FaviconService.initFaviconService()\n\n  const overrides = window.___pleromafe_dev_overrides || {}\n  const server = (typeof overrides.target !== 'undefined') ? overrides.target : window.location.origin\n  store.dispatch('setInstanceOption', { name: 'server', value: server })\n\n  await setConfig({ store })\n\n  const { customTheme, customThemeSource } = store.state.config\n  const { theme } = store.state.instance\n  const customThemePresent = customThemeSource || customTheme\n\n  if (customThemePresent) {\n    if (customThemeSource && customThemeSource.themeEngineVersion === CURRENT_VERSION) {\n      applyTheme(customThemeSource)\n    } else {\n      applyTheme(customTheme)\n    }\n  } else if (theme) {\n    // do nothing, it will load asynchronously\n  } else {\n    console.error('Failed to load any theme!')\n  }\n\n  // Now we can try getting the server settings and logging in\n  // Most of these are preloaded into the index.html so blocking is minimized\n  await Promise.all([\n    checkOAuthToken({ store }),\n    getInstancePanel({ store }),\n    getNodeInfo({ store }),\n    getInstanceConfig({ store })\n  ])\n\n  // Start fetching things that don't need to block the UI\n  store.dispatch('fetchMutes')\n  getTOS({ store })\n  getStickers({ store })\n\n  const router = createRouter({\n    history: createWebHistory(),\n    routes: routes(store),\n    scrollBehavior: (to, _from, savedPosition) => {\n      if (to.matched.some(m => m.meta.dontScroll)) {\n        return false\n      }\n      return savedPosition || { left: 0, top: 0 }\n    }\n  })\n\n  const app = createApp(App)\n\n  app.use(router)\n  app.use(store)\n  app.use(i18n)\n\n  app.use(vClickOutside)\n  app.use(VBodyScrollLock)\n\n  app.component('FAIcon', FontAwesomeIcon)\n  app.component('FALayers', FontAwesomeLayers)\n\n  app.mount('#app')\n\n  return app\n}\n\nexport default afterStoreSetup\n","import { createStore } from 'vuex'\n\nimport 'custom-event-polyfill'\nimport './lib/event_target_polyfill.js'\n\nimport interfaceModule from './modules/interface.js'\nimport instanceModule from './modules/instance.js'\nimport statusesModule from './modules/statuses.js'\nimport usersModule from './modules/users.js'\nimport apiModule from './modules/api.js'\nimport configModule from './modules/config.js'\nimport serverSideConfigModule from './modules/serverSideConfig.js'\nimport shoutModule from './modules/shout.js'\nimport oauthModule from './modules/oauth.js'\nimport authFlowModule from './modules/auth_flow.js'\nimport mediaViewerModule from './modules/media_viewer.js'\nimport oauthTokensModule from './modules/oauth_tokens.js'\nimport reportsModule from './modules/reports.js'\nimport pollsModule from './modules/polls.js'\nimport postStatusModule from './modules/postStatus.js'\nimport chatsModule from './modules/chats.js'\n\nimport { createI18n } from 'vue-i18n'\n\nimport createPersistedState from './lib/persisted_state.js'\nimport pushNotifications from './lib/push_notifications_plugin.js'\n\nimport messages from './i18n/messages.js'\n\nimport afterStoreSetup from './boot/after_store.js'\n\nconst currentLocale = (window.navigator.language || 'en').split('-')[0]\n\nconst i18n = createI18n({\n  // By default, use the browser locale, we will update it if neccessary\n  locale: 'en',\n  fallbackLocale: 'en',\n  messages: messages.default\n})\n\nmessages.setLanguage(i18n, currentLocale)\n\nconst persistedStateOptions = {\n  paths: [\n    'config',\n    'users.lastLoginName',\n    'oauth'\n  ]\n};\n\n(async () => {\n  let storageError = false\n  const plugins = [pushNotifications]\n  try {\n    const persistedState = await createPersistedState(persistedStateOptions)\n    plugins.push(persistedState)\n  } catch (e) {\n    console.error(e)\n    storageError = true\n  }\n  const store = createStore({\n    modules: {\n      i18n: {\n        getters: {\n          i18n: () => i18n.global\n        }\n      },\n      interface: interfaceModule,\n      instance: instanceModule,\n      // TODO refactor users/statuses modules, they depend on each other\n      users: usersModule,\n      statuses: statusesModule,\n      api: apiModule,\n      config: configModule,\n      serverSideConfig: serverSideConfigModule,\n      shout: shoutModule,\n      oauth: oauthModule,\n      authFlow: authFlowModule,\n      mediaViewer: mediaViewerModule,\n      oauthTokens: oauthTokensModule,\n      reports: reportsModule,\n      polls: pollsModule,\n      postStatus: postStatusModule,\n      chats: chatsModule\n    },\n    plugins,\n    strict: false // Socket modifies itself, let's ignore this for now.\n    // strict: process.env.NODE_ENV !== 'production'\n  })\n  if (storageError) {\n    store.dispatch('pushGlobalNotice', { messageKey: 'errors.storage_unavailable', level: 'error' })\n  }\n  afterStoreSetup({ store, i18n })\n})()\n\n// These are inlined by webpack's DefinePlugin\n/* eslint-disable */\nwindow.___pleromafe_mode = process.env\nwindow.___pleromafe_commit_hash = COMMIT_HASH\nwindow.___pleromafe_dev_overrides = DEV_OVERRIDES\n"],"sourceRoot":""}
\ No newline at end of file
index ddd00eaa1f917baf5bf993a4bf5adb5b8e2e2977..cfb5fbe9e6869e939e03bc3ee8249dc5082d49e4 100644 (file)
@@ -1,4 +1,4 @@
-var serviceWorkerOption = {"assets":["/static/img/nsfw.ca95de9.png","/static/css/app.ab6cb01d5b0b782e7457.css","/static/js/app.23b7ec270c69f4f99782.js","/static/js/vendors~app.be2014390281e934ebf1.js","/static/css/2.4e6541aa0979ab5fe8ab.css","/static/js/2.eb2c361cdcbd8c4f7638.js","/static/css/3.2f4099421df47087d7d1.css","/static/js/3.6817af5c7ddbbd72fbf1.js","/static/css/4.10e378d3da0e7f32661d.css","/static/js/4.927a84e2225924985925.js","/static/js/5.bbbe2165b2726754babd.js","/static/js/6.c6e50a831e6b09d426c7.js","/static/js/7.7a9d3de7e3eb6affa8fa.js","/static/js/8.6e10d130a82421e5de97.js","/static/js/9.4c310a18d1e30d64ab78.js","/static/js/10.b67f1d16d8fdcd03f775.js","/static/js/11.88732498617afe7ab4fa.js","/static/js/12.21fb2f8c9787acc40766.js","/static/js/13.bd887f6f8965a89629f1.js","/static/js/14.8d076150d2d32a70c85c.js","/static/js/15.458ea2a090159a1c312d.js","/static/js/16.b026bc770b996a75ab86.js","/static/js/17.37f97cc3eab74f285530.js","/static/js/18.5e155da6b34cb233975a.js","/static/js/19.4449616295c79e9feb82.js","/static/js/20.c3c9f56f752974bf19cf.js","/static/js/21.13590b4f67813801857e.js","/static/js/22.af3b6f25635a9809f6e8.js","/static/js/23.27002d630c581d75786b.js","/static/js/24.17fecccd566085bc7273.js","/static/js/25.d92131b48359fae551a4.js","/static/js/26.8e2b950cad8e4bb7145f.js","/static/js/27.b70f29d1c24421eeb8e0.js","/static/js/28.3eeac63a0c7d7ca9f57e.js","/static/js/29.a9703e50212c8482b1b8.js","/static/js/30.ccdf2a34d5a00135f6b7.js","/static/js/31.079c61206f2e6ac69873.js","/static/js/32.2c5f6af0c5d2d87ad611.js","/static/ruffle/5364d08c1900355192f5.wasm","/static/ruffle/LICENSE_APACHE","/static/ruffle/LICENSE_MIT","/static/ruffle/README.md","/static/ruffle/package.json","/static/ruffle/ruffle.js"]};
+var serviceWorkerOption = {"assets":["/static/img/nsfw.ca95de9.png","/static/css/app.ab6cb01d5b0b782e7457.css","/static/js/app.e8949b9a3c7cfdab2e4c.js","/static/js/vendors~app.be2014390281e934ebf1.js","/static/css/2.4e6541aa0979ab5fe8ab.css","/static/js/2.55d5f2926c7b22177236.js","/static/css/3.2f4099421df47087d7d1.css","/static/js/3.6817af5c7ddbbd72fbf1.js","/static/css/4.10e378d3da0e7f32661d.css","/static/js/4.927a84e2225924985925.js","/static/js/5.bbbe2165b2726754babd.js","/static/js/6.c6e50a831e6b09d426c7.js","/static/js/7.7a9d3de7e3eb6affa8fa.js","/static/js/8.6e10d130a82421e5de97.js","/static/js/9.4c310a18d1e30d64ab78.js","/static/js/10.b67f1d16d8fdcd03f775.js","/static/js/11.88732498617afe7ab4fa.js","/static/js/12.21fb2f8c9787acc40766.js","/static/js/13.bd887f6f8965a89629f1.js","/static/js/14.8d076150d2d32a70c85c.js","/static/js/15.458ea2a090159a1c312d.js","/static/js/16.b026bc770b996a75ab86.js","/static/js/17.37f97cc3eab74f285530.js","/static/js/18.5e155da6b34cb233975a.js","/static/js/19.4449616295c79e9feb82.js","/static/js/20.c3c9f56f752974bf19cf.js","/static/js/21.13590b4f67813801857e.js","/static/js/22.af3b6f25635a9809f6e8.js","/static/js/23.27002d630c581d75786b.js","/static/js/24.17fecccd566085bc7273.js","/static/js/25.d92131b48359fae551a4.js","/static/js/26.8e2b950cad8e4bb7145f.js","/static/js/27.b70f29d1c24421eeb8e0.js","/static/js/28.3eeac63a0c7d7ca9f57e.js","/static/js/29.a9703e50212c8482b1b8.js","/static/js/30.ccdf2a34d5a00135f6b7.js","/static/js/31.079c61206f2e6ac69873.js","/static/js/32.2c5f6af0c5d2d87ad611.js","/static/ruffle/5364d08c1900355192f5.wasm","/static/ruffle/LICENSE_APACHE","/static/ruffle/LICENSE_MIT","/static/ruffle/README.md","/static/ruffle/package.json","/static/ruffle/ruffle.js"]};
         
         !function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=200)}([function(e,t,n){"use strict";(function(e){function r(e,t){const n=Object.create(null),r=e.split(",");for(let e=0;e<r.length;e++)n[r[e]]=!0;return t?e=>!!n[e.toLowerCase()]:e=>!!n[e]}n.d(t,"a",(function(){return b})),n.d(t,"b",(function(){return _})),n.d(t,"c",(function(){return y})),n.d(t,"d",(function(){return g})),n.d(t,"e",(function(){return H})),n.d(t,"f",(function(){return K})),n.d(t,"g",(function(){return Z})),n.d(t,"h",(function(){return k})),n.d(t,"i",(function(){return ne})),n.d(t,"j",(function(){return X})),n.d(t,"k",(function(){return E})),n.d(t,"l",(function(){return Y})),n.d(t,"m",(function(){return s})),n.d(t,"n",(function(){return Q})),n.d(t,"o",(function(){return I})),n.d(t,"p",(function(){return B})),n.d(t,"q",(function(){return A})),n.d(t,"r",(function(){return o})),n.d(t,"s",(function(){return d})),n.d(t,"t",(function(){return W})),n.d(t,"u",(function(){return L})),n.d(t,"v",(function(){return w})),n.d(t,"w",(function(){return T})),n.d(t,"x",(function(){return O})),n.d(t,"y",(function(){return q})),n.d(t,"z",(function(){return R})),n.d(t,"A",(function(){return U})),n.d(t,"B",(function(){return m})),n.d(t,"C",(function(){return S})),n.d(t,"D",(function(){return i})),n.d(t,"E",(function(){return C})),n.d(t,"F",(function(){return F})),n.d(t,"G",(function(){return h})),n.d(t,"H",(function(){return v})),n.d(t,"I",(function(){return r})),n.d(t,"J",(function(){return p})),n.d(t,"K",(function(){return c})),n.d(t,"L",(function(){return x})),n.d(t,"M",(function(){return J})),n.d(t,"N",(function(){return ee})),n.d(t,"O",(function(){return D}));const o=r("Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt");const a="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",i=r(a);function s(e){return!!e||""===e}function c(e){if(I(e)){const t={};for(let n=0;n<e.length;n++){const r=e[n],o=C(r)?f(r):c(r);if(o)for(const e in o)t[e]=o[e]}return t}return C(e)||T(e)?e:void 0}const l=/;(?![^(]*\))/g,u=/:(.+)/;function f(e){const t={};return e.split(l).forEach(e=>{if(e){const n=e.split(u);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function p(e){let t="";if(C(e))t=e;else if(I(e))for(let n=0;n<e.length;n++){const r=p(e[n]);r&&(t+=r+" ")}else if(T(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}const d=r("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"),m=r("svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistanceLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view");function h(e,t){if(e===t)return!0;let n=N(e),r=N(t);if(n||r)return!(!n||!r)&&e.getTime()===t.getTime();if(n=I(e),r=I(t),n||r)return!(!n||!r)&&function(e,t){if(e.length!==t.length)return!1;let n=!0;for(let r=0;n&&r<e.length;r++)n=h(e[r],t[r]);return n}(e,t);if(n=T(e),r=T(t),n||r){if(!n||!r)return!1;if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e){const r=e.hasOwnProperty(n),o=t.hasOwnProperty(n);if(r&&!o||!r&&o||!h(e[n],t[n]))return!1}}return String(e)===String(t)}function v(e,t){return e.findIndex(e=>h(e,t))}const _={},b=[],g=()=>{},y=()=>!1,j=/^on[^a-z]/,O=e=>j.test(e),w=e=>e.startsWith("onUpdate:"),k=Object.assign,x=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},z=Object.prototype.hasOwnProperty,E=(e,t)=>z.call(e,t),I=Array.isArray,L=e=>"[object Map]"===M(e),S=e=>"[object Set]"===M(e),N=e=>e instanceof Date,A=e=>"function"==typeof e,C=e=>"string"==typeof e,F=e=>"symbol"==typeof e,T=e=>null!==e&&"object"==typeof e,R=e=>T(e)&&A(e.then)&&A(e.catch),P=Object.prototype.toString,M=e=>P.call(e),D=e=>M(e).slice(8,-1),q=e=>"[object Object]"===M(e),W=e=>C(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,U=r(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),B=r("bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"),$=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},V=/-(\w)/g,H=$(e=>e.replace(V,(e,t)=>t?t.toUpperCase():"")),G=/\B([A-Z])/g,Y=$(e=>e.replace(G,"-$1").toLowerCase()),K=$(e=>e.charAt(0).toUpperCase()+e.slice(1)),J=$(e=>e?"on"+K(e):""),X=(e,t)=>!Object.is(e,t),Q=(e,t)=>{for(let n=0;n<e.length;n++)e[n](t)},Z=(e,t,n)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},ee=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let te;const ne=()=>te||(te="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==e?e:{})}).call(this,n(6))},function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return h})),n.d(t,"b",(function(){return b})),n.d(t,"c",(function(){return a})),n.d(t,"d",(function(){return c})),n.d(t,"e",(function(){return _})),n.d(t,"f",(function(){return y})),n.d(t,"g",(function(){return r})),n.d(t,"h",(function(){return j})),n.d(t,"i",(function(){return k})),n.d(t,"j",(function(){return f})),n.d(t,"k",(function(){return d})),n.d(t,"l",(function(){return O})),n.d(t,"m",(function(){return u})),n.d(t,"n",(function(){return x})),n.d(t,"o",(function(){return I})),n.d(t,"p",(function(){return p})),n.d(t,"q",(function(){return w})),n.d(t,"r",(function(){return s})),n.d(t,"s",(function(){return L})),n.d(t,"t",(function(){return m}));
 /*!