diff --git a/404.html b/404.html new file mode 100644 index 0000000..0fcb4e9 --- /dev/null +++ b/404.html @@ -0,0 +1,32 @@ + + + + + + Page not found + + + + +

Page not found

+

Go home

+ + diff --git a/apple-touch-icon.png b/apple-touch-icon.png new file mode 100644 index 0000000..cb3c18d Binary files /dev/null and b/apple-touch-icon.png differ diff --git a/assets/boosts-carousel-YjmjXTE6.jpg b/assets/boosts-carousel-YjmjXTE6.jpg new file mode 100644 index 0000000..17ac69a Binary files /dev/null and b/assets/boosts-carousel-YjmjXTE6.jpg differ diff --git a/assets/catch-up-DuauQu-W.png b/assets/catch-up-DuauQu-W.png new file mode 100644 index 0000000..16a268d Binary files /dev/null and b/assets/catch-up-DuauQu-W.png differ diff --git a/assets/compose-GEsXl1Xt.js b/assets/compose-GEsXl1Xt.js new file mode 100644 index 0000000..8928c2a --- /dev/null +++ b/assets/compose-GEsXl1Xt.js @@ -0,0 +1,2 @@ +import{m as p,v as w,C as S}from"./useTitle-dCp14HlU.js";import{p as f,_ as i,b as e,Q as m}from"./vendor-GrW-f9CX.js";window.opener&&(console=window.opener.console);function _(){var s,a;const[t,d]=f("default"),{editStatus:n,replyToStatus:o,draftStatus:r}=window.__COMPOSE__||{};return p(n?"Editing source status":o?`Replying to @${((s=o.account)==null?void 0:s.acct)||((a=o.account)==null?void 0:a.username)}`:"Compose"),i(()=>{w()},[]),i(()=>{if(t==="closed"){try{window.opener.focus()}catch{}window.close()}},[t]),t==="closed"?e("div",{class:"box",children:[e("p",{children:"You may close this page now."}),e("p",{children:e("button",{onClick:()=>{window.close()},children:"Close window"})})]}):e(S,{editStatus:n,replyToStatus:o,draftStatus:r,standalone:!0,hasOpener:window.opener,onClose:c=>{const{newStatus:l,fn:u=()=>{}}=c||{};try{l&&window.opener.__STATES__.reloadStatusPage++,u(),d("closed")}catch{}}})}m(e(_,{}),document.getElementById("app-standalone")); +//# sourceMappingURL=compose-GEsXl1Xt.js.map diff --git a/assets/compose-GEsXl1Xt.js.map b/assets/compose-GEsXl1Xt.js.map new file mode 100644 index 0000000..9d85ced --- /dev/null +++ b/assets/compose-GEsXl1Xt.js.map @@ -0,0 +1 @@ +{"version":3,"file":"compose-GEsXl1Xt.js","sources":["../../src/compose.jsx"],"sourcesContent":["import './index.css';\n\nimport './app.css';\n\nimport { render } from 'preact';\nimport { useEffect, useState } from 'preact/hooks';\n\nimport ComposeSuspense from './components/compose-suspense';\nimport { initStates } from './utils/states';\nimport useTitle from './utils/useTitle';\n\nif (window.opener) {\n console = window.opener.console;\n}\n\nfunction App() {\n const [uiState, setUIState] = useState('default');\n\n const { editStatus, replyToStatus, draftStatus } = window.__COMPOSE__ || {};\n\n useTitle(\n editStatus\n ? 'Editing source status'\n : replyToStatus\n ? `Replying to @${\n replyToStatus.account?.acct || replyToStatus.account?.username\n }`\n : 'Compose',\n );\n\n useEffect(() => {\n initStates();\n }, []);\n\n useEffect(() => {\n if (uiState === 'closed') {\n try {\n // Focus parent window\n window.opener.focus();\n } catch (e) {}\n window.close();\n }\n }, [uiState]);\n\n if (uiState === 'closed') {\n return (\n
\n

You may close this page now.

\n

\n {\n window.close();\n }}\n >\n Close window\n \n

\n
\n );\n }\n\n console.debug('OPEN COMPOSE');\n\n return (\n {\n const { newStatus, fn = () => {} } = results || {};\n try {\n if (newStatus) {\n window.opener.__STATES__.reloadStatusPage++;\n }\n fn();\n setUIState('closed');\n } catch (e) {}\n }}\n />\n );\n}\n\nrender(, document.getElementById('app-standalone'));\n"],"names":["window","opener","console","App","uiState","setUIState","useState","editStatus","replyToStatus","draftStatus","__COMPOSE__","account","acct","username","useEffect","initStates","focus","close","_jsxs","class","children","_jsx","onClick","standalone","hasOpener","newStatus","results","fn","render"],"mappings":"uHAWIA,OAAOC,SACTC,QAAUF,OAAOC,OAAOC,SAG1B,SAASC,GAAM,SACb,KAAM,CAACC,EAASC,CAAU,EAAIC,EAAS,SAAS,EAE1C,CAAEC,WAAAA,EAAYC,cAAAA,EAAeC,YAAAA,CAAAA,EAAgBT,OAAOU,aAAe,GA0BzE,OAvBEH,EAAAA,EACI,wBACAC,EACC,kBACCA,EAAAA,EAAcG,UAAdH,YAAAA,EAAuBI,SAAQJ,EAAAA,EAAcG,UAAdH,YAAAA,EAAuBK,SACvD,GACD,SACN,EAEAC,EAAU,IAAM,CACHC,GACb,EAAG,CAAE,CAAA,EAELD,EAAU,IAAM,CACd,GAAIV,IAAY,SAAU,CACpB,GAAA,CAEFJ,OAAOC,OAAOe,aACJ,CAAC,CACbhB,OAAOiB,MAAM,CACf,CAAA,EACC,CAACb,CAAO,CAAC,EAERA,IAAY,SAEZc,EAAA,MAAA,CAAKC,MAAM,MAAKC,UACdC,EAAA,IAAA,CAAAD,SAAG,8BAAA,CAA+B,EAClCC,EAAA,IAAA,CAAAD,SACEC,EAAA,SAAA,CACEC,QAASA,IAAM,CACbtB,OAAOiB,MAAM,CACf,EAAEG,SACH,cAAA,CAEO,CAAA,CACP,CAAC,CAAA,CACD,EAITlB,IAA4B,CAE5B,WAAAK,EAEIA,cAAAA,EACAC,YAAAA,EACAC,WAAAA,GACAc,UAAU,OAAA,OACVC,WAAkBvB,OAEV,UAAAwB,EAAEA,GAAAA,EAAAA,IAAAA,EAAsB,EAACC,GAAA,CAAA,EAAE,GAAIA,CACjCD,GACF,OAAe,OAAA,WAAA,mBAEfE,IACGtB,EAAA,QAAA,CACHA,MAAAA,EACW,CAAA,CACf,CAAA,CAGNuB,EAAAP,EAAAlB,EAAA,CAAA,CAAA,EAAA,SAAA,eAAA,gBAAA,CAAA"} \ No newline at end of file diff --git a/assets/compose-W5mt71Ut.js b/assets/compose-W5mt71Ut.js new file mode 100644 index 0000000..dfcfca3 --- /dev/null +++ b/assets/compose-W5mt71Ut.js @@ -0,0 +1,26 @@ +var mt=(s,e,n)=>{if(!e.has(s))throw TypeError("Cannot "+n)};var T=(s,e,n)=>(mt(s,e,"read from private field"),n?n.call(s):e.get(s)),G=(s,e,n)=>{if(e.has(s))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(s):e.set(s,n)},ce=(s,e,n,o)=>(mt(s,e,"write to private field"),o?o.call(s,n):e.set(s,n),n);var Y=(s,e,n)=>(mt(s,e,"access private method"),n);import{p as H,t as dn,F as W,_ as ee,u as je,Z as hn,q as Pe,b as t,k as Ce,E as pn,ao as mn,n as gn,o as ot,m as fn,a as vn,M as $t,g as Bt,x as Kt}from"./vendor-GrW-f9CX.js";import{v as bn,P as yn,p as Tt,u as xn,e as Vt,a as wn,I as K,r as _t,d as Gt,Q as kn,M as Qe,s as xe,K as En,j as Fn,b as Cn,l as zn,q as Ln}from"./status-FORkhePO.js";import{s as re,a as Ft,e as An,A as Yt,c as ze,f as Sn,b as In,L as rt,p as Mn}from"./useTitle-dCp14HlU.js";class $n{constructor(e,n,{tabInsertsSuggestions:o,defaultFirstOption:r}={}){this.input=e,this.list=n,this.tabInsertsSuggestions=o??!0,this.defaultFirstOption=r??!1,this.isComposing=!1,n.id||(n.id=`combobox-${Math.random().toString().slice(2,6)}`),this.ctrlBindings=!!navigator.userAgent.match(/Macintosh/),this.keyboardEventHandler=p=>Bn(p,this),this.compositionEventHandler=p=>_n(p,this),this.inputHandler=this.clearSelection.bind(this),e.setAttribute("role","combobox"),e.setAttribute("aria-controls",n.id),e.setAttribute("aria-expanded","false"),e.setAttribute("aria-autocomplete","list"),e.setAttribute("aria-haspopup","listbox")}destroy(){this.clearSelection(),this.stop(),this.input.removeAttribute("role"),this.input.removeAttribute("aria-controls"),this.input.removeAttribute("aria-expanded"),this.input.removeAttribute("aria-autocomplete"),this.input.removeAttribute("aria-haspopup")}start(){this.input.setAttribute("aria-expanded","true"),this.input.addEventListener("compositionstart",this.compositionEventHandler),this.input.addEventListener("compositionend",this.compositionEventHandler),this.input.addEventListener("input",this.inputHandler),this.input.addEventListener("keydown",this.keyboardEventHandler),this.list.addEventListener("click",Rt),this.indicateDefaultOption()}stop(){this.clearSelection(),this.input.setAttribute("aria-expanded","false"),this.input.removeEventListener("compositionstart",this.compositionEventHandler),this.input.removeEventListener("compositionend",this.compositionEventHandler),this.input.removeEventListener("input",this.inputHandler),this.input.removeEventListener("keydown",this.keyboardEventHandler),this.list.removeEventListener("click",Rt)}indicateDefaultOption(){var e;this.defaultFirstOption&&((e=Array.from(this.list.querySelectorAll('[role="option"]:not([aria-disabled="true"])')).filter(gt)[0])===null||e===void 0||e.setAttribute("data-combobox-option-default","true"))}navigate(e=1){const n=Array.from(this.list.querySelectorAll('[aria-selected="true"]')).filter(gt)[0],o=Array.from(this.list.querySelectorAll('[role="option"]')).filter(gt),r=o.indexOf(n);if(r===o.length-1&&e===1||r===0&&e===-1){this.clearSelection(),this.input.focus();return}let p=e===1?0:o.length-1;if(n&&r>=0){const v=r+e;v>=0&&v0||s.offsetHeight>0)}function _n(s,e){e.isComposing=s.type==="compositionstart",document.getElementById(e.input.getAttribute("aria-controls")||"")&&e.clearSelection()}function Rn(s,e){Dn(s,e)||(s.scrollTop=e.offsetTop)}function Dn(s,e){const n=s.scrollTop,o=n+s.clientHeight,r=e.offsetTop,p=r+e.clientHeight;return r>=n&&p<=o}const jn=/\s|\(|\[/;function Pn(s,e,n,{multiWord:o,lookBackIndex:r,lastMatchPosition:p}={multiWord:!1,lookBackIndex:0,lastMatchPosition:null}){let u=s.lastIndexOf(e,n-1);if(u===-1||u=u+e.length+1||s.lastIndexOf(` +`,n-1)>u||s.lastIndexOf(".",n-1)>u)return}else if(s.lastIndexOf(" ",n-1)>u)return;const v=s[u-1];return v&&!jn.test(v)?void 0:{text:s.substring(u+e.length,n),position:u+e.length}}class On extends HTMLElement{}class Hn extends Event{constructor(){super("update")}}const ft=new WeakMap;var Oe,He,we,me,ke,Re,Le,Ae,Ne,yt,Se,Ie,et,Me,tt,$e,nt,Ue,Ee;const zt=class zt extends On{constructor(n){super();G(this,ke);G(this,Ne);G(this,Ie);G(this,Me);G(this,$e);G(this,Oe,new MutationObserver(()=>Y(this,Me,tt).call(this)));G(this,He,new ResizeObserver(()=>Y(this,Ie,et).call(this)));G(this,we,void 0);G(this,me,void 0);G(this,Le,0);G(this,Ae,0);G(this,Se,!1);G(this,Ue,()=>Y(this,$e,nt).call(this));G(this,Ee,n=>{Y(this,ke,Re).call(this,o=>{(n.target===document||n.target===window||n.target instanceof Node&&n.target.contains(o))&&Y(this,Ie,et).call(this)})});ce(this,we,new WeakRef(n)),ce(this,me,document.createElement("div")),T(this,me).style.position="absolute",T(this,me).style.pointerEvents="none",n.after(T(this,me)),T(this,me).appendChild(this)}static for(n){const o=ft.get(n)??new zt(n);return ft.set(n,o),o}forceUpdate(){Y(this,Me,tt).call(this),Y(this,$e,nt).call(this)}connectedCallback(){const n=T(this,we).deref();if(!n)return this.remove();this.style.pointerEvents="none",this.style.userSelect="none",this.style.overflow="hidden",this.style.display="block",this.style.visibility="hidden",n instanceof HTMLTextAreaElement?(this.style.whiteSpace="pre-wrap",this.style.wordWrap="break-word"):(this.style.whiteSpace="nowrap",this.style.display="table-cell",this.style.verticalAlign="middle"),this.setAttribute("aria-hidden","true"),Y(this,Me,tt).call(this),Y(this,$e,nt).call(this),T(this,Oe).observe(n,{attributeFilter:["style","dir"]}),T(this,He).observe(n),document.addEventListener("scroll",T(this,Ee),{capture:!0}),window.addEventListener("resize",T(this,Ee),{capture:!0}),n.addEventListener("input",T(this,Ue),{capture:!0})}disconnectedCallback(){T(this,me).remove(),T(this,Oe).disconnect(),T(this,He).disconnect(),document.removeEventListener("scroll",T(this,Ee),{capture:!0}),window.removeEventListener("resize",T(this,Ee),{capture:!0});const n=T(this,we).deref();n&&(n.removeEventListener("input",T(this,Ue),{capture:!0}),ft.delete(n))}};Oe=new WeakMap,He=new WeakMap,we=new WeakMap,me=new WeakMap,ke=new WeakSet,Re=function(n){const o=T(this,we).deref();return o?n(o):this.remove()},Le=new WeakMap,Ae=new WeakMap,Ne=new WeakSet,yt=function(){Y(this,ke,Re).call(this,n=>{const o=window.getComputedStyle(n);this.style.height=o.height,this.style.width=o.width,n.clientHeight!==this.clientHeight&&(this.style.height=`calc(${o.height} + ${n.clientHeight-this.clientHeight}px)`),n.clientWidth!==this.clientWidth&&(this.style.width=`calc(${o.width} + ${n.clientWidth-this.clientWidth}px)`);const r=n.getBoundingClientRect(),p=this.getBoundingClientRect();ce(this,Le,T(this,Le)+r.left-p.left),ce(this,Ae,T(this,Ae)+r.top-p.top),this.style.transform=`translate(${T(this,Le)}px, ${T(this,Ae)}px)`,this.scrollTop=n.scrollTop,this.scrollLeft=n.scrollLeft,this.dispatchEvent(new Hn)})},Se=new WeakMap,Ie=new WeakSet,et=function(){T(this,Se)||(ce(this,Se,!0),requestAnimationFrame(()=>{Y(this,Ne,yt).call(this),ce(this,Se,!1)}))},Me=new WeakSet,tt=function(){Y(this,ke,Re).call(this,n=>{const o=window.getComputedStyle(n);for(const r of Nn)this.style[r]=o[r];Y(this,Ie,et).call(this)})},$e=new WeakSet,nt=function(){Y(this,ke,Re).call(this,n=>{this.textContent=n.value,Y(this,Ne,yt).call(this)})},Ue=new WeakMap,Ee=new WeakMap;let it=zt;const Nn=["direction","writingMode","unicodeBidi","textOrientation","boxSizing","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","fontStyle","fontVariant","fontWeight","fontStretch","fontSize","fontSizeAdjust","lineHeight","fontFamily","textAlign","textTransform","textIndent","textDecoration","letterSpacing","wordSpacing","tabSize","MozTabSize"];try{customElements.define("input-style-clone",it)}catch(s){if(!(s instanceof DOMException&&s.name==="NotSupportedError"))throw s}var de,Be,Te,We,wt,st,Zt,qe,kt,Fe,De;const at=class at{constructor(e,n=0,o=n){G(this,We);G(this,st);G(this,qe);G(this,Fe);G(this,de,void 0);G(this,Be,void 0);G(this,Te,void 0);ce(this,de,e),ce(this,Be,n),ce(this,Te,o)}static fromSelection(e){const{selectionStart:n,selectionEnd:o}=e;return new at(e,n??void 0,o??void 0)}get collapsed(){return this.startOffset===this.endOffset}get commonAncestorContainer(){return T(this,de)}get endContainer(){return T(this,de)}get startContainer(){return T(this,de)}get startOffset(){return T(this,Be)}get endOffset(){return T(this,Te)}setStartOffset(e){ce(this,Be,Y(this,qe,kt).call(this,e))}setEndOffset(e){ce(this,Te,Y(this,qe,kt).call(this,e))}collapse(e=!1){e?this.setEndOffset(this.startOffset):this.setStartOffset(this.endOffset)}cloneContents(){return Y(this,Fe,De).call(this).cloneContents()}cloneRange(){return new at(T(this,de),this.startOffset,this.endOffset)}getBoundingClientRect(){return Y(this,Fe,De).call(this).getBoundingClientRect()}getClientRects(){return Y(this,Fe,De).call(this).getClientRects()}toString(){return Y(this,Fe,De).call(this).toString()}getStyleClone(){return T(this,We,wt)}};de=new WeakMap,Be=new WeakMap,Te=new WeakMap,We=new WeakSet,wt=function(){return it.for(T(this,de))},st=new WeakSet,Zt=function(){return T(this,We,wt)},qe=new WeakSet,kt=function(e){return Math.max(0,Math.min(e,T(this,de).value.length))},Fe=new WeakSet,De=function(){const e=document.createRange(),n=T(this,st,Zt).childNodes[0];return n&&(e.setStart(n,this.startOffset),e.setEnd(n,this.endOffset)),e};let xt=at;const Je=new WeakMap;class Un{constructor(e,n){this.expander=e,this.input=n,this.combobox=null,this.menu=null,this.match=null,this.justPasted=!1,this.lookBackIndex=0,this.oninput=this.onInput.bind(this),this.onpaste=this.onPaste.bind(this),this.onkeydown=this.onKeydown.bind(this),this.oncommit=this.onCommit.bind(this),this.onmousedown=this.onMousedown.bind(this),this.onblur=this.onBlur.bind(this),this.interactingWithList=!1,n.addEventListener("paste",this.onpaste),n.addEventListener("input",this.oninput),n.addEventListener("keydown",this.onkeydown),n.addEventListener("blur",this.onblur)}destroy(){this.input.removeEventListener("paste",this.onpaste),this.input.removeEventListener("input",this.oninput),this.input.removeEventListener("keydown",this.onkeydown),this.input.removeEventListener("blur",this.onblur)}dismissMenu(){this.deactivate()&&(this.lookBackIndex=this.input.selectionEnd||this.lookBackIndex)}activate(e,n){var o,r;this.input!==document.activeElement&&this.input!==((r=(o=document.activeElement)===null||o===void 0?void 0:o.shadowRoot)===null||r===void 0?void 0:r.activeElement)||(this.deactivate(),this.menu=n,n.id||(n.id=`text-expander-${Math.floor(Math.random()*1e5).toString()}`),this.expander.append(n),this.combobox=new $n(this.input,n),this.expander.dispatchEvent(new Event("text-expander-activate")),this.positionMenu(n,e.position),this.combobox.start(),n.addEventListener("combobox-commit",this.oncommit),n.addEventListener("mousedown",this.onmousedown),this.combobox.navigate(1))}positionMenu(e,n){const o=new xt(this.input,n).getBoundingClientRect(),r={left:o.left,top:o.top+o.height},p=e.getBoundingClientRect(),u={left:r.left-p.left,top:r.top-p.top};if(u.left!==0||u.top!==0){const v=getComputedStyle(e);e.style.left=v.left?`calc(${v.left} + ${u.left}px)`:`${u.left}px`,e.style.top=v.top?`calc(${v.top} + ${u.top}px)`:`${u.top}px`}}deactivate(){const e=this.menu;return!e||!this.combobox?!1:(this.expander.dispatchEvent(new Event("text-expander-deactivate")),this.menu=null,e.removeEventListener("combobox-commit",this.oncommit),e.removeEventListener("mousedown",this.onmousedown),this.combobox.destroy(),this.combobox=null,e.remove(),!0)}onCommit({target:e}){var n;const o=e;if(!(o instanceof HTMLElement)||!this.combobox)return;const r=this.match;if(!r)return;const p=this.input.value.substring(0,r.position-r.key.length),u=this.input.value.substring(r.position+r.text.length),v={item:o,key:r.key,value:null,continue:!1};if(!this.expander.dispatchEvent(new CustomEvent("text-expander-value",{cancelable:!0,detail:v}))||!v.value)return;let R=(n=this.expander.getAttribute("suffix"))!==null&&n!==void 0?n:" ";v.continue&&(R="");const C=`${v.value}${R}`;this.input.value=p+C+u;const k=p.length+C.length;this.deactivate(),this.input.focus({preventScroll:!0}),this.input.selectionStart=k,this.input.selectionEnd=k,v.continue||(this.lookBackIndex=k,this.match=null),this.expander.dispatchEvent(new CustomEvent("text-expander-committed",{cancelable:!1,detail:{input:this.input}}))}onBlur(){if(this.interactingWithList){this.interactingWithList=!1;return}this.deactivate()}onPaste(){this.justPasted=!0}async onInput(){if(this.justPasted){this.justPasted=!1;return}const e=this.findMatch();if(e){this.match=e;const n=await this.notifyProviders(e);if(!this.match)return;n?this.activate(e,n):this.deactivate()}else this.match=null,this.deactivate()}findMatch(){const e=this.input.selectionEnd||0,n=this.input.value;e<=this.lookBackIndex&&(this.lookBackIndex=e-1);for(const{key:o,multiWord:r}of this.expander.keys){const p=Pn(n,o,e,{multiWord:r,lookBackIndex:this.lookBackIndex,lastMatchPosition:this.match?this.match.position:null});if(p)return{text:p.text,key:o,position:p.position}}}async notifyProviders(e){const n=[],o=v=>n.push(v);return this.expander.dispatchEvent(new CustomEvent("text-expander-change",{cancelable:!0,detail:{provide:o,text:e.text,key:e.key}}))?(await Promise.all(n)).filter(v=>v.matched).map(v=>v.fragment)[0]:void 0}onMousedown(){this.interactingWithList=!0}onKeydown(e){e.key==="Escape"&&(this.match=null,this.deactivate()&&(this.lookBackIndex=this.input.selectionEnd||this.lookBackIndex,e.stopImmediatePropagation(),e.preventDefault()))}}class jt extends HTMLElement{get keys(){const e=this.getAttribute("keys"),n=e?e.split(" "):[],o=this.getAttribute("multiword"),r=o?o.split(" "):[],p=r.length===0&&this.hasAttribute("multiword");return n.map(u=>({key:u,multiWord:p||r.includes(u)}))}connectedCallback(){const e=this.querySelector('input[type="text"], textarea');if(!(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement))return;const n=new Un(this,e);Je.set(this,n)}disconnectedCallback(){const e=Je.get(this);e&&(e.destroy(),Je.delete(this))}dismiss(){const e=Je.get(this);e&&e.dismissMenu()}}window.customElements.get("text-expander")||(window.TextExpanderElement=jt,window.customElements.define("text-expander",jt));function Wn({onlyFirst:s=!1}={}){const e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(e,s?void 0:"g")}const qn=Wn();function Kn(s){if(typeof s!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof s}\``);return s.replace(qn,"")}const Vn=new Intl.Segmenter;function Pt(s,{countAnsiEscapeCodes:e=!1}={}){if(s===""||(e||(s=Kn(s)),s===""))return 0;let n=0;for(const o of Vn.segment(s))n++;return n}const Gn="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20version='1.0'%20viewBox='0%200%20641%20223'%3e%3cpath%20fill='%23aaa'%20d='M86%20214c-9-1-17-4-24-8l-6-3-5-5-5-4-4-6-4-6-3-8-2-8v-27l2-9%203-9%204-6%204-6%205-5%205-5%207-3%206-4%207-2%207-2%2012-1h12l7%201%208%202%207%204%207%203%205%205%205%204-10%2010-10%209-4-3-10-5-5-1H88l-5%202-6%203-3%204-4%204-2%205-2%206v6l-1%207%201%207%202%207%203%205%202%204%204%203%204%203%205%202%206%202h9l10-1%205-2%206-3v-16H91v-27h59v54l-1%203-2%203-5%204-4%204-5%203-5%202-8%202-8%202-10%201H92l-6-1zm266-62V91h34v46h44V91h34v121h-34v-46h-44v46h-34v-61zm-182-1V90h34v121h-34v-60zm59-1V90h35l36%201%205%202c3%200%208%202%2010%204l5%202%204%205%205%204%203%207%203%207%201%2013v13l-4%206-3%207-4%204-5%205-5%202-5%203-6%202-5%201-18%201h-18v32h-34v-61zm67-2%203-2%202-4%202-5v-5l-2-4-2-4-3-2-3-3h-30v31h30l3-2zm226%2039v-24l-8-12-18-28a1751%201751%200%200%200-20-31v-2h39l7%2012%2012%2021%206%209%2013-21%2013-21h38v2l-41%2061-7%2010v48h-34v-24zM109%2066l-4-1-5-5-5-4-1-5-3-9v-5l1-5c2-7%203-10%208-15l4-4%207-2%207-2h7l6%201%205%202%205%202%203%204%204%203%202%206%202%205v13l-2%205-2%206-4%204-3%203-5%202-4%202-9%201h-9l-5-2zm22-11%204-2%203-4%202-5V34l-2-4-2-4-3-2-4-3-5-1h-6l-4%202-5%202-2%204-3%205-1%203v4l1%205%202%205%202%202%205%203%204%202h10l4-2zM37%2039V11h33l3%201%203%202%204%203%203%203%201%205%201%204v5l-1%204-3%204-3%205-4%201-3%202-11%201H49v16H37V39zm31%200%203-2%201-2%201-2v-4l-1-3-3-2-2-2H49v18h15l4-1zm107%2025a512%20512%200%200%200-19-53h14l4%2014%206%2019%201%204%201-1%207-19%205-17h9l6%2019%207%2018v-1l2-6%205-17%204-13h14v1l-4%2012-16%2041v2h-5l-5-1-6-15-6-15-1%201-3%207-6%2015-2%208h-11l-1-3zm74-25V11h42v11h-29v2l-1%205v4h29v11h-28v11h2l15%201h13v11h-43V39zm55%200V11h33l5%203%205%202%202%204%202%205v10l-2%203-1%204-5%203-5%203%205%205%208%2010%203%204h-14l-7-9-8-10h-9v19h-12V39zm33-3%202-3v-6l-3-3-2-3h-18v16h1v1h17l2-2zm26%203V11h42v11h-29l-1%206v5h29v11h-28v5l-1%205%201%201v1h30v11h-43V39zm54%200V11h17l18%201%204%202%205%203%202%204%203%204%202%206%201%206v5c-1%206-3%2012-6%2015l-3%204-5%203-5%202-17%201h-16V39zm33%2014%205-5%202-3v-6l-1-6-1-3-1-3-4-3-3-2h-5l-6-1-3%201h-3v34h9l8-1%203-2zm50-14V11h34l5%202%204%202%202%203%202%203v9l-2%202-3%204-1%201%203%203%203%204%201%203%201%204-1%204-1%204-3%203-3%203-5%201-5%201h-31V39zm34%2015%202-1v-6l-2-2-2-2h-20v13h20l2-2zm-3-22%204-2v-6l-2-1-2-2h-19v12h16l4-1zm42%2024V45l-6-9-11-17-5-8h15l4%208%207%2011%202%203%207-11%207-11h14l-11%2016-11%2017v23h-12V56z'/%3e%3c/svg%3e",Ct=[["aa","Afar","Afaraf"],["ab","Abkhaz","аҧсуа бызшәа"],["ae","Avestan","avesta"],["af","Afrikaans","Afrikaans"],["ak","Akan","Akan"],["am","Amharic","አማርኛ"],["an","Aragonese","aragonés"],["ar","Arabic","اللغة العربية"],["as","Assamese","অসমীয়া"],["av","Avaric","авар мацӀ"],["ay","Aymara","aymar aru"],["az","Azerbaijani","azərbaycan dili"],["ba","Bashkir","башҡорт теле"],["be","Belarusian","беларуская мова"],["bg","Bulgarian","български език"],["bh","Bihari","भोजपुरी"],["bi","Bislama","Bislama"],["bm","Bambara","bamanankan"],["bn","Bengali","বাংলা"],["bo","Tibetan","བོད་ཡིག"],["br","Breton","brezhoneg"],["bs","Bosnian","bosanski jezik"],["ca","Catalan","Català"],["ce","Chechen","нохчийн мотт"],["ch","Chamorro","Chamoru"],["co","Corsican","corsu"],["cr","Cree","ᓀᐦᐃᔭᐍᐏᐣ"],["cs","Czech","čeština"],["cu","Old Church Slavonic","ѩзыкъ словѣньскъ"],["cv","Chuvash","чӑваш чӗлхи"],["cy","Welsh","Cymraeg"],["da","Danish","dansk"],["de","German","Deutsch"],["dv","Divehi","Dhivehi"],["dz","Dzongkha","རྫོང་ཁ"],["ee","Ewe","Eʋegbe"],["el","Greek","Ελληνικά"],["en","English","English"],["eo","Esperanto","Esperanto"],["es","Spanish","Español"],["et","Estonian","eesti"],["eu","Basque","euskara"],["fa","Persian","فارسی"],["ff","Fula","Fulfulde"],["fi","Finnish","suomi"],["fj","Fijian","Vakaviti"],["fo","Faroese","føroyskt"],["fr","French","Français"],["fy","Western Frisian","Frysk"],["ga","Irish","Gaeilge"],["gd","Scottish Gaelic","Gàidhlig"],["gl","Galician","galego"],["gu","Gujarati","ગુજરાતી"],["gv","Manx","Gaelg"],["ha","Hausa","هَوُسَ"],["he","Hebrew","עברית"],["hi","Hindi","हिन्दी"],["ho","Hiri Motu","Hiri Motu"],["hr","Croatian","Hrvatski"],["ht","Haitian","Kreyòl ayisyen"],["hu","Hungarian","magyar"],["hy","Armenian","Հայերեն"],["hz","Herero","Otjiherero"],["ia","Interlingua","Interlingua"],["id","Indonesian","Bahasa Indonesia"],["ie","Interlingue","Interlingue"],["ig","Igbo","Asụsụ Igbo"],["ii","Nuosu","ꆈꌠ꒿ Nuosuhxop"],["ik","Inupiaq","Iñupiaq"],["io","Ido","Ido"],["is","Icelandic","Íslenska"],["it","Italian","Italiano"],["iu","Inuktitut","ᐃᓄᒃᑎᑐᑦ"],["ja","Japanese","日本語"],["jv","Javanese","basa Jawa"],["ka","Georgian","ქართული"],["kg","Kongo","Kikongo"],["ki","Kikuyu","Gĩkũyũ"],["kj","Kwanyama","Kuanyama"],["kk","Kazakh","қазақ тілі"],["kl","Kalaallisut","kalaallisut"],["km","Khmer","ខេមរភាសា"],["kn","Kannada","ಕನ್ನಡ"],["ko","Korean","한국어"],["kr","Kanuri","Kanuri"],["ks","Kashmiri","कश्मीरी"],["ku","Kurmanji (Kurdish)","Kurmancî"],["kv","Komi","коми кыв"],["kw","Cornish","Kernewek"],["ky","Kyrgyz","Кыргызча"],["la","Latin","latine"],["lb","Luxembourgish","Lëtzebuergesch"],["lg","Ganda","Luganda"],["li","Limburgish","Limburgs"],["ln","Lingala","Lingála"],["lo","Lao","ລາວ"],["lt","Lithuanian","lietuvių kalba"],["lu","Luba-Katanga","Tshiluba"],["lv","Latvian","latviešu valoda"],["mg","Malagasy","fiteny malagasy"],["mh","Marshallese","Kajin M̧ajeļ"],["mi","Māori","te reo Māori"],["mk","Macedonian","македонски јазик"],["ml","Malayalam","മലയാളം"],["mn","Mongolian","Монгол хэл"],["mr","Marathi","मराठी"],["ms","Malay","Bahasa Melayu"],["mt","Maltese","Malti"],["my","Burmese","ဗမာစာ"],["na","Nauru","Ekakairũ Naoero"],["nb","Norwegian Bokmål","Norsk bokmål"],["nd","Northern Ndebele","isiNdebele"],["ne","Nepali","नेपाली"],["ng","Ndonga","Owambo"],["nl","Dutch","Nederlands"],["nn","Norwegian Nynorsk","Norsk Nynorsk"],["no","Norwegian","Norsk"],["nr","Southern Ndebele","isiNdebele"],["nv","Navajo","Diné bizaad"],["ny","Chichewa","chiCheŵa"],["oc","Occitan","occitan"],["oj","Ojibwe","ᐊᓂᔑᓈᐯᒧᐎᓐ"],["om","Oromo","Afaan Oromoo"],["or","Oriya","ଓଡ଼ିଆ"],["os","Ossetian","ирон æвзаг"],["pa","Panjabi","ਪੰਜਾਬੀ"],["pi","Pāli","पाऴि"],["pl","Polish","Polski"],["ps","Pashto","پښتو"],["pt","Portuguese","Português"],["qu","Quechua","Runa Simi"],["rm","Romansh","rumantsch grischun"],["rn","Kirundi","Ikirundi"],["ro","Romanian","Română"],["ru","Russian","Русский"],["rw","Kinyarwanda","Ikinyarwanda"],["sa","Sanskrit","संस्कृतम्"],["sc","Sardinian","sardu"],["sd","Sindhi","सिन्धी"],["se","Northern Sami","Davvisámegiella"],["sg","Sango","yângâ tî sängö"],["si","Sinhala","සිංහල"],["sk","Slovak","slovenčina"],["sl","Slovenian","slovenščina"],["sn","Shona","chiShona"],["so","Somali","Soomaaliga"],["sq","Albanian","Shqip"],["sr","Serbian","српски језик"],["ss","Swati","SiSwati"],["st","Southern Sotho","Sesotho"],["su","Sundanese","Basa Sunda"],["sv","Swedish","Svenska"],["sw","Swahili","Kiswahili"],["ta","Tamil","தமிழ்"],["te","Telugu","తెలుగు"],["tg","Tajik","тоҷикӣ"],["th","Thai","ไทย"],["ti","Tigrinya","ትግርኛ"],["tk","Turkmen","Türkmen"],["tl","Tagalog","Wikang Tagalog"],["tn","Tswana","Setswana"],["to","Tonga","faka Tonga"],["tr","Turkish","Türkçe"],["ts","Tsonga","Xitsonga"],["tt","Tatar","татар теле"],["tw","Twi","Twi"],["ty","Tahitian","Reo Tahiti"],["ug","Uyghur","ئۇيغۇرچە‎"],["uk","Ukrainian","Українська"],["ur","Urdu","اردو"],["uz","Uzbek","Ўзбек"],["ve","Venda","Tshivenḓa"],["vi","Vietnamese","Tiếng Việt"],["vo","Volapük","Volapük"],["wa","Walloon","walon"],["wo","Wolof","Wollof"],["xh","Xhosa","isiXhosa"],["yi","Yiddish","ייִדיש"],["yo","Yoruba","Yorùbá"],["za","Zhuang","Saɯ cueŋƅ"],["zh","Chinese","中文"],["zu","Zulu","isiZulu"],["zh-CN","Chinese (China)","简体中文"],["zh-HK","Chinese (Hong Kong)","繁體中文(香港)"],["zh-TW","Chinese (Taiwan)","繁體中文(臺灣)"],["zh-YUE","Cantonese","廣東話"],["ast","Asturian","Asturianu"],["chr","Cherokee","ᏣᎳᎩ ᎦᏬᏂᎯᏍᏗ"],["ckb","Sorani (Kurdish)","سۆرانی"],["cnr","Montenegrin","crnogorski"],["jbo","Lojban","la .lojban."],["kab","Kabyle","Taqbaylit"],["ldn","Láadan","Láadan"],["lfn","Lingua Franca Nova","lingua franca nova"],["sco","Scots","Scots"],["sma","Southern Sami","Åarjelsaemien Gïele"],["smj","Lule Sami","Julevsámegiella"],["szl","Silesian","ślůnsko godka"],["tok","Toki Pona","toki pona"],["xal","Kalmyk","Хальмг келн"],["zba","Balaibalan","باليبلن"],["zgh","Standard Moroccan Tamazight","ⵜⴰⵎⴰⵣⵉⵖⵜ"]],Yn="(((?:[^A-Za-z0-9@@$##\\uFFFE\\uFEFF\\uFFFF]|[\\u202A-\\u202E\\u061C\\u200E\\u200F\\u2066\\u2067\\u2068\\u2069]|^))((https?:\\/\\/)((?:(?:(?:[^/\\!'#%&'\\(\\)*\\+,\\\\\\-\\.\\/:;<=>\\?@\\[\\]\\^_{|}~\\$//\\x09-\\x0D\\x20\\x85\\xA0\\u1680\\u180E\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000//\\uFFFE\\uFEFF\\uFFFF//\\u202A-\\u202E\\u061C\\u200E\\u200F\\u2066\\u2067\\u2068\\u2069/](?:[_-]|[^/\\!'#%&'\\(\\)*\\+,\\\\\\-\\.\\/:;<=>\\?@\\[\\]\\^_{|}~\\$//\\x09-\\x0D\\x20\\x85\\xA0\\u1680\\u180E\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000//\\uFFFE\\uFEFF\\uFFFF//\\u202A-\\u202E\\u061C\\u200E\\u200F\\u2066\\u2067\\u2068\\u2069/])*)?[^/\\!'#%&'\\(\\)*\\+,\\\\\\-\\.\\/:;<=>\\?@\\[\\]\\^_{|}~\\$//\\x09-\\x0D\\x20\\x85\\xA0\\u1680\\u180E\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000//\\uFFFE\\uFEFF\\uFFFF//\\u202A-\\u202E\\u061C\\u200E\\u200F\\u2066\\u2067\\u2068\\u2069/]\\.)*(?:(?:[^/\\!'#%&'\\(\\)*\\+,\\\\\\-\\.\\/:;<=>\\?@\\[\\]\\^_{|}~\\$//\\x09-\\x0D\\x20\\x85\\xA0\\u1680\\u180E\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000//\\uFFFE\\uFEFF\\uFFFF//\\u202A-\\u202E\\u061C\\u200E\\u200F\\u2066\\u2067\\u2068\\u2069/](?:-|[^/\\!'#%&'\\(\\)*\\+,\\\\\\-\\.\\/:;<=>\\?@\\[\\]\\^_{|}~\\$//\\x09-\\x0D\\x20\\x85\\xA0\\u1680\\u180E\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000//\\uFFFE\\uFEFF\\uFFFF//\\u202A-\\u202E\\u061C\\u200E\\u200F\\u2066\\u2067\\u2068\\u2069/])*)?[^/\\!'#%&'\\(\\)*\\+,\\\\\\-\\.\\/:;<=>\\?@\\[\\]\\^_{|}~\\$//\\x09-\\x0D\\x20\\x85\\xA0\\u1680\\u180E\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000//\\uFFFE\\uFEFF\\uFFFF//\\u202A-\\u202E\\u061C\\u200E\\u200F\\u2066\\u2067\\u2068\\u2069/]\\.)(?:(?:(?:삼성|닷컴|닷넷|香格里拉|餐厅|食品|飞利浦|電訊盈科|集团|通販|购物|谷歌|诺基亚|联通|网络|网站|网店|网址|组织机构|移动|珠宝|点看|游戏|淡马锡|机构|書籍|时尚|新闻|政府|政务|招聘|手表|手机|我爱你|慈善|微博|广东|工行|家電|娱乐|天主教|大拿|大众汽车|在线|嘉里大酒店|嘉里|商标|商店|商城|公益|公司|八卦|健康|信息|佛山|企业|中文网|中信|世界|ポイント|ファッション|セール|ストア|コム|グーグル|クラウド|みんな|คอม|संगठन|नेट|कॉम|همراه|موقع|موبايلي|كوم|كاثوليك|عرب|شبكة|بيتك|بازار|العليان|ارامكو|اتصالات|ابوظبي|קום|сайт|рус|орг|онлайн|москва|ком|католик|дети|zuerich|zone|zippo|zip|zero|zara|zappos|yun|youtube|you|yokohama|yoga|yodobashi|yandex|yamaxun|yahoo|yachts|xyz|xxx|xperia|xin|xihuan|xfinity|xerox|xbox|wtf|wtc|wow|world|works|work|woodside|wolterskluwer|wme|winners|wine|windows|win|williamhill|wiki|wien|whoswho|weir|weibo|wedding|wed|website|weber|webcam|weatherchannel|weather|watches|watch|warman|wanggou|wang|walter|walmart|wales|vuelos|voyage|voto|voting|vote|volvo|volkswagen|vodka|vlaanderen|vivo|viva|vistaprint|vista|vision|visa|virgin|vip|vin|villas|viking|vig|video|viajes|vet|versicherung|vermögensberatung|vermögensberater|verisign|ventures|vegas|vanguard|vana|vacations|ups|uol|uno|university|unicom|uconnect|ubs|ubank|tvs|tushu|tunes|tui|tube|trv|trust|travelersinsurance|travelers|travelchannel|travel|training|trading|trade|toys|toyota|town|tours|total|toshiba|toray|top|tools|tokyo|today|tmall|tkmaxx|tjx|tjmaxx|tirol|tires|tips|tiffany|tienda|tickets|tiaa|theatre|theater|thd|teva|tennis|temasek|telefonica|telecity|tel|technology|tech|team|tdk|tci|taxi|tax|tattoo|tatar|tatamotors|target|taobao|talk|taipei|tab|systems|symantec|sydney|swiss|swiftcover|swatch|suzuki|surgery|surf|support|supply|supplies|sucks|style|study|studio|stream|store|storage|stockholm|stcgroup|stc|statoil|statefarm|statebank|starhub|star|staples|stada|srt|srl|spreadbetting|spot|sport|spiegel|space|soy|sony|song|solutions|solar|sohu|software|softbank|social|soccer|sncf|smile|smart|sling|skype|sky|skin|ski|site|singles|sina|silk|shriram|showtime|show|shouji|shopping|shop|shoes|shiksha|shia|shell|shaw|sharp|shangrila|sfr|sexy|sex|sew|seven|ses|services|sener|select|seek|security|secure|seat|search|scot|scor|scjohnson|science|schwarz|schule|school|scholarships|schmidt|schaeffler|scb|sca|sbs|sbi|saxo|save|sas|sarl|sapo|sap|sanofi|sandvikcoromant|sandvik|samsung|samsclub|salon|sale|sakura|safety|safe|saarland|ryukyu|rwe|run|ruhr|rugby|rsvp|room|rogers|rodeo|rocks|rocher|rmit|rip|rio|ril|rightathome|ricoh|richardli|rich|rexroth|reviews|review|restaurant|rest|republican|report|repair|rentals|rent|ren|reliance|reit|reisen|reise|rehab|redumbrella|redstone|red|recipes|realty|realtor|realestate|read|raid|radio|racing|qvc|quest|quebec|qpon|pwc|pub|prudential|pru|protection|property|properties|promo|progressive|prof|productions|prod|pro|prime|press|praxi|pramerica|post|porn|politie|poker|pohl|pnc|plus|plumbing|playstation|play|place|pizza|pioneer|pink|ping|pin|pid|pictures|pictet|pics|piaget|physio|photos|photography|photo|phone|philips|phd|pharmacy|pfizer|pet|pccw|pay|passagens|party|parts|partners|pars|paris|panerai|panasonic|pamperedchef|page|ovh|ott|otsuka|osaka|origins|orientexpress|organic|org|orange|oracle|open|ooo|onyourside|online|onl|ong|one|omega|ollo|oldnavy|olayangroup|olayan|okinawa|office|off|observer|obi|nyc|ntt|nrw|nra|nowtv|nowruz|now|norton|northwesternmutual|nokia|nissay|nissan|ninja|nikon|nike|nico|nhk|ngo|nfl|nexus|nextdirect|next|news|newholland|new|neustar|network|netflix|netbank|net|nec|nba|navy|natura|nationwide|name|nagoya|nadex|nab|mutuelle|mutual|museum|mtr|mtpc|mtn|msd|movistar|movie|mov|motorcycles|moto|moscow|mortgage|mormon|mopar|montblanc|monster|money|monash|mom|moi|moe|moda|mobily|mobile|mobi|mma|mls|mlb|mitsubishi|mit|mint|mini|mil|microsoft|miami|metlife|merckmsd|meo|menu|men|memorial|meme|melbourne|meet|media|med|mckinsey|mcdonalds|mcd|mba|mattel|maserati|marshalls|marriott|markets|marketing|market|map|mango|management|man|makeup|maison|maif|madrid|macys|luxury|luxe|lupin|lundbeck|ltda|ltd|lplfinancial|lpl|love|lotto|lotte|london|lol|loft|locus|locker|loans|loan|llp|llc|lixil|living|live|lipsy|link|linde|lincoln|limo|limited|lilly|like|lighting|lifestyle|lifeinsurance|life|lidl|liaison|lgbt|lexus|lego|legal|lefrak|leclerc|lease|lds|lawyer|law|latrobe|latino|lat|lasalle|lanxess|landrover|land|lancome|lancia|lancaster|lamer|lamborghini|ladbrokes|lacaixa|kyoto|kuokgroup|kred|krd|kpn|kpmg|kosher|komatsu|koeln|kiwi|kitchen|kindle|kinder|kim|kia|kfh|kerryproperties|kerrylogistics|kerryhotels|kddi|kaufen|juniper|juegos|jprs|jpmorgan|joy|jot|joburg|jobs|jnj|jmp|jll|jlc|jio|jewelry|jetzt|jeep|jcp|jcb|java|jaguar|iwc|iveco|itv|itau|istanbul|ist|ismaili|iselect|irish|ipiranga|investments|intuit|international|intel|int|insure|insurance|institute|ink|ing|info|infiniti|industries|inc|immobilien|immo|imdb|imamat|ikano|iinet|ifm|ieee|icu|ice|icbc|ibm|hyundai|hyatt|hughes|htc|hsbc|how|house|hotmail|hotels|hoteles|hot|hosting|host|hospital|horse|honeywell|honda|homesense|homes|homegoods|homedepot|holiday|holdings|hockey|hkt|hiv|hitachi|hisamitsu|hiphop|hgtv|hermes|here|helsinki|help|healthcare|health|hdfcbank|hdfc|hbo|haus|hangout|hamburg|hair|guru|guitars|guide|guge|gucci|guardian|group|grocery|gripe|green|gratis|graphics|grainger|gov|got|gop|google|goog|goodyear|goodhands|goo|golf|goldpoint|gold|godaddy|gmx|gmo|gmbh|gmail|globo|global|gle|glass|glade|giving|gives|gifts|gift|ggee|george|genting|gent|gea|gdn|gbiz|gay|garden|gap|games|game|gallup|gallo|gallery|gal|fyi|futbol|furniture|fund|fun|fujixerox|fujitsu|ftr|frontier|frontdoor|frogans|frl|fresenius|free|fox|foundation|forum|forsale|forex|ford|football|foodnetwork|food|foo|fly|flsmidth|flowers|florist|flir|flights|flickr|fitness|fit|fishing|fish|firmdale|firestone|fire|financial|finance|final|film|fido|fidelity|fiat|ferrero|ferrari|feedback|fedex|fast|fashion|farmers|farm|fans|fan|family|faith|fairwinds|fail|fage|extraspace|express|exposed|expert|exchange|everbank|events|eus|eurovision|etisalat|esurance|estate|esq|erni|ericsson|equipment|epson|epost|enterprises|engineering|engineer|energy|emerck|email|education|edu|edeka|eco|eat|earth|dvr|dvag|durban|dupont|duns|dunlop|duck|dubai|dtv|drive|download|dot|doosan|domains|doha|dog|dodge|doctor|docs|dnp|diy|dish|discover|discount|directory|direct|digital|diet|diamonds|dhl|dev|design|desi|dentist|dental|democrat|delta|deloitte|dell|delivery|degree|deals|dealer|deal|dds|dclk|day|datsun|dating|date|data|dance|dad|dabur|cyou|cymru|cuisinella|csc|cruises|cruise|crs|crown|cricket|creditunion|creditcard|credit|cpa|courses|coupons|coupon|country|corsica|coop|cool|cookingchannel|cooking|contractors|contact|consulting|construction|condos|comsec|computer|compare|company|community|commbank|comcast|com|cologne|college|coffee|codes|coach|clubmed|club|cloud|clothing|clinique|clinic|click|cleaning|claims|cityeats|city|citic|citi|citadel|cisco|circle|cipriani|church|chrysler|chrome|christmas|chloe|chintai|cheap|chat|chase|charity|channel|chanel|cfd|cfa|cern|ceo|center|ceb|cbs|cbre|cbn|cba|catholic|catering|cat|casino|cash|caseih|case|casa|cartier|cars|careers|career|care|cards|caravan|car|capitalone|capital|capetown|canon|cancerresearch|camp|camera|cam|calvinklein|call|cal|cafe|cab|bzh|buzz|buy|business|builders|build|bugatti|budapest|brussels|brother|broker|broadway|bridgestone|bradesco|box|boutique|bot|boston|bostik|bosch|boots|booking|book|boo|bond|bom|bofa|boehringer|boats|bnpparibas|bnl|bmw|bms|blue|bloomberg|blog|blockbuster|blanco|blackfriday|black|biz|bio|bingo|bing|bike|bid|bible|bharti|bet|bestbuy|best|berlin|bentley|beer|beauty|beats|bcn|bcg|bbva|bbt|bbc|bayern|bauhaus|basketball|baseball|bargains|barefoot|barclays|barclaycard|barcelona|bar|bank|band|bananarepublic|banamex|baidu|baby|azure|axa|aws|avianca|autos|auto|author|auspost|audio|audible|audi|auction|attorney|athleta|associates|asia|asda|arte|art|arpa|army|archi|aramco|arab|aquarelle|apple|app|apartments|aol|anz|anquan|android|analytics|amsterdam|amica|amfam|amex|americanfamily|americanexpress|alstom|alsace|ally|allstate|allfinanz|alipay|alibaba|alfaromeo|akdn|airtel|airforce|airbus|aigo|aig|agency|agakhan|africa|afl|afamilycompany|aetna|aero|aeg|adult|ads|adac|actor|active|aco|accountants|accountant|accenture|academy|abudhabi|abogado|able|abc|abbvie|abbott|abb|abarth|aarp|aaa|onion)(?=[^0-9a-zA-Z@+-]|$))|(?:(?:한국|香港|澳門|新加坡|台灣|台湾|中國|中国|გე|ລາວ|ไทย|ලංකා|ഭാരതം|ಭಾರತ|భారత్|சிங்கப்பூர்|இலங்கை|இந்தியா|ଭାରତ|ભારત|ਭਾਰਤ|ভাৰত|ভারত|বাংলা|भारोत|भारतम्|भारत|ڀارت|پاکستان|موريتانيا|مليسيا|مصر|قطر|فلسطين|عمان|عراق|سورية|سودان|تونس|بھارت|بارت|ایران|امارات|المغرب|السعودية|الجزائر|البحرين|الاردن|հայ|қаз|укр|срб|рф|мон|мкд|ею|бел|бг|ευ|ελ|zw|zm|za|yt|ye|ws|wf|vu|vn|vi|vg|ve|vc|va|uz|uy|us|um|uk|ug|ua|tz|tw|tv|tt|tr|tp|to|tn|tm|tl|tk|tj|th|tg|tf|td|tc|sz|sy|sx|sv|su|st|ss|sr|so|sn|sm|sl|sk|sj|si|sh|sg|se|sd|sc|sb|sa|rw|ru|rs|ro|re|qa|py|pw|pt|ps|pr|pn|pm|pl|pk|ph|pg|pf|pe|pa|om|nz|nu|nr|np|no|nl|ni|ng|nf|ne|nc|na|mz|my|mx|mw|mv|mu|mt|ms|mr|mq|mp|mo|mn|mm|ml|mk|mh|mg|mf|me|md|mc|ma|ly|lv|lu|lt|ls|lr|lk|li|lc|lb|la|kz|ky|kw|kr|kp|kn|km|ki|kh|kg|ke|jp|jo|jm|je|it|is|ir|iq|io|in|im|il|ie|id|hu|ht|hr|hn|hm|hk|gy|gw|gu|gt|gs|gr|gq|gp|gn|gm|gl|gi|gh|gg|gf|ge|gd|gb|ga|fr|fo|fm|fk|fj|fi|eu|et|es|er|eh|eg|ee|ec|dz|do|dm|dk|dj|de|cz|cy|cx|cw|cv|cu|cr|co|cn|cm|cl|ck|ci|ch|cg|cf|cd|cc|ca|bz|by|bw|bv|bt|bs|br|bq|bo|bn|bm|bl|bj|bi|bh|bg|bf|be|bd|bb|ba|az|ax|aw|au|at|as|ar|aq|ao|an|am|al|ai|ag|af|ae|ad|ac)(?=[^0-9a-zA-Z@+-]|$))|(?:xn--[\\-0-9a-z]+))))(?::([0-9]+))?(\\/(?:(?:[a-z\\u0400-\\u04FF0-9!\\*';:=\\+,\\.\\$\\/%#\\[\\]\\-\\u2013_~@\\|&\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\xFF\\u0100-\\u024F\\u0253\\u0254\\u0256\\u0257\\u0259\\u025B\\u0263\\u0268\\u026F\\u0272\\u0289\\u028B\\u02BB\\u0300-\\u036F\\u1E00-\\u1EFF]*(?:\\((?:[a-z\\u0400-\\u04FF0-9!\\*';:=\\+,\\.\\$\\/%#\\[\\]\\-\\u2013_~@\\|&\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\xFF\\u0100-\\u024F\\u0253\\u0254\\u0256\\u0257\\u0259\\u025B\\u0263\\u0268\\u026F\\u0272\\u0289\\u028B\\u02BB\\u0300-\\u036F\\u1E00-\\u1EFF]+|(?:[a-z\\u0400-\\u04FF0-9!\\*';:=\\+,\\.\\$\\/%#\\[\\]\\-\\u2013_~@\\|&\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\xFF\\u0100-\\u024F\\u0253\\u0254\\u0256\\u0257\\u0259\\u025B\\u0263\\u0268\\u026F\\u0272\\u0289\\u028B\\u02BB\\u0300-\\u036F\\u1E00-\\u1EFF]*\\([a-z\\u0400-\\u04FF0-9!\\*';:=\\+,\\.\\$\\/%#\\[\\]\\-\\u2013_~@\\|&\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\xFF\\u0100-\\u024F\\u0253\\u0254\\u0256\\u0257\\u0259\\u025B\\u0263\\u0268\\u026F\\u0272\\u0289\\u028B\\u02BB\\u0300-\\u036F\\u1E00-\\u1EFF]+\\)[a-z\\u0400-\\u04FF0-9!\\*';:=\\+,\\.\\$\\/%#\\[\\]\\-\\u2013_~@\\|&\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\xFF\\u0100-\\u024F\\u0253\\u0254\\u0256\\u0257\\u0259\\u025B\\u0263\\u0268\\u026F\\u0272\\u0289\\u028B\\u02BB\\u0300-\\u036F\\u1E00-\\u1EFF]*))\\)[a-z\\u0400-\\u04FF0-9!\\*';:=\\+,\\.\\$\\/%#\\[\\]\\-\\u2013_~@\\|&\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\xFF\\u0100-\\u024F\\u0253\\u0254\\u0256\\u0257\\u0259\\u025B\\u0263\\u0268\\u026F\\u0272\\u0289\\u028B\\u02BB\\u0300-\\u036F\\u1E00-\\u1EFF]*)*[\\+\\-a-z\\u0400-\\u04FF0-9=_#\\/\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\xFF\\u0100-\\u024F\\u0253\\u0254\\u0256\\u0257\\u0259\\u025B\\u0263\\u0268\\u026F\\u0272\\u0289\\u028B\\u02BB\\u0300-\\u036F\\u1E00-\\u1EFF]|(?:\\((?:[a-z\\u0400-\\u04FF0-9!\\*';:=\\+,\\.\\$\\/%#\\[\\]\\-\\u2013_~@\\|&\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\xFF\\u0100-\\u024F\\u0253\\u0254\\u0256\\u0257\\u0259\\u025B\\u0263\\u0268\\u026F\\u0272\\u0289\\u028B\\u02BB\\u0300-\\u036F\\u1E00-\\u1EFF]+|(?:[a-z\\u0400-\\u04FF0-9!\\*';:=\\+,\\.\\$\\/%#\\[\\]\\-\\u2013_~@\\|&\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\xFF\\u0100-\\u024F\\u0253\\u0254\\u0256\\u0257\\u0259\\u025B\\u0263\\u0268\\u026F\\u0272\\u0289\\u028B\\u02BB\\u0300-\\u036F\\u1E00-\\u1EFF]*\\([a-z\\u0400-\\u04FF0-9!\\*';:=\\+,\\.\\$\\/%#\\[\\]\\-\\u2013_~@\\|&\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\xFF\\u0100-\\u024F\\u0253\\u0254\\u0256\\u0257\\u0259\\u025B\\u0263\\u0268\\u026F\\u0272\\u0289\\u028B\\u02BB\\u0300-\\u036F\\u1E00-\\u1EFF]+\\)[a-z\\u0400-\\u04FF0-9!\\*';:=\\+,\\.\\$\\/%#\\[\\]\\-\\u2013_~@\\|&\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\xFF\\u0100-\\u024F\\u0253\\u0254\\u0256\\u0257\\u0259\\u025B\\u0263\\u0268\\u026F\\u0272\\u0289\\u028B\\u02BB\\u0300-\\u036F\\u1E00-\\u1EFF]*))\\)))|(?:@[a-z\\u0400-\\u04FF0-9!\\*';:=\\+,\\.\\$\\/%#\\[\\]\\-\\u2013_~@\\|&\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\xFF\\u0100-\\u024F\\u0253\\u0254\\u0256\\u0257\\u0259\\u025B\\u0263\\u0268\\u026F\\u0272\\u0289\\u028B\\u02BB\\u0300-\\u036F\\u1E00-\\u1EFF]+\\/))*)?(\\?[a-z0-9!?\\*'@\\(\\);:&=\\+\\$\\/%#\\[\\]\\-_\\.,~|]*[a-z0-9\\-_&=#\\/])?))",Zn="gi",Ot={source:Yn,flags:Zn};var Jn={PHANPY_CLIENT_NAME:"Phanpy",PHANPY_WEBSITE:"https://phanpy.social",PHANPY_LINGVA_INSTANCES:"lingva.phanpy.social lingva.lunar.icu lingva.garudalinux.org translate.plausibility.cloud",PHANPY_PRIVACY_POLICY_URL:"https://github.com/cheeaun/phanpy/blob/main/PRIVACY.MD",VITE_APP_ENV:"production",BASE_URL:"./",MODE:"production",DEV:!1,PROD:!0,SSR:!1};const{PHANPY_IMG_ALT_API_URL:vt,PHANPY_GIPHY_API_KEY:Xn}=Jn,Qn=Ct.reduce((s,e)=>{const[n,o,r]=e;return s[n]={common:o,native:r},s},{}),Jt={"5 minutes":5*60,"30 minutes":30*60,"1 hour":60*60,"6 hours":6*60*60,"12 hours":12*60*60,"1 day":24*60*60,"3 days":3*24*60*60,"7 days":7*24*60*60},ei=Object.values(Jt),Ht=24*60*60,Nt=s=>{if(!s)return Ht;const e=(new Date(s).getTime()-Date.now())/1e3;return ei.find(n=>n>=e)||Ht},ve=document.createElement("ul");ve.role="listbox";ve.className="text-expander-menu";const ti=16,ni=new IntersectionObserver(s=>{s.forEach(e=>{if(e.isIntersecting){const{left:n,width:o}=e.boundingClientRect,{innerWidth:r}=window;n+o>r&&(ve.style.left=r-o-ti+"px")}})});ni.observe(ve);const ye=bn([new Intl.DateTimeFormat().resolvedOptions().locale,...navigator.languages],Ct.map(s=>s[0]),"en"),Xt=new RegExp(Ot.source,Ot.flags),ii=/(^|[^\/\w])@(([a-z0-9_]+)@[a-z0-9\.\-]+[a-z0-9]+)/gi,si="$2xxxxxxxxxxxxxxxxxxxxxxx";function ai(s){return s.replace(Xt,si).replace(ii,"$1@$3")}const oi=/[a-z0-9_]+([a-z0-9_.-]+[a-z0-9_]+)?/i,ri=new RegExp(`(^|[^=\\/\\w])(@${oi.source}(?:@[\\p{L}\\w.-]+[\\w]+)?)`,"uig"),li=new RegExp("(^|[^=\\/\\w])(#[a-z0-9_]+([a-z0-9_.]+[a-z0-9_]+)?)(?![\\/\\w])","ig"),ci="[a-zA-Z0-9_]{2,}",ui=new RegExp(`(^|[^=\\/\\w])(:${ci}:)(?=[^A-Za-z0-9_:]|$)`,"g"),di=new Intl.Segmenter;function hi(s,{maxCharacters:e=1/0}){let n=s.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'");const{composerCharacterCount:o}=re;if(o>e){let r="",p="";const u=di.segment(n);for(const{segment:v,index:g}of u)g"),r+p}return n.replace(Xt,'$2$3').replace(ri,'$1$2').replace(li,'$1$2').replace(ui,'$1$2')}const pi=new Intl.RelativeTimeFormat,Et=100;function Ai({onClose:s,replyToStatus:e,editStatus:n,draftStatus:o,standalone:r,hasOpener:p}){var Mt;const{masto:u,instance:v}=Ft(),[g,R]=H("default"),C=W((o==null?void 0:o.uid)||dn()),k=An(),A=k.info,Z=Yt(),{statuses:{maxCharacters:D,maxMediaAttachments:I,charactersReservedPerUrl:se}={},mediaAttachments:{supportedMimeTypes:J=[],imageSizeLimit:c,imageMatrixLimit:h,videoSizeLimit:m,videoMatrixLimit:f,videoFrameRateLimit:E}={},polls:{maxOptions:y,maxCharactersPerOption:B,maxExpiration:q,minExpiration:le}={}}=Z||{},S=W(),X=W(),[V,U]=H("public"),[j,te]=H(!1),[O,ie]=H(ze.session.get("currentLanguage")||ye),ae=W(O),[M,z]=H([]),[$,L]=H(null),N=ze.account.get("preferences")||{},Q=()=>{S.current&&S.current.dispatchEvent(new Event("input"))},oe=()=>{setTimeout(()=>{var a,l,b;S.current&&((l=(a=o==null?void 0:o.status)==null?void 0:a.startsWith)!=null&&l.call(a,` +`)&&(S.current.selectionStart=0,S.current.selectionEnd=0),(b=S.current)==null||b.focus())},300)};ee(()=>{if(e){const{spoilerText:a,visibility:l,language:b,sensitive:d}=e;a&&X.current&&(X.current.value=a);const x=[...new Set([e.account.acct,...e.mentions.map(w=>w.acct)])].filter(w=>w!==A.acct);x.length>0&&(S.current.value=`${x.map(w=>`@${w}`).join(" ")} `,Q()),oe(),U(l==="public"&&N["posting:default:visibility"]?N["posting:default:visibility"]:l),ie(b||N.postingDefaultLanguage||ye),te(d&&!!a)}else if(n){const{visibility:a,language:l,sensitive:b,poll:d,mediaAttachments:_}=n,x=!!(d!=null&&d.options)&&{...d,options:d.options.map(w=>(w==null?void 0:w.title)||w),expiresIn:(d==null?void 0:d.expiresIn)||Nt(d.expiresAt)};R("loading"),(async()=>{try{const w=await u.v1.statuses.$select(n.id).source.fetch(),{text:F,spoilerText:P}=w;S.current.value=F,S.current.dataset.source=F,Q(),oe(),X.current.value=P,U(a),ie(l||presf.postingDefaultLanguage||ye),te(b),x&&L(x),z(_),R("default")}catch(w){alert((w==null?void 0:w.reason)||w),R("error")}})()}else oe(),N["posting:default:visibility"]&&U(N["posting:default:visibility"]),N["posting:default:language"]&&ie(N["posting:default:language"]),N["posting:default:sensitive"]&&te(N["posting:default:sensitive"]);if(o){const{status:a,spoilerText:l,visibility:b,language:d,sensitive:_,poll:x,mediaAttachments:w}=o,F=!!(x!=null&&x.options)&&{...x,options:x.options.map(P=>(P==null?void 0:P.title)||P),expiresIn:(x==null?void 0:x.expiresIn)||Nt(x.expiresAt)};S.current.value=a,Q(),oe(),l&&(X.current.value=l),b&&U(b),ie(d||N.postingDefaultLanguage||ye),_!==null&&te(_),F&&L(F),w&&z(w)}},[o,n,e]);const ue=W(),ge="You have unsaved changes. Discard this post?",be=()=>{const{value:a,dataset:l}=S.current;if(g==="loading")return!1;const b=(a||"").trim().replace(new RegExp("^\\p{White_Space}+|\\p{White_Space}+$","gu"),""),d=M.length>0;if(!b&&!d||M.length>0&&M.every(P=>P.id))return!0;const x=(e==null?void 0:e.account.id)===A.id,w=e&&a.trim()===`@${e.account.acct}`;return!!(!x&&w||a===(l==null?void 0:l.source))},Ke=()=>be()?!0:confirm(ge);ee(()=>{const a=l=>{be()||(l.preventDefault(),l.returnValue=ge)};return window.addEventListener("beforeunload",a,{capture:!0}),()=>window.removeEventListener("beforeunload",a,{capture:!0})},[]);const tn=()=>{const{value:a}=S.current,{value:l}=X.current;return Pt(ai(a))+Pt(l)},lt=()=>{const a=tn();re.composerCharacterCount=a};ee(lt,[]);const Lt=window.CloseWatcher,ct=W(!1);je("esc",()=>{ct.current=!0},{enabled:!Lt,enableOnFormTags:!0}),je("esc",()=>{!r&&ct.current&&Ke()&&s(),ct.current=!1},{enabled:!Lt,enableOnFormTags:!0,keyup:!0,ignoreEventWhen:a=>{const l=document.querySelectorAll("#modal-container > *"),b=!!l,d=l.length===1&&l[0].querySelector("#compose-container");return b&&!d}}),yn(()=>{!r&&Ke()&&s()},[r,Ke,s]);const At=W({}),St=()=>`${Sn()}#${C.current}`,ut=()=>{if(n||re.composerState.minimized)return;const a=St(),l={key:a,replyTo:e?{id:e.id,account:{id:e.account.id,username:e.account.username,acct:e.account.acct}}:null,draftStatus:{uid:C.current,status:S.current.value,spoilerText:X.current.value,visibility:V,language:O,sensitive:j,poll:$,mediaAttachments:M}};!hn(l,At.current)&&!be()&&(Tt.drafts.set(a,{...l,state:"unsaved",updatedAt:Date.now()}).then(()=>{}).catch(b=>{}),At.current=structuredClone(l))};xn(ut,5e3),ee(()=>(ut(),()=>{Tt.drafts.del(St())}),[]),ee(()=>{const a=b=>{const{items:d}=b.clipboardData||b.dataTransfer,_=[];for(let x=0;x0&&M.length>=I){alert(`You can only attach up to ${I} files.`);return}if(_.length>0){b.preventDefault(),b.stopPropagation();const x=I-M.length,w=_.slice(0,x);if(w.length<=0){alert(`You can only attach up to ${I} files.`);return}const F=w.map(P=>({file:P,type:P.type,size:P.size,url:URL.createObjectURL(P),id:null,description:null}));z([...M,...F])}};window.addEventListener("paste",a);const l=b=>{b.dataTransfer.items.length>0&&(b.preventDefault(),b.stopPropagation())};return window.addEventListener("dragover",l),window.addEventListener("drop",a),()=>{window.removeEventListener("paste",a),window.removeEventListener("dragover",l),window.removeEventListener("drop",a)}},[M]);const[Ve,dt]=H(!1),[Ge,Ye]=H(!1),[nn,ht]=H(!1),[he,sn]=H(null),[an,on]=Pe(()=>{const a=[],l=[],{contentTranslationHideLanguages:b=[]}=re.settings;return Ct.forEach(d=>{const[_]=d;_===O||_===ae.current||_===ye||b.includes(_)||he!=null&&he.length&&he.includes(_)?a.push(d):l.push(d)}),a.sort(([d,_],[x,w])=>d===O?-1:x===O?1:_.localeCompare(w)),l.sort(([d,_],[x,w])=>_.localeCompare(w)),[a,l]},[O,he]),It=Pe(()=>!!(e!=null&&e.createdAt)&&Math.floor((Date.now()-new Date(e.createdAt))/(1e3*60*60*24*30)),[e]),rn=()=>{ut(),re.composerState.minimized=!0};return t("div",{id:"compose-container-outer",children:[t("div",{id:"compose-container",class:r?"standalone":"",children:[t("div",{class:"compose-top",children:[(A==null?void 0:A.avatarStatic)&&t(Vt,{account:A,accountInstance:k.instanceURL,hideDisplayName:!0,useAvatarStatic:!0}),r?p&&t("button",{type:"button",class:"light pop-button",disabled:g==="loading",onClick:()=>{var a;if(!window.opener){alert("Looks like you closed the parent window.");return}if(window.opener.__STATES__.showCompose){if((a=window.opener.__STATES__.composerState)!=null&&a.publishing){alert("Looks like you already have a compose field open in the parent window and currently publishing. Please wait for it to be done and try again later.");return}if(!confirm("Looks like you already have a compose field open in the parent window. Popping in this window will discard the changes you made in the parent window. Continue?"))return}s({fn:()=>{const l={editStatus:n,replyToStatus:e,draftStatus:{uid:C.current,status:S.current.value,spoilerText:X.current.value,visibility:V,language:O,sensitive:j,poll:$,mediaAttachments:M}};window.opener.__COMPOSE__=l,window.opener.__STATES__.showCompose?(window.opener.__STATES__.showCompose=!1,setTimeout(()=>{window.opener.__STATES__.showCompose=!0},10)):window.opener.__STATES__.showCompose=!0,window.opener.__STATES__.composerState.minimized&&(window.opener.__STATES__.composerState.minimized=!1)}})},children:t(K,{icon:"popin",alt:"Pop in"})}):t("span",{class:"compose-controls",children:[t("button",{type:"button",class:"plain4 pop-button",disabled:g==="loading",onClick:()=>{wn({editStatus:n,replyToStatus:e,draftStatus:{uid:C.current,status:S.current.value,spoilerText:X.current.value,visibility:V,language:O,sensitive:j,poll:$,mediaAttachments:M}})&&s()},children:t(K,{icon:"popout",alt:"Pop out"})}),t("button",{type:"button",class:"plain4 min-button",onClick:rn,children:t(K,{icon:"minimize",alt:"Minimize"})})," ",t("button",{type:"button",class:"light close-button",disabled:g==="loading",onClick:()=>{Ke()&&s()},children:t(K,{icon:"x"})})]})]}),!!e&&t("div",{class:"status-preview",children:[t(_t,{status:e,size:"s",previewMode:!0}),t("div",{class:"status-preview-legend reply-to",children:["Replying to @",e.account.acct||e.account.username,"’s post",It>=3&&t(Ce,{children:[" ","(",t("strong",{children:pi.format(-It,"month")}),")"]})]})]}),!!n&&t("div",{class:"status-preview",children:[t(_t,{status:n,size:"s",previewMode:!0}),t("div",{class:"status-preview-legend",children:"Editing source post"})]}),t("form",{ref:ue,class:`form-visibility-${V}`,style:{pointerEvents:g==="loading"?"none":"auto",opacity:g==="loading"?.5:1},onKeyDown:a=>{a.key==="Enter"&&(a.ctrlKey||a.metaKey)&&ue.current.dispatchEvent(new Event("submit",{cancelable:!0}))},onSubmit:a=>{a.preventDefault();const l=new FormData(a.target),b=Object.fromEntries(l.entries());let{status:d,visibility:_,sensitive:x,spoilerText:w}=b;if(x=x==="on",$){if($.options.length<2){alert("Poll must have at least 2 options");return}if($.options.some(F=>F==="")){alert("Some poll choices are empty");return}}M.length>0&&M.some(P=>{var ne,_e;return!((_e=(ne=P.description)==null?void 0:ne.trim)!=null&&_e.call(ne))})&&!confirm("Some media have no descriptions. Continue?")||(w=x&&w||void 0,d=d===""?void 0:d,re.composerState.publishing=!0,R("loading"),(async()=>{try{if(M.length>0){const ne=M.map(pe=>{const{file:Ze,description:ln,id:cn}=pe;if(cn)return pe;{const un=qt({file:Ze,description:ln});return u.v2.media.create(un).then(pt=>(pt.id&&(pe.id=pt.id),pt))}}),_e=await Promise.allSettled(ne);if(_e.some(pe=>{var Ze;return pe.status==="rejected"||!((Ze=pe.value)!=null&&Ze.id)})){re.composerState.publishing=!1,re.composerState.publishingError=!0,R("error"),_e.forEach(pe=>{pe.status==="rejected"&&alert(pe.reason||`Attachment #${i} failed`)});return}}let F={status:d,spoiler_text:w,language:O,sensitive:x,poll:$,media_ids:M.map(ne=>ne.id)};n&&Gt("@mastodon/edit-media-attributes")?F.media_attributes=M.map(ne=>({id:ne.id,description:ne.description})):n||(F.visibility=_,F.in_reply_to_id=(e==null?void 0:e.id)||void 0),F=qt(F);let P;if(n)P=await u.v1.statuses.$select(n.id).update(F),In(P,v,{skipThreading:!0});else try{P=await u.v1.statuses.create(F,{requestInit:{headers:{"Idempotency-Key":C.current}}})}catch{P=await u.v1.statuses.create(F)}re.composerState.minimized=!1,re.composerState.publishing=!1,R("default"),s({type:n?"edit":e?"reply":"post",newStatus:P,instance:v})}catch(F){re.composerState.publishing=!1,re.composerState.publishingError=!0,alert((F==null?void 0:F.reason)||F),R("error")}})())},children:[t("div",{class:"toolbar stretch",children:[t("input",{ref:X,type:"text",name:"spoilerText",placeholder:"Content warning",disabled:g==="loading",class:"spoiler-text-field",lang:O,spellCheck:"true",dir:"auto",style:{opacity:j?1:0,pointerEvents:j?"auto":"none"},onInput:()=>{lt()}}),t("label",{class:`toolbar-button ${j?"highlight":""}`,title:"Content warning or sensitive media",children:[t("input",{name:"sensitive",type:"checkbox",checked:j,disabled:g==="loading",onChange:a=>{var b,d;const l=a.target.checked;te(l),l?(b=X.current)==null||b.focus():(d=S.current)==null||d.focus()}}),t(K,{icon:`eye-${j?"close":"open"}`})]})," ",t("label",{class:`toolbar-button ${V!=="public"&&!j?"show-field":""} ${V!=="public"?"highlight":""}`,title:`Visibility: ${V}`,children:[t(K,{icon:kn[V],alt:V}),t("select",{name:"visibility",value:V,onChange:a=>{U(a.target.value)},disabled:g==="loading"||!!n,children:[t("option",{value:"public",children:["Public ",t(K,{icon:"earth"})]}),t("option",{value:"unlisted",children:"Unlisted"}),t("option",{value:"private",children:"Followers only"}),t("option",{value:"direct",children:"Private mention"})]})]})," "]}),t(fi,{ref:S,placeholder:e?"Post your reply":n?"Edit your post":"What are you doing?",required:(M==null?void 0:M.length)===0,disabled:g==="loading",lang:O,onInput:()=>{lt()},maxCharacters:D,performSearch:a=>{const{type:l,q:b,limit:d}=a;return l==="accounts"?u.v1.accounts.search.list({q:b,limit:d,resolve:!1}):u.v2.search.fetch(a)},onTrigger:a=>{(a==null?void 0:a.name)==="custom-emojis"?Ye({defaultSearchTerm:(a==null?void 0:a.defaultSearchTerm)||null}):(a==null?void 0:a.name)==="mention"?dt({defaultSearchTerm:(a==null?void 0:a.defaultSearchTerm)||null}):(a==null?void 0:a.name)==="auto-detect-language"&&(a!=null&&a.languages)&&sn(a.languages)}}),(M==null?void 0:M.length)>0&&t("div",{class:"media-attachments",children:[M.map((a,l)=>{const{id:b,file:d}=a,_=(d==null?void 0:d.size)+(d==null?void 0:d.type)+(d==null?void 0:d.name);return t(bi,{attachment:a,disabled:g==="loading",lang:O,onDescriptionChange:x=>{z(w=>{const F=[...w];return F[l].description=x,F})},onRemove:()=>{z(x=>x.filter((w,F)=>F!==l))}},b||_||l)}),t("label",{class:"media-sensitive",children:[t("input",{name:"sensitive",type:"checkbox",checked:j,disabled:g==="loading",onChange:a=>{const l=a.target.checked;te(l)}})," ",t("span",{children:"Mark media as sensitive"})," ",t(K,{icon:`eye-${j?"close":"open"}`})]})]}),!!$&&t(yi,{lang:O,maxOptions:y,maxExpiration:q,minExpiration:le,maxCharactersPerOption:B,poll:$,disabled:g==="loading",onInput:a=>{if(a){const l={...a};L(l)}else L(null)}}),t("div",{class:"toolbar wrap",style:{justifyContent:"flex-end"},children:[t("span",{children:[t("label",{class:"toolbar-button",children:[t("input",{type:"file",accept:J.join(","),multiple:M.length=I||!!$,onChange:a=>{const l=a.target.files;if(!l)return;const b=Array.from(l).map(d=>({file:d,type:d.type,size:d.size,url:URL.createObjectURL(d),id:null,description:null}));M.length+b.length>I?alert(`You can only attach up to ${I} files.`):z(d=>d.concat(b)),a.target.value=""}}),t(K,{icon:"attachment"})]}),y==null||y>1&&t(Ce,{children:t("button",{type:"button",class:"toolbar-button",disabled:g==="loading"||!!$||!!M.length,onClick:()=>{L({options:["",""],expiresIn:24*60*60,multiple:!1})},children:t(K,{icon:"poll",alt:"Add poll"})})}),t("button",{type:"button",class:"toolbar-button",disabled:g==="loading",onClick:()=>{Ye(!0)},children:t(K,{icon:"emoji2"})}),!!re.settings.composerGIFPicker&&t("button",{type:"button",class:"toolbar-button gif-picker-button",disabled:g==="loading"||M.length>=I||!!$,onClick:()=>{ht(!0)},children:t("span",{children:"GIF"})})]}),t("div",{class:"spacer"}),g==="loading"?t(rt,{abrupt:!0}):t(vi,{maxCharacters:D,hidden:g==="loading"}),t("label",{class:`toolbar-button ${O!==ae.current||he!=null&&he.length&&!he.includes(O)?"highlight":""}`,children:[t("span",{class:"icon-text",children:(Mt=Qn[O])==null?void 0:Mt.native}),t("select",{name:"language",value:O,onChange:a=>{const{value:l}=a.target;ie(l||ye),ze.session.set("currentLanguage",l||ye)},disabled:g==="loading",children:[an.map(([a,l,b])=>t("option",{value:a,children:[l," (",b,")"]},a)),t("hr",{}),on.map(([a,l,b])=>t("option",{value:a,children:[l," (",b,")"]},a))]})]})," ",t("button",{type:"submit",class:"large",disabled:g==="loading",children:e?"Reply":n?"Update":"Post"})]})]})]}),Ve&&t(Qe,{onClick:a=>{a.target===a.currentTarget&&dt(!1)},children:t(xi,{masto:u,instance:v,onClose:()=>{dt(!1)},defaultSearchTerm:Ve==null?void 0:Ve.defaultSearchTerm,onSelect:a=>{const l=S.current;if(!l)return;const{selectionStart:b,selectionEnd:d}=l,_=l.value,x=_.slice(0,b),w=x?/[\s\t\n\r]$/.test(x)?"":" ":"",F=_.slice(d),P=/^[\s\t\n\r]/.test(F)?"":" ",ne=x+w+"@"+a+P+F;l.value=ne,l.selectionStart=l.selectionEnd=d+1+a.length+P.length,l.focus(),l.dispatchEvent(new Event("input"))}})}),Ge&&t(Qe,{onClick:a=>{a.target===a.currentTarget&&Ye(!1)},children:t(wi,{masto:u,instance:v,onClose:()=>{Ye(!1)},defaultSearchTerm:Ge==null?void 0:Ge.defaultSearchTerm,onSelect:a=>{const l=S.current;if(!l)return;const{selectionStart:b,selectionEnd:d}=l,_=l.value,x=_.slice(0,b),w=x?/[\s\t\n\r]$/.test(x)?"":" ":"",F=_.slice(d),P=/^[\s\t\n\r]/.test(F)?"":" ",ne=x+w+a+P+F;l.value=ne,l.selectionStart=l.selectionEnd=d+a.length+P.length,l.focus(),l.dispatchEvent(new Event("input"))}})}),nn&&t(Qe,{onClick:a=>{a.target===a.currentTarget&&ht(!1)},children:t(Ei,{onClose:()=>ht(!1),onSelect:({url:a,type:l,alt_text:b})=>{if(M.length>=I){alert(`You can only attach up to ${I} files.`);return}(async()=>{var _,x;let d;try{d=xe({text:"Downloading GIF…",duration:-1});const w=await fetch(a,{referrerPolicy:"no-referrer"}).then(ne=>ne.blob()),F=new File([w],l==="video/mp4"?"video.mp4":"image.gif",{type:l}),P=[...M,{file:F,type:l,size:F.size,id:null,description:b||""}];z(P),(_=d==null?void 0:d.hideToast)==null||_.call(d)}catch{(x=d==null?void 0:d.hideToast)==null||x.call(d),xe("Failed to download GIF")}})()}})})]})}function Ut(s){if(!s)return;const{value:e,offsetHeight:n,scrollHeight:o,clientHeight:r}=s;if(np.visibleInPicker),r=new pn(o,{keys:["shortcode"],findAllMatches:!0});return[o,r]}const Qt=Mn(mi,{matchesArg:(s,e)=>s.instance===e.instance,maxAge:30*60*1e3}),gi=s=>{const e=mn(s);return e!=null&&e.length?e.slice(0,2).map(n=>n.lang):null},fi=fn((s,e)=>{var J;const{masto:n,instance:o}=Ft(),[r,p]=H(((J=e.current)==null?void 0:J.value)||""),{maxCharacters:u,performSearch:v=()=>{},onTrigger:g=()=>{},...R}=s,C=W();ee(()=>{Qt(o,n).then(c=>{const[h,m]=c;C.current=m}).catch(c=>{})},[]);const k=W(),A=W("");ee(()=>{let c,h,m;return k.current&&(c=f=>{var le;const{key:E,provide:y,text:B}=f.detail;if(A.current=B,B===""){y(Promise.resolve({matched:!1}));return}if(E===":"){const S=(le=C.current)==null?void 0:le.search(B,{limit:5});let X="";S.forEach(({item:V})=>{const{shortcode:U,url:j}=V;X+=` +
  • + + ${fe(U)} +
  • `}),X+=`
  • More…
  • `,ve.innerHTML=X,y(Promise.resolve({matched:S.length>0,fragment:ve}));return}const q={"@":"accounts","#":"hashtags"}[E];y(new Promise(S=>{v({type:q,q:B,limit:5}).then(V=>{if(B!==A.current)return;const U=V[q]||V;let j="";U.forEach(te=>{var Q;const{name:O,avatarStatic:ie,displayName:ae,username:M,acct:z,emojis:$,history:L}=te,N=En(ae,$);if(z)j+=` +
  • + + + + + ${N||M} +
    @${fe(z)} +
    +
  • + `;else{const oe=(Q=L==null?void 0:L.reduce)==null?void 0:Q.call(L,(ue,ge)=>ue+ +ge.uses,0);j+=` +
  • + #${fe(O)} + ${oe?`${Fn(oe)}`:""} +
  • + `}}),q==="accounts"&&(j+=`
  • More…
  • `),ve.innerHTML=j,S({matched:U.length>0,fragment:ve})})}))},k.current.addEventListener("text-expander-change",c),h=f=>{const{key:E,item:y}=f.detail,{value:B,more:q}=y.dataset;E===":"?(f.detail.value=B?`:${B}:`:"​",q&&(f.detail.continue=!0,setTimeout(()=>{g==null||g({name:"custom-emojis",defaultSearchTerm:q})},300))):E==="@"?(f.detail.value=B?`@${B} `:"​",q&&(f.detail.continue=!0,setTimeout(()=>{g==null||g({name:"mention",defaultSearchTerm:q})},300))):f.detail.value=`${E}${B}`},k.current.addEventListener("text-expander-value",h),m=f=>{const{input:E}=f.detail;if(p(E.value),e.current){const y=new Event("input",{bubbles:!0});e.current.dispatchEvent(y)}},k.current.addEventListener("text-expander-committed",m)),()=>{k.current&&(k.current.removeEventListener("text-expander-change",c),k.current.removeEventListener("text-expander-value",h),k.current.removeEventListener("text-expander-committed",m))}},[]),ee(()=>{const c=e.current;if(!c)return;new ResizeObserver(()=>{if(k.current){const{height:m}=c.getBoundingClientRect();k.current.style.height=m+"px"}}).observe(c)},[]);const Z=W(0),D=W(),I=gn(c=>{var f;if(!D.current)return;if(Z.current>3){D.current.innerHTML="",D.current=null,(f=I==null?void 0:I.cancel)==null||f.call(I);return}let h,m;Z.current<=3&&(h=Date.now()),D.current.innerHTML=hi(c,{maxCharacters:u})+` +`,Z.current<=3&&(m=Date.now()),h&&m&&m-h>50&&Z.current++},500),se=ot(()=>{var f,E;const c=(f=D.current)==null?void 0:f.cloneNode(!0);if(!c)return;c.querySelectorAll("mark").forEach(y=>{y.remove()});const h=(E=c.innerText)==null?void 0:E.trim();if(!h)return;const m=gi(h);m!=null&&m.length&&(g==null||g({name:"auto-detect-language",languages:m}))},2e3);return t("text-expander",{ref:k,keys:"@ # :",class:"compose-field-container",children:[t("textarea",{class:"compose-field",autoCapitalize:"sentences",autoComplete:"on",autoCorrect:"on",spellCheck:"true",dir:"auto",rows:"6",cols:"50",...R,ref:e,name:"status",value:r,onKeyDown:c=>{const{key:h,target:m}=c;if(h==="Enter"&&!(c.ctrlKey||c.metaKey))try{const{value:f,selectionStart:E}=m,B=f.slice(0,E).split(` +`).slice(-1)[0];if(B&&/^\s*(-|\d+\.)\s/.test(B)){const[q,le,S,X,V]=B.match(/^(\s*)(-|\d+\.)(\s+)(.+)?/)||[];if(V){c.preventDefault();const[U]=S.match(/\d+/)||[],j=U?`${+U+1}.`:"-",te=` +${le}${j}${X}`;m.setRangeText(te,E,E);const O=E+te.length;m.setSelectionRange(O,O)}else{const U=E-B.length;m.setRangeText("",U,E)}Ut(m),m.dispatchEvent(new Event("input"))}}catch{}D.current&&(D.current.scrollTop=m.scrollTop)},onInput:c=>{var f;const{target:h}=c,m=h.value.replace(/\u200b/g,"");p(m),Ut(h),(f=s.onInput)==null||f.call(s,c),I(m),se()},style:{width:"100%",height:"4em"},onScroll:c=>{if(D.current){const{scrollTop:h}=c.target;D.current.scrollTop=h}}}),t("div",{ref:D,class:"compose-highlight","aria-hidden":"true"})]})});function vi({maxCharacters:s=500,hidden:e}){const o=vn(re).composerCharacterCount,r=s-o;return e?t("span",{class:"char-counter",hidden:!0}):t("span",{class:"char-counter",title:`${r}/${s}`,style:{"--percentage":o/s*100},children:[t("meter",{class:`${r<=-10?"explode":r<=0?"danger":r<=20?"warning":""}`,value:o,max:s}),t("span",{class:"counter",children:r})]})}function Xe(s){const e=["bytes","KB","MB","GB","TB","PB","EB","ZB","YB"];let n=0;for(;s>=1024;)s/=1024,n++;return`${s.toFixed(0).toLocaleString()} ${e[n]}`}function Wt(s,e,n,o){const r=Math.sqrt(e/s),p=Math.floor(n*r),u=Math.floor(o*r);return{newWidth:p,newHeight:u}}function bi({attachment:s,disabled:e,lang:n,onDescriptionChange:o=()=>{},onRemove:r=()=>{}}){const[p,u]=H("default"),v=Gt("@mastodon/edit-media-attributes"),{type:g,id:R,file:C}=s,k=Pe(()=>C?URL.createObjectURL(C):s.url,[C,s.url]),A=!!(C!=null&&C.size),Z=A?Yt():{},{mediaAttachments:{imageSizeLimit:D,imageMatrixLimit:I,videoSizeLimit:se,videoMatrixLimit:J,videoFrameRateLimit:c}={}}=Z||{},[h,m]=H(()=>A?g.startsWith("image")&&D&&C.size>D?{type:"imageSizeLimit",details:{imageSize:C.size,imageSizeLimit:D}}:g.startsWith("video")&&se&&C.size>se?{type:"videoSizeLimit",details:{videoSize:C.size,videoSizeLimit:se}}:null:null),[f,E]=H({});ee(()=>{!A||!I||(f==null?void 0:f.matrix)>I&&m({type:"imageMatrixLimit",details:{imageMatrix:f==null?void 0:f.matrix,imageMatrixLimit:I,width:f==null?void 0:f.width,height:f==null?void 0:f.height}})},[f,I,A]);const[y,B]=H({});ee(()=>{!A||!J||(y==null?void 0:y.matrix)>J&&m({type:"videoMatrixLimit",details:{videoMatrix:y==null?void 0:y.matrix,videoMatrixLimit:J,width:y==null?void 0:y.width,height:y==null?void 0:y.height}})},[y,J,A]);const[q,le]=H(s.description),[S,X]=g.split("/"),V=ot(o,250);ee(()=>{V(q)},[q,V]);const[U,j]=H(!1),te=W(null);ee(()=>{let z;return U&&te.current&&(z=setTimeout(()=>{te.current.focus()},100)),()=>{clearTimeout(z)}},[U]);const O=t(Ce,{children:R&&!v?t("div",{class:"media-desc",children:[t("span",{class:"tag",children:"Uploaded"}),t("p",{title:q,children:s.description||t("i",{children:"No description"})})]}):t("textarea",{ref:te,value:q||"",lang:n,placeholder:{image:"Image description",video:"Video description",audio:"Audio description"}[S],autoCapitalize:"sentences",autoComplete:"on",autoCorrect:"on",spellCheck:"true",dir:"auto",disabled:e||p==="loading",class:p==="loading"?"loading":"",maxlength:"1500",onInput:z=>{const{value:$}=z.target;le($)}})}),ie=W(null);ee(()=>()=>{var z,$;($=(z=ie.current)==null?void 0:z.hideToast)==null||$.call(z)},[]);const ae=W(null),M=z=>{const{type:$,details:L}=z;switch($){case"imageSizeLimit":{const{imageSize:N,imageSizeLimit:Q}=L;return`File size too large. Uploading might encounter issues. Try reduce the file size from ${Xe(N)} to ${Xe(Q)} or lower.`}case"imageMatrixLimit":{const{imageMatrix:N,imageMatrixLimit:Q,width:oe,height:ue}=L,{newWidth:ge,newHeight:be}=Wt(N,Q,oe,ue);return`Dimension too large. Uploading might encounter issues. Try reduce dimension from ${oe.toLocaleString()}×${ue.toLocaleString()}px to ${ge.toLocaleString()}×${be.toLocaleString()}px.`}case"videoSizeLimit":{const{videoSize:N,videoSizeLimit:Q}=L;return`File size too large. Uploading might encounter issues. Try reduce the file size from ${Xe(N)} to ${Xe(Q)} or lower.`}case"videoMatrixLimit":{const{videoMatrix:N,videoMatrixLimit:Q,width:oe,height:ue}=L,{newWidth:ge,newHeight:be}=Wt(N,Q,oe,ue);return`Dimension too large. Uploading might encounter issues. Try reduce dimension from ${oe.toLocaleString()}×${ue.toLocaleString()}px to ${ge.toLocaleString()}×${be.toLocaleString()}px.`}case"videoFrameRateLimit":return"Frame rate too high. Uploading might encounter issues."}};return t(Ce,{children:[t("div",{class:"media-attachment",children:[t("div",{class:"media-preview",tabIndex:"0",onClick:()=>{j(!0)},children:S==="image"?t("img",{src:k,alt:"",onLoad:z=>{if(!A)return;const{naturalWidth:$,naturalHeight:L}=z.target;E({matrix:$*L,width:$,height:L})}}):S==="video"||S==="gifv"?t("video",{src:k+"#t=0.1",playsinline:!0,muted:!0,disablePictureInPicture:!0,preload:"metadata",onLoadedMetadata:z=>{if(!A)return;const{videoWidth:$,videoHeight:L}=z.target;$&&L&&B({matrix:$*L,width:$,height:L})}}):S==="audio"?t("audio",{src:k,controls:!0}):null}),O,t("div",{class:"media-aside",children:[t("button",{type:"button",class:"plain close-button",disabled:e,onClick:r,children:t(K,{icon:"x"})}),!!h&&t("button",{type:"button",class:"media-error",title:M(h),onClick:()=>{ae.current&&ae.current.hideToast(),ae.current=xe({text:M(h),duration:1e4})},children:t(K,{icon:"alert"})})]})]}),U&&t(Qe,{onClick:z=>{z.target===z.currentTarget&&j(!1)},children:t("div",{id:"media-sheet",class:"sheet sheet-max",children:[t("button",{type:"button",class:"sheet-close",onClick:()=>{j(!1)},children:t(K,{icon:"x"})}),t("header",{children:t("h2",{children:{image:"Edit image description",video:"Edit video description",audio:"Edit audio description"}[S]})}),t("main",{tabIndex:"-1",children:[t("div",{class:"media-preview",children:S==="image"?t("img",{src:k,alt:""}):S==="video"||S==="gifv"?t("video",{src:k,playsinline:!0,controls:!0}):S==="audio"?t("audio",{src:k,controls:!0}):null}),t("div",{class:"media-form",children:[O,t("footer",{children:[S==="image"&&/^(png|jpe?g|gif|webp)$/i.test(X)&&!!re.settings.mediaAltGenerator&&!!vt&&t(Cn,{portal:{target:document.body},containerProps:{style:{zIndex:1001}},align:"center",position:"anchor",overflow:"auto",menuButton:t("button",{type:"button",title:"More",class:"plain",children:t(K,{icon:"more",size:"l",alt:"More"})}),children:[t($t,{disabled:p==="loading",onClick:()=>{u("loading"),ie.current=xe({text:"Generating description. Please wait...",duration:-1}),async function(){var z,$;try{const L=new FormData;L.append("image",C);const N=await fetch(vt,{method:"POST",body:L}).then(Q=>Q.json());if(N.error)throw new Error(N.error);le(N.description)}catch(L){xe(`Failed to generate description${L!=null&&L.message?`: ${L.message}`:""}`)}finally{u("default"),($=(z=ie.current)==null?void 0:z.hideToast)==null||$.call(z)}}()},children:[t(K,{icon:"sparkles2"}),n&&n!=="en"?t("small",{children:["Generate description…",t("br",{}),"(English)"]}):t("span",{children:"Generate description…"})]}),!!n&&n!=="en"&&t($t,{disabled:p==="loading",onClick:()=>{u("loading"),ie.current=xe({text:"Generating description. Please wait...",duration:-1}),async function(){var z,$;try{const L=new FormData;L.append("image",C);const N=`?lang=${n}`,Q=await fetch(vt+N,{method:"POST",body:L}).then(oe=>oe.json());if(Q.error)throw new Error(Q.error);le(Q.description)}catch(L){xe(`Failed to generate description${L!=null&&L.message?`: ${L.message}`:""}`)}finally{u("default"),($=(z=ie.current)==null?void 0:z.hideToast)==null||$.call(z)}}()},children:[t(K,{icon:"sparkles2"}),t("small",{children:["Generate description…",t("br",{}),"(",zn(n),")"," ",t("span",{class:"more-insignificant",children:"— experimental"})]})]})]}),t("button",{type:"button",class:"light block",onClick:()=>{j(!1)},disabled:p==="loading",children:"Done"})]})]})]})]})})]})}function yi({lang:s,poll:e,disabled:n,onInput:o=()=>{},maxOptions:r,maxExpiration:p,minExpiration:u,maxCharactersPerOption:v}){const{options:g,expiresIn:R,multiple:C}=e;return t("div",{class:`poll ${C?"multiple":""}`,children:[t("div",{class:"poll-choices",children:g.map((k,A)=>t("div",{class:"poll-choice",children:[t("input",{required:!0,type:"text",value:k,disabled:n,maxlength:v,placeholder:`Choice ${A+1}`,lang:s,spellCheck:"true",dir:"auto",onInput:Z=>{const{value:D}=Z.target;g[A]=D,o(e)}}),t("button",{type:"button",class:"plain2 poll-button",disabled:n||g.length<=1,onClick:()=>{g.splice(A,1),o(e)},children:t(K,{icon:"x",size:"s"})})]},A))}),t("div",{class:"poll-toolbar",children:[t("button",{type:"button",class:"plain2 poll-button",disabled:n||g.length>=r,onClick:()=>{g.push(""),o(e)},children:"+"})," ",t("label",{class:"multiple-choices",children:[t("input",{type:"checkbox",checked:C,disabled:n,onChange:k=>{const{checked:A}=k.target;e.multiple=A,o(e)}})," ","Multiple choices"]}),t("label",{class:"expires-in",children:["Duration"," ",t("select",{value:R,disabled:n,onChange:k=>{const{value:A}=k.target;e.expiresIn=A,o(e)},children:Object.entries(Jt).filter(([k,A])=>A>=u&&A<=p).map(([k,A])=>t("option",{value:A,children:k},A))})]})]}),t("div",{class:"poll-toolbar",children:t("button",{type:"button",class:"plain remove-poll-button",disabled:n,onClick:()=>{o(null)},children:"Remove poll"})})]})}function fe(s){return s.replace(/[&<>"']/g,function(e){return"&#"+e.charCodeAt(0)+";"})}function qt(s){for(let e in s)(s[e]===null||s[e]===void 0)&&delete s[e];return s}function xi({onClose:s=()=>{},onSelect:e=()=>{},defaultSearchTerm:n}){const{masto:o}=Ft(),[r,p]=H("default"),[u,v]=H([]),[g,R]=H({}),[C,k]=H(0),A=async c=>{if(!(c!=null&&c.length))return;const h=await Ln(c,g);h&&R({...g,...h})},Z=c=>{c&&(p("loading"),(async()=>{try{const h=await o.v1.accounts.search.list({q:c,limit:40,resolve:!1});v(h),A(h),p("default")}catch{p("error")}})())},D=ot(Z,1e3);ee(()=>{Z()},[Z]);const I=W();ee(()=>{I.current&&(I.current.focus(),I.current.value&&(I.current.selectionStart=I.current.value.length,I.current.selectionEnd=I.current.value.length))},[]),ee(()=>{n&&Z(n)},[n]);const se=c=>{const h=c.acct;e(h),s()};je("enter",()=>{const c=u[C];c&&se(c)},{preventDefault:!0,enableOnFormTags:["input"]});const J=W();return je("down",()=>{C{const c=J.current.querySelector(".selected");c&&c.scrollIntoView({behavior:"smooth",block:"center",inline:"center"})},1)},{preventDefault:!0,enableOnFormTags:["input"]}),je("up",()=>{C>0?k(C-1):k(u.length-1),setTimeout(()=>{const c=J.current.querySelector(".selected");c&&c.scrollIntoView({behavior:"smooth",block:"center",inline:"center"})},1)},{preventDefault:!0,enableOnFormTags:["input"]}),t("div",{id:"mention-sheet",class:"sheet",children:[!!s&&t("button",{type:"button",class:"sheet-close",onClick:s,children:t(K,{icon:"x"})}),t("header",{children:t("form",{onSubmit:c=>{var h;c.preventDefault(),(h=D.flush)==null||h.call(D)},children:t("input",{ref:I,required:!0,type:"search",class:"block",placeholder:"Search accounts",onInput:c=>{const{value:h}=c.target;D(h)},autocomplete:"off",autocorrect:"off",autocapitalize:"off",spellCheck:"false",dir:"auto",defaultValue:n||""})})}),t("main",{children:(u==null?void 0:u.length)>0?t("ul",{ref:J,class:`accounts-list ${r==="loading"?"loading":""}`,children:u.map((c,h)=>{const m=g[c.id];return t("li",{class:h===C?"selected":"",children:[t(Vt,{avatarSize:"xxl",account:c,relationship:m,showStats:!0,showActivity:!0}),t("button",{type:"button",class:"plain2",onClick:()=>{se(c)},children:t(K,{icon:"plus",size:"xl"})})]},c.id)})}):r==="loading"?t("div",{class:"ui-state",children:t(rt,{abrupt:!0})}):r==="error"?t("div",{class:"ui-state",children:t("p",{children:"Error loading accounts"})}):null})]})}function wi({masto:s,instance:e,onClose:n=()=>{},onSelect:o=()=>{},defaultSearchTerm:r}){const[p,u]=H("default"),v=W([]),[g,R]=H([]),C=Pe(()=>ze.account.get("recentlyUsedCustomEmojis")||[]),k=W();ee(()=>{u("loading"),(async()=>{try{const[h,m]=await Qt(e,s);k.current=m,R(h),u("default")}catch{u("error")}})()},[]);const A=Pe(()=>{const h={"--recent--":C.filter(f=>g.find(E=>E.shortcode===f.shortcode))},m=[];return g.forEach(f=>{var E,y;if((y=(E=v.current)==null?void 0:E.push)==null||y.call(E,f),!f.category){m.push(f);return}h[f.category]||(h[f.category]=[]),h[f.category].push(f)}),m.length&&(h["--others--"]=m),h},[g]),Z=W(),[D,I]=H(null),se=Bt(h=>{var f,E,y;const{value:m}=h.target;if(m){const B=(f=k.current)==null?void 0:f.search(m,{limit:Et});I(B.map(q=>q.item)),(y=(E=Z.current)==null?void 0:E.scrollTo)==null||y.call(E,0,0)}else I(null)},[g]);ee(()=>{r&&(g!=null&&g.length)&&se({target:{value:r}})},[r,se,g]);const J=Bt(h=>{o==null||o(h),n==null||n(),queueMicrotask(()=>{let m=ze.account.get("recentlyUsedCustomEmojis")||[];const f=m.findIndex(E=>E.shortcode===h.shortcode);f!==-1?(m.splice(f,1),m.unshift(h)):(m.unshift(h),m=m.filter(E=>{var y,B;return(B=(y=v.current)==null?void 0:y.find)==null?void 0:B.call(y,q=>q.shortcode===E.shortcode)}),m=m.slice(0,10)),ze.account.set("recentlyUsedCustomEmojis",m)})},[o]),c=W();return ee(()=>{c.current&&(c.current.focus(),c.current.value&&(c.current.selectionStart=c.current.value.length,c.current.selectionEnd=c.current.value.length))},[]),t("div",{id:"custom-emojis-sheet",class:"sheet",children:[!!n&&t("button",{type:"button",class:"sheet-close",onClick:n,children:t(K,{icon:"x"})}),t("header",{children:[t("div",{children:[t("b",{children:"Custom emojis"})," ",p==="loading"?t(rt,{}):t("small",{class:"insignificant",children:[" • ",e]})]}),t("form",{onSubmit:h=>{h.preventDefault();const m=D[0];m&&J(`:${m.shortcode}:`)},children:t("input",{ref:c,type:"search",placeholder:"Search emoji",onInput:se,autocomplete:"off",autocorrect:"off",autocapitalize:"off",spellCheck:"false",dir:"auto",defaultValue:r||""})})]}),t("main",{ref:Z,children:D!==null?t("ul",{class:"custom-emojis-matches custom-emojis-list",children:D.map(h=>t("li",{class:"custom-emojis-match",children:t(en,{emoji:h,onClick:()=>{J(`:${h.shortcode}:`)},showCode:!0})},h.shortcode))}):t("div",{class:"custom-emojis-list",children:[p==="error"&&t("div",{class:"ui-state",children:t("p",{children:"Error loading custom emojis"})}),p==="default"&&Object.entries(A).map(([h,m])=>!!(m!=null&&m.length)&&t(Ce,{children:[t("div",{class:"section-header",children:{"--recent--":"Recently used","--others--":"Others"}[h]||h}),t(ki,{emojis:m,onSelect:J})]}))]})})]})}const ki=Kt(({emojis:s,onSelect:e})=>{const[n,o]=H(Et),r=s.length>n;return t("section",{children:[s.slice(0,n).map(p=>t(en,{emoji:p,onClick:()=>{e(`:${p.shortcode}:`)}},p.shortcode)),r&&t("button",{type:"button",class:"plain small",onClick:()=>o(n+Et),children:[(s.length-n).toLocaleString()," more…"]})]})}),en=Kt(({emoji:s,onClick:e,showCode:n})=>{const o=r=>{const u=r.currentTarget.closest("main");if(u){const v=u.getBoundingClientRect(),g=r.currentTarget.getBoundingClientRect(),R=r.currentTarget.classList;g.leftv.right-88?(R.add("edge-right"),R.remove("edge-left")):R.remove("edge-left","edge-right")}};return t("button",{type:"button",className:"plain4",onClick:e,"data-title":n?void 0:s.shortcode,onPointerEnter:o,onFocus:o,children:[t("picture",{children:[!!s.staticUrl&&t("source",{srcSet:s.staticUrl,media:"(prefers-reduced-motion: reduce)"}),t("img",{className:"shortcode-emoji",src:s.url||s.staticUrl,alt:s.shortcode,width:"24",height:"24",loading:"lazy",decoding:"async"})]}),n&&t(Ce,{children:[" ",t("code",{children:s.shortcode})]})]})}),bt=20;function Ei({onClose:s=()=>{},onSelect:e=()=>{}}){var A,Z,D,I,se,J;const[n,o]=H("default"),[r,p]=H([]),u=W(null),v=W(null),g=W(0),R=W(null);function C({offset:c}){var h,m,f;(h=v.current)!=null&&h.value&&(o("loading"),(f=(m=R.current)==null?void 0:m.scrollTo)==null||f.call(m,{top:0,left:0,behavior:"smooth"}),(async()=>{var E;try{const y={api_key:Xn,q:v.current.value,rating:"g",limit:bt,bundle:"messaging_non_clips",offset:c},B=await fetch("https://api.giphy.com/v1/gifs/search?"+new URLSearchParams(y),{referrerPolicy:"no-referrer"}).then(q=>q.json());g.current=((E=B.pagination)==null?void 0:E.offset)||0,p(B),o("results")}catch{o("error")}})())}ee(()=>{var c;(c=v.current)==null||c.focus()},[]);const k=ot(()=>{C({offset:0})},1e3);return t("div",{id:"gif-picker-sheet",class:"sheet",children:[!!s&&t("button",{type:"button",class:"sheet-close",onClick:s,children:t(K,{icon:"x"})}),t("header",{children:t("form",{ref:u,onSubmit:c=>{c.preventDefault(),C({offset:0})},children:[t("input",{ref:v,type:"search",name:"q",placeholder:"Search GIFs",required:!0,autocomplete:"off",autocorrect:"off",autocapitalize:"off",spellCheck:"false",dir:"auto",onInput:k}),t("input",{type:"image",class:"powered-button",src:Gn,width:"86",height:"30"})]})}),t("main",{ref:R,class:n==="loading"?"loading":"",children:[n==="default"&&t("div",{class:"ui-state",children:t("p",{class:"insignificant",children:"Type to search GIFs"})}),n==="loading"&&!((A=r==null?void 0:r.data)!=null&&A.length)&&t("div",{class:"ui-state",children:t(rt,{abrupt:!0})}),((Z=r==null?void 0:r.data)==null?void 0:Z.length)>0?t(Ce,{children:[t("ul",{children:r.data.map(c=>{const{id:h,images:m,title:f,alt_text:E}=c,{fixed_height_small:y,fixed_height_downsampled:B,fixed_height:q,original:le}=m,S=y!=null&&y.url?y:B!=null&&B.url?B:q;let{url:X,webp:V,width:U,height:j}=S;+j>100&&(U=U/j*100,j=100);const te=new URL(X),O=te.origin+te.pathname;let ie;if(V){const ae=new URL(V);ie=ae.origin+ae.pathname}return t("li",{children:t("button",{type:"button",onClick:()=>{const{mp4:ae,url:M}=le,z=ae||M,$=new URL(z),L=$.origin+$.pathname;s(),e({url:L,type:ae?"video/mp4":"image/gif",alt_text:E||f})},children:t("figure",{style:{"--figure-width":U+"px"},children:[t("picture",{children:[ie&&t("source",{srcset:ie,type:"image/webp"}),t("img",{src:O,width:U,height:j,loading:"lazy",decoding:"async",alt:E,referrerpolicy:"no-referrer",onLoad:ae=>{ae.target.style.backgroundColor="transparent"}})]}),t("figcaption",{children:E||f})]})})},h)})}),t("p",{class:"pagination",children:[((D=r.pagination)==null?void 0:D.offset)>0&&t("button",{type:"button",class:"light small",disabled:n==="loading",onClick:()=>{var c;C({offset:((c=r.pagination)==null?void 0:c.offset)-bt})},children:[t(K,{icon:"chevron-left"}),t("span",{children:"Previous"})]}),t("span",{}),((I=r.pagination)==null?void 0:I.offset)+((se=r.pagination)==null?void 0:se.count)<((J=r.pagination)==null?void 0:J.total_count)&&t("button",{type:"button",class:"light small",disabled:n==="loading",onClick:()=>{var c;C({offset:((c=r.pagination)==null?void 0:c.offset)+bt})},children:[t("span",{children:"Next"})," ",t(K,{icon:"chevron-right"})]})]})]}):n==="results"&&t("div",{class:"ui-state",children:t("p",{children:"No results"})}),n==="error"&&t("div",{class:"ui-state",children:t("p",{children:"Error loading GIFs"})})]})]})}export{Ai as default}; +//# sourceMappingURL=compose-W5mt71Ut.js.map diff --git a/assets/compose-W5mt71Ut.js.map b/assets/compose-W5mt71Ut.js.map new file mode 100644 index 0000000..4b3eb2c --- /dev/null +++ b/assets/compose-W5mt71Ut.js.map @@ -0,0 +1 @@ +{"version":3,"file":"compose-W5mt71Ut.js","sources":["../../node_modules/@github/combobox-nav/dist/index.js","../../node_modules/@github/text-expander-element/dist/index.js","../../node_modules/ansi-regex/index.js","../../node_modules/strip-ansi/index.js","../../node_modules/string-length/index.js","../../src/assets/powered-by-giphy.svg","../../src/components/compose.jsx"],"sourcesContent":["export default class Combobox {\n constructor(input, list, { tabInsertsSuggestions, defaultFirstOption } = {}) {\n this.input = input;\n this.list = list;\n this.tabInsertsSuggestions = tabInsertsSuggestions !== null && tabInsertsSuggestions !== void 0 ? tabInsertsSuggestions : true;\n this.defaultFirstOption = defaultFirstOption !== null && defaultFirstOption !== void 0 ? defaultFirstOption : false;\n this.isComposing = false;\n if (!list.id) {\n list.id = `combobox-${Math.random().toString().slice(2, 6)}`;\n }\n this.ctrlBindings = !!navigator.userAgent.match(/Macintosh/);\n this.keyboardEventHandler = event => keyboardBindings(event, this);\n this.compositionEventHandler = event => trackComposition(event, this);\n this.inputHandler = this.clearSelection.bind(this);\n input.setAttribute('role', 'combobox');\n input.setAttribute('aria-controls', list.id);\n input.setAttribute('aria-expanded', 'false');\n input.setAttribute('aria-autocomplete', 'list');\n input.setAttribute('aria-haspopup', 'listbox');\n }\n destroy() {\n this.clearSelection();\n this.stop();\n this.input.removeAttribute('role');\n this.input.removeAttribute('aria-controls');\n this.input.removeAttribute('aria-expanded');\n this.input.removeAttribute('aria-autocomplete');\n this.input.removeAttribute('aria-haspopup');\n }\n start() {\n this.input.setAttribute('aria-expanded', 'true');\n this.input.addEventListener('compositionstart', this.compositionEventHandler);\n this.input.addEventListener('compositionend', this.compositionEventHandler);\n this.input.addEventListener('input', this.inputHandler);\n this.input.addEventListener('keydown', this.keyboardEventHandler);\n this.list.addEventListener('click', commitWithElement);\n this.indicateDefaultOption();\n }\n stop() {\n this.clearSelection();\n this.input.setAttribute('aria-expanded', 'false');\n this.input.removeEventListener('compositionstart', this.compositionEventHandler);\n this.input.removeEventListener('compositionend', this.compositionEventHandler);\n this.input.removeEventListener('input', this.inputHandler);\n this.input.removeEventListener('keydown', this.keyboardEventHandler);\n this.list.removeEventListener('click', commitWithElement);\n }\n indicateDefaultOption() {\n var _a;\n if (this.defaultFirstOption) {\n (_a = Array.from(this.list.querySelectorAll('[role=\"option\"]:not([aria-disabled=\"true\"])'))\n .filter(visible)[0]) === null || _a === void 0 ? void 0 : _a.setAttribute('data-combobox-option-default', 'true');\n }\n }\n navigate(indexDiff = 1) {\n const focusEl = Array.from(this.list.querySelectorAll('[aria-selected=\"true\"]')).filter(visible)[0];\n const els = Array.from(this.list.querySelectorAll('[role=\"option\"]')).filter(visible);\n const focusIndex = els.indexOf(focusEl);\n if ((focusIndex === els.length - 1 && indexDiff === 1) || (focusIndex === 0 && indexDiff === -1)) {\n this.clearSelection();\n this.input.focus();\n return;\n }\n let indexOfItem = indexDiff === 1 ? 0 : els.length - 1;\n if (focusEl && focusIndex >= 0) {\n const newIndex = focusIndex + indexDiff;\n if (newIndex >= 0 && newIndex < els.length)\n indexOfItem = newIndex;\n }\n const target = els[indexOfItem];\n if (!target)\n return;\n for (const el of els) {\n el.removeAttribute('data-combobox-option-default');\n if (target === el) {\n this.input.setAttribute('aria-activedescendant', target.id);\n target.setAttribute('aria-selected', 'true');\n scrollTo(this.list, target);\n }\n else {\n el.removeAttribute('aria-selected');\n }\n }\n }\n clearSelection() {\n this.input.removeAttribute('aria-activedescendant');\n for (const el of this.list.querySelectorAll('[aria-selected=\"true\"]')) {\n el.removeAttribute('aria-selected');\n }\n this.indicateDefaultOption();\n }\n}\nfunction keyboardBindings(event, combobox) {\n if (event.shiftKey || event.metaKey || event.altKey)\n return;\n if (!combobox.ctrlBindings && event.ctrlKey)\n return;\n if (combobox.isComposing)\n return;\n switch (event.key) {\n case 'Enter':\n if (commit(combobox.input, combobox.list)) {\n event.preventDefault();\n }\n break;\n case 'Tab':\n if (combobox.tabInsertsSuggestions && commit(combobox.input, combobox.list)) {\n event.preventDefault();\n }\n break;\n case 'Escape':\n combobox.clearSelection();\n break;\n case 'ArrowDown':\n combobox.navigate(1);\n event.preventDefault();\n break;\n case 'ArrowUp':\n combobox.navigate(-1);\n event.preventDefault();\n break;\n case 'n':\n if (combobox.ctrlBindings && event.ctrlKey) {\n combobox.navigate(1);\n event.preventDefault();\n }\n break;\n case 'p':\n if (combobox.ctrlBindings && event.ctrlKey) {\n combobox.navigate(-1);\n event.preventDefault();\n }\n break;\n default:\n if (event.ctrlKey)\n break;\n combobox.clearSelection();\n }\n}\nfunction commitWithElement(event) {\n if (!(event.target instanceof Element))\n return;\n const target = event.target.closest('[role=\"option\"]');\n if (!target)\n return;\n if (target.getAttribute('aria-disabled') === 'true')\n return;\n fireCommitEvent(target);\n}\nfunction commit(input, list) {\n const target = list.querySelector('[aria-selected=\"true\"], [data-combobox-option-default=\"true\"]');\n if (!target)\n return false;\n if (target.getAttribute('aria-disabled') === 'true')\n return true;\n target.click();\n return true;\n}\nfunction fireCommitEvent(target) {\n target.dispatchEvent(new CustomEvent('combobox-commit', { bubbles: true }));\n}\nfunction visible(el) {\n return (!el.hidden &&\n !(el instanceof HTMLInputElement && el.type === 'hidden') &&\n (el.offsetWidth > 0 || el.offsetHeight > 0));\n}\nfunction trackComposition(event, combobox) {\n combobox.isComposing = event.type === 'compositionstart';\n const list = document.getElementById(combobox.input.getAttribute('aria-controls') || '');\n if (!list)\n return;\n combobox.clearSelection();\n}\nfunction scrollTo(container, target) {\n if (!inViewport(container, target)) {\n container.scrollTop = target.offsetTop;\n }\n}\nfunction inViewport(container, element) {\n const scrollTop = container.scrollTop;\n const containerBottom = scrollTop + container.clientHeight;\n const top = element.offsetTop;\n const bottom = top + element.clientHeight;\n return top >= scrollTop && bottom <= containerBottom;\n}\n","import Combobox from '@github/combobox-nav';\n\nconst boundary = /\\s|\\(|\\[/;\nfunction query(text, key, cursor, { multiWord, lookBackIndex, lastMatchPosition } = {\n multiWord: false,\n lookBackIndex: 0,\n lastMatchPosition: null\n}) {\n let keyIndex = text.lastIndexOf(key, cursor - 1);\n if (keyIndex === -1)\n return;\n if (keyIndex < lookBackIndex)\n return;\n if (multiWord) {\n if (lastMatchPosition != null) {\n if (lastMatchPosition === keyIndex)\n return;\n keyIndex = lastMatchPosition - key.length;\n }\n const charAfterKey = text[keyIndex + 1];\n if (charAfterKey === ' ' && cursor >= keyIndex + key.length + 1)\n return;\n const newLineIndex = text.lastIndexOf('\\n', cursor - 1);\n if (newLineIndex > keyIndex)\n return;\n const dotIndex = text.lastIndexOf('.', cursor - 1);\n if (dotIndex > keyIndex)\n return;\n }\n else {\n const spaceIndex = text.lastIndexOf(' ', cursor - 1);\n if (spaceIndex > keyIndex)\n return;\n }\n const pre = text[keyIndex - 1];\n if (pre && !boundary.test(pre))\n return;\n const queryString = text.substring(keyIndex + key.length, cursor);\n return {\n text: queryString,\n position: keyIndex + key.length\n };\n}\n\n/**\n * A custom element is implemented as a class which extends HTMLElement (in the\n * case of autonomous elements) or the interface you want to customize (in the\n * case of customized built-in elements).\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_custom_elements#custom_element_lifecycle_callbacks\n */\nclass CustomHTMLElement extends HTMLElement {\n}\n\nclass InputStyleCloneUpdateEvent extends Event {\n constructor() {\n super(\"update\");\n }\n}\nconst CloneRegistry = new WeakMap();\n/**\n * Create an element that exactly matches an input pixel-for-pixel and automatically stays in sync with it. This\n * is a non-interactive overlay on to the input and can be used to affect the visual appearance of the input\n * without modifying its behavior. The clone element is hidden by default.\n *\n * This lower level API powers the `InputRange` but provides more advanced functionality including event updates.\n *\n * Emits `update` events whenever anything is recalculated: when the layout changes, when the user scrolls, when the\n * input is updated, etc. This event may be emitted more than once per change.\n *\n * @note There may be cases in which the clone cannot observe changes to the input and fails to automatically update.\n * For example, if the `value` property on the input is written to directly, no `input` event is emitted by the input\n * and the clone does not automatically update. In these cases, `forceUpdate` can be used to manually trigger an update.\n */\n// PRIOR ART: This approach was adapted from the following MIT-licensed sources:\n// - primer/react (Copyright (c) 2018 GitHub, Inc.): https://github.com/primer/react/blob/a0db832302702b869aa22b0c4049ad9305ef631f/src/drafts/utils/character-coordinates.ts\n// - component/textarea-caret-position (Copyright (c) 2015 Jonathan Ong me@jongleberry.com): https://github.com/component/textarea-caret-position/blob/b5db7a7e47dd149c2a66276183c69234e4dabe30/index.js\n// - koddsson/textarea-caret-position (Copyright (c) 2015 Jonathan Ong me@jongleberry.com): https://github.com/koddsson/textarea-caret-position/blob/eba40ec8488eed4d77815f109af22e1d9c0751d3/index.js\nclass InputStyleCloneElement extends CustomHTMLElement {\n #styleObserver = new MutationObserver(() => this.#updateStyles());\n #resizeObserver = new ResizeObserver(() => this.#requestUpdateLayout());\n // This class is unique in that it will prevent itself from getting garbage collected because of the subscribed\n // observers (if never detached). Because of this, we want to avoid preventing the existence of this class from also\n // preventing the garbage collection of the associated input. This also allows us to automatically detach if the\n // input gets collected.\n #inputRef;\n #container;\n /**\n * Get the clone for an input, reusing an existing one if available. This avoids creating unecessary clones, which\n * have a performance cost due to their high-frequency event-based updates. Because these elements are shared, they\n * should be mutated with caution.\n *\n * Upon initial creation the clone element will automatically be inserted into the DOM and begin observing the\n * linked input. Only one clone per input can ever exist at a time.\n * @param input The target input to clone.\n */\n static for(input) {\n const clone = CloneRegistry.get(input) ?? new InputStyleCloneElement(input);\n CloneRegistry.set(input, clone);\n return clone;\n }\n /**\n * Avoid constructing directly: Use `InputStyleCloneElement.for` instead.\n * @private\n */\n constructor(input) {\n super();\n this.#inputRef = new WeakRef(input);\n // We want position:absolute so it doesn't take space in the layout, but that doesn't work with display:table-cell\n // used in the HTMLInputElement approach. So we need a wrapper.\n this.#container = document.createElement(\"div\");\n this.#container.style.position = \"absolute\";\n this.#container.style.pointerEvents = \"none\";\n input.after(this.#container);\n this.#container.appendChild(this);\n }\n /**\n * Force a recalculation. Will emit an `update` event. This is typically not needed unless the input has changed in\n * an unobservable way, eg by directly writing to the `value` property.\n */\n forceUpdate() {\n this.#updateStyles();\n this.#updateText();\n }\n /** @private */\n connectedCallback() {\n const input = this.#inputRef.deref();\n if (!input)\n return this.remove();\n this.style.pointerEvents = \"none\";\n this.style.userSelect = \"none\";\n this.style.overflow = \"hidden\";\n this.style.display = \"block\";\n // Important not to use display:none which would not render the content at all\n this.style.visibility = \"hidden\";\n if (input instanceof HTMLTextAreaElement) {\n this.style.whiteSpace = \"pre-wrap\";\n this.style.wordWrap = \"break-word\";\n }\n else {\n this.style.whiteSpace = \"nowrap\";\n // text in single-line inputs is vertically centered\n this.style.display = \"table-cell\";\n this.style.verticalAlign = \"middle\";\n }\n this.setAttribute(\"aria-hidden\", \"true\");\n this.#updateStyles();\n this.#updateText();\n this.#styleObserver.observe(input, {\n attributeFilter: [\n \"style\",\n \"dir\", // users can right-click in some browsers to change the text direction dynamically\n ],\n });\n this.#resizeObserver.observe(input);\n document.addEventListener(\"scroll\", this.#onDocumentScrollOrResize, { capture: true });\n window.addEventListener(\"resize\", this.#onDocumentScrollOrResize, { capture: true });\n // capture so this happens first, so other things can respond to `input` events after this data updates\n input.addEventListener(\"input\", this.#onInput, { capture: true });\n }\n /** @private */\n disconnectedCallback() {\n this.#container.remove();\n this.#styleObserver.disconnect();\n this.#resizeObserver.disconnect();\n document.removeEventListener(\"scroll\", this.#onDocumentScrollOrResize, { capture: true });\n window.removeEventListener(\"resize\", this.#onDocumentScrollOrResize, { capture: true });\n const input = this.#inputRef.deref();\n if (input) {\n input.removeEventListener(\"input\", this.#onInput, { capture: true });\n CloneRegistry.delete(input);\n }\n }\n // --- private ---\n /** Perform `fn` using the `input` if it is still available. If not, clean up the clone instead. */\n #usingInput(fn) {\n const input = this.#inputRef.deref();\n if (!input)\n return this.remove();\n return fn(input);\n }\n /** Current relative x-adjustment in pixels, executed via CSS transform. */\n #xOffset = 0;\n /** Current relative y-adjustment in pixels, executed via CSS transform. */\n #yOffset = 0;\n /**\n * Update only geometric properties without recalculating styles. Typically call `#requestUpdateLayout` instead to\n * only update once per animation frame.\n */\n #updateLayout() {\n // This runs often, so keep it as fast as possible! Avoid all unecessary updates.\n this.#usingInput((input) => {\n const inputStyle = window.getComputedStyle(input);\n this.style.height = inputStyle.height;\n this.style.width = inputStyle.width;\n // Immediately re-adjust for browser inconsistencies in scrollbar handling, if necessary\n if (input.clientHeight !== this.clientHeight)\n this.style.height = `calc(${inputStyle.height} + ${input.clientHeight - this.clientHeight}px)`;\n if (input.clientWidth !== this.clientWidth)\n this.style.width = `calc(${inputStyle.width} + ${input.clientWidth - this.clientWidth}px)`;\n // Position on top of the input\n const inputRect = input.getBoundingClientRect();\n const cloneRect = this.getBoundingClientRect();\n this.#xOffset = this.#xOffset + inputRect.left - cloneRect.left;\n this.#yOffset = this.#yOffset + inputRect.top - cloneRect.top;\n this.style.transform = `translate(${this.#xOffset}px, ${this.#yOffset}px)`;\n this.scrollTop = input.scrollTop;\n this.scrollLeft = input.scrollLeft;\n this.dispatchEvent(new InputStyleCloneUpdateEvent());\n });\n }\n #isLayoutUpdating = false;\n /** Request a layout update. Will only happen once per animation frame, to avoid unecessary updates. */\n #requestUpdateLayout() {\n if (this.#isLayoutUpdating)\n return;\n this.#isLayoutUpdating = true;\n requestAnimationFrame(() => {\n this.#updateLayout();\n this.#isLayoutUpdating = false;\n });\n }\n /** Update the styles of the clone based on the styles of the input, then request a layout update. */\n #updateStyles() {\n this.#usingInput((input) => {\n const inputStyle = window.getComputedStyle(input);\n for (const prop of propertiesToCopy)\n this.style[prop] = inputStyle[prop];\n this.#requestUpdateLayout();\n });\n }\n /**\n * Update the text content of the clone based on the text content of the input. Triggers a layout update in case the\n * text update caused scrolling.\n */\n #updateText() {\n this.#usingInput((input) => {\n this.textContent = input.value;\n // This is often unecessary on a pure text update, but text updates could potentially cause layout updates like\n // scrolling or resizing. And we run the update on _every frame_ when scrolling, so this isn't that expensive.\n // We don't requestUpdateLayout here because this one should happen synchronously, so that clients can react\n // within their own `input` event handlers.\n this.#updateLayout();\n });\n }\n #onInput = () => this.#updateText();\n #onDocumentScrollOrResize = (event) => {\n this.#usingInput((input) => {\n if (event.target === document ||\n event.target === window ||\n (event.target instanceof Node && event.target.contains(input)))\n this.#requestUpdateLayout();\n });\n };\n}\n// Note that some browsers, such as Firefox, do not concatenate properties\n// into their shorthand (e.g. padding-top, padding-bottom etc. -> padding),\n// so we have to list every single property explicitly.\nconst propertiesToCopy = [\n // RTL / vertical writing modes support:\n \"direction\",\n \"writingMode\",\n \"unicodeBidi\",\n \"textOrientation\",\n \"boxSizing\",\n \"borderTopWidth\",\n \"borderRightWidth\",\n \"borderBottomWidth\",\n \"borderLeftWidth\",\n \"borderStyle\",\n \"paddingTop\",\n \"paddingRight\",\n \"paddingBottom\",\n \"paddingLeft\",\n // https://developer.mozilla.org/en-US/docs/Web/CSS/font\n \"fontStyle\",\n \"fontVariant\",\n \"fontWeight\",\n \"fontStretch\",\n \"fontSize\",\n \"fontSizeAdjust\",\n \"lineHeight\",\n \"fontFamily\",\n \"textAlign\",\n \"textTransform\",\n \"textIndent\",\n \"textDecoration\",\n \"letterSpacing\",\n \"wordSpacing\",\n \"tabSize\",\n \"MozTabSize\",\n];\n// Inspired by https://github.com/github/catalyst/blob/dc284dcf4f82329a9cac5c867462a8fa529b6c40/src/register.ts\ntry {\n customElements.define(\"input-style-clone\", InputStyleCloneElement);\n}\ncatch (e) {\n // Throws DOMException with NotSupportedError if already defined\n if (!(e instanceof DOMException && e.name === \"NotSupportedError\"))\n throw e;\n}\n\nclass InputRange {\n #inputElement;\n #startOffset;\n #endOffset;\n /**\n * Construct a new `InputRange`.\n * @param element The target input element that contains the content for the range.\n * @param startOffset The inclusive 0-based start index for the range. Will be adjusted to fit in the input contents.\n * @param endOffset The exclusive 0-based end index for the range. Will be adjusted to fit in the input contents.\n */\n constructor(element, startOffset = 0, endOffset = startOffset) {\n this.#inputElement = element;\n this.#startOffset = startOffset;\n this.#endOffset = endOffset;\n }\n /**\n * Create a new range from the current user selection. If the input is not focused, the range will just be the start\n * of the input (offsets `0` to `0`).\n *\n * This can be used to get the caret coordinates: if the resulting range is `collapsed`, the location of the\n * `getBoundingClientRect` will be the location of the caret caret (note, however, that the width will be `0` in\n * this case).\n */\n static fromSelection(input) {\n const { selectionStart, selectionEnd } = input;\n return new InputRange(input, selectionStart ?? undefined, selectionEnd ?? undefined);\n }\n /** Returns true if the start is equal to the end of this range. */\n get collapsed() {\n return this.startOffset === this.endOffset;\n }\n /** Always returns the containing input element. */\n get commonAncestorContainer() {\n return this.#inputElement;\n }\n /** Always returns the containing input element. */\n get endContainer() {\n return this.#inputElement;\n }\n /** Always returns the containing input element. */\n get startContainer() {\n return this.#inputElement;\n }\n get startOffset() {\n return this.#startOffset;\n }\n get endOffset() {\n return this.#endOffset;\n }\n /** Update the inclusive start offset. Will be adjusted to fit within the content size. */\n setStartOffset(offset) {\n this.#startOffset = this.#clampOffset(offset);\n }\n /** Update the exclusive end offset. Will be adjusted to fit within the content size. */\n setEndOffset(offset) {\n this.#endOffset = this.#clampOffset(offset);\n }\n /**\n * Collapse this range to one side.\n * @param toStart If `true`, will collapse to the start side. Otherwise, will collapse to the end.\n */\n collapse(toStart = false) {\n if (toStart)\n this.setEndOffset(this.startOffset);\n else\n this.setStartOffset(this.endOffset);\n }\n /** Returns a `DocumentFragment` containing a new `Text` node containing the content in the range. */\n cloneContents() {\n return this.#createCloneRange().cloneContents();\n }\n /** Create a copy of this range. */\n cloneRange() {\n return new InputRange(this.#inputElement, this.startOffset, this.endOffset);\n }\n /**\n * Obtain one rect that contains the entire contents of the range. If the range spans multiple lines, this box will\n * contain all pieces of the range but may also contain some space outside the range.\n * @see https://iansan5653.github.io/dom-input-range/demos/playground/\n */\n getBoundingClientRect() {\n return this.#createCloneRange().getBoundingClientRect();\n }\n /**\n * Obtain the rects that contain contents of this range. If the range spans multiple lines, there will be multiple\n * bounding boxes. These boxes can be used, for example, to draw a highlight over the range.\n * @see https://iansan5653.github.io/dom-input-range/demos/playground/\n */\n getClientRects() {\n return this.#createCloneRange().getClientRects();\n }\n /** Get the contents of the range as a string. */\n toString() {\n return this.#createCloneRange().toString();\n }\n /**\n * Get the underlying `InputStyleClone` instance powering these calculations. This can be used to listen for\n * updates to trigger layout recalculation.\n */\n getStyleClone() {\n return this.#styleClone;\n }\n // --- private ---\n get #styleClone() {\n return InputStyleCloneElement.for(this.#inputElement);\n }\n get #cloneElement() {\n return this.#styleClone;\n }\n #clampOffset(offset) {\n return Math.max(0, Math.min(offset, this.#inputElement.value.length));\n }\n #createCloneRange() {\n // It's tempting to create a single Range and reuse it across the lifetime of the class. However, this wouldn't be\n // accurate because the contents of the input can change and the contents of the range would become stale. So we\n // must create a new range every time we need it.\n const range = document.createRange();\n const textNode = this.#cloneElement.childNodes[0];\n if (textNode) {\n range.setStart(textNode, this.startOffset);\n range.setEnd(textNode, this.endOffset);\n }\n return range;\n }\n}\n\nconst states = new WeakMap();\nclass TextExpander {\n constructor(expander, input) {\n this.expander = expander;\n this.input = input;\n this.combobox = null;\n this.menu = null;\n this.match = null;\n this.justPasted = false;\n this.lookBackIndex = 0;\n this.oninput = this.onInput.bind(this);\n this.onpaste = this.onPaste.bind(this);\n this.onkeydown = this.onKeydown.bind(this);\n this.oncommit = this.onCommit.bind(this);\n this.onmousedown = this.onMousedown.bind(this);\n this.onblur = this.onBlur.bind(this);\n this.interactingWithList = false;\n input.addEventListener('paste', this.onpaste);\n input.addEventListener('input', this.oninput);\n input.addEventListener('keydown', this.onkeydown);\n input.addEventListener('blur', this.onblur);\n }\n destroy() {\n this.input.removeEventListener('paste', this.onpaste);\n this.input.removeEventListener('input', this.oninput);\n this.input.removeEventListener('keydown', this.onkeydown);\n this.input.removeEventListener('blur', this.onblur);\n }\n dismissMenu() {\n if (this.deactivate()) {\n this.lookBackIndex = this.input.selectionEnd || this.lookBackIndex;\n }\n }\n activate(match, menu) {\n var _a, _b;\n if (this.input !== document.activeElement && this.input !== ((_b = (_a = document.activeElement) === null || _a === void 0 ? void 0 : _a.shadowRoot) === null || _b === void 0 ? void 0 : _b.activeElement)) {\n return;\n }\n this.deactivate();\n this.menu = menu;\n if (!menu.id)\n menu.id = `text-expander-${Math.floor(Math.random() * 100000).toString()}`;\n this.expander.append(menu);\n this.combobox = new Combobox(this.input, menu);\n this.expander.dispatchEvent(new Event('text-expander-activate'));\n this.positionMenu(menu, match.position);\n this.combobox.start();\n menu.addEventListener('combobox-commit', this.oncommit);\n menu.addEventListener('mousedown', this.onmousedown);\n this.combobox.navigate(1);\n }\n positionMenu(menu, position) {\n const caretRect = new InputRange(this.input, position).getBoundingClientRect();\n const targetPosition = { left: caretRect.left, top: caretRect.top + caretRect.height };\n const currentPosition = menu.getBoundingClientRect();\n const delta = {\n left: targetPosition.left - currentPosition.left,\n top: targetPosition.top - currentPosition.top\n };\n if (delta.left !== 0 || delta.top !== 0) {\n const currentStyle = getComputedStyle(menu);\n menu.style.left = currentStyle.left ? `calc(${currentStyle.left} + ${delta.left}px)` : `${delta.left}px`;\n menu.style.top = currentStyle.top ? `calc(${currentStyle.top} + ${delta.top}px)` : `${delta.top}px`;\n }\n }\n deactivate() {\n const menu = this.menu;\n if (!menu || !this.combobox)\n return false;\n this.expander.dispatchEvent(new Event('text-expander-deactivate'));\n this.menu = null;\n menu.removeEventListener('combobox-commit', this.oncommit);\n menu.removeEventListener('mousedown', this.onmousedown);\n this.combobox.destroy();\n this.combobox = null;\n menu.remove();\n return true;\n }\n onCommit({ target }) {\n var _a;\n const item = target;\n if (!(item instanceof HTMLElement))\n return;\n if (!this.combobox)\n return;\n const match = this.match;\n if (!match)\n return;\n const beginning = this.input.value.substring(0, match.position - match.key.length);\n const remaining = this.input.value.substring(match.position + match.text.length);\n const detail = { item, key: match.key, value: null, continue: false };\n const canceled = !this.expander.dispatchEvent(new CustomEvent('text-expander-value', { cancelable: true, detail }));\n if (canceled)\n return;\n if (!detail.value)\n return;\n let suffix = (_a = this.expander.getAttribute('suffix')) !== null && _a !== void 0 ? _a : ' ';\n if (detail.continue) {\n suffix = '';\n }\n const value = `${detail.value}${suffix}`;\n this.input.value = beginning + value + remaining;\n const cursor = beginning.length + value.length;\n this.deactivate();\n this.input.focus({\n preventScroll: true\n });\n this.input.selectionStart = cursor;\n this.input.selectionEnd = cursor;\n if (!detail.continue) {\n this.lookBackIndex = cursor;\n this.match = null;\n }\n this.expander.dispatchEvent(new CustomEvent('text-expander-committed', { cancelable: false, detail: { input: this.input } }));\n }\n onBlur() {\n if (this.interactingWithList) {\n this.interactingWithList = false;\n return;\n }\n this.deactivate();\n }\n onPaste() {\n this.justPasted = true;\n }\n async onInput() {\n if (this.justPasted) {\n this.justPasted = false;\n return;\n }\n const match = this.findMatch();\n if (match) {\n this.match = match;\n const menu = await this.notifyProviders(match);\n if (!this.match)\n return;\n if (menu) {\n this.activate(match, menu);\n }\n else {\n this.deactivate();\n }\n }\n else {\n this.match = null;\n this.deactivate();\n }\n }\n findMatch() {\n const cursor = this.input.selectionEnd || 0;\n const text = this.input.value;\n if (cursor <= this.lookBackIndex) {\n this.lookBackIndex = cursor - 1;\n }\n for (const { key, multiWord } of this.expander.keys) {\n const found = query(text, key, cursor, {\n multiWord,\n lookBackIndex: this.lookBackIndex,\n lastMatchPosition: this.match ? this.match.position : null\n });\n if (found) {\n return { text: found.text, key, position: found.position };\n }\n }\n }\n async notifyProviders(match) {\n const providers = [];\n const provide = (result) => providers.push(result);\n const canceled = !this.expander.dispatchEvent(new CustomEvent('text-expander-change', { cancelable: true, detail: { provide, text: match.text, key: match.key } }));\n if (canceled)\n return;\n const all = await Promise.all(providers);\n const fragments = all.filter(x => x.matched).map(x => x.fragment);\n return fragments[0];\n }\n onMousedown() {\n this.interactingWithList = true;\n }\n onKeydown(event) {\n if (event.key === 'Escape') {\n this.match = null;\n if (this.deactivate()) {\n this.lookBackIndex = this.input.selectionEnd || this.lookBackIndex;\n event.stopImmediatePropagation();\n event.preventDefault();\n }\n }\n }\n}\nclass TextExpanderElement extends HTMLElement {\n get keys() {\n const keysAttr = this.getAttribute('keys');\n const keys = keysAttr ? keysAttr.split(' ') : [];\n const multiWordAttr = this.getAttribute('multiword');\n const multiWord = multiWordAttr ? multiWordAttr.split(' ') : [];\n const globalMultiWord = multiWord.length === 0 && this.hasAttribute('multiword');\n return keys.map(key => ({ key, multiWord: globalMultiWord || multiWord.includes(key) }));\n }\n connectedCallback() {\n const input = this.querySelector('input[type=\"text\"], textarea');\n if (!(input instanceof HTMLInputElement || input instanceof HTMLTextAreaElement))\n return;\n const state = new TextExpander(this, input);\n states.set(this, state);\n }\n disconnectedCallback() {\n const state = states.get(this);\n if (!state)\n return;\n state.destroy();\n states.delete(this);\n }\n dismiss() {\n const state = states.get(this);\n if (!state)\n return;\n state.dismissMenu();\n }\n}\n\nif (!window.customElements.get('text-expander')) {\n window.TextExpanderElement = TextExpanderElement;\n window.customElements.define('text-expander', TextExpanderElement);\n}\n\nexport default TextExpanderElement;\n","export default function ansiRegex({onlyFirst = false} = {}) {\n\tconst pattern = [\n\t '[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))'\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n","import ansiRegex from 'ansi-regex';\n\nconst regex = ansiRegex();\n\nexport default function stripAnsi(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\t// Even though the regex is global, we don't need to reset the `.lastIndex`\n\t// because unlike `.exec()` and `.test()`, `.replace()` does it automatically\n\t// and doing it manually has a performance penalty.\n\treturn string.replace(regex, '');\n}\n","import stripAnsi from 'strip-ansi';\n\nconst segmenter = new Intl.Segmenter();\n\nexport default function stringLength(string, {countAnsiEscapeCodes = false} = {}) {\n\tif (string === '') {\n\t\treturn 0;\n\t}\n\n\tif (!countAnsiEscapeCodes) {\n\t\tstring = stripAnsi(string);\n\t}\n\n\tif (string === '') {\n\t\treturn 0;\n\t}\n\n\tlet length = 0;\n\n\tfor (const _ of segmenter.segment(string)) { // eslint-disable-line no-unused-vars\n\t\tlength++;\n\t}\n\n\treturn length;\n}\n","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20version='1.0'%20viewBox='0%200%20641%20223'%3e%3cpath%20fill='%23aaa'%20d='M86%20214c-9-1-17-4-24-8l-6-3-5-5-5-4-4-6-4-6-3-8-2-8v-27l2-9%203-9%204-6%204-6%205-5%205-5%207-3%206-4%207-2%207-2%2012-1h12l7%201%208%202%207%204%207%203%205%205%205%204-10%2010-10%209-4-3-10-5-5-1H88l-5%202-6%203-3%204-4%204-2%205-2%206v6l-1%207%201%207%202%207%203%205%202%204%204%203%204%203%205%202%206%202h9l10-1%205-2%206-3v-16H91v-27h59v54l-1%203-2%203-5%204-4%204-5%203-5%202-8%202-8%202-10%201H92l-6-1zm266-62V91h34v46h44V91h34v121h-34v-46h-44v46h-34v-61zm-182-1V90h34v121h-34v-60zm59-1V90h35l36%201%205%202c3%200%208%202%2010%204l5%202%204%205%205%204%203%207%203%207%201%2013v13l-4%206-3%207-4%204-5%205-5%202-5%203-6%202-5%201-18%201h-18v32h-34v-61zm67-2%203-2%202-4%202-5v-5l-2-4-2-4-3-2-3-3h-30v31h30l3-2zm226%2039v-24l-8-12-18-28a1751%201751%200%200%200-20-31v-2h39l7%2012%2012%2021%206%209%2013-21%2013-21h38v2l-41%2061-7%2010v48h-34v-24zM109%2066l-4-1-5-5-5-4-1-5-3-9v-5l1-5c2-7%203-10%208-15l4-4%207-2%207-2h7l6%201%205%202%205%202%203%204%204%203%202%206%202%205v13l-2%205-2%206-4%204-3%203-5%202-4%202-9%201h-9l-5-2zm22-11%204-2%203-4%202-5V34l-2-4-2-4-3-2-4-3-5-1h-6l-4%202-5%202-2%204-3%205-1%203v4l1%205%202%205%202%202%205%203%204%202h10l4-2zM37%2039V11h33l3%201%203%202%204%203%203%203%201%205%201%204v5l-1%204-3%204-3%205-4%201-3%202-11%201H49v16H37V39zm31%200%203-2%201-2%201-2v-4l-1-3-3-2-2-2H49v18h15l4-1zm107%2025a512%20512%200%200%200-19-53h14l4%2014%206%2019%201%204%201-1%207-19%205-17h9l6%2019%207%2018v-1l2-6%205-17%204-13h14v1l-4%2012-16%2041v2h-5l-5-1-6-15-6-15-1%201-3%207-6%2015-2%208h-11l-1-3zm74-25V11h42v11h-29v2l-1%205v4h29v11h-28v11h2l15%201h13v11h-43V39zm55%200V11h33l5%203%205%202%202%204%202%205v10l-2%203-1%204-5%203-5%203%205%205%208%2010%203%204h-14l-7-9-8-10h-9v19h-12V39zm33-3%202-3v-6l-3-3-2-3h-18v16h1v1h17l2-2zm26%203V11h42v11h-29l-1%206v5h29v11h-28v5l-1%205%201%201v1h30v11h-43V39zm54%200V11h17l18%201%204%202%205%203%202%204%203%204%202%206%201%206v5c-1%206-3%2012-6%2015l-3%204-5%203-5%202-17%201h-16V39zm33%2014%205-5%202-3v-6l-1-6-1-3-1-3-4-3-3-2h-5l-6-1-3%201h-3v34h9l8-1%203-2zm50-14V11h34l5%202%204%202%202%203%202%203v9l-2%202-3%204-1%201%203%203%203%204%201%203%201%204-1%204-1%204-3%203-3%203-5%201-5%201h-31V39zm34%2015%202-1v-6l-2-2-2-2h-20v13h20l2-2zm-3-22%204-2v-6l-2-1-2-2h-19v12h16l4-1zm42%2024V45l-6-9-11-17-5-8h15l4%208%207%2011%202%203%207-11%207-11h14l-11%2016-11%2017v23h-12V56z'/%3e%3c/svg%3e\"","import './compose.css';\n\nimport '@github/text-expander-element';\nimport { MenuItem } from '@szhsin/react-menu';\nimport { deepEqual } from 'fast-equals';\nimport Fuse from 'fuse.js';\nimport { memo } from 'preact/compat';\nimport { forwardRef } from 'preact/compat';\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'preact/hooks';\nimport { useHotkeys } from 'react-hotkeys-hook';\nimport stringLength from 'string-length';\nimport { detectAll } from 'tinyld/light';\nimport { uid } from 'uid/single';\nimport { useDebouncedCallback, useThrottledCallback } from 'use-debounce';\nimport { useSnapshot } from 'valtio';\n\nimport poweredByGiphyURL from '../assets/powered-by-giphy.svg';\n\nimport Menu2 from '../components/menu2';\nimport supportedLanguages from '../data/status-supported-languages';\nimport urlRegex from '../data/url-regex';\nimport { api } from '../utils/api';\nimport db from '../utils/db';\nimport emojifyText from '../utils/emojify-text';\nimport localeMatch from '../utils/locale-match';\nimport localeCode2Text from '../utils/localeCode2Text';\nimport openCompose from '../utils/open-compose';\nimport pmem from '../utils/pmem';\nimport { fetchRelationships } from '../utils/relationships';\nimport shortenNumber from '../utils/shorten-number';\nimport showToast from '../utils/show-toast';\nimport states, { saveStatus } from '../utils/states';\nimport store from '../utils/store';\nimport {\n getCurrentAccount,\n getCurrentAccountNS,\n getCurrentInstance,\n getCurrentInstanceConfiguration,\n} from '../utils/store-utils';\nimport supports from '../utils/supports';\nimport useCloseWatcher from '../utils/useCloseWatcher';\nimport useInterval from '../utils/useInterval';\nimport visibilityIconsMap from '../utils/visibility-icons-map';\n\nimport AccountBlock from './account-block';\n// import Avatar from './avatar';\nimport Icon from './icon';\nimport Loader from './loader';\nimport Modal from './modal';\nimport Status from './status';\n\nconst {\n PHANPY_IMG_ALT_API_URL: IMG_ALT_API_URL,\n PHANPY_GIPHY_API_KEY: GIPHY_API_KEY,\n} = import.meta.env;\n\nconst supportedLanguagesMap = supportedLanguages.reduce((acc, l) => {\n const [code, common, native] = l;\n acc[code] = {\n common,\n native,\n };\n return acc;\n}, {});\n\n/* NOTES:\n - Max character limit includes BOTH status text and Content Warning text\n*/\n\nconst expiryOptions = {\n '5 minutes': 5 * 60,\n '30 minutes': 30 * 60,\n '1 hour': 60 * 60,\n '6 hours': 6 * 60 * 60,\n '12 hours': 12 * 60 * 60,\n '1 day': 24 * 60 * 60,\n '3 days': 3 * 24 * 60 * 60,\n '7 days': 7 * 24 * 60 * 60,\n};\nconst expirySeconds = Object.values(expiryOptions);\nconst oneDay = 24 * 60 * 60;\n\nconst expiresInFromExpiresAt = (expiresAt) => {\n if (!expiresAt) return oneDay;\n const delta = (new Date(expiresAt).getTime() - Date.now()) / 1000;\n return expirySeconds.find((s) => s >= delta) || oneDay;\n};\n\nconst menu = document.createElement('ul');\nmenu.role = 'listbox';\nmenu.className = 'text-expander-menu';\n\n// Set IntersectionObserver on menu, reposition it because text-expander doesn't handle it\nconst windowMargin = 16;\nconst observer = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n const { left, width } = entry.boundingClientRect;\n const { innerWidth } = window;\n if (left + width > innerWidth) {\n menu.style.left = innerWidth - width - windowMargin + 'px';\n }\n }\n });\n});\nobserver.observe(menu);\n\nconst DEFAULT_LANG = localeMatch(\n [new Intl.DateTimeFormat().resolvedOptions().locale, ...navigator.languages],\n supportedLanguages.map((l) => l[0]),\n 'en',\n);\n\n// https://github.com/mastodon/mastodon/blob/c4a429ed47e85a6bbf0d470a41cc2f64cf120c19/app/javascript/mastodon/features/compose/util/counter.js\nconst urlRegexObj = new RegExp(urlRegex.source, urlRegex.flags);\nconst usernameRegex = /(^|[^\\/\\w])@(([a-z0-9_]+)@[a-z0-9\\.\\-]+[a-z0-9]+)/gi;\nconst urlPlaceholder = '$2xxxxxxxxxxxxxxxxxxxxxxx';\nfunction countableText(inputText) {\n return inputText\n .replace(urlRegexObj, urlPlaceholder)\n .replace(usernameRegex, '$1@$3');\n}\n\n// https://github.com/mastodon/mastodon/blob/c03bd2a238741a012aa4b98dc4902d6cf948ab63/app/models/account.rb#L69\nconst USERNAME_RE = /[a-z0-9_]+([a-z0-9_.-]+[a-z0-9_]+)?/i;\nconst MENTION_RE = new RegExp(\n `(^|[^=\\\\/\\\\w])(@${USERNAME_RE.source}(?:@[\\\\p{L}\\\\w.-]+[\\\\w]+)?)`,\n 'uig',\n);\n\n// AI-generated, all other regexes are too complicated\nconst HASHTAG_RE = new RegExp(\n `(^|[^=\\\\/\\\\w])(#[a-z0-9_]+([a-z0-9_.]+[a-z0-9_]+)?)(?![\\\\/\\\\w])`,\n 'ig',\n);\n\n// https://github.com/mastodon/mastodon/blob/23e32a4b3031d1da8b911e0145d61b4dd47c4f96/app/models/custom_emoji.rb#L31\nconst SHORTCODE_RE_FRAGMENT = '[a-zA-Z0-9_]{2,}';\nconst SCAN_RE = new RegExp(\n `(^|[^=\\\\/\\\\w])(:${SHORTCODE_RE_FRAGMENT}:)(?=[^A-Za-z0-9_:]|$)`,\n 'g',\n);\n\nconst segmenter = new Intl.Segmenter();\nfunction highlightText(text, { maxCharacters = Infinity }) {\n // Accept text string, return formatted HTML string\n // Escape all HTML special characters\n let html = text\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n\n // Exceeded characters limit\n const { composerCharacterCount } = states;\n if (composerCharacterCount > maxCharacters) {\n // Highlight exceeded characters\n let withinLimitHTML = '',\n exceedLimitHTML = '';\n const htmlSegments = segmenter.segment(html);\n for (const { segment, index } of htmlSegments) {\n if (index < maxCharacters) {\n withinLimitHTML += segment;\n } else {\n exceedLimitHTML += segment;\n }\n }\n if (exceedLimitHTML) {\n exceedLimitHTML =\n '' +\n exceedLimitHTML +\n '';\n }\n return withinLimitHTML + exceedLimitHTML;\n }\n\n return html\n .replace(urlRegexObj, '$2$3') // URLs\n .replace(MENTION_RE, '$1$2') // Mentions\n .replace(HASHTAG_RE, '$1$2') // Hashtags\n .replace(\n SCAN_RE,\n '$1$2',\n ); // Emoji shortcodes\n}\n\nconst rtf = new Intl.RelativeTimeFormat();\n\nconst CUSTOM_EMOJIS_COUNT = 100;\n\nfunction Compose({\n onClose,\n replyToStatus,\n editStatus,\n draftStatus,\n standalone,\n hasOpener,\n}) {\n console.warn('RENDER COMPOSER');\n const { masto, instance } = api();\n const [uiState, setUIState] = useState('default');\n const UID = useRef(draftStatus?.uid || uid());\n console.log('Compose UID', UID.current);\n\n const currentAccount = getCurrentAccount();\n const currentAccountInfo = currentAccount.info;\n\n const configuration = getCurrentInstanceConfiguration();\n console.log('⚙️ Configuration', configuration);\n\n const {\n statuses: {\n maxCharacters,\n maxMediaAttachments,\n charactersReservedPerUrl,\n } = {},\n mediaAttachments: {\n supportedMimeTypes = [],\n imageSizeLimit,\n imageMatrixLimit,\n videoSizeLimit,\n videoMatrixLimit,\n videoFrameRateLimit,\n } = {},\n polls: {\n maxOptions,\n maxCharactersPerOption,\n maxExpiration,\n minExpiration,\n } = {},\n } = configuration || {};\n\n const textareaRef = useRef();\n const spoilerTextRef = useRef();\n const [visibility, setVisibility] = useState('public');\n const [sensitive, setSensitive] = useState(false);\n const [language, setLanguage] = useState(\n store.session.get('currentLanguage') || DEFAULT_LANG,\n );\n const prevLanguage = useRef(language);\n const [mediaAttachments, setMediaAttachments] = useState([]);\n const [poll, setPoll] = useState(null);\n\n const prefs = store.account.get('preferences') || {};\n\n const oninputTextarea = () => {\n if (!textareaRef.current) return;\n textareaRef.current.dispatchEvent(new Event('input'));\n };\n const focusTextarea = () => {\n setTimeout(() => {\n if (!textareaRef.current) return;\n // status starts with newline, focus on first position\n if (draftStatus?.status?.startsWith?.('\\n')) {\n textareaRef.current.selectionStart = 0;\n textareaRef.current.selectionEnd = 0;\n }\n console.debug('FOCUS textarea');\n textareaRef.current?.focus();\n }, 300);\n };\n\n useEffect(() => {\n if (replyToStatus) {\n const { spoilerText, visibility, language, sensitive } = replyToStatus;\n if (spoilerText && spoilerTextRef.current) {\n spoilerTextRef.current.value = spoilerText;\n }\n const mentions = new Set([\n replyToStatus.account.acct,\n ...replyToStatus.mentions.map((m) => m.acct),\n ]);\n const allMentions = [...mentions].filter(\n (m) => m !== currentAccountInfo.acct,\n );\n if (allMentions.length > 0) {\n textareaRef.current.value = `${allMentions\n .map((m) => `@${m}`)\n .join(' ')} `;\n oninputTextarea();\n }\n focusTextarea();\n setVisibility(\n visibility === 'public' && prefs['posting:default:visibility']\n ? prefs['posting:default:visibility']\n : visibility,\n );\n setLanguage(language || prefs.postingDefaultLanguage || DEFAULT_LANG);\n setSensitive(sensitive && !!spoilerText);\n } else if (editStatus) {\n const { visibility, language, sensitive, poll, mediaAttachments } =\n editStatus;\n const composablePoll = !!poll?.options && {\n ...poll,\n options: poll.options.map((o) => o?.title || o),\n expiresIn: poll?.expiresIn || expiresInFromExpiresAt(poll.expiresAt),\n };\n setUIState('loading');\n (async () => {\n try {\n const statusSource = await masto.v1.statuses\n .$select(editStatus.id)\n .source.fetch();\n console.log({ statusSource });\n const { text, spoilerText } = statusSource;\n textareaRef.current.value = text;\n textareaRef.current.dataset.source = text;\n oninputTextarea();\n focusTextarea();\n spoilerTextRef.current.value = spoilerText;\n setVisibility(visibility);\n setLanguage(language || presf.postingDefaultLanguage || DEFAULT_LANG);\n setSensitive(sensitive);\n if (composablePoll) setPoll(composablePoll);\n setMediaAttachments(mediaAttachments);\n setUIState('default');\n } catch (e) {\n console.error(e);\n alert(e?.reason || e);\n setUIState('error');\n }\n })();\n } else {\n focusTextarea();\n console.log('Apply prefs', prefs);\n if (prefs['posting:default:visibility']) {\n setVisibility(prefs['posting:default:visibility']);\n }\n if (prefs['posting:default:language']) {\n setLanguage(prefs['posting:default:language']);\n }\n if (prefs['posting:default:sensitive']) {\n setSensitive(prefs['posting:default:sensitive']);\n }\n }\n if (draftStatus) {\n const {\n status,\n spoilerText,\n visibility,\n language,\n sensitive,\n poll,\n mediaAttachments,\n } = draftStatus;\n const composablePoll = !!poll?.options && {\n ...poll,\n options: poll.options.map((o) => o?.title || o),\n expiresIn: poll?.expiresIn || expiresInFromExpiresAt(poll.expiresAt),\n };\n textareaRef.current.value = status;\n oninputTextarea();\n focusTextarea();\n if (spoilerText) spoilerTextRef.current.value = spoilerText;\n if (visibility) setVisibility(visibility);\n setLanguage(language || prefs.postingDefaultLanguage || DEFAULT_LANG);\n if (sensitive !== null) setSensitive(sensitive);\n if (composablePoll) setPoll(composablePoll);\n if (mediaAttachments) setMediaAttachments(mediaAttachments);\n }\n }, [draftStatus, editStatus, replyToStatus]);\n\n const formRef = useRef();\n\n const beforeUnloadCopy = 'You have unsaved changes. Discard this post?';\n const canClose = () => {\n const { value, dataset } = textareaRef.current;\n\n // check if loading\n if (uiState === 'loading') {\n console.log('canClose', { uiState });\n return false;\n }\n\n // check for status and media attachments\n const hasValue = (value || '')\n .trim()\n .replace(/^\\p{White_Space}+|\\p{White_Space}+$/gu, '');\n const hasMediaAttachments = mediaAttachments.length > 0;\n if (!hasValue && !hasMediaAttachments) {\n console.log('canClose', { value, mediaAttachments });\n return true;\n }\n\n // check if all media attachments have IDs\n const hasIDMediaAttachments =\n mediaAttachments.length > 0 &&\n mediaAttachments.every((media) => media.id);\n if (hasIDMediaAttachments) {\n console.log('canClose', { hasIDMediaAttachments });\n return true;\n }\n\n // check if status contains only \"@acct\", if replying\n const isSelf = replyToStatus?.account.id === currentAccountInfo.id;\n const hasOnlyAcct =\n replyToStatus && value.trim() === `@${replyToStatus.account.acct}`;\n // TODO: check for mentions, or maybe just generic \"@username\", including multiple mentions like \"@username1@username2\"\n if (!isSelf && hasOnlyAcct) {\n console.log('canClose', { isSelf, hasOnlyAcct });\n return true;\n }\n\n // check if status is same with source\n const sameWithSource = value === dataset?.source;\n if (sameWithSource) {\n console.log('canClose', { sameWithSource });\n return true;\n }\n\n console.log('canClose', {\n value,\n hasMediaAttachments,\n hasIDMediaAttachments,\n poll,\n isSelf,\n hasOnlyAcct,\n sameWithSource,\n uiState,\n });\n\n return false;\n };\n\n const confirmClose = () => {\n if (!canClose()) {\n const yes = confirm(beforeUnloadCopy);\n return yes;\n }\n return true;\n };\n\n useEffect(() => {\n // Show warning if user tries to close window with unsaved changes\n const handleBeforeUnload = (e) => {\n if (!canClose()) {\n e.preventDefault();\n e.returnValue = beforeUnloadCopy;\n }\n };\n window.addEventListener('beforeunload', handleBeforeUnload, {\n capture: true,\n });\n return () =>\n window.removeEventListener('beforeunload', handleBeforeUnload, {\n capture: true,\n });\n }, []);\n\n const getCharCount = () => {\n const { value } = textareaRef.current;\n const { value: spoilerText } = spoilerTextRef.current;\n return stringLength(countableText(value)) + stringLength(spoilerText);\n };\n const updateCharCount = () => {\n const count = getCharCount();\n states.composerCharacterCount = count;\n };\n useEffect(updateCharCount, []);\n\n const supportsCloseWatcher = window.CloseWatcher;\n const escDownRef = useRef(false);\n useHotkeys(\n 'esc',\n () => {\n escDownRef.current = true;\n // This won't be true if this event is already handled and not propagated 🤞\n },\n {\n enabled: !supportsCloseWatcher,\n enableOnFormTags: true,\n },\n );\n useHotkeys(\n 'esc',\n () => {\n if (!standalone && escDownRef.current && confirmClose()) {\n onClose();\n }\n escDownRef.current = false;\n },\n {\n enabled: !supportsCloseWatcher,\n enableOnFormTags: true,\n // Use keyup because Esc keydown will close the confirm dialog on Safari\n keyup: true,\n ignoreEventWhen: (e) => {\n const modals = document.querySelectorAll('#modal-container > *');\n const hasModal = !!modals;\n const hasOnlyComposer =\n modals.length === 1 && modals[0].querySelector('#compose-container');\n return hasModal && !hasOnlyComposer;\n },\n },\n );\n useCloseWatcher(() => {\n if (!standalone && confirmClose()) {\n onClose();\n }\n }, [standalone, confirmClose, onClose]);\n\n const prevBackgroundDraft = useRef({});\n const draftKey = () => {\n const ns = getCurrentAccountNS();\n return `${ns}#${UID.current}`;\n };\n const saveUnsavedDraft = () => {\n // Not enabling this for editing status\n // I don't think this warrant a draft mode for a status that's already posted\n // Maybe it could be a big edit change but it should be rare\n if (editStatus) return;\n if (states.composerState.minimized) return;\n const key = draftKey();\n const backgroundDraft = {\n key,\n replyTo: replyToStatus\n ? {\n /* Smaller payload of replyToStatus. Reasons:\n - No point storing whole thing\n - Could have media attachments\n - Could be deleted/edited later\n */\n id: replyToStatus.id,\n account: {\n id: replyToStatus.account.id,\n username: replyToStatus.account.username,\n acct: replyToStatus.account.acct,\n },\n }\n : null,\n draftStatus: {\n uid: UID.current,\n status: textareaRef.current.value,\n spoilerText: spoilerTextRef.current.value,\n visibility,\n language,\n sensitive,\n poll,\n mediaAttachments,\n },\n };\n if (\n !deepEqual(backgroundDraft, prevBackgroundDraft.current) &&\n !canClose()\n ) {\n console.debug('not equal', backgroundDraft, prevBackgroundDraft.current);\n db.drafts\n .set(key, {\n ...backgroundDraft,\n state: 'unsaved',\n updatedAt: Date.now(),\n })\n .then(() => {\n console.debug('DRAFT saved', key, backgroundDraft);\n })\n .catch((e) => {\n console.error('DRAFT failed', key, e);\n });\n prevBackgroundDraft.current = structuredClone(backgroundDraft);\n }\n };\n useInterval(saveUnsavedDraft, 5000); // background save every 5s\n useEffect(() => {\n saveUnsavedDraft();\n // If unmounted, means user discarded the draft\n // Also means pop-out 🙈, but it's okay because the pop-out will persist the ID and re-create the draft\n return () => {\n db.drafts.del(draftKey());\n };\n }, []);\n\n useEffect(() => {\n const handleItems = (e) => {\n const { items } = e.clipboardData || e.dataTransfer;\n const files = [];\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n if (item.kind === 'file') {\n const file = item.getAsFile();\n if (file && supportedMimeTypes.includes(file.type)) {\n files.push(file);\n }\n }\n }\n if (files.length > 0 && mediaAttachments.length >= maxMediaAttachments) {\n alert(`You can only attach up to ${maxMediaAttachments} files.`);\n return;\n }\n console.log({ files });\n if (files.length > 0) {\n e.preventDefault();\n e.stopPropagation();\n // Auto-cut-off files to avoid exceeding maxMediaAttachments\n const max = maxMediaAttachments - mediaAttachments.length;\n const allowedFiles = files.slice(0, max);\n if (allowedFiles.length <= 0) {\n alert(`You can only attach up to ${maxMediaAttachments} files.`);\n return;\n }\n const mediaFiles = allowedFiles.map((file) => ({\n file,\n type: file.type,\n size: file.size,\n url: URL.createObjectURL(file),\n id: null,\n description: null,\n }));\n setMediaAttachments([...mediaAttachments, ...mediaFiles]);\n }\n };\n window.addEventListener('paste', handleItems);\n const handleDragover = (e) => {\n // Prevent default if there's files\n if (e.dataTransfer.items.length > 0) {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n window.addEventListener('dragover', handleDragover);\n window.addEventListener('drop', handleItems);\n return () => {\n window.removeEventListener('paste', handleItems);\n window.removeEventListener('dragover', handleDragover);\n window.removeEventListener('drop', handleItems);\n };\n }, [mediaAttachments]);\n\n const [showMentionPicker, setShowMentionPicker] = useState(false);\n const [showEmoji2Picker, setShowEmoji2Picker] = useState(false);\n const [showGIFPicker, setShowGIFPicker] = useState(false);\n\n const [autoDetectedLanguages, setAutoDetectedLanguages] = useState(null);\n const [topSupportedLanguages, restSupportedLanguages] = useMemo(() => {\n const topLanguages = [];\n const restLanguages = [];\n const { contentTranslationHideLanguages = [] } = states.settings;\n supportedLanguages.forEach((l) => {\n const [code] = l;\n if (\n code === language ||\n code === prevLanguage.current ||\n code === DEFAULT_LANG ||\n contentTranslationHideLanguages.includes(code) ||\n (autoDetectedLanguages?.length && autoDetectedLanguages.includes(code))\n ) {\n topLanguages.push(l);\n } else {\n restLanguages.push(l);\n }\n });\n topLanguages.sort(([codeA, commonA], [codeB, commonB]) => {\n if (codeA === language) return -1;\n if (codeB === language) return 1;\n return commonA.localeCompare(commonB);\n });\n restLanguages.sort(([codeA, commonA], [codeB, commonB]) =>\n commonA.localeCompare(commonB),\n );\n return [topLanguages, restLanguages];\n }, [language, autoDetectedLanguages]);\n\n const replyToStatusMonthsAgo = useMemo(\n () =>\n !!replyToStatus?.createdAt &&\n Math.floor(\n (Date.now() - new Date(replyToStatus.createdAt)) /\n (1000 * 60 * 60 * 24 * 30),\n ),\n [replyToStatus],\n );\n\n const onMinimize = () => {\n saveUnsavedDraft();\n states.composerState.minimized = true;\n };\n\n return (\n
    \n
    \n
    \n {currentAccountInfo?.avatarStatic && (\n // \n \n )}\n {!standalone ? (\n \n {\n // If there are non-ID media attachments (not yet uploaded), show confirmation dialog because they are not going to be passed to the new window\n // const containNonIDMediaAttachments =\n // mediaAttachments.length > 0 &&\n // mediaAttachments.some((media) => !media.id);\n // if (containNonIDMediaAttachments) {\n // const yes = confirm(\n // 'You have media attachments that are not yet uploaded. Opening a new window will discard them and you will need to re-attach them. Are you sure you want to continue?',\n // );\n // if (!yes) {\n // return;\n // }\n // }\n\n // const mediaAttachmentsWithIDs = mediaAttachments.filter(\n // (media) => media.id,\n // );\n\n const newWin = openCompose({\n editStatus,\n replyToStatus,\n draftStatus: {\n uid: UID.current,\n status: textareaRef.current.value,\n spoilerText: spoilerTextRef.current.value,\n visibility,\n language,\n sensitive,\n poll,\n mediaAttachments,\n },\n });\n\n if (!newWin) {\n return;\n }\n\n onClose();\n }}\n >\n \n \n \n \n {' '}\n {\n if (confirmClose()) {\n onClose();\n }\n }}\n >\n \n \n \n ) : (\n hasOpener && (\n {\n // If there are non-ID media attachments (not yet uploaded), show confirmation dialog because they are not going to be passed to the new window\n // const containNonIDMediaAttachments =\n // mediaAttachments.length > 0 &&\n // mediaAttachments.some((media) => !media.id);\n // if (containNonIDMediaAttachments) {\n // const yes = confirm(\n // 'You have media attachments that are not yet uploaded. Opening a new window will discard them and you will need to re-attach them. Are you sure you want to continue?',\n // );\n // if (!yes) {\n // return;\n // }\n // }\n\n if (!window.opener) {\n alert('Looks like you closed the parent window.');\n return;\n }\n\n if (window.opener.__STATES__.showCompose) {\n if (window.opener.__STATES__.composerState?.publishing) {\n alert(\n 'Looks like you already have a compose field open in the parent window and currently publishing. Please wait for it to be done and try again later.',\n );\n return;\n }\n\n let confirmText =\n 'Looks like you already have a compose field open in the parent window. Popping in this window will discard the changes you made in the parent window. Continue?';\n const yes = confirm(confirmText);\n if (!yes) return;\n }\n\n // const mediaAttachmentsWithIDs = mediaAttachments.filter(\n // (media) => media.id,\n // );\n\n onClose({\n fn: () => {\n const passData = {\n editStatus,\n replyToStatus,\n draftStatus: {\n uid: UID.current,\n status: textareaRef.current.value,\n spoilerText: spoilerTextRef.current.value,\n visibility,\n language,\n sensitive,\n poll,\n mediaAttachments,\n },\n };\n window.opener.__COMPOSE__ = passData; // Pass it here instead of `showCompose` due to some weird proxy issue again\n if (window.opener.__STATES__.showCompose) {\n window.opener.__STATES__.showCompose = false;\n setTimeout(() => {\n window.opener.__STATES__.showCompose = true;\n }, 10);\n } else {\n window.opener.__STATES__.showCompose = true;\n }\n if (window.opener.__STATES__.composerState.minimized) {\n // Maximize it\n window.opener.__STATES__.composerState.minimized = false;\n }\n },\n });\n }}\n >\n \n \n )\n )}\n
    \n {!!replyToStatus && (\n
    \n \n
    \n Replying to @\n {replyToStatus.account.acct || replyToStatus.account.username}\n ’s post\n {replyToStatusMonthsAgo >= 3 && (\n <>\n {' '}\n (\n \n {rtf.format(-replyToStatusMonthsAgo, 'month')}\n \n )\n \n )}\n
    \n
    \n )}\n {!!editStatus && (\n
    \n \n
    Editing source post
    \n
    \n )}\n {\n if (e.key === 'Enter' && (e.ctrlKey || e.metaKey)) {\n formRef.current.dispatchEvent(\n new Event('submit', { cancelable: true }),\n );\n }\n }}\n onSubmit={(e) => {\n e.preventDefault();\n\n const formData = new FormData(e.target);\n const entries = Object.fromEntries(formData.entries());\n console.log('ENTRIES', entries);\n let { status, visibility, sensitive, spoilerText } = entries;\n\n // Pre-cleanup\n sensitive = sensitive === 'on'; // checkboxes return \"on\" if checked\n\n // Validation\n /* Let the backend validate this\n if (stringLength(status) > maxCharacters) {\n alert(`Status is too long! Max characters: ${maxCharacters}`);\n return;\n }\n if (\n sensitive &&\n stringLength(status) + stringLength(spoilerText) > maxCharacters\n ) {\n alert(\n `Status and content warning is too long! Max characters: ${maxCharacters}`,\n );\n return;\n }\n */\n if (poll) {\n if (poll.options.length < 2) {\n alert('Poll must have at least 2 options');\n return;\n }\n if (poll.options.some((option) => option === '')) {\n alert('Some poll choices are empty');\n return;\n }\n }\n // TODO: check for URLs and use `charactersReservedPerUrl` to calculate max characters\n\n if (mediaAttachments.length > 0) {\n // If there are media attachments, check if they have no descriptions\n const hasNoDescriptions = mediaAttachments.some(\n (media) => !media.description?.trim?.(),\n );\n if (hasNoDescriptions) {\n const yes = confirm(\n 'Some media have no descriptions. Continue?',\n );\n if (!yes) return;\n }\n }\n\n // Post-cleanup\n spoilerText = (sensitive && spoilerText) || undefined;\n status = status === '' ? undefined : status;\n\n // states.composerState.minimized = true;\n states.composerState.publishing = true;\n setUIState('loading');\n (async () => {\n try {\n console.log('MEDIA ATTACHMENTS', mediaAttachments);\n if (mediaAttachments.length > 0) {\n // Upload media attachments first\n const mediaPromises = mediaAttachments.map((attachment) => {\n const { file, description, id } = attachment;\n console.log('UPLOADING', attachment);\n if (id) {\n // If already uploaded\n return attachment;\n } else {\n const params = removeNullUndefined({\n file,\n description,\n });\n return masto.v2.media.create(params).then((res) => {\n if (res.id) {\n attachment.id = res.id;\n }\n return res;\n });\n }\n });\n const results = await Promise.allSettled(mediaPromises);\n\n // If any failed, return\n if (\n results.some((result) => {\n return result.status === 'rejected' || !result.value?.id;\n })\n ) {\n states.composerState.publishing = false;\n states.composerState.publishingError = true;\n setUIState('error');\n // Alert all the reasons\n results.forEach((result) => {\n if (result.status === 'rejected') {\n console.error(result);\n alert(result.reason || `Attachment #${i} failed`);\n }\n });\n return;\n }\n\n console.log({ results, mediaAttachments });\n }\n\n /* NOTE:\n Using snakecase here because masto.js's `isObject` returns false for `params`, ONLY happens when opening in pop-out window. This is maybe due to `window.masto` variable being passed from the parent window. The check that failed is `x.constructor === Object`, so maybe the `Object` in new window is different than parent window's?\n Code: https://github.com/neet/masto.js/blob/dd0d649067b6a2b6e60fbb0a96597c373a255b00/src/serializers/is-object.ts#L2\n\n // TODO: Note above is no longer true in Masto.js v6. Revisit this.\n */\n let params = {\n status,\n // spoilerText,\n spoiler_text: spoilerText,\n language,\n sensitive,\n poll,\n // mediaIds: mediaAttachments.map((attachment) => attachment.id),\n media_ids: mediaAttachments.map(\n (attachment) => attachment.id,\n ),\n };\n if (editStatus && supports('@mastodon/edit-media-attributes')) {\n params.media_attributes = mediaAttachments.map(\n (attachment) => {\n return {\n id: attachment.id,\n description: attachment.description,\n // focus\n // thumbnail\n };\n },\n );\n } else if (!editStatus) {\n params.visibility = visibility;\n // params.inReplyToId = replyToStatus?.id || undefined;\n params.in_reply_to_id = replyToStatus?.id || undefined;\n }\n params = removeNullUndefined(params);\n console.log('POST', params);\n\n let newStatus;\n if (editStatus) {\n newStatus = await masto.v1.statuses\n .$select(editStatus.id)\n .update(params);\n saveStatus(newStatus, instance, {\n skipThreading: true,\n });\n } else {\n try {\n newStatus = await masto.v1.statuses.create(params, {\n requestInit: {\n headers: {\n 'Idempotency-Key': UID.current,\n },\n },\n });\n } catch (_) {\n // If idempotency key fails, try again without it\n newStatus = await masto.v1.statuses.create(params);\n }\n }\n states.composerState.minimized = false;\n states.composerState.publishing = false;\n setUIState('default');\n\n // Close\n onClose({\n // type: post, reply, edit\n type: editStatus ? 'edit' : replyToStatus ? 'reply' : 'post',\n newStatus,\n instance,\n });\n } catch (e) {\n states.composerState.publishing = false;\n states.composerState.publishingError = true;\n console.error(e);\n alert(e?.reason || e);\n setUIState('error');\n }\n })();\n }}\n >\n
    \n {\n updateCharCount();\n }}\n />\n \n {\n const sensitive = e.target.checked;\n setSensitive(sensitive);\n if (sensitive) {\n spoilerTextRef.current?.focus();\n } else {\n textareaRef.current?.focus();\n }\n }}\n />\n \n {' '}\n \n \n {\n setVisibility(e.target.value);\n }}\n disabled={uiState === 'loading' || !!editStatus}\n >\n \n \n \n \n \n {' '}\n
    \n {\n updateCharCount();\n }}\n maxCharacters={maxCharacters}\n performSearch={(params) => {\n const { type, q, limit } = params;\n if (type === 'accounts') {\n return masto.v1.accounts.search.list({\n q,\n limit,\n resolve: false,\n });\n }\n return masto.v2.search.fetch(params);\n }}\n onTrigger={(action) => {\n if (action?.name === 'custom-emojis') {\n setShowEmoji2Picker({\n defaultSearchTerm: action?.defaultSearchTerm || null,\n });\n } else if (action?.name === 'mention') {\n setShowMentionPicker({\n defaultSearchTerm: action?.defaultSearchTerm || null,\n });\n } else if (\n action?.name === 'auto-detect-language' &&\n action?.languages\n ) {\n setAutoDetectedLanguages(action.languages);\n }\n }}\n />\n {mediaAttachments?.length > 0 && (\n
    \n {mediaAttachments.map((attachment, i) => {\n const { id, file } = attachment;\n const fileID = file?.size + file?.type + file?.name;\n return (\n {\n setMediaAttachments((attachments) => {\n const newAttachments = [...attachments];\n newAttachments[i].description = value;\n return newAttachments;\n });\n }}\n onRemove={() => {\n setMediaAttachments((attachments) => {\n return attachments.filter((_, j) => j !== i);\n });\n }}\n />\n );\n })}\n \n
    \n )}\n {!!poll && (\n {\n if (poll) {\n const newPoll = { ...poll };\n setPoll(newPoll);\n } else {\n setPoll(null);\n }\n }}\n />\n )}\n \n \n \n {/* If maxOptions is not defined or defined and is greater than 1, show poll button */}\n {maxOptions == null ||\n (maxOptions > 1 && (\n <>\n {\n setPoll({\n options: ['', ''],\n expiresIn: 24 * 60 * 60, // 1 day\n multiple: false,\n });\n }}\n >\n \n \n \n ))}\n {/* {\n setShowMentionPicker(true);\n }}\n >\n \n */}\n {\n setShowEmoji2Picker(true);\n }}\n >\n \n \n {!!states.settings.composerGIFPicker && (\n = maxMediaAttachments ||\n !!poll\n }\n onClick={() => {\n setShowGIFPicker(true);\n }}\n >\n GIF\n \n )}\n \n
    \n {uiState === 'loading' ? (\n \n ) : (\n
    \n \n
    \n {showMentionPicker && (\n {\n if (e.target === e.currentTarget) {\n setShowMentionPicker(false);\n }\n }}\n >\n {\n setShowMentionPicker(false);\n }}\n defaultSearchTerm={showMentionPicker?.defaultSearchTerm}\n onSelect={(socialAddress) => {\n const textarea = textareaRef.current;\n if (!textarea) return;\n const { selectionStart, selectionEnd } = textarea;\n const text = textarea.value;\n const textBeforeMention = text.slice(0, selectionStart);\n const spaceBeforeMention = textBeforeMention\n ? /[\\s\\t\\n\\r]$/.test(textBeforeMention)\n ? ''\n : ' '\n : '';\n const textAfterMention = text.slice(selectionEnd);\n const spaceAfterMention = /^[\\s\\t\\n\\r]/.test(textAfterMention)\n ? ''\n : ' ';\n const newText =\n textBeforeMention +\n spaceBeforeMention +\n '@' +\n socialAddress +\n spaceAfterMention +\n textAfterMention;\n textarea.value = newText;\n textarea.selectionStart = textarea.selectionEnd =\n selectionEnd +\n 1 +\n socialAddress.length +\n spaceAfterMention.length;\n textarea.focus();\n textarea.dispatchEvent(new Event('input'));\n }}\n />\n \n )}\n {showEmoji2Picker && (\n {\n if (e.target === e.currentTarget) {\n setShowEmoji2Picker(false);\n }\n }}\n >\n {\n setShowEmoji2Picker(false);\n }}\n defaultSearchTerm={showEmoji2Picker?.defaultSearchTerm}\n onSelect={(emojiShortcode) => {\n const textarea = textareaRef.current;\n if (!textarea) return;\n const { selectionStart, selectionEnd } = textarea;\n const text = textarea.value;\n const textBeforeEmoji = text.slice(0, selectionStart);\n const spaceBeforeEmoji = textBeforeEmoji\n ? /[\\s\\t\\n\\r]$/.test(textBeforeEmoji)\n ? ''\n : ' '\n : '';\n const textAfterEmoji = text.slice(selectionEnd);\n const spaceAfterEmoji = /^[\\s\\t\\n\\r]/.test(textAfterEmoji)\n ? ''\n : ' ';\n const newText =\n textBeforeEmoji +\n spaceBeforeEmoji +\n emojiShortcode +\n spaceAfterEmoji +\n textAfterEmoji;\n textarea.value = newText;\n textarea.selectionStart = textarea.selectionEnd =\n selectionEnd + emojiShortcode.length + spaceAfterEmoji.length;\n textarea.focus();\n textarea.dispatchEvent(new Event('input'));\n }}\n />\n \n )}\n {showGIFPicker && (\n {\n if (e.target === e.currentTarget) {\n setShowGIFPicker(false);\n }\n }}\n >\n setShowGIFPicker(false)}\n onSelect={({ url, type, alt_text }) => {\n console.log('GIF URL', url);\n if (mediaAttachments.length >= maxMediaAttachments) {\n alert(\n `You can only attach up to ${maxMediaAttachments} files.`,\n );\n return;\n }\n // Download the GIF and insert it as media attachment\n (async () => {\n let theToast;\n try {\n theToast = showToast({\n text: 'Downloading GIF…',\n duration: -1,\n });\n const blob = await fetch(url, {\n referrerPolicy: 'no-referrer',\n }).then((res) => res.blob());\n const file = new File(\n [blob],\n type === 'video/mp4' ? 'video.mp4' : 'image.gif',\n {\n type,\n },\n );\n const newMediaAttachments = [\n ...mediaAttachments,\n {\n file,\n type,\n size: file.size,\n id: null,\n description: alt_text || '',\n },\n ];\n setMediaAttachments(newMediaAttachments);\n theToast?.hideToast?.();\n } catch (err) {\n console.error(err);\n theToast?.hideToast?.();\n showToast('Failed to download GIF');\n }\n })();\n }}\n />\n \n )}\n
    \n );\n}\n\nfunction autoResizeTextarea(textarea) {\n if (!textarea) return;\n const { value, offsetHeight, scrollHeight, clientHeight } = textarea;\n if (offsetHeight < window.innerHeight) {\n // NOTE: This check is needed because the offsetHeight return 50000 (really large number) on first render\n // No idea why it does that, will re-investigate in far future\n const offset = offsetHeight - clientHeight;\n const height = value ? scrollHeight + offset + 'px' : null;\n textarea.style.height = height;\n }\n}\n\nasync function _getCustomEmojis(instance, masto) {\n const emojis = await masto.v1.customEmojis.list();\n const visibleEmojis = emojis.filter((e) => e.visibleInPicker);\n const searcher = new Fuse(visibleEmojis, {\n keys: ['shortcode'],\n findAllMatches: true,\n });\n return [visibleEmojis, searcher];\n}\nconst getCustomEmojis = pmem(_getCustomEmojis, {\n // Limit by time to reduce memory usage\n // Cached by instance\n matchesArg: (cacheKeyArg, keyArg) => cacheKeyArg.instance === keyArg.instance,\n maxAge: 30 * 60 * 1000, // 30 minutes\n});\n\nconst detectLangs = (text) => {\n const langs = detectAll(text);\n if (langs?.length) {\n // return max 2\n return langs.slice(0, 2).map((lang) => lang.lang);\n }\n return null;\n};\n\nconst Textarea = forwardRef((props, ref) => {\n const { masto, instance } = api();\n const [text, setText] = useState(ref.current?.value || '');\n const {\n maxCharacters,\n performSearch = () => {},\n onTrigger = () => {},\n ...textareaProps\n } = props;\n // const snapStates = useSnapshot(states);\n // const charCount = snapStates.composerCharacterCount;\n\n // const customEmojis = useRef();\n const searcherRef = useRef();\n useEffect(() => {\n getCustomEmojis(instance, masto)\n .then((r) => {\n const [emojis, searcher] = r;\n searcherRef.current = searcher;\n })\n .catch((e) => {\n console.error(e);\n });\n }, []);\n\n const textExpanderRef = useRef();\n const textExpanderTextRef = useRef('');\n useEffect(() => {\n let handleChange, handleValue, handleCommited;\n if (textExpanderRef.current) {\n handleChange = (e) => {\n // console.log('text-expander-change', e);\n const { key, provide, text } = e.detail;\n textExpanderTextRef.current = text;\n\n if (text === '') {\n provide(\n Promise.resolve({\n matched: false,\n }),\n );\n return;\n }\n\n if (key === ':') {\n // const emojis = customEmojis.current.filter((emoji) =>\n // emoji.shortcode.startsWith(text),\n // );\n // const emojis = filterShortcodes(customEmojis.current, text);\n const results = searcherRef.current?.search(text, {\n limit: 5,\n });\n let html = '';\n results.forEach(({ item: emoji }) => {\n const { shortcode, url } = emoji;\n html += `\n
  • \n \"\" \n ${encodeHTML(shortcode)}\n
  • `;\n });\n html += `
  • More…
  • `;\n // console.log({ emojis, html });\n menu.innerHTML = html;\n provide(\n Promise.resolve({\n matched: results.length > 0,\n fragment: menu,\n }),\n );\n return;\n }\n\n const type = {\n '@': 'accounts',\n '#': 'hashtags',\n }[key];\n provide(\n new Promise((resolve) => {\n const searchResults = performSearch({\n type,\n q: text,\n limit: 5,\n });\n searchResults.then((value) => {\n if (text !== textExpanderTextRef.current) {\n return;\n }\n console.log({ value, type, v: value[type] });\n const results = value[type] || value;\n console.log('RESULTS', value, results);\n let html = '';\n results.forEach((result) => {\n const {\n name,\n avatarStatic,\n displayName,\n username,\n acct,\n emojis,\n history,\n } = result;\n const displayNameWithEmoji = emojifyText(displayName, emojis);\n // const item = menuItem.cloneNode();\n if (acct) {\n html += `\n
  • \n \n \"\"\n \n \n ${displayNameWithEmoji || username}\n
    @${encodeHTML(acct)}\n
    \n
  • \n `;\n } else {\n const total = history?.reduce?.(\n (acc, cur) => acc + +cur.uses,\n 0,\n );\n html += `\n
  • \n #${encodeHTML(name)}\n ${\n total\n ? `${shortenNumber(total)}`\n : ''\n }\n
  • \n `;\n }\n });\n if (type === 'accounts') {\n html += `
  • More…
  • `;\n }\n menu.innerHTML = html;\n console.log('MENU', results, menu);\n resolve({\n matched: results.length > 0,\n fragment: menu,\n });\n });\n }),\n );\n };\n\n textExpanderRef.current.addEventListener(\n 'text-expander-change',\n handleChange,\n );\n\n handleValue = (e) => {\n const { key, item } = e.detail;\n const { value, more } = item.dataset;\n if (key === ':') {\n e.detail.value = value ? `:${value}:` : '​'; // zero-width space\n if (more) {\n // Prevent adding space after the above value\n e.detail.continue = true;\n\n setTimeout(() => {\n onTrigger?.({\n name: 'custom-emojis',\n defaultSearchTerm: more,\n });\n }, 300);\n }\n } else if (key === '@') {\n e.detail.value = value ? `@${value} ` : '​'; // zero-width space\n if (more) {\n e.detail.continue = true;\n setTimeout(() => {\n onTrigger?.({\n name: 'mention',\n defaultSearchTerm: more,\n });\n }, 300);\n }\n } else {\n e.detail.value = `${key}${value}`;\n }\n };\n\n textExpanderRef.current.addEventListener(\n 'text-expander-value',\n handleValue,\n );\n\n handleCommited = (e) => {\n const { input } = e.detail;\n setText(input.value);\n // fire input event\n if (ref.current) {\n const event = new Event('input', { bubbles: true });\n ref.current.dispatchEvent(event);\n }\n };\n\n textExpanderRef.current.addEventListener(\n 'text-expander-committed',\n handleCommited,\n );\n }\n\n return () => {\n if (textExpanderRef.current) {\n textExpanderRef.current.removeEventListener(\n 'text-expander-change',\n handleChange,\n );\n textExpanderRef.current.removeEventListener(\n 'text-expander-value',\n handleValue,\n );\n textExpanderRef.current.removeEventListener(\n 'text-expander-committed',\n handleCommited,\n );\n }\n };\n }, []);\n\n useEffect(() => {\n // Resize observer for textarea\n const textarea = ref.current;\n if (!textarea) return;\n const resizeObserver = new ResizeObserver(() => {\n // Get height of textarea, set height to textExpander\n if (textExpanderRef.current) {\n const { height } = textarea.getBoundingClientRect();\n textExpanderRef.current.style.height = height + 'px';\n }\n });\n resizeObserver.observe(textarea);\n }, []);\n\n const slowHighlightPerf = useRef(0); // increment if slow\n const composeHighlightRef = useRef();\n const throttleHighlightText = useThrottledCallback((text) => {\n if (!composeHighlightRef.current) return;\n if (slowHighlightPerf.current > 3) {\n // After 3 times of lag, disable highlighting\n composeHighlightRef.current.innerHTML = '';\n composeHighlightRef.current = null; // Destroy the whole thing\n throttleHighlightText?.cancel?.();\n return;\n }\n let start;\n let end;\n if (slowHighlightPerf.current <= 3) start = Date.now();\n composeHighlightRef.current.innerHTML =\n highlightText(text, {\n maxCharacters,\n }) + '\\n';\n if (slowHighlightPerf.current <= 3) end = Date.now();\n console.debug('HIGHLIGHT PERF', { start, end, diff: end - start });\n if (start && end && end - start > 50) {\n // if slow, increment\n slowHighlightPerf.current++;\n }\n // Newline to prevent multiple line breaks at the end from being collapsed, no idea why\n }, 500);\n\n const debouncedAutoDetectLanguage = useDebouncedCallback(() => {\n // Make use of the highlightRef to get the DOM\n // Clone the dom\n const dom = composeHighlightRef.current?.cloneNode(true);\n if (!dom) return;\n // Remove mark\n dom.querySelectorAll('mark').forEach((mark) => {\n mark.remove();\n });\n const text = dom.innerText?.trim();\n if (!text) return;\n const langs = detectLangs(text);\n if (langs?.length) {\n onTrigger?.({\n name: 'auto-detect-language',\n languages: langs,\n });\n }\n }, 2000);\n\n return (\n \n {\n // Get line before cursor position after pressing 'Enter'\n const { key, target } = e;\n if (key === 'Enter' && !(e.ctrlKey || e.metaKey)) {\n try {\n const { value, selectionStart } = target;\n const textBeforeCursor = value.slice(0, selectionStart);\n const lastLine = textBeforeCursor.split('\\n').slice(-1)[0];\n if (lastLine) {\n // If line starts with \"- \" or \"12. \"\n if (/^\\s*(-|\\d+\\.)\\s/.test(lastLine)) {\n // insert \"- \" at cursor position\n const [_, preSpaces, bullet, postSpaces, anything] =\n lastLine.match(/^(\\s*)(-|\\d+\\.)(\\s+)(.+)?/) || [];\n if (anything) {\n e.preventDefault();\n const [number] = bullet.match(/\\d+/) || [];\n const newBullet = number ? `${+number + 1}.` : '-';\n const text = `\\n${preSpaces}${newBullet}${postSpaces}`;\n target.setRangeText(text, selectionStart, selectionStart);\n const pos = selectionStart + text.length;\n target.setSelectionRange(pos, pos);\n } else {\n // trim the line before the cursor, then insert new line\n const pos = selectionStart - lastLine.length;\n target.setRangeText('', pos, selectionStart);\n }\n autoResizeTextarea(target);\n target.dispatchEvent(new Event('input'));\n }\n }\n } catch (e) {\n // silent fail\n console.error(e);\n }\n }\n if (composeHighlightRef.current) {\n composeHighlightRef.current.scrollTop = target.scrollTop;\n }\n }}\n onInput={(e) => {\n const { target } = e;\n // Replace zero-width space\n const text = target.value.replace(/\\u200b/g, '');\n setText(text);\n autoResizeTextarea(target);\n props.onInput?.(e);\n throttleHighlightText(text);\n debouncedAutoDetectLanguage();\n }}\n style={{\n width: '100%',\n height: '4em',\n // '--text-weight': (1 + charCount / 140).toFixed(1) || 1,\n }}\n onScroll={(e) => {\n if (composeHighlightRef.current) {\n const { scrollTop } = e.target;\n composeHighlightRef.current.scrollTop = scrollTop;\n }\n }}\n />\n \n \n );\n});\n\nfunction CharCountMeter({ maxCharacters = 500, hidden }) {\n const snapStates = useSnapshot(states);\n const charCount = snapStates.composerCharacterCount;\n const leftChars = maxCharacters - charCount;\n if (hidden) {\n return \n );\n}\n\nfunction prettyBytes(bytes) {\n const units = ['bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n let unitIndex = 0;\n while (bytes >= 1024) {\n bytes /= 1024;\n unitIndex++;\n }\n return `${bytes.toFixed(0).toLocaleString()} ${units[unitIndex]}`;\n}\n\nfunction scaleDimension(matrix, matrixLimit, width, height) {\n // matrix = number of pixels\n // matrixLimit = max number of pixels\n // Calculate new width and height, downsize to within the limit, preserve aspect ratio, no decimals\n const scalingFactor = Math.sqrt(matrixLimit / matrix);\n const newWidth = Math.floor(width * scalingFactor);\n const newHeight = Math.floor(height * scalingFactor);\n return { newWidth, newHeight };\n}\n\nfunction MediaAttachment({\n attachment,\n disabled,\n lang,\n onDescriptionChange = () => {},\n onRemove = () => {},\n}) {\n const [uiState, setUIState] = useState('default');\n const supportsEdit = supports('@mastodon/edit-media-attributes');\n const { type, id, file } = attachment;\n const url = useMemo(\n () => (file ? URL.createObjectURL(file) : attachment.url),\n [file, attachment.url],\n );\n console.log({ attachment });\n\n const checkMaxError = !!file?.size;\n const configuration = checkMaxError ? getCurrentInstanceConfiguration() : {};\n const {\n mediaAttachments: {\n imageSizeLimit,\n imageMatrixLimit,\n videoSizeLimit,\n videoMatrixLimit,\n videoFrameRateLimit,\n } = {},\n } = configuration || {};\n\n const [maxError, setMaxError] = useState(() => {\n if (!checkMaxError) return null;\n if (\n type.startsWith('image') &&\n imageSizeLimit &&\n file.size > imageSizeLimit\n ) {\n return {\n type: 'imageSizeLimit',\n details: {\n imageSize: file.size,\n imageSizeLimit,\n },\n };\n } else if (\n type.startsWith('video') &&\n videoSizeLimit &&\n file.size > videoSizeLimit\n ) {\n return {\n type: 'videoSizeLimit',\n details: {\n videoSize: file.size,\n videoSizeLimit,\n },\n };\n }\n return null;\n });\n\n const [imageMatrix, setImageMatrix] = useState({});\n useEffect(() => {\n if (!checkMaxError || !imageMatrixLimit) return;\n if (imageMatrix?.matrix > imageMatrixLimit) {\n setMaxError({\n type: 'imageMatrixLimit',\n details: {\n imageMatrix: imageMatrix?.matrix,\n imageMatrixLimit,\n width: imageMatrix?.width,\n height: imageMatrix?.height,\n },\n });\n }\n }, [imageMatrix, imageMatrixLimit, checkMaxError]);\n\n const [videoMatrix, setVideoMatrix] = useState({});\n useEffect(() => {\n if (!checkMaxError || !videoMatrixLimit) return;\n if (videoMatrix?.matrix > videoMatrixLimit) {\n setMaxError({\n type: 'videoMatrixLimit',\n details: {\n videoMatrix: videoMatrix?.matrix,\n videoMatrixLimit,\n width: videoMatrix?.width,\n height: videoMatrix?.height,\n },\n });\n }\n }, [videoMatrix, videoMatrixLimit, checkMaxError]);\n\n const [description, setDescription] = useState(attachment.description);\n const [suffixType, subtype] = type.split('/');\n const debouncedOnDescriptionChange = useDebouncedCallback(\n onDescriptionChange,\n 250,\n );\n useEffect(() => {\n debouncedOnDescriptionChange(description);\n }, [description, debouncedOnDescriptionChange]);\n\n const [showModal, setShowModal] = useState(false);\n const textareaRef = useRef(null);\n useEffect(() => {\n let timer;\n if (showModal && textareaRef.current) {\n timer = setTimeout(() => {\n textareaRef.current.focus();\n }, 100);\n }\n return () => {\n clearTimeout(timer);\n };\n }, [showModal]);\n\n const descTextarea = (\n <>\n {!!id && !supportsEdit ? (\n
    \n Uploaded\n

    \n {attachment.description || No description}\n

    \n
    \n ) : (\n {\n const { value } = e.target;\n setDescription(value);\n // debouncedOnDescriptionChange(value);\n }}\n >\n )}\n \n );\n\n const toastRef = useRef(null);\n useEffect(() => {\n return () => {\n toastRef.current?.hideToast?.();\n };\n }, []);\n\n const maxErrorToast = useRef(null);\n\n const maxErrorText = (err) => {\n const { type, details } = err;\n switch (type) {\n case 'imageSizeLimit': {\n const { imageSize, imageSizeLimit } = details;\n return `File size too large. Uploading might encounter issues. Try reduce the file size from ${prettyBytes(\n imageSize,\n )} to ${prettyBytes(imageSizeLimit)} or lower.`;\n }\n case 'imageMatrixLimit': {\n const { imageMatrix, imageMatrixLimit, width, height } = details;\n const { newWidth, newHeight } = scaleDimension(\n imageMatrix,\n imageMatrixLimit,\n width,\n height,\n );\n return `Dimension too large. Uploading might encounter issues. Try reduce dimension from ${width.toLocaleString()}×${height.toLocaleString()}px to ${newWidth.toLocaleString()}×${newHeight.toLocaleString()}px.`;\n }\n case 'videoSizeLimit': {\n const { videoSize, videoSizeLimit } = details;\n return `File size too large. Uploading might encounter issues. Try reduce the file size from ${prettyBytes(\n videoSize,\n )} to ${prettyBytes(videoSizeLimit)} or lower.`;\n }\n case 'videoMatrixLimit': {\n const { videoMatrix, videoMatrixLimit, width, height } = details;\n const { newWidth, newHeight } = scaleDimension(\n videoMatrix,\n videoMatrixLimit,\n width,\n height,\n );\n return `Dimension too large. Uploading might encounter issues. Try reduce dimension from ${width.toLocaleString()}×${height.toLocaleString()}px to ${newWidth.toLocaleString()}×${newHeight.toLocaleString()}px.`;\n }\n case 'videoFrameRateLimit': {\n // Not possible to detect this on client-side for now\n return 'Frame rate too high. Uploading might encounter issues.';\n }\n }\n };\n\n return (\n <>\n
    \n {\n setShowModal(true);\n }}\n >\n {suffixType === 'image' ? (\n {\n if (!checkMaxError) return;\n const { naturalWidth, naturalHeight } = e.target;\n setImageMatrix({\n matrix: naturalWidth * naturalHeight,\n width: naturalWidth,\n height: naturalHeight,\n });\n }}\n />\n ) : suffixType === 'video' || suffixType === 'gifv' ? (\n {\n if (!checkMaxError) return;\n const { videoWidth, videoHeight } = e.target;\n if (videoWidth && videoHeight) {\n setVideoMatrix({\n matrix: videoWidth * videoHeight,\n width: videoWidth,\n height: videoHeight,\n });\n }\n }}\n />\n ) : suffixType === 'audio' ? (\n
    \n {descTextarea}\n
    \n \n \n \n {!!maxError && (\n {\n if (maxErrorToast.current) {\n maxErrorToast.current.hideToast();\n }\n maxErrorToast.current = showToast({\n text: maxErrorText(maxError),\n duration: 10_000,\n });\n }}\n >\n \n \n )}\n
    \n \n {showModal && (\n {\n if (e.target === e.currentTarget) {\n setShowModal(false);\n }\n }}\n >\n
    \n {\n setShowModal(false);\n }}\n >\n \n \n
    \n

    \n {\n {\n image: 'Edit image description',\n video: 'Edit video description',\n audio: 'Edit audio description',\n }[suffixType]\n }\n

    \n
    \n
    \n
    \n {suffixType === 'image' ? (\n \"\"\n ) : suffixType === 'video' || suffixType === 'gifv' ? (\n
    \n
    \n {descTextarea}\n
    \n {suffixType === 'image' &&\n /^(png|jpe?g|gif|webp)$/i.test(subtype) &&\n !!states.settings.mediaAltGenerator &&\n !!IMG_ALT_API_URL && (\n \n \n \n }\n >\n {\n setUIState('loading');\n toastRef.current = showToast({\n text: 'Generating description. Please wait...',\n duration: -1,\n });\n // POST with multipart\n (async function () {\n try {\n const body = new FormData();\n body.append('image', file);\n const response = await fetch(IMG_ALT_API_URL, {\n method: 'POST',\n body,\n }).then((r) => r.json());\n if (response.error) {\n throw new Error(response.error);\n }\n setDescription(response.description);\n } catch (e) {\n console.error(e);\n showToast(\n `Failed to generate description${\n e?.message ? `: ${e.message}` : ''\n }`,\n );\n } finally {\n setUIState('default');\n toastRef.current?.hideToast?.();\n }\n })();\n }}\n >\n \n {lang && lang !== 'en' ? (\n \n Generate description…\n
    \n (English)\n
    \n ) : (\n Generate description…\n )}\n \n {!!lang && lang !== 'en' && (\n {\n setUIState('loading');\n toastRef.current = showToast({\n text: 'Generating description. Please wait...',\n duration: -1,\n });\n // POST with multipart\n (async function () {\n try {\n const body = new FormData();\n body.append('image', file);\n const params = `?lang=${lang}`;\n const response = await fetch(\n IMG_ALT_API_URL + params,\n {\n method: 'POST',\n body,\n },\n ).then((r) => r.json());\n if (response.error) {\n throw new Error(response.error);\n }\n setDescription(response.description);\n } catch (e) {\n console.error(e);\n showToast(\n `Failed to generate description${\n e?.message ? `: ${e.message}` : ''\n }`,\n );\n } finally {\n setUIState('default');\n toastRef.current?.hideToast?.();\n }\n })();\n }}\n >\n \n \n Generate description…\n
    ({localeCode2Text(lang)}){' '}\n \n — experimental\n \n
    \n \n )}\n \n )}\n {\n setShowModal(false);\n }}\n disabled={uiState === 'loading'}\n >\n Done\n \n
    \n
    \n
    \n
    \n \n )}\n \n );\n}\n\nfunction Poll({\n lang,\n poll,\n disabled,\n onInput = () => {},\n maxOptions,\n maxExpiration,\n minExpiration,\n maxCharactersPerOption,\n}) {\n const { options, expiresIn, multiple } = poll;\n\n return (\n
    \n
    \n {options.map((option, i) => (\n
    \n {\n const { value } = e.target;\n options[i] = value;\n onInput(poll);\n }}\n />\n {\n options.splice(i, 1);\n onInput(poll);\n }}\n >\n \n \n
    \n ))}\n
    \n
    \n = maxOptions}\n onClick={() => {\n options.push('');\n onInput(poll);\n }}\n >\n +\n {' '}\n \n \n
    \n
    \n {\n onInput(null);\n }}\n >\n Remove poll\n \n
    \n
    \n );\n}\n\nfunction filterShortcodes(emojis, searchTerm) {\n searchTerm = searchTerm.toLowerCase();\n\n // Return an array of shortcodes that start with or contain the search term, sorted by relevance and limited to the first 5\n return emojis\n .sort((a, b) => {\n let aLower = a.shortcode.toLowerCase();\n let bLower = b.shortcode.toLowerCase();\n\n let aStartsWith = aLower.startsWith(searchTerm);\n let bStartsWith = bLower.startsWith(searchTerm);\n let aContains = aLower.includes(searchTerm);\n let bContains = bLower.includes(searchTerm);\n let bothStartWith = aStartsWith && bStartsWith;\n let bothContain = aContains && bContains;\n\n return bothStartWith\n ? a.length - b.length\n : aStartsWith\n ? -1\n : bStartsWith\n ? 1\n : bothContain\n ? a.length - b.length\n : aContains\n ? -1\n : bContains\n ? 1\n : 0;\n })\n .slice(0, 5);\n}\n\nfunction encodeHTML(str) {\n return str.replace(/[&<>\"']/g, function (char) {\n return '&#' + char.charCodeAt(0) + ';';\n });\n}\n\nfunction removeNullUndefined(obj) {\n for (let key in obj) {\n if (obj[key] === null || obj[key] === undefined) {\n delete obj[key];\n }\n }\n return obj;\n}\n\nfunction MentionModal({\n onClose = () => {},\n onSelect = () => {},\n defaultSearchTerm,\n}) {\n const { masto } = api();\n const [uiState, setUIState] = useState('default');\n const [accounts, setAccounts] = useState([]);\n const [relationshipsMap, setRelationshipsMap] = useState({});\n\n const [selectedIndex, setSelectedIndex] = useState(0);\n\n const loadRelationships = async (accounts) => {\n if (!accounts?.length) return;\n const relationships = await fetchRelationships(accounts, relationshipsMap);\n if (relationships) {\n setRelationshipsMap({\n ...relationshipsMap,\n ...relationships,\n });\n }\n };\n\n const loadAccounts = (term) => {\n if (!term) return;\n setUIState('loading');\n (async () => {\n try {\n const accounts = await masto.v1.accounts.search.list({\n q: term,\n limit: 40,\n resolve: false,\n });\n setAccounts(accounts);\n loadRelationships(accounts);\n setUIState('default');\n } catch (e) {\n setUIState('error');\n console.error(e);\n }\n })();\n };\n\n const debouncedLoadAccounts = useDebouncedCallback(loadAccounts, 1000);\n\n useEffect(() => {\n loadAccounts();\n }, [loadAccounts]);\n\n const inputRef = useRef();\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.focus();\n // Put cursor at the end\n if (inputRef.current.value) {\n inputRef.current.selectionStart = inputRef.current.value.length;\n inputRef.current.selectionEnd = inputRef.current.value.length;\n }\n }\n }, []);\n\n useEffect(() => {\n if (defaultSearchTerm) {\n loadAccounts(defaultSearchTerm);\n }\n }, [defaultSearchTerm]);\n\n const selectAccount = (account) => {\n const socialAddress = account.acct;\n onSelect(socialAddress);\n onClose();\n };\n\n useHotkeys(\n 'enter',\n () => {\n const selectedAccount = accounts[selectedIndex];\n if (selectedAccount) {\n selectAccount(selectedAccount);\n }\n },\n {\n preventDefault: true,\n enableOnFormTags: ['input'],\n },\n );\n\n const listRef = useRef();\n useHotkeys(\n 'down',\n () => {\n if (selectedIndex < accounts.length - 1) {\n setSelectedIndex(selectedIndex + 1);\n } else {\n setSelectedIndex(0);\n }\n setTimeout(() => {\n const selectedItem = listRef.current.querySelector('.selected');\n if (selectedItem) {\n selectedItem.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n inline: 'center',\n });\n }\n }, 1);\n },\n {\n preventDefault: true,\n enableOnFormTags: ['input'],\n },\n );\n\n useHotkeys(\n 'up',\n () => {\n if (selectedIndex > 0) {\n setSelectedIndex(selectedIndex - 1);\n } else {\n setSelectedIndex(accounts.length - 1);\n }\n setTimeout(() => {\n const selectedItem = listRef.current.querySelector('.selected');\n if (selectedItem) {\n selectedItem.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n inline: 'center',\n });\n }\n }, 1);\n },\n {\n preventDefault: true,\n enableOnFormTags: ['input'],\n },\n );\n\n return (\n
    \n {!!onClose && (\n \n )}\n
    \n {\n e.preventDefault();\n debouncedLoadAccounts.flush?.();\n // const searchTerm = inputRef.current.value;\n // debouncedLoadAccounts(searchTerm);\n }}\n >\n {\n const { value } = e.target;\n debouncedLoadAccounts(value);\n }}\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellCheck=\"false\"\n dir=\"auto\"\n defaultValue={defaultSearchTerm || ''}\n />\n \n
    \n
    \n {accounts?.length > 0 ? (\n \n {accounts.map((account, i) => {\n const relationship = relationshipsMap[account.id];\n return (\n \n \n {\n selectAccount(account);\n }}\n >\n \n \n \n );\n })}\n \n ) : uiState === 'loading' ? (\n
    \n \n
    \n ) : uiState === 'error' ? (\n
    \n

    Error loading accounts

    \n
    \n ) : null}\n
    \n
    \n );\n}\n\nfunction CustomEmojisModal({\n masto,\n instance,\n onClose = () => {},\n onSelect = () => {},\n defaultSearchTerm,\n}) {\n const [uiState, setUIState] = useState('default');\n const customEmojisList = useRef([]);\n const [customEmojis, setCustomEmojis] = useState([]);\n const recentlyUsedCustomEmojis = useMemo(\n () => store.account.get('recentlyUsedCustomEmojis') || [],\n );\n const searcherRef = useRef();\n useEffect(() => {\n setUIState('loading');\n (async () => {\n try {\n const [emojis, searcher] = await getCustomEmojis(instance, masto);\n console.log('emojis', emojis);\n searcherRef.current = searcher;\n setCustomEmojis(emojis);\n setUIState('default');\n } catch (e) {\n setUIState('error');\n console.error(e);\n }\n })();\n }, []);\n\n const customEmojisCatList = useMemo(() => {\n // Group emojis by category\n const emojisCat = {\n '--recent--': recentlyUsedCustomEmojis.filter((emoji) =>\n customEmojis.find((e) => e.shortcode === emoji.shortcode),\n ),\n };\n const othersCat = [];\n customEmojis.forEach((emoji) => {\n customEmojisList.current?.push?.(emoji);\n if (!emoji.category) {\n othersCat.push(emoji);\n return;\n }\n if (!emojisCat[emoji.category]) {\n emojisCat[emoji.category] = [];\n }\n emojisCat[emoji.category].push(emoji);\n });\n if (othersCat.length) {\n emojisCat['--others--'] = othersCat;\n }\n return emojisCat;\n }, [customEmojis]);\n\n const scrollableRef = useRef();\n const [matches, setMatches] = useState(null);\n const onFind = useCallback(\n (e) => {\n const { value } = e.target;\n if (value) {\n const results = searcherRef.current?.search(value, {\n limit: CUSTOM_EMOJIS_COUNT,\n });\n setMatches(results.map((r) => r.item));\n scrollableRef.current?.scrollTo?.(0, 0);\n } else {\n setMatches(null);\n }\n },\n [customEmojis],\n );\n useEffect(() => {\n if (defaultSearchTerm && customEmojis?.length) {\n onFind({ target: { value: defaultSearchTerm } });\n }\n }, [defaultSearchTerm, onFind, customEmojis]);\n\n const onSelectEmoji = useCallback(\n (emoji) => {\n onSelect?.(emoji);\n onClose?.();\n\n queueMicrotask(() => {\n let recentlyUsedCustomEmojis =\n store.account.get('recentlyUsedCustomEmojis') || [];\n const recentlyUsedEmojiIndex = recentlyUsedCustomEmojis.findIndex(\n (e) => e.shortcode === emoji.shortcode,\n );\n if (recentlyUsedEmojiIndex !== -1) {\n // Move emoji to index 0\n recentlyUsedCustomEmojis.splice(recentlyUsedEmojiIndex, 1);\n recentlyUsedCustomEmojis.unshift(emoji);\n } else {\n recentlyUsedCustomEmojis.unshift(emoji);\n // Remove unavailable ones\n recentlyUsedCustomEmojis = recentlyUsedCustomEmojis.filter((e) =>\n customEmojisList.current?.find?.(\n (emoji) => emoji.shortcode === e.shortcode,\n ),\n );\n // Limit to 10\n recentlyUsedCustomEmojis = recentlyUsedCustomEmojis.slice(0, 10);\n }\n\n // Store back\n store.account.set('recentlyUsedCustomEmojis', recentlyUsedCustomEmojis);\n });\n },\n [onSelect],\n );\n\n const inputRef = useRef();\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.focus();\n // Put cursor at the end\n if (inputRef.current.value) {\n inputRef.current.selectionStart = inputRef.current.value.length;\n inputRef.current.selectionEnd = inputRef.current.value.length;\n }\n }\n }, []);\n\n return (\n
    \n {!!onClose && (\n \n )}\n
    \n
    \n Custom emojis{' '}\n {uiState === 'loading' ? (\n \n ) : (\n • {instance}\n )}\n
    \n {\n e.preventDefault();\n const emoji = matches[0];\n if (emoji) {\n onSelectEmoji(`:${emoji.shortcode}:`);\n }\n }}\n >\n \n \n
    \n
    \n {matches !== null ? (\n
      \n {matches.map((emoji) => (\n
    • \n {\n onSelectEmoji(`:${emoji.shortcode}:`);\n }}\n showCode\n />\n
    • \n ))}\n
    \n ) : (\n
    \n {uiState === 'error' && (\n
    \n

    Error loading custom emojis

    \n
    \n )}\n {uiState === 'default' &&\n Object.entries(customEmojisCatList).map(\n ([category, emojis]) =>\n !!emojis?.length && (\n <>\n
    \n {{\n '--recent--': 'Recently used',\n '--others--': 'Others',\n }[category] || category}\n
    \n \n \n ),\n )}\n
    \n )}\n
    \n
    \n );\n}\n\nconst CustomEmojisList = memo(({ emojis, onSelect }) => {\n const [max, setMax] = useState(CUSTOM_EMOJIS_COUNT);\n const showMore = emojis.length > max;\n return (\n
    \n {emojis.slice(0, max).map((emoji) => (\n {\n onSelect(`:${emoji.shortcode}:`);\n }}\n />\n ))}\n {showMore && (\n setMax(max + CUSTOM_EMOJIS_COUNT)}\n >\n {(emojis.length - max).toLocaleString()} more…\n \n )}\n
    \n );\n});\n\nconst CustomEmojiButton = memo(({ emoji, onClick, showCode }) => {\n const addEdges = (e) => {\n // Add edge-left or edge-right class based on self position relative to scrollable parent\n // If near left edge, add edge-left, if near right edge, add edge-right\n const buffer = 88;\n const parent = e.currentTarget.closest('main');\n if (parent) {\n const rect = parent.getBoundingClientRect();\n const selfRect = e.currentTarget.getBoundingClientRect();\n const targetClassList = e.currentTarget.classList;\n if (selfRect.left < rect.left + buffer) {\n targetClassList.add('edge-left');\n targetClassList.remove('edge-right');\n } else if (selfRect.right > rect.right - buffer) {\n targetClassList.add('edge-right');\n targetClassList.remove('edge-left');\n } else {\n targetClassList.remove('edge-left', 'edge-right');\n }\n }\n };\n\n return (\n \n \n {!!emoji.staticUrl && (\n \n )}\n \n \n {showCode && (\n <>\n {' '}\n {emoji.shortcode}\n \n )}\n \n );\n});\n\nconst GIFS_PER_PAGE = 20;\nfunction GIFPickerModal({ onClose = () => {}, onSelect = () => {} }) {\n const [uiState, setUIState] = useState('default');\n const [results, setResults] = useState([]);\n const formRef = useRef(null);\n const qRef = useRef(null);\n const currentOffset = useRef(0);\n const scrollableRef = useRef(null);\n\n function fetchGIFs({ offset }) {\n console.log('fetchGIFs', { offset });\n if (!qRef.current?.value) return;\n setUIState('loading');\n scrollableRef.current?.scrollTo?.({\n top: 0,\n left: 0,\n behavior: 'smooth',\n });\n (async () => {\n try {\n const query = {\n api_key: GIPHY_API_KEY,\n q: qRef.current.value,\n rating: 'g',\n limit: GIFS_PER_PAGE,\n bundle: 'messaging_non_clips',\n offset,\n };\n const response = await fetch(\n 'https://api.giphy.com/v1/gifs/search?' + new URLSearchParams(query),\n {\n referrerPolicy: 'no-referrer',\n },\n ).then((r) => r.json());\n currentOffset.current = response.pagination?.offset || 0;\n setResults(response);\n setUIState('results');\n } catch (e) {\n setUIState('error');\n console.error(e);\n }\n })();\n }\n\n useEffect(() => {\n qRef.current?.focus();\n }, []);\n\n const debouncedOnInput = useDebouncedCallback(() => {\n fetchGIFs({ offset: 0 });\n }, 1000);\n\n return (\n
    \n {!!onClose && (\n \n )}\n
    \n {\n e.preventDefault();\n fetchGIFs({ offset: 0 });\n }}\n >\n \n \n \n
    \n
    \n {uiState === 'default' && (\n
    \n

    Type to search GIFs

    \n
    \n )}\n {uiState === 'loading' && !results?.data?.length && (\n
    \n \n
    \n )}\n {results?.data?.length > 0 ? (\n <>\n
      \n {results.data.map((gif) => {\n const { id, images, title, alt_text } = gif;\n const {\n fixed_height_small,\n fixed_height_downsampled,\n fixed_height,\n original,\n } = images;\n const theImage = fixed_height_small?.url\n ? fixed_height_small\n : fixed_height_downsampled?.url\n ? fixed_height_downsampled\n : fixed_height;\n let { url, webp, width, height } = theImage;\n if (+height > 100) {\n width = (width / height) * 100;\n height = 100;\n }\n const urlObj = new URL(url);\n const strippedURL = urlObj.origin + urlObj.pathname;\n let strippedWebP;\n if (webp) {\n const webpObj = new URL(webp);\n strippedWebP = webpObj.origin + webpObj.pathname;\n }\n return (\n
    • \n {\n const { mp4, url } = original;\n const theURL = mp4 || url;\n const urlObj = new URL(theURL);\n const strippedURL = urlObj.origin + urlObj.pathname;\n onClose();\n onSelect({\n url: strippedURL,\n type: mp4 ? 'video/mp4' : 'image/gif',\n alt_text: alt_text || title,\n });\n }}\n >\n \n \n {strippedWebP && (\n \n )}\n {\n e.target.style.backgroundColor = 'transparent';\n }}\n />\n \n
      {alt_text || title}
      \n \n \n
    • \n );\n })}\n
    \n

    \n {results.pagination?.offset > 0 && (\n {\n fetchGIFs({\n offset: results.pagination?.offset - GIFS_PER_PAGE,\n });\n }}\n >\n \n Previous\n \n )}\n \n {results.pagination?.offset + results.pagination?.count <\n results.pagination?.total_count && (\n {\n fetchGIFs({\n offset: results.pagination?.offset + GIFS_PER_PAGE,\n });\n }}\n >\n Next \n \n )}\n

    \n \n ) : (\n uiState === 'results' && (\n
    \n

    No results

    \n
    \n )\n )}\n {uiState === 'error' && (\n
    \n

    Error loading GIFs

    \n
    \n )}\n
    \n
    \n );\n}\n\nexport default Compose;\n"],"names":["Combobox","input","list","tabInsertsSuggestions","defaultFirstOption","event","keyboardBindings","trackComposition","commitWithElement","_a","visible","indexDiff","focusEl","els","focusIndex","indexOfItem","newIndex","target","el","scrollTo","combobox","commit","fireCommitEvent","container","inViewport","element","scrollTop","containerBottom","top","bottom","boundary","query","text","key","cursor","multiWord","lookBackIndex","lastMatchPosition","keyIndex","pre","CustomHTMLElement","InputStyleCloneUpdateEvent","CloneRegistry","_InputStyleCloneElement","__privateAdd","_usingInput","_updateLayout","_requestUpdateLayout","_updateStyles","_updateText","_styleObserver","__privateMethod","updateStyles_fn","_resizeObserver","requestUpdateLayout_fn","_inputRef","_container","_xOffset","_yOffset","_isLayoutUpdating","_onInput","updateText_fn","_onDocumentScrollOrResize","usingInput_fn","__privateSet","__privateGet","clone","fn","updateLayout_fn","inputStyle","inputRect","cloneRect","prop","propertiesToCopy","InputStyleCloneElement","e","_InputRange","startOffset","endOffset","_styleClone","_cloneElement","_clampOffset","_createCloneRange","_inputElement","_startOffset","_endOffset","selectionStart","selectionEnd","offset","clampOffset_fn","toStart","createCloneRange_fn","styleClone_get","cloneElement_get","range","textNode","InputRange","states","TextExpander","expander","match","menu","_b","position","caretRect","targetPosition","currentPosition","delta","currentStyle","item","beginning","remaining","detail","suffix","value","found","providers","provide","result","x","TextExpanderElement","keysAttr","keys","multiWordAttr","globalMultiWord","state","ansiRegex","onlyFirst","pattern","regex","stripAnsi","string","segmenter","stringLength","countAnsiEscapeCodes","length","_","poweredByGiphyURL","PHANPY_IMG_ALT_API_URL","IMG_ALT_API_URL","PHANPY_GIPHY_API_KEY","GIPHY_API_KEY","import","supportedLanguagesMap","supportedLanguages","reduce","acc","l","code","common","native","expiryOptions","expirySeconds","Object","values","oneDay","expiresInFromExpiresAt","expiresAt","Date","getTime","now","find","s","document","createElement","role","className","windowMargin","observer","IntersectionObserver","entries","forEach","entry","isIntersecting","left","width","boundingClientRect","innerWidth","window","style","observe","DEFAULT_LANG","localeMatch","Intl","DateTimeFormat","resolvedOptions","locale","navigator","languages","map","urlRegexObj","RegExp","urlRegex","source","flags","usernameRegex","urlPlaceholder","countableText","inputText","replace","USERNAME_RE","MENTION_RE","HASHTAG_RE","SHORTCODE_RE_FRAGMENT","SCAN_RE","Segmenter","highlightText","maxCharacters","Infinity","html","composerCharacterCount","withinLimitHTML","exceedLimitHTML","htmlSegments","segment","index","rtf","RelativeTimeFormat","CUSTOM_EMOJIS_COUNT","Compose","onClose","replyToStatus","editStatus","draftStatus","standalone","hasOpener","console","masto","instance","uiState","setUIState","useState","UID","uid","log","currentAccount","currentAccountInfo","maxMediaAttachments","charactersReservedPerUrl","imageMatrixLimit","supportedMimeTypes","imageSizeLimit","videoSizeLimit","videoMatrixLimit","videoFrameRateLimit","maxExpiration","maxOptions","maxCharactersPerOption","minExpiration","spoilerTextRef","useRef","textareaRef","store","prevLanguage","language","sensitive","setMediaAttachments","setLanguage","oninputTextarea","poll","focusTextarea","dispatchEvent","setTimeout","current","spoilerText","useEffect","visibility2","language2","sensitive2","visibility","m","allMentions","prefs","setSensitive","poll2","mediaAttachments","options","expiresIn","statusSource","setPoll","composablePoll","mediaAttachments2","setVisibility","status","beforeUnloadCopy","hasValue","hasMediaAttachments","isSelf","hasOnlyAcct","dataset","confirmClose","hasIDMediaAttachments","id","handleBeforeUnload","sameWithSource","getCharCount","updateCharCount","supportsCloseWatcher","useHotkeys","yes","addEventListener","capture","modals","hasModal","hasOnlyComposer","prevBackgroundDraft","count","escDownRef","draftKey","ignoreEventWhen","useCloseWatcher","canClose","db","backgroundDraft","saveUnsavedDraft","useInterval","handleItems","account","username","acct","items","i2","file","files","drafts","allowedFiles","updatedAt","then","debug","error","mediaFiles","handleDragover","includes","showMentionPicker","setShowMentionPicker","showEmoji2Picker","setShowEmoji2Picker","showGIFPicker","autoDetectedLanguages","setAutoDetectedLanguages","topSupportedLanguages","restSupportedLanguages","useMemo","topLanguages","contentTranslationHideLanguages","max","restLanguages","commonB","size","URL","commonA","codeA","codeB","replyToStatusMonthsAgo","dataTransfer","_jsxs","removeEventListener","_jsx","children","icon","passData","onMinimize","alert","Icon","settings","push","openCompose","sort","class","avatarStatic","instanceURL","type","onClick","Status","confirmText","_Fragment","opener","formRef","composerState","formData","previewMode","option","media","pointerEvents","opacity","mediaPromises","attachment","onKeyDown","params2","removeNullUndefined","res","results","some","params","description","saveStatus","newStatus","allSettled","e2","media_attributes","in_reply_to_id","Textarea","onChange","limit","action","title","name","MediaAttachment","attachments","newAttachments","required","fileID","performSearch","q","v1","search","resolve","v2","fetch","onTrigger","defaultSearchTerm","newPoll","onDescriptionChange","i","checked","onInput","accept","multiple","disabled","setShowGIFPicker","Array","url","Loader","CharCountMeter","MentionModal","socialAddress","textarea","abrupt","textBeforeMention","textAfterMention","newText","spaceBeforeMention","spaceAfterMention","set","emojiShortcode","Modal","spaceBeforeEmoji","textBeforeEmoji","textAfterEmoji","spaceAfterEmoji","onSelect","GIFPickerModal","alt_text","slice","theToast","showToast","currentTarget","blob","offsetHeight","scrollHeight","clientHeight","height","searcher","Fuse","visibleEmojis","getCustomEmojis","pmem","_getCustomEmojis","keyArg","cacheKeyArg","langs","referrerPolicy","lang","newMediaAttachments","api","setText","ref","textareaProps","props","searcherRef","r","emojis","textExpanderRef","textExpanderTextRef","text2","emoji","shortcode","detectLangs","encodeHTML","forwardRef","handleChange","total","history","cur","matched","handleValue","more","searchResults","v","displayName","handleCommited","shortenNumber","throttleHighlightText","composeHighlightRef","slowHighlightPerf","end","start","debouncedAutoDetectLanguage","useDebouncedCallback","dom","mark","resizeObserver","lastLine","bullet","postSpaces","anything","pos","querySelectorAll","innerText","autoResizeTextarea","dir","rows","cols","hidden","charCount","leftChars","ctrlKey","setRangeText","setSelectionRange","prettyBytes","bytes","unitIndex","units","scaleDimension","newWidth","scalingFactor","newHeight","onRemove","supportsEdit","supports","onScroll","checkMaxError","configuration","getCurrentInstanceConfiguration","snapStates","imageMatrix","setImageMatrix","setMaxError","Math","matrixLimit","videoMatrix","setDescription","debouncedOnDescriptionChange","showModal","maxError","details","suffixType","matrix","toastRef","maxErrorToast","maxErrorText","err","type2","imageSizeLimit2","imageSize","subtype","imageMatrixLimit2","timer","videoSize","clearTimeout","videoSizeLimit2","descTextarea","videoMatrix2","videoMatrixLimit2","autoCapitalize","autoComplete","naturalWidth","naturalHeight","videoHeight","videoWidth","setVideoMatrix","setShowModal","onLoad","disablePictureInPicture","preload","onLoadedMetadata","Menu2","body","response","MenuItem","menuButton","localeCode2Text","append","Poll","label","maxlength","placeholder","str","char","obj","accounts2","fetchRelationships","relationshipsMap","setRelationshipsMap","setAccounts","loadAccounts","inputRef","filterShortcodes","searchTerm","b","aLower","a","bStartsWith","aContains","bContains","selectAccount","selectedAccount","accounts","selectedIndex","listRef","setSelectedIndex","selectedItem","relationships","term","loadRelationships","debouncedLoadAccounts","enableOnFormTags","AccountBlock","relationship","inline","customEmojis","setCustomEmojis","onSubmit","recentlyUsedCustomEmojis","autocorrect","customEmojisList","othersCat","emojisCat","useCallback","_c","scrollableRef","setMatches","onFind","onSelectEmoji","recentlyUsedCustomEmojis2","recentlyUsedEmojiIndex","emoji2","customEmojisCatList","category","matches","CustomEmojiButton","queueMicrotask","splice","CustomEmojisList","setMax","showMore","memo","showCode","parent","rect","selfRect","targetClassList","addEdges","GIFS_PER_PAGE","setResults","qRef","currentOffset","closest","fetchGIFs","remove","srcSet","staticUrl","src","decoding","debouncedOnInput","gif","fixed_height_downsampled","original","pagination","fixed_height_small","fixed_height","theImage","urlObj","strippedWebP","webp","webpObj","url2","theURL","mp4","urlObj2","strippedURL2","strippedURL","images"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]} \ No newline at end of file diff --git a/assets/grouped-notifications-xYMFVY91.jpg b/assets/grouped-notifications-xYMFVY91.jpg new file mode 100644 index 0000000..969b6df Binary files /dev/null and b/assets/grouped-notifications-xYMFVY91.jpg differ diff --git a/assets/icons/add-circle-line--O-MfyNy.js b/assets/icons/add-circle-line--O-MfyNy.js new file mode 100644 index 0000000..65c5611 --- /dev/null +++ b/assets/icons/add-circle-line--O-MfyNy.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=add-circle-line--O-MfyNy.js.map diff --git a/assets/icons/add-circle-line--O-MfyNy.js.map b/assets/icons/add-circle-line--O-MfyNy.js.map new file mode 100644 index 0000000..4f09336 --- /dev/null +++ b/assets/icons/add-circle-line--O-MfyNy.js.map @@ -0,0 +1 @@ +{"version":3,"file":"add-circle-line--O-MfyNy.js","sources":["../../../node_modules/@iconify-icons/mingcute/add-circle-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,wzBACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/alert-line-zyc6hy8V.js b/assets/icons/alert-line-zyc6hy8V.js new file mode 100644 index 0000000..f890892 --- /dev/null +++ b/assets/icons/alert-line-zyc6hy8V.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=alert-line-zyc6hy8V.js.map diff --git a/assets/icons/alert-line-zyc6hy8V.js.map b/assets/icons/alert-line-zyc6hy8V.js.map new file mode 100644 index 0000000..15fdc0a --- /dev/null +++ b/assets/icons/alert-line-zyc6hy8V.js.map @@ -0,0 +1 @@ +{"version":3,"file":"alert-line-zyc6hy8V.js","sources":["../../../node_modules/@iconify-icons/mingcute/alert-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,m2BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/android-2-line-uPwvVubH.js b/assets/icons/android-2-line-uPwvVubH.js new file mode 100644 index 0000000..27de5b5 --- /dev/null +++ b/assets/icons/android-2-line-uPwvVubH.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=android-2-line-uPwvVubH.js.map diff --git a/assets/icons/android-2-line-uPwvVubH.js.map b/assets/icons/android-2-line-uPwvVubH.js.map new file mode 100644 index 0000000..677e00d --- /dev/null +++ b/assets/icons/android-2-line-uPwvVubH.js.map @@ -0,0 +1 @@ +{"version":3,"file":"android-2-line-uPwvVubH.js","sources":["../../../node_modules/@iconify-icons/mingcute/android-2-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,q/BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/announcement-line-MSlAmDH1.js b/assets/icons/announcement-line-MSlAmDH1.js new file mode 100644 index 0000000..59d8af1 --- /dev/null +++ b/assets/icons/announcement-line-MSlAmDH1.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=announcement-line-MSlAmDH1.js.map diff --git a/assets/icons/announcement-line-MSlAmDH1.js.map b/assets/icons/announcement-line-MSlAmDH1.js.map new file mode 100644 index 0000000..4ec4ff0 --- /dev/null +++ b/assets/icons/announcement-line-MSlAmDH1.js.map @@ -0,0 +1 @@ +{"version":3,"file":"announcement-line-MSlAmDH1.js","sources":["../../../node_modules/@iconify-icons/mingcute/announcement-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,+pCACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/arrow-down-circle-line-mpqFtRtO.js b/assets/icons/arrow-down-circle-line-mpqFtRtO.js new file mode 100644 index 0000000..a314118 --- /dev/null +++ b/assets/icons/arrow-down-circle-line-mpqFtRtO.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=arrow-down-circle-line-mpqFtRtO.js.map diff --git a/assets/icons/arrow-down-circle-line-mpqFtRtO.js.map b/assets/icons/arrow-down-circle-line-mpqFtRtO.js.map new file mode 100644 index 0000000..26b733b --- /dev/null +++ b/assets/icons/arrow-down-circle-line-mpqFtRtO.js.map @@ -0,0 +1 @@ +{"version":3,"file":"arrow-down-circle-line-mpqFtRtO.js","sources":["../../../node_modules/@iconify-icons/mingcute/arrow-down-circle-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,m6BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/arrow-down-line-0TRJUP_K.js b/assets/icons/arrow-down-line-0TRJUP_K.js new file mode 100644 index 0000000..79a7aaa --- /dev/null +++ b/assets/icons/arrow-down-line-0TRJUP_K.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=arrow-down-line-0TRJUP_K.js.map diff --git a/assets/icons/arrow-down-line-0TRJUP_K.js.map b/assets/icons/arrow-down-line-0TRJUP_K.js.map new file mode 100644 index 0000000..c9afdd9 --- /dev/null +++ b/assets/icons/arrow-down-line-0TRJUP_K.js.map @@ -0,0 +1 @@ +{"version":3,"file":"arrow-down-line-0TRJUP_K.js","sources":["../../../node_modules/@iconify-icons/mingcute/arrow-down-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,6vBACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/arrow-left-line-_YC6-XGG.js b/assets/icons/arrow-left-line-_YC6-XGG.js new file mode 100644 index 0000000..2e113bc --- /dev/null +++ b/assets/icons/arrow-left-line-_YC6-XGG.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=arrow-left-line-_YC6-XGG.js.map diff --git a/assets/icons/arrow-left-line-_YC6-XGG.js.map b/assets/icons/arrow-left-line-_YC6-XGG.js.map new file mode 100644 index 0000000..7be3f99 --- /dev/null +++ b/assets/icons/arrow-left-line-_YC6-XGG.js.map @@ -0,0 +1 @@ +{"version":3,"file":"arrow-left-line-_YC6-XGG.js","sources":["../../../node_modules/@iconify-icons/mingcute/arrow-left-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,+vBACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/arrow-right-line-PypiEqpu.js b/assets/icons/arrow-right-line-PypiEqpu.js new file mode 100644 index 0000000..5a7f5de --- /dev/null +++ b/assets/icons/arrow-right-line-PypiEqpu.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=arrow-right-line-PypiEqpu.js.map diff --git a/assets/icons/arrow-right-line-PypiEqpu.js.map b/assets/icons/arrow-right-line-PypiEqpu.js.map new file mode 100644 index 0000000..1dd3644 --- /dev/null +++ b/assets/icons/arrow-right-line-PypiEqpu.js.map @@ -0,0 +1 @@ +{"version":3,"file":"arrow-right-line-PypiEqpu.js","sources":["../../../node_modules/@iconify-icons/mingcute/arrow-right-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,iwBACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/arrow-up-circle-line-e3kZqEZN.js b/assets/icons/arrow-up-circle-line-e3kZqEZN.js new file mode 100644 index 0000000..a7e1755 --- /dev/null +++ b/assets/icons/arrow-up-circle-line-e3kZqEZN.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=arrow-up-circle-line-e3kZqEZN.js.map diff --git a/assets/icons/arrow-up-circle-line-e3kZqEZN.js.map b/assets/icons/arrow-up-circle-line-e3kZqEZN.js.map new file mode 100644 index 0000000..148d152 --- /dev/null +++ b/assets/icons/arrow-up-circle-line-e3kZqEZN.js.map @@ -0,0 +1 @@ +{"version":3,"file":"arrow-up-circle-line-e3kZqEZN.js","sources":["../../../node_modules/@iconify-icons/mingcute/arrow-up-circle-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,65BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/arrow-up-line-fcuKqhVE.js b/assets/icons/arrow-up-line-fcuKqhVE.js new file mode 100644 index 0000000..e457bae --- /dev/null +++ b/assets/icons/arrow-up-line-fcuKqhVE.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=arrow-up-line-fcuKqhVE.js.map diff --git a/assets/icons/arrow-up-line-fcuKqhVE.js.map b/assets/icons/arrow-up-line-fcuKqhVE.js.map new file mode 100644 index 0000000..fdf9436 --- /dev/null +++ b/assets/icons/arrow-up-line-fcuKqhVE.js.map @@ -0,0 +1 @@ +{"version":3,"file":"arrow-up-line-fcuKqhVE.js","sources":["../../../node_modules/@iconify-icons/mingcute/arrow-up-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,+vBACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/arrows-down-line-ovOF9r0o.js b/assets/icons/arrows-down-line-ovOF9r0o.js new file mode 100644 index 0000000..efea8e6 --- /dev/null +++ b/assets/icons/arrows-down-line-ovOF9r0o.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=arrows-down-line-ovOF9r0o.js.map diff --git a/assets/icons/arrows-down-line-ovOF9r0o.js.map b/assets/icons/arrows-down-line-ovOF9r0o.js.map new file mode 100644 index 0000000..c538245 --- /dev/null +++ b/assets/icons/arrows-down-line-ovOF9r0o.js.map @@ -0,0 +1 @@ +{"version":3,"file":"arrows-down-line-ovOF9r0o.js","sources":["../../../node_modules/@iconify-icons/mingcute/arrows-down-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,22BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/arrows-right-line-HF4HILdT.js b/assets/icons/arrows-right-line-HF4HILdT.js new file mode 100644 index 0000000..470d767 --- /dev/null +++ b/assets/icons/arrows-right-line-HF4HILdT.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=arrows-right-line-HF4HILdT.js.map diff --git a/assets/icons/arrows-right-line-HF4HILdT.js.map b/assets/icons/arrows-right-line-HF4HILdT.js.map new file mode 100644 index 0000000..834c4b5 --- /dev/null +++ b/assets/icons/arrows-right-line-HF4HILdT.js.map @@ -0,0 +1 @@ +{"version":3,"file":"arrows-right-line-HF4HILdT.js","sources":["../../../node_modules/@iconify-icons/mingcute/arrows-right-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,02BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/at-line-9vJS_Hnl.js b/assets/icons/at-line-9vJS_Hnl.js new file mode 100644 index 0000000..af36287 --- /dev/null +++ b/assets/icons/at-line-9vJS_Hnl.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=at-line-9vJS_Hnl.js.map diff --git a/assets/icons/at-line-9vJS_Hnl.js.map b/assets/icons/at-line-9vJS_Hnl.js.map new file mode 100644 index 0000000..e650267 --- /dev/null +++ b/assets/icons/at-line-9vJS_Hnl.js.map @@ -0,0 +1 @@ +{"version":3,"file":"at-line-9vJS_Hnl.js","sources":["../../../node_modules/@iconify-icons/mingcute/at-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,8xCACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/attachment-line-C2PUa1Ke.js b/assets/icons/attachment-line-C2PUa1Ke.js new file mode 100644 index 0000000..aa7968d --- /dev/null +++ b/assets/icons/attachment-line-C2PUa1Ke.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=attachment-line-C2PUa1Ke.js.map diff --git a/assets/icons/attachment-line-C2PUa1Ke.js.map b/assets/icons/attachment-line-C2PUa1Ke.js.map new file mode 100644 index 0000000..eeaa929 --- /dev/null +++ b/assets/icons/attachment-line-C2PUa1Ke.js.map @@ -0,0 +1 @@ +{"version":3,"file":"attachment-line-C2PUa1Ke.js","sources":["../../../node_modules/@iconify-icons/mingcute/attachment-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,u9BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/bookmark-line-D6jQ7QFs.js b/assets/icons/bookmark-line-D6jQ7QFs.js new file mode 100644 index 0000000..e0cb878 --- /dev/null +++ b/assets/icons/bookmark-line-D6jQ7QFs.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=bookmark-line-D6jQ7QFs.js.map diff --git a/assets/icons/bookmark-line-D6jQ7QFs.js.map b/assets/icons/bookmark-line-D6jQ7QFs.js.map new file mode 100644 index 0000000..d5848ed --- /dev/null +++ b/assets/icons/bookmark-line-D6jQ7QFs.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bookmark-line-D6jQ7QFs.js","sources":["../../../node_modules/@iconify-icons/mingcute/bookmark-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,w1BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/building-5-line-ew7lu83B.js b/assets/icons/building-5-line-ew7lu83B.js new file mode 100644 index 0000000..4256ed9 --- /dev/null +++ b/assets/icons/building-5-line-ew7lu83B.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=building-5-line-ew7lu83B.js.map diff --git a/assets/icons/building-5-line-ew7lu83B.js.map b/assets/icons/building-5-line-ew7lu83B.js.map new file mode 100644 index 0000000..513195c --- /dev/null +++ b/assets/icons/building-5-line-ew7lu83B.js.map @@ -0,0 +1 @@ +{"version":3,"file":"building-5-line-ew7lu83B.js","sources":["../../../node_modules/@iconify-icons/mingcute/building-5-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,qzBACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/bus-2-line-XuQdDZ_w.js b/assets/icons/bus-2-line-XuQdDZ_w.js new file mode 100644 index 0000000..885b8aa --- /dev/null +++ b/assets/icons/bus-2-line-XuQdDZ_w.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=bus-2-line-XuQdDZ_w.js.map diff --git a/assets/icons/bus-2-line-XuQdDZ_w.js.map b/assets/icons/bus-2-line-XuQdDZ_w.js.map new file mode 100644 index 0000000..f6c08c1 --- /dev/null +++ b/assets/icons/bus-2-line-XuQdDZ_w.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bus-2-line-XuQdDZ_w.js","sources":["../../../node_modules/@iconify-icons/mingcute/bus-2-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,orCACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/calendar-month-line-VoXZVWAe.js b/assets/icons/calendar-month-line-VoXZVWAe.js new file mode 100644 index 0000000..0df6506 --- /dev/null +++ b/assets/icons/calendar-month-line-VoXZVWAe.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=calendar-month-line-VoXZVWAe.js.map diff --git a/assets/icons/calendar-month-line-VoXZVWAe.js.map b/assets/icons/calendar-month-line-VoXZVWAe.js.map new file mode 100644 index 0000000..7a3c5b6 --- /dev/null +++ b/assets/icons/calendar-month-line-VoXZVWAe.js.map @@ -0,0 +1 @@ +{"version":3,"file":"calendar-month-line-VoXZVWAe.js","sources":["../../../node_modules/@iconify-icons/mingcute/calendar-month-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,6+BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/chart-bar-line-5r_DfN2w.js b/assets/icons/chart-bar-line-5r_DfN2w.js new file mode 100644 index 0000000..a2a0f1d --- /dev/null +++ b/assets/icons/chart-bar-line-5r_DfN2w.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=chart-bar-line-5r_DfN2w.js.map diff --git a/assets/icons/chart-bar-line-5r_DfN2w.js.map b/assets/icons/chart-bar-line-5r_DfN2w.js.map new file mode 100644 index 0000000..f6cfa9c --- /dev/null +++ b/assets/icons/chart-bar-line-5r_DfN2w.js.map @@ -0,0 +1 @@ +{"version":3,"file":"chart-bar-line-5r_DfN2w.js","sources":["../../../node_modules/@iconify-icons/mingcute/chart-bar-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,wwBACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/chart-line-line-pHaLt6yC.js b/assets/icons/chart-line-line-pHaLt6yC.js new file mode 100644 index 0000000..bc32fa0 --- /dev/null +++ b/assets/icons/chart-line-line-pHaLt6yC.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=chart-line-line-pHaLt6yC.js.map diff --git a/assets/icons/chart-line-line-pHaLt6yC.js.map b/assets/icons/chart-line-line-pHaLt6yC.js.map new file mode 100644 index 0000000..320fd83 --- /dev/null +++ b/assets/icons/chart-line-line-pHaLt6yC.js.map @@ -0,0 +1 @@ +{"version":3,"file":"chart-line-line-pHaLt6yC.js","sources":["../../../node_modules/@iconify-icons/mingcute/chart-line-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,q6BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/chat-3-line-F0xcdpXY.js b/assets/icons/chat-3-line-F0xcdpXY.js new file mode 100644 index 0000000..e737b8a --- /dev/null +++ b/assets/icons/chat-3-line-F0xcdpXY.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=chat-3-line-F0xcdpXY.js.map diff --git a/assets/icons/chat-3-line-F0xcdpXY.js.map b/assets/icons/chat-3-line-F0xcdpXY.js.map new file mode 100644 index 0000000..46d04b8 --- /dev/null +++ b/assets/icons/chat-3-line-F0xcdpXY.js.map @@ -0,0 +1 @@ +{"version":3,"file":"chat-3-line-F0xcdpXY.js","sources":["../../../node_modules/@iconify-icons/mingcute/chat-3-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,khCACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/check-circle-line-sE41WGxF.js b/assets/icons/check-circle-line-sE41WGxF.js new file mode 100644 index 0000000..315154a --- /dev/null +++ b/assets/icons/check-circle-line-sE41WGxF.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=check-circle-line-sE41WGxF.js.map diff --git a/assets/icons/check-circle-line-sE41WGxF.js.map b/assets/icons/check-circle-line-sE41WGxF.js.map new file mode 100644 index 0000000..3df91ce --- /dev/null +++ b/assets/icons/check-circle-line-sE41WGxF.js.map @@ -0,0 +1 @@ +{"version":3,"file":"check-circle-line-sE41WGxF.js","sources":["../../../node_modules/@iconify-icons/mingcute/check-circle-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,u3BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/clipboard-line-9F_Yeo71.js b/assets/icons/clipboard-line-9F_Yeo71.js new file mode 100644 index 0000000..d08da46 --- /dev/null +++ b/assets/icons/clipboard-line-9F_Yeo71.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=clipboard-line-9F_Yeo71.js.map diff --git a/assets/icons/clipboard-line-9F_Yeo71.js.map b/assets/icons/clipboard-line-9F_Yeo71.js.map new file mode 100644 index 0000000..049bf14 --- /dev/null +++ b/assets/icons/clipboard-line-9F_Yeo71.js.map @@ -0,0 +1 @@ +{"version":3,"file":"clipboard-line-9F_Yeo71.js","sources":["../../../node_modules/@iconify-icons/mingcute/clipboard-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,29BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/close-circle-line-qd3g541O.js b/assets/icons/close-circle-line-qd3g541O.js new file mode 100644 index 0000000..15d9b42 --- /dev/null +++ b/assets/icons/close-circle-line-qd3g541O.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=close-circle-line-qd3g541O.js.map diff --git a/assets/icons/close-circle-line-qd3g541O.js.map b/assets/icons/close-circle-line-qd3g541O.js.map new file mode 100644 index 0000000..ba75cd3 --- /dev/null +++ b/assets/icons/close-circle-line-qd3g541O.js.map @@ -0,0 +1 @@ +{"version":3,"file":"close-circle-line-qd3g541O.js","sources":["../../../node_modules/@iconify-icons/mingcute/close-circle-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,25BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/close-line-YTE7hIJE.js b/assets/icons/close-line-YTE7hIJE.js new file mode 100644 index 0000000..93468be --- /dev/null +++ b/assets/icons/close-line-YTE7hIJE.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=close-line-YTE7hIJE.js.map diff --git a/assets/icons/close-line-YTE7hIJE.js.map b/assets/icons/close-line-YTE7hIJE.js.map new file mode 100644 index 0000000..0fef4f6 --- /dev/null +++ b/assets/icons/close-line-YTE7hIJE.js.map @@ -0,0 +1 @@ +{"version":3,"file":"close-line-YTE7hIJE.js","sources":["../../../node_modules/@iconify-icons/mingcute/close-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,+zBACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/cloud-line-abe0HgFS.js b/assets/icons/cloud-line-abe0HgFS.js new file mode 100644 index 0000000..347cb2b --- /dev/null +++ b/assets/icons/cloud-line-abe0HgFS.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=cloud-line-abe0HgFS.js.map diff --git a/assets/icons/cloud-line-abe0HgFS.js.map b/assets/icons/cloud-line-abe0HgFS.js.map new file mode 100644 index 0000000..1accd33 --- /dev/null +++ b/assets/icons/cloud-line-abe0HgFS.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cloud-line-abe0HgFS.js","sources":["../../../node_modules/@iconify-icons/mingcute/cloud-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,62BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/code-line-h4RWLaak.js b/assets/icons/code-line-h4RWLaak.js new file mode 100644 index 0000000..04e400f --- /dev/null +++ b/assets/icons/code-line-h4RWLaak.js @@ -0,0 +1,2 @@ +const a={width:24,height:24,body:''};export{a as default}; +//# sourceMappingURL=code-line-h4RWLaak.js.map diff --git a/assets/icons/code-line-h4RWLaak.js.map b/assets/icons/code-line-h4RWLaak.js.map new file mode 100644 index 0000000..81ab95f --- /dev/null +++ b/assets/icons/code-line-h4RWLaak.js.map @@ -0,0 +1 @@ +{"version":3,"file":"code-line-h4RWLaak.js","sources":["../../../node_modules/@iconify-icons/mingcute/code-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,kbACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/comment-2-line-xEXuT-Ip.js b/assets/icons/comment-2-line-xEXuT-Ip.js new file mode 100644 index 0000000..e1be968 --- /dev/null +++ b/assets/icons/comment-2-line-xEXuT-Ip.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=comment-2-line-xEXuT-Ip.js.map diff --git a/assets/icons/comment-2-line-xEXuT-Ip.js.map b/assets/icons/comment-2-line-xEXuT-Ip.js.map new file mode 100644 index 0000000..70f58be --- /dev/null +++ b/assets/icons/comment-2-line-xEXuT-Ip.js.map @@ -0,0 +1 @@ +{"version":3,"file":"comment-2-line-xEXuT-Ip.js","sources":["../../../node_modules/@iconify-icons/mingcute/comment-2-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,4oCACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/copy-2-line-mPSDKieb.js b/assets/icons/copy-2-line-mPSDKieb.js new file mode 100644 index 0000000..fb856b0 --- /dev/null +++ b/assets/icons/copy-2-line-mPSDKieb.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=copy-2-line-mPSDKieb.js.map diff --git a/assets/icons/copy-2-line-mPSDKieb.js.map b/assets/icons/copy-2-line-mPSDKieb.js.map new file mode 100644 index 0000000..1e2014e --- /dev/null +++ b/assets/icons/copy-2-line-mPSDKieb.js.map @@ -0,0 +1 @@ +{"version":3,"file":"copy-2-line-mPSDKieb.js","sources":["../../../node_modules/@iconify-icons/mingcute/copy-2-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,gyBACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/delete-2-line-pjUduCFs.js b/assets/icons/delete-2-line-pjUduCFs.js new file mode 100644 index 0000000..1e728a3 --- /dev/null +++ b/assets/icons/delete-2-line-pjUduCFs.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=delete-2-line-pjUduCFs.js.map diff --git a/assets/icons/delete-2-line-pjUduCFs.js.map b/assets/icons/delete-2-line-pjUduCFs.js.map new file mode 100644 index 0000000..20d00dc --- /dev/null +++ b/assets/icons/delete-2-line-pjUduCFs.js.map @@ -0,0 +1 @@ +{"version":3,"file":"delete-2-line-pjUduCFs.js","sources":["../../../node_modules/@iconify-icons/mingcute/delete-2-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,ujCACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/document-line--D6ooZg1.js b/assets/icons/document-line--D6ooZg1.js new file mode 100644 index 0000000..1c3e80d --- /dev/null +++ b/assets/icons/document-line--D6ooZg1.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=document-line--D6ooZg1.js.map diff --git a/assets/icons/document-line--D6ooZg1.js.map b/assets/icons/document-line--D6ooZg1.js.map new file mode 100644 index 0000000..cc1406a --- /dev/null +++ b/assets/icons/document-line--D6ooZg1.js.map @@ -0,0 +1 @@ +{"version":3,"file":"document-line--D6ooZg1.js","sources":["../../../node_modules/@iconify-icons/mingcute/document-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,mzBACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/down-line-9PeS5YhF.js b/assets/icons/down-line-9PeS5YhF.js new file mode 100644 index 0000000..c32011c --- /dev/null +++ b/assets/icons/down-line-9PeS5YhF.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=down-line-9PeS5YhF.js.map diff --git a/assets/icons/down-line-9PeS5YhF.js.map b/assets/icons/down-line-9PeS5YhF.js.map new file mode 100644 index 0000000..5eb293b --- /dev/null +++ b/assets/icons/down-line-9PeS5YhF.js.map @@ -0,0 +1 @@ +{"version":3,"file":"down-line-9PeS5YhF.js","sources":["../../../node_modules/@iconify-icons/mingcute/down-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,6vBACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/earth-line-t1Um8wpQ.js b/assets/icons/earth-line-t1Um8wpQ.js new file mode 100644 index 0000000..1d74fcf --- /dev/null +++ b/assets/icons/earth-line-t1Um8wpQ.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=earth-line-t1Um8wpQ.js.map diff --git a/assets/icons/earth-line-t1Um8wpQ.js.map b/assets/icons/earth-line-t1Um8wpQ.js.map new file mode 100644 index 0000000..c15c069 --- /dev/null +++ b/assets/icons/earth-line-t1Um8wpQ.js.map @@ -0,0 +1 @@ +{"version":3,"file":"earth-line-t1Um8wpQ.js","sources":["../../../node_modules/@iconify-icons/mingcute/earth-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,8rEACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/emoji-2-line--uNVc2IC.js b/assets/icons/emoji-2-line--uNVc2IC.js new file mode 100644 index 0000000..aaf8d6d --- /dev/null +++ b/assets/icons/emoji-2-line--uNVc2IC.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=emoji-2-line--uNVc2IC.js.map diff --git a/assets/icons/emoji-2-line--uNVc2IC.js.map b/assets/icons/emoji-2-line--uNVc2IC.js.map new file mode 100644 index 0000000..6e05eb8 --- /dev/null +++ b/assets/icons/emoji-2-line--uNVc2IC.js.map @@ -0,0 +1 @@ +{"version":3,"file":"emoji-2-line--uNVc2IC.js","sources":["../../../node_modules/@iconify-icons/mingcute/emoji-2-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,4hCACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/exit-line-l-1uUgI7.js b/assets/icons/exit-line-l-1uUgI7.js new file mode 100644 index 0000000..5e8fd13 --- /dev/null +++ b/assets/icons/exit-line-l-1uUgI7.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=exit-line-l-1uUgI7.js.map diff --git a/assets/icons/exit-line-l-1uUgI7.js.map b/assets/icons/exit-line-l-1uUgI7.js.map new file mode 100644 index 0000000..9fe7120 --- /dev/null +++ b/assets/icons/exit-line-l-1uUgI7.js.map @@ -0,0 +1 @@ +{"version":3,"file":"exit-line-l-1uUgI7.js","sources":["../../../node_modules/@iconify-icons/mingcute/exit-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,k7BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/external-link-line-8nOOkmFu.js b/assets/icons/external-link-line-8nOOkmFu.js new file mode 100644 index 0000000..98dd0b2 --- /dev/null +++ b/assets/icons/external-link-line-8nOOkmFu.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=external-link-line-8nOOkmFu.js.map diff --git a/assets/icons/external-link-line-8nOOkmFu.js.map b/assets/icons/external-link-line-8nOOkmFu.js.map new file mode 100644 index 0000000..89aa383 --- /dev/null +++ b/assets/icons/external-link-line-8nOOkmFu.js.map @@ -0,0 +1 @@ +{"version":3,"file":"external-link-line-8nOOkmFu.js","sources":["../../../node_modules/@iconify-icons/mingcute/external-link-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,qzBACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/eye-2-line-vz_Kw-rK.js b/assets/icons/eye-2-line-vz_Kw-rK.js new file mode 100644 index 0000000..c15ec87 --- /dev/null +++ b/assets/icons/eye-2-line-vz_Kw-rK.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=eye-2-line-vz_Kw-rK.js.map diff --git a/assets/icons/eye-2-line-vz_Kw-rK.js.map b/assets/icons/eye-2-line-vz_Kw-rK.js.map new file mode 100644 index 0000000..deb69bb --- /dev/null +++ b/assets/icons/eye-2-line-vz_Kw-rK.js.map @@ -0,0 +1 @@ +{"version":3,"file":"eye-2-line-vz_Kw-rK.js","sources":["../../../node_modules/@iconify-icons/mingcute/eye-2-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,8nDACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/eye-close-line-lBiePPv9.js b/assets/icons/eye-close-line-lBiePPv9.js new file mode 100644 index 0000000..4c3e91e --- /dev/null +++ b/assets/icons/eye-close-line-lBiePPv9.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=eye-close-line-lBiePPv9.js.map diff --git a/assets/icons/eye-close-line-lBiePPv9.js.map b/assets/icons/eye-close-line-lBiePPv9.js.map new file mode 100644 index 0000000..720db82 --- /dev/null +++ b/assets/icons/eye-close-line-lBiePPv9.js.map @@ -0,0 +1 @@ +{"version":3,"file":"eye-close-line-lBiePPv9.js","sources":["../../../node_modules/@iconify-icons/mingcute/eye-close-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,sgCACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/filter-2-line-KyjbFYlO.js b/assets/icons/filter-2-line-KyjbFYlO.js new file mode 100644 index 0000000..f08df93 --- /dev/null +++ b/assets/icons/filter-2-line-KyjbFYlO.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=filter-2-line-KyjbFYlO.js.map diff --git a/assets/icons/filter-2-line-KyjbFYlO.js.map b/assets/icons/filter-2-line-KyjbFYlO.js.map new file mode 100644 index 0000000..f34c665 --- /dev/null +++ b/assets/icons/filter-2-line-KyjbFYlO.js.map @@ -0,0 +1 @@ +{"version":3,"file":"filter-2-line-KyjbFYlO.js","sources":["../../../node_modules/@iconify-icons/mingcute/filter-2-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,8vBACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/filter-line-1KEfnWDm.js b/assets/icons/filter-line-1KEfnWDm.js new file mode 100644 index 0000000..83671a2 --- /dev/null +++ b/assets/icons/filter-line-1KEfnWDm.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=filter-line-1KEfnWDm.js.map diff --git a/assets/icons/filter-line-1KEfnWDm.js.map b/assets/icons/filter-line-1KEfnWDm.js.map new file mode 100644 index 0000000..4db8a52 --- /dev/null +++ b/assets/icons/filter-line-1KEfnWDm.js.map @@ -0,0 +1 @@ +{"version":3,"file":"filter-line-1KEfnWDm.js","sources":["../../../node_modules/@iconify-icons/mingcute/filter-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,q6BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/flag-1-line-xvcg7G7Q.js b/assets/icons/flag-1-line-xvcg7G7Q.js new file mode 100644 index 0000000..21480cd --- /dev/null +++ b/assets/icons/flag-1-line-xvcg7G7Q.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=flag-1-line-xvcg7G7Q.js.map diff --git a/assets/icons/flag-1-line-xvcg7G7Q.js.map b/assets/icons/flag-1-line-xvcg7G7Q.js.map new file mode 100644 index 0000000..1e892ac --- /dev/null +++ b/assets/icons/flag-1-line-xvcg7G7Q.js.map @@ -0,0 +1 @@ +{"version":3,"file":"flag-1-line-xvcg7G7Q.js","sources":["../../../node_modules/@iconify-icons/mingcute/flag-1-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,uzBACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/forbid-circle-line-3FxopGoP.js b/assets/icons/forbid-circle-line-3FxopGoP.js new file mode 100644 index 0000000..3205a6f --- /dev/null +++ b/assets/icons/forbid-circle-line-3FxopGoP.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=forbid-circle-line-3FxopGoP.js.map diff --git a/assets/icons/forbid-circle-line-3FxopGoP.js.map b/assets/icons/forbid-circle-line-3FxopGoP.js.map new file mode 100644 index 0000000..ea4400c --- /dev/null +++ b/assets/icons/forbid-circle-line-3FxopGoP.js.map @@ -0,0 +1 @@ +{"version":3,"file":"forbid-circle-line-3FxopGoP.js","sources":["../../../node_modules/@iconify-icons/mingcute/forbid-circle-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,6zBACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/group-line-JvhJklhQ.js b/assets/icons/group-line-JvhJklhQ.js new file mode 100644 index 0000000..b6fc99a --- /dev/null +++ b/assets/icons/group-line-JvhJklhQ.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=group-line-JvhJklhQ.js.map diff --git a/assets/icons/group-line-JvhJklhQ.js.map b/assets/icons/group-line-JvhJklhQ.js.map new file mode 100644 index 0000000..680d58c --- /dev/null +++ b/assets/icons/group-line-JvhJklhQ.js.map @@ -0,0 +1 @@ +{"version":3,"file":"group-line-JvhJklhQ.js","sources":["../../../node_modules/@iconify-icons/mingcute/group-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,69BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/hashtag-line-SS3QMu1R.js b/assets/icons/hashtag-line-SS3QMu1R.js new file mode 100644 index 0000000..c6af511 --- /dev/null +++ b/assets/icons/hashtag-line-SS3QMu1R.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=hashtag-line-SS3QMu1R.js.map diff --git a/assets/icons/hashtag-line-SS3QMu1R.js.map b/assets/icons/hashtag-line-SS3QMu1R.js.map new file mode 100644 index 0000000..a859808 --- /dev/null +++ b/assets/icons/hashtag-line-SS3QMu1R.js.map @@ -0,0 +1 @@ +{"version":3,"file":"hashtag-line-SS3QMu1R.js","sources":["../../../node_modules/@iconify-icons/mingcute/hashtag-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,u+BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/heart-crack-line-P3DoKfTT.js b/assets/icons/heart-crack-line-P3DoKfTT.js new file mode 100644 index 0000000..8ef465d --- /dev/null +++ b/assets/icons/heart-crack-line-P3DoKfTT.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=heart-crack-line-P3DoKfTT.js.map diff --git a/assets/icons/heart-crack-line-P3DoKfTT.js.map b/assets/icons/heart-crack-line-P3DoKfTT.js.map new file mode 100644 index 0000000..72fca5d --- /dev/null +++ b/assets/icons/heart-crack-line-P3DoKfTT.js.map @@ -0,0 +1 @@ +{"version":3,"file":"heart-crack-line-P3DoKfTT.js","sources":["../../../node_modules/@iconify-icons/mingcute/heart-crack-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,4zCACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/heart-line-VwvWYh8h.js b/assets/icons/heart-line-VwvWYh8h.js new file mode 100644 index 0000000..5102a4a --- /dev/null +++ b/assets/icons/heart-line-VwvWYh8h.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=heart-line-VwvWYh8h.js.map diff --git a/assets/icons/heart-line-VwvWYh8h.js.map b/assets/icons/heart-line-VwvWYh8h.js.map new file mode 100644 index 0000000..2ff90c9 --- /dev/null +++ b/assets/icons/heart-line-VwvWYh8h.js.map @@ -0,0 +1 @@ +{"version":3,"file":"heart-line-VwvWYh8h.js","sources":["../../../node_modules/@iconify-icons/mingcute/heart-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,8rCACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/history-2-line-3yIVzoWo.js b/assets/icons/history-2-line-3yIVzoWo.js new file mode 100644 index 0000000..8018d8e --- /dev/null +++ b/assets/icons/history-2-line-3yIVzoWo.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=history-2-line-3yIVzoWo.js.map diff --git a/assets/icons/history-2-line-3yIVzoWo.js.map b/assets/icons/history-2-line-3yIVzoWo.js.map new file mode 100644 index 0000000..917634d --- /dev/null +++ b/assets/icons/history-2-line-3yIVzoWo.js.map @@ -0,0 +1 @@ +{"version":3,"file":"history-2-line-3yIVzoWo.js","sources":["../../../node_modules/@iconify-icons/mingcute/history-2-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,o/BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/history-line-yoG7K8wL.js b/assets/icons/history-line-yoG7K8wL.js new file mode 100644 index 0000000..05efdd0 --- /dev/null +++ b/assets/icons/history-line-yoG7K8wL.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=history-line-yoG7K8wL.js.map diff --git a/assets/icons/history-line-yoG7K8wL.js.map b/assets/icons/history-line-yoG7K8wL.js.map new file mode 100644 index 0000000..1b807e6 --- /dev/null +++ b/assets/icons/history-line-yoG7K8wL.js.map @@ -0,0 +1 @@ +{"version":3,"file":"history-line-yoG7K8wL.js","sources":["../../../node_modules/@iconify-icons/mingcute/history-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,wgCACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/home-3-line-qJiZhXUH.js b/assets/icons/home-3-line-qJiZhXUH.js new file mode 100644 index 0000000..e398702 --- /dev/null +++ b/assets/icons/home-3-line-qJiZhXUH.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=home-3-line-qJiZhXUH.js.map diff --git a/assets/icons/home-3-line-qJiZhXUH.js.map b/assets/icons/home-3-line-qJiZhXUH.js.map new file mode 100644 index 0000000..14cc6e0 --- /dev/null +++ b/assets/icons/home-3-line-qJiZhXUH.js.map @@ -0,0 +1 @@ +{"version":3,"file":"home-3-line-qJiZhXUH.js","sources":["../../../node_modules/@iconify-icons/mingcute/home-3-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,69BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/information-line-8SOch6cR.js b/assets/icons/information-line-8SOch6cR.js new file mode 100644 index 0000000..dab8795 --- /dev/null +++ b/assets/icons/information-line-8SOch6cR.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=information-line-8SOch6cR.js.map diff --git a/assets/icons/information-line-8SOch6cR.js.map b/assets/icons/information-line-8SOch6cR.js.map new file mode 100644 index 0000000..f703a64 --- /dev/null +++ b/assets/icons/information-line-8SOch6cR.js.map @@ -0,0 +1 @@ +{"version":3,"file":"information-line-8SOch6cR.js","sources":["../../../node_modules/@iconify-icons/mingcute/information-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,02BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/keyboard-line-10AZQcVH.js b/assets/icons/keyboard-line-10AZQcVH.js new file mode 100644 index 0000000..a27ca30 --- /dev/null +++ b/assets/icons/keyboard-line-10AZQcVH.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=keyboard-line-10AZQcVH.js.map diff --git a/assets/icons/keyboard-line-10AZQcVH.js.map b/assets/icons/keyboard-line-10AZQcVH.js.map new file mode 100644 index 0000000..d52f4d0 --- /dev/null +++ b/assets/icons/keyboard-line-10AZQcVH.js.map @@ -0,0 +1 @@ +{"version":3,"file":"keyboard-line-10AZQcVH.js","sources":["../../../node_modules/@iconify-icons/mingcute/keyboard-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,+mCACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/layout-4-line-FOdnyEcZ.js b/assets/icons/layout-4-line-FOdnyEcZ.js new file mode 100644 index 0000000..fe91724 --- /dev/null +++ b/assets/icons/layout-4-line-FOdnyEcZ.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=layout-4-line-FOdnyEcZ.js.map diff --git a/assets/icons/layout-4-line-FOdnyEcZ.js.map b/assets/icons/layout-4-line-FOdnyEcZ.js.map new file mode 100644 index 0000000..b2288dc --- /dev/null +++ b/assets/icons/layout-4-line-FOdnyEcZ.js.map @@ -0,0 +1 @@ +{"version":3,"file":"layout-4-line-FOdnyEcZ.js","sources":["../../../node_modules/@iconify-icons/mingcute/layout-4-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,02BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/layout-5-line-9Kks7dle.js b/assets/icons/layout-5-line-9Kks7dle.js new file mode 100644 index 0000000..0ba647b --- /dev/null +++ b/assets/icons/layout-5-line-9Kks7dle.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=layout-5-line-9Kks7dle.js.map diff --git a/assets/icons/layout-5-line-9Kks7dle.js.map b/assets/icons/layout-5-line-9Kks7dle.js.map new file mode 100644 index 0000000..7d22d2a --- /dev/null +++ b/assets/icons/layout-5-line-9Kks7dle.js.map @@ -0,0 +1 @@ +{"version":3,"file":"layout-5-line-9Kks7dle.js","sources":["../../../node_modules/@iconify-icons/mingcute/layout-5-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,g0BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/left-line-Jck0yVmC.js b/assets/icons/left-line-Jck0yVmC.js new file mode 100644 index 0000000..5ac69dd --- /dev/null +++ b/assets/icons/left-line-Jck0yVmC.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=left-line-Jck0yVmC.js.map diff --git a/assets/icons/left-line-Jck0yVmC.js.map b/assets/icons/left-line-Jck0yVmC.js.map new file mode 100644 index 0000000..a97c7dd --- /dev/null +++ b/assets/icons/left-line-Jck0yVmC.js.map @@ -0,0 +1 @@ +{"version":3,"file":"left-line-Jck0yVmC.js","sources":["../../../node_modules/@iconify-icons/mingcute/left-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,6vBACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/lightning-line-JMYUlCZM.js b/assets/icons/lightning-line-JMYUlCZM.js new file mode 100644 index 0000000..d3d46ac --- /dev/null +++ b/assets/icons/lightning-line-JMYUlCZM.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=lightning-line-JMYUlCZM.js.map diff --git a/assets/icons/lightning-line-JMYUlCZM.js.map b/assets/icons/lightning-line-JMYUlCZM.js.map new file mode 100644 index 0000000..9523d64 --- /dev/null +++ b/assets/icons/lightning-line-JMYUlCZM.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lightning-line-JMYUlCZM.js","sources":["../../../node_modules/@iconify-icons/mingcute/lightning-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,q8BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/link-2-line-BUqp1EwN.js b/assets/icons/link-2-line-BUqp1EwN.js new file mode 100644 index 0000000..63c4d1b --- /dev/null +++ b/assets/icons/link-2-line-BUqp1EwN.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=link-2-line-BUqp1EwN.js.map diff --git a/assets/icons/link-2-line-BUqp1EwN.js.map b/assets/icons/link-2-line-BUqp1EwN.js.map new file mode 100644 index 0000000..78e3848 --- /dev/null +++ b/assets/icons/link-2-line-BUqp1EwN.js.map @@ -0,0 +1 @@ +{"version":3,"file":"link-2-line-BUqp1EwN.js","sources":["../../../node_modules/@iconify-icons/mingcute/link-2-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,ooCACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/list-check-line-qNqx9Mm4.js b/assets/icons/list-check-line-qNqx9Mm4.js new file mode 100644 index 0000000..a1e12df --- /dev/null +++ b/assets/icons/list-check-line-qNqx9Mm4.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=list-check-line-qNqx9Mm4.js.map diff --git a/assets/icons/list-check-line-qNqx9Mm4.js.map b/assets/icons/list-check-line-qNqx9Mm4.js.map new file mode 100644 index 0000000..7645eec --- /dev/null +++ b/assets/icons/list-check-line-qNqx9Mm4.js.map @@ -0,0 +1 @@ +{"version":3,"file":"list-check-line-qNqx9Mm4.js","sources":["../../../node_modules/@iconify-icons/mingcute/list-check-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,g6BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/lock-line-0jNHqZpm.js b/assets/icons/lock-line-0jNHqZpm.js new file mode 100644 index 0000000..f397c4b --- /dev/null +++ b/assets/icons/lock-line-0jNHqZpm.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=lock-line-0jNHqZpm.js.map diff --git a/assets/icons/lock-line-0jNHqZpm.js.map b/assets/icons/lock-line-0jNHqZpm.js.map new file mode 100644 index 0000000..3fdd1a1 --- /dev/null +++ b/assets/icons/lock-line-0jNHqZpm.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lock-line-0jNHqZpm.js","sources":["../../../node_modules/@iconify-icons/mingcute/lock-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,i6BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/mail-line-5XLS6FEo.js b/assets/icons/mail-line-5XLS6FEo.js new file mode 100644 index 0000000..cc0b1aa --- /dev/null +++ b/assets/icons/mail-line-5XLS6FEo.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=mail-line-5XLS6FEo.js.map diff --git a/assets/icons/mail-line-5XLS6FEo.js.map b/assets/icons/mail-line-5XLS6FEo.js.map new file mode 100644 index 0000000..220f9be --- /dev/null +++ b/assets/icons/mail-line-5XLS6FEo.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mail-line-5XLS6FEo.js","sources":["../../../node_modules/@iconify-icons/mingcute/mail-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,w0BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/more-1-fill-je1-slyh.js b/assets/icons/more-1-fill-je1-slyh.js new file mode 100644 index 0000000..25c43ab --- /dev/null +++ b/assets/icons/more-1-fill-je1-slyh.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=more-1-fill-je1-slyh.js.map diff --git a/assets/icons/more-1-fill-je1-slyh.js.map b/assets/icons/more-1-fill-je1-slyh.js.map new file mode 100644 index 0000000..b1fb57b --- /dev/null +++ b/assets/icons/more-1-fill-je1-slyh.js.map @@ -0,0 +1 @@ +{"version":3,"file":"more-1-fill-je1-slyh.js","sources":["../../../node_modules/@iconify-icons/mingcute/more-1-fill.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,otBACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/more-3-line-wUD-Yhmj.js b/assets/icons/more-3-line-wUD-Yhmj.js new file mode 100644 index 0000000..0359f4b --- /dev/null +++ b/assets/icons/more-3-line-wUD-Yhmj.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=more-3-line-wUD-Yhmj.js.map diff --git a/assets/icons/more-3-line-wUD-Yhmj.js.map b/assets/icons/more-3-line-wUD-Yhmj.js.map new file mode 100644 index 0000000..0f328a1 --- /dev/null +++ b/assets/icons/more-3-line-wUD-Yhmj.js.map @@ -0,0 +1 @@ +{"version":3,"file":"more-3-line-wUD-Yhmj.js","sources":["../../../node_modules/@iconify-icons/mingcute/more-3-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,+1BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/notification-line-olNPLtgS.js b/assets/icons/notification-line-olNPLtgS.js new file mode 100644 index 0000000..07bd990 --- /dev/null +++ b/assets/icons/notification-line-olNPLtgS.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=notification-line-olNPLtgS.js.map diff --git a/assets/icons/notification-line-olNPLtgS.js.map b/assets/icons/notification-line-olNPLtgS.js.map new file mode 100644 index 0000000..44fe29b --- /dev/null +++ b/assets/icons/notification-line-olNPLtgS.js.map @@ -0,0 +1 @@ +{"version":3,"file":"notification-line-olNPLtgS.js","sources":["../../../node_modules/@iconify-icons/mingcute/notification-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,++BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/pencil-line-bKXqElLR.js b/assets/icons/pencil-line-bKXqElLR.js new file mode 100644 index 0000000..f75700f --- /dev/null +++ b/assets/icons/pencil-line-bKXqElLR.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=pencil-line-bKXqElLR.js.map diff --git a/assets/icons/pencil-line-bKXqElLR.js.map b/assets/icons/pencil-line-bKXqElLR.js.map new file mode 100644 index 0000000..cee40e8 --- /dev/null +++ b/assets/icons/pencil-line-bKXqElLR.js.map @@ -0,0 +1 @@ +{"version":3,"file":"pencil-line-bKXqElLR.js","sources":["../../../node_modules/@iconify-icons/mingcute/pencil-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,yhCACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/photo-album-line--GdJqjfq.js b/assets/icons/photo-album-line--GdJqjfq.js new file mode 100644 index 0000000..8c4c264 --- /dev/null +++ b/assets/icons/photo-album-line--GdJqjfq.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=photo-album-line--GdJqjfq.js.map diff --git a/assets/icons/photo-album-line--GdJqjfq.js.map b/assets/icons/photo-album-line--GdJqjfq.js.map new file mode 100644 index 0000000..0d94ed3 --- /dev/null +++ b/assets/icons/photo-album-line--GdJqjfq.js.map @@ -0,0 +1 @@ +{"version":3,"file":"photo-album-line--GdJqjfq.js","sources":["../../../node_modules/@iconify-icons/mingcute/photo-album-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,4lCACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/pin-line-ULyRQyWZ.js b/assets/icons/pin-line-ULyRQyWZ.js new file mode 100644 index 0000000..20e9166 --- /dev/null +++ b/assets/icons/pin-line-ULyRQyWZ.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=pin-line-ULyRQyWZ.js.map diff --git a/assets/icons/pin-line-ULyRQyWZ.js.map b/assets/icons/pin-line-ULyRQyWZ.js.map new file mode 100644 index 0000000..38ff9d1 --- /dev/null +++ b/assets/icons/pin-line-ULyRQyWZ.js.map @@ -0,0 +1 @@ +{"version":3,"file":"pin-line-ULyRQyWZ.js","sources":["../../../node_modules/@iconify-icons/mingcute/pin-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,6nCACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/play-fill-Ey-zv2eL.js b/assets/icons/play-fill-Ey-zv2eL.js new file mode 100644 index 0000000..ef50b85 --- /dev/null +++ b/assets/icons/play-fill-Ey-zv2eL.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=play-fill-Ey-zv2eL.js.map diff --git a/assets/icons/play-fill-Ey-zv2eL.js.map b/assets/icons/play-fill-Ey-zv2eL.js.map new file mode 100644 index 0000000..8a89d79 --- /dev/null +++ b/assets/icons/play-fill-Ey-zv2eL.js.map @@ -0,0 +1 @@ +{"version":3,"file":"play-fill-Ey-zv2eL.js","sources":["../../../node_modules/@iconify-icons/mingcute/play-fill.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,46BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/quill-pen-line-h_5-FsGz.js b/assets/icons/quill-pen-line-h_5-FsGz.js new file mode 100644 index 0000000..c491915 --- /dev/null +++ b/assets/icons/quill-pen-line-h_5-FsGz.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=quill-pen-line-h_5-FsGz.js.map diff --git a/assets/icons/quill-pen-line-h_5-FsGz.js.map b/assets/icons/quill-pen-line-h_5-FsGz.js.map new file mode 100644 index 0000000..21b91c0 --- /dev/null +++ b/assets/icons/quill-pen-line-h_5-FsGz.js.map @@ -0,0 +1 @@ +{"version":3,"file":"quill-pen-line-h_5-FsGz.js","sources":["../../../node_modules/@iconify-icons/mingcute/quill-pen-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,m5CACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/quote-left-line-NQzeELMO.js b/assets/icons/quote-left-line-NQzeELMO.js new file mode 100644 index 0000000..6187e3c --- /dev/null +++ b/assets/icons/quote-left-line-NQzeELMO.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=quote-left-line-NQzeELMO.js.map diff --git a/assets/icons/quote-left-line-NQzeELMO.js.map b/assets/icons/quote-left-line-NQzeELMO.js.map new file mode 100644 index 0000000..9149f73 --- /dev/null +++ b/assets/icons/quote-left-line-NQzeELMO.js.map @@ -0,0 +1 @@ +{"version":3,"file":"quote-left-line-NQzeELMO.js","sources":["../../../node_modules/@iconify-icons/mingcute/quote-left-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,yjCACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/radar-line-ndI8IhOG.js b/assets/icons/radar-line-ndI8IhOG.js new file mode 100644 index 0000000..04c205b --- /dev/null +++ b/assets/icons/radar-line-ndI8IhOG.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=radar-line-ndI8IhOG.js.map diff --git a/assets/icons/radar-line-ndI8IhOG.js.map b/assets/icons/radar-line-ndI8IhOG.js.map new file mode 100644 index 0000000..e681ea4 --- /dev/null +++ b/assets/icons/radar-line-ndI8IhOG.js.map @@ -0,0 +1 @@ +{"version":3,"file":"radar-line-ndI8IhOG.js","sources":["../../../node_modules/@iconify-icons/mingcute/radar-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,0zCACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/react-line-YfZPqZem.js b/assets/icons/react-line-YfZPqZem.js new file mode 100644 index 0000000..b0ca225 --- /dev/null +++ b/assets/icons/react-line-YfZPqZem.js @@ -0,0 +1,2 @@ +const c={width:24,height:24,body:''};export{c as default}; +//# sourceMappingURL=react-line-YfZPqZem.js.map diff --git a/assets/icons/react-line-YfZPqZem.js.map b/assets/icons/react-line-YfZPqZem.js.map new file mode 100644 index 0000000..9ba3bf0 --- /dev/null +++ b/assets/icons/react-line-YfZPqZem.js.map @@ -0,0 +1 @@ +{"version":3,"file":"react-line-YfZPqZem.js","sources":["../../../node_modules/@iconify-icons/mingcute/react-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,4sFACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/refresh-2-line-t42qqclb.js b/assets/icons/refresh-2-line-t42qqclb.js new file mode 100644 index 0000000..43df53f --- /dev/null +++ b/assets/icons/refresh-2-line-t42qqclb.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=refresh-2-line-t42qqclb.js.map diff --git a/assets/icons/refresh-2-line-t42qqclb.js.map b/assets/icons/refresh-2-line-t42qqclb.js.map new file mode 100644 index 0000000..d97e41f --- /dev/null +++ b/assets/icons/refresh-2-line-t42qqclb.js.map @@ -0,0 +1 @@ +{"version":3,"file":"refresh-2-line-t42qqclb.js","sources":["../../../node_modules/@iconify-icons/mingcute/refresh-2-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,wjCACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/right-line-7VBoqLdz.js b/assets/icons/right-line-7VBoqLdz.js new file mode 100644 index 0000000..fd1de00 --- /dev/null +++ b/assets/icons/right-line-7VBoqLdz.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=right-line-7VBoqLdz.js.map diff --git a/assets/icons/right-line-7VBoqLdz.js.map b/assets/icons/right-line-7VBoqLdz.js.map new file mode 100644 index 0000000..655f8a1 --- /dev/null +++ b/assets/icons/right-line-7VBoqLdz.js.map @@ -0,0 +1 @@ +{"version":3,"file":"right-line-7VBoqLdz.js","sources":["../../../node_modules/@iconify-icons/mingcute/right-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,+vBACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/rocket-line-rZbVYYCZ.js b/assets/icons/rocket-line-rZbVYYCZ.js new file mode 100644 index 0000000..160fb03 --- /dev/null +++ b/assets/icons/rocket-line-rZbVYYCZ.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=rocket-line-rZbVYYCZ.js.map diff --git a/assets/icons/rocket-line-rZbVYYCZ.js.map b/assets/icons/rocket-line-rZbVYYCZ.js.map new file mode 100644 index 0000000..e4dfa8a --- /dev/null +++ b/assets/icons/rocket-line-rZbVYYCZ.js.map @@ -0,0 +1 @@ +{"version":3,"file":"rocket-line-rZbVYYCZ.js","sources":["../../../node_modules/@iconify-icons/mingcute/rocket-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,+lEACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/round-fill-a0rplSmV.js b/assets/icons/round-fill-a0rplSmV.js new file mode 100644 index 0000000..912938e --- /dev/null +++ b/assets/icons/round-fill-a0rplSmV.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=round-fill-a0rplSmV.js.map diff --git a/assets/icons/round-fill-a0rplSmV.js.map b/assets/icons/round-fill-a0rplSmV.js.map new file mode 100644 index 0000000..3092c6b --- /dev/null +++ b/assets/icons/round-fill-a0rplSmV.js.map @@ -0,0 +1 @@ +{"version":3,"file":"round-fill-a0rplSmV.js","sources":["../../../node_modules/@iconify-icons/mingcute/round-fill.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,4sBACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/route-line-2YYy3958.js b/assets/icons/route-line-2YYy3958.js new file mode 100644 index 0000000..9b4fdb0 --- /dev/null +++ b/assets/icons/route-line-2YYy3958.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=route-line-2YYy3958.js.map diff --git a/assets/icons/route-line-2YYy3958.js.map b/assets/icons/route-line-2YYy3958.js.map new file mode 100644 index 0000000..e5849a9 --- /dev/null +++ b/assets/icons/route-line-2YYy3958.js.map @@ -0,0 +1 @@ +{"version":3,"file":"route-line-2YYy3958.js","sources":["../../../node_modules/@iconify-icons/mingcute/route-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,24BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/rows-4-line-SxGPYpTa.js b/assets/icons/rows-4-line-SxGPYpTa.js new file mode 100644 index 0000000..3936192 --- /dev/null +++ b/assets/icons/rows-4-line-SxGPYpTa.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=rows-4-line-SxGPYpTa.js.map diff --git a/assets/icons/rows-4-line-SxGPYpTa.js.map b/assets/icons/rows-4-line-SxGPYpTa.js.map new file mode 100644 index 0000000..0b49004 --- /dev/null +++ b/assets/icons/rows-4-line-SxGPYpTa.js.map @@ -0,0 +1 @@ +{"version":3,"file":"rows-4-line-SxGPYpTa.js","sources":["../../../node_modules/@iconify-icons/mingcute/rows-4-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,yvBACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/search-2-line-G39AynEw.js b/assets/icons/search-2-line-G39AynEw.js new file mode 100644 index 0000000..91af6d4 --- /dev/null +++ b/assets/icons/search-2-line-G39AynEw.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=search-2-line-G39AynEw.js.map diff --git a/assets/icons/search-2-line-G39AynEw.js.map b/assets/icons/search-2-line-G39AynEw.js.map new file mode 100644 index 0000000..f0874ef --- /dev/null +++ b/assets/icons/search-2-line-G39AynEw.js.map @@ -0,0 +1 @@ +{"version":3,"file":"search-2-line-G39AynEw.js","sources":["../../../node_modules/@iconify-icons/mingcute/search-2-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,4vBACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/settings-3-line-kt4MSpRv.js b/assets/icons/settings-3-line-kt4MSpRv.js new file mode 100644 index 0000000..31fa412 --- /dev/null +++ b/assets/icons/settings-3-line-kt4MSpRv.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=settings-3-line-kt4MSpRv.js.map diff --git a/assets/icons/settings-3-line-kt4MSpRv.js.map b/assets/icons/settings-3-line-kt4MSpRv.js.map new file mode 100644 index 0000000..420b2ef --- /dev/null +++ b/assets/icons/settings-3-line-kt4MSpRv.js.map @@ -0,0 +1 @@ +{"version":3,"file":"settings-3-line-kt4MSpRv.js","sources":["../../../node_modules/@iconify-icons/mingcute/settings-3-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,4kEACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/settings-6-line-ZgCBilgF.js b/assets/icons/settings-6-line-ZgCBilgF.js new file mode 100644 index 0000000..09ae2c8 --- /dev/null +++ b/assets/icons/settings-6-line-ZgCBilgF.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=settings-6-line-ZgCBilgF.js.map diff --git a/assets/icons/settings-6-line-ZgCBilgF.js.map b/assets/icons/settings-6-line-ZgCBilgF.js.map new file mode 100644 index 0000000..f8ce19f --- /dev/null +++ b/assets/icons/settings-6-line-ZgCBilgF.js.map @@ -0,0 +1 @@ +{"version":3,"file":"settings-6-line-ZgCBilgF.js","sources":["../../../node_modules/@iconify-icons/mingcute/settings-6-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,8nCACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/share-2-line-PYo-zN94.js b/assets/icons/share-2-line-PYo-zN94.js new file mode 100644 index 0000000..8a1adf1 --- /dev/null +++ b/assets/icons/share-2-line-PYo-zN94.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=share-2-line-PYo-zN94.js.map diff --git a/assets/icons/share-2-line-PYo-zN94.js.map b/assets/icons/share-2-line-PYo-zN94.js.map new file mode 100644 index 0000000..6d736a4 --- /dev/null +++ b/assets/icons/share-2-line-PYo-zN94.js.map @@ -0,0 +1 @@ +{"version":3,"file":"share-2-line-PYo-zN94.js","sources":["../../../node_modules/@iconify-icons/mingcute/share-2-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,+7BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/share-forward-line-4jL-2Q4u.js b/assets/icons/share-forward-line-4jL-2Q4u.js new file mode 100644 index 0000000..7971cd5 --- /dev/null +++ b/assets/icons/share-forward-line-4jL-2Q4u.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=share-forward-line-4jL-2Q4u.js.map diff --git a/assets/icons/share-forward-line-4jL-2Q4u.js.map b/assets/icons/share-forward-line-4jL-2Q4u.js.map new file mode 100644 index 0000000..3cb97f0 --- /dev/null +++ b/assets/icons/share-forward-line-4jL-2Q4u.js.map @@ -0,0 +1 @@ +{"version":3,"file":"share-forward-line-4jL-2Q4u.js","sources":["../../../node_modules/@iconify-icons/mingcute/share-forward-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,y4CACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/sparkles-2-line-g2FqdZ0R.js b/assets/icons/sparkles-2-line-g2FqdZ0R.js new file mode 100644 index 0000000..8af5ea2 --- /dev/null +++ b/assets/icons/sparkles-2-line-g2FqdZ0R.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=sparkles-2-line-g2FqdZ0R.js.map diff --git a/assets/icons/sparkles-2-line-g2FqdZ0R.js.map b/assets/icons/sparkles-2-line-g2FqdZ0R.js.map new file mode 100644 index 0000000..c4adbb8 --- /dev/null +++ b/assets/icons/sparkles-2-line-g2FqdZ0R.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sparkles-2-line-g2FqdZ0R.js","sources":["../../../node_modules/@iconify-icons/mingcute/sparkles-2-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,+3DACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/sparkles-line-wjZWGZ1a.js b/assets/icons/sparkles-line-wjZWGZ1a.js new file mode 100644 index 0000000..c43a917 --- /dev/null +++ b/assets/icons/sparkles-line-wjZWGZ1a.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=sparkles-line-wjZWGZ1a.js.map diff --git a/assets/icons/sparkles-line-wjZWGZ1a.js.map b/assets/icons/sparkles-line-wjZWGZ1a.js.map new file mode 100644 index 0000000..8355f1c --- /dev/null +++ b/assets/icons/sparkles-line-wjZWGZ1a.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sparkles-line-wjZWGZ1a.js","sources":["../../../node_modules/@iconify-icons/mingcute/sparkles-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,g0DACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/time-line-ThP0kTRr.js b/assets/icons/time-line-ThP0kTRr.js new file mode 100644 index 0000000..3f1c755 --- /dev/null +++ b/assets/icons/time-line-ThP0kTRr.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=time-line-ThP0kTRr.js.map diff --git a/assets/icons/time-line-ThP0kTRr.js.map b/assets/icons/time-line-ThP0kTRr.js.map new file mode 100644 index 0000000..dd04a64 --- /dev/null +++ b/assets/icons/time-line-ThP0kTRr.js.map @@ -0,0 +1 @@ +{"version":3,"file":"time-line-ThP0kTRr.js","sources":["../../../node_modules/@iconify-icons/mingcute/time-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,y1BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/transfer-4-line-Q9QJoxz3.js b/assets/icons/transfer-4-line-Q9QJoxz3.js new file mode 100644 index 0000000..fdd104d --- /dev/null +++ b/assets/icons/transfer-4-line-Q9QJoxz3.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=transfer-4-line-Q9QJoxz3.js.map diff --git a/assets/icons/transfer-4-line-Q9QJoxz3.js.map b/assets/icons/transfer-4-line-Q9QJoxz3.js.map new file mode 100644 index 0000000..90660e9 --- /dev/null +++ b/assets/icons/transfer-4-line-Q9QJoxz3.js.map @@ -0,0 +1 @@ +{"version":3,"file":"transfer-4-line-Q9QJoxz3.js","sources":["../../../node_modules/@iconify-icons/mingcute/transfer-4-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,47BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/translate-line-HpDtlqS2.js b/assets/icons/translate-line-HpDtlqS2.js new file mode 100644 index 0000000..34529b4 --- /dev/null +++ b/assets/icons/translate-line-HpDtlqS2.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=translate-line-HpDtlqS2.js.map diff --git a/assets/icons/translate-line-HpDtlqS2.js.map b/assets/icons/translate-line-HpDtlqS2.js.map new file mode 100644 index 0000000..613779f --- /dev/null +++ b/assets/icons/translate-line-HpDtlqS2.js.map @@ -0,0 +1 @@ +{"version":3,"file":"translate-line-HpDtlqS2.js","sources":["../../../node_modules/@iconify-icons/mingcute/translate-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,+jCACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/unlock-line-w3piJMVb.js b/assets/icons/unlock-line-w3piJMVb.js new file mode 100644 index 0000000..69523a0 --- /dev/null +++ b/assets/icons/unlock-line-w3piJMVb.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=unlock-line-w3piJMVb.js.map diff --git a/assets/icons/unlock-line-w3piJMVb.js.map b/assets/icons/unlock-line-w3piJMVb.js.map new file mode 100644 index 0000000..ba4bf26 --- /dev/null +++ b/assets/icons/unlock-line-w3piJMVb.js.map @@ -0,0 +1 @@ +{"version":3,"file":"unlock-line-w3piJMVb.js","sources":["../../../node_modules/@iconify-icons/mingcute/unlock-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,whCACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/upload-3-line-Qsjvubiw.js b/assets/icons/upload-3-line-Qsjvubiw.js new file mode 100644 index 0000000..b5178f1 --- /dev/null +++ b/assets/icons/upload-3-line-Qsjvubiw.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=upload-3-line-Qsjvubiw.js.map diff --git a/assets/icons/upload-3-line-Qsjvubiw.js.map b/assets/icons/upload-3-line-Qsjvubiw.js.map new file mode 100644 index 0000000..0733a7e --- /dev/null +++ b/assets/icons/upload-3-line-Qsjvubiw.js.map @@ -0,0 +1 @@ +{"version":3,"file":"upload-3-line-Qsjvubiw.js","sources":["../../../node_modules/@iconify-icons/mingcute/upload-3-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,0hCACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/user-4-line-zT_bpOrS.js b/assets/icons/user-4-line-zT_bpOrS.js new file mode 100644 index 0000000..2042044 --- /dev/null +++ b/assets/icons/user-4-line-zT_bpOrS.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=user-4-line-zT_bpOrS.js.map diff --git a/assets/icons/user-4-line-zT_bpOrS.js.map b/assets/icons/user-4-line-zT_bpOrS.js.map new file mode 100644 index 0000000..9f995f0 --- /dev/null +++ b/assets/icons/user-4-line-zT_bpOrS.js.map @@ -0,0 +1 @@ +{"version":3,"file":"user-4-line-zT_bpOrS.js","sources":["../../../node_modules/@iconify-icons/mingcute/user-4-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,2lCACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/user-add-line-zzW9OULB.js b/assets/icons/user-add-line-zzW9OULB.js new file mode 100644 index 0000000..066a013 --- /dev/null +++ b/assets/icons/user-add-line-zzW9OULB.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=user-add-line-zzW9OULB.js.map diff --git a/assets/icons/user-add-line-zzW9OULB.js.map b/assets/icons/user-add-line-zzW9OULB.js.map new file mode 100644 index 0000000..03a9e7e --- /dev/null +++ b/assets/icons/user-add-line-zzW9OULB.js.map @@ -0,0 +1 @@ +{"version":3,"file":"user-add-line-zzW9OULB.js","sources":["../../../node_modules/@iconify-icons/mingcute/user-add-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,g5BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/user-edit-line-9VnWCh0X.js b/assets/icons/user-edit-line-9VnWCh0X.js new file mode 100644 index 0000000..c345b24 --- /dev/null +++ b/assets/icons/user-edit-line-9VnWCh0X.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=user-edit-line-9VnWCh0X.js.map diff --git a/assets/icons/user-edit-line-9VnWCh0X.js.map b/assets/icons/user-edit-line-9VnWCh0X.js.map new file mode 100644 index 0000000..486e67b --- /dev/null +++ b/assets/icons/user-edit-line-9VnWCh0X.js.map @@ -0,0 +1 @@ +{"version":3,"file":"user-edit-line-9VnWCh0X.js","sources":["../../../node_modules/@iconify-icons/mingcute/user-edit-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,g4CACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/user-follow-line-k_GCWTtp.js b/assets/icons/user-follow-line-k_GCWTtp.js new file mode 100644 index 0000000..ac09221 --- /dev/null +++ b/assets/icons/user-follow-line-k_GCWTtp.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=user-follow-line-k_GCWTtp.js.map diff --git a/assets/icons/user-follow-line-k_GCWTtp.js.map b/assets/icons/user-follow-line-k_GCWTtp.js.map new file mode 100644 index 0000000..265c83f --- /dev/null +++ b/assets/icons/user-follow-line-k_GCWTtp.js.map @@ -0,0 +1 @@ +{"version":3,"file":"user-follow-line-k_GCWTtp.js","sources":["../../../node_modules/@iconify-icons/mingcute/user-follow-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,s8BACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/user-warning-line-gL3RGb1N.js b/assets/icons/user-warning-line-gL3RGb1N.js new file mode 100644 index 0000000..e9b4a74 --- /dev/null +++ b/assets/icons/user-warning-line-gL3RGb1N.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=user-warning-line-gL3RGb1N.js.map diff --git a/assets/icons/user-warning-line-gL3RGb1N.js.map b/assets/icons/user-warning-line-gL3RGb1N.js.map new file mode 100644 index 0000000..86073eb --- /dev/null +++ b/assets/icons/user-warning-line-gL3RGb1N.js.map @@ -0,0 +1 @@ +{"version":3,"file":"user-warning-line-gL3RGb1N.js","sources":["../../../node_modules/@iconify-icons/mingcute/user-warning-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,kwCACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/user-x-line-zIdph-gu.js b/assets/icons/user-x-line-zIdph-gu.js new file mode 100644 index 0000000..d8ffc62 --- /dev/null +++ b/assets/icons/user-x-line-zIdph-gu.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=user-x-line-zIdph-gu.js.map diff --git a/assets/icons/user-x-line-zIdph-gu.js.map b/assets/icons/user-x-line-zIdph-gu.js.map new file mode 100644 index 0000000..24dcfee --- /dev/null +++ b/assets/icons/user-x-line-zIdph-gu.js.map @@ -0,0 +1 @@ +{"version":3,"file":"user-x-line-zIdph-gu.js","sources":["../../../node_modules/@iconify-icons/mingcute/user-x-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,u3CACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/volume-line-PZujbN8h.js b/assets/icons/volume-line-PZujbN8h.js new file mode 100644 index 0000000..be36111 --- /dev/null +++ b/assets/icons/volume-line-PZujbN8h.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=volume-line-PZujbN8h.js.map diff --git a/assets/icons/volume-line-PZujbN8h.js.map b/assets/icons/volume-line-PZujbN8h.js.map new file mode 100644 index 0000000..9bf3bba --- /dev/null +++ b/assets/icons/volume-line-PZujbN8h.js.map @@ -0,0 +1 @@ +{"version":3,"file":"volume-line-PZujbN8h.js","sources":["../../../node_modules/@iconify-icons/mingcute/volume-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,wrCACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/volume-mute-line-WthBoXru.js b/assets/icons/volume-mute-line-WthBoXru.js new file mode 100644 index 0000000..30804db --- /dev/null +++ b/assets/icons/volume-mute-line-WthBoXru.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=volume-mute-line-WthBoXru.js.map diff --git a/assets/icons/volume-mute-line-WthBoXru.js.map b/assets/icons/volume-mute-line-WthBoXru.js.map new file mode 100644 index 0000000..9b28c1e --- /dev/null +++ b/assets/icons/volume-mute-line-WthBoXru.js.map @@ -0,0 +1 @@ +{"version":3,"file":"volume-mute-line-WthBoXru.js","sources":["../../../node_modules/@iconify-icons/mingcute/volume-mute-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,kkCACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/icons/walk-line-CF7a5s4t.js b/assets/icons/walk-line-CF7a5s4t.js new file mode 100644 index 0000000..d646060 --- /dev/null +++ b/assets/icons/walk-line-CF7a5s4t.js @@ -0,0 +1,2 @@ +const l={width:24,height:24,body:''};export{l as default}; +//# sourceMappingURL=walk-line-CF7a5s4t.js.map diff --git a/assets/icons/walk-line-CF7a5s4t.js.map b/assets/icons/walk-line-CF7a5s4t.js.map new file mode 100644 index 0000000..7d4df81 --- /dev/null +++ b/assets/icons/walk-line-CF7a5s4t.js.map @@ -0,0 +1 @@ +{"version":3,"file":"walk-line-CF7a5s4t.js","sources":["../../../node_modules/@iconify-icons/mingcute/walk-line.js"],"sourcesContent":["const data = {\n\t\"width\": 24,\n\t\"height\": 24,\n\t\"body\": \"\"\n};\nexport default data;\n"],"names":["data"],"mappings":"AAAK,MAACA,EAAO,CACZ,MAAS,GACT,OAAU,GACV,KAAQ,42CACT","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/assets/instances-MzK7fGXv.json b/assets/instances-MzK7fGXv.json new file mode 100644 index 0000000..bb6c44b --- /dev/null +++ b/assets/instances-MzK7fGXv.json @@ -0,0 +1,384 @@ +[ + "mastodon.social", + "mstdn.jp", + "mstdn.social", + "mas.to", + "mastodon.world", + "infosec.exchange", + "hachyderm.io", + "troet.cafe", + "mastodon.uno", + "m.cmx.im", + "techhub.social", + "piaille.fr", + "mastodon.gamedev.place", + "mastodonapp.uk", + "mastodon.nl", + "social.vivaldi.net", + "universeodon.com", + "mastodon.sdf.org", + "c.im", + "mstdn.ca", + "kolektiva.social", + "mastodon-japan.net", + "norden.social", + "o3o.ca", + "sfba.social", + "nrw.social", + "tech.lgbt", + "mastodon.scot", + "mstdn.party", + "occm.cc", + "aus.social", + "mathstodon.xyz", + "toot.community", + "ohai.social", + "sueden.social", + "mastodon.ie", + "mastodon.top", + "mastodontech.de", + "mastodon.nu", + "masto.es", + "freemasonry.social", + "ioc.exchange", + "mindly.social", + "hessen.social", + "ruhr.social", + "nerdculture.de", + "muenchen.social", + "defcon.social", + "social.anoxinon.de", + "mastodon.green", + "mastouille.fr", + "social.linux.pizza", + "social.cologne", + "indieweb.social", + "livellosegreto.it", + "ruby.social", + "ieji.de", + "mastodon.nz", + "toot.io", + "tkz.one", + "mastodont.cat", + "social.tchncs.de", + "mastodon.com.tr", + "noc.social", + "sciences.social", + "toot.wales", + "masto.nu", + "phpc.social", + "social.dev-wiki.de", + "cyberplace.social", + "mastodontti.fi", + "climatejustice.social", + "urbanists.social", + "mstdn.plus", + "metalhead.club", + "ravenation.club", + "mastodon.ml", + "fairy.id", + "feuerwehr.social", + "dresden.network", + "stranger.social", + "mastodon.iriseden.eu", + "rollenspiel.social", + "pol.social", + "mstdn.business", + "mstdn.games", + "wien.rocks", + "h4.io", + "socel.net", + "mastodon.eus", + "wehavecookies.social", + "glasgow.social", + "mastodon.me.uk", + "uri.life", + "hostux.social", + "theblower.au", + "mastodon-uk.net", + "masto.pt", + "awscommunity.social", + "flipboard.social", + "mast.lat", + "freiburg.social", + "snabelen.no", + "mastodon.zaclys.com", + "muenster.im", + "mastodon-belgium.be", + "geekdom.social", + "hcommons.social", + "tooot.im", + "tooting.ch", + "rheinneckar.social", + "discuss.systems", + "sunny.garden", + "mapstodon.space", + "toad.social", + "lor.sh", + "peoplemaking.games", + "union.place", + "bark.lgbt", + "bonn.social", + "tilde.zone", + "vmst.io", + "mastodon.berlin", + "emacs.ch", + "blorbo.social", + "furry.engineer", + "rivals.space", + "cupoftea.social", + "qdon.space", + "graphics.social", + "veganism.social", + "ludosphere.fr", + "4bear.com", + "famichiki.jp", + "expressional.social", + "convo.casa", + "historians.social", + "mastorol.es", + "retro.pizza", + "shelter.moe", + "mast.dragon-fly.club", + "sakurajima.moe", + "mastodon.arch-linux.cz", + "squawk.mytransponder.com", + "mastodon.gal", + "disabled.social", + "vkl.world", + "eupolicy.social", + "fandom.ink", + "toot.funami.tech", + "mastodonbooks.net", + "lgbtqia.space", + "witter.cz", + "planetearth.social", + "oslo.town", + "mastodon.com.pl", + "pawb.fun", + "darmstadt.social", + "masto.nobigtech.es", + "cr8r.gg", + "pnw.zone", + "hear-me.social", + "furries.club", + "gaygeek.social", + "birdon.social", + "mastodon.energy", + "mastodon-swiss.org", + "dizl.de", + "libretooth.gr", + "mustard.blog", + "machteburch.social", + "fulda.social", + "muri.network", + "babka.social", + "archaeo.social", + "mastodon.uy", + "xarxa.cloud", + "corteximplant.com", + "mastodon.london", + "urusai.social", + "thecanadian.social", + "federated.press", + "kanoa.de", + "opalstack.social", + "bahn.social", + "mograph.social", + "dmv.community", + "social.bau-ha.us", + "mastodon.free-solutions.org", + "masto.nyc", + "tyrol.social", + "burma.social", + "toot.kif.rocks", + "donphan.social", + "mast.hpc.social", + "musicians.today", + "drupal.community", + "hometech.social", + "norcal.social", + "social.politicaconciencia.org", + "social.seattle.wa.us", + "is.nota.live", + "genealysis.social", + "wargamers.social", + "guitar.rodeo", + "bookstodon.com", + "mstdn.dk", + "elizur.me", + "irsoluciones.social", + "h-net.social", + "mastoot.fr", + "qaf.men", + "est.social", + "kurry.social", + "mastodon.pnpde.social", + "ani.work", + "nederland.online", + "epicure.social", + "occitania.social", + "lgbt.io", + "mountains.social", + "persiansmastodon.com", + "seocommunity.social", + "cyberfurz.social", + "fedi.at", + "gamepad.club", + "augsburg.social", + "mastodon.education", + "toot.re", + "linux.social", + "neovibe.app", + "musician.social", + "esq.social", + "social.veraciousnetwork.com", + "datasci.social", + "tooters.org", + "ciberlandia.pt", + "cloud-native.social", + "social.silicon.moe", + "cosocial.ca", + "arvr.social", + "hispagatos.space", + "friendsofdesoto.social", + "musicworld.social", + "aut.social", + "masto.yttrx.com", + "mastodon.wien", + "colorid.es", + "arsenalfc.social", + "allthingstech.social", + "mastodon.vlaanderen", + "mastodon.com.py", + "tooter.social", + "lounge.town", + "puntarella.party", + "earthstream.social", + "apobangpo.space", + "opencoaster.net", + "frikiverse.zone", + "airwaves.social", + "toot.garden", + "lewacki.space", + "gardenstate.social", + "theatl.social", + "maly.io", + "library.love", + "kfem.cat", + "ruhrpott.social", + "techtoots.com", + "furry.energy", + "mastodon.pirateparty.be", + "metalverse.social", + "indieauthors.social", + "tuiter.rocks", + "mastodon.africa", + "jvm.social", + "poweredbygay.social", + "fikaverse.club", + "gametoots.de", + "mastodon.cr", + "hoosier.social", + "khiar.net", + "seo.chat", + "drumstodon.net", + "raphus.social", + "toots.nu", + "k8s.social", + "mastodon.holeyfox.co", + "fribygda.no", + "x0r.be", + "fpl.social", + "toot.pizza", + "mastodon.cipherbliss.com", + "burningboard.net", + "synapse.cafe", + "cultur.social", + "vermont.masto.host", + "mastodon.bot", + "bologna.one", + "mastodon.sg", + "tchafia.be", + "rail.chat", + "mastodon.hosnet.fr", + "leipzig.town", + "wayne.social", + "rheinhessen.social", + "rap.social", + "cwb.social", + "mastodon.bachgau.social", + "cville.online", + "bzh.social", + "mastodon.escepticos.es", + "zenzone.social", + "mastodon.ee", + "lsbt.me", + "neurodiversity-in.au", + "fairmove.net", + "stereodon.social", + "mcr.wtf", + "mastodon.frl", + "mikumikudance.cloud", + "okla.social", + "camp.smolnet.org", + "ailbhean.co-shaoghal.net", + "clj.social", + "tu.social", + "nomanssky.social", + "mastodon.iow.social", + "frontrange.co", + "episcodon.net", + "devianze.city", + "paktodon.asia", + "travelpandas.fr", + "silversword.online", + "nwb.social", + "skastodon.com", + "kcmo.social", + "balkan.fedive.rs", + "openedtech.social", + "mastodon.ph", + "enshittification.social", + "spojnik.works", + "mastodon.conquestuniverse.com", + "nutmeg.social", + "social.sndevs.com", + "social.diva.exchange", + "growers.social", + "pdx.sh", + "nfld.me", + "cartersville.social", + "voi.social", + "mastodon.babb.no", + "kzoo.to", + "mastodon.vanlife.is", + "toot.works", + "sanjuans.life", + "dariox.club", + "xreality.social", + "social.ferrocarril.net", + "pool.social", + "polsci.social", + "mastodon.mg", + "23.illuminati.org", + "apotheke.social", + "jaxbeach.social", + "ceilidh.online", + "netsphere.one", + "biplus.social", + "bvb.social", + "ms.maritime.social", + "darticulate.com", + "persia.social", + "streamerchat.social", + "troet.fediverse.at", + "publishing.social", + "finsup.social", + "kjas.no", + "wxw.moe", + "learningdisability.social", + "mastodon.bida.im", + "computerfairi.es", + "tea.codes" +] \ No newline at end of file diff --git a/assets/main-1wKRS81d.js b/assets/main-1wKRS81d.js new file mode 100644 index 0000000..0073754 --- /dev/null +++ b/assets/main-1wKRS81d.js @@ -0,0 +1,25 @@ +import{s as T,a as Q,b as qe,c as be,g as ct,d as ds,e as St,p as ht,u as Ks,L as $e,f as jt,h as us,i as Zs,C as Js,j as Ke,k as Xs,l as hn,m as He,n as hs,t as Qs,o as ei,q as $n,r as ti,v as An,w as Rn}from"./useTitle-dCp14HlU.js";import{F as z,_ as G,p as $,u as _e,x as Je,a as Me,b as e,k as _,y as mt,c as pn,M as de,d as ze,e as Tt,q as pe,f as xt,g as Qe,I as rt,A as lt,h as fn,l as _n,s as ps,i as fs,j as it,T as ni,m as si,n as ii,P as oi,J as ai,C as ms,o as ci,r as gt,t as ri,v as li,w as gs,z as di,B as ui,D as hi,E as pi,G as Et,H as bs,K as Ln,L as fi,R as mn,N as Ue,O as mi,Q as gi}from"./vendor-GrW-f9CX.js";import{u as gn,s as se,o as En,a as bi,I as w,M as Ae,A as st,N as It,b as Ze,c as et,L as oe,g as ys,l as yi,t as Mn,R as bt,d as je,e as Xe,f as Re,h as ws,i as on,E as vs,j as Ge,n as ot,k as wi,S as Wt,m as Pn,T as ks,p as nt,q as bn,r as Be,v as Dn,w as vi,x as ki,y as Ss,C as Si,z as Ii,F as Is,B as Mt,D as Ci,G as $t,H as yn,J as Cs,K as Ti,O as Nt}from"./status-FORkhePO.js";function Ct(t=()=>{},n=[]){const i=z(t);G(()=>{i.current=t},[n]),G(()=>{const s=()=>{const o=document.hidden||document.visibilityState==="hidden";i.current(!o)};return document.addEventListener("visibilitychange",s),()=>document.removeEventListener("visibilitychange",s)},[])}const xi=1e3*3,$i=15e3,Ai=Je(function({isLoggedIn:n}){const[i,s]=$(!0);Ct(s);const o=async(d,r,u)=>{var f;if(T.notificationsLast){const c=d.v1.notifications.list({limit:1,sinceId:T.notificationsLast.id}),{value:p}=await c.next();if(p!=null&&p.length)if(u)T.notificationsShowNew=!0;else{let l;try{const b=await d.v1.markers.fetch({timeline:"notifications"});l=(f=b==null?void 0:b.notifications)==null?void 0:f.lastReadId}catch{}l?T.notificationsShowNew=p[0].id!==l:T.notificationsShowNew=!0}}};G(()=>{let d,r;if(n&&i){const{masto:u,streaming:f,instance:c}=Q();(async()=>{await o(u,c);let p=!1;f&&(r=setTimeout(()=>{(async()=>{try{p=!0,d=f.user.notification.subscribe();for await(const l of d){if(!d||!i)break;l.event==="notification"&&qe(l.payload,c,{skipThreading:!0}),T.notificationsShowNew=!0}}catch{p=!1}p||(r=setInterval(()=>{o(u,c,!0)},$i))})()},xi))})()}return()=>{var u;(u=d==null?void 0:d.unsubscribe)==null||u.call(d),d=null,clearTimeout(r),clearInterval(r)}},[i,n]);const a=z(),h=()=>{a.current=Date.now(),fetch("./version.json").then(d=>d.json()).then(d=>{d&&(T.appVersion=d)}).catch(d=>{})};return gn(h,i&&1e3*60*30),Ct(d=>{d&&(a.current?Date.now()-a.current>1e3*60*60&&h():h())}),_e("shift+alt+k",()=>{const d=T.settings.cloakMode;T.settings.cloakMode=!d,se({text:`Cloak mode ${d?"disabled":"enabled"}`})}),null});function Ri(){const t=Me(T);function n(i){if(t.composerState.minimized){T.composerState.minimized=!1,En();return}i.shiftKey?bi()||(T.showCompose=!0):(En(),T.showCompose=!0)}return _e("c, shift+c",n,{ignoreEventWhen:i=>!!document.querySelector("#modal-container > *")}),e("button",{type:"button",id:"compose-button",onClick:n,class:`${t.composerState.minimized?"min":""} ${t.composerState.publishing?"loading":""} ${t.composerState.publishingError?"error":""}`,children:e(w,{icon:"quill",size:"xl",alt:"Compose"})})}const _i=Je(function(){const n=Me(T);function i(){T.showKeyboardShortcutsHelp=!1}return _e("?, shift+?, shift+slash",s=>{T.showKeyboardShortcutsHelp=!0},{ignoreEventWhen:s=>!!document.querySelector("#modal-container > *")}),!!n.showKeyboardShortcutsHelp&&e(Ae,{onClose:i,children:e("div",{id:"keyboard-shortcuts-help-container",class:"sheet",tabindex:"-1",children:[e("button",{type:"button",class:"sheet-close",onClick:i,children:e(w,{icon:"x"})}),e("header",{children:e("h2",{children:"Keyboard shortcuts"})}),e("main",{children:e("table",{children:[{action:"Keyboard shortcuts help",keys:e("kbd",{children:"?"})},{action:"Next post",keys:e("kbd",{children:"j"})},{action:"Previous post",keys:e("kbd",{children:"k"})},{action:"Skip carousel to next post",keys:e(_,{children:[e("kbd",{children:"Shift"})," + ",e("kbd",{children:"j"})]})},{action:"Skip carousel to previous post",keys:e(_,{children:[e("kbd",{children:"Shift"})," + ",e("kbd",{children:"k"})]})},{action:"Load new posts",keys:e("kbd",{children:"."})},{action:"Open post details",keys:e(_,{children:[e("kbd",{children:"Enter"})," or ",e("kbd",{children:"o"})]})},{action:e(_,{children:["Expand content warning or",e("br",{}),"toggle expanded/collapsed thread"]}),keys:e("kbd",{children:"x"})},{action:"Close post or dialogs",keys:e(_,{children:[e("kbd",{children:"Esc"})," or ",e("kbd",{children:"Backspace"})]})},{action:"Focus column in multi-column mode",keys:e(_,{children:[e("kbd",{children:"1"})," to ",e("kbd",{children:"9"})]})},{action:"Compose new post",keys:e("kbd",{children:"c"})},{action:"Compose new post (new window)",className:"insignificant",keys:e(_,{children:[e("kbd",{children:"Shift"})," + ",e("kbd",{children:"c"})]})},{action:"Send post",keys:e(_,{children:[e("kbd",{children:"Ctrl"})," + ",e("kbd",{children:"Enter"})," or ",e("kbd",{children:"⌘"})," +"," ",e("kbd",{children:"Enter"})]})},{action:"Search",keys:e("kbd",{children:"/"})},{action:"Reply",keys:e("kbd",{children:"r"})},{action:"Reply (new window)",className:"insignificant",keys:e(_,{children:[e("kbd",{children:"Shift"})," + ",e("kbd",{children:"r"})]})},{action:"Like (favourite)",keys:e(_,{children:[e("kbd",{children:"l"})," or ",e("kbd",{children:"f"})]})},{action:"Boost",keys:e(_,{children:[e("kbd",{children:"Shift"})," + ",e("kbd",{children:"b"})]})},{action:"Bookmark",keys:e("kbd",{children:"d"})},{action:"Toggle Cloak mode",keys:e(_,{children:[e("kbd",{children:"Shift"})," + ",e("kbd",{children:"Alt"})," + ",e("kbd",{children:"k"})]})}].map(({action:s,className:o,keys:a})=>e("tr",{children:[e("th",{class:o,children:s}),e("td",{children:a})]},s))})})]})})});function Li({onClose:t}){const{masto:n}=Q(),i=be.local.getJSON("accounts"),s=ct(),o=i.length>1,[a,h]=mt(r=>r+1,0),[d]=pn();return e("div",{id:"accounts-container",class:"sheet",tabIndex:"-1",children:[!!t&&e("button",{type:"button",class:"sheet-close",onClick:t,children:e(w,{icon:"x"})}),e("header",{class:"header-grid",children:e("h2",{children:"Accounts"})}),e("main",{children:e("section",{children:[e("ul",{class:"accounts-list",ref:d,children:i.map((r,u)=>{const f=r.info.id===s,c=u===0;return e("li",{children:[e("div",{children:[o&&e("span",{class:`current ${f?"is-current":""}`,children:e(w,{icon:"check-circle",alt:"Current"})}),e(st,{url:r.info.avatarStatic,size:"xxl",onDblClick:async()=>{if(f)try{const p=await n.v1.accounts.$select(r.info.id).fetch();r.info=p,be.local.setJSON("accounts",i),h()}catch{}}}),e(It,{account:o?{...r.info,acct:/@/.test(r.info.acct)?r.info.acct:`${r.info.acct}@${r.instanceURL}`}:r.info,showAcct:!0,onClick:()=>{f?T.showAccount=`${r.info.username}@${r.instanceURL}`:(ds(r.info.id),location.reload())}})]}),e("div",{class:"actions",children:[c&&o&&e(_,{children:[e("span",{class:"tag",children:"Default"})," "]}),e(Ze,{align:"end",menuButton:e("button",{type:"button",title:"More",class:"plain more-button",children:e(w,{icon:"more",size:"l",alt:"More"})}),children:[e(de,{onClick:()=>{T.showAccount=`${r.info.username}@${r.instanceURL}`},children:[e(w,{icon:"user"}),e("span",{children:"View profile…"})]}),e(ze,{}),o&&e(de,{disabled:c,onClick:()=>{i.splice(u,1),i.unshift(r),be.local.setJSON("accounts",i),h()},children:[e(w,{icon:"check-circle"}),e("span",{children:"Set as default"})]}),e(et,{subMenu:!0,confirmLabel:e(_,{children:[e(w,{icon:"exit"}),e("span",{children:["Log out @",r.info.acct,"?"]})]}),disabled:!f,menuItemClassName:"danger",onClick:()=>{i.splice(u,1),be.local.setJSON("accounts",i),location.href=location.pathname||"/"},children:[e(w,{icon:"exit"}),e("span",{children:"Log out…"})]})]})]})]},r.info.id)})}),e("p",{children:e(oe,{to:"/login",class:"button plain2",onClick:t,children:[e(w,{icon:"plus"})," ",e("span",{children:"Add an existing account"})]})}),o&&e("p",{children:e("small",{children:["Note: ",e("i",{children:"Default"})," account will always be used for first load. Switched accounts will persist during the session."]})})]})})]})}const wn="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xml:space='preserve'%20fill-rule='evenodd'%20stroke-linejoin='round'%20stroke-miterlimit='2'%20clip-rule='evenodd'%20viewBox='0%200%2064%2064'%3e%3cpath%20fill='none'%20d='M0%200h63.994v63.994H0z'/%3e%3cpath%20fill='%23a4bff7'%20d='M37.774%2011.471c14.639%203.752%2019.034%2016.557%2015.889%2031.304-.696%203.261-2.563%206.661-6.356%208.693-3.204%201.717-8.07%202.537-15.338.55l-9.634-2.404C11.651%2046.992%208.378%2038.733%2010.027%2031.823c3.627-15.201%2015.543-23.48%2027.747-20.352Z'/%3e%3cpath%20fill='%23d8e7fe'%20d='M36.76%2015.429c12.289%203.15%2015.547%2014.114%2012.907%2026.493-.947%204.44-4.937%209.365-16.664%206.143l-9.684-2.417c-7.854-1.923-10.53-7.8-9.318-12.877%203.016-12.639%2012.611-19.943%2022.759-17.342Z'/%3e%3cpath%20fill='%236081e6'%20d='M27.471%2024.991c-1.457-.698-7.229%203.213-7.663%208.926-.182%202.39%204.55%203.237%205.071-.169.725-4.743%203.715-8.218%202.592-8.757Zm10.746%202.005c-2.083.327-.382%205.901-.595%2010.727-.123%202.8%204.388%203.464%204.703%202.011%201.098-5.073-2.066-13.058-4.108-12.738Z'/%3e%3c/svg%3e";function Nn(t){const{masto:n}=Q();return n.v1.push.subscription.create(t)}function Ei(){const{masto:t}=Q();return t.v1.push.subscription.fetch()}function Mi(t){const{masto:n}=Q();return n.v1.push.subscription.update(t)}function Pi(){const{masto:t}=Q();return t.v1.push.subscription.remove()}function Jt(){return"serviceWorker"in navigator&&"PushManager"in window}function Di(){return navigator.serviceWorker.getRegistration()}async function vn(){const t=await Di(),n=t?await t.pushManager.getSubscription():void 0;return{registration:t,subscription:n}}function Ts(t){const n="=".repeat((4-t.length%4)%4),i=`${t}${n}`.replace(/-/g,"+").replace(/_/g,"/"),s=window.atob(i),o=new Uint8Array(s.length);for(let a=0;a{l.preventDefault();const m=new FormData(s.current).get("theme"),k=document.documentElement;if(m==="auto"){k.classList.remove("is-light","is-dark");const g=document.querySelector('meta[data-theme-setting="manual"]');g&&(g.name=""),document.querySelectorAll('meta[data-theme-setting="auto"]').forEach(C=>{C.name="theme-color"})}else{k.classList.toggle("is-light",m==="light"),k.classList.toggle("is-dark",m==="dark");const g=document.querySelector('meta[data-theme-setting="manual"]');g&&(g.name="theme-color",g.content=m==="light"?g.dataset.themeLightColor:g.dataset.themeDarkColor),document.querySelectorAll('meta[data-theme-setting="auto"]').forEach(C=>{C.name=""})}document.querySelector('meta[name="color-scheme"]').setAttribute("content",m==="auto"?"dark light":m),m==="auto"?be.local.del("theme"):be.local.set("theme",m)},children:e("div",{class:"radio-group",children:[e("label",{children:[e("input",{type:"radio",name:"theme",value:"light",defaultChecked:i==="light"}),e("span",{children:"Light"})]}),e("label",{children:[e("input",{type:"radio",name:"theme",value:"dark",defaultChecked:i==="dark"}),e("span",{children:"Dark"})]}),e("label",{children:[e("input",{type:"radio",name:"theme",value:"auto",defaultChecked:i!=="light"&&i!=="dark"}),e("span",{children:"Auto"})]})]})})})]}),e("li",{children:[e("div",{children:e("label",{children:"Text size"})}),e("div",{class:"range-group",children:[e("span",{style:{fontSize:ft[0]},children:"A"})," ",e("input",{type:"range",min:ft[0],max:ft[ft.length-1],step:"1",value:d,list:"sizes",onChange:l=>{const b=parseInt(l.target.value,10);document.documentElement.style.setProperty("--text-size",`${b}px`),b===On?be.local.del("textSize"):be.local.set("textSize",l.target.value)}})," ",e("span",{style:{fontSize:ft[ft.length-1]},children:"A"}),e("datalist",{id:"sizes",children:ft.map(l=>e("option",{value:l}))})]})]})]})}),c&&e(_,{children:[e("h3",{children:"Posting"}),e("section",{children:e("ul",{children:e("li",{children:[e("div",{children:e("label",{for:"posting-privacy-field",children:["Default visibility"," ",e(w,{icon:"cloud",alt:"Synced",class:"synced-icon"})]})}),e("div",{children:e("select",{id:"posting-privacy-field",value:r["posting:default:visibility"]||"public",onChange:l=>{const{value:b}=l.target;(async()=>{try{await f.v1.accounts.updateCredentials({source:{privacy:b}}),u({...r,"posting:default:visibility":b}),be.account.set("preferences",{...r,"posting:default:visibility":b})}catch{alert("Failed to update posting privacy")}})()},children:[e("option",{value:"public",children:"Public"}),e("option",{value:"unlisted",children:"Unlisted"}),e("option",{value:"private",children:"Followers only"})]})})]})})}),e("p",{class:"section-postnote",children:[e(w,{icon:"cloud",alt:"Synced",class:"synced-icon"})," ",e("small",{children:["Synced to your instance server's settings."," ",e("a",{href:`https://${p}/`,target:"_blank",rel:"noopener noreferrer",children:["Go to your instance (",p,") for more settings."]})]})]})]}),e("h3",{children:"Experiments"}),e("section",{children:e("ul",{children:[e("li",{children:e("label",{children:[e("input",{type:"checkbox",checked:n.settings.autoRefresh,onChange:l=>{T.settings.autoRefresh=l.target.checked}})," ","Auto refresh timeline posts"]})}),e("li",{children:e("label",{children:[e("input",{type:"checkbox",checked:n.settings.boostsCarousel,onChange:l=>{T.settings.boostsCarousel=l.target.checked}})," ","Boosts carousel"]})}),e("li",{children:[e("label",{children:[e("input",{type:"checkbox",checked:n.settings.contentTranslation,onChange:l=>{const{checked:b}=l.target;T.settings.contentTranslation=b,b||(T.settings.contentTranslationTargetLanguage=null)}})," ","Post translation"]}),e("div",{class:`sub-section ${n.settings.contentTranslation?"":"more-insignificant"}`,children:[e("div",{children:e("label",{children:["Translate to"," ",e("select",{value:o||"",disabled:!n.settings.contentTranslation,onChange:l=>{T.settings.contentTranslationTargetLanguage=l.target.value||null},children:[e("option",{value:"",children:["System language (",h,")"]}),e("option",{disabled:!0,children:"──────────"}),Mn.map(l=>e("option",{value:l.code,children:l.name}))]})]})}),e("hr",{}),e("p",{class:"checkbox-fieldset",children:['Hide "Translate" button for',n.settings.contentTranslationHideLanguages.length>0&&e(_,{children:[" ","(",n.settings.contentTranslationHideLanguages.length,")"]}),":",e("div",{class:"checkbox-fields",children:Mn.map(l=>e("label",{children:[e("input",{type:"checkbox",checked:n.settings.contentTranslationHideLanguages.includes(l.code),onChange:b=>{const{checked:m}=b.target;m?T.settings.contentTranslationHideLanguages.push(l.code):T.settings.contentTranslationHideLanguages=n.settings.contentTranslationHideLanguages.filter(k=>k!==l.code)}})," ",l.name]}))})]}),e("p",{class:"insignificant",children:e("small",{children:["Note: This feature uses external translation services, powered by"," ",e("a",{href:"https://github.com/cheeaun/lingva-api",target:"_blank",rel:"noopener noreferrer",children:"Lingva API"})," ","&"," ",e("a",{href:"https://github.com/thedaviddelta/lingva-translate",target:"_blank",rel:"noopener noreferrer",children:"Lingva Translate"}),"."]})}),e("hr",{}),e("div",{children:[e("label",{children:[e("input",{type:"checkbox",checked:n.settings.contentTranslationAutoInline,disabled:!n.settings.contentTranslation,onChange:l=>{T.settings.contentTranslationAutoInline=l.target.checked}})," ","Auto inline translation"]}),e("p",{class:"insignificant",children:e("small",{children:["Automatically show translation for posts in timeline. Only works for ",e("b",{children:"short"})," posts without content warning, media and poll."]})})]})]})]}),!!zi&&c&&e("li",{children:[e("label",{children:[e("input",{type:"checkbox",checked:n.settings.composerGIFPicker,onChange:l=>{T.settings.composerGIFPicker=l.target.checked}})," ","GIF Picker for composer"]}),e("div",{class:"sub-section insignificant",children:e("small",{children:["Note: This feature uses external GIF search service, powered by"," ",e("a",{href:"https://developers.giphy.com/",target:"_blank",rel:"noopener noreferrer",children:"GIPHY"}),". G-rated (suitable for viewing by all ages), tracking parameters are stripped, referrer information is omitted from requests, but search queries and IP address information will still reach their servers."]})})]}),!!Oi&&c&&e("li",{children:[e("label",{children:[e("input",{type:"checkbox",checked:n.settings.mediaAltGenerator,onChange:l=>{T.settings.mediaAltGenerator=l.target.checked}})," ","Image description generator"," ",e(w,{icon:"sparkles2",class:"more-insignificant"})]}),e("div",{class:"sub-section insignificant",children:e("small",{children:"Only for new images while composing new posts."})}),e("div",{class:"sub-section insignificant",children:e("small",{children:["Note: This feature uses external AI service, powered by"," ",e("a",{href:"https://github.com/cheeaun/img-alt-api",target:"_blank",rel:"noopener noreferrer",children:"img-alt-api"}),". May not work well. Only for images and in English."]})})]}),c&&e("li",{children:[e("label",{children:[e("input",{type:"checkbox",checked:n.settings.shortcutSettingsCloudImportExport,onChange:l=>{T.settings.shortcutSettingsCloudImportExport=l.target.checked}})," ",'"Cloud" import/export for shortcuts settings'," ",e(w,{icon:"cloud",class:"more-insignificant"})]}),e("div",{class:"sub-section insignificant",children:e("small",{children:["⚠️⚠️⚠️ Very experimental.",e("br",{}),"Stored in your own profile’s notes. Profile (private) notes are mainly used for other profiles, and hidden for own profile."]})}),e("div",{class:"sub-section insignificant",children:e("small",{children:"Note: This feature uses currently-logged-in instance server API."})})]}),e("li",{children:[e("label",{children:[e("input",{type:"checkbox",checked:n.settings.cloakMode,onChange:l=>{T.settings.cloakMode=l.target.checked}})," ","Cloak mode"," ",e("span",{class:"insignificant",children:["(",e("samp",{children:"Text"})," → ",e("samp",{children:"████"}),")"]})]}),e("div",{class:"sub-section insignificant",children:e("small",{children:"Replace text as blocks, useful when taking screenshots, for privacy reasons."})})]}),c&&e("li",{children:e("button",{type:"button",class:"light",onClick:()=>{T.showDrafts=!0,T.showSettings=!1},children:"Unsent drafts"})})]})}),c&&e(qi,{onClose:t}),e("h3",{children:"About"}),e("section",{children:[e("div",{style:{display:"flex",flexWrap:"wrap",gap:8,lineHeight:1.25,alignItems:"center",marginTop:8},children:[e("img",{src:wn,alt:"",width:"64",height:"64",style:{aspectRatio:"1/1",verticalAlign:"middle",background:"#b7cdf9",borderRadius:12}}),e("div",{children:[e("b",{children:"Phanpy"})," ",e("a",{href:"https://hachyderm.io/@phanpy",rel:"noopener noreferrer",onClick:l=>{l.preventDefault(),T.showAccount="phanpy@hachyderm.io"},children:"@phanpy"}),e("br",{}),e("a",{href:"https://github.com/cheeaun/phanpy",target:"_blank",rel:"noopener noreferrer",children:"Built"})," ","by"," ",e("a",{href:"https://mastodon.social/@cheeaun",rel:"noopener noreferrer",onClick:l=>{l.preventDefault(),T.showAccount="cheeaun@mastodon.social"},children:"@cheeaun"})]})]}),e("p",{children:[e("a",{href:"https://github.com/sponsors/cheeaun",target:"_blank",rel:"noopener noreferrer",children:"Sponsor"})," ","·"," ",e("a",{href:"https://www.buymeacoffee.com/cheeaun",target:"_blank",rel:"noopener noreferrer",children:"Donate"})," ","·"," ",e("a",{href:Fi,target:"_blank",rel:"noopener noreferrer",children:"Privacy Policy"})]}),e("p",{children:[zn&&e(_,{children:[e("span",{class:"insignificant",children:"Site:"})," ",zn.replace(/https?:\/\//g,"").replace(/\/$/,""),e("br",{})]}),e("span",{class:"insignificant",children:"Version:"})," ",e("input",{type:"text",class:"version-string",readOnly:!0,size:"18",value:`${"2024-06-03T11:04:51.985Z".slice(0,10).replace(/-/g,".")}.0a6030c`,onClick:l=>{l.target.select();try{navigator.clipboard.writeText(l.target.value),se("Version string copied")}catch{se("Unable to copy version string")}}})," ",e("span",{class:"ib insignificant",children:["(",e("a",{href:"https://github.com/cheeaun/phanpy/commit/0a6030c",target:"_blank",rel:"noopener noreferrer",children:e(bt,{datetime:new Date("2024-06-03T11:04:51.985Z")})}),")"]})]})]})]})]})}function qi({onClose:t}){if(!Jt())return null;const{instance:n}=Q(),[i,s]=$("default"),o=z(),[a,h]=$(!1),[d,r]=$(!1),u=z();G(()=>{(async()=>{s("loading");try{const{subscription:c,backendSubscription:p}=await Ni();if(p!=null&&p.policy&&p.policy!=="none"){h(!0);const{alerts:l,policy:b}=p;u.current=b;const{elements:m}=o.current,k=m.namedItem("policy");k&&(k.value=b),Object.keys(l).forEach(g=>{const y=m.namedItem(g);(y==null?void 0:y.type)==="checkbox"&&(y.checked=!0)})}s("default")}catch(c){/outside.*authorized/i.test(c.message)?r(!0):alert((c==null?void 0:c.message)||c),s("error")}})()},[]);const f=i==="loading";return e("form",{ref:o,onChange:()=>{setTimeout(()=>{const c=Object.fromEntries(new FormData(o.current)),p=!!c["policy-allow"],l={data:{policy:c.policy,alerts:{mention:!!c.mention,favourite:!!c.favourite,reblog:!!c.reblog,follow:!!c.follow,follow_request:!!c.followRequest,poll:!!c.poll,update:!!c.update,status:!!c.status}}};let b=0;Object.keys(l.data.alerts).forEach(k=>{l.data.alerts[k]?b++:delete l.data.alerts[k]});const m=u.current!==l.data.policy;p&&b>0?m?Fn().then(()=>{Un(l)}).catch(k=>{alert("Failed to update subscription. Please try again.")}):Un(l).catch(k=>{alert("Failed to update subscription. Please try again.")}):Fn().catch(k=>{alert("Failed to remove subscription. Please try again.")})},100)},children:[e("h3",{children:"Push Notifications (beta)"}),e("section",{children:e("ul",{children:e("li",{children:[e("label",{children:[e("input",{type:"checkbox",disabled:f||d,name:"policy-allow",checked:a,onChange:async c=>{const{checked:p}=c.target;if(p){const l=await Notification.requestPermission();l==="granted"?h(!0):(h(!1),l==="denied"&&alert("Push notifications are blocked. Please enable them in your browser settings."))}else h(!1)}})," ","Allow from"," ",e("select",{name:"policy",disabled:f||d||!a,children:[{value:"all",label:"anyone"},{value:"followed",label:"people I follow"},{value:"follower",label:"followers"}].map(c=>e("option",{value:c.value,children:c.label}))})]}),e("div",{class:"shazam-container no-animation",style:{width:"100%"},hidden:!a,children:e("div",{class:"shazam-container-inner",children:e("div",{class:"sub-section",children:e("ul",{children:[{value:"mention",label:"Mentions"},{value:"favourite",label:"Likes"},{value:"reblog",label:"Boosts"},{value:"follow",label:"Follows"},{value:"followRequest",label:"Follow requests"},{value:"poll",label:"Polls"},{value:"update",label:"Post edits"},{value:"status",label:"New posts"}].map(c=>e("li",{children:e("label",{children:[e("input",{type:"checkbox",name:c.value})," ",c.label]})}))})})})}),d&&e("div",{class:"sub-section",children:e("p",{children:["Push permission was not granted since your last login. You'll need to"," ",e(oe,{to:`/login?instance=${n}`,onClick:t,children:[e("b",{children:"log in"})," again to grant push permission"]}),"."]})})]})})}),e("p",{class:"section-postnote",children:e("small",{children:["NOTE: Push notifications only work for ",e("b",{children:"one account"}),"."]})})]})}const an=()=>{let t=setTimeout(()=>{if(!document.getElementById("columns")){const i=document.querySelectorAll("#modal-container > *");if(i!=null&&i.length){const h=i[i.length-1],d=h.querySelector('[tabindex="-1"]')||h;if(d){d.focus();return}}if(document.querySelector(".deck-backdrop"))return;const o=document.querySelectorAll(".deck-container"),a=o[o.length-1];a&&a.tabIndex===-1&&a.focus()}},100);return()=>clearTimeout(t)};function xs(t){if(!t)return;const n=Tt(),i=z(n.pathname);G(()=>{i.current&&n.pathname!==i.current&&(t==null||t())},[n.pathname,t])}const $s=1e3*60,Hi=24*60*60*1e3,cn=ht(async()=>{const{masto:t}=Q(),n=await t.v1.lists.list();return n.sort((i,s)=>i.title.localeCompare(s.title)),n.length&&setTimeout(()=>{be.account.set("lists",{lists:n,updatedAt:Date.now()})},1),n},{maxAge:$s});async function Pt(){try{const{lists:t,updatedAt:n}=be.account.get("lists")||{};return t!=null&&t.length?(Date.now()-n>Hi&&cn(),t):await cn()}catch{return[]}}const Vi=ht(t=>{const{masto:n}=Q();return n.v1.lists.$select(t).fetch()},{maxAge:$s});async function As(t){const{lists:n}=be.account.get("lists")||{};if(n!=null&&n.length){const i=n.find(s=>s.id===t);if(i)return i}try{return Vi(t)}catch{return null}}async function Gi(t){const n=await As(t);return(n==null?void 0:n.title)||""}function Yi(t){const{lists:n}=be.account.get("lists")||{};n!=null&&n.length&&(n.push(t),n.sort((i,s)=>i.title.localeCompare(s.title)),be.account.set("lists",{lists:n,updatedAt:Date.now()}))}function ji(t){const{lists:n}=be.account.get("lists")||{};if(n!=null&&n.length){const i=n.findIndex(s=>s.id===t.id);i!==-1&&(n[i]=t,n.sort((s,o)=>s.title.localeCompare(o.title)),be.account.set("lists",{lists:n,updatedAt:Date.now()}))}}function Wi(t){const{lists:n}=be.account.get("lists")||{};if(n!=null&&n.length){const i=n.findIndex(s=>s.id===t);i!==-1&&(n.splice(i,1),be.account.set("lists",{lists:n,updatedAt:Date.now()}))}}function kn({list:t,onClose:n}){const{masto:i}=Q(),[s,o]=$("default"),a=!!t,h=z(),d=z(),r=z();G(()=>{a&&(h.current.value=t.title,d.current.value=t.repliesPolicy,r.current&&(r.current.checked=t.exclusive))},[a]);const u=je("@mastodon/list-exclusive");return e("div",{class:"sheet",children:[!!n&&e("button",{type:"button",class:"sheet-close",onClick:n,children:e(w,{icon:"x"})})," ",e("header",{children:e("h2",{children:a?"Edit list":"New list"})}),e("main",{children:e("form",{class:"list-form",onSubmit:f=>{f.preventDefault();const c=new FormData(f.target),p=c.get("title"),l=c.get("replies_policy"),b=c.get("exclusive")==="on";o("loading"),(async()=>{try{let m;a?m=await i.v1.lists.$select(t.id).update({title:p,replies_policy:l,exclusive:b}):m=await i.v1.lists.create({title:p,replies_policy:l,exclusive:b}),o("default"),n==null||n({state:"success",list:m}),setTimeout(()=>{a?ji(m):Yi(m)},1)}catch{o("error"),alert(a?"Unable to edit list.":"Unable to create list.")}})()},children:[e("div",{class:"list-form-row",children:e("label",{for:"list-title",children:["Name"," ",e("input",{ref:h,type:"text",id:"list-title",name:"title",required:!0,disabled:s==="loading",dir:"auto"})]})}),e("div",{class:"list-form-row",children:e("select",{ref:d,name:"replies_policy",required:!0,disabled:s==="loading",children:[e("option",{value:"list",children:"Show replies to list members"}),e("option",{value:"followed",children:"Show replies to people I follow"}),e("option",{value:"none",children:"Don't show replies"})]})}),u&&e("div",{class:"list-form-row",children:e("label",{class:"label-block",children:[e("input",{ref:r,type:"checkbox",name:"exclusive",disabled:s==="loading"})," ","Hide posts on this list from Home/Following"]})}),e("div",{class:"list-form-footer",children:[e("button",{type:"submit",disabled:s==="loading",children:a?"Save":"Create"}),a&&e(et,{disabled:s==="loading",align:"end",menuItemClassName:"danger",confirmLabel:"Delete this list?",onClick:()=>{o("loading"),(async()=>{try{await i.v1.lists.$select(t.id).remove(),o("default"),n==null||n({state:"deleted"}),setTimeout(()=>{Wi(t.id)},1)}catch{o("error"),alert("Unable to delete list.")}})()},children:e("button",{type:"button",class:"light danger",disabled:s==="loading",children:"Delete…"})})]})]})})]})}const Ki=[60*5,60*30,60*60,60*60*6,60*60*24,60*60*24*3,60*60*24*7,0],Bn={0:"Forever",300:"5 minutes",1800:"30 minutes",3600:"1 hour",21600:"6 hours",86400:"1 day",259200:"3 days",604800:"1 week"},qn=80,Rs=1e3*60*10;function Zi(t,n){return n.v1.accounts.familiarFollowers.fetch({id:[t]})}const Ji=ht(Zi,{maxAge:Rs});async function Xi(t,n){const i=n.v1.accounts.$select(t).statuses.list({limit:20}).next(),{value:s}=await i,o={total:s.length,originals:0,replies:0,boosts:0};return s.forEach(a=>{a.reblog?o.boosts++:a.inReplyToId&&a.inReplyToAccountId!==a.account.id?o.replies++:o.originals++}),s.length&&(o.daysSinceLastPost=Math.ceil((Date.now()-new Date(s[s.length-1].createdAt))/864e5)),o}const Qi=ht(Xi,{maxAge:Rs});function _s({account:t,fetchAccount:n=()=>{},standalone:i,instance:s,authenticated:o}){const{masto:a}=Q({instance:s}),{masto:h,instance:d}=Q(),[r,u]=$("default"),f=typeof t=="string",[c,p]=$(f?null:t),l=pe(()=>s===d,[s,d]);G(()=>{if(!f){p(t);return}u("loading"),(async()=>{try{const S=await n();T.accounts[`${S.id}@${s}`]=S,p(S),u("default")}catch{p(null),u("error")}})()},[f,t,n]);const{acct:b,avatar:m,avatarStatic:k,bot:g,createdAt:y,displayName:C,emojis:v,fields:I,followersCount:x,followingCount:L,group:Y,id:j,lastStatusAt:M,locked:ee,note:X,statusesCount:A,url:P,username:E,memorial:U,moved:V,roles:ye,hideCollections:ve}=c||{};let fe=!1,{header:ne,headerStatic:me}=c||{};(!ne||/missing\.png$/.test(ne))&&m&&!/missing\.png$/.test(m)&&(ne=m,fe=!0,k&&!/missing\.png$/.test(k)&&(me=k));const ue=pe(()=>j===ct(),[j]);G(()=>{const S=!!(c!=null&&c.id&&(c!=null&&c.username)&&(c!=null&&c.acct)&&(c!=null&&c.avatar)&&(c!=null&&c.avatarStatic)&&(c!=null&&c.displayName)&&(c!=null&&c.url));if(ue&&s&&S){const N=be.local.getJSON("accounts");let B=!1;N.forEach(O=>{O.info.id===c.id&&O.instanceURL===s&&(O.info=c,B=!0)}),B&&be.local.setJSON("accounts",N)}},[ue,c,s]);const he=pe(()=>P?xt.toUnicode(new URL(P).hostname):null,[P]),[ke,Le]=$([]),Te=z(),Pe=z([]);async function Fe(S){var K;(S||!Te.current)&&(Te.current=a.v1.accounts.$select(j).followers.list({limit:qn}));const N=await Te.current.next();if(ue||!l)return N;const{value:B}=N;let O=[];if(S){let ge=[];try{ge=await a.v1.accounts.familiarFollowers.fetch({id:[j]})}catch{}Pe.current=((K=ge==null?void 0:ge[0])==null?void 0:K.accounts)||[],O=[...Pe.current,...B.filter(le=>!Pe.current.some(ie=>ie.id===le.id))]}else B!=null&&B.length&&(O=B.filter(ge=>!Pe.current.some(le=>le.id===ge.id)));return{...N,value:O}}const xe=z();async function J(S){return(S||!xe.current)&&(xe.current=a.v1.accounts.$select(j).following.list({limit:qn})),await xe.current.next()}const ae=i?"div":oe,te=s?`/${s}/a/${j}`:`/a/${j}`,[Se,Ie]=$([]),[F,re]=$(),[D,W]=$("default"),R=!!(F!=null&&F.total),q=async S=>{try{const N=await Ji(S,h);Ie(N[0].accounts.slice(0,eo))}catch{}},Z=async()=>{if(j){W("loading");try{const S=await Qi(j,a);re(S),W("default")}catch{W("error")}}},ce=Qe(({relationship:S,currentID:N})=>{S.following||(q(N),!i&&A>0&&Z())},[i,j,A]),De=Qe(S=>{S.id===j&&(p(S),T.accounts[`${S.id}@${s}`]=S)},[j,s]);return e("div",{tabIndex:"-1",class:`account-container ${r==="loading"?"skeleton":""}`,style:{"--header-color-1":ke[0],"--header-color-2":ke[1],"--header-color-3":ke[2],"--header-color-4":ke[3]},children:[r==="error"&&e("div",{class:"ui-state",children:[e("p",{children:"Unable to load account."}),e("p",{children:e("a",{href:f?t:P,target:"_blank",rel:"noopener noreferrer",children:["Go to account page ",e(w,{icon:"external"})]})})]}),r==="loading"?e(_,{children:[e("header",{children:e(Xe,{avatarSize:"xxxl",skeleton:!0})}),e("main",{children:[e("div",{class:"note",children:[e("p",{children:"███████ ████ ████"}),e("p",{children:"████ ████████ ██████ █████████ ████ ██"})]}),e("div",{class:"account-metadata-box",children:[e("div",{class:"profile-metadata",children:[e("div",{class:"profile-field",children:[e("b",{class:"more-insignificant",children:"███"}),e("p",{children:"██████"})]}),e("div",{class:"profile-field",children:[e("b",{class:"more-insignificant",children:"████"}),e("p",{children:"███████████"})]})]}),e("div",{class:"stats",children:[e("div",{children:[e("span",{children:"██"})," Followers"]}),e("div",{children:[e("span",{children:"██"})," Following"]}),e("div",{children:[e("span",{children:"██"})," Posts"]})]})]}),e("div",{class:"actions",children:[e("span",{}),e("span",{class:"buttons",children:e("button",{type:"button",title:"More",class:"plain",disabled:!0,children:e(w,{icon:"more",size:"l",alt:"More"})})})]})]})]}):c&&e(_,{children:[!!V&&e("div",{class:"account-moved",children:[e("p",{children:[e("b",{children:C})," has indicated that their new account is now:"]}),e(Xe,{account:V,instance:s,onClick:S=>{S.stopPropagation(),T.showAccount=V}})]}),!!ne&&!/missing\.png$/.test(ne)&&e("img",{src:ne,alt:"",class:`header-banner ${fe?"header-is-avatar":""}`,onError:S=>{S.target.crossOrigin?S.target.src!==me?S.target.src=me:(S.target.removeAttribute("crossorigin"),S.target.src=ne):S.target.src!==me?S.target.src=me:S.target.remove()},crossOrigin:"anonymous",onLoad:S=>{S.target.classList.add("loaded");try{const N=window.OffscreenCanvas?new OffscreenCanvas(1,1):document.createElement("canvas"),B=N.getContext("2d",{willReadFrequently:!0});N.width=S.target.width,N.height=S.target.height,B.imageSmoothingEnabled=!1,B.drawImage(S.target,0,0);const O=10,ge=[B.getImageData(0,0,O,O).data,B.getImageData(S.target.width-O,0,O,O).data,B.getImageData(0,S.target.height-O,O,O).data,B.getImageData(S.target.width-O,S.target.height-O,O,O).data].map(le=>{let ie=0,Ce=0,Ne=0,Oe=0;for(let Ve=0;Ve{const[ie,Ce,Ne,Oe]=no(le);return`rgba(${ie}, ${Ce}, ${Ne}, ${Oe})`});Le(ge)}catch{}}}),e("header",{children:i?e(Ze,{shift:window.matchMedia("(min-width: calc(40em))").matches?114:64,menuButton:e("div",{children:e(Xe,{account:c,instance:s,avatarSize:"xxxl",onClick:()=>{}})}),children:[e("div",{class:"szh-menu__header",children:e(lo,{acct:b,instance:s})}),e(de,{onClick:()=>{const S=`@${b}`;try{navigator.clipboard.writeText(S),se("Handle copied")}catch{se("Unable to copy handle")}},children:[e(w,{icon:"link"}),e("span",{children:"Copy handle"})]}),e(de,{href:P,target:"_blank",children:[e(w,{icon:"external"}),e("span",{children:"Go to original profile page"})]}),e(ze,{}),e(Re,{href:c.avatar,target:"_blank",children:[e(w,{icon:"user"}),e("span",{children:"View profile image"})]}),e(Re,{href:c.header,target:"_blank",children:[e(w,{icon:"media"}),e("span",{children:"View profile header"})]})]}):e(Xe,{account:c,instance:s,avatarSize:"xxxl",internal:!0})}),e("div",{class:"faux-header-bg","aria-hidden":"true"}),e("main",{children:[!!U&&e("span",{class:"tag",children:"In Memoriam"}),!!g&&e("span",{class:"tag",children:[e(w,{icon:"bot"})," Automated"]}),!!Y&&e("span",{class:"tag",children:[e(w,{icon:"group"})," Group"]}),ye==null?void 0:ye.map(S=>e("span",{class:"tag",children:[S.name,!!he&&e(_,{children:[" ",e("span",{class:"more-insignificant",children:he})]})]})),e("div",{class:"note",dir:"auto",onClick:ws({instance:d}),dangerouslySetInnerHTML:{__html:on(X,{emojis:v})}}),e("div",{class:"account-metadata-box",children:[(I==null?void 0:I.length)>0&&e("div",{class:"profile-metadata",children:I.map(({name:S,value:N,verifiedAt:B},O)=>e("div",{class:`profile-field ${B?"profile-verified":""}`,dir:"auto",children:[e("b",{children:[e(vs,{text:S,emojis:v})," ",!!B&&e(w,{icon:"check-circle",size:"s"})]}),e("p",{dangerouslySetInnerHTML:{__html:on(N,{emojis:v})}})]},S+O))}),e("div",{class:"stats",children:[e(ae,{tabIndex:0,to:te,onClick:()=>{setTimeout(()=>{T.showGenericAccounts={id:"followers",heading:"Followers",fetchAccounts:Fe,instance:s,excludeRelationshipAttrs:ue?["followedBy"]:[],blankCopy:ve?"This user has chosen to not make this information available.":void 0}},0)},children:[!!Se.length&&e("span",{class:"shazam-container-horizontal",children:e("span",{class:"shazam-container-inner stats-avatars-bunch",children:Se.map(S=>e(st,{url:S.avatarStatic,size:"s",alt:`${S.displayName} @${S.acct}`,squircle:S==null?void 0:S.bot}))})}),e("span",{title:x,children:Ge(x)})," ","Followers"]}),e(ae,{class:"insignificant",tabIndex:0,to:te,onClick:()=>{setTimeout(()=>{T.showGenericAccounts={heading:"Following",fetchAccounts:J,instance:s,excludeRelationshipAttrs:ue?["following"]:[],blankCopy:ve?"This user has chosen to not make this information available.":void 0}},0)},children:[e("span",{title:L,children:Ge(L)})," ","Following",e("br",{})]}),e(ae,{class:"insignificant",to:te,children:[e("span",{title:A,children:Ge(A)})," ","Posts"]}),!!y&&e("div",{class:"insignificant",children:["Joined"," ",e("time",{datetime:y,children:ot(y,{hideTime:!0})})]})]})]}),!!F&&e(ae,{to:te,class:"account-metadata-box",children:e("div",{class:"shazam-container",children:e("div",{class:"shazam-container-inner",children:R?e("div",{class:"posting-stats",title:`${Math.round(F.originals/F.total*100)}% original posts, ${Math.round(F.replies/F.total*100)}% replies, ${Math.round(F.boosts/F.total*100)}% boosts`,children:[e("div",{children:F.daysSinceLastPost<365?`Last ${F.total} post${F.total>1?"s":""} in the past + ${F.daysSinceLastPost} day${F.daysSinceLastPost>1?"s":""}`:` + Last ${F.total} posts in the past year(s) + `}),e("div",{class:"posting-stats-bar",style:{"--originals-percentage":`${F.originals/F.total*100}%`,"--replies-percentage":`${(F.originals+F.replies)/F.total*100}%`}}),e("div",{class:"posting-stats-legends",children:[e("span",{class:"ib",children:[e("span",{class:"posting-stats-legend-item posting-stats-legend-item-originals"})," ","Original"]})," ",e("span",{class:"ib",children:[e("span",{class:"posting-stats-legend-item posting-stats-legend-item-replies"})," ","Replies"]})," ",e("span",{class:"ib",children:[e("span",{class:"posting-stats-legend-item posting-stats-legend-item-boosts"})," ","Boosts"]})]})]}):e("div",{class:"posting-stats",children:"Post stats unavailable."})})})}),!V&&e("div",{class:"account-metadata-box",children:e("div",{class:"shazam-container no-animation",hidden:!!F,children:e("div",{class:"shazam-container-inner",children:e("button",{type:"button",class:"posting-stats-button",disabled:D==="loading",onClick:()=>{Z()},children:[e("div",{class:`posting-stats-bar posting-stats-icon ${D==="loading"?"loading":""}`,style:{"--originals-percentage":"33%","--replies-percentage":"66%"}}),"View post stats"," "]})})})})]}),e("footer",{children:e(to,{info:c,instance:s,standalone:i,authenticated:o,onRelationshipChange:ce,onProfileUpdate:De})})]})]})}const eo=3;function to({info:t,instance:n,standalone:i,authenticated:s,onRelationshipChange:o=()=>{},onProfileUpdate:a=()=>{}}){var Ie;if(!t)return null;const{masto:h,instance:d,authenticated:r}=Q(),u=n===d,[f,c]=$("default"),[p,l]=$(null),{id:b,acct:m,url:k,username:g,locked:y,lastStatusAt:C,note:v,fields:I,moved:x}=t,L=z(b),{following:Y,showingReblogs:j,notifying:M,followedBy:ee,blocking:X,blockedBy:A,muting:P,mutingNotifications:E,requested:U,domainBlocking:V,endorsed:ye,note:ve}=p||{},[fe,ne]=$(null),[me,ue]=$(!1);G(()=>{if(t){const F=ct();let re;(async()=>{if(u&&s)re=b;else if(!u&&r){const W=t.acct.includes("@");try{const R=await h.v2.search.fetch({q:W?t.acct:`${t.username}@${n}`,type:"accounts",limit:1,resolve:!0});R.accounts.length&&(re=R.accounts[0].id,ne(R.accounts[0]))}catch{}}if(!re)return;if(F===re){ue(!0);return}L.current=re,c("loading");const D=h.v1.accounts.relationships.fetch({id:[re]});try{const W=await D;if(c("default"),W.length){const R=W[0];l(R),o({relationship:R,currentID:re})}}catch{c("error")}})()}},[t,s]),G(()=>{t&&me&&Ks(t)},[t,me]);const he=f==="loading",[ke,Le]=$(!1),[Te,Pe]=$(!1),[Fe,xe]=$(!1),[J,ae]=$(!1),[te,Se]=$([]);return e(_,{children:[e("div",{class:"actions",children:[e("span",{children:[ee?e("span",{class:"tag",children:"Follows you"}):C?e("small",{class:"insignificant",children:["Last post:"," ",e("span",{class:"ib",children:ot(C,{hideTime:!0})})]}):e("span",{}),P&&e("span",{class:"tag danger",children:"Muted"}),X&&e("span",{class:"tag danger",children:"Blocked"})]})," ",e("span",{class:"buttons",children:[!!ve&&e("button",{type:"button",class:"private-note-tag",title:"Private note",onClick:()=>{xe(!0)},dir:"auto",children:e("span",{children:ve})}),e(Ze,{portal:{target:document.body},containerProps:{style:{zIndex:1001}},align:"center",position:"anchor",overflow:"auto",menuButton:e("button",{type:"button",title:"More",class:"plain",disabled:he,children:e(w,{icon:"more",size:"l",alt:"More"})}),onMenuChange:F=>{Y&&F.open&&(async()=>{try{const re=await h.v1.accounts.$select(L.current).lists.list();Se(re)}catch{}})()},children:[r&&!me&&e(_,{children:[e(de,{onClick:()=>{wi({draftStatus:{status:`@${(fe==null?void 0:fe.acct)||m} `}})},children:[e(w,{icon:"at"}),e("span",{children:["Mention @",g]})]}),e(de,{onClick:()=>{Le(!0)},children:[e(w,{icon:"translate"}),e("span",{children:"Translate bio"})]}),je("@mastodon/profile-private-note")&&e(de,{onClick:()=>{xe(!0)},children:[e(w,{icon:"pencil"}),e("span",{children:ve?"Edit private note":"Add private note"})]}),Y&&!!p&&e(_,{children:[e(de,{onClick:()=>{c("loading"),(async()=>{try{const F=await h.v1.accounts.$select(L.current).follow({notify:!M});F&&l(F),c("default"),se(F.notifying?`Notifications enabled for @${g}'s posts.`:` Notifications disabled for @${g}'s posts.`)}catch(F){alert(F),c("error")}})()},children:[e(w,{icon:"notification"}),e("span",{children:M?"Disable notifications":"Enable notifications"})]}),e(de,{onClick:()=>{c("loading"),(async()=>{try{const F=await h.v1.accounts.$select(L.current).follow({reblogs:!j});F&&l(F),c("default"),se(F.showingReblogs?`Boosts from @${g} disabled.`:`Boosts from @${g} enabled.`)}catch(F){alert(F),c("error")}})()},children:[e(w,{icon:"rocket"}),e("span",{children:j?"Disable boosts":"Enable boosts"})]})]}),Y&&e(de,{onClick:()=>{Pe(!0)},children:[e(w,{icon:"list"}),te.length?e(_,{children:[e("small",{class:"menu-grow",children:["Add/Remove from Lists",e("br",{}),e("span",{class:"more-insignificant",children:te.map(F=>F.title).join(", ")})]}),e("small",{class:"more-insignificant",children:te.length})]}):e("span",{children:"Add/Remove from Lists"})]}),e(ze,{})]}),e(de,{onClick:()=>{const F=`@${(fe==null?void 0:fe.acct)||m}`;try{navigator.clipboard.writeText(F),se("Handle copied")}catch{se("Unable to copy handle")}},children:[e(w,{icon:"copy"}),e("small",{children:["Copy handle",e("br",{}),e("span",{class:"more-insignificant",children:["@",(fe==null?void 0:fe.acct)||m]})]})]}),e(de,{href:k,target:"_blank",children:[e(w,{icon:"external"}),e("small",{class:"menu-double-lines",children:so(k)})]}),e("div",{class:"menu-horizontal",children:[e(de,{onClick:()=>{try{navigator.clipboard.writeText(k),se("Link copied")}catch{se("Unable to copy link")}},children:[e(w,{icon:"link"}),e("span",{children:"Copy"})]}),(navigator==null?void 0:navigator.share)&&((Ie=navigator==null?void 0:navigator.canShare)==null?void 0:Ie.call(navigator,{url:k}))&&e(de,{onClick:()=>{try{navigator.share({url:k})}catch{alert("Sharing doesn't seem to work.")}},children:[e(w,{icon:"share"}),e("span",{children:"Share…"})]})]}),!!p&&e(_,{children:[e(ze,{}),P?e(de,{onClick:()=>{c("loading"),(async()=>{try{const F=await h.v1.accounts.$select((fe==null?void 0:fe.id)||b).unmute();l(F),c("default"),se(`Unmuted @${g}`),T.reloadGenericAccounts.id="mute",T.reloadGenericAccounts.counter++}catch{c("error")}})()},children:[e(w,{icon:"unmute"}),e("span",{children:["Unmute @",g]})]}):e(Wt,{menuClassName:"menu-blur",openTrigger:"clickOnly",direction:"bottom",overflow:"auto",shift:16,label:e(_,{children:[e(w,{icon:"mute"}),e("span",{class:"menu-grow",children:["Mute @",g,"…"]}),e("span",{style:{textOverflow:"clip"},children:[e(w,{icon:"time"}),e(w,{icon:"chevron-right"})]})]}),children:e("div",{class:"menu-wrap",children:Ki.map(F=>e(de,{onClick:()=>{c("loading"),(async()=>{try{const re=await h.v1.accounts.$select((fe==null?void 0:fe.id)||b).mute({duration:F});l(re),c("default"),se(`Muted @${g} for ${Bn[F]}`),T.reloadGenericAccounts.id="mute",T.reloadGenericAccounts.counter++}catch{c("error"),se(`Unable to mute @${g}`)}})()},children:Bn[F]}))})}),ee&&e(et,{subMenu:!0,menuItemClassName:"danger",confirmLabel:e(_,{children:[e(w,{icon:"user-x"}),e("span",{children:["Remove @",g," from followers?"]})]}),onClick:()=>{c("loading"),(async()=>{try{const F=await h.v1.accounts.$select((fe==null?void 0:fe.id)||b).removeFromFollowers();l(F),c("default"),se(`@${g} removed from followers`),T.reloadGenericAccounts.id="followers",T.reloadGenericAccounts.counter++}catch{c("error")}})()},children:[e(w,{icon:"user-x"}),e("span",{children:"Remove follower…"})]}),e(et,{subMenu:!0,confirm:!X,confirmLabel:e(_,{children:[e(w,{icon:"block"}),e("span",{children:["Block @",g,"?"]})]}),menuItemClassName:"danger",onClick:()=>{c("loading"),(async()=>{try{if(X){const F=await h.v1.accounts.$select((fe==null?void 0:fe.id)||b).unblock();l(F),c("default"),se(`Unblocked @${g}`)}else{const F=await h.v1.accounts.$select((fe==null?void 0:fe.id)||b).block();l(F),c("default"),se(`Blocked @${g}`)}T.reloadGenericAccounts.id="block",T.reloadGenericAccounts.counter++}catch{c("error"),X?se(`Unable to unblock @${g}`):se(`Unable to block @${g}`)}})()},children:X?e(_,{children:[e(w,{icon:"unblock"}),e("span",{children:["Unblock @",g]})]}):e(_,{children:[e(w,{icon:"block"}),e("span",{children:["Block @",g,"…"]})]})}),e(de,{className:"danger",onClick:()=>{T.showReportModal={account:fe||t}},children:[e(w,{icon:"flag"}),e("span",{children:["Report @",g,"…"]})]})]}),r&&me&&i&&je("@mastodon/profile-edit")&&e(_,{children:[e(ze,{}),e(de,{onClick:()=>{ae(!0)},children:[e(w,{icon:"pencil"}),e("span",{children:"Edit profile"})]})]}),!1]}),!p&&f==="loading"&&e($e,{abrupt:!0}),!!p&&!x&&e(et,{confirm:Y||U,confirmLabel:e("span",{children:U?"Withdraw follow request?":`Unfollow @${t.acct||t.username}?`}),menuItemClassName:"danger",align:"end",disabled:he,onClick:()=>{c("loading"),(async()=>{try{let F;Y||U?F=await h.v1.accounts.$select(L.current).unfollow():F=await h.v1.accounts.$select(L.current).follow(),F&&l(F),c("default")}catch(F){alert(F),c("error")}})()},children:e("button",{type:"button",class:`${Y||U?"light swap":""}`,"data-swap-state":Y||U?"danger":"",disabled:he,children:Y?e(_,{children:[e("span",{children:"Following"}),e("span",{children:"Unfollow…"})]}):U?e(_,{children:[e("span",{children:"Requested"}),e("span",{children:"Withdraw…"})]}):y?e(_,{children:[e(w,{icon:"lock"})," ",e("span",{children:"Follow"})]}):"Follow"})})]})]}),!!ke&&e(Ae,{onClose:()=>{Le(!1)},children:e(io,{note:v,fields:I,onClose:()=>Le(!1)})}),!!Te&&e(Ae,{onClose:()=>{Pe(!1)},children:e(oo,{accountID:L.current,onClose:()=>Pe(!1)})}),!!Fe&&e(Ae,{onClose:()=>{xe(!1)},children:e(ao,{account:t,note:ve,onRelationshipChange:F=>{l(F)},onClose:()=>xe(!1)})}),!!J&&e(Ae,{onClose:()=>{ae(!1)},children:e(co,{onClose:({state:F,account:re}={})=>{ae(!1),F==="success"&&re&&a(re)}})})]})}function no([t,n,i]){const s=.2126*t+.7152*n+.0722*i;let o;return s>=220?o=1:s<=50?o=.1:o=s/255,o=Math.min(1,o),[t,n,i,o]}function so(t){if(!t)return;const n=new URL(t),{host:i,pathname:s}=n,o=s.replace(/\/$/,"").replace(/^\//,"");return e(_,{children:[e("span",{class:"more-insignificant",children:[xt.toUnicode(i),"/"]}),e("wbr",{}),e("span",{children:o})]})}function io({note:t,fields:n,onClose:i}){const s=(n==null?void 0:n.map(({name:a,value:h})=>`${a} +${Pn(h)}`).join(` + +`))||"",o=Pn(t)+(s?` + +${s}`:"");return e("div",{class:"sheet",children:[!!i&&e("button",{type:"button",class:"sheet-close",onClick:i,children:e(w,{icon:"x"})}),e("header",{children:e("h2",{children:"Translated Bio"})}),e("main",{children:[e("p",{style:{whiteSpace:"pre-wrap"},children:o}),e(ks,{forceTranslate:!0,text:o})]})]})}function oo({accountID:t,onClose:n}){const{masto:i}=Q(),[s,o]=$("default"),[a,h]=$([]),[d,r]=$([]),[u,f]=mt(l=>l+1,0);G(()=>{o("loading"),(async()=>{try{const l=await Pt();h(l);const b=await i.v1.accounts.$select(t).lists.list();r(b),o("default")}catch{o("error")}})()},[u]);const[c,p]=$(!1);return e("div",{class:"sheet",id:"list-add-remove-container",children:[!!n&&e("button",{type:"button",class:"sheet-close",onClick:n,children:e(w,{icon:"x"})}),e("header",{children:e("h2",{children:"Add/Remove from Lists"})}),e("main",{children:[a.length>0?e("ul",{class:"list-add-remove",children:a.map(l=>{const b=d.some(m=>m.id===l.id);return e("li",{children:e("button",{type:"button",class:`light ${b?"checked":""}`,disabled:s==="loading",onClick:()=>{o("loading"),(async()=>{try{b?await i.v1.lists.$select(l.id).accounts.remove({accountIds:[t]}):await i.v1.lists.$select(l.id).accounts.create({accountIds:[t]}),f()}catch{o("error"),alert(b?"Unable to remove from list.":"Unable to add to list.")}})()},children:[e(w,{icon:"check-circle"}),e("span",{children:l.title})]})})})}):s==="loading"?e("p",{class:"ui-state",children:e($e,{abrupt:!0})}):s==="error"?e("p",{class:"ui-state",children:"Unable to load lists."}):e("p",{class:"ui-state",children:"No lists."}),e("button",{type:"button",class:"plain2",onClick:()=>p(!0),disabled:s!=="default",children:[e(w,{icon:"plus",size:"l"})," ",e("span",{children:"New list"})]})]}),c&&e(Ae,{onClick:l=>{l.target===l.currentTarget&&p(!1)},children:e(kn,{list:c==null?void 0:c.list,onClose:l=>{l.state==="success"&&f(),p(!1)}})})]})}function ao({account:t,note:n,onRelationshipChange:i=()=>{},onClose:s=()=>{}}){const{masto:o}=Q(),[a,h]=$("default"),d=z(null);return G(()=>{let r;return d.current&&!n&&(r=setTimeout(()=>{var u,f;(f=(u=d.current).focus)==null||f.call(u)},100)),()=>{clearTimeout(r)}},[]),e("div",{class:"sheet",id:"private-note-container",children:[!!s&&e("button",{type:"button",class:"sheet-close",onClick:s,children:e(w,{icon:"x"})}),e("header",{children:e("b",{children:["Private note about @",(t==null?void 0:t.username)||(t==null?void 0:t.acct)]})}),e("main",{children:e("form",{onSubmit:r=>{r.preventDefault();const f=new FormData(r.target).get("note");(f==null?void 0:f.trim())!==(n==null?void 0:n.trim())&&(h("loading"),(async()=>{try{const c=await o.v1.accounts.$select(t==null?void 0:t.id).note.create({comment:f});h("default"),i(c),s()}catch(c){h("error"),alert((c==null?void 0:c.message)||"Unable to update private note.")}})())},children:[e("textarea",{ref:d,name:"note",disabled:a==="loading",children:n}),e("footer",{children:[e("button",{type:"button",class:"light",disabled:a==="loading",onClick:()=>{s==null||s()},children:"Cancel"}),e("span",{children:[e($e,{abrupt:!0,hidden:a!=="loading"}),e("button",{disabled:a==="loading",type:"submit",children:"Save & close"})]})]})]})})]})}function co({onClose:t=()=>{}}){const{masto:n}=Q(),[i,s]=$("loading"),[o,a]=$(null);G(()=>{(async()=>{try{const c=await n.v1.accounts.verifyCredentials();a(c),s("default")}catch{s("error")}})()},[]);const{displayName:h,source:d}=o||{},{note:r,fields:u}=d||{},f=z(null);return e("div",{class:"sheet",id:"edit-profile-container",children:[!!t&&e("button",{type:"button",class:"sheet-close",onClick:t,children:e(w,{icon:"x"})}),e("header",{children:e("b",{children:"Edit profile"})}),e("main",{children:i==="loading"?e("p",{class:"ui-state",children:e($e,{abrupt:!0})}):e("form",{onSubmit:c=>{c.preventDefault();const p=new FormData(c.target),l=p.get("display_name"),b=p.get("note"),m=f.current.querySelectorAll('input[name^="fields_attributes"]'),k=[];m.forEach(g=>{const y=g.name,[C,v,I]=y.match(/fields_attributes\[(\d+)\]\[(.+)\]/)||[],x=g.value?g.value.trim():"";v&&I&&x&&(k[v]||(k[v]={}),k[v][I]=x)}),k.forEach(g=>{g.name&&!g.value&&(g.value="")}),(async()=>{try{const g=await n.v1.accounts.updateCredentials({displayName:l,note:b,fieldsAttributes:k});t==null||t({state:"success",account:g})}catch(g){alert((g==null?void 0:g.message)||"Unable to update profile.")}})()},children:[e("p",{children:e("label",{children:["Name"," ",e("input",{type:"text",name:"display_name",defaultValue:h,maxLength:30,disabled:i==="loading"})]})}),e("p",{children:e("label",{children:["Bio",e("textarea",{defaultValue:r,name:"note",maxLength:500,rows:"5",disabled:i==="loading"})]})}),e("p",{children:"Extra fields"}),e("table",{ref:f,children:[e("thead",{children:e("tr",{children:[e("th",{children:"Label"}),e("th",{children:"Content"})]})}),e("tbody",{children:Array.from({length:Math.max(4,u.length)}).map((c,p)=>{const{name:l="",value:b=""}=u[p]||{};return e(ro,{name:l,value:b,index:p,disabled:i==="loading"},p)})})]}),e("footer",{children:[e("button",{type:"button",class:"light",disabled:i==="loading",onClick:()=>{t==null||t()},children:"Cancel"}),e("button",{type:"submit",disabled:i==="loading",children:"Save"})]})]})})]})}function ro({name:t,value:n,disabled:i,index:s}){const[o,a]=$(!!n);return e("tr",{children:[e("td",{children:e("input",{type:"text",name:`fields_attributes[${s}][name]`,defaultValue:t,disabled:i,maxLength:255,required:o})}),e("td",{children:e("input",{type:"text",name:`fields_attributes[${s}][value]`,defaultValue:n,disabled:i,maxLength:255,onChange:h=>a(!!h.currentTarget.value)})})]})}function lo({acct:t,instance:n}){let[i,s]=t.split("@");return s||(s=n),e("div",{class:"handle-info",children:[e("span",{class:"handle-handle",children:[e("b",{class:"handle-username",children:i}),e("span",{class:"handle-at",children:"@"}),e("b",{class:"handle-server",children:s})]}),e("div",{class:"handle-legend",children:[e("span",{class:"ib",children:[e("span",{class:"handle-legend-icon username"})," username"]})," ",e("span",{class:"ib",children:[e("span",{class:"handle-legend-icon server"})," server domain name"]})]})]})}function uo({account:t,instance:n,onClose:i}){const{masto:s,instance:o,authenticated:a}=Q({instance:n}),h=typeof t=="string";return G(()=>{h||(T.accounts[`${t.id}@${o}`]=t)},[t]),xs(i),e("div",{class:"sheet",children:[!!i&&e("button",{type:"button",class:"sheet-close outer",onClick:i,children:e(w,{icon:"x"})}),e(_s,{instance:o,authenticated:a,account:t,fetchAccount:async()=>{if(h)try{return await s.v1.accounts.lookup({acct:t,skip_webfinger:!1})}catch{const r=await s.v2.search.fetch({q:t,type:"accounts",limit:1,resolve:a});if(r.accounts.length)return r.accounts[0];if(/https?:\/\/[^/]+\/@/.test(t)){const u=new URL(t),{hostname:f,pathname:c}=u,p=c.replace(/^\//,"").replace(/\/$/,"")+"@"+f,l=await s.v2.search.fetch({q:p,type:"accounts",limit:1,resolve:a});if(l.accounts.length)return l.accounts[0]}}else return t}})]})}function ho({onClose:t}){const{masto:n}=Q(),[i,s]=$("default"),[o,a]=$([]),[h,d]=mt(u=>u+1,0);G(()=>{s("loading"),(async()=>{try{const u=await nt.drafts.keys();if(u.length){const f=jt(),c=u.filter(p=>p.startsWith(f));if(c.length){const p=await nt.drafts.getMany(c);p.sort((l,b)=>new Date(b.updatedAt).getTime()-new Date(l.updatedAt).getTime()),a(p)}else a([])}else a([]);s("default")}catch{s("error")}})()},[h]);const r=(o==null?void 0:o.length)>0;return e("div",{class:"sheet",children:[!!t&&e("button",{type:"button",class:"sheet-close",onClick:t,children:e(w,{icon:"x"})}),e("header",{children:[e("h2",{children:["Unsent drafts ",e($e,{abrupt:!0,hidden:i!=="loading"})]}),r&&e("div",{class:"insignificant",children:"Looks like you have unsent drafts. Let's continue where you left off."})]}),e("main",{children:r?e(_,{children:[e("ul",{class:"drafts-list",children:o.map(u=>{const{updatedAt:f,key:c,draftStatus:p,replyTo:l}=u,b=new Date(f);return e("li",{children:[e("div",{class:"mini-draft-meta",children:[e("b",{children:[e(w,{icon:l?"reply":"quill",size:"s"})," ",e("time",{children:[!!l&&e(_,{children:["@",l.account.acct,e("br",{})]}),ot(b)]})]}),e(et,{confirmLabel:e("span",{children:"Delete this draft?"}),menuItemClassName:"danger",align:"end",disabled:i==="loading",onClick:()=>{(async()=>{try{await nt.drafts.del(c),d()}catch{alert("Error deleting draft! Please try again.")}})()},children:e("button",{type:"button",class:"small light",disabled:i==="loading",children:"Delete…"})})]}),e("button",{type:"button",disabled:i==="loading",class:"draft-item",onClick:async()=>{let m;if(l){s("loading");try{m=await n.v1.statuses.$select(l.id).fetch()}catch{alert("Error fetching reply-to status!"),s("default");return}s("default")}window.__COMPOSE__={draftStatus:p,replyToStatus:m},T.showCompose=!0,T.showDrafts=!1},children:e(po,{draft:u})})]},f)})}),o.length>1&&e("p",{children:e(et,{confirmLabel:e("span",{children:"Delete all drafts?"}),menuItemClassName:"danger",disabled:i==="loading",onClick:()=>{(async()=>{s("loading");try{await nt.drafts.delMany(o.map(u=>u.key)),s("default"),d()}catch{alert("Error deleting drafts! Please try again."),s("error")}})()},children:e("button",{type:"button",class:"light danger",disabled:i==="loading",children:"Delete all…"})})})]}):e("p",{children:"No drafts found."})})]})}function po({draft:t}){var c;const{draftStatus:n,replyTo:i}=t,{status:s,spoilerText:o,poll:a,mediaAttachments:h}=n,d=((c=a==null?void 0:a.options)==null?void 0:c.length)>0,r=(h==null?void 0:h.length)>0,u=d||r,f=pe(()=>{if(!r)return;const p=h.find(m=>/image/.test(m.type));if(!p)return;const{file:l}=p;return URL.createObjectURL(l)},[r,h]);return e(_,{children:e("div",{class:"mini-draft",children:[u&&e("div",{class:`mini-draft-aside ${f?"has-image":""}`,style:f?{"--bg-image":`url(${f})`}:{},children:[d&&e(w,{icon:"poll"}),r&&e("span",{children:[e(w,{icon:"attachment"})," ",e("small",{children:h==null?void 0:h.length})]})]}),e("div",{class:"mini-draft-main",children:[!!o&&e("div",{class:"mini-draft-spoiler",children:o}),!!s&&e("div",{class:"mini-draft-status",children:s})]})]})})}function fo({html:t,url:n,width:i,height:s,onClose:o=()=>{}}){return e("div",{class:"embed-modal-container",children:[e("div",{class:"top-controls",children:[e("button",{type:"button",class:"light",onClick:()=>o(),children:e(w,{icon:"x"})}),n&&e("a",{href:n,target:"_blank",rel:"noopener noreferrer",class:"button plain",children:[e("span",{children:"Open link"})," ",e(w,{icon:"external"})]})]}),e("div",{class:"embed-content",dangerouslySetInnerHTML:{__html:t},style:{"--width":i+"px","--height":s+"px","--aspect-ratio":`${i}/${s}`}})]})}function mo({instance:t,excludeRelationshipAttrs:n=[],postID:i,onClose:s=()=>{},blankCopy:o="Nothing to show"}){const{masto:a,instance:h}=Q(),d=t?t===h:!0,r=Me(T),[u,f]=$("default"),[c,p]=$([]),[l,b]=$(!1);if(xs(s),!r.showGenericAccounts)return null;const{id:m,heading:k,fetchAccounts:g,accounts:y,showReactions:C}=r.showGenericAccounts,[v,I]=$({}),x=async M=>{if(!(M!=null&&M.length)||!d)return;const ee=await bn(M,v);ee&&I({...v,...ee})},L=M=>{g&&(M&&p([]),f("loading"),(async()=>{try{const{done:ee,value:X}=await g(M);if(Array.isArray(X)){if(M){const A=[];for(let P=0;PV.id===E.id&&P!==ye);U?U._types.push(...E._types):A.push({_types:[],...E})}p(A)}else p(A=>{const P=A;for(const E of X){const U=P.find(V=>V.id===E.id);U?U._types.push(...E._types):P.push(E)}return P});b(!ee),x(X)}else b(!1);f("default")}catch{f("error")}})())},Y=z(!0);G(()=>{(y==null?void 0:y.length)>0?(p(y),x(y)):(L(!0),Y.current=!1)},[y,g]),G(()=>{var M;Y.current||((M=r.reloadGenericAccounts)==null?void 0:M.id)===m&&L(!0)},[r.reloadGenericAccounts.counter]);const j=T.statuses[i];return e("div",{id:"generic-accounts-container",class:"sheet",tabindex:"-1",children:[e("button",{type:"button",class:"sheet-close",onClick:s,children:e(w,{icon:"x"})}),e("header",{children:e("h2",{children:k||"Accounts"})}),e("main",{children:[j&&e(oe,{to:`/${t||h}/s/${j.id}`,class:"post-preview",children:e(Be,{status:j,size:"s",readOnly:!0})}),c.length>0?e(_,{children:[e("ul",{class:"accounts-list",children:c.map(M=>{var A,P;const ee=v[M.id],X=`${M.id}-${((A=M._types)==null?void 0:A.length)||""}`;return e("li",{children:[C&&((P=M._types)==null?void 0:P.length)>0&&e("div",{class:"reactions-block",children:M._types.map(E=>e(w,{icon:{reblog:"rocket",favourite:"heart"}[E],class:`${E}-icon`}))}),e("div",{class:"account-relationships",children:e(Xe,{account:M,showStats:!0,relationship:ee,excludeRelationshipAttrs:n})})]},X)})}),u==="default"?l?e(rt,{onChange:M=>{M&&L()},children:e("button",{type:"button",class:"plain block",onClick:()=>L(),children:"Show more…"})}):e("p",{class:"ui-state insignificant",children:"The end."}):u==="loading"&&e("p",{class:"ui-state",children:e($e,{abrupt:!0})})]}):u==="loading"?e("p",{class:"ui-state",children:e($e,{abrupt:!0})}):u==="error"?e("p",{class:"ui-state",children:"Error loading accounts"}):e("p",{class:"ui-state insignificant",children:o})]})]})}function go({alt:t,lang:n,onClose:i}){const s=Me(T),[o,a]=$(!1),h=ys(!0),d=s.settings.contentTranslationHideLanguages||[],r=!!n&&n!==h&&!Dn([n],[h])&&!d.find(u=>n===u||Dn([n],[u]));return e("div",{class:"sheet",tabindex:"-1",children:[!!i&&e("button",{type:"button",class:"sheet-close outer",onClick:i,children:e(w,{icon:"x"})}),e("header",{class:"header-grid",children:[e("h2",{children:"Media description"}),e("div",{class:"header-side",children:e(Ze,{align:"end",menuButton:e("button",{type:"button",class:"plain4",children:e(w,{icon:"more",alt:"More",size:"xl"})}),children:[e(de,{disabled:o,onClick:()=>{a(!0)},children:[e(w,{icon:"translate"}),e("span",{children:"Translate"})]}),vi&&e(de,{onClick:()=>{ki(t,n)},children:[e(w,{icon:"speak"}),e("span",{children:"Speak"})]})]})})]}),e("main",{lang:n,dir:"auto",children:[e("p",{style:{whiteSpace:"pre-wrap",textWrap:"pretty"},children:t}),(r||o)&&e(ks,{forceTranslate:o,sourceLanguage:n,text:t})]})]})}function Qt(t,n,i){return Math.max(Math.min(t,i),n)}const en=t=>t>=.04045?Math.pow((t+.055)/1.055,2.4):t/12.92,tn=t=>t>=.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t;function Sn([t,n,i]){t=en(t/255),n=en(n/255),i=en(i/255);var s=.4122214708*t+.5363325363*n+.0514459929*i,o=.2119034982*t+.6806995451*n+.1073969566*i,a=.0883024619*t+.2817188376*n+.6299787005*i;return s=Math.cbrt(s),o=Math.cbrt(o),a=Math.cbrt(a),[s*.2104542553+o*.793617785+a*-.0040720468,s*1.9779984951+o*-2.428592205+a*.4505937099,s*.0259040371+o*.7827717662+a*-.808675766]}function In([t,n,r]){var s=t+n*.3963377774+r*.2158037573,o=t+n*-.1055613458+r*-.0638541728,a=t+n*-.0894841775+r*-1.291485548;s=s**3,o=o**3,a=a**3;var h=s*4.0767416621+o*-3.3077115913+a*.2309699292,d=s*-1.2684380046+o*2.6097574011+a*-.3413193965,r=s*-.0041960863+o*-.7034186147+a*1.707614701;return h=255*tn(h),d=255*tn(d),r=255*tn(r),h=Qt(h,0,255),d=Qt(d,0,255),r=Qt(r,0,255),h=Math.round(h),d=Math.round(d),r=Math.round(r),[h,d,r]}var bo={PHANPY_CLIENT_NAME:"Phanpy",PHANPY_WEBSITE:"https://phanpy.social",PHANPY_LINGVA_INSTANCES:"lingva.phanpy.social lingva.lunar.icu lingva.garudalinux.org translate.plausibility.cloud",PHANPY_PRIVACY_POLICY_URL:"https://github.com/cheeaun/phanpy/blob/main/PRIVACY.MD",VITE_APP_ENV:"production",BASE_URL:"./",MODE:"production",DEV:!1,PROD:!0,SSR:!1};const{PHANPY_IMG_ALT_API_URL:jc}=bo;function Ls({mediaAttachments:t,statusID:n,instance:i,lang:s,index:o=0,onClose:a=()=>{}}){var y,C;const[h,d]=$("default"),r=z(null),[u,f]=$(o),c=z(null);lt(()=>{var v;(v=c.current)==null||v.scrollIntoView()},[]);const p=z(n);G(()=>{const v=o*r.current.clientWidth,I=p.current!==n;I&&(p.current=n),r.current.scrollTo({left:v,behavior:I?"auto":"smooth"}),r.current.focus()},[o,n]);const[l,b]=$(!0);G(()=>{let v=()=>{a()};return r.current&&r.current.addEventListener("swiped-down",v),()=>{r.current&&r.current.removeEventListener("swiped-down",v)}},[]),_e("esc",a,{ignoreEventWhen:v=>!!document.querySelector("#modal-container > *")},[a]),G(()=>{let v=()=>{const{clientWidth:I,scrollLeft:x}=r.current,L=Math.round(x/I);f(L)};return r.current&&r.current.addEventListener("scroll",v,{passive:!0}),()=>{r.current&&r.current.removeEventListener("scroll",v)}},[]),G(()=>{let v=setTimeout(()=>{var I,x;(x=(I=r.current)==null?void 0:I.focus)==null||x.call(I)},100);return()=>clearTimeout(v)},[]);const m=pe(()=>t==null?void 0:t.map(v=>{const{blurhash:I}=v;if(I){const x=fn(I),L=Sn(x);return In([.6,L[1],L[2]])}return null}),[t]),k=pe(()=>{var x;const I=100/m.length;return((x=m==null?void 0:m.map((L,Y)=>{const j=Y*I+5,M=(Y+1)*I-5;return L?` + rgba(${L==null?void 0:L.join(",")}, 0.4) ${j}%, + rgba(${L==null?void 0:L.join(",")}, 0.4) ${M}% + `:` + transparent ${j}%, + transparent ${M}% + `}))==null?void 0:x.join(", "))||"transparent"},[m]);let g=z(null);return G(()=>()=>{var v,I;(I=(v=g.current)==null?void 0:v.hideToast)==null||I.call(v)},[]),e("div",{class:`media-modal-container media-modal-count-${t==null?void 0:t.length}`,children:[e("div",{ref:r,tabIndex:"0","data-swipe-threshold":"44",class:"carousel",onClick:v=>{(v.target.classList.contains("carousel-item")||v.target.classList.contains("media")||v.target.classList.contains("media-zoom"))&&a()},style:t.length>1?{backgroundAttachment:"local",backgroundImage:`linear-gradient( + to right, ${k})`}:{},children:t==null?void 0:t.map((v,I)=>{const x=t.length===1?m[I]:null;return e("div",{class:"carousel-item",style:x?{"--accent-color":`rgb(${x==null?void 0:x.join(",")})`,"--accent-alpha-color":`rgba(${x==null?void 0:x.join(",")}, 0.4)`}:{},tabindex:"0",ref:I===u?c:null,onClick:L=>{L.target.classList.contains("media")||b(!l)},children:[!!v.description&&e("button",{type:"button",class:"media-alt",hidden:!l,onClick:()=>{T.showMediaAlt={alt:v.description,lang:s}},children:[e("span",{class:"alt-badge",children:"ALT"}),e("span",{class:"media-alt-desc",lang:s,dir:"auto",children:v.description})]}),e(Ss,{media:v,showOriginal:!0,lang:s})]},v.id)})}),e("div",{class:"carousel-top-controls",hidden:!l,children:[e("span",{children:e("button",{type:"button",class:"carousel-button",onClick:()=>a(),children:e(w,{icon:"x"})})}),(t==null?void 0:t.length)>1?e("span",{class:"carousel-dots",children:t==null?void 0:t.map((v,I)=>e("button",{type:"button",disabled:I===u,class:`carousel-dot ${I===u?"active":""}`,onClick:x=>{x.preventDefault(),x.stopPropagation(),r.current.scrollTo({left:r.current.clientWidth*I,behavior:"smooth"}),r.current.focus()},children:e(w,{icon:"round",size:"s"})},v.id))}):e("span",{}),e("span",{children:[e(Ze,{overflow:"auto",align:"end",position:"anchor",gap:4,menuClassName:"glass-menu",menuButton:e("button",{type:"button",class:"carousel-button",children:e(w,{icon:"more",alt:"More"})}),children:[e(Re,{href:((y=t[u])==null?void 0:y.remoteUrl)||((C=t[u])==null?void 0:C.url),class:"carousel-button",target:"_blank",title:"Open original media in new window",children:[e(w,{icon:"popout"}),e("span",{children:"Open original media"})]}),!1]})," ",e(oe,{to:`${i?`/${i}`:""}/s/${n}${window.matchMedia("(min-width: calc(40em + 350px))").matches?`?media=${u+1}`:""}`,class:"button carousel-button media-post-link",children:[e("span",{class:"button-label",children:"View post "}),"»"]})]})]}),(t==null?void 0:t.length)>1&&e("div",{class:"carousel-controls",hidden:!l,children:[e("button",{type:"button",class:"carousel-button",hidden:u===0,onClick:v=>{v.preventDefault(),v.stopPropagation(),r.current.focus(),r.current.scrollTo({left:r.current.clientWidth*(u-1),behavior:"smooth"})},children:e(w,{icon:"arrow-left"})}),e("button",{type:"button",class:"carousel-button",hidden:u===t.length-1,onClick:v=>{v.preventDefault(),v.stopPropagation(),r.current.focus(),r.current.scrollTo({left:r.current.clientWidth*(u+1),behavior:"smooth"})},children:e(w,{icon:"arrow-right"})})]})]})}const yo=[,"spam","legal","violation","other"],At={spam:{label:"Spam",description:"Malicious links, fake engagement, or repetitive replies"},legal:{label:"Illegal",description:"Violates the law of your or the server's country"},violation:{label:"Server rule violation",description:"Breaks specific server rules",stampLabel:"Violation"},other:{label:"Other",description:"Issue doesn't fit other categories",excludeStamp:!0}};function wo({account:t,post:n,onClose:i}){const{masto:s}=Q(),[o,a]=$("default"),[h,d]=t.acct.split("@"),[r,u]=pe(()=>{const{rules:g,domain:y}=us();return[g||[],y]}),[f,c]=$(null),[p,l]=$(!1),b=z(null),[m,k]=$(!1);return e("div",{class:"report-modal-container",children:[e("div",{class:"top-controls",children:[e("h1",{children:n?"Report Post":`Report @${h}`}),e("button",{type:"button",class:"plain4 small",disabled:o==="loading",onClick:()=>i(),children:e(w,{icon:"x",size:"xl"})})]}),e("main",{children:[e("div",{class:"report-preview",children:n?e(Be,{status:n,size:"s",previewMode:!0}):e(Xe,{account:t,avatarSize:"xxl",useAvatarStatic:!0,showStats:!0,showActivity:!0})}),!!f&&!At[f].excludeStamp&&e("span",{class:"rubber-stamp","aria-hidden":"true",children:[At[f].stampLabel||At[f].label,e("small",{children:"Pending review"})]},f),e("form",{onSubmit:g=>{g.preventDefault();const y=new FormData(g.target),C=Object.fromEntries(y.entries());let{category:v,comment:I,forward:x}=C;I||(I=void 0),x==="on"&&(x=!0);const L=v==="violation"?Object.entries(C).filter(([j])=>j.startsWith("rule_ids")).map(([j,M])=>M):void 0,Y={category:v,comment:I,forward:x,ruleIds:L};a("loading"),(async()=>{try{await s.v1.reports.create({accountId:t.id,statusIds:n!=null&&n.id?[n.id]:void 0,category:v,comment:I,ruleIds:L,forward:x}),a("success"),se(n?"Post reported":"Profile reported"),i()}catch(j){a("error"),se((j==null?void 0:j.message)||(n?"Unable to report post":"Unable to report profile"))}})()},children:[e("p",{children:n?"What's the issue with this post?":"What's the issue with this profile?"}),e("section",{class:"report-categories",children:yo.map(g=>g==="violation"&&!(r!=null&&r.length)?null:e(_,{children:[e("label",{class:"report-category",children:[e("input",{type:"radio",name:"category",value:g,required:!0,disabled:o==="loading",onChange:y=>{c(y.target.value),l(y.target.value==="violation")}}),e("span",{children:[At[g].label,"  ",e("small",{class:"ib insignificant",children:At[g].description})]})]}),g==="violation"&&!!(r!=null&&r.length)&&e("div",{class:"shazam-container no-animation",hidden:!p,children:e("div",{class:"shazam-container-inner",children:e("div",{class:"report-rules",ref:b,children:r.map((y,C)=>e("label",{class:"report-rule",children:[e("input",{type:"checkbox",name:`rule_ids[${C}]`,value:y.id,required:p&&!m,disabled:o==="loading",onChange:v=>{const{checked:I}=v.target;I?k(!0):b.current.querySelectorAll("input:checked").length||k(!1)}}),e("span",{children:y.text})]},y.id))})})})]},g))}),e("section",{class:"report-comment",children:[e("p",{children:e("label",{for:"report-comment",children:"Additional info"})}),e("textarea",{maxlength:"1000",rows:"1",name:"comment",id:"report-comment",disabled:o==="loading"})]}),!!d&&d!==u&&e("section",{children:e("p",{children:e("label",{children:[e("input",{type:"checkbox",switch:!0,name:"forward",disabled:o==="loading"})," ",e("span",{children:["Forward to ",e("i",{children:d})]})]})})}),e("footer",{children:[e("button",{type:"submit",disabled:o==="loading",children:"Send Report"})," ",e("button",{type:"submit",class:"plain2",disabled:o==="loading",onClick:async()=>{try{await s.v1.accounts.$select(t.id).mute(),se(`Muted ${h}`)}catch{se(`Unable to mute ${h}`)}},children:["Send Report ",e("small",{class:"ib",children:"+ Mute profile"})]})," ",e("button",{type:"submit",class:"plain2",disabled:o==="loading",onClick:async()=>{try{await s.v1.accounts.$select(t.id).block(),se(`Blocked ${h}`)}catch{se(`Unable to block ${h}`)}},children:["Send Report ",e("small",{class:"ib",children:"+ Block profile"})]}),e($e,{hidden:o!=="loading"})]})]})]})]})}const vo="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='none'%20viewBox='0%200%2084%2062'%3e%3crect%20width='64'%20height='48'%20x='18'%20y='2'%20fill='%23fff'%20stroke='%23999'%20stroke-width='3'%20rx='4'/%3e%3crect%20width='32'%20height='48'%20x='2'%20y='12'%20fill='%23fff'%20stroke='%23999'%20stroke-width='3'%20rx='4'/%3e%3cpath%20fill='%234169E1'%20d='M14%2052a4%204%200%201%201-8%200%204%204%200%200%201%208%200Zm64-42a4%204%200%201%201-8%200%204%204%200%200%201%208%200Z'/%3e%3c/svg%3e",ko="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='none'%20viewBox='0%200%2082%2062'%3e%3crect%20width='78'%20height='58'%20x='2'%20y='2'%20fill='%23999'%20fill-opacity='.3'%20stroke='%23999'%20stroke-width='3'%20rx='4'/%3e%3crect%20width='18'%20height='46'%20x='8'%20y='8'%20fill='%23fff'%20stroke='%23999'%20stroke-width='2'%20rx='1'/%3e%3crect%20width='18'%20height='46'%20x='32'%20y='8'%20fill='%23fff'%20stroke='%23999'%20stroke-width='2'%20rx='1'/%3e%3crect%20width='18'%20height='46'%20x='56'%20y='8'%20fill='%23fff'%20stroke='%23999'%20stroke-width='2'%20rx='1'/%3e%3c/svg%3e",So="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='none'%20viewBox='0%200%2084%2062'%3e%3crect%20width='64'%20height='48'%20x='18'%20y='2'%20fill='%23fff'%20stroke='%23999'%20stroke-width='3'%20rx='4'/%3e%3cpath%20fill='%23999'%20fill-opacity='.3'%20d='M19%203h62v10H19z'/%3e%3cpath%20stroke='%234169E1'%20stroke-width='2'%20d='M43%208a2%202%200%201%201-4%200%202%202%200%200%201%204%200Z'/%3e%3cpath%20stroke='%23999'%20stroke-width='2'%20d='M52%208a2%202%200%201%201-4%200%202%202%200%200%201%204%200Zm9%200a2%202%200%201%201-4%200%202%202%200%200%201%204%200Z'/%3e%3crect%20width='32'%20height='48'%20x='2'%20y='12'%20fill='%23fff'%20stroke='%23999'%20stroke-width='3'%20rx='4'/%3e%3cpath%20fill='%23999'%20fill-opacity='.3'%20d='M3%2049h30v10H3z'/%3e%3cpath%20stroke='%234169E1'%20stroke-width='2'%20d='M11%2054a2%202%200%201%201-4%200%202%202%200%200%201%204%200Z'/%3e%3cpath%20stroke='%23999'%20stroke-width='2'%20d='M20%2054a2%202%200%201%201-4%200%202%202%200%200%201%204%200Zm9%200a2%202%200%201%201-4%200%202%202%200%200%201%204%200Z'/%3e%3c/svg%3e",Io=200,Co=10;async function Kt(){const{masto:t}=Q(),n=t.v1.followedTags.list({limit:Io}),i=[];let s=0;do{const{value:o,done:a}=await n.next();if(a||(o==null?void 0:o.length)===0)break;i.push(...o),s++}while(so.name.localeCompare(a.name)),i.length&&setTimeout(()=>{be.account.set("followedTags",{tags:i,updatedAt:Date.now()})},1),i}const To=24*60*60*1e3;async function xo(){try{const{tags:t,updatedAt:n}=be.account.get("followedTags")||{};return t!=null&&t.length?(Date.now()-n>To&&Kt(),t):await Kt()}catch{return[]}}const Hn=document.createElement("div"),$o=t=>{if(!t)return[];if(t.indexOf("#")===-1)return[];Hn.innerHTML=t;const n=Hn.querySelectorAll("a.hashtag");return n.length?Array.from(n).map(i=>i.innerText.trim().replace(/^[^#]*#+/,"")):[]};function qt({children:t}){if(typeof t=="string")return t;const[n,i]=$("");return G(()=>{Promise.resolve(t).then(i)},[t]),n}const at=9,Ao=["following","mentions","notifications","list","public","trending","search","hashtag","bookmarks","favourites"],Es={following:"Home / Following",notifications:"Notifications",list:"Lists",public:"Public (Local / Federated)",search:"Search","account-statuses":"Account",bookmarks:"Bookmarks",favourites:"Likes",hashtag:"Hashtag",trending:"Trending",mentions:"Mentions"},Ht={list:[{text:"List ID",name:"id",notRequired:!0}],public:[{text:"Local only",name:"local",type:"checkbox"},{text:"Instance",name:"instance",type:"text",placeholder:"Optional, e.g. mastodon.social",notRequired:!0}],trending:[{text:"Instance",name:"instance",type:"text",placeholder:"Optional, e.g. mastodon.social",notRequired:!0}],search:[{text:"Search term",name:"query",type:"text",placeholder:"Optional, unless for multi-column mode",notRequired:!0}],"account-statuses":[{text:"@",name:"id",type:"text",placeholder:"cheeaun@mastodon.social"}],hashtag:[{text:"#",name:"hashtag",type:"text",placeholder:"e.g. PixelArt (Max 5, space-separated)",pattern:"[^#]+"},{text:"Media only",name:"media",type:"checkbox"},{text:"Instance",name:"instance",type:"text",placeholder:"Optional, e.g. mastodon.social",notRequired:!0}]},Ro=ht(async({id:t})=>{const n=await Q().masto.v1.accounts.$select(t).fetch();return n.username||n.acct||n.displayName}),Zt={following:{id:"home",title:(t,n)=>n===0?"Home":"Following",path:"/",icon:"home"},mentions:{id:"mentions",title:"Mentions",path:"/mentions",icon:"at"},notifications:{id:"notifications",title:"Notifications",path:"/notifications",icon:"notification"},list:{id:({id:t})=>t?"list":"lists",title:({id:t})=>t?Gi(t):"Lists",path:({id:t})=>t?`/l/${t}`:"/l",icon:"list",excludeViewMode:({id:t})=>t?[]:["multi-column"]},public:{id:"public",title:({local:t})=>t?"Local":"Federated",subtitle:({instance:t})=>t||Q().instance,path:({local:t,instance:n})=>`/${n}/p${t?"/l":""}`,icon:({local:t})=>t?"building":"earth"},trending:{id:"trending",title:"Trending",subtitle:({instance:t})=>t||Q().instance,path:({instance:t})=>`/${t}/trending`,icon:"chart"},search:{id:"search",title:({query:t})=>t?`“${t}”`:"Search",path:({query:t})=>t?`/search?q=${encodeURIComponent(t)}&type=statuses`:"/search",icon:"search",excludeViewMode:({query:t})=>t?[]:["multi-column"]},"account-statuses":{id:"account-statuses",title:Ro,path:({id:t})=>`/a/${t}`,icon:"user"},bookmarks:{id:"bookmarks",title:"Bookmarks",path:"/b",icon:"bookmark"},favourites:{id:"favourites",title:"Likes",path:"/f",icon:"heart"},hashtag:{id:"hashtag",title:({hashtag:t})=>t,subtitle:({instance:t})=>t||Q().instance,path:({hashtag:t,instance:n,media:i})=>`${n?`/${n}`:""}/t/${t.split(/\s+/).join("+")}${i?"?media=1":""}`,icon:"hashtag"}};function _o({onClose:t}){const n=Me(T),{shortcuts:i}=n,[s,o]=$(!1),[a,h]=$(!1),[d]=pn();return e("div",{id:"shortcuts-settings-container",class:"sheet",tabindex:"-1",children:[!!t&&e("button",{type:"button",class:"sheet-close",onClick:t,children:e(w,{icon:"x"})}),e("header",{children:e("h2",{children:[e(w,{icon:"shortcut"})," Shortcuts"," ",e("sup",{style:{fontSize:12,opacity:.5,textTransform:"uppercase"},children:"beta"})]})}),e("main",{children:[e("p",{children:"Specify a list of shortcuts that'll appear as:"}),e("div",{class:"shortcuts-view-mode",children:[{value:"float-button",label:"Floating button",imgURL:vo},{value:"tab-menu-bar",label:"Tab/Menu bar",imgURL:So},{value:"multi-column",label:"Multi-column",imgURL:ko}].map(({value:r,label:u,imgURL:f})=>{const c=n.settings.shortcutsViewMode===r||r==="float-button"&&!n.settings.shortcutsViewMode;return e("label",{class:c?"checked":"",children:[e("input",{type:"radio",name:"shortcuts-view-mode",value:r,checked:c,onChange:p=>{T.settings.shortcutsViewMode=p.target.value}})," ",e("img",{src:f,alt:"",width:"80",height:"58"})," ",e("span",{children:u})]},r)})}),i.length>0?e(_,{children:[e("ol",{class:"shortcuts-list",ref:d,children:i.filter(Boolean).map((r,u)=>{const f=Object.values(r).join("-"),{type:c}=r;if(!Zt[c])return null;let{icon:p,title:l,subtitle:b,excludeViewMode:m}=Zt[c];typeof l=="function"&&(l=l(r,u)),typeof b=="function"&&(b=b(r,u)),typeof p=="function"&&(p=p(r,u)),typeof m=="function"&&(m=m(r,u));const k=m==null?void 0:m.includes(n.settings.shortcutsViewMode);return e("li",{children:[e(w,{icon:p}),e("span",{class:"shortcut-text",children:[e(qt,{children:l}),b&&e(_,{children:[" ",e("small",{class:"ib insignificant",children:b})]}),k&&e("span",{class:"tag",children:"Not available in current view mode"})]}),e("span",{class:"shortcut-actions",children:[e("button",{type:"button",class:"plain small",disabled:u===0,onClick:()=>{const g=Array.from(T.shortcuts);if(u>0){const y=T.shortcuts[u-1];g[u-1]=r,g[u]=y,T.shortcuts=g}},children:e(w,{icon:"arrow-up",alt:"Move up"})}),e("button",{type:"button",class:"plain small",disabled:u===i.length-1,onClick:()=>{const g=Array.from(T.shortcuts);if(u{o({shortcut:r,shortcutIndex:u})},children:e(w,{icon:"pencil",alt:"Edit"})})]})]},f)})}),i.length===1&&n.settings.shortcutsViewMode!=="float-button"&&e("div",{class:"ui-state insignificant",children:[e(w,{icon:"info"})," ",e("small",{children:"Add more than one shortcut/column to make this work."})]})]}):e("div",{class:"ui-state insignificant",children:[e("p",{children:n.settings.shortcutsViewMode==="multi-column"?"No columns yet. Tap on the Add column button.":"No shortcuts yet. Tap on the Add shortcut button."}),e("p",{children:["Not sure what to add?",e("br",{}),"Try adding"," ",e("a",{href:"#",onClick:r=>{r.preventDefault(),T.shortcuts=[{type:"following"},{type:"notifications"}]},children:"Home / Following and Notifications"})," ","first."]})]}),e("p",{class:"insignificant",children:i.length>=at&&(n.settings.shortcutsViewMode==="multi-column"?`Max ${at} columns`:`Max ${at} shortcuts`)}),e("p",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[e("button",{type:"button",class:"light",onClick:()=>h(!0),children:"Import/export"}),e("button",{type:"button",disabled:i.length>=at,onClick:()=>o(!0),children:[e(w,{icon:"plus"})," ",e("span",{children:n.settings.shortcutsViewMode==="multi-column"?"Add column…":"Add shortcut…"})]})]})]}),s&&e(Ae,{onClick:r=>{r.target===r.currentTarget&&o(!1)},children:e(Lo,{shortcut:s.shortcut,shortcutIndex:s.shortcutIndex,onSubmit:({result:r,mode:u})=>{u==="edit"?T.shortcuts[s.shortcutIndex]=r:T.shortcuts.push(r)},onClose:()=>o(!1)})}),a&&e(Ae,{onClick:r=>{r.target===r.currentTarget&&h(!1)},children:e(Eo,{shortcuts:i,onClose:()=>h(!1)})})]})}const Vn={list:"Specific list is optional. For multi-column mode, list is required, else the column will not be shown.",search:"For multi-column mode, search term is required, else the column will not be shown.",hashtag:"Multiple hashtags are supported. Space-separated."};function Lo({onSubmit:t,disabled:n,shortcut:i,shortcutIndex:s,onClose:o}){var k,g;const a=!!i,[h,d]=$((i==null?void 0:i.type)||null),{masto:r}=Q(),[u,f]=$("default"),[c,p]=$([]),[l,b]=$([]);G(()=>{(async()=>{if(h==="list")try{f("loading");const y=await Pt();p(y),f("default")}catch{f("error")}})(),(async()=>{if(h==="hashtag")try{const y=await Kt();b(y)}catch{}})()},[h]);const m=z();return G(()=>{if(a&&h&&Ht[h]){const y=m.current;Ht[h].forEach(({name:C,type:v})=>{const I=y.querySelector(`[name="${C}"]`);I&&i[C]&&(v==="checkbox"?I.checked=i[C]==="on":I.value=i[C])})}},[a,h]),e("div",{id:"shortcut-settings-form",class:"sheet",children:[!!o&&e("button",{type:"button",class:"sheet-close",onClick:o,children:e(w,{icon:"x"})}),e("header",{children:e("h2",{children:[a?"Edit":"Add"," shortcut"]})}),e("main",{tabindex:"-1",children:e("form",{ref:m,onSubmit:y=>{y.preventDefault();const C=new FormData(y.target),v={};C.forEach((I,x)=>{v[x]=I==null?void 0:I.trim(),x==="instance"&&(v[x]=v[x].replace(/^https?:\/\//,"").replace(/\/+$/,""),v[x]=v[x].replace(/^@?[^@]+@/,""))}),v.type&&(t({result:v,mode:a?"edit":"add"}),y.target.reset(),d(null),o==null||o())},children:[e("p",{children:e("label",{children:[e("span",{children:"Timeline"}),e("select",{required:!0,disabled:n,onChange:y=>{d(y.target.value)},defaultValue:a?i.type:void 0,name:"type",children:[e("option",{}),Ao.map(y=>e("option",{value:y,children:Es[y]}))]})]})}),(g=(k=Ht[h])==null?void 0:k.map)==null?void 0:g.call(k,({text:y,name:C,type:v,placeholder:I,pattern:x,notRequired:L})=>h==="list"?e("p",{children:e("label",{children:[e("span",{children:"List"}),e("select",{name:"id",required:!L,disabled:n||u==="loading",defaultValue:a?i.id:void 0,children:[e("option",{value:""}),c.map(Y=>e("option",{value:Y.id,children:Y.title}))]})]})}):e("p",{children:e("label",{children:[e("span",{children:y})," ",e("input",{type:v,switch:v==="checkbox"||void 0,name:C,placeholder:I,required:v==="text"&&!L,disabled:n,list:h==="hashtag"?"followed-hashtags-datalist":null,autocorrect:"off",autocapitalize:"off",spellCheck:!1,pattern:x}),h==="hashtag"&&l.length>0&&e("datalist",{id:"followed-hashtags-datalist",children:l.map(Y=>e("option",{value:Y.name}))})]})})),!!Vn[h]&&e("p",{class:"form-note insignificant",children:[e(w,{icon:"info"}),Vn[h]]}),e("footer",{children:[e("button",{type:"submit",class:"block",disabled:n||u==="loading",children:a?"Save":"Add"}),a&&e("button",{type:"button",class:"light danger",onClick:()=>{T.shortcuts.splice(s,1),o==null||o()},children:"Remove"})]})]})})]})}function Eo({shortcuts:t,onClose:n}){var c;const{masto:i}=Q(),s=pe(()=>!t||!t.filter(Boolean).length?"":_n.compressToEncodedURIComponent(JSON.stringify(t.filter(Boolean))),[t]),[o,a]=$(""),[h,d]=$("default"),r=pe(()=>{if(!o)return d("default"),null;try{const p=JSON.parse(_n.decompressFromEncodedURIComponent(o));if(!Array.isArray(p))throw new Error("Not an array");return d("default"),p}catch{try{const l=JSON.parse(o);if(!Array.isArray(l))throw new Error("Not an array");return d("default"),l}catch{return d("error"),null}}},[o]),u=T.shortcuts.length>0,f=z();return e("div",{id:"import-export-container",class:"sheet",children:[!!n&&e("button",{type:"button",class:"sheet-close",onClick:n,children:e(w,{icon:"x"})}),e("header",{children:e("h2",{children:["Import/Export ",e("small",{class:"ib insignificant",children:"Shortcuts"})]})}),e("main",{tabindex:"-1",children:[e("section",{children:[e("h3",{children:[e(w,{icon:"arrow-down-circle",size:"l",class:"insignificant"})," ",e("span",{children:"Import"})]}),e("p",{class:"field-button",children:[e("input",{ref:f,type:"text",name:"import",placeholder:"Paste shortcuts here",class:"block",onInput:p=>{a(p.target.value)}}),T.settings.shortcutSettingsCloudImportExport&&e("button",{type:"button",class:"plain2 small",disabled:h==="cloud-downloading",onClick:async()=>{d("cloud-downloading");const p=ct();se("Downloading saved shortcuts from instance server…");try{const b=(await i.v1.accounts.relationships.fetch({id:[p]}))[0];if(b){const{note:m=""}=b;if(/(.*)<\/phanpy-shortcuts-settings>/.test(m)){const k=m.match(/(.*)<\/phanpy-shortcuts-settings>/)[1],{v:g,dt:y,data:C}=JSON.parse(k);f.current.value=C,f.current.dispatchEvent(new Event("input"))}}d("default")}catch{d("error"),se("Unable to download shortcuts")}},title:"Download shortcuts from instance server",children:[e(w,{icon:"cloud"}),e(w,{icon:"arrow-down"})]})]}),!!r&&Array.isArray(r)&&e(_,{children:[e("p",{children:[e("b",{children:r.length})," shortcut",r.length>1?"s":""," ",e("small",{class:"insignificant",children:["(",o.length," characters)"]})]}),e("ol",{class:"import-settings-list",children:r.map(p=>{var l,b;return e("li",{children:[e("span",{style:{opacity:t.some(m=>Object.keys(m).every(k=>m[k]===p[k]))?1:0},children:"*"}),e("span",{children:[Es[p.type],p.type==="list"&&" ⚠️"," ",(b=(l=Ht[p.type])==null?void 0:l.map)==null?void 0:b.call(l,({text:m,name:k,type:g})=>p[k]?e(_,{children:[e("span",{class:"tag collapsed insignificant",children:[m,":"," ",g==="checkbox"?p[k]==="on"?"✅":"❌":p[k]]})," "]}):null)]})]})})}),e("p",{children:[e("small",{children:"* Exists in current shortcuts"}),e("br",{}),e("small",{children:"⚠️ List may not work if it's from a different account."})]})]}),h==="error"&&e("p",{class:"error",children:e("small",{children:"⚠️ Invalid settings format"})}),e("p",{children:[u&&e(_,{children:[e(et,{confirmLabel:"Append to current shortcuts?",menuFooter:e("div",{class:"footer",children:"Only shortcuts that don’t exist in current shortcuts will be appended."}),onClick:()=>{const p=r.filter(m=>!T.shortcuts.some(k=>Object.keys(k).every(g=>k[g]===m[g])));if(!p.length){se("No new shortcuts to import");return}let l=[...T.shortcuts,...p];const b=l.length>at;b&&(l=l.slice(0,at)),T.shortcuts=l,se(b?`Shortcuts imported. Exceeded max ${at}, so the rest are not imported.`:"Shortcuts imported"),n==null||n()},children:e("button",{type:"button",class:"plain2",disabled:!r,children:"Import & append…"})})," "]}),e(et,{confirmLabel:u?"Override current shortcuts?":"Import shortcuts?",menuItemClassName:u?"danger":void 0,onClick:()=>{T.shortcuts=r,se("Shortcuts imported"),n==null||n()},children:e("button",{type:"button",class:"plain2",disabled:!r,children:u?"or override…":"Import…"})})]})]}),e("section",{children:[e("h3",{children:[e(w,{icon:"arrow-up-circle",size:"l",class:"insignificant"})," ",e("span",{children:"Export"})]}),e("p",{children:e("input",{style:{width:"100%"},type:"text",value:s,readOnly:!0,onClick:p=>{if(p.target.value){p.target.select();try{navigator.clipboard.writeText(p.target.value),se("Shortcuts copied")}catch{se("Unable to copy shortcuts")}}}})}),e("p",{children:[e("button",{type:"button",class:"plain2",disabled:!s,onClick:()=>{try{navigator.clipboard.writeText(s),se("Shortcut settings copied")}catch{se("Unable to copy shortcut settings")}},children:[e(w,{icon:"clipboard"})," ",e("span",{children:"Copy"})]})," ",(navigator==null?void 0:navigator.share)&&((c=navigator==null?void 0:navigator.canShare)==null?void 0:c.call(navigator,{text:s}))&&e("button",{type:"button",class:"plain2",disabled:!s,onClick:()=>{try{navigator.share({text:s})}catch{alert("Sharing doesn't seem to work.")}},children:[e(w,{icon:"share"})," ",e("span",{children:"Share"})]})," ",T.settings.shortcutSettingsCloudImportExport&&e("button",{type:"button",class:"plain2",disabled:h==="cloud-uploading",onClick:async()=>{d("cloud-uploading");const p=ct();try{const b=(await i.v1.accounts.relationships.fetch({id:[p]}))[0];if(b){const{note:m=""}=b;let k="";if(/(.*)<\/phanpy-shortcuts-settings>/.test(m)){const g=JSON.stringify({v:"1",dt:Date.now(),data:s});k=m.replace(/(.*)<\/phanpy-shortcuts-settings>/,`${g}`)}else k=`${m} + + +${settingsJSON}`;se("Saving shortcuts to instance server…"),await i.v1.accounts.$select(p).note.create({comment:k}),d("default"),se("Shortcuts saved")}}catch{d("error"),se("Unable to save shortcuts")}},title:"Sync to instance server",children:[e(w,{icon:"cloud"}),e(w,{icon:"arrow-up"})]})," ",s.length>0&&e("small",{class:"insignificant ib",children:[s.length," characters"]})]}),!!s&&e("details",{children:[e("summary",{class:"insignificant",children:e("small",{children:"Raw Shortcuts JSON"})}),e("textarea",{style:{width:"100%"},rows:10,readOnly:!0,children:JSON.stringify(t.filter(Boolean),null,2)})]})]}),T.settings.shortcutSettingsCloudImportExport&&e("footer",{children:e("p",{children:[e(w,{icon:"cloud"})," Import/export settings from/to instance server (Very experimental)"]})})]})]})}ps(T,t=>{for(const[n,i,s,o]of t)/^show/i.test(i)&&!s&&an()});function Mo(){var s,o,a,h,d,r,u,f;const t=Me(T),n=fs(),i=Tt();return G(()=>{setTimeout(Zs,1e3)},[]),e(_,{children:[!!t.showCompose&&e(Ae,{class:`solid ${t.composerState.minimized?"min":""}`,minimized:!!t.composerState.minimized,children:e(Js,{replyToStatus:typeof t.showCompose!="boolean"?t.showCompose.replyToStatus:((s=window.__COMPOSE__)==null?void 0:s.replyToStatus)||null,editStatus:((o=T.showCompose)==null?void 0:o.editStatus)||((a=window.__COMPOSE__)==null?void 0:a.editStatus)||null,draftStatus:((h=T.showCompose)==null?void 0:h.draftStatus)||((d=window.__COMPOSE__)==null?void 0:d.draftStatus)||null,onClose:c=>{const{newStatus:p,instance:l,type:b}=c||{};T.showCompose=!1,window.__COMPOSE__=null,p&&(T.reloadStatusPage++,se({text:{post:"Post published. Check it out.",reply:"Reply posted. Check it out.",edit:"Post updated. Check it out."}[b||"post"],delay:1e3,duration:1e4,onClick:m=>{m.hideToast(),T.prevLocation=i,n(l?`/${l}/s/${p.id}`:`/s/${p.id}`)}}))}})}),!!t.showSettings&&e(Ae,{onClose:()=>{T.showSettings=!1},children:e(Bi,{onClose:()=>{T.showSettings=!1}})}),!!t.showAccounts&&e(Ae,{onClose:()=>{T.showAccounts=!1},children:e(Li,{onClose:()=>{T.showAccounts=!1}})}),!!t.showAccount&&e(Ae,{onClose:()=>{T.showAccount=!1},children:e(uo,{account:((r=t.showAccount)==null?void 0:r.account)||t.showAccount,instance:(u=t.showAccount)==null?void 0:u.instance,onClose:({destination:c}={})=>{T.showAccount=!1}})}),!!t.showDrafts&&e(Ae,{onClose:()=>{T.showDrafts=!1},children:e(ho,{onClose:()=>T.showDrafts=!1})}),!!t.showMediaModal&&e(Ae,{onClick:c=>{(c.target===c.currentTarget||c.target.classList.contains("media"))&&(T.showMediaModal=!1)},children:e(Ls,{mediaAttachments:t.showMediaModal.mediaAttachments,instance:t.showMediaModal.instance,index:t.showMediaModal.index,statusID:t.showMediaModal.statusID,onClose:()=>{T.showMediaModal=!1}})}),!!t.showShortcutsSettings&&e(Ae,{onClose:()=>{T.showShortcutsSettings=!1},children:e(_o,{onClose:()=>T.showShortcutsSettings=!1})}),!!t.showGenericAccounts&&e(Ae,{onClose:()=>{T.showGenericAccounts=!1},children:e(mo,{instance:t.showGenericAccounts.instance,excludeRelationshipAttrs:t.showGenericAccounts.excludeRelationshipAttrs,postID:t.showGenericAccounts.postID,onClose:()=>T.showGenericAccounts=!1,blankCopy:t.showGenericAccounts.blankCopy})}),!!t.showMediaAlt&&e(Ae,{onClose:c=>{T.showMediaAlt=!1},children:e(go,{alt:t.showMediaAlt.alt||t.showMediaAlt,lang:(f=t.showMediaAlt)==null?void 0:f.lang,onClose:()=>{T.showMediaAlt=!1}})}),!!t.showEmbedModal&&e(Ae,{class:"solid",onClose:()=>{T.showEmbedModal=!1},children:e(fo,{html:t.showEmbedModal.html,url:t.showEmbedModal.url,width:t.showEmbedModal.width,height:t.showEmbedModal.height,onClose:()=>{T.showEmbedModal=!1}})}),!!t.showReportModal&&e(Ae,{onClose:()=>{T.showReportModal=!1},children:e(wo,{account:t.showReportModal.account,post:t.showReportModal.post,onClose:()=>{T.showReportModal=!1}})})]})}function rn({accountID:t,onChange:n}){const{masto:i}=Q(),[s,o]=$("default"),[a,h]=$(null),[d,r]=$(null),u=d!==null;return e("p",{class:"follow-request-buttons",children:[e("button",{type:"button",disabled:s==="loading"||u,onClick:()=>{o("loading"),h("accept"),(async()=>{try{const f=await i.v1.followRequests.$select(t).authorize();if(!(f!=null&&f.followedBy))throw new Error("Follow request not accepted");r(f),n()}catch{}o("default")})()},children:"Accept"})," ",e("button",{type:"button",disabled:s==="loading"||u,class:"light danger",onClick:()=>{o("loading"),h("reject"),(async()=>{try{const f=await i.v1.followRequests.$select(t).reject();if(f!=null&&f.followedBy)throw new Error("Follow request not rejected");r(f),n()}catch{o("default")}})()},children:"Reject"}),e("span",{class:"follow-request-states",children:u&&a?a==="accept"?e(w,{icon:"check-circle",alt:"Accepted",class:"follow-accepted"}):e(w,{icon:"x-circle",alt:"Rejected",class:"follow-rejected"}):e($e,{hidden:s!=="loading"})})]})}const Gn={mention:"comment",status:"notification",reblog:"rocket",follow:"follow",follow_request:"follow-add",favourite:"heart",poll:"poll",update:"pencil","admin.signup":"account-edit","admin.report":"account-warning",severed_relationships:"heart-break",moderation_warning:"alert",emoji_reaction:"emoji2","pleroma:emoji_reaction":"emoji2"};function Yn(t,n){let i,s;return typeof n=="string"?i=n:(i=n==null?void 0:n.url,s=n==null?void 0:n.staticUrl),i?e(_,{children:["reacted to your post with"," ",e(Si,{url:i,staticUrl:s,alt:t})]}):`reacted to your post with ${t}.`}const vt={mention:"mentioned you in their post.",status:"published a post.",reblog:"boosted your post.","reblog+account":t=>`boosted ${t} of your posts.`,reblog_reply:"boosted your reply.",follow:"followed you.",follow_request:"requested to follow you.",favourite:"liked your post.","favourite+account":t=>`liked ${t} of your posts.`,favourite_reply:"liked your reply.",poll:"A poll you have voted in or created has ended.","poll-self":"A poll you have created has ended.","poll-voted":"A poll you have voted in has ended.",update:"A post you interacted with has been edited.","favourite+reblog":"boosted & liked your post.","favourite+reblog+account":t=>`boosted & liked ${t} of your posts.`,"favourite+reblog_reply":"boosted & liked your reply.","admin.sign_up":"signed up.","admin.report":t=>e(_,{children:["reported ",t]}),severed_relationships:t=>e(_,{children:["Lost connections with ",e("i",{children:t}),"."]}),moderation_warning:e("b",{children:"Moderation warning"}),emoji_reaction:Yn,"pleroma:emoji_reaction":Yn},Po={account_suspension:({from:t,targetName:n})=>e(_,{children:["An admin from ",e("i",{children:t})," has suspended ",e("i",{children:n}),", which means you can no longer receive updates from them or interact with them."]}),domain_block:({from:t,targetName:n,followersCount:i,followingCount:s})=>e(_,{children:["An admin from ",e("i",{children:t})," has blocked ",e("i",{children:n}),". Affected followers: ",i,", followings: ",s,"."]}),user_domain_block:({targetName:t,followersCount:n,followingCount:i})=>e(_,{children:["You have blocked ",e("i",{children:t}),". Removed followers: ",n,", followings: ",i,"."]})},Do={none:"Your account has received a moderation warning.",disable:"Your account has been disabled.",mark_statuses_as_sensitive:"Some of your posts have been marked as sensitive.",delete_statuses:"Some of your posts have been deleted.",sensitive:"Your posts will be marked as sensitive from now on.",silence:"Your account has been limited.",suspend:"Your account has been suspended."},nn=30;function No({notification:t,instance:n,isStatic:i,disableContextMenu:s}){var j,M,ee,X,A,P;const{id:o,status:a,account:h,report:d,event:r,moderation_warning:u,_accounts:f,_statuses:c}=t;let{type:p}=t;const l=(a==null?void 0:a.reblog)||a,b=l==null?void 0:l.id,m=ct(),k=m===(h==null?void 0:h.id),g=(j=a==null?void 0:a.poll)==null?void 0:j.voted,y=!!(a!=null&&a.inReplyToAccountId)&&(a==null?void 0:a.inReplyToAccountId)!==m&&((M=a==null?void 0:a.account)==null?void 0:M.id)===m;let C=0,v=0;if(p==="favourite+reblog"){for(const E of f)(ee=E._types)!=null&&ee.includes("favourite")&&C++,(X=E._types)!=null&&X.includes("reblog")&&v++;!v&&C&&(p="favourite"),!C&&v&&(p="reblog")}let I;if(p==="poll"?I=vt[k?"poll-self":g?"poll-voted":"poll"]:p==="reblog"||p==="favourite"||p==="favourite+reblog"?(c==null?void 0:c.length)>1?I=vt[`${p}+account`]:y?I=vt[`${p}_reply`]:I=vt[p]:vt[p]?I=vt[p]:I=`[Unknown notification type: ${p}]`,typeof I=="function"){const E=(c==null?void 0:c.length)||(f==null?void 0:f.length);if(p==="admin.report"){const U=d==null?void 0:d.targetAccount;U&&(I=I(e(It,{account:U,showAvatar:!0})))}else if(p==="severed_relationships"){const U=r==null?void 0:r.targetName;U&&(I=I(U))}else if((p==="emoji_reaction"||p==="pleroma:emoji_reaction")&&t.emoji){const U=t.emoji_url||((P=(A=a==null?void 0:a.emojis)==null?void 0:A.find)==null?void 0:P.call(A,V=>(V==null?void 0:V.shortcode)===t.emoji.replace(/^:/,"").replace(/:$/,"")));I=I(t.emoji,U)}else E&&(I=I(E))}if(p==="mention"&&!a)return null;const x=t.createdAt&&new Date(t.createdAt).toLocaleString(),L={"favourite+reblog":"Boosted/Liked by…",favourite:"Liked by…",reblog:"Boosted by…",follow:"Followed by…"}[p]||"Accounts",Y=()=>{T.showGenericAccounts={heading:L,accounts:f,showReactions:p==="favourite+reblog",excludeRelationshipAttrs:p==="follow"?["followedBy"]:[],postID:Ke(b,n)}};return e("div",{class:`notification notification-${p}`,"data-notification-id":o,tabIndex:"0",children:[e("div",{class:`notification-type notification-${p}`,title:x,children:p==="favourite+reblog"?e(_,{children:[e(w,{icon:"rocket",size:"xl",alt:p,class:"reblog-icon"}),e(w,{icon:"heart",size:"xl",alt:p,class:"favourite-icon"})]}):e(w,{icon:Gn[p]||"notification",size:"xl",alt:p})}),e("div",{class:"notification-content",children:[p!=="mention"&&e(_,{children:[e("p",{children:[!/poll|update/i.test(p)&&e(_,{children:(f==null?void 0:f.length)>1?e(_,{children:[e("b",{tabIndex:"0",onClick:Y,children:[e("span",{title:f.length,children:Ge(f.length)})," ","people"]})," "]}):h&&e(_,{children:[e(It,{account:h,showAvatar:!0})," "]})}),I,p==="mention"&&e("span",{class:"insignificant",children:[" ","•"," ",e(bt,{datetime:t.createdAt,format:"micro"})]})]}),p==="follow_request"&&e(rn,{accountID:h.id}),p==="severed_relationships"&&e("div",{children:[Po[r.type]({from:n,...r}),e("br",{}),e("a",{href:`https://${n}/severed_relationships`,target:"_blank",rel:"noopener noreferrer",children:["Learn more ",e(w,{icon:"external",size:"s"})]}),"."]}),p==="moderation_warning"&&!!u&&e("div",{children:[Do[u.action],e("br",{}),e("a",{href:`/disputes/strikes/${u.id}`,target:"_blank",rel:"noopener noreferrer",children:["Learn more ",e(w,{icon:"external",size:"s"})]}),"."]})]}),(f==null?void 0:f.length)>1&&e("p",{class:"avatars-stack",children:[f.slice(0,nn).map(E=>e(_,{children:[e("a",{href:E.url,rel:"noopener noreferrer",class:"account-avatar-stack",onClick:U=>{U.preventDefault(),T.showAccount=E},children:[e(st,{url:E.avatarStatic,size:f.length<=10?"xxl":f.length<20?"xl":"l",alt:`${E.displayName} @${E.acct}`,squircle:E==null?void 0:E.bot},E.id),p==="favourite+reblog"&&e("div",{class:"account-sub-icons",children:E._types.map(U=>e(w,{icon:Gn[U],size:"s",class:`${U}-icon`}))})]},E.id)," "]},E.id)),e("button",{type:"button",class:"small plain",onClick:Y,children:[f.length>nn&&`+${f.length-nn}`,e(w,{icon:"chevron-down"})]})]}),(c==null?void 0:c.length)>1&&e("ul",{class:"notification-group-statuses",children:c.map(E=>e("li",{children:e(jn,{class:`status-link status-type-${p}`,to:n?`/${n}/s/${E.id}`:`/s/${E.id}`,children:e(Be,{status:E,size:"s",previewMode:!0,allowContextMenu:!0})})},E.id))}),a&&(!(c!=null&&c.length)||(c==null?void 0:c.length)<=1)&&e(jn,{class:`status-link status-type-${p}`,to:n?`/${n}/s/${b}`:`/s/${b}`,onContextMenu:s?void 0:E=>{const U=E.target.querySelector(".status");if(U){if(E.metaKey)return;E.preventDefault(),U.dispatchEvent(new MouseEvent("contextmenu",{clientX:E.clientX,clientY:E.clientY}))}},children:i?e(Be,{status:l,size:"s",readOnly:!0,allowContextMenu:!0}):e(Be,{statusID:b,size:"s",readOnly:!0,allowContextMenu:!0})})]})]})}function jn(t){const n=Ii();return e(oe,{...t,"data-read-more":"Read more →",ref:n})}const Xt=Je(No,(t,n)=>{var i,s;return((i=t.notification)==null?void 0:i.id)===((s=n.notification)==null?void 0:s.id)});"serviceWorker"in navigator&&navigator.serviceWorker.addEventListener("message",t=>{const{type:n,id:i,accessToken:s}=(t==null?void 0:t.data)||{};n==="notification"&&(T.routeNotification={id:i,accessToken:s})});const Uo=Je(function(){if(!("serviceWorker"in navigator))return null;const n=Me(T),{routeNotification:i}=n,{id:s,accessToken:o}=i||{},[a,h]=$(!1);lt(()=>{if(!s||!o)return;const{instance:r}=Q(),{masto:u,instance:f}=Q({accessToken:o}),c=r===f,p=o?Xs(o):St();(async()=>{const l=await u.v1.notifications.$select(s).fetch();if(l&&p){const b=p.instanceURL,{type:m,status:k,account:g}=l,y=!!document.querySelector("#modal-container > *"),C=m==="follow"&&!!(g!=null&&g.id),v=!!(g!=null&&g.id),I=!!(k!=null&&k.id);C&&c?T.showAccount={account:g,instance:b}:y||!c||v&&I?h({id:s,account:p,notification:l,sameInstance:c}):I?location.hash=`/${r}/s/${k.id}`:C?location.hash=`/${r}/a/${g.id}`:location.hash="/notifications"}})()},[s,o]),lt(()=>{navigator!=null&&navigator.clearAppBadge&&navigator.clearAppBadge()},[]),Ct(r=>{r&&(navigator!=null&&navigator.clearAppBadge)&&navigator.clearAppBadge()});const d=()=>{h(!1),T.routeNotification=null,/\/notifications\?id=/i.test(location.hash)&&(location.hash="/notifications")};if(a){const{id:r,account:u,notification:f,sameInstance:c}=a;return e(Ae,{onClick:p=>{p.target===p.currentTarget&&d()},children:e("div",{class:"sheet",tabIndex:"-1",children:[e("button",{type:"button",class:"sheet-close",onClick:d,children:e(w,{icon:"x"})}),e("header",{children:e("b",{children:"Notification"})}),e("main",{children:[!c&&e("p",{children:"This notification is from your other account."}),e("div",{class:"notification-peek",onClick:p=>{const{target:l}=p;(p.target.tagName==="BUTTON"||p.target.tagName==="A")&&d()},children:e(Xt,{instance:u.instanceURL,notification:f,isStatic:!0})}),e("div",{style:{textAlign:"end"},children:e(oe,{to:"/notifications",class:"button light",onClick:d,children:[e("span",{children:"View all notifications"})," ",e(w,{icon:"arrow-right"})]})})]})]})})}return null}),Ms=si((t,n)=>{const{instance:i}=Q(),[s,o]=it(),[a,h]=$(!1),[d,r]=$(s.get("q")||""),u=s.get("type"),f=z(null),c=z(null);return ni(n,()=>({setValue:p=>{r(p)},focus:()=>{c.current.focus()},select:()=>{c.current.select()},blur:()=>{c.current.blur()}})),e("form",{ref:f,class:"search-popover-container",onSubmit:p=>{var b;if(p.preventDefault(),/\/search/.test(location.hash))if(d){const m={q:d};u&&(m.type=u),o(m)}else o({});else d?location.hash=`/search?q=${encodeURIComponent(d)}${u?`&type=${u}`:""}`:location.hash="/search";(b=t==null?void 0:t.onSubmit)==null||b.call(t,p)},children:[e("input",{ref:c,value:d,name:"q",type:"search",placeholder:"Search",dir:"auto",autocomplete:"off",autocorrect:"off",autocapitalize:"off",spellCheck:"false",onSearch:p=>{p.target.value||o({})},onInput:p=>{r(p.target.value),h(!0)},onFocus:()=>{var p,l;h(!0),(l=(p=f.current)==null?void 0:p.querySelector(".search-popover-item"))==null||l.classList.add("focus")},onBlur:()=>{var p,l;setTimeout(()=>{h(!1)},100),(l=(p=f.current)==null?void 0:p.querySelector(".search-popover-item.focus"))==null||l.classList.remove("focus")},onKeyDown:p=>{var b;const{key:l}=p;switch(l){case"Escape":h(!1);break;case"Down":case"ArrowDown":if(p.preventDefault(),a){const m=f.current.querySelector(".search-popover-item.focus");if(m){let k=m.nextElementSibling;for(;k&&k.hidden;)k=k.nextElementSibling;k&&(k.classList.add("focus"),Array.from(k.parentElement.children).filter(y=>y!==k).forEach(y=>{y.classList.remove("focus")}))}else{const k=f.current.querySelector(".search-popover-item");k&&k.classList.add("focus")}}break;case"Up":case"ArrowUp":if(p.preventDefault(),a){const m=document.querySelector(".search-popover-item.focus");if(m){let k=m.previousElementSibling;for(;k&&k.hidden;)k=k.previousElementSibling;k&&(k.classList.add("focus"),Array.from(k.parentElement.children).filter(y=>y!==k).forEach(y=>{y.classList.remove("focus")}))}else{const k=document.querySelector(".search-popover-item:last-child");k&&k.classList.add("focus")}}break;case"Enter":if(a){const m=document.querySelector(".search-popover-item.focus");m&&(p.preventDefault(),m.click()),h(!1),(b=t==null?void 0:t.onSubmit)==null||b.call(t,p)}break}}}),e("div",{class:"search-popover",hidden:!a||!d,children:!!d&&[{label:e(_,{children:[d," ",e("small",{class:"insignificant",children:"‒ accounts, hashtags & posts"})]}),to:`/search?q=${encodeURIComponent(d)}`,top:!u&&!/\s/.test(d),hidden:!!u},{label:e(_,{children:["Posts with ",e("q",{children:d})]}),to:`/search?q=${encodeURIComponent(d)}&type=statuses`,hidden:/^https?:/.test(d),top:/\s/.test(d),icon:"document",queryType:"statuses"},{label:e(_,{children:["Posts tagged with ",e("mark",{children:["#",d.replace(/^#/,"")]})]}),to:`/${i}/t/${d.replace(/^#/,"")}`,hidden:/^@/.test(d)||/^https?:/.test(d)||/\s/.test(d),top:/^#/.test(d),type:"link",icon:"hashtag",queryType:"hashtags"},{label:e(_,{children:["Look up ",e("mark",{children:d})]}),to:`/${d}`,hidden:!/^https?:/.test(d),top:/^https?:/.test(d),type:"link"},{label:e(_,{children:["Accounts with ",e("q",{children:d})]}),to:`/search?q=${encodeURIComponent(d)}&type=accounts`,icon:"group",queryType:"accounts"}].sort((p,l)=>{if(u){if(p.queryType===u)return-1;if(l.queryType===u)return 1}return p.top&&!l.top?-1:!p.top&&l.top?1:0}).filter(({hidden:p})=>!p).map(({label:p,to:l,icon:b,type:m},k)=>e(oe,{to:l,class:`search-popover-item ${k===0?"focus":""}`,onClick:g=>{var y;(y=t==null?void 0:t.onSubmit)==null||y.call(t,g)},children:[e(w,{icon:b||(m==="link"?"arrow-right":"search"),class:"more-insignificant"}),e("span",{children:p})," "]}))})]})}),Fo=Je(function({onClose:n=()=>{}}){const[i,s]=$(!1),o=z(null);_e(["Slash","/"],h=>{s(!0),setTimeout(()=>{var d,r,u,f;(r=(d=o.current)==null?void 0:d.focus)==null||r.call(d),(f=(u=o.current)==null?void 0:u.select)==null||f.call(u)},0)},{preventDefault:!0,ignoreEventWhen:h=>{const d=/\/search/.test(location.hash),r=!!document.querySelector("#modal-container > *");return d||r}});const a=()=>{s(!1),n()};return _e("esc",h=>{var d,r;(r=(d=o.current)==null?void 0:d.blur)==null||r.call(d),a()},{enabled:i,enableOnFormTags:!0,preventDefault:!0}),e("div",{id:"search-command-container",hidden:!i,onClick:h=>{h.target===h.currentTarget&&a()},children:e(Ms,{ref:o,onSubmit:()=>{a()}})})});function Oo(){const{instance:t}=Q(),n=Me(T),{shortcuts:i,settings:s}=n;if(!i.length||s.shortcutsViewMode==="multi-column"||!s.shortcutsViewMode&&s.shortcutsColumnsMode)return null;const o=z(),a=z(!1),h=i.map((f,c)=>{const{type:p,...l}=f;if(!Zt[p])return null;let{id:b,path:m,title:k,subtitle:g,icon:y}=Zt[p];return typeof b=="function"&&(b=b(l,c)),typeof m=="function"&&(m=m({...l,instance:l.instance||t},c)),typeof k=="function"&&(k=k(l,c)),typeof g=="function"&&(g=g(l,c)),typeof y=="function"&&(y=y(l,c)),b==="lists"&&(a.current=!0),{id:b,path:m,title:k,subtitle:g,icon:y}}).filter(Boolean),d=fs();_e(["1","2","3","4","5","6","7","8","9"],(f,c)=>{var l,b;const p=parseInt(c.keys[0],10)-1;if(p{f.preventDefault(),T.showShortcutsSettings=!0},children:e("ul",{children:h.map(({id:f,path:c,title:p,subtitle:l,icon:b},m)=>e("li",{children:e(oe,{class:l?"has-subtitle":"",to:c,onClick:k=>{if(k.target.classList.contains("is-active")){k.preventDefault();const g=document.getElementById(`${f}-page`);if(g){g.scrollTop=0;const y=g.querySelector(".updates-button");y&&y.click()}}},children:[e(w,{icon:b,size:"xl",alt:p}),e("span",{children:[e(qt,{children:p}),l&&e(_,{children:[e("br",{}),e("small",{children:l})]})]})]})},`${m}-${f}-${p}-${l}-${c}`))})}):e(Ze,{instanceRef:o,overflow:"auto",viewScroll:"close",menuClassName:"glass-menu shortcuts-menu",gap:8,position:"anchor",onMenuChange:f=>{f.open&&a.current&&Pt().then(u)},menuButton:e("button",{type:"button",id:"shortcuts-button",class:"plain",onContextMenu:f=>{f.preventDefault(),T.showShortcutsSettings=!0},onTransitionStart:f=>{var c,p;try{const{target:l}=f;getComputedStyle(l).pointerEvents==="none"&&((p=(c=o.current)==null?void 0:c.closeMenu)==null||p.call(c))}catch{}},children:e(w,{icon:"shortcut",size:"xl",alt:"Shortcuts"})}),children:h.map(({id:f,path:c,title:p,subtitle:l,icon:b},m)=>f==="lists"?e(Wt,{menuClassName:"glass-menu",overflow:"auto",gap:-8,label:e(_,{children:[e(w,{icon:b,size:"l"}),e("span",{class:"menu-grow",children:e(qt,{children:p})}),e(w,{icon:"chevron-right"})]}),children:[e(Re,{to:"/l",children:e("span",{children:"All Lists"})}),e(ze,{}),r==null?void 0:r.map(k=>e(Re,{to:`/l/${k.id}`,children:e("span",{children:k.title})},k.id))]}):e(Re,{to:c,class:"glass-menu-item",children:[e(w,{icon:b,size:"l"})," ",e("span",{class:"menu-grow",children:[e("span",{children:e(qt,{children:p})}),l&&e(_,{children:[" ",e("small",{class:"more-insignificant",children:l})]})]}),e("span",{class:"menu-shortcut hide-until-focus-visible",children:m+1})]},`${m}-${f}-${p}-${l}-${c}`))})})}const zo=Je(Oo);function Bo(t){var o;let n=[],i=[],s=0;for(let a=0;a10&&(i.length>t.length/4||s>=3)){const a=i.map(h=>h.id);if(i.length>t.length*3/4)n=[...n,{id:a,items:i,type:"boosts"}];else{const h=Math.floor(n.length/2);n=[...n.slice(0,h),{id:a,items:i,type:"boosts"},...n.slice(h)]}return n}else return t}function Wn(t,n){const i=be.account.get("boostedStatusIDs")||{},s=t.filter(a=>{if(!a.reblog)return!0;const h=`${n}-${a.reblog.id}`,d=i[h];return d&&d!==a.id?!1:(i[h]=a.id,!0)}),o=Object.keys(i);return o.length>50&&o.slice(0,o.length-50).forEach(a=>{delete i[a]}),be.account.set("boostedStatusIDs",i),s}function qo(t,n){const i=[];let s=0;t.forEach(d=>{for(let u=0;uf.id===d.id))return;if(i[u].find(f=>f.id===d.inReplyToId)||i[u].find(f=>f.inReplyToId===d.id)){i[u].push(d);return}}const r=t.find(u=>u.id===d.inReplyToId);r&&(i[s++]=[d,r])});for(let d=0;di[r].includes(f))&&(i[d]=[...i[d],...i[r]],i[d]=i[d].filter((f,c,p)=>p.findIndex(l=>l.id===f.id)===c),i.splice(r,1),r--);i.forEach(d=>{d.sort((r,u)=>!r.inReplyToId&&!u.inReplyToId?new Date(r.createdAt)-new Date(u.createdAt):r.inReplyToId===u.id?1:u.inReplyToId===r.id||!r.inReplyToId?-1:u.inReplyToId?new Date(r.createdAt)-new Date(u.createdAt):1)}),i.forEach(d=>{const r=d[0].account.id;d.forEach(u=>{u.account.id!==r&&(u._differentAuthor=!0)})}),i.length;const o=[],a=[],h=[];return t.forEach(d=>{if(d.reblog){o.push(d);return}for(let r=0;ru.id===d.id)){if(a.includes(r))return;const u=i[r];u.sort((c,p)=>{const l=new Date(c.createdAt),b=new Date(p.createdAt);return l-b});const f=u[0].account.id;o.push({id:u.map(c=>c.id),items:u,type:u.every(c=>c.account.id===f)?"thread":"conversation"}),a.push(r);return}if(d.inReplyToId&&d.inReplyToAccountId!==d.account.id){const r=Ke(d.id,n);T.statusReply[r]||h.push({sKey:r,inReplyToId:d.inReplyToId})}o.push(d)}),h!=null&&h.length&&queueMicrotask(()=>{const{masto:d}=Q({instance:n});async function r(){for(let u=0;usetTimeout(l,1e3))}catch{}}}if(je("@mastodon/fetch-multiple-statuses")){const u=h.map(({inReplyToId:f})=>f);(async()=>{var f;try{const c=await d.v1.statuses.list({id:u});if(c!=null&&c.length)for(const p of c){qe(p,n,{skipThreading:!0,skipUnfurling:!0});const l=(f=h.find(({inReplyToId:b})=>b===p.id))==null?void 0:f.sKey;l&&(T.statusReply[l]={id:p.id,instance:n})}else r()}catch{r()}})()}else r()}),o}const Ho=ht((t,n)=>n.v1.statuses.$select(t).fetch());async function Ps(t,n){const i=await xo();if(!i.length)return;const{statusFollowedTags:s}=T,o=[];if(t.forEach(a=>{var p;if(a.reblog)return;const{id:h,content:d,tags:r=[]}=a,u=Ke(h,n);if((p=s[u])!=null&&p.length)return;const f=$o(d);if(!f.length&&!r.length)return;const c=i.reduce((l,b)=>((f.some(m=>m.toLowerCase()===b.name.toLowerCase())||r.some(m=>m.name.toLowerCase()===b.name.toLowerCase()))&&l.push(b.name),l),[]);c.length&&o.push({item:a,sKey:u,followedTags:c})}),o.length){const a=o.map(d=>d.item.account),h=await bn(a);if(!h)return;o.forEach(d=>{const{item:r,sKey:u,followedTags:f}=d,c=h[r.account.id];c&&!c.following&&(s[u]=f)})}}function Vo(){T.statusFollowedTags={}}function Go({scrollableRef:t,distanceFromStart:n=1,distanceFromEnd:i=1,scrollThresholdStart:s=10,scrollThresholdEnd:o=10,direction:a="vertical",distanceFromStartPx:h,distanceFromEndPx:d}={}){const[r,u]=$(null),[f,c]=$(!1),[p,l]=$(!1),[b,m]=$(!1),[k,g]=$(!1),y=a==="vertical";return lt(()=>{const C=t.current;if(!C)return{};let v=y?C.scrollTop:C.scrollLeft;function I(){const{scrollTop:x,scrollLeft:L,scrollHeight:Y,scrollWidth:j,clientHeight:M,clientWidth:ee}=C,X=y?x:L,A=y?Y:j,P=y?M:ee,E=Math.abs(X-v),U=h||Math.min(P*n,A,X),V=d||Math.min(P*i,A,A-X-P);E>=(v=A),m(X<=U),g(X+P>=A-V)}return C.addEventListener("scroll",I,{passive:!0}),()=>C.removeEventListener("scroll",I)},[n,i,s,o]),{scrollDirection:r,reachStart:f,reachEnd:p,nearReachStart:b,nearReachEnd:k,init:()=>{t.current&&t.current.dispatchEvent(new Event("scroll"))}}}function Yo({scrollableRef:t,distanceFromStart:n=1,distanceFromEnd:i=1,scrollThresholdStart:s=10,scrollThresholdEnd:o=10,direction:a="vertical",distanceFromStartPx:h,distanceFromEndPx:d,init:r}={},u,f){if(!u)return;const c=a==="vertical",p=z(null),l=z(null),b=ii(()=>{let m=!1,k=!1,g=!1,y=!1;const C=t.current,{scrollTop:v,scrollLeft:I,scrollHeight:x,scrollWidth:L,clientHeight:Y,clientWidth:j}=C,M=c?v:I,ee=c?x:L,X=c?Y:j,A=Math.abs(M-p.current),P=h||Math.min(X*n,ee,M),E=d||Math.min(X*i,ee,ee-M-X);A>=(p.current=ee,g=M<=P,y=M+X>=ee-E,u({scrollDirection:l.current,reachStart:m,reachEnd:k,nearReachStart:g,nearReachEnd:y})},500);lt(()=>{const m=t.current;return m?(p.current=m[c?"scrollTop":"scrollLeft"],m.addEventListener("scroll",b,{passive:!0}),()=>m.removeEventListener("scroll",b)):{}},[n,i,s,o,...f]),G(()=>{r&&t.current&&queueMicrotask(()=>{t.current.dispatchEvent(new Event("scroll"))})},[r])}function jo({class:t,statusID:n,status:i,instance:s,parent:o,onMediaClick:a}){let h=Ke(n,s);const d=Me(T);if(i||(i=d.statuses[h]||d.statuses[n],h=Ke(i==null?void 0:i.id,s)),!i)return null;const{account:{acct:r,avatar:u,avatarStatic:f,id:c,url:p,displayName:l,username:b,emojis:m,bot:k,group:g},id:y,repliesCount:C,reblogged:v,reblogsCount:I,favourited:x,favouritesCount:L,bookmarked:Y,poll:j,muted:M,sensitive:ee,spoilerText:X,visibility:A,language:P,editedAt:E,filtered:U,card:V,createdAt:ye,inReplyToId:ve,inReplyToAccountId:fe,content:ne,mentions:me,mediaAttachments:ue,reblog:he,uri:ke,url:Le,emojis:Te,_deleted:Pe,_pinned:Fe}=i;if(!(ue!=null&&ue.length))return null;const xe=W=>{W.shiftKey},J=pe(()=>ct(),[]),ae=pe(()=>J&&J===c,[c,J]),te=oi(Is),Se=!ae&&Mt(U,te);if((Se==null?void 0:Se.action)==="hide")return null;const Ie=ee,re=pe(()=>(be.account.get("preferences")||{})["reading:expand:media"]||"default",[])==="show_all",D=o||"div";return ue.map((W,R)=>{const q=`${h}-${W.id}`,Z=Se==null?void 0:Se.titlesStr;return e(D,{"data-state-post-id":h,onMouseEnter:xe,"data-spoiler-text":X||(ee?"Sensitive media":void 0),"data-filtered-text":Se?`Filtered${Z?`: ${Z}`:""}`:void 0,class:` + media-post + ${Se?"filtered":""} + ${Ie?"has-spoiler":""} + ${re?"show-media":""} + `,children:e(Ss,{class:t,media:W,lang:P,to:`/${s}/s/${y}?media-only=${R+1}`,onClick:a?ce=>a(ce,R,W,i):void 0})},q)})}const Kn=Je(jo);function Wo(t){var I,x,L,Y,j;const n=Me(T),{masto:i,instance:s,authenticated:o}=Q(),[a,h]=pe(()=>{const M=be.local.getJSON("accounts")||[];return[M.find(X=>X.info.id===ct())||M[0],M.length>1]},[]),d=(n.settings.shortcutsViewMode==="multi-column"||!n.settings.shortcutsViewMode&&n.settings.shortcutsColumnsMode)&&!n.shortcuts.find(M=>M.type==="following"),r=ai(()=>{T.showAccounts=!0},{threshold:600,detect:"touch",cancelOnMovement:!0}),u=z(),[f,c]=$(void 0),p=Ci([0,0,n.settings.shortcutsViewMode==="tab-menu-bar"?50:0,0]),l=z();async function b(M){return(M||!l.current)&&(l.current=i.v1.mutes.list({limit:80})),await l.current.next()}const m=z();async function k(M){return(M||!m.current)&&(m.current=i.v1.blocks.list({limit:80})),await m.current.next()}const g=je("@mastodon/lists"),[y,C]=$([]);G(()=>{g&&f==="open"&&Pt().then(C)},[f==="open"]);const v=z();return e(_,{children:[e("button",{ref:u,type:"button",class:`button plain nav-menu-button ${h?"with-avatar":""} ${f==="open"?"active":""}`,style:{position:"relative"},onClick:()=>{v.current=Date.now(),c(M=>M?void 0:"open")},onContextMenu:M=>{M.preventDefault(),T.showAccounts=!0},...r(),children:[h&&e(st,{url:((I=a==null?void 0:a.info)==null?void 0:I.avatar)||((x=a==null?void 0:a.info)==null?void 0:x.avatarStatic),size:"l",squircle:(L=a==null?void 0:a.info)==null?void 0:L.bot}),e(w,{icon:"menu",size:h?"s":"l"})]}),e(ms,{menuClassName:"nav-menu",state:f,anchorRef:u,onClose:()=>{c(void 0)},containerProps:{style:{zIndex:10},onClick:()=>{Date.now()-v.current<300}},portal:{target:document.body},...t,overflow:"auto",viewScroll:"close",position:"anchor",align:"center",boundingBoxPadding:p,unmountOnClose:!0,children:[!!((Y=n.appVersion)!=null&&Y.commitHash)&&n.appVersion.commitHash!=="0a6030c"&&e("div",{class:"top-menu",children:[e(de,{onClick:()=>{confirm("Reload page now to update?")&&(async()=>{try{location.reload()}catch{}})()},children:[e(w,{icon:"sparkles",class:"sparkle-icon",size:"l"})," ",e("span",{children:"New update available…"})]}),e(ze,{})]}),e("section",{children:[e(Re,{to:"/",children:[e(w,{icon:"home",size:"l"})," ",e("span",{children:"Home"})]}),o?e(_,{children:[d&&e(Re,{to:"/following",children:[e(w,{icon:"following",size:"l"})," ",e("span",{children:"Following"})]}),e(Re,{to:"/catchup",children:[e(w,{icon:"history2",size:"l"}),e("span",{children:"Catch-up"})]}),je("@mastodon/mentions")&&e(Re,{to:"/mentions",children:[e(w,{icon:"at",size:"l"})," ",e("span",{children:"Mentions"})]}),e(Re,{to:"/notifications",children:[e(w,{icon:"notification",size:"l"})," ",e("span",{children:"Notifications"}),n.notificationsShowNew&&e("sup",{title:"New",style:{opacity:.5},children:[" ","•"]})]}),e(ze,{}),((j=a==null?void 0:a.info)==null?void 0:j.id)&&e(Re,{to:`/${s}/a/${a.info.id}`,children:[e(w,{icon:"user",size:"l"})," ",e("span",{children:"Profile"})]}),(y==null?void 0:y.length)>0?e(Wt,{menuClassName:"nav-submenu",overflow:"auto",gap:-8,label:e(_,{children:[e(w,{icon:"list",size:"l"}),e("span",{class:"menu-grow",children:"Lists"}),e(w,{icon:"chevron-right"})]}),children:[e(Re,{to:"/l",children:e("span",{children:"All Lists"})}),(y==null?void 0:y.length)>0&&e(_,{children:[e(ze,{}),y.map(M=>e(Re,{to:`/l/${M.id}`,children:e("span",{children:M.title})},M.id))]})]}):g&&e(Re,{to:"/l",children:[e(w,{icon:"list",size:"l"}),e("span",{children:"Lists"})]}),e(Re,{to:"/b",children:[e(w,{icon:"bookmark",size:"l"})," ",e("span",{children:"Bookmarks"})]}),e(Wt,{menuClassName:"nav-submenu",overflow:"auto",gap:-8,label:e(_,{children:[e(w,{icon:"more",size:"l"}),e("span",{class:"menu-grow",children:"More…"}),e(w,{icon:"chevron-right"})]}),children:[e(Re,{to:"/f",children:[e(w,{icon:"heart",size:"l"})," ",e("span",{children:"Likes"})]}),e(Re,{to:"/fh",children:[e(w,{icon:"hashtag",size:"l"})," ",e("span",{children:"Followed Hashtags"})]}),e(ze,{}),je("@mastodon/filters")&&e(Re,{to:"/ft",children:[e(w,{icon:"filters",size:"l"}),"Filters"]}),e(de,{onClick:()=>{T.showGenericAccounts={id:"mute",heading:"Muted users",fetchAccounts:b,excludeRelationshipAttrs:["muting"]}},children:[e(w,{icon:"mute",size:"l"})," Muted users…"]}),e(de,{onClick:()=>{T.showGenericAccounts={id:"block",heading:"Blocked users",fetchAccounts:k,excludeRelationshipAttrs:["blocking"]}},children:[e(w,{icon:"block",size:"l"}),"Blocked users…"]})," "]}),e(ze,{}),e(de,{onClick:()=>{T.showAccounts=!0},children:[e(w,{icon:"group",size:"l"})," ",e("span",{children:"Accounts…"})]})]}):e(_,{children:[e(ze,{}),e(Re,{to:"/login",children:[e(w,{icon:"user",size:"l"})," ",e("span",{children:"Log in"})]})]})]}),e("section",{children:[e(ze,{}),e(Re,{to:"/search",children:[e(w,{icon:"search",size:"l"})," ",e("span",{children:"Search"})]}),e(Re,{to:`/${s}/trending`,children:[e(w,{icon:"chart",size:"l"})," ",e("span",{children:"Trending"})]}),e(Re,{to:`/${s}/p/l`,children:[e(w,{icon:"building",size:"l"})," ",e("span",{children:"Local"})]}),e(Re,{to:`/${s}/p`,children:[e(w,{icon:"earth",size:"l"})," ",e("span",{children:"Federated"})]}),o?e(_,{children:[e(ze,{className:"divider-grow"}),e(de,{onClick:()=>{T.showKeyboardShortcutsHelp=!0},children:[e(w,{icon:"keyboard",size:"l"})," ",e("span",{children:"Keyboard shortcuts"})]}),e(de,{onClick:()=>{T.showShortcutsSettings=!0},children:[e(w,{icon:"shortcut",size:"l"})," ",e("span",{children:"Shortcuts / Columns…"})]}),e(de,{onClick:()=>{T.showSettings=!0},children:[e(w,{icon:"gear",size:"l"})," ",e("span",{children:"Settings…"})]})]}):e(_,{children:[e(ze,{}),e(de,{onClick:()=>{T.showSettings=!0},children:[e(w,{icon:"gear",size:"l"})," ",e("span",{children:"Settings…"})]})]})]})]})]})}const yt=Je(Wo),Ut={block:"nearest",inline:"center",behavior:"smooth"};function dt({title:t,titleComponent:n,id:i,instance:s,emptyText:o,errorText:a,useItemID:h,boostsCarousel:d,fetchItems:r=()=>{},checkForUpdates:u=()=>{},checkForUpdatesInterval:f=15e3,headerStart:c,headerEnd:p,timelineStart:l,refresh:b,view:m,filterContext:k,showFollowedTags:g,showReplyParent:y}){const C=Me(T),[v,I]=$([]),[x,L]=$("start"),[Y,j]=$(!1),[M,ee]=$(!1),[X,A]=$(!0),P=z(),E=pe(()=>hn(),[]),U=m!=="media",V=ci(J=>{ee(!1),x!=="loading"&&(L("loading"),(async()=>{try{let{done:ae,value:te}=await r(J);if(Array.isArray(te)){const[Se,Ie]=te.reduce((F,re)=>(re._pinned?F[0].push(re):F[1].push(re),F),[[],[]]);te=Ie,U&&(d&&(te=Bo(te)),te=qo(te,s)),Se.length&&(te=Se.concat(te)),I(J?te:F=>[...F,...te]),te.length||(ae=!0),j(!ae)}else j(!1);L("default")}catch{L("error")}finally{V.cancel()}})())},1500,{leading:!0,trailing:!1}),ye=".timeline-item, .timeline-item-alt",ve=_e("j, shift+j",(J,ae)=>{const te=document.activeElement.closest(ye),Se=te==null?void 0:te.getBoundingClientRect(),Ie=Array.from(P.current.querySelectorAll(ye));if(te&&Se.top0){const F=Ie.indexOf(te);let re=Ie[F+1];ae.shift&&(re=Ie.find((D,W)=>W>F&&!D.classList.contains("timeline-item-alt"))),re&&(re.focus(),re.scrollIntoView(Ut))}else{const F=Ie.find(re=>{const D=re.getBoundingClientRect();return D.top>=44&&D.left>=0});F&&(F.focus(),F.scrollIntoView(Ut))}}),fe=_e("k, shift+k",(J,ae)=>{const te=document.activeElement.closest(ye),Se=te==null?void 0:te.getBoundingClientRect(),Ie=Array.from(P.current.querySelectorAll(ye));if(te&&Se.top0){const F=Ie.indexOf(te);let re=Ie[F-1];ae.shift&&(re=Ie.findLast((D,W)=>W{const D=re.getBoundingClientRect();return D.top>=44&&D.left>=0});F&&(F.focus(),F.scrollIntoView(Ut))}}),ne=_e(["enter","o"],()=>{const J=document.activeElement;J!=null&&J.matches(ye)&&J.click()}),me=v.length>0&&x!=="loading"&&M,ue=Qe(()=>{var J;me&&V(!0),(J=P.current)==null||J.scrollTo({top:0,behavior:"smooth"})},[V,me]),he=_e(".",ue),ke=z(),[Le,Te]=$(!1);Yo({scrollableRef:P,distanceFromEnd:2,scrollThresholdStart:44},({scrollDirection:J,nearReachStart:ae,reachStart:te})=>{if(ke.current){const Se=J==="end"&&!ae;ke.current.hidden=Se}Te(ae),te&&V(!0)},[]),G(()=>{var J;(J=P.current)==null||J.scrollTo({top:0}),V(!0)},[]),G(()=>{V(!0)},[b]);const Pe=z(m);G(()=>{Pe.current!==m&&(Pe.current=m,I([]))},[m]);const Fe=Qe(async({disableIdleCheck:J=!1}={})=>{const ae=P.current?getComputedStyle(P.current).pointerEvents==="none":!1;C.settings.autoRefresh&&P.current.scrollTop<16&&(J||window.__IDLE__)&&!Xo()&&!ae?V(!0):await u()&&ee(!0)},[i,V,u,C.settings.autoRefresh]),xe=z();return Ct(J=>{if(J){const ae=Date.now()-xe.current;(!xe.current||ae>1e3*3)&&Fe({disableIdleCheck:!0})}else xe.current=Date.now();A(J)},[u,Fe,C.settings.autoRefresh]),gn(Fe,X&&!M?f*(Le?1:2):null),e(Is.Provider,{value:k,children:e("div",{id:`${i}-page`,class:`deck-container ${E?"deck-container-media-first":""}`,ref:J=>{P.current=J,ve.current=J,fe.current=J,ne.current=J,he.current=J},tabIndex:"-1",children:e("div",{class:"timeline-deck deck",children:[e("header",{ref:ke,onClick:J=>{var ae;J.target.closest("a, button")||(ae=P.current)==null||ae.scrollTo({top:0,behavior:"smooth"})},onDblClick:J=>{J.target.closest("a, button")||V(!0)},class:x==="loading"?"loading":"",children:[e("div",{class:"header-grid",children:[e("div",{class:"header-side",children:[e(yt,{}),c??e(oe,{to:"/",class:"button plain home-button",children:e(w,{icon:"home",size:"l"})})]}),t&&(n||e("h1",{children:t})),e("div",{class:"header-side",children:!!p&&p})]}),me&&e("button",{class:"updates-button shiny-pill",type:"button",onClick:ue,children:[e(w,{icon:"arrow-up"})," New posts"]})]}),!!l&&e("div",{class:`timeline-start ${x==="loading"?"loading":""}`,children:l}),v.length?e(_,{children:[e("ul",{class:`timeline ${m?`timeline-${m}`:""}`,children:[v.map(J=>e(Ko,{status:J,instance:s,useItemID:h,filterContext:k,view:m,showFollowedTags:g,showReplyParent:y,mediaFirst:E},J.id+(J==null?void 0:J._pinned)+m)),Y&&x==="loading"&&(m==="media"?null:e(_,{children:[e("li",{style:{height:"20vh"},children:e(Be,{skeleton:!0,mediaFirst:E})}),e("li",{style:{height:"25vh"},children:e(Be,{skeleton:!0,mediaFirst:E})})]}))]}),x==="default"&&(Y?e(rt,{root:P.current,rootMargin:`0px 0px ${screen.height*1.5}px 0px`,onChange:J=>{J&&V()},children:e("button",{type:"button",class:"plain block",onClick:()=>V(),style:{marginBlockEnd:"6em"},children:"Show more…"})}):e("p",{class:"ui-state insignificant",children:"The end."}))]}):x==="loading"?e("ul",{class:"timeline",children:Array.from({length:5}).map((J,ae)=>m==="media"?e("div",{style:{height:"50vh"}}):e("li",{children:e(Be,{skeleton:!0,mediaFirst:E})},ae))}):x!=="error"&&x!=="start"&&e("p",{class:"ui-state",children:o}),x==="error"&&e("p",{class:"ui-state",children:[a,e("br",{}),e("br",{}),e("button",{type:"button",onClick:()=>V(!v.length),children:"Try again"})]})]})})})}const Ko=Je(({status:t,instance:n,useItemID:i,filterContext:s,view:o,showFollowedTags:a,showReplyParent:h,mediaFirst:d})=>{const{id:r,reblog:u,items:f,type:c,_pinned:p}=t;p&&(i=!1);const l=(u==null?void 0:u.id)||r,b=n?`/${n}/s/${l}`:`/s/${l}`;if(f){const k=$t(f,s);let g="";if(c==="boosts"?g=`${k.length} Boosts`:c==="pinned"&&(g="Pinned posts"),c==="boosts"||c==="pinned")return k.sort((v,I)=>{const x=Mt(v.filtered,s),L=Mt(I.filtered,s);return x&&!L?1:!x&&L?-1:0}),e("li",{class:"timeline-item-carousel",children:e(Zo,{title:g,class:`${c}-carousel`,children:k.map(v=>{const{id:I,reblog:x,_pinned:L}=v,Y=(x==null?void 0:x.id)||I,j=n?`/${n}/s/${Y}`:`/s/${Y}`;return L&&(i=!1),e("li",{children:e(oe,{class:"status-carousel-link timeline-item-alt",to:j,children:i?e(Be,{statusID:I,instance:n,size:"s",contentTextWeight:!0,enableCommentHint:!0,mediaFirst:d}):e(Be,{status:v,instance:n,size:"s",contentTextWeight:!0,enableCommentHint:!0,mediaFirst:d})})},I)})})},`timeline-${r}`);const C=k.length>3;return k.map((v,I)=>{const{id:x,_differentAuthor:L}=v,Y=n?`/${n}/s/${x}`:`/s/${x}`,j=I>0&&I0||C&&j&&(c==="thread"||c==="conversation"&&!L&&!k[I-1]._differentAuthor&&!k[I+1]._differentAuthor),X=I===0,A=I===k.length-1;return e("li",{class:`timeline-item-container timeline-item-container-type-${c} timeline-item-container-${X?"start":A?"end":"middle"} ${L?"timeline-item-diff-author":""}`,children:e(oe,{class:"status-link timeline-item",to:Y,children:ee?e(Jo,{status:v,instance:n,filterContext:s}):i?e(Be,{statusID:x,instance:n,enableCommentHint:A,showFollowedTags:a}):e(Be,{status:v,instance:n,enableCommentHint:A,showFollowedTags:a})})},`timeline-${x}`)})}const m=`timeline-${r+p}`;return o==="media"?i?e(Kn,{class:"timeline-item",parent:"li",statusID:r,instance:n},m):e(Kn,{class:"timeline-item",parent:"li",status:t,instance:n},m):e("li",{children:e(oe,{class:"status-link timeline-item",to:b,children:i?e(Be,{statusID:r,instance:n,enableCommentHint:!0,showFollowedTags:a,showReplyParent:h,mediaFirst:d}):e(Be,{status:t,instance:n,enableCommentHint:!0,showFollowedTags:a,showReplyParent:h,mediaFirst:d})})},m)},(t,n)=>{var o,a;const i=(((o=t.status)==null?void 0:o.id)||"").toString(),s=(((a=n.status)==null?void 0:a.id)||"").toString();return i===s&&t.instance===n.instance&&t.view===n.view});function Zo({title:t,class:n,children:i}){const s=z(),o=z(),a=z(),[h,d]=$(!1);return G(()=>{setTimeout(()=>{d(!0)},1)},[]),e("div",{class:`status-carousel ${n}`,children:[e("header",{children:[e("h3",{children:t}),e("span",{children:[e("button",{ref:o,type:"button",class:"small plain2",onClick:()=>{var r,u;(u=s.current)==null||u.scrollBy({left:-Math.min(320,(r=s.current)==null?void 0:r.offsetWidth),behavior:"smooth"})},children:e(w,{icon:"chevron-left"})})," ",e("button",{ref:a,type:"button",class:"small plain2",onClick:()=>{var r,u;(u=s.current)==null||u.scrollBy({left:Math.min(320,(r=s.current)==null?void 0:r.offsetWidth),behavior:"smooth"})},children:e(w,{icon:"chevron-right"})})]})]}),e("ul",{ref:s,children:[e(rt,{class:"status-carousel-beacon",onChange:r=>{o.current&&(o.current.disabled=r)}}),i[0],h&&i.slice(1),e(rt,{class:"status-carousel-beacon",onChange:r=>{a.current&&(a.current.disabled=r)}})]})]})}function Jo({status:t,instance:n,filterContext:i}){const s=Me(T),{id:o,visibility:a,language:h}=t,d=yn(t),r=Ke(o,n),u=Mt(t.filtered,i);return e("article",{class:`status compact-thread ${a==="direct"?"visibility-direct":""}`,tabindex:"-1",children:[s.statusThreadNumber[r]?e("div",{class:"status-thread-badge",children:[e(w,{icon:"thread",size:"s"}),s.statusThreadNumber[r]?` ${s.statusThreadNumber[r]}/X`:""]}):e("div",{class:"status-thread-badge",children:e(w,{icon:"thread",size:"s"})}),e("div",{class:"content-compact",title:d,lang:h,dir:"auto",children:u?e("b",{class:"status-filtered-badge badge-meta horizontal",title:(u==null?void 0:u.titlesStr)||"",children:[e("span",{children:"Filtered"}),": ",e("span",{children:(u==null?void 0:u.titlesStr)||""})]}):e(_,{children:[d,t.sensitive&&t.spoilerText&&e(_,{children:[" ",e("span",{class:"spoiler-badge",children:e(w,{icon:"eye-close",size:"s"})})]})]})})]})}function Xo(){return!!document.querySelector(".deck-backdrop, #modal-container > *")}const kt=20,Cn=1983,Zn=`${Cn}-01`,Qo=(()=>{try{const t=document.createElement("input");return t.setAttribute("type","month"),t.type==="month"}catch{return!1}})();async function ea(t){var s;const{masto:n}=Q({instance:t}),i=await n.v2.search.fetch({q:"from:me",type:"statuses",limit:1});return!!((s=i==null?void 0:i.statuses)!=null&&s.length)}const ta=ht(ea);function na(){const t=Me(T),{id:n,...i}=gt(),[s,o]=it(),a=s.get("month"),h=!s.get("replies"),d=!!s.get("boosts"),r=s.get("tagged"),u=!!s.get("media"),{masto:f,instance:c,authenticated:p}=Q({instance:i.instance}),{masto:l,instance:b}=Q(),m=z(),k=[a,h,d,r,u],[g,y]=$(),C=z(0);G(()=>{C.current=0},k);const v=pe(()=>hn(),[]),I=pe(()=>c===b,[c,b]),[x,L]=$(!1);G(()=>{I&&g!=null&&g.acct&&(async()=>{const ne=await ta(c);L(ne)})()},[c,I,g==null?void 0:g.acct]);async function Y(ne){var Te,Pe,Fe,xe;const me=/^\d{4}-[01]\d$/.test(a),ue=((Pe=(Te=a==null?void 0:a.split)==null?void 0:Te.call(a,"-"))==null?void 0:Pe[0])>=Cn;if(me&&ue){if(!g)return{value:[],done:!0};const[J,ae]=a.split("-"),te=parseInt(ae,10)-1,Se=new Date(J,te,0),Ie=`${Se.getFullYear()}-${(Se.getMonth()+1).toString().padStart(2,"0")}-${Se.getDate().toString().padStart(2,"0")}`,F=new Date(J,te+1,1),re=`${F.getFullYear()}-${(F.getMonth()+1).toString().padStart(2,"0")}-${F.getDate().toString().padStart(2,"0")}`;let D;ne?(D=kt+1,C.current=0):(D=kt+C.current+1,C.current+=kt);const W=await f.v2.search.fetch({q:`from:${g.acct} after:${Ie} before:${re}`,type:"statuses",limit:D,offset:C.current});if((Fe=W==null?void 0:W.statuses)!=null&&Fe.length){const R=W.statuses.slice(0,kt);R.forEach(Z=>{qe(Z,c)});const q=W.statuses.length<=kt;return{value:R,done:q}}else return{value:[],done:!0}}let he=[];if(ne){const{value:J}=await f.v1.accounts.$select(n).statuses.list({pinned:!0}).next();if(J!=null&&J.length&&!r&&!u){const ae=J.map(te=>(qe(te,c),{...te,_pinned:!0}));if(ae.length>=3){const te=ae.map(Se=>Se.id);he.push({id:te,items:ae,type:"pinned"})}else he.push(...ae)}}(ne||!m.current)&&(m.current=f.v1.accounts.$select(n).statuses.list({limit:kt,exclude_replies:h,exclude_reblogs:d,only_media:u||void 0,tagged:r}));const{value:ke,done:Le}=await m.current.next();if(ke!=null&&ke.length){if(he.length){let J=[];((xe=he[0])==null?void 0:xe.type)==="pinned"?J=he[0].id:J=he.filter(te=>te._pinned).map(te=>te.id),J.every(te=>ke.some(Se=>Se.id===te))&&(he=[])}he.push(...ke),ke.forEach(J=>{qe(J,c)})}return{value:he,done:Le}}const[j,M]=$([]);He(g!=null&&g.acct?`${g!=null&&g.displayName?`${g.displayName} (${/@/.test(g.acct)?"":"@"}${g.acct})`:`${/@/.test(g.acct)?"":"@"}${g.acct}`}${h?d?" (- Boosts)":r?` (#${r})`:u?" (Media)":a?` (${new Date(a).toLocaleString("default",{month:"long",year:"numeric"})})`:"":" (+ Replies)"}`:"Account posts","/:instance?/a/:id");const ee=z(),X=Qe(()=>{const ne=ee.current||f.v1.accounts.$select(n).fetch();return ee.current=ne,ne},[n,f]);G(()=>{(async()=>{try{const ne=await X();y(ne)}catch{}if(!v)try{const ne=await f.v1.accounts.$select(n).featuredTags.list();M(ne)}catch{}})()},[n,v]);const{displayName:A,acct:P,emojis:E}=g||{},U=z(),V=pe(()=>{const ne=!h||d||r||u||!!a,me=t.accounts[`${n}@${c}`];return e(_,{children:[e(_s,{instance:c,account:me||n,fetchAccount:X,authenticated:p,standalone:!0}),!v&&e("div",{class:"filter-bar",ref:U,style:{position:"relative"},children:[ne?e(oe,{to:`/${c}/a/${n}`,class:"insignificant filter-clear",title:"Clear filters",children:e(w,{icon:"x",size:"l"})},"clear-filters"):e(w,{icon:"filter",class:"insignificant",size:"l"}),e(oe,{to:`/${c}/a/${n}${h?"?replies=1":""}`,onClick:()=>{h&&se("Showing post with replies")},class:h?"":"is-active",children:"+ Replies"}),e(oe,{to:`/${c}/a/${n}${d?"":"?boosts=0"}`,onClick:()=>{d||se("Showing posts without boosts")},class:d?"is-active":"",children:"- Boosts"}),e(oe,{to:`/${c}/a/${n}${u?"":"?media=1"}`,onClick:()=>{u||se("Showing posts with media")},class:u?"is-active":"",children:"Media"}),j.map(ue=>e(oe,{to:`/${c}/a/${n}${r===ue.name?"":`?tagged=${encodeURIComponent(ue.name)}`}`,onClick:()=>{r!==ue.name&&se(`Showing posts tagged with #${ue.name}`)},class:r===ue.name?"is-active":"",children:e("span",{children:[e("span",{class:"more-insignificant",children:"#"}),ue.name]})},ue.id)),x&&(Qo?e("label",{class:`filter-field ${a?"is-active":""}`,children:[e(w,{icon:"month",size:"l"}),e("input",{type:"month",disabled:!(g!=null&&g.acct),value:a||"",min:Zn,max:new Date().toISOString().slice(0,7),onInput:ue=>{const{value:he,validity:ke}=ue.currentTarget;if(!ke.valid)return;o(he?{month:he}:{});const[Le,Te]=he.split("-"),Pe=parseInt(Te,10)-1,Fe=new Date(Le,Pe);se(`Showing posts in ${Fe.toLocaleString("default",{month:"long",year:"numeric"})}`)}})]}):e(sa,{class:`filter-field ${a?"is-active":""}`,disabled:!(g!=null&&g.acct),value:a||"",min:Zn,max:new Date().toISOString().slice(0,7),onInput:ue=>{const{value:he,validity:ke}=ue;ke.valid&&o(he?{month:he}:{})}}))]})]})},[n,c,p,j,X,x,...k]);G(()=>{var me;const ne=(me=U.current)==null?void 0:me.querySelector(".is-active");ne&&U.current.scrollTo({behavior:"smooth",left:ne.offsetLeft-(U.current.offsetWidth-ne.offsetWidth)/2})},[j,x,...k]);const ye=pe(()=>g!=null&&g.url?new URL(g.url).hostname:null,[g]),fe=!!g&&!(c===ye);return e(dt,{title:`${g!=null&&g.acct?"@"+g.acct:"Posts"}`,titleComponent:e("h1",{class:"header-double-lines header-account",children:[e("b",{children:e(vs,{text:A,emojis:E})}),e("div",{children:e("span",{children:["@",P]})})]}),id:"account-statuses",instance:c,emptyText:"Nothing to see here yet.",errorText:"Unable to load posts",fetchItems:Y,useItemID:!0,view:u||v?"media":void 0,boostsCarousel:t.settings.boostsCarousel,timelineStart:V,refresh:[h,d,r,u,a+(g==null?void 0:g.acct)].toString(),headerEnd:e(Ze,{portal:!0,overflow:"auto",viewScroll:"close",position:"anchor",menuButton:e("button",{type:"button",class:"plain",children:e(w,{icon:"more",size:"l"})}),children:[e(de,{disabled:!fe,onClick:()=>{(async()=>{try{const{masto:ne}=Q({instance:ye}),me=await ne.v1.accounts.lookup({acct:g.acct}),{id:ue}=me;location.hash=`/${ye}/a/${ue}`}catch{alert("Unable to fetch account info")}})()},children:[e(w,{icon:"transfer"})," ",e("small",{class:"menu-double-lines",children:["Switch to account's instance"," ",ye?e(_,{children:[" ","(",e("b",{children:xt.toUnicode(ye)}),")"]}):null]})]}),!I&&e(de,{onClick:()=>{(async()=>{try{const ne=await l.v1.accounts.lookup({acct:g.acct+"@"+c}),{id:me}=ne;location.hash=`/${b}/a/${me}`}catch{alert("Unable to fetch account info")}})()},children:[e(w,{icon:"transfer"})," ",e("small",{class:"menu-double-lines",children:["Switch to my instance (",e("b",{children:b}),")"]})]})]})},n)}function sa(t){const{class:n,disabled:i,value:s,min:o,max:a,onInput:h=()=>{}}=t,[d,r]=(s==null?void 0:s.split("-"))||[],u=z(),f=z(),c=(p,l)=>{const[b,m]=(o==null?void 0:o.split("-"))||[],[k,g]=(a==null?void 0:a.split("-"))||[];return!(lk||l===b&&pg)};return e("div",{class:n,children:[e(w,{icon:"month",size:"l"}),e("select",{ref:u,disabled:i,value:r||"",onInput:p=>{const{value:l}=p.currentTarget,b=f.current.value;if(!c(l,b))return{value:"",validity:{valid:!1}};h({value:l?`${b}-${l}`:"",validity:{valid:!0}})},children:[e("option",{value:"",children:"Month"}),e("option",{disabled:!0,children:"-----"}),Array.from({length:12},(p,l)=>e("option",{value:(l+1).toString().padStart(2,"0"),children:new Date(0,l).toLocaleString("default",{month:"long"})},l))]})," ",e("input",{ref:f,type:"number",disabled:i,value:d||new Date().getFullYear(),min:(o==null?void 0:o.slice(0,4))||Cn,max:(a==null?void 0:a.slice(0,4))||new Date().getFullYear(),onInput:p=>{const{value:l,validity:b}=p.currentTarget,m=u.current.value;if(!b.valid||!c(m,l))return{value:"",validity:{valid:!1}};h({value:l?`${l}-${m}`:"",validity:{valid:!0}})},style:{width:"4.5em"}})]})}const ia=20;function Ds(){He("Bookmarks","/b");const{masto:t,instance:n}=Q(),i=z();async function s(o){return(o||!i.current)&&(i.current=t.v1.bookmarks.list({limit:ia})),await i.current.next()}return e(dt,{title:"Bookmarks",id:"bookmarks",emptyText:"No bookmarks yet. Go bookmark something!",errorText:"Unable to load bookmarks",instance:n,fetchItems:s})}const oa=""+new URL("catch-up-DuauQu-W.png",import.meta.url).href,aa="home",We=[{label:"last 1 hour",value:1},{label:"last 2 hours",value:2},{label:"last 3 hours",value:3},{label:"last 4 hours",value:4},{label:"last 5 hours",value:5},{label:"last 6 hours",value:6},{label:"last 7 hours",value:7},{label:"last 8 hours",value:8},{label:"last 9 hours",value:9},{label:"last 10 hours",value:10},{label:"last 11 hours",value:11},{label:"last 12 hours",value:12},{label:"beyond 12 hours",value:13}],ca=["Original","Replies","Boosts","Followed tags","Groups","Filtered"],ra=["createdAt","repliesCount","favouritesCount","reblogsCount","density"],la=[null,"account"],Jn={Filtered:"filtered",Groups:"group",Boosts:"boost",Replies:"reply","Followed tags":"followedTags",Original:"original"},da={Filtered:"filtered posts",Groups:"group posts",Boosts:"boosts",Replies:"replies","Followed tags":"followed-tag posts",Original:"original posts"},ua={createdAt:["oldest","latest"],repliesCount:["fewest replies","most replies"],favouritesCount:["fewest likes","most likes"],reblogsCount:["fewest boosts","most boosts"],density:["least dense","most dense"]};function ha(){He("Catch-up","/catchup");const{masto:t,instance:n}=Q(),[i,s]=it(),o=i.get("id"),[a,h]=$("start"),[d,r]=$(!1),u=pe(()=>ct(),[]),f=S=>S===u,c=je("@pixelfed/home-include-reblogs");async function p({maxCreatedAt:S}){var K,ge,le;const N=S?new Date(S):null,B=[],O=t.v1.timelines.home.list({limit:40});e:for(;;)try{c&&O.nextParams&&(typeof O.nextParams=="string"?O.nextParams+="&include_reblogs=true":O.nextParams.include_reblogs=!0);const ie=await O.next(),{value:Ce}=ie;if(Ce!=null&&Ce.length){await Ps(Ce,n);let Ne=!1;for(let Oe=0;Oe=N){const we=!f(((ge=(K=Ee.reblog)==null?void 0:K.account)==null?void 0:ge.id)||Ee.account.id)&&Mt(((le=Ee.reblog)==null?void 0:le.filtered)||Ee.filtered,aa);if((we==null?void 0:we.action)==="hide")continue;Ee._filtered=we;const tt=Ke(Ee.id,n);Ee._followedTags=T.statusFollowedTags[tt]?[...T.statusFollowedTags[tt]]:[],B.push(Ee),Ne=!0}if(!Ne)break e}}else break e;await new Promise(Ne=>setTimeout(Ne,1e3))}catch{break e}return B.forEach(ie=>{if(ie!=null&&ie.inReplyToId){const Ce=B.find(Ne=>Ne.id===ie.inReplyToId);Ce&&!Ce.inReplyToId&&(Ce._thread=!0)}}),B}const[l,b]=$([]),m=z(),k=z(),g=pe(()=>jt(),[]),y=Qe(async({duration:S}={})=>{const N=Date.now(),B=S?N-S:null;h("loading");const O=await p({maxCreatedAt:B}),K=`${g}-${ri()}`;try{await nt.catchup.set(K,{id:K,posts:O,count:O.length,startAt:B,endAt:N}),s({id:K})}catch{}},[]);G(()=>{o?(async()=>{const S=await nt.catchup.get(o);S&&(S.posts.sort((N,B)=>N.createdAt>B.createdAt?1:-1),b(S.posts),h("results"))})():a==="results"&&(b([]),h("start"))},[o]);const[C,v]=mt(S=>S+1,0),[I,x]=$(null),[L,Y]=$([]);G(()=>{(async()=>{try{const S=await nt.catchup.keys();if(S.length){const N=jt(),B=S.filter(O=>O.startsWith(`${N}-`));if(B.length){let O=await nt.catchup.getMany(B);O.sort((ie,Ce)=>Ce.endAt-ie.endAt);let K=O.slice(0,3),ge=O.slice(3);const le=K.map(ie=>{const{id:Ce,count:Ne,startAt:Oe,endAt:Ee}=ie;return{id:Ce,count:Ne,startAt:Oe,endAt:Ee}});Y(le),x(K[0].endAt),O=null,K=null,queueMicrotask(()=>{ge.length&&nt.catchup.delMany(ge.map(ie=>ie.id)).then(()=>{ge=null}).catch(ie=>{})});return}}}catch{}Y([])})()},[C]),G(()=>{a==="start"&&v()},[a==="start"]);const[j,M]=pe(()=>{var Ce,Ne,Oe,Ee,Ve;let S=0,N=0,B=0,O=0,K=0,ge=0;const le={};for(const H of l){H._filtered?(S++,H.__FILTER="filtered"):H.group?(N++,H.__FILTER="group"):H.reblog?(B++,H.__FILTER="boost"):(Ce=H._followedTags)!=null&&Ce.length?(K++,H.__FILTER="followedTags"):H.inReplyToId&&H.inReplyToAccountId!==((Ne=H.account)==null?void 0:Ne.id)?(O++,H.__FILTER="reply"):(ge++,H.__FILTER="original");const we=H.reblog||H;if(H.__FILTER!=="filtered"&&((Oe=we.card)!=null&&Oe.url)&&((Ee=we.card)!=null&&Ee.image)&&((Ve=we.card)==null?void 0:Ve.type)==="link"){const{card:tt,favouritesCount:Dt,reblogsCount:pt}=we;let{url:Ye}=tt;if(Ye=Ye.replace(/\/$/,""),!le[Ye])le[Ye]={postID:we.id,card:tt,shared:1,sharers:[H.account],likes:Dt,boosts:pt};else{if(le[Ye].sharers.find(wt=>wt.id===H.account.id))continue;le[Ye].shared++,le[Ye].sharers.push(H.account),le[Ye].postID!==we.id&&(le[Ye].likes+=Dt,le[Ye].boosts+=pt)}}}let ie=[];for(const H in le)ie.push({url:H,...le[H]});if(ie.sort((H,we)=>H.shared>we.shared?-1:H.sharedwe.boosts?-1:H.boostswe.likes?-1:H.likes10)e:for(let H=10;H{const S={},N=new Map;let B=l.filter(K=>{const ge=ee==="All"||K.__FILTER===Jn[ee];return ge&&(S[K.account.id]=K.account,N.set(K.account.id,(N.get(K.account.id)||0)+1)),ge});const O={};return B.forEach(K=>{K.reblog&&(O[K.reblog.id]?(O[K.reblog.id].__BOOSTERS?O[K.reblog.id].__BOOSTERS.add(K.account):O[K.reblog.id].__BOOSTERS=new Set([K.account]),K.__HIDDEN=!0):O[K.reblog.id]=K)}),A&&N.has(A)&&(B=B.filter(K=>K.account.id===A||[...K.__BOOSTERS||[]].find(ge=>ge.id===A))),[B,S,Object.fromEntries(N)]},[ee,A,l]),Le=pe(()=>{const S={};return ue.forEach(N=>{S[N.id]=N}),S},[ue]),Te=pe(()=>Object.keys(ke).sort((S,N)=>ke[N]-ke[S]),[ke]),Pe=pe(()=>{const S={};return Te.forEach((N,B)=>{S[N]=B}),ue.filter(N=>!N.__HIDDEN).sort((N,B)=>{if(ne==="account"){const O=N.account.id,K=B.account.id,ge=S[O],le=S[K],ie=ge-le;if(ie!==0)return ie}if(V!=="createdAt"&&(N=N.reblog||N,B=B.reblog||B,V!=="density"&&N[V]===B[V]))return N.createdAt>B.createdAt?1:-1;if(V==="density"){const O=Xn(N),K=Xn(B);return ve==="asc"?O>K?1:-1:K>O?1:-1}return ve==="asc"?N[V]>B[V]?1:-1:B[V]>N[V]?1:-1})},[ue,V,ve,ne,Te]),Fe=z(null),xe=z(null),J=z(!1);G(()=>{l.length>100||J.current||xe.current&&(li(xe.current,{duration:200}),J.current=!0)},[l,xe]);const ae=l.length>160?"3d":"2d",te=pe(()=>ae!=="2d"?null:l.map(S=>{const N=Le[S.id];return e("span",{class:`post-dot ${N?"post-dot-highlight":""}`},S.id)}),[Le]),Se=pe(()=>ae!=="3d"||!(l!=null&&l.length)?null:va(l,"createdAt",320).map((N,B)=>e("div",{class:"posts-bin",children:N.map(O=>{const K=Le[O.id];return e("span",{class:`post-dot ${K?"post-dot-highlight":""}`},O.id)})},B)),[Le]),Ie=z(null),F=pe(()=>I?(Date.now()-I)/1e3/60/60:null,[I,E]);G(()=>{if(a!=="results")return;const S=A&&he[A]?he[A].username:"",N=ve==="asc"?0:1,B={account:"authors"};let O=se({duration:5e3,text:`Showing ${da[ee]||"all posts"}${S?` by @${S}`:""}, ${ua[V][N]} first${ne?`, grouped by ${ne==="account"?B[ne]:""}`:""}`});return()=>{var K;(K=O==null?void 0:O.hideToast)==null||K.call(O)}},[a,ee,A,V,ve,ne,he]),G(()=>{var S;if(A&&he[A]){const N=xe.current.querySelector(`[data-author="${A}"]`),B=(S=xe.current)==null?void 0:S.getBoundingClientRect(),O=N==null?void 0:N.getBoundingClientRect();O.leftB.right?N.scrollIntoView({block:"nearest",inline:"center",behavior:"smooth"}):O.top<0&&N.scrollIntoView({block:"nearest",inline:"nearest",behavior:"smooth"})}},[A,he]);const[re,D]=$(!1),W=".catchup-list > li > a",R=_e("j",()=>{const S=document.activeElement.closest(W),N=S==null?void 0:S.getBoundingClientRect(),B=Array.from(Ie.current.querySelectorAll(W));if(S&&N.top0){const O=B.indexOf(S),K=B[O+1];K&&(K.focus(),K.scrollIntoView({block:"center",inline:"center",behavior:"smooth"}))}else{const O=B.find(K=>K.getBoundingClientRect().top>=0);O&&(O.focus(),O.scrollIntoView({block:"nearest",inline:"center",behavior:"smooth"}))}},{preventDefault:!0,ignoreModifiers:!0}),q=_e("k",()=>{const S=document.activeElement.closest(W),N=S==null?void 0:S.getBoundingClientRect(),B=Array.from(Ie.current.querySelectorAll(W));if(S&&N.top0){const O=B.indexOf(S);let K=B[O-1];K&&(K.focus(),K.scrollIntoView({block:"center",inline:"center",behavior:"smooth"}))}else{const O=B.find(K=>{const ge=K.getBoundingClientRect();return ge.top>=44&&ge.left>=0});O&&(O.focus(),O.scrollIntoView({block:"nearest",inline:"center",behavior:"smooth"}))}},{preventDefault:!0,ignoreModifiers:!0}),Z=_e("h, l",(S,N)=>{var O,K,ge;const B=N.keys[0];if(A){const le=Te.indexOf(A);B==="h"?le>0&&le=0&&(P(Te[le+1]),(K=Ie.current)==null||K.focus())}else B==="l"&&(P(Te[0]),(ge=Ie.current)==null||ge.focus())},{preventDefault:!0,ignoreModifiers:!0,enableOnFormTags:["input"]}),ce=_e("esc",()=>{var S;P(null),(S=Ie.current)==null||S.focus()},{preventDefault:!0,ignoreModifiers:!0,enableOnFormTags:["input"]}),De=_e(".",()=>{var S;(S=Ie.current)==null||S.scrollTo({top:0,behavior:"smooth"})},{preventDefault:!0,ignoreModifiers:!0,enableOnFormTags:["input"]});return e("div",{ref:S=>{Ie.current=S,R.current=S,q.current=S,Z.current=S,ce.current=S},id:"catchup-page",class:"deck-container",tabIndex:"-1",children:[e("div",{class:"timeline-deck deck wide",children:[e("header",{class:`${a==="loading"?"loading":""}`,onClick:S=>{var N;S.target.closest("a, button")||(N=Ie.current)==null||N.scrollTo({top:0,behavior:"smooth"})},children:e("div",{class:"header-grid",children:[e("div",{class:"header-side",children:[e(yt,{}),a==="results"&&e(oe,{to:"/catchup",class:"button plain",children:e(w,{icon:"history2",size:"l"})}),a==="start"&&e(oe,{to:"/",class:"button plain",children:e(w,{icon:"home",size:"l"})})]}),e("h1",{children:a!=="start"&&e(_,{children:["Catch-up ",e("sup",{children:"beta"})]})}),e("div",{class:"header-side",children:a!=="start"&&a!=="loading"&&e("button",{type:"button",class:"plain",onClick:()=>{D(!0)},children:"Help"})})]})}),e("main",{children:[a==="start"&&e("div",{class:"catchup-start",children:[e("h1",{children:["Catch-up ",e("sup",{children:"beta"})]}),e("details",{children:[e("summary",{children:"What is this?"}),e("p",{children:"Catch-up is a separate timeline for your followings, offering a high-level view at a glance, with a simple, email-inspired interface to effortlessly sort and filter through posts."}),e("img",{src:oa,width:"1200",height:"900",alt:"Preview of Catch-up UI"}),e("p",{children:e("button",{type:"button",onClick:S=>{S.target.closest("details").open=!1},children:"Let's catch up"})})]}),e("p",{children:"Let's catch up on the posts from your followings."}),e("p",{children:e("b",{children:"Show me all posts from…"})}),e("div",{class:"catchup-form",children:[e("input",{ref:m,type:"range",value:E,min:We[0].value,max:We[We.length-1].value,step:"1",list:"catchup-ranges",onChange:S=>U(+S.target.value)})," ",e("span",{style:{width:"8em"},children:[We[E-1].label,e("br",{}),e("small",{class:"insignificant",children:E==We[We.length-1].value?"until the max":ot(new Date(Date.now()-E*60*60*1e3))})]}),e("datalist",{id:"catchup-ranges",children:We.map(({label:S,value:N})=>e("option",{value:N,label:S}))})," ",e("button",{type:"button",onClick:()=>{var S;if(EF?e("p",{class:"catchup-info",children:[e(w,{icon:"info"})," Overlaps with your last catch-up"]}):E===We[We.length-1].value&&I?e("p",{class:"catchup-info",children:e("label",{children:[e("input",{type:"checkbox",switch:!0,checked:!0,ref:k})," ","Until the last catch-up (",Ft.format(new Date(I)),")"]})}):null,e("p",{class:"insignificant",children:e("small",{children:"Note: your instance might only show a maximum of 800 posts in the Home timeline regardless of the time range. Could be less or more."})}),!!(L!=null&&L.length)&&e("div",{class:"catchup-prev",children:[e("p",{children:"Previously…"}),e("ul",{children:L.map(S=>e("li",{children:[e(oe,{to:`/catchup?id=${S.id}`,children:[e(w,{icon:"history2"})," ",e("span",{children:S.startAt?Ft.formatRange(new Date(S.startAt),new Date(S.endAt)):`… – ${Ft.format(new Date(S.endAt))}`})]})," ",e("span",{children:[e("small",{class:"ib insignificant",children:[S.count," posts"]})," ",e("button",{type:"button",class:"light danger small",onClick:async()=>{var B;if(confirm("Remove this catch-up?")){let O=se(`Removing Catch-up ${S.id}`);await nt.catchup.del(S.id),(B=O==null?void 0:O.hideToast)==null||B.call(O),se(`Catch-up ${S.id} removed`),v()}},children:e(w,{icon:"x"})})]})]},S.id))}),L.length>=3&&e("p",{children:e("small",{children:"Note: Only max 3 will be stored. The rest will be automatically removed."})})]})]}),a==="loading"&&e("div",{class:"ui-state catchup-start",children:[e($e,{abrupt:!0}),e("p",{class:"insignificant",children:"Fetching posts…"}),e("p",{class:"insignificant",children:"This might take a while."})]}),a==="results"&&e(_,{children:[e("div",{class:"catchup-header",children:[l.length>0&&e("p",{children:e("b",{class:"ib",children:Ft.formatRange(new Date(l[0].createdAt),new Date(l[l.length-1].createdAt))})}),e("aside",{children:[e("button",{hidden:ee==="All"&&!A&&V==="createdAt"&&ve==="asc",type:"button",class:"plain4 small",onClick:()=>{X("All"),P(null),ye("createdAt"),me(null),fe("asc")},children:"Reset filters"}),(M==null?void 0:M.length)>0&&e("button",{type:"button",class:"plain small",onClick:()=>r(!d),children:["Top links"," ",e(w,{icon:"chevron-down",style:{transform:d?"rotate(180deg)":"rotate(0deg)"}})]})]})]}),e("div",{class:"shazam-container no-animation",hidden:!d,children:e("div",{class:"shazam-container-inner",children:e("div",{class:"catchup-top-links links-bar",children:M.map(S=>{const{card:N,shared:B,sharers:O,likes:K,boosts:ge}=S,{blurhash:le,title:ie,description:Ce,url:Ne,image:Oe,imageDescription:Ee,language:Ve,width:H,height:we,publishedAt:tt}=N,Dt=xt.toUnicode(new URL(Ne).hostname.replace(/^www\./,"").replace(/\/$/,""));let pt;if(le){const Ye=fn(le),wt=Sn(Ye);pt=In([.6,wt[1],wt[2]])}return e("a",{href:Ne,target:"_blank",rel:"noopener noreferrer",style:pt?{"--accent-color":`rgb(${pt.join(",")})`,"--accent-alpha-color":`rgba(${pt.join(",")}, 0.4)`}:{},children:e("article",{children:[e("figure",{children:e("img",{src:Oe,alt:Ee,width:H,height:we,loading:"lazy"})}),e("div",{class:"article-body",children:[e("header",{children:[e("div",{class:"article-meta",children:[e("span",{class:"domain",children:Dt})," ",!!tt&&e(_,{children:"· "}),!!tt&&e(_,{children:e(bt,{datetime:tt,format:"micro"})})]}),!!ie&&e("h1",{class:"title",lang:Ve,dir:"auto",title:ie,children:ie})]}),!!Ce&&e("p",{class:"description",lang:Ve,dir:"auto",title:Ce,children:Ce}),e("hr",{}),e("p",{style:{whiteSpace:"nowrap"},children:["Shared by"," ",O.map(Ye=>{const{avatarStatic:wt,displayName:Ws}=Ye;return e(st,{url:wt,size:"s",alt:Ws})})]})]})]})},Ne)})})})}),l.length>=5&&(ae==="3d"?e("div",{class:"catchup-posts-viz-time-bar",children:Se}):e("div",{class:"catchup-posts-viz-bar",children:te})),l.length>=2&&e("div",{class:"catchup-filters",children:[e("label",{class:"filter-cat",children:[e("input",{type:"radio",name:"filter-cat",checked:ee.toLowerCase()==="all",onChange:()=>{X("All")}}),"All ",e("span",{class:"count",children:l.length})]}),ca.map(S=>!!j[S]&&e("label",{class:"filter-cat",title:(j[S]/l.length*100).toFixed(2)+"%",children:[e("input",{type:"radio",name:"filter-cat",checked:ee.toLowerCase()===S.toLowerCase(),onChange:()=>{X(S)}}),S," ",e("span",{class:"count",children:j[S]})]},S))]}),l.length>=2&&!!ke&&e("div",{class:"catchup-filters authors-filters",ref:xe,children:[Te.map(S=>e("label",{class:"filter-author","data-author":S,children:[e("input",{type:"radio",name:"filter-author",checked:A===S,onChange:()=>{P(S)},onClick:()=>{A===S&&P(null)}}),e(st,{url:he[S].avatarStatic||he[S].avatar,size:"xxl",alt:`${he[S].displayName} (@${he[S].acct})`})," ",e("span",{class:"count",children:ke[S]}),e("span",{class:"username",children:he[S].username})]},`${S}-${ke[S]}`)),Te.length>5&&e("small",{style:{whiteSpace:"nowrap",paddingInline:"1em",opacity:.33},children:[Te.length," authors"]},"authors-count")]}),l.length>=2&&e("div",{class:"catchup-filters",children:[e("span",{class:"filter-label",children:"Sort"})," ",e("fieldset",{class:"radio-field-group",children:ra.map(S=>e("label",{class:"filter-sort",onClick:N=>{V===S&&(N.preventDefault(),N.stopPropagation(),fe(ve==="asc"?"desc":"asc"))},children:[e("input",{type:"radio",name:"filter-sort-cat",checked:V===S,onChange:()=>{ye(S);const N=/(replies|favourites|reblogs)/.test(S)?"desc":"asc";fe(N)}}),{createdAt:"Date",repliesCount:"Replies",favouritesCount:"Likes",reblogsCount:"Boosts",density:"Density"}[S],V===S&&(ve==="asc"?" ↑":" ↓")]},S))}),e("span",{class:"filter-label",children:"Group"})," ",e("fieldset",{class:"radio-field-group",children:la.map(S=>e("label",{class:"filter-group",children:[e("input",{type:"radio",name:"filter-group",checked:ne===S,onChange:()=>{me(S)},disabled:S==="account"&&A}),{account:"Authors"}[S]||"None"]},S||"none"))}),A&&Te.length>1?e("button",{type:"button",class:"plain6 small",onClick:()=>{P(null)},style:{whiteSpace:"nowrap"},children:"Show all authors"}):null]}),e("ul",{class:`catchup-list catchup-filter-${Jn[ee]||""} ${V?`catchup-sort-${V}`:""} ${A&&he[A]?"catchup-selected-author":""} ${ne?`catchup-group-${ne}`:""}`,children:Pe.map((S,N)=>{var K;const B=((K=S.reblog)==null?void 0:K.id)||S.id;let O=!1;return ne==="account"&&(Fe.current&&S.account.id!==Fe.current&&N>0&&(O=!0),Fe.current=S.account.id),e(_,{children:[O&&e("li",{class:"separator"}),e(fa,{to:`/${n}/s/${B}`,post:S,root:Ie.current})]},`${S.id}-${O}`)})}),e("footer",{children:ue.length>5&&e("p",{children:[ee==="Boosts"?"You don't have to read everything.":"That's all."," ",e("button",{type:"button",class:"textual",onClick:()=>{Ie.current.scrollTop=0},children:"Back to top"}),"."]})})]})]})]}),re&&e(Ae,{onClose:()=>D(!1),children:e("div",{class:"sheet",id:"catchup-help-sheet",children:[e("button",{type:"button",class:"sheet-close",onClick:()=>D(!1),children:e(w,{icon:"x"})}),e("header",{children:e("h2",{children:"Help"})}),e("main",{children:e("dl",{children:[e("dt",{children:"Top links"}),e("dd",{children:"Links shared by followings, sorted by shared counts, boosts and likes."}),e("dt",{children:"Sort: Density"}),e("dd",{children:'Posts are sorted by information density or depth. Shorter posts are "lighter" while longer posts are "heavier". Posts with photos are "heavier" than posts without photos.'}),e("dt",{children:"Group: Authors"}),e("dd",{children:"Posts are grouped by authors, sorted by posts count per author."}),e("dt",{children:"Keyboard shortcuts"}),e("dd",{children:[e("kbd",{children:"j"}),": Next post"]}),e("dd",{children:[e("kbd",{children:"k"}),": Previous post"]}),e("dd",{children:[e("kbd",{children:"l"}),": Next author"]}),e("dd",{children:[e("kbd",{children:"h"}),": Previous author"]}),e("dd",{children:[e("kbd",{children:"Enter"}),": Open post details"]}),e("dd",{children:[e("kbd",{children:"."}),": Scroll to top"]})]})})]})})]})}const pa=Je(function({post:t}){const{id:n,account:i,group:s,reblog:o,inReplyToId:a,inReplyToAccountId:h,_followedTags:d,_filtered:r,visibility:u,__BOOSTERS:f}=t,c=a&&h!==i.id,p=!!r,l=b=>{b.shiftKey};return e("article",{class:`post-line ${s?"group":o?"reblog":d!=null&&d.length?"followed-tags":""} ${c?"reply-to":""} ${p?"filtered":""} visibility-${u}`,onMouseEnter:l,children:[e("span",{class:"post-author",children:o?e("span",{class:"post-reblog-avatar",children:[e(st,{url:i.avatarStatic||i.avatar,squircle:i.bot}),(f==null?void 0:f.size)>0?[...f].map(b=>e(st,{url:b.avatarStatic||b.avatar,squircle:b.bot})):""," ",e(w,{icon:"rocket"})," ",e(It,{account:o.account,showAvatar:!0})]}):e(It,{account:i,showAvatar:!0})}),e(ba,{post:o||t,filterInfo:r}),e("span",{class:"post-meta",children:[e(ya,{post:o||t})," ",e(bt,{datetime:new Date((o==null?void 0:o.createdAt)||t.createdAt),format:"micro"})]})]})},(t,n)=>{var i,s;return((i=t==null?void 0:t.post)==null?void 0:i.id)===((s=n==null?void 0:n.post)==null?void 0:s.id)}),fa=({root:t,to:n,...i})=>{const s=z(),[o,a]=$(!1);return G(()=>{const h=new IntersectionObserver(d=>{d[0].isIntersecting&&(queueMicrotask(()=>a(!0)),h.unobserve(s.current))},{root:t,rootMargin:`${Math.max(320,screen.height*.75)}px`});return s.current&&h.observe(s.current),()=>{s.current&&h.unobserve(s.current)}},[]),o?e("li",{children:e(oe,{to:n,children:e(pa,{...i})})}):e("li",{ref:s,style:{height:"4em"}})},ma=8,ga=8;function Xn(t){var r;const{spoilerText:n,content:i,poll:s,mediaAttachments:o,card:a}=t,h=(r=s==null?void 0:s.options)!=null&&r.length?s.options.reduce((u,f)=>u+f.title,""):"";return(n.length+Cs(i)+h.length)/140+(o!=null&&o.length?ma*o.length:a!=null&&a.image?ga:0)}const ut=48;function ba({post:t,filterInfo:n}){var y;const{spoilerText:i,sensitive:s,content:o,emojis:a,poll:h,mediaAttachments:d,card:r,inReplyToId:u,inReplyToAccountId:f,account:c,_thread:p}=t,l=u&&f===c.id||!!p,b=pe(()=>!!(be.account.get("preferences")||{})["reading:expand:spoilers"],[]),m=b||!i&&!s,k=o?yn(t):"",g=!i||b;return e("div",{class:"post-peek",title:i?"":k,children:[e("span",{class:"post-peek-content",children:[l&&!g&&e(_,{children:[e("span",{class:"post-peek-tag post-peek-thread",children:"Thread"})," "]}),n?e("span",{class:"post-peek-filtered",children:["Filtered",n!=null&&n.titlesStr?`: ${n.titlesStr}`:""]}):e(_,{children:[!!i&&e("span",{class:"post-peek-spoiler",children:[e(w,{icon:`${b?"eye-open":"eye-close"}`})," ",i]}),g&&e("div",{class:"post-peek-html",children:[l&&e(_,{children:[e("span",{class:"post-peek-tag post-peek-thread",children:"Thread"})," "]}),!!o&&e("div",{dangerouslySetInnerHTML:{__html:Ti(o,a)}}),!!((y=h==null?void 0:h.options)!=null&&y.length)&&h.options.map(C=>e("div",{children:[h.multiple?"▪️":"•"," ",C.title]})),!o&&(d==null?void 0:d.length)===1&&d[0].description&&e(_,{children:[e("span",{class:"post-peek-tag post-peek-alt",children:"ALT"})," ",e("div",{children:d[0].description})]})]})]})]}),!n&&e("span",{class:"post-peek-post-content",children:[!!h&&e("span",{class:"post-peek-tag post-peek-poll",children:[e(w,{icon:"poll",size:"s"}),"Poll"]}),d!=null&&d.length?d.map(C=>{const v=C.previewUrl||C.url,I=C.previewRemoteUrl||C.remoteUrl;return e("span",{class:"post-peek-media",children:{image:(v||I)&&m?e("img",{src:v,width:ut,height:ut,alt:C.description,loading:"lazy",onError:x=>{const{src:L}=x.target;L===v&&(x.target.src=I)}}):e("span",{class:"post-peek-faux-media",children:"🖼"}),gifv:(v||I)&&m?e("img",{src:v,width:ut,height:ut,alt:C.description,loading:"lazy",onError:x=>{const{src:L}=x.target;L===v&&(x.target.src=I)}}):e("span",{class:"post-peek-faux-media",children:"🎞️"}),video:(v||I)&&m?e("img",{src:v,width:ut,height:ut,alt:C.description,loading:"lazy",onError:x=>{const{src:L}=x.target;L===v&&(x.target.src=I)}}):e("span",{class:"post-peek-faux-media",children:"📹"}),audio:e("span",{class:"post-peek-faux-media",children:"🎵"})}[C.type]||null},C.id)}):!!r&&r.image&&m&&e("span",{class:`post-peek-media post-peek-card card-${r.type||""}`,children:r.image?e("img",{src:r.image,width:ut,height:ut,alt:r.title||r.description||r.imageDescription,loading:"lazy"}):e("span",{class:"post-peek-faux-media",children:"🔗"})})]})]})}function ya({post:t}){const{reblogsCount:n,repliesCount:i,favouritesCount:s}=t;return e("span",{class:"post-stats",children:[i>0&&e("span",{class:"post-stat-replies",children:[e(w,{icon:"comment2",size:"s"})," ",Ge(i)]}),s>0&&e("span",{class:"post-stat-likes",children:[e(w,{icon:"heart",size:"s"})," ",Ge(s)]}),n>0&&e("span",{class:"post-stat-boosts",children:[e(w,{icon:"rocket",size:"s"})," ",Ge(n)]})]})}const{locale:wa}=new Intl.DateTimeFormat().resolvedOptions(),Ft=new Intl.DateTimeFormat(wa,{year:"numeric",month:"short",day:"numeric",hour:"numeric",minute:"numeric"});function va(t,n,i){const s=t.map(r=>new Date(r[n])),o=s.reduce((r,u)=>uu>r?u:r,s[0]).getTime()-o.getTime(),d=Array.from({length:i},()=>[]);return t.forEach(r=>{const f=(new Date(r[n]).getTime()-o.getTime())/h,c=Math.floor(f*(i-1));d[c].push(r)}),d}const ka=20;function Ns(){He("Likes","/f");const{masto:t,instance:n}=Q(),i=z();async function s(o){return(o||!i.current)&&(i.current=t.v1.favourites.list({limit:ka})),await i.current.next()}return e(dt,{title:"Likes",id:"favourites",emptyText:"No likes yet. Go like something!",errorText:"Unable to load likes",instance:n,fetchItems:s})}const Sa=["home","public","notifications","thread","account"],Qn=["notifications","thread","account"],Ia={home:"Home and lists",notifications:"Notifications",public:"Public timelines",thread:"Conversations",account:"Profiles"},Ca=[0,30*60,60*60,6*60*60,12*60*60,60*60*24,60*60*24*7,60*60*24*30],Ta={0:"Never",1800:"30 minutes",3600:"1 hour",21600:"6 hours",43200:"12 hours",86400:"24 hours",604800:"7 days",2592e3:"30 days"};function xa(){const{masto:t}=Q();He("Filters","/ft");const[n,i]=$("default"),[s,o]=$(!1),[a,h]=mt(u=>u+1,0),[d,r]=$([]);return G(()=>{i("loading"),(async()=>{try{const u=await t.v2.filters.list();u.sort((f,c)=>f.title.localeCompare(c.title)),u.forEach(f=>{var c;(c=f.keywords)!=null&&c.length&&f.keywords.sort((p,l)=>p.id-l.id)}),r(u),i("default")}catch{i("error")}})()},[a]),e("div",{id:"filters-page",class:"deck-container",tabIndex:"-1",children:[e("div",{class:"timeline-deck deck",children:[e("header",{children:e("div",{class:"header-grid",children:[e("div",{class:"header-side",children:[e(yt,{}),e(oe,{to:"/",class:"button plain",children:e(w,{icon:"home",size:"l"})})]}),e("h1",{children:"Filters"}),e("div",{class:"header-side",children:e("button",{type:"button",class:"plain",onClick:()=>{o(!0)},children:e(w,{icon:"plus",size:"l",alt:"New filter"})})})]})}),e("main",{children:d.length>0?e(_,{children:[e("ul",{class:"filters-list",children:d.map(u=>{const{id:f,title:c,expiresAt:p,keywords:l}=u;return e("li",{children:[e("div",{children:[e("h2",{children:c}),(l==null?void 0:l.length)>0&&e("div",{children:l.map(b=>e(_,{children:[e("span",{class:"tag collapsed insignificant",children:b.wholeWord?`“${b.keyword}”`:b.keyword})," "]}))}),e("small",{class:"insignificant",children:e(Us,{expiresAt:p})})]}),e("button",{type:"button",class:"plain",onClick:()=>{o({filter:u})},children:e(w,{icon:"pencil",size:"l",alt:"Edit filter"})})]},f)})}),d.length>1&&e("footer",{class:"ui-state",children:e("small",{class:"insignificant",children:[d.length," filter",d.length===1?"":"s"]})})]}):n==="loading"?e("p",{class:"ui-state",children:e($e,{})}):n==="error"?e("p",{class:"ui-state",children:"Unable to load filters."}):e("p",{class:"ui-state",children:"No filters yet."})})]}),!!s&&e(Ae,{title:"Add filter",onClose:()=>{o(!1)},children:e(Ra,{filter:s==null?void 0:s.filter,onClose:u=>{u.state==="success"&&h(),o(!1)}})})]})}let $a=1;const Aa=()=>$a++;function Ra({filter:t,onClose:n}){const{masto:i}=Q(),[s,o]=$("default"),a=!!t,{context:h,expiresAt:d,id:r,keywords:u,title:f,filterAction:c}=t||{},p=!!d,l=p&&new Date(d),[b,m]=$(u||[]),k=z(),[g,y]=$([]),[C,v]=$([]),I=b.filter(x=>!g.includes(x.id)&&!C.includes(x._id));return e("div",{class:"sheet",id:"filters-add-edit-modal",children:[!!n&&e("button",{type:"button",class:"sheet-close",onClick:n,children:e(w,{icon:"x"})}),e("header",{children:e("h2",{children:a?"Edit filter":"New filter"})}),e("main",{children:e("form",{onSubmit:x=>{x.preventDefault();const L=new FormData(x.target),Y=L.get("title"),j=L.getAll("keyword_attributes[][id]"),M=L.getAll("keyword_attributes[][keyword]"),ee=[...k.current.querySelectorAll('input[name="keyword_attributes[][whole_word]"]')].map(U=>U.checked),X=M.map((U,V)=>({id:j[V]||void 0,keyword:U,wholeWord:ee[V]}));a&&(g!=null&&g.length)&&g.forEach(U=>{X.push({id:U,_destroy:!0})});const A=L.getAll("context");let P=L.get("expires_in");const E=L.get("filter_action");!Y||!(A!=null&&A.length)||(o("loading"),(async()=>{try{let U;a?(P===""||P===null?p?P=Math.floor((l-new Date)/1e3):P=null:P==="0"||P===0?P=null:P=+P,U=await i.v2.filters.$select(r).update({title:Y,context:A,expiresIn:P,keywordsAttributes:X,filterAction:E})):(P=+P||null,U=await i.v2.filters.create({title:Y,context:A,expiresIn:P,keywordsAttributes:X,filterAction:E})),o("default"),n==null||n({state:"success",filter:U})}catch{o("error"),alert(a?"Unable to edit filter":"Unable to create filter")}})())},children:[e("div",{class:"filter-form-row",children:e("label",{children:[e("b",{children:"Title"}),e("input",{type:"text",name:"title",defaultValue:f,disabled:s==="loading",dir:"auto",required:!0})]})}),e("div",{class:"filter-form-keywords",ref:k,children:[I.length?e("ul",{class:"filter-keywords",children:I.map(x=>{const{id:L,keyword:Y,wholeWord:j,_id:M}=x;return e("li",{children:[e("input",{type:"hidden",name:"keyword_attributes[][id]",value:L}),e("input",{name:"keyword_attributes[][keyword]",type:"text",defaultValue:Y,disabled:s==="loading",required:!0}),e("div",{class:"filter-keyword-actions",children:[e("label",{children:[e("input",{name:"keyword_attributes[][whole_word]",type:"checkbox",value:L,defaultChecked:j,disabled:s==="loading"})," ","Whole word"]}),e("button",{type:"button",class:"light danger small",disabled:s==="loading",onClick:()=>{L?(g.push(L),y([...g])):M&&(C.push(M),v([...C]))},children:e(w,{icon:"x"})})]})]},`${L}-${M}`)})}):e("div",{class:"filter-keywords",children:e("div",{class:"insignificant",children:"No keywords. Add one."})}),e("footer",{class:"filter-keywords-footer",children:[e("button",{type:"button",class:"light",onClick:()=>{m([...b,{_id:Aa(),keyword:"",wholeWord:!0}]),setTimeout(()=>{var L,Y;const x=k.current.querySelectorAll('input[type="text"]');(Y=(L=x[x.length-1])==null?void 0:L.focus)==null||Y.call(L)},10)},children:"Add keyword"})," ",(I==null?void 0:I.length)>1&&e("small",{class:"insignificant",children:[I.length," keyword",I.length===1?"":"s"]})]})]}),e("div",{class:"filter-form-cols",children:[e("div",{class:"filter-form-col",children:[e("div",{children:e("b",{children:"Filter from…"})}),Sa.map(x=>e("div",{children:[e("label",{class:Qn.includes(x)?"insignificant":"",children:[e("input",{type:"checkbox",name:"context",value:x,defaultChecked:h?h.includes(x):!0,disabled:s==="loading"})," ",Ia[x],Qn.includes(x)?"*":""]})," "]})),e("p",{children:e("small",{class:"insignificant",children:"* Not implemented yet"})})]}),e("div",{class:"filter-form-col",children:[a&&e(_,{children:["Status:"," ",e("b",{children:e(Us,{expiresAt:d,showNeverExpires:!0})})]}),e("div",{children:[e("label",{for:"filters-expires_in",children:a?"Change expiry":"Expiry"}),e("select",{id:"filters-expires_in",name:"expires_in",disabled:s==="loading",defaultValue:a?void 0:0,children:[a&&e("option",{}),Ca.map(x=>e("option",{value:x,children:Ta[x]}))]})]}),e("p",{children:["Filtered post will be…",e("br",{}),e("label",{class:"ib",children:[e("input",{type:"radio",name:"filter_action",value:"warn",defaultChecked:c==="warn"||!a,disabled:s==="loading"})," ","minimized"]})," ",e("label",{class:"ib",children:[e("input",{type:"radio",name:"filter_action",value:"hide",defaultChecked:c==="hide",disabled:s==="loading"})," ","hidden"]})]})]})]}),e("footer",{class:"filter-form-footer",children:[e("span",{children:[e("button",{type:"submit",disabled:s==="loading",children:a?"Save":"Create"})," ",e($e,{abrupt:!0,hidden:s!=="loading"})]}),a&&e(et,{disabled:s==="loading",align:"end",menuItemClassName:"danger",confirmLabel:"Delete this filter?",onClick:()=>{o("loading"),(async()=>{try{await i.v2.filters.$select(r).remove(),o("default"),n==null||n({state:"success"})}catch{o("error"),alert("Unable to delete filter.")}})()},children:e("button",{type:"button",class:"light danger",onClick:()=>{},disabled:s==="loading",children:"Delete…"})})]})]})})]})}function Us({expiresAt:t,showNeverExpires:n}){const i=!!t,s=i&&new Date(t),o=i&&s<=new Date,[a,h]=mt(d=>d+1,0);return gn(h,o||3e4),o?"Expired":i?e(_,{children:["Expiring ",e(bt,{datetime:s})]}):n&&"Never expires"}function _a(){const{masto:t,instance:n}=Q();He("Followed Hashtags","/fh");const[i,s]=$("default"),[o,a]=$([]);return G(()=>{s("loading"),(async()=>{try{const h=await Kt();a(h),s("default")}catch{s("error")}})()},[]),e("div",{id:"followed-hashtags-page",class:"deck-container",tabIndex:"-1",children:e("div",{class:"timeline-deck deck",children:[e("header",{children:e("div",{class:"header-grid",children:[e("div",{class:"header-side",children:[e(yt,{}),e(oe,{to:"/",class:"button plain",children:e(w,{icon:"home",size:"l"})})]}),e("h1",{children:"Followed Hashtags"}),e("div",{class:"header-side"})]})}),e("main",{children:o.length>0?e(_,{children:[e("ul",{class:"link-list",children:o.map(h=>e("li",{children:e(oe,{to:n?`/${n}/t/${h.name}`:`/t/${h.name}`,children:[e(w,{icon:"hashtag"})," ",e("span",{children:h.name})]})}))}),o.length>1&&e("footer",{class:"ui-state",children:e("small",{class:"insignificant",children:[o.length," hashtag",o.length===1?"":"s"]})})]}):i==="loading"?e("p",{class:"ui-state",children:e($e,{abrupt:!0})}):i==="error"?e("p",{class:"ui-state",children:"Unable to load followed hashtags."}):e("p",{class:"ui-state",children:"No hashtags followed yet."})})]})})}const La=20;function Tn({title:t,path:n,id:i,...s}){He(t||"Following",n||"/following");const{masto:o,streaming:a,instance:h}=Q(),d=Me(T),r=z(),u=z(),f=je("@pixelfed/home-include-reblogs");async function c(l){var k;(l||!r.current)&&(r.current=o.v1.timelines.home.list({limit:La})),f&&((k=r.current)!=null&&k.nextParams)&&(typeof r.current.nextParams=="string"?r.current.nextParams+="&include_reblogs=true":r.current.nextParams.include_reblogs=!0);const b=await r.current.next();let{value:m}=b;if(m!=null&&m.length){let g=!1;l&&(m[0].id!==u.current&&(g=!0),u.current=m[0].id),m.forEach(y=>{qe(y,h)}),m=Wn(m,h),l&&g&&Vo(),Ps(m,h),m.sort((y,C)=>{const v=new Date(y.createdAt);return new Date(C.createdAt)-v})}return{...b,value:m}}async function p(){var l;try{const b={limit:5,since_id:u.current};je("@pixelfed/home-include-reblogs")&&(b.include_reblogs=!0);const m=await o.v1.timelines.home.list(b).next();let{value:k}=m;const g=((l=k[0])==null?void 0:l.id)===u.current;return!!(k!=null&&k.length&&!g&&(u.current=k[0].id,k=Wn(k,h),k=$t(k,"home"),k.some(y=>!y.reblog)))}catch{return!1}}return G(()=>{let l;return(async()=>{if(a){l=a.user.subscribe();for await(const b of l){if(!l)break;if(b.event==="status.update"){const m=b.payload;qe(m,h)}else if(b.event==="delete"){const m=b.payload,k=hs(m,h);k&&(k._deleted=!0)}}}})(),()=>{var b;(b=l==null?void 0:l.unsubscribe)==null||b.call(l),l=null}},[a]),e(dt,{title:t||"Following",id:i||"following",emptyText:"Nothing to see here.",errorText:"Unable to load posts.",instance:h,fetchItems:c,checkForUpdates:p,useItemID:!0,boostsCarousel:d.settings.boostsCarousel,...s,filterContext:"home",showFollowedTags:!0,showReplyParent:!0})}const Ea=20,Ma=4,es=Ma+1;function Fs({media:t,columnMode:n,...i}){let{hashtag:s,...o}=n?{}:gt();i.hashtag&&(s=i.hashtag);let a=s.trim().split(/[\s+]+/);a.sort(),s=a[0];const[h,d]=it(),r=t||!!h.get("media"),u=r?"?media=1":"",{masto:f,instance:c,authenticated:p}=Q({instance:(i==null?void 0:i.instance)||o.instance}),{masto:l,instance:b,authenticated:m}=Q(),k=a.map(A=>`#${A}`).join(" "),g=r?" (Media only)":"",y=c?`${k}${g} on ${c}`:`${k}${g}`;He(y,"/:instance?/t/:hashtag");const C=z(),v=pe(()=>hn(),[]),I=z(void 0);async function x(A){const P=await f.v1.timelines.tag.$select(s).list({limit:Ea,any:a.slice(1),maxId:A?void 0:I.current,onlyMedia:r?!0:void 0}).next();let{value:E}=P;return E!=null&&E.length&&(A&&(C.current=E[0].id),E.forEach(U=>{qe(U,c,{skipThreading:r||v})}),I.current=E[E.length-1].id),{...P,value:E}}async function L(){var A;try{const P=await f.v1.timelines.tag.$select(s).list({limit:1,any:a.slice(1),since_id:C.current,onlyMedia:r}).next();let{value:E}=P;const U=((A=E[0])==null?void 0:A.id)===C.current;return E!=null&&E.length&&!U?(E=$t(E,"public"),!0):!1}catch{return!1}}const[Y,j]=$("default"),[M,ee]=$();G(()=>{(async()=>{try{const A=await f.v1.tags.$select(s).fetch();ee(A)}catch{}})()},[s]);const X=a.length>=es;return e(dt,{title:y,titleComponent:!!c&&e("h1",{class:"header-double-lines",children:[e("b",{children:k}),e("div",{children:c})]}),id:"hashtag",instance:c,emptyText:"No one has posted anything with this tag yet.",errorText:"Unable to load posts with this tag",fetchItems:x,checkForUpdates:L,useItemID:!0,view:r||v?"media":void 0,refresh:r,filterContext:"public",headerEnd:e(Ze,{portal:!0,setDownOverflow:!0,overflow:"auto",position:"anchor",menuButton:e("button",{type:"button",class:"plain",children:e(w,{icon:"more",size:"l"})}),children:[!!M&&a.length===1&&e(_,{children:[e(et,{subMenu:!0,confirm:M.following,confirmLabel:`Unfollow #${s}?`,disabled:Y==="loading"||!p,onClick:()=>{j("loading"),M.following?f.v1.tags.$select(s).unfollow().then(()=>{ee({...M,following:!1}),se(`Unfollowed #${s}`)}).catch(A=>{alert(A)}).finally(()=>{j("default")}):f.v1.tags.$select(s).follow().then(()=>{ee({...M,following:!0}),se(`Followed #${s}`)}).catch(A=>{alert(A)}).finally(()=>{j("default")})},children:M.following?e(_,{children:[e(w,{icon:"check-circle"})," ",e("span",{children:"Following…"})]}):e(_,{children:[e(w,{icon:"plus"})," ",e("span",{children:"Follow"})]})}),e(ze,{})]}),!v&&e(_,{children:[e(gs,{className:"plain",children:"Filters"}),e(de,{type:"checkbox",checked:!!r,onClick:()=>{r?h.delete("media"):h.set("media","1"),d(h)},children:[e(w,{icon:"check-circle"})," ",e("span",{class:"menu-grow",children:"Media only"})]}),e(ze,{})]}),e(di,{className:"menu-field",disabled:X,children:({ref:A})=>e("form",{onSubmit:P=>{var U,V;P.preventDefault();const E=(V=(U=P.target[0].value)==null?void 0:U.trim)==null?void 0:V.call(U);E&&!a.some(ye=>ye.toLowerCase()===E.toLowerCase())&&(a.push(E),a.sort(),location.hash=c?`/${c}/t/${a.join("+")}`:`/t/${a.join("+")}${u}`)},children:[e(w,{icon:"hashtag"}),e("input",{ref:A,type:"text",placeholder:X?`Max ${es} tags`:"Add hashtag",required:!0,autocorrect:"off",autocapitalize:"off",spellCheck:!1,pattern:"[^#][^\\s#]+[^#]",disabled:X})]})}),e(ui,{takeOverflow:!0,children:a.map((A,P)=>e(de,{disabled:a.length===1,onClick:E=>{a.splice(P,1),a.sort(),location.hash=c?`/${c}/t/${a.join("+")}${u}`:`/t/${a.join("+")}${u}`},children:[e(w,{icon:"x",alt:"Remove hashtag",class:"danger-icon"}),e("span",{children:[e("span",{class:"more-insignificant",children:"#"}),A]})]},A))}),e(ze,{}),e(de,{disabled:!m,onClick:()=>{if(T.shortcuts.length>=at){alert(`Max ${at} shortcuts reached. Unable to add shortcut.`);return}const A={type:"hashtag",hashtag:a.join(" "),instance:c,media:r?"on":void 0};T.shortcuts.some(E=>E.type===A.type&&E.hashtag.split(/[\s+]+/).sort().join(" ")===A.hashtag.split(/[\s+]+/).sort().join(" ")&&(E.instance?E.instance===A.instance:!0)&&(E.media?!!E.media==!!A.media:!0))?alert("This shortcut already exists"):(T.shortcuts.push(A),se("Hashtag shortcut added"))},children:[e(w,{icon:"shortcut"})," ",e("span",{children:"Add to Shorcuts"})]}),e(de,{onClick:()=>{let A=prompt('Enter a new instance e.g. "mastodon.social"');if(!/\./.test(A)){A&&alert("Invalid instance");return}A&&(A=A.toLowerCase().trim(),location.hash=`/${A}/t/${a.join("+")}${u}`)},children:[e(w,{icon:"bus"})," ",e("span",{children:"Go to another instance…"})]}),b!==c&&e(de,{onClick:()=>{location.hash=`/${b}/t/${a.join("+")}${u}`},children:[e(w,{icon:"bus"})," ",e("small",{class:"menu-double-lines",children:["Go to my instance (",e("b",{children:b}),")"]})]})]})},c+k)}const Pa=20;function Os(t){var g;const n=Me(T),{masto:i,instance:s}=Q(),o=(t==null?void 0:t.id)||((g=gt())==null?void 0:g.id),a=z(),h=z();async function d(y){(y||!h.current)&&(h.current=i.v1.timelines.list.$select(o).list({limit:Pa}));const C=await h.current.next();let{value:v}=C;return v!=null&&v.length&&(y&&(a.current=v[0].id),v.forEach(I=>{qe(I,s)})),{...C,value:v}}async function r(){var y;try{const C=await i.v1.timelines.list.$select(o).list({limit:1,since_id:a.current});let{value:v}=C;const I=((y=v[0])==null?void 0:y.id)===a.current;return v!=null&&v.length&&!I?(v=$t(v,"home"),!0):!1}catch{return!1}}const[u,f]=$([]);G(()=>{Pt().then(f)},[]);const[c,p]=$({title:"List"});He(c.title,"/l/:id"),G(()=>{(async()=>{try{const y=await As(o);p(y)}catch{}})()},[o]);const[l,b]=$(!1),[m,k]=$(!1);return e(_,{children:[e(dt,{title:c.title,id:"list",emptyText:"Nothing yet.",errorText:"Unable to load posts.",instance:s,fetchItems:d,checkForUpdates:r,useItemID:!0,boostsCarousel:n.settings.boostsCarousel,filterContext:"home",showReplyParent:!0,headerStart:e(Ze,{overflow:"auto",menuButton:e("button",{type:"button",class:"plain",children:[e(w,{icon:"list",size:"l",alt:"Lists"}),e(w,{icon:"chevron-down",size:"s"})]}),children:[e(Re,{to:"/l",children:e("span",{children:"All Lists"})}),(u==null?void 0:u.length)>0&&e(_,{children:[e(ze,{}),u.map(y=>e(Re,{to:`/l/${y.id}`,children:e("span",{children:y.title})},y.id))]})]}),headerEnd:e(Ze,{portal:!0,setDownOverflow:!0,overflow:"auto",viewScroll:"close",position:"anchor",menuButton:e("button",{type:"button",class:"plain",children:e(w,{icon:"more",size:"l"})}),children:[e(de,{onClick:()=>b({list:c}),children:[e(w,{icon:"pencil",size:"l"}),e("span",{children:"Edit"})]}),e(de,{onClick:()=>k(!0),children:[e(w,{icon:"group",size:"l"}),e("span",{children:"Manage members"})]})]})},o),l&&e(Ae,{onClick:y=>{y.target===y.currentTarget&&b(!1)},children:e(kn,{list:l==null?void 0:l.list,onClose:y=>{y.state==="success"&&y.list?p(y.list):y.state==="deleted"&&(location.hash="/l"),b(!1)}})}),m&&e(Ae,{onClick:y=>{y.target===y.currentTarget&&k(!1)},children:e(Na,{listID:o,onClose:()=>k(!1)})})]})}const Da=40;function Na({listID:t,onClose:n}){const{masto:i,instance:s}=Q(),[o,a]=$([]),[h,d]=$("default"),[r,u]=$(!1),f=z();async function c(p){u(!1),d("loading"),(async()=>{try{(p||!f.current)&&(f.current=i.v1.lists.$select(t).accounts.list({limit:Da}));const l=await f.current.next();let{done:b,value:m}=l;m!=null&&m.length?(a(p?m:o.concat(m)),u(!b)):u(!1),d("default")}catch{d("error")}})()}return G(()=>{c(!0)},[]),e("div",{class:"sheet",id:"list-manage-members-container",children:[!!n&&e("button",{type:"button",class:"sheet-close",onClick:n,children:e(w,{icon:"x"})}),e("header",{children:e("h2",{children:"Manage members"})}),e("main",{children:e("ul",{children:[o.map(p=>e("li",{children:[e(Xe,{account:p,instance:s}),e(Ua,{account:p,listID:t})]},p.id)),r&&h==="default"&&e(rt,{as:"li",onChange:p=>p&&c(),children:e("button",{type:"button",class:"light block",onClick:c,children:"Show more…"})})]})})]})}function Ua({account:t,listID:n}){const{masto:i}=Q(),[s,o]=$("default"),[a,h]=$(!1);return e(et,{confirm:!a,confirmLabel:e("span",{children:["Remove @",t.username," from list?"]}),align:"end",menuItemClassName:"danger",onClick:()=>{a?(o("loading"),(async()=>{try{await i.v1.lists.$select(n).accounts.create({accountIds:[t.id]}),o("default"),h(!1)}catch{o("error")}})()):(o("loading"),(async()=>{try{await i.v1.lists.$select(n).accounts.remove({accountIds:[t.id]}),o("default"),h(!0)}catch{o("error")}})())},children:e("button",{type:"button",class:`light ${a?"":"danger"}`,disabled:s==="loading",children:a?"Add":"Remove…"})})}const Fa={mention:["account","status"],status:["account","status"],reblog:["account","status"],follow:["account"],follow_request:["account"],favourite:["account","status"],poll:["status"],update:["status"]};function zs(t){return t.filter(n=>{const{type:i,id:s,createdAt:o}=n;if(!i)return!1;const a=Fa[i];return a!=null&&a.length?a.every(h=>!!n[h]):!0})}function Bs(t){t=zs(t);const n={},i=[];for(let a=0,h=0;ay.id===f.id);g?(g._types.push(c),g._types.sort().reverse(),k.id+=`-${r}`):(f._types=[c],k._accounts.push(f),k.id+=`-${r}`)}else{f&&(f._types=[c]);let g=n[m]={...d,type:b,_accounts:f?[f]:[]};i[h++]=g}}const s={},o=[];for(let a=0,h=0;a{qe(v,s)})),{...y,value:C==null?void 0:C.map(v=>v.status)}}const c=z(),p=z();async function l(g){(g||!c.current)&&(c.current=i.v1.conversations.list({limit:ts}));const y=await c.current.next();let{value:C}=y;return C=C==null?void 0:C.filter(v=>v.lastStatus),C!=null&&C.length&&(g&&(p.current=C[0].lastStatus.id),C.forEach(({lastStatus:v})=>{qe(v,s)})),{...y,value:C==null?void 0:C.map(v=>v.lastStatus)}}function b(...g){return d==="private"?l(...g):f(...g)}async function m(){var g;if(d==="private")try{const y=await i.v1.conversations.list({limit:1,since_id:p.current}).next();let{value:C}=y;const v=((g=C[0])==null?void 0:g.id)===p.current;return C!=null&&C.length&&!v?(p.current=C[0].lastStatus.id,!0):!1}catch{return!1}else try{const y=await i.v1.notifications.list({limit:1,types:["mention"],since_id:u.current}).next();let{value:C}=y;return C!=null&&C.length?(u.current=C[0].id,!0):!1}catch{return!1}}const k=pe(()=>e("div",{class:"filter-bar centered",children:[e(oe,{to:"/mentions",class:d?"":"is-active",onClick:g=>{t&&(g.preventDefault(),h(null))},children:"All"}),e(oe,{to:"/mentions?type=private",class:d==="private"?"is-active":"",onClick:g=>{t&&(g.preventDefault(),h("private"))},children:"Private"})]}),[d]);return e(dt,{title:"Mentions",id:"mentions",emptyText:"No one mentioned you :(",errorText:"Unable to load mentions.",instance:s,fetchItems:b,checkForUpdates:m,useItemID:!0,timelineStart:k,refresh:d})}const za=80,Ba=new URLSearchParams,Ot={block:"center",inline:"center",behavior:"smooth"};function qa({columnMode:t}){var re;He("Notifications","/notifications");const{masto:n,instance:i}=Q(),s=Me(T),[o,a]=$("default"),[h]=t?[Ba]:it(),d=h.get("id"),r=h.get("access_token"),[u,f]=$(!1),[c,p]=$(!1),l=z(),{nearReachEnd:b,scrollDirection:m,reachStart:k,nearReachStart:g}=Go({scrollableRef:l}),y=m==="end"&&!g,[C,v]=$([]),[I,x]=$([]),L=z();async function Y(D){var q;if((D||!L.current)&&(L.current=n.v1.notifications.list({limit:za,excludeTypes:["follow_request"]})),/max_id=($|&)/i.test((q=L.current)==null?void 0:q.nextParams))return{done:!0};const W=await L.current.next(),R=W.value;if(R!=null&&R.length){R.forEach(ce=>{qe(ce.status,i,{skipThreading:!0})});const Z=Bs(R);D?(T.notificationsLast=R[0],T.notifications=Z,n.v1.markers.create({notifications:{lastReadId:R[0].id}}).catch(()=>{})):T.notifications.push(...Z)}return T.notificationsShowNew=!1,T.notificationsLastFetchTime=Date.now(),W}async function j(){try{return await n.v1.followRequests.list({limit:80})}catch{return[]}}const M=()=>{a("loading"),(async()=>{try{const D=await j();v(D),a("default")}catch{a("error")}})()};async function ee(){try{return await n.v1.announcements.list()}catch{return[]}}const X=je("@mastodon/filtered-notifications"),[A,P]=$(!1),[E,U]=$({});function V(){return n.v1.notifications.policy.fetch().catch(()=>{})}function ye(){V().then(D=>{U(D)}).catch(()=>{})}const[ve,fe]=$(null);function ne(){return n.v1.notifications.requests.list()}const me=D=>{he(!1),a("loading"),(async()=>{try{const W=Y(D);D&&(ee().then(q=>{q.sort((Z,ce)=>{const De=new Date(Z.updatedAt||Z.createdAt);return new Date(ce.updatedAt||ce.createdAt)-De}),x(q)}).catch(()=>{}),j().then(q=>{v(q)}).catch(()=>{}),X&&ye());const{done:R}=await W;f(!R),a("default")}catch{a("error")}})()};G(()=>{me(!0)},[]),G(()=>{k&&me(!0)},[k]);const[ue,he]=$(!1),ke=Qe(({disableIdleCheck:D=!1}={})=>{var W;o!=="loading"&&s.settings.autoRefresh&&((W=l.current)==null?void 0:W.scrollTop)<16&&(D||window.__IDLE__)&&!Ha()&&me(!0)},[s.notificationsShowNew,s.settings.autoRefresh,o]),Le=z();Ct(D=>{if(D){const W=Date.now()-Le.current;!Le.current||W>1e3*3?ke({disableIdleCheck:!0}):Le.current=Date.now()}});const Te=z(!0);G(()=>{let D=hi(T,"notificationsShowNew",W=>{if(Te.current){Te.current=!1;return}o!=="loading"&&(W&&ke(),he(W))});return()=>D==null?void 0:D()},[]);const Pe=new Date,Fe=new Date(Pe-24*60*60*1e3);let xe=new Date;const J=!s.notifications.some(D=>new Date(D.createdAt).toDateString()===Pe.toDateString()),ae=z();G(()=>{d&&(T.routeNotification={id:d,accessToken:atob(r)})},[d,r]);const te=".notification",Se=_e("j",()=>{const D=document.activeElement.closest(te),W=D==null?void 0:D.getBoundingClientRect(),R=Array.from(l.current.querySelectorAll(te));if(D&&W.top0){const q=R.indexOf(D);let Z=R[q+1];Z&&(Z.focus(),Z.scrollIntoView(Ot))}else{const q=R.find(Z=>{const ce=Z.getBoundingClientRect();return ce.top>=44&&ce.left>=0});q&&(q.focus(),q.scrollIntoView(Ot))}}),Ie=_e("k",()=>{const D=document.activeElement.closest(te),W=D==null?void 0:D.getBoundingClientRect(),R=Array.from(l.current.querySelectorAll(te));if(D&&W.top0){const q=R.indexOf(D);let Z=R[q-1];Z&&(Z.focus(),Z.scrollIntoView(Ot))}else{const q=R.find(Z=>{const ce=Z.getBoundingClientRect();return ce.top>=44&&ce.left>=0});q&&(q.focus(),q.scrollIntoView(Ot))}}),F=_e(["enter","o"],()=>{const D=document.activeElement.closest(te),W=D==null?void 0:D.querySelector(".status-link");W&&W.click()});return e("div",{id:"notifications-page",class:"deck-container",ref:D=>{l.current=D,Se.current=D,Ie.current=D,F.current=D},tabIndex:"-1",children:[e("div",{class:`timeline-deck deck ${c?"only-mentions":""}`,children:[e("header",{hidden:y,onClick:D=>{var W;D.target.closest("a, button")||(W=l.current)==null||W.scrollTo({top:0,behavior:"smooth"})},onDblClick:D=>{D.target.closest("a, button")||me(!0)},class:o==="loading"?"loading":"",children:[e("div",{class:"header-grid",children:[e("div",{class:"header-side",children:[e(yt,{}),e(oe,{to:"/",class:"button plain",children:e(w,{icon:"home",size:"l",alt:"Home"})})]}),e("h1",{children:"Notifications"}),e("div",{class:"header-side",children:X&&e("button",{type:"button",class:"button plain4",onClick:()=>{P(!0)},children:e(w,{icon:"settings",size:"l",alt:"Notifications settings"})})})]}),ue&&o!=="loading"&&e("button",{class:"updates-button shiny-pill",type:"button",onClick:()=>{var D;me(!0),(D=l.current)==null||D.scrollTo({top:0,behavior:"smooth"})},children:[e(w,{icon:"arrow-up"})," New notifications"]})]}),I.length>0&&e("div",{class:"shazam-container",children:e("div",{class:"shazam-container-inner",children:e("details",{class:"announcements",children:[e("summary",{children:[e("span",{children:[e(w,{icon:"announce",class:"announcement-icon",size:"l"})," ",e("b",{children:["Announcement",I.length>1?"s":""]})," ",e("small",{class:"insignificant",children:i})]}),I.length>1&&e("span",{class:"announcements-nav-buttons",children:I.map((D,W)=>e("button",{type:"button",class:"plain2 small",onClick:()=>{var R;(R=ae.current)==null||R.children[W].scrollIntoView({behavior:"smooth",block:"nearest"})},children:W+1}))})]}),e("ul",{class:`announcements-list-${I.length>1?"multiple":"single"}`,ref:ae,children:I.map(D=>e("li",{children:e(Va,{announcement:D})}))})]})})}),C.length>0&&e("div",{class:"follow-requests",children:[e("h2",{class:"timeline-header",children:"Follow requests"}),C.length>5?e("details",{children:[e("summary",{children:[C.length," follow requests"]}),e("ul",{children:C.map(D=>e("li",{children:[e(Xe,{account:D}),e(rn,{accountID:D.id,onChange:()=>{}})]},D.id))})]}):e("ul",{children:C.map(D=>e("li",{children:[e(Xe,{account:D}),e(rn,{accountID:D.id,onChange:()=>{}})]},D.id))})]}),X&&((re=E==null?void 0:E.summary)==null?void 0:re.pendingRequestsCount)>0&&e("div",{class:"shazam-container",children:e("div",{class:"shazam-container-inner",children:e("div",{class:"filtered-notifications",children:e("details",{onToggle:async D=>{const{open:W}=D.target;if(W){const R=await ne();fe(R)}},children:[e("summary",{children:["Filtered notifications from"," ",E.summary.pendingRequestsCount," people"]}),ve?(ve==null?void 0:ve.length)>0&&e("ul",{children:ve.map(D=>{var W,R;return e("li",{children:[e("div",{class:"request-notifcations",children:[!((W=D.lastStatus)!=null&&W.id)&&e(Xe,{useAvatarStatic:!0,showStats:!0,account:D.account}),((R=D.lastStatus)==null?void 0:R.id)&&e("div",{class:"last-post",children:e(oe,{class:"status-link",to:`/${i}/s/${D.lastStatus.id}`,children:e(Be,{status:D.lastStatus,size:"s",readOnly:!0})})}),e(Ya,{request:D})]}),e(ja,{request:D,onChange:()=>{me(!0)}})]},D.id)})}):e("p",{class:"ui-state",children:e($e,{abrupt:!0})})]})})})}),e("div",{id:"mentions-option",children:e("label",{children:[e("input",{type:"checkbox",checked:c,onChange:D=>{p(D.target.checked)}})," ","Only mentions"]})}),e("h2",{class:"timeline-header",children:"Today"}),J&&e("p",{class:"ui-state insignificant",children:o==="default"?"You're all caught up.":e(_,{children:"…"})}),s.notifications.length?e(_,{children:s.notifications.filter(D=>D.type!=="follow_request").map(D=>{if(c&&D.type!=="mention")return null;const W=new Date(D.createdAt),R=W.toDateString()!==xe.toDateString();R&&(xe=W);const q=W.toDateString()===Fe.toDateString()?"Yesterday":ot(xe,{hideTime:!0});return e(_,{children:[R&&e("h2",{class:"timeline-header",children:q}),e(Xt,{instance:i,notification:D},D.id)]},D.id)})}):e(_,{children:[o==="loading"&&e(_,{children:e("ul",{class:"timeline flat",children:Array.from({length:5}).map((D,W)=>e("li",{class:"notification skeleton",children:[e("div",{class:"notification-type",children:e(w,{icon:"notification",size:"xl"})}),e("div",{class:"notification-content",children:e("p",{children:"███████████ ████"})})]}))})}),o==="error"&&e("p",{class:"ui-state",children:["Unable to load notifications",e("br",{}),e("br",{}),e("button",{type:"button",onClick:()=>me(!0),children:"Try again"})]})]}),u&&e(rt,{onChange:D=>{D&&me()},children:e("button",{type:"button",class:"plain block",disabled:o==="loading",onClick:()=>me(),style:{marginBlockEnd:"6em"},children:o==="loading"?e($e,{abrupt:!0}):e(_,{children:"Show more…"})})})]}),X&&A&&e(Ae,{onClick:D=>{D.target===D.currentTarget&&P(!1)},children:e("div",{class:"sheet",id:"notifications-settings",tabIndex:"-1",children:[e("button",{type:"button",class:"sheet-close",onClick:()=>P(!1),children:e(w,{icon:"x"})}),e("header",{children:e("h2",{children:"Notifications settings"})}),e("main",{children:e("form",{onSubmit:D=>{D.preventDefault();const{filterNotFollowing:W,filterNotFollowers:R,filterNewAccounts:q,filterPrivateMentions:Z}=D.target,ce={filterNotFollowing:W.checked,filterNotFollowers:R.checked,filterNewAccounts:q.checked,filterPrivateMentions:Z.checked};U({...E,...ce}),P(!1),(async()=>{try{await n.v1.notifications.policy.update(ce),se("Notifications settings updated")}catch{}})()},children:[e("p",{children:"Filter out notifications from people:"}),e("p",{children:e("label",{children:[e("input",{type:"checkbox",switch:!0,defaultChecked:E.filterNotFollowing,name:"filterNotFollowing"})," ","You don't follow"]})}),e("p",{children:e("label",{children:[e("input",{type:"checkbox",switch:!0,defaultChecked:E.filterNotFollowers,name:"filterNotFollowers"})," ","Who don't follow you"]})}),e("p",{children:e("label",{children:[e("input",{type:"checkbox",switch:!0,defaultChecked:E.filterNewAccounts,name:"filterNewAccounts"})," ","With a new account"]})}),e("p",{children:e("label",{children:[e("input",{type:"checkbox",switch:!0,defaultChecked:E.filterPrivateMentions,name:"filterPrivateMentions"})," ","Who unsolicitedly private mention you"]})}),e("p",{children:e("button",{type:"submit",children:"Save"})})]})})]})})]})}function Ha(){return!!document.querySelector(".deck-backdrop, #modal-container > *")}function Va({announcement:t}){const{instance:n}=Q(),{contact:i}=us(),s=i==null?void 0:i.account,{id:o,content:a,startsAt:h,endsAt:d,published:r,allDay:u,publishedAt:f,updatedAt:c,read:p,mentions:l,statuses:b,tags:m,emojis:k,reactions:g}=t,y=new Date(f),C=ot(y),v=new Date(c),I=ot(v);return e("div",{class:"announcement-block",children:[e(Xe,{account:s}),e("div",{class:"announcement-content",onClick:ws({mentions:l,instance:n}),dangerouslySetInnerHTML:{__html:on(a,{emojis:k})}}),e("p",{class:"insignificant",children:[e("time",{datetime:y.toISOString(),children:ot(y)}),c&&I!==C&&e(_,{children:[" ","•"," ",e("span",{class:"ib",children:["Updated"," ",e("time",{datetime:v.toISOString(),children:ot(v)})]})]})]}),e("div",{class:"announcement-reactions",hidden:!0,children:g.map(x=>{const{name:L,count:Y,me:j,staticUrl:M,url:ee}=x;return e("button",{type:"button",class:`plain4 small ${j?"reacted":""}`,children:[ee||M?e("img",{src:ee||M,alt:L,width:"16",height:"16"}):e("span",{children:L})," ",e("span",{class:"count",children:Ge(Y)})]})})})]})}function Ga(t){const{masto:n}=Q();return n.v1.notifications.list({accountID:t})}function Ya({request:t}){var c;const{instance:n}=Q(),[i,s]=$("loading"),{account:o,lastStatus:a}=t,[h,d]=$(!1),[r,u]=$([]);function f(){d(!1)}return G(()=>{var p;(p=t==null?void 0:t.account)!=null&&p.id&&h&&(s("loading"),(async()=>{const l=await Ga(t.account.id);u(l||[]),s("default")})())},[h,(c=t==null?void 0:t.account)==null?void 0:c.id]),e(_,{children:[e("button",{type:"button",class:"plain4 request-notifications-account",onClick:()=>{d(!0)},children:[e(w,{icon:"notification",class:"more-insignificant"})," ",e("small",{children:["View notifications from @",o.username]})," ",e(w,{icon:"chevron-down"})]}),h&&e(Ae,{onClick:p=>{p.target===p.currentTarget&&f()},children:e("div",{class:"sheet",tabIndex:"-1",children:[e("button",{type:"button",class:"sheet-close",onClick:f,children:e(w,{icon:"x"})}),e("header",{children:e("b",{children:["Notifications from @",o.username]})}),e("main",{children:i==="loading"?e("p",{class:"ui-state",children:e($e,{abrupt:!0})}):r.map(p=>e("div",{class:"notification-peek",onClick:l=>{const{target:b}=l;(l.target.tagName==="BUTTON"||l.target.tagName==="A")&&f()},children:e(Xt,{instance:n,notification:p,isStatic:!0})}))})]})})]})}function ja({request:t,onChange:n}){const{masto:i}=Q(),[s,o]=$("default"),[a,h]=$(null),d=a!==null;return e("p",{class:"notification-request-buttons",children:[e("button",{type:"button",disabled:s==="loading"||d,onClick:()=>{o("loading"),(async()=>{try{await i.v1.notifications.requests.$select(t.id).accept(),h("accept"),o("default"),n({request:t,state:"accept"}),se(`Notifications from @${t.account.username} will not be filtered from now on.`)}catch{o("error"),se("Unable to accept notification request")}})()},children:"Allow"})," ",e("button",{type:"button",disabled:s==="loading"||d,class:"light danger",onClick:()=>{o("loading"),(async()=>{try{await i.v1.notifications.requests.$select(t.id).dismiss(),h("dismiss"),o("default"),n({request:t,state:"dismiss"}),se(`Notifications from @${t.account.username} will not show up in Filtered notifications from now on.`)}catch{o("error"),se("Unable to dismiss notification request")}})()},children:"Dismiss"}),e("span",{class:"notification-request-states",children:s==="loading"?e($e,{abrupt:!0}):a==="accept"?e(w,{icon:"check-circle",alt:"Accepted",class:"notification-accepted"}):a==="dismiss"&&e(w,{icon:"x-circle",alt:"Dismissed",class:"notification-dismissed"})})]})}const Hs=Je(qa),Wa=20;function ln({local:t,columnMode:n,...i}){const s=Me(T),o=!!t,a=n?{}:gt(),{masto:h,instance:d}=Q({instance:(i==null?void 0:i.instance)||a.instance}),{masto:r,instance:u}=Q(),f=`${o?"Local":"Federated"} timeline (${d})`;He(f,o?"/:instance?/p/l":"/:instance?/p");const c=z(),p=z();async function l(m){(m||!p.current)&&(p.current=h.v1.timelines.public.list({limit:Wa,local:o,remote:!o}));const k=await p.current.next();let{value:g}=k;return g!=null&&g.length&&(m&&(c.current=g[0].id),g.forEach(y=>{qe(y,d)})),{...k,value:g}}async function b(){var m;try{const k=await h.v1.timelines.public.list({limit:1,local:o,since_id:c.current}).next();let{value:g}=k;const y=((m=g[0])==null?void 0:m.id)===c.current;return g!=null&&g.length&&!y?(g=$t(g,"public"),!0):!1}catch{return!1}}return e(dt,{title:f,titleComponent:e("h1",{class:"header-double-lines",children:[e("b",{children:o?"Local timeline":"Federated timeline"}),e("div",{children:d})]}),id:"public",instance:d,emptyText:"No one has posted anything yet.",errorText:"Unable to load posts",fetchItems:l,checkForUpdates:b,useItemID:!0,headerStart:e(_,{}),boostsCarousel:s.settings.boostsCarousel,filterContext:"public",headerEnd:e(Ze,{portal:!0,overflow:"auto",viewScroll:"close",position:"anchor",menuButton:e("button",{type:"button",class:"plain",children:e(w,{icon:"more",size:"l"})}),children:[e(de,{href:o?`/#/${d}/p`:`/#/${d}/p/l`,children:o?e(_,{children:[e(w,{icon:"transfer"})," ",e("span",{children:"Switch to Federated"})]}):e(_,{children:[e(w,{icon:"transfer"})," ",e("span",{children:"Switch to Local"})]})}),e(ze,{}),e(de,{onClick:()=>{let m=prompt('Enter a new instance e.g. "mastodon.social"');if(!/\./.test(m)){m&&alert("Invalid instance");return}m&&(m=m.toLowerCase().trim(),location.hash=o?`/${m}/p/l`:`/${m}/p`)},children:[e(w,{icon:"bus"})," ",e("span",{children:"Go to another instance…"})]}),u!==d&&e(de,{onClick:()=>{location.hash=o?`/${u}/p/l`:`/${u}/p`},children:[e(w,{icon:"bus"})," ",e("small",{class:"menu-double-lines",children:["Go to my instance (",e("b",{children:u}),")"]})]})]})},d+o)}const zt=5,sn=40,Ka=new URLSearchParams;function Vs({columnMode:t,...n}){const i=t?{}:gt(),{masto:s,instance:o,authenticated:a}=Q({instance:i.instance}),[h,d]=$("default"),[r]=t?[Ka]:it(),u=z(),f=(n==null?void 0:n.query)||r.get("q"),c=t?"statuses":(n==null?void 0:n.type)||r.get("type");He(f?`Search: ${f}${c?` (${{statuses:"Posts",accounts:"Accounts",hashtags:"Hashtags"}[c]})`:""}`:"Search","/search");const[p,l]=$(!1),b=z(0);G(()=>{b.current=0},[f,c]);const m=z();lt(()=>{var A,P;(P=(A=m.current)==null?void 0:A.scrollTo)==null||P.call(A,0,0)},[f,c]);const[k,g]=$([]),[y,C]=$([]),[v,I]=$([]);G(()=>{g([]),C([]),I([])},[f]);const x={statuses:g,accounts:C,hashtags:I},[L,Y]=$({}),j=async A=>{if(!(A!=null&&A.length))return;const P=await bn(A,L);P&&Y({...L,...P})};function M(A){A&&(b.current=0),!(!A&&!a)&&(d("loading"),A&&!c&&(g(k.slice(0,zt)),C(y.slice(0,zt)),I(v.slice(0,zt))),(async()=>{var E,U;const P={q:f,resolve:a,limit:zt};c&&(P.limit=sn,P.type=c,a&&(P.offset=b.current));try{const V=await s.v2.search.fetch(P);if(c)if(A){x[c](V[c]);const ye=(E=V[c])==null?void 0:E.length;b.current=sn,l(!!ye)}else{x[c](ve=>[...ve,...V[c]]);const ye=(U=V[c])==null?void 0:U.length;b.current=b.current+sn,l(!!ye)}else g(V.statuses||[]),C(V.accounts||[]),I(V.hashtags||[]),b.current=0,l(!1);j(V.accounts),d("default")}catch{d("error")}})())}const ee=z();Ct(A=>{var E;const P=((E=m.current)==null?void 0:E.scrollTop)===0;if(A&&P){const U=Date.now()-ee.current;!ee.current||U>1e3*3?M(!0):ee.current=Date.now()}}),G(()=>{var A,P,E,U;(P=(A=u.current)==null?void 0:A.setValue)==null||P.call(A,f||""),f?M(!0):(U=(E=u.current)==null?void 0:E.focus)==null||U.call(E)},[f,c,o]),_e(["/","Slash"],A=>{var P,E,U,V;(E=(P=u.current)==null?void 0:P.focus)==null||E.call(P),(V=(U=u.current)==null?void 0:U.select)==null||V.call(U)},{preventDefault:!0});const[X]=pn();return e("div",{id:"search-page",class:"deck-container",ref:m,children:e("div",{class:"timeline-deck deck",children:[e("header",{class:h==="loading"?"loading":"",children:e("div",{class:"header-grid",children:[e("div",{class:"header-side",children:e(yt,{})}),e(Ms,{ref:u}),e("div",{class:"header-side",children:e("button",{type:"button",class:"plain",onClick:()=>{M(!0)},disabled:h==="loading",children:e(w,{icon:"search",size:"l"})})})]})}),e("main",{children:[!!f&&!t&&e("div",{ref:X,class:`filter-bar ${h==="loading"?"loading":""}`,children:[!!c&&e(oe,{to:`/search${f?`?q=${encodeURIComponent(f)}`:""}`,children:"‹ All"}),[{label:"Accounts",type:"accounts",to:`/search?q=${encodeURIComponent(f)}&type=accounts`},{label:"Hashtags",type:"hashtags",to:`/search?q=${encodeURIComponent(f)}&type=hashtags`},{label:"Posts",type:"statuses",to:`/search?q=${encodeURIComponent(f)}&type=statuses`}].sort((A,P)=>A.type===c?-1:P.type===c?1:0).map(A=>e(oe,{to:A.to,children:A.label},A.type))]}),f?e(_,{children:[(!c||c==="accounts")&&e(_,{children:[c!=="accounts"&&e("h2",{class:"timeline-header",children:["Accounts"," ",e(oe,{to:`/search?q=${encodeURIComponent(f)}&type=accounts`,children:e(w,{icon:"arrow-right",size:"l"})})]}),y.length>0?e(_,{children:[e("ul",{class:"timeline flat accounts-list",children:y.map(A=>e("li",{children:e(Xe,{account:A,instance:o,showStats:!0,relationship:L[A.id]})},A.id))}),c!=="accounts"&&e("div",{class:"ui-state",children:e(oe,{class:"plain button",to:`/search?q=${encodeURIComponent(f)}&type=accounts`,children:["See more accounts ",e(w,{icon:"arrow-right"})]})})]}):!c&&(h==="loading"?e("p",{class:"ui-state",children:e($e,{abrupt:!0})}):e("p",{class:"ui-state",children:"No accounts found."}))]}),(!c||c==="hashtags")&&e(_,{children:[c!=="hashtags"&&e("h2",{class:"timeline-header",children:["Hashtags"," ",e(oe,{to:`/search?q=${encodeURIComponent(f)}&type=hashtags`,children:e(w,{icon:"arrow-right",size:"l"})})]}),v.length>0?e(_,{children:[e("ul",{class:"link-list hashtag-list",children:v.map(A=>{var V;const{name:P,history:E}=A,U=(V=E==null?void 0:E.reduce)==null?void 0:V.call(E,(ye,ve)=>ye+ +ve.uses,0);return e("li",{children:e(oe,{to:o?`/${o}/t/${P}`:`/t/${P}`,children:[e(w,{icon:"hashtag"}),e("span",{children:P}),!!U&&e("span",{class:"count",children:Ge(U)})]})},`${P}-${U}`)})}),c!=="hashtags"&&e("div",{class:"ui-state",children:e(oe,{class:"plain button",to:`/search?q=${encodeURIComponent(f)}&type=hashtags`,children:["See more hashtags ",e(w,{icon:"arrow-right"})]})})]}):!c&&(h==="loading"?e("p",{class:"ui-state",children:e($e,{abrupt:!0})}):e("p",{class:"ui-state",children:"No hashtags found."}))]}),(!c||c==="statuses")&&e(_,{children:[c!=="statuses"&&e("h2",{class:"timeline-header",children:["Posts"," ",e(oe,{to:`/search?q=${encodeURIComponent(f)}&type=statuses`,children:e(w,{icon:"arrow-right",size:"l"})})]}),k.length>0?e(_,{children:[e("ul",{class:"timeline",children:k.map(A=>e("li",{children:e(oe,{class:"status-link",to:o?`/${o}/s/${A.id}`:`/s/${A.id}`,children:e(Be,{status:A})})},A.id))}),c!=="statuses"&&e("div",{class:"ui-state",children:e(oe,{class:"plain button",to:`/search?q=${encodeURIComponent(f)}&type=statuses`,children:["See more posts ",e(w,{icon:"arrow-right"})]})})]}):!c&&(h==="loading"?e("p",{class:"ui-state",children:e($e,{abrupt:!0})}):e("p",{class:"ui-state",children:"No posts found."}))]}),!!c&&(h==="default"?p?e(rt,{onChange:A=>{A&&M()},children:e("button",{type:"button",class:"plain block",onClick:()=>M(),style:{marginBlockEnd:"6em"},children:"Show more…"})}):e("p",{class:"ui-state insignificant",children:"The end."}):h==="loading"&&e("p",{class:"ui-state",children:e($e,{abrupt:!0})}))]}):h==="loading"?e("p",{class:"ui-state",children:e($e,{abrupt:!0})}):e("p",{class:"ui-state",children:"Enter your search term or paste a URL above to get started."})]})]})})}const Za=20,Ja=ht(t=>t.v1.trends.links.list().next(),{maxAge:10*60*1e3});function Xa(t){return je("@pixelfed/trending")?t.pixelfed.v2.discover.posts.trending.list({range:"daily"}):t.v1.trends.statuses.list({limit:Za})}function Gs({columnMode:t,...n}){const i=Me(T),s=t?{}:gt(),{masto:o,instance:a}=Q({instance:(n==null?void 0:n.instance)||s.instance}),{masto:h,instance:d}=Q(),r=`Trending (${a})`;He(r,"/:instance?/trending");const u=z(),[f,c]=$([]),[p,l]=$([]),b=z();async function m(y){var I;if(y||!b.current){if(b.current=Xa(o),je("@mastodon/trending-hashtags"))try{const x=o.v1.trends.tags.list(),{value:L}=await x.next();L!=null&&L.length&&c(L)}catch{}if(je("@mastodon/trending-links"))try{const{value:x}=await Ja(o,a),L=(I=x==null?void 0:x.filter)==null?void 0:I.call(x,Y=>Y.type==="link");L!=null&&L.length&&l(L)}catch{}}const C=await b.current.next();let{value:v}=C;return v!=null&&v.length&&(y&&(u.current=v[0].id),v.forEach(x=>{qe(x,a)})),{...C,value:v}}async function k(){try{const y=await o.v1.trends.statuses.list({limit:1}).next();let{value:C}=y;return C=$t(C,"public"),C!=null&&C.length&&C[0].id!==u.current?(u.current=C[0].id,!0):!1}catch{return!1}}const g=pe(()=>e(_,{children:[!!f.length&&e("div",{class:"filter-bar expandable",children:[e(w,{icon:"chart",class:"insignificant",size:"l"}),f.map((y,C)=>{const{name:v,history:I}=y,x=I.reduce((L,Y)=>L+ +Y.uses,0);return e(oe,{to:`/${a}/t/${v}`,children:[e("span",{children:[e("span",{class:"more-insignificant",children:"#"}),v]}),e("span",{class:"filter-count",children:Ge(x)})]},v)})]}),!!p.length&&e("div",{class:"links-bar",children:[e("header",{children:e("h3",{children:"Trending News"})}),p.map(y=>{const{authorName:C,authorUrl:v,blurhash:I,description:x,height:L,image:Y,imageDescription:j,language:M,providerName:ee,providerUrl:X,publishedAt:A,title:P,url:E,width:U}=y,V=xt.toUnicode(new URL(E).hostname.replace(/^www\./,"").replace(/\/$/,""));let ye;if(I){const ve=fn(I),fe=Sn(ve);ye=In([.6,fe[1],fe[2]])}return e("a",{href:E,target:"_blank",rel:"noopener noreferrer",style:ye?{"--accent-color":`rgb(${ye.join(",")})`,"--accent-alpha-color":`rgba(${ye.join(",")}, 0.4)`}:{},children:e("article",{children:[e("figure",{children:e("img",{src:Y,alt:j,width:U,height:L,loading:"lazy"})}),e("div",{class:"article-body",children:[e("header",{children:[e("div",{class:"article-meta",children:[e("span",{class:"domain",children:V})," ",!!A&&e(_,{children:"· "}),!!A&&e(_,{children:e(bt,{datetime:A,format:"micro"})})]}),!!P&&e("h1",{class:"title",lang:M,dir:"auto",title:P,children:P})]}),!!x&&e("p",{class:"description",lang:M,dir:"auto",title:x,children:x})]})]})},E)})]})]}),[f,p]);return e(dt,{title:r,titleComponent:e("h1",{class:"header-double-lines",children:[e("b",{children:"Trending"}),e("div",{children:a})]}),id:"trending",instance:a,emptyText:"No trending posts.",errorText:"Unable to load posts",fetchItems:m,checkForUpdates:k,checkForUpdatesInterval:5*60*1e3,useItemID:!0,headerStart:e(_,{}),boostsCarousel:i.settings.boostsCarousel,filterContext:"public",timelineStart:g,headerEnd:e(Ze,{portal:!0,overflow:"auto",viewScroll:"close",position:"anchor",menuButton:e("button",{type:"button",class:"plain",children:e(w,{icon:"more",size:"l"})}),children:[e(de,{onClick:()=>{let y=prompt('Enter a new instance e.g. "mastodon.social"');if(!/\./.test(y)){y&&alert("Invalid instance");return}y&&(y=y.toLowerCase().trim(),location.hash=`/${y}/trending`)},children:[e(w,{icon:"bus"})," ",e("span",{children:"Go to another instance…"})]}),d!==a&&e(de,{onClick:()=>{location.hash=`/${d}/trending`},children:[e(w,{icon:"bus"})," ",e("small",{class:"menu-double-lines",children:["Go to my instance (",e("b",{children:d}),")"]})]})]})},a)}function Qa(){He("Home","/");const t=Me(T),{shortcuts:n}=t,i=n.map(s=>{if(!s)return null;const{type:o,...a}=s,h={following:Tn,notifications:Hs,list:Os,public:ln,bookmarks:Ds,favourites:Ns,hashtag:Fs,mentions:qs,trending:Gs,search:Vs}[o];return!h||o==="search"&&!a.query||o==="list"&&!a.id?null:e(h,{...a,columnMode:!0},o+JSON.stringify(a))});return _e(["1","2","3","4","5","6","7","8","9"],(s,o)=>{try{const a=parseInt(o.keys[0],10)-1;document.querySelectorAll("#columns > *")[a].focus()}catch{}}),e("div",{id:"columns",onContextMenu:s=>{s.target.closest(".deck > header")&&!s.target.closest("a")&&!s.target.closest("button")&&(s.preventDefault(),T.showShortcutsSettings=!0)},children:i})}function ec(){var n;const t=Me(T);return G(()=>{(async()=>{const i=await nt.drafts.keys();if(i.length){const s=jt();i.filter(a=>a.startsWith(s)).length&&(T.showDrafts=!0)}})()},[]),e(_,{children:(t.settings.shortcutsViewMode==="multi-column"||!t.settings.shortcutsViewMode&&t.settings.shortcutsColumnsMode)&&((n=t.shortcuts)!=null&&n.length)?e(Qa,{}):e(Tn,{title:"Home",path:"/",id:"home",headerStart:!1,headerEnd:e(tc,{})})})}function tc(){const t=Me(T),n=z(),[i,s]=$(void 0);return e(_,{children:[e(oe,{ref:n,to:"/notifications",class:`button plain notifications-button ${t.notificationsShowNew?"has-badge":""} ${i||""}`,onClick:o=>{o.stopPropagation(),window.matchMedia("(min-width: calc(40em))").matches&&(o.preventDefault(),s(a=>a?void 0:"open"))},children:e(w,{icon:"notification",size:"l",alt:"Notifications"})}),e(ic,{state:i,anchorRef:n,onClose:()=>s(void 0)})]})}const nc=80,sc=5;function ic({anchorRef:t,state:n,onClose:i}){const{masto:s,instance:o}=Q(),a=Me(T),[h,d]=$("default"),r=s.v1.notifications.list({limit:nc});async function u(){const b=await r.next(),m=b.value;if(m!=null&&m.length){m.forEach(g=>{qe(g.status,o,{skipThreading:!0})});const k=Bs(m);T.notificationsLast=m[0],T.notifications=k,s.v1.markers.create({notifications:{lastReadId:m[0].id}}).catch(()=>{})}return T.notificationsShowNew=!1,T.notificationsLastFetchTime=Date.now(),b}const[f,c]=$(!1);function p(){return s.v1.followRequests.list({limit:1})}function l(){d("loading"),(async()=>{try{await u();const b=await p();c(!!(b!=null&&b.length)),d("default")}catch{d("error")}})()}return G(()=>{n==="open"&&l()},[n]),e(ms,{menuClassName:"notifications-menu",state:n,anchorRef:t,onClose:i,portal:{target:document.body},overflow:"auto",viewScroll:"close",position:"anchor",align:"center",boundingBoxPadding:"8 8 8 8",children:[e("header",{children:e("h2",{children:"Notifications"})}),e("main",{children:a.notifications.length?e(_,{children:a.notifications.slice(0,sc).map(b=>e(Xt,{instance:o,notification:b,disableContextMenu:!0},b.id))}):h==="loading"?e("div",{class:"ui-state",children:e($e,{abrupt:!0})}):h==="error"&&e("div",{class:"ui-state",children:[e("p",{children:"Unable to fetch notifications."}),e("p",{children:e("button",{type:"button",onClick:l,children:"Try again"})})]})}),e("footer",{children:[e(oe,{to:"/mentions",class:"button plain",children:[e(w,{icon:"at"})," ",e("span",{children:"Mentions"})]}),e(oe,{to:"/notifications",class:"button plain2",children:[f?e(_,{children:[e("span",{class:"tag collapsed",children:"New"})," ",e("span",{children:"Follow Requests"})]}):e("b",{children:"See all"})," ",e(w,{icon:"arrow-right"})]})]})]})}const oc=Je(ec),ac=[/^\/@[^@\/]+\/(?:statuses|posts)\/([^\/]+)/i,/\/notes\/([^\/]+)/i,/^\/(?:notice|objects)\/([a-z0-9-]+)/i,/\/@[^@\/]+@?[^\/]+?\/([^\/]+)/i,/^\/p\/[^\/]+\/([^\/]+)/i];function Ys(t){const{hostname:n,pathname:i}=new URL(t);for(const s of ac){const[,o]=i.match(s)||[];if(o)return{instance:n,id:o}}return{}}function cc(t){const{instance:n,id:i}=Ys(t);return n&&i?`/${n}/s/${i}`:null}function rc(){const n=Tt().pathname.replace(/^\//,""),i=Ys(n),s=i!=null&&i.instance?`/${i.instance}/s/${i.id}`:null,[o,a]=$("loading");return lt(()=>{a("loading"),(async()=>{try{const{instance:h,id:d}=i,{masto:r}=Q({instance:h});if(await r.v1.statuses.$select(d).fetch()){window.location.hash=s+"?view=full";return}}catch{}{const{masto:h,instance:d}=Q(),r=await h.v2.search.fetch({q:n,limit:1,resolve:!0});if(r.statuses.length){const u=r.statuses[0];window.location.hash=`/${d}/s/${u.id}?view=full`}else if(r.accounts.length){const u=r.accounts[0];window.location.hash=`/${d}/a/${u.id}`}else s?window.location.hash=s+"?view=full":a("error")}})()},[s]),e("div",{class:"ui-state",tabIndex:"-1",children:[o==="loading"?e(_,{children:[e($e,{abrupt:!0}),e("h2",{children:"Resolving…"}),e("p",{children:e("a",{href:n,target:"_blank",rel:"noopener noreferrer",children:n})})]}):e(_,{children:[e("h2",{children:"Unable to resolve URL"}),e("p",{children:e("a",{href:n,target:"_blank",rel:"noopener noreferrer",children:n})})]}),e("hr",{}),e("p",{children:e(oe,{to:"/",children:"Go home"})})]})}function lc(){He("Lists","/l");const[t,n]=$("default"),[i,s]=mt(r=>r+1,0),[o,a]=$([]);G(()=>{n("loading"),(async()=>{try{const r=await cn();a(r),n("default")}catch{n("error")}})()},[i]);const[h,d]=$(!1);return e("div",{id:"lists-page",class:"deck-container",tabIndex:"-1",children:[e("div",{class:"timeline-deck deck",children:[e("header",{children:e("div",{class:"header-grid",children:[e("div",{class:"header-side",children:[e(yt,{}),e(oe,{to:"/",class:"button plain",children:e(w,{icon:"home",size:"l"})})]}),e("h1",{children:"Lists"}),e("div",{class:"header-side",children:e("button",{type:"button",class:"plain",onClick:()=>d(!0),children:e(w,{icon:"plus",size:"l",alt:"New list"})})})]})}),e("main",{children:o.length>0?e(_,{children:[e("ul",{class:"link-list",children:o.map(r=>e("li",{children:e(oe,{to:`/l/${r.id}`,children:e("span",{children:[e(w,{icon:"list"})," ",e("span",{children:r.title})]})})}))}),o.length>1&&e("footer",{class:"ui-state",children:e("small",{class:"insignificant",children:[o.length," list",o.length===1?"":"s"]})})]}):t==="loading"?e("p",{class:"ui-state",children:e($e,{})}):t==="error"?e("p",{class:"ui-state",children:"Unable to load lists."}):e("p",{class:"ui-state",children:"No lists yet."})})]}),h&&e(Ae,{onClick:r=>{r.target===r.currentTarget&&d(!1)},children:e(kn,{list:h==null?void 0:h.list,onClose:r=>{r.state==="success"&&s(),d(!1)}})})]})}const dc=""+new URL("instances-MzK7fGXv.json",import.meta.url).href;var uc={PHANPY_CLIENT_NAME:"Phanpy",PHANPY_WEBSITE:"https://phanpy.social",PHANPY_LINGVA_INSTANCES:"lingva.phanpy.social lingva.lunar.icu lingva.garudalinux.org translate.plausibility.cloud",PHANPY_PRIVACY_POLICY_URL:"https://github.com/cheeaun/phanpy/blob/main/PRIVACY.MD",VITE_APP_ENV:"production",BASE_URL:"./",MODE:"production",DEV:!1,PROD:!0,SSR:!1};const{PHANPY_CLIENT_NAME:hc,PHANPY_WEBSITE:pc}=uc,xn="read write follow push";async function fc({instanceURL:t}){const n=new URLSearchParams({client_name:hc,redirect_uris:location.origin+location.pathname,scopes:xn,website:pc});return await(await fetch(`https://${t}/api/v1/apps`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:n.toString()})).json()}async function mc({instanceURL:t,client_id:n}){const i=new URLSearchParams({client_id:n,scope:xn,redirect_uri:location.origin+location.pathname,response_type:"code"});return`https://${t}/oauth/authorize?${i.toString()}`}async function gc({instanceURL:t,client_id:n,client_secret:i,code:s}){const o=new URLSearchParams({client_id:n,client_secret:i,redirect_uri:location.origin+location.pathname,grant_type:"authorization_code",code:s,scope:xn});return await(await fetch(`https://${t}/oauth/token`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:o.toString()})).json()}var bc={PHANPY_CLIENT_NAME:"Phanpy",PHANPY_WEBSITE:"https://phanpy.social",PHANPY_LINGVA_INSTANCES:"lingva.phanpy.social lingva.lunar.icu lingva.garudalinux.org translate.plausibility.cloud",PHANPY_PRIVACY_POLICY_URL:"https://github.com/cheeaun/phanpy/blob/main/PRIVACY.MD",VITE_APP_ENV:"production",BASE_URL:"./",MODE:"production",DEV:!1,PROD:!0,SSR:!1};const{PHANPY_DEFAULT_INSTANCE:yc}=bc;function wc(){var y,C;He("Log in");const t=z(),n=be.local.get("instanceURL"),[i,s]=$("default"),[o]=it(),a=o.get("instance"),h=o.get("submit"),[d,r]=$(a||(n==null?void 0:n.toLowerCase())||""),[u,f]=$([]),c=z();G(()=>{(async()=>{try{const I=await(await fetch(dc)).json();f(I),c.current=new pi(I)}catch{}})()},[]);const p=v=>{v&&(be.local.set("instanceURL",v),(async()=>{s("loading");try{const{client_id:I,client_secret:x,vapid_key:L}=await fc({instanceURL:v});I&&x?(be.session.set("clientID",I),be.session.set("clientSecret",x),be.session.set("vapidKey",L),location.href=await mc({instanceURL:v,client_id:I})):alert("Failed to register application"),s("default")}catch{s("error")}})())},l=d?d.replace(/^https?:\/\//,"").replace(/\/+$/,"").replace(/^@?[^@]+@/,"").trim():null,b=/[^\s\r\n\t\/\\]+\.[^\s\r\n\t\/\\]+/.test(l)&&!/[\s\/\\@]/.test(l),m=l?(C=(y=c.current)==null?void 0:y.search(l,{limit:10}))==null?void 0:C.map(v=>v.item):[],k=b?l:m!=null&&m.length?m[0]:d?u.find(v=>v.includes(d)):null,g=v=>{v.preventDefault(),p(k)};return h&&G(()=>{p(a||k)},[]),e("main",{id:"login",style:{textAlign:"center"},children:e("form",{onSubmit:g,children:[e("h1",{children:[e("img",{src:wn,alt:"",width:"80",height:"80"}),e("br",{}),"Log in"]}),e("label",{children:[e("p",{children:"Instance"}),e("input",{value:d,required:!0,type:"text",class:"large",id:"instanceURL",ref:t,disabled:i==="loading",autocorrect:"off",autocapitalize:"off",autocomplete:"off",spellCheck:!1,placeholder:"instance domain",onInput:v=>{r(v.target.value)}}),(m==null?void 0:m.length)>0?e("ul",{id:"instances-suggestions",children:m.map((v,I)=>e("li",{children:e("button",{type:"button",class:"plain5",onClick:()=>{p(v)},children:v})}))}):e("div",{id:"instances-eg",children:"e.g. “mastodon.social”"})]}),i==="error"&&e("p",{class:"error",children:"Failed to log in. Please try again or another instance."}),e("div",{children:[e("button",{disabled:i==="loading"||!d||!k,children:k?`Continue with ${k}`:"Continue"})," "]}),e($e,{hidden:i!=="loading"}),e("hr",{}),!yc&&e("p",{children:e("a",{href:"https://joinmastodon.org/servers",target:"_blank",children:"Don't have an account? Create one!"})}),e("p",{children:e(oe,{to:"/",children:"Go home"})})]})})}const Bt=40,vc=10,kc=5;let dn={},Vt={},Gt={};function Yt(t){delete Vt[t],delete Gt[t]}const Rt={block:"nearest",inline:"center",behavior:"smooth"},ns=".status-link:not(details:not([open]) > summary ~ *, details:not([open]) > summary ~ * *), .status-focus:not(details:not([open]) > summary ~ *, details:not([open]) > summary ~ * *)",ss=/\/s\//i;function Sc(t){var v;const{id:n}=t,{masto:i,instance:s}=Q({instance:t.instance}),o=Me(T),[a,h]=it(),d=a.get("media"),r=a.get("media-only"),u=parseInt(d||r,10);let f=u>0;const c=a.get("mediaStatusID"),p=hs(c,s);c&&!p&&(f=!1);const l=f&&!!r,b=Ke(n,s),[m,k]=$(T.statuses[b]);G(()=>{T.statuses[b]&&k(T.statuses[b])},[b]);const g=pe(()=>{const{prevLocation:I}=T,x=((I==null?void 0:I.pathname)||"")+((I==null?void 0:I.search)||""),L=Et("/:instance/s/:id",x)||Et("/s/:id",x);return!x||L?"/":x},[]);G(()=>{!m&&f&&(async()=>{try{const I=await i.v1.statuses.$select(n).fetch();qe(I,s),k(I)}catch{alert("Unable to load post."),location.hash=g}})()},[f]);const y=c?(v=o.statuses[Ke(c,s)])==null?void 0:v.mediaAttachments:m==null?void 0:m.mediaAttachments,C=Qe(()=>{!window.matchMedia("(min-width: calc(40em + 350px))").matches&&o.prevLocation?history.back():l?location.hash=g:(a.delete("media"),a.delete("mediaStatusID"),h(a))},[l,g,o.prevLocation]);return G(()=>{let I=setTimeout(()=>{const x=document.querySelector(".carousel");x&&x.focus()},100);return()=>clearTimeout(I)},[l]),G(()=>{const I=document.querySelectorAll(".deck-container");return I.forEach(x=>{x.setAttribute("inert","")}),()=>{I.forEach(x=>{x.removeAttribute("inert")})}},[]),e("div",{class:"deck-backdrop",children:[f?y!=null&&y.length?e(Ls,{mediaAttachments:y,statusID:c||n,instance:s,lang:m==null?void 0:m.language,index:u-1,onClose:C}):e("div",{class:"media-modal-container loading",children:e($e,{abrupt:!0})}):e(oe,{to:g}),!l&&e(Cc,{id:n,instance:t.instance,closeLink:g})]})}function Ic(t){const{linkable:n,to:i,onClick:s,...o}=t;return n?e(oe,{class:"status-link",to:i,onClick:s,...o}):e("div",{class:"status-focus",tabIndex:0,...o})}function Cc({id:t,closeLink:n="/",instance:i}){var D,W;const[s,o]=it(),a=s.get("media"),h=s.get("mediaStatusID"),d=parseInt(a,10)>0,r=z(!T.prevLocation&&(history.length===1||"navigation"in window&&((W=(D=navigation==null?void 0:navigation.entries)==null?void 0:D.call(navigation))==null?void 0:W.length)===1)),[u,f]=$(s.get("view")||r.current?"full":null),c=!!parseInt(s.get("translate")),{masto:p,instance:l}=Q({instance:i}),{masto:b,instance:m,authenticated:k}=Q(),g=l===m,y=Me(T),[C,v]=$([]),[I,x]=$("default"),L=z(),Y=Ke(t,l),j=z(0),M=z();G(()=>{var R;(R=M.current)==null||R.focus()},[]),G(()=>{var q;const R=bs(()=>{if(!M.current)return;const{scrollTop:Z}=M.current;I!=="loading"&&(Gt[t]=Z)},50);return(q=M.current)==null||q.addEventListener("scroll",R,{passive:!0}),R(),()=>{var Z;R.cancel(),(Z=M.current)==null||Z.removeEventListener("scroll",R)}},[t,I!=="loading"]);const ee=z(),X=z(),A=({reloadHero:R}={})=>{x("loading");let q;const Z=Vt[t];if(Z){const ce=Z.filter(De=>T.statuses[Y]);v(ce)}else v([{id:t}]);return(async()=>{var B,O;const ce=()=>Ln(()=>p.v1.statuses.$select(t).fetch(),{retries:4}),De=Ln(()=>p.v1.statuses.$select(t).context.fetch(),{retries:8}),S=!!y.statuses[Y];let N=y.statuses[Y];if(!(S&&!R))try{N=await ce(),qe(N,l),await new Promise(K=>{setTimeout(K,100)})}catch{x("error");return}try{let K=function(H){return H==null?void 0:H.map(we=>({id:we.id,account:we.account,repliesCount:we.repliesCount,content:we.content,weight:Lt(we),replies:K(we.__replies)}))};const ge=await De,{ancestors:le,descendants:ie}=ge;j.current=(ie==null?void 0:ie.length)||0;const Ce=new Set;le.forEach(H=>{qe(H,l,{skipThreading:!0}),H.inReplyToId&&!le.find(we=>we.id===H.inReplyToId)&&Ce.add(H.inReplyToId)});const Ne=le.every(H=>H.account.id===N.account.id),Oe=[];ie.forEach(H=>{if(qe(H,l,{skipThreading:!0}),H.inReplyToId&&!ie.find(we=>we.id===H.inReplyToId)&&H.inReplyToId!==N.id&&Ce.add(H.inReplyToId),H.inReplyToAccountId===H.account.id)Oe.push(H);else if(H.inReplyToId===N.id)Oe.push(H);else if(!H.inReplyToAccountId&&Oe.find(we=>we.id===H.inReplyToId)&&H.account.id===N.account.id)Oe.push(H);else{const we=ie.find(tt=>tt.id===H.inReplyToId);we&&(we.__replies||(we.__replies=[]),we.__replies.push(H))}}),Ce.size;const Ee=[...le.map(H=>({id:H.id,ancestor:!0,isThread:Ne,accountID:H.account.id,account:H.account,repliesCount:H.repliesCount,weight:Lt(H)})),{id:t,accountID:N.account.id,weight:Lt(N)},...Oe.map(H=>({id:H.id,account:H.account,accountID:H.account.id,descendant:!0,thread:H.account.id===N.account.id,weight:Lt(H),replies:K(H.__replies)}))];x("default"),ee.current={offsetTop:(B=L.current)==null?void 0:B.offsetTop,scrollTop:(O=M.current)==null?void 0:O.scrollTop};const Ve=Ee.findIndex(H=>H.id===t);Ve>=ne&&me(Ve+1),v(Ee),Vt[t]=Ee,Qs(N,l)}catch{x("error")}})(),X.current=Date.now(),()=>{clearTimeout(q)}};G(A,[t,p]);const[P,E]=$(!1);G(()=>{let R=setInterval(()=>{const q=Date.now();X.current&&q-X.current>=6e4&&E(!0)},6e4);return()=>{clearInterval(R)}},[]),lt(()=>{var q,Z;if(!C.length)return;const R=Gt[t];if(R)M.current.scrollTop=R;else if(ee.current){const ce={offsetTop:(q=L.current)==null?void 0:q.offsetTop,scrollTop:(Z=M.current)==null?void 0:Z.scrollTop},De=ce.offsetTop-ee.current.offsetTop+ce.scrollTop;M.current.scrollTop=De}else C.length===1&&(M.current.scrollTop=0);ee.current=null},[C]),G(()=>{y.reloadStatusPage<=0||(async()=>{try{const{instanceURL:R}=St(),q=`https://${R}/api/v1/statuses/${t}/context`;return await(await caches.open("api")).delete(q,{ignoreVary:!0}),A({reloadHero:!0})}catch{}})()},[y.reloadStatusPage]),G(()=>()=>{Gt={},T.reloadStatusPage=0,Vt={},dn={},un.clear()},[]);const U=y.statuses[Y]||y.statuses[t],V=pe(()=>{if(!U)return"";const{account:R}=U,q=document.createElement("div");return q.innerHTML=R.displayName,q.innerText.trim()},[U]),ye=pe(()=>{if(!U)return"";let R=yn(U);return R.length>64&&(R=R.slice(0,64)+"…"),R},[U]);He(V&&ye?`${V}: "${ye}"`:"Status","/:instance?/s/:id");const ve=pe(()=>{if(!U)return;const{url:R}=U;if(R)return new URL(R).hostname},[U]),fe=pe(()=>{if(ve)return ve===l},[ve,l]),[ne,me]=$(Bt),ue=pe(()=>C.length-ne,[C.length,ne]),he=C.some(R=>R.descendant),ke=C.filter(R=>R.ancestor),[Le,Te]=$(!0),Pe=pe(()=>{if(!L.current||Le)return null;const{top:R}=L.current.getBoundingClientRect();return R>0?"down":"up"},[Le]);_e("esc",()=>{location.hash=n},{enabled:!d,ignoreEventWhen:R=>!!document.querySelector("#modal-container > *")}),_e("backspace",()=>{location.hash=n}),_e("j",()=>{const R=document.activeElement.closest(".status-link, .status-focus"),q=R==null?void 0:R.getBoundingClientRect(),Z=Array.from(M.current.querySelectorAll(ns));if(R&&q.top0){const ce=Z.indexOf(R);let De=Z[ce+1];De&&(De.focus(),De.scrollIntoView(Rt))}else{const ce=Z.find(De=>{const S=De.getBoundingClientRect();return S.top>=44&&S.left>=0});ce&&(ce.focus(),ce.scrollIntoView(Rt))}}),_e("k",()=>{const R=document.activeElement.closest(".status-link, .status-focus"),q=R==null?void 0:R.getBoundingClientRect(),Z=Array.from(M.current.querySelectorAll(ns));if(R&&q.top0){const ce=Z.indexOf(R);let De=Z[ce-1];De&&(De.focus(),De.scrollIntoView(Rt))}else{const ce=Z.find(De=>{const S=De.getBoundingClientRect();return S.top>=44&&S.left>=0});ce&&(ce.focus(),ce.scrollIntoView(Rt))}}),_e("x",()=>{const R=document.activeElement.closest(".status-link, .status-focus");if(R){const q=R.nextElementSibling;q&&q.tagName.toLowerCase()==="details"&&(q.open=!q.open)}});const[Fe,xe]=$(!1),J=z(d?"media+status":"status"),ae=Qe((R,q,Z,ce)=>{R.preventDefault(),R.stopPropagation(),o({media:q+1,mediaStatusID:ce.id})},[t]),te=Qe((R,q)=>{Yt(q.id)},[]);G(()=>{let R;return h&&d&&(R=setTimeout(()=>{var Z;const q=(Z=M.current)==null?void 0:Z.querySelector(`.status-link[href*="/${h}"]`);q&&q.scrollIntoView(Rt)},400)),()=>{clearTimeout(R)}},[h,d]);const Se=Qe((R,q)=>{const{id:Z,ancestor:ce,isThread:De,descendant:S,thread:N,replies:B,repliesCount:O,weight:K}=R,ge=Z===t;return e("li",{ref:ge?L:null,class:`${ce?"ancestor":""} ${S?"descendant":""} ${N?"thread":""} ${ge?"hero":""}`,children:[ge?e(_,{children:[e(rt,{threshold:.1,onChange:ie=>{queueMicrotask(()=>{requestAnimationFrame(()=>{Te(ie)})})},class:"status-focus",tabIndex:0,children:e(Be,{statusID:Z,instance:l,withinContext:!0,size:"l",enableTranslate:!0,forceTranslate:c})}),I!=="loading"&&!k?e("div",{class:"post-status-banner",children:[e("p",{children:"You're not logged in. Interactions (reply, boost, etc) are not possible."}),e(oe,{to:"/login",class:"button",children:"Log in"})]}):!g&&e("div",{class:"post-status-banner",children:[e("p",{children:["This post is from another instance (",e("b",{children:l}),"). Interactions (reply, boost, etc) are not possible."]}),e("button",{type:"button",disabled:I==="loading",onClick:()=>{x("loading"),(async()=>{try{const ie=await b.v2.search.fetch({q:U.url,type:"statuses",resolve:!0,limit:1});if(ie.statuses.length){const Ce=ie.statuses[0];location.hash=m?`/${m}/s/${Ce.id}`:`/s/${Ce.id}`}else throw new Error("No results")}catch(ie){x("default"),alert("Error: "+ie)}})()},children:[e(w,{icon:"transfer"})," Switch to my instance to enable interactions"]})]})]}):e(Ic,{linkable:De||ce,to:l?`/${l}/s/${Z}`:`/s/${Z}`,onClick:()=>{Yt(Z)},children:[q===0&&ce?e(rt,{threshold:.5,onChange:ie=>{queueMicrotask(()=>{requestAnimationFrame(()=>{xe(ie)})})},children:e(Be,{statusID:Z,instance:l,withinContext:!0,size:N||ce?"m":"s",enableTranslate:!0,onMediaClick:ae,onStatusLinkClick:te})}):e(Be,{statusID:Z,instance:l,withinContext:!0,size:N||ce?"m":"s",enableTranslate:!0,onMediaClick:ae,onStatusLinkClick:te,showActionsBar:!!S}),ce&&O>1&&e("div",{class:"replies-link",children:[e(w,{icon:"comment2"})," ",e("span",{title:O,children:Ge(O)})]})," "]}),S&&(B==null?void 0:B.length)>0&&e(js,{instance:l,replies:B,hasParentThread:N,level:1,accWeight:K,openAll:j.currentYt(Z)}}),I==="loading"&&ge&&!!(U!=null&&U.repliesCount)&&!he&&e("div",{class:"status-loading",children:e($e,{abrupt:U.repliesCount>=3})}),I==="error"&&ge&&!!(U!=null&&U.repliesCount)&&!he&&e("div",{class:"status-error",children:["Unable to load replies.",e("br",{}),e("button",{type:"button",class:"plain",onClick:()=>{T.reloadStatusPage++},children:"Try again"})]})]},Z)},[t,l,I,k,g,c,ae,te,he]),Ie=pe(()=>{var R;if("navigation"in window&&(navigation!=null&&navigation.entries)){const q=navigation.entries()[navigation.currentEntry.index-1];if(q!=null&&q.url)return ss.test(q.url)}return ss.test((R=T.prevLocation)==null?void 0:R.pathname)},[Y]),F=pe(()=>{if(!ue)return[];const R=[];function q(Z){R.push(Z.id),Z.replies&&Z.replies.forEach(q)}return C.slice(ne).forEach(q),R.map(Z=>Ke(Z,l))},[ue,C,ne,l]),re=pe(()=>C.slice(0,ne).map(Se),[C,ne,Se]);return G(()=>{let R=setTimeout(()=>{if(!L.current)return;const q=L.current.querySelector(".spoiler-button:not(.spoiling), .spoiler-media-button:not(.spoiling)");q&&q.click()},1e3);return()=>clearTimeout(R)},[t]),e("div",{tabIndex:"-1",ref:M,class:`status-deck deck contained ${C.length>1?"padded-bottom":""} ${J.current==="status"&&!r.current?"slide-in":""} ${u?`deck-view-${u}`:""}`,onAnimationEnd:R=>{J.current==="status"&&(J.current=null)},children:[e("header",{class:`${I==="loading"?"loading":""}`,onDblClick:R=>{T.reloadStatusPage++},children:e("div",{class:"header-grid header-grid-2",children:[e("h1",{children:[Ie&&e("button",{type:"button",class:"plain deck-back",onClick:()=>{history.back()},children:e(w,{icon:"chevron-left",size:"xl"})}),!Le&&U&&I!=="loading"?e(_,{children:[e("span",{class:"hero-heading",children:[e(It,{account:U.account,instance:l,showAvatar:!0,short:!0})," ",e("span",{class:"insignificant",children:["•"," ",e(bt,{datetime:U.createdAt,format:"micro"})]})]})," ",e("button",{type:"button",class:"ancestors-indicator light small",onClick:R=>{R.preventDefault(),R.stopPropagation(),L.current.scrollIntoView({behavior:"smooth",block:"start"})},title:"Go to main post",children:e(w,{icon:Pe==="down"?"arrow-down":"arrow-up"})})]}):e(_,{children:["Post"," ",e("button",{type:"button",class:"ancestors-indicator light small",onClick:R=>{R.preventDefault(),R.stopPropagation(),M.current.scrollTo({top:0,behavior:"smooth"})},hidden:!ke.length||Fe,title:`${ke.length} posts above ‒ Go to top`,children:[e(w,{icon:"arrow-up"}),ke.filter((R,q,Z)=>Z.findIndex(ce=>ce.accountID===R.accountID)===q).slice(0,3).map(R=>e(st,{url:R.account.avatar,alt:R.account.displayName},R.account.id)),ke.length>3&&e(_,{children:[" ",e("span",{class:"insignificant",children:Ge(ke.length)})]})]})]})]}),e("div",{class:"header-side",children:[e("button",{type:"button",class:"plain4 button-switch-view",style:{display:u==="full"?"":"none"},onClick:()=>{f(null),s.delete("media"),s.delete("media-only"),s.delete("view"),o(s)},title:"Switch to Side Peek view",children:e(w,{icon:"layout4",size:"l"})}),P&&e("button",{type:"button",class:"plain button-refresh",onClick:()=>{T.reloadStatusPage++,E(!1)},children:e(w,{icon:"refresh",size:"l"})}),e(Ze,{align:"end",portal:{target:M.current},menuButton:e("button",{type:"button",class:"button plain4",children:e(w,{icon:"more",alt:"Actions",size:"xl"})}),children:[e(de,{disabled:I==="loading",onClick:()=>{T.reloadStatusPage++},children:[e(w,{icon:"refresh"}),e("span",{children:"Refresh"})]}),e(de,{className:"menu-switch-view",onClick:()=>{f(u==="full"?null:"full"),s.delete("media"),s.delete("media-only"),u==="full"?s.delete("view"):s.set("view","full"),o(s)},children:[e(w,{icon:{"":"layout5",full:"layout4"}[u||""]}),e("span",{children:["Switch to ",u==="full"?"Side Peek":"Full"," view"]})]}),e(de,{onClick:()=>{Array.from(M.current.querySelectorAll(".spoiler-button:not(.spoiling), .spoiler-media-button:not(.spoiling)")).forEach(q=>{q.click()})},children:[e(w,{icon:"eye-open"})," ",e("span",{children:"Show all sensitive content"})]}),e(ze,{}),e(gs,{className:"plain",children:"Experimental"}),e(de,{disabled:!ve||fe,onClick:()=>{const R=cc(U.url);R?location.hash=R:alert("Unable to switch")},children:[e(w,{icon:"transfer"}),e("small",{class:"menu-double-lines",children:["Switch to post's instance",ve?e(_,{children:[" ","(",e("b",{children:xt.toUnicode(ve)}),")"]}):""]})]})]}),e(oe,{class:"button plain deck-close",to:n,children:e(w,{icon:"x",size:"xl"})})]})]})}),C.length&&U?e("ul",{class:`timeline flat contextual grow ${I==="loading"?"loading":""}`,children:[re,ue>0&&e("li",{children:e("button",{type:"button",class:"plain block show-more",disabled:I==="loading",onClick:()=>me(R=>R+Bt),style:{marginBlockEnd:"6em"},"data-state-post-ids":F.join(" "),children:[e("div",{class:"ib avatars-bunch",children:C.slice(ne,ne+5).map(R=>e(st,{url:R.account.avatarStatic},R.id))})," ",e("div",{class:"ib",children:["Show more…"," ",e("span",{class:"tag",children:ue>Bt?`${Bt}+`:ue})]})]})})]}):e(_,{children:[I==="loading"&&e("ul",{class:"timeline flat contextual grow loading",children:e("li",{children:e(Be,{skeleton:!0,size:"l"})})}),I==="error"&&e("p",{class:"ui-state",children:["Unable to load post",e("br",{}),e("br",{}),e("button",{type:"button",onClick:()=>{T.reloadStatusPage++},children:"Try again"})]})]})]})}function js({replies:t,instance:n,hasParentThread:i,level:s,accWeight:o,openAll:a,parentLink:h}){const[d,r]=it(),u=y=>y.reduce((C,v)=>{const{repliesCount:I,replies:x}=v,L=(x==null?void 0:x.length)||I;return C+L+u(x||[])},0),f=t.length+u(t),c=t.length===f,p=t.map(y=>y.account).filter((y,C,v)=>v.findIndex(I=>I.id===y.id)===C).slice(0,3),l=pe(()=>t==null?void 0:t.reduce((y,C)=>y+(C==null?void 0:C.weight),o),[o,t==null?void 0:t.length]);let b=!1;(a||l<=kc||!i&&f===1&&Lt(t[0])<2)&&(b=!0);const m=dn[t[0].id],k=Qe((y,C,v,I)=>{y.preventDefault(),y.stopPropagation(),r({media:C+1,mediaStatusID:I.id})},[]),g=z();return lt(()=>{var C;function y(v){v.target.dataset.scrollLeft=v.target.scrollLeft}return(C=g.current)==null||C.addEventListener("scroll",y,{passive:!0}),()=>{var v;(v=g.current)==null||v.removeEventListener("scroll",y)}},[]),e("details",{ref:g,class:"replies",open:m||b,onToggle:y=>{const{open:C}=y.target;dn[t[0].id]=C},style:{"--comments-level":s},"data-comments-level":s,"data-comments-level-overflow":s>4,children:[e("summary",{class:"replies-summary",hidden:b,children:[e("span",{class:"avatars",children:p.map(y=>e(st,{url:y.avatarStatic,title:`${y.displayName} @${y.username}`,squircle:y==null?void 0:y.bot},y.id))}),e("span",{class:"replies-counts",children:[e("b",{children:[e("span",{title:t.length,children:Ge(t.length)})," ","repl",t.length===1?"y":"ies"]}),!c&&f>1&&e(_,{children:[" ","·"," ",e("span",{children:[e("span",{title:f,children:Ge(f)})," ","comment",f===1?"":"s"]})]})]}),e(w,{icon:"chevron-down",class:"replies-summary-chevron"}),!!h&&e(oe,{class:"replies-parent-link",to:h.to,onClick:h.onClick,title:"View post with its replies",children:"»"})]}),e("ul",{children:t.map(y=>{var C,v;return e("li",{children:[e("div",{class:"status-focus",tabIndex:0,children:[e(Be,{statusID:y.id,instance:n,withinContext:!0,size:"s",enableTranslate:!0,onMediaClick:k,showActionsBar:!0}),!((C=y.replies)!=null&&C.length)&&y.repliesCount>0&&e("div",{class:"replies-link",children:[e(w,{icon:"comment2"})," ",e("span",{title:y.repliesCount,children:Ge(y.repliesCount)})]})]}),((v=y.replies)==null?void 0:v.length)&&e(js,{instance:n,replies:y.replies,level:s+1,accWeight:b?l:y.weight,openAll:a,parentLink:{to:n?`/${n}/s/${y.id}`:`/s/${y.id}`,onClick:()=>{Yt(y.id)}}})]},y.id)})})]})}const Tc=140,xc=35,$c=70,Ac=140,un=new Map;function Lt(t){var l,b;const n=un.get(t.id);if(n)return n;const{spoilerText:i,content:s,mediaAttachments:o,poll:a,card:h}=t,d=Cs(i+s),r=o!=null&&o.length?Tc:0,u=(((l=a==null?void 0:a.options)==null?void 0:l.length)||0)*xc,f=h&&(o!=null&&o.length||(b=a==null?void 0:a.options)!=null&&b.length)?0:$c,p=(d+r+u+f)/Ac;return un.set(t.id,p),p}const Rc=Je(Sc);function _c(){const t=gt(),{id:n,instance:i}=t;return e(Rc,{id:n,instance:i})}const Lc=""+new URL("boosts-carousel-YjmjXTE6.jpg",import.meta.url).href,Ec=""+new URL("grouped-notifications-xYMFVY91.jpg",import.meta.url).href,Mc=""+new URL("multi-column-ETnJNDVb.jpg",import.meta.url).href,Pc=""+new URL("multi-hashtag-timeline-x-SDVR4g.jpg",import.meta.url).href,Dc=""+new URL("nested-comments-thread-Ib-fZGS3.jpg",import.meta.url).href,Nc="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xml:space='preserve'%20fill-rule='evenodd'%20stroke-linejoin='round'%20stroke-miterlimit='2'%20clip-rule='evenodd'%20viewBox='0%200%20102%2028'%3e%3cpath%20fill='none'%20d='M0%200h101.5v27.5H0z'/%3e%3cg%20fill-rule='nonzero'%3e%3cpath%20fill='url(%23a)'%20d='M2.32%2021.85c1.4%200%202.21-.85%202.21-2.3v-4.64H8.5c4.45%200%207.54-2.9%207.54-7.24%200-4.35-2.98-7.24-7.32-7.24h-6.4C.93.43.11%201.28.11%202.73v16.82c0%201.45.82%202.3%202.21%202.3Zm2.21-10.4V3.94h3c2.54%200%204%201.34%204%203.75s-1.47%203.76-4%203.76h-3Z'/%3e%3cpath%20fill='url(%23b)'%20d='M20.52%2021.88c1.25%200%202.13-.76%202.13-2.23v-7.04c0-2.07%201.2-3.49%203.21-3.49%201.95%200%202.95%201.23%202.95%203.25v7.28c0%201.47.89%202.23%202.13%202.23%201.26%200%202.14-.76%202.14-2.23v-8.18c0-3.64-1.99-5.9-5.48-5.9-2.38%200-4.1%201.12-4.93%203.1h-.09V2.3c0-1.38-.78-2.2-2.1-2.2-1.31%200-2.1.82-2.1%202.2v17.34c0%201.47.9%202.23%202.14%202.23Z'/%3e%3cpath%20fill='url(%23c)'%20d='M40.45%2021.82c1.96%200%203.93-.98%204.8-2.65h.1v.8c.08%201.27.89%201.91%202.05%201.91%201.21%200%202.08-.73%202.08-2.15v-8.95c0-3.17-2.63-5.25-6.65-5.25-3.26%200-5.78%201.16-6.5%203.04-.15.32-.23.63-.23.96%200%20.97.75%201.64%201.79%201.64.69%200%201.23-.26%201.7-.79.95-1.23%201.74-1.65%203.04-1.65%201.62%200%202.64.85%202.64%202.31v1.04l-3.95.24c-3.93.23-6.13%201.88-6.13%204.74%200%202.83%202.27%204.76%205.26%204.76Zm1.4-3.09c-1.43%200-2.4-.73-2.4-1.9%200-1.12.91-1.83%202.51-1.95l3.31-.2v1.14c0%201.7-1.54%202.91-3.41%202.91Z'/%3e%3cpath%20fill='url(%23d)'%20d='M54.37%2021.88c1.26%200%202.14-.76%202.14-2.23v-7.09c0-2.03%201.21-3.44%203.13-3.44s2.89%201.17%202.89%203.22v7.31c0%201.47.88%202.23%202.14%202.23%201.24%200%202.13-.76%202.13-2.23v-8.2c0-3.68-1.96-5.87-5.45-5.87-2.41%200-4%201.07-4.83%203.01h-.09v-.87c0-1.35-.85-2.17-2.14-2.17-1.28%200-2.06.82-2.06%202.15v11.95c0%201.47.9%202.23%202.14%202.23Z'/%3e%3cpath%20fill='url(%23e)'%20d='M71.65%2027.17c1.26%200%202.14-.76%202.14-2.23v-6h.09a5.15%205.15%200%200%200%204.88%202.88c3.92%200%206.35-3.05%206.35-8.1%200-5.07-2.44-8.1-6.43-8.1a5.12%205.12%200%200%200-4.86%202.99h-.09v-.85c0-1.45-.88-2.21-2.1-2.21-1.24%200-2.11.76-2.11%202.2v17.2c0%201.46.89%202.22%202.13%202.22Zm5.6-8.8c-2.1%200-3.47-1.8-3.47-4.65%200-2.81%201.37-4.67%203.47-4.67%202.14%200%203.49%201.83%203.49%204.67%200%202.86-1.35%204.66-3.5%204.66Z'/%3e%3cpath%20fill='url(%23f)'%20d='M89.61%2027.39c3.44%200%205.26-1.5%206.73-5.55l4.81-13.1a4%204%200%200%200%20.24-1.26c0-1.13-.85-1.93-2.08-1.93-1.1%200-1.71.51-2.07%201.7l-3.4%2010.9h-.08L90.35%207.28c-.36-1.25-.94-1.73-2.07-1.73-1.26%200-2.21.83-2.21%201.99%200%20.35.09.82.25%201.26l5%2013.21-.21.56c-.52%201.1-1.32%201.42-2.07%201.42l-.75-.01c-.96%200-1.56.54-1.56%201.4%200%201.29%201%202%202.88%202Z'/%3e%3c/g%3e%3cdefs%3e%3cradialGradient%20id='a'%20cx='0'%20cy='0'%20r='1'%20gradientTransform='rotate(28.51%20.06%20.22)%20scale(57.6252)'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20stop-color='%23a4bff7'/%3e%3cstop%20offset='1'%20stop-color='%236081e6'/%3e%3c/radialGradient%3e%3cradialGradient%20id='b'%20cx='0'%20cy='0'%20r='1'%20gradientTransform='rotate(28.51%20.06%20.22)%20scale(57.6252)'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20stop-color='%23a4bff7'/%3e%3cstop%20offset='1'%20stop-color='%236081e6'/%3e%3c/radialGradient%3e%3cradialGradient%20id='c'%20cx='0'%20cy='0'%20r='1'%20gradientTransform='rotate(28.51%20.06%20.22)%20scale(57.6252)'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20stop-color='%23a4bff7'/%3e%3cstop%20offset='1'%20stop-color='%236081e6'/%3e%3c/radialGradient%3e%3cradialGradient%20id='d'%20cx='0'%20cy='0'%20r='1'%20gradientTransform='rotate(28.51%20.06%20.22)%20scale(57.6252)'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20stop-color='%23a4bff7'/%3e%3cstop%20offset='1'%20stop-color='%236081e6'/%3e%3c/radialGradient%3e%3cradialGradient%20id='e'%20cx='0'%20cy='0'%20r='1'%20gradientTransform='rotate(28.51%20.06%20.22)%20scale(57.6252)'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20stop-color='%23a4bff7'/%3e%3cstop%20offset='1'%20stop-color='%236081e6'/%3e%3c/radialGradient%3e%3cradialGradient%20id='f'%20cx='0'%20cy='0'%20r='1'%20gradientTransform='rotate(28.51%20.06%20.22)%20scale(57.6252)'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20stop-color='%23a4bff7'/%3e%3cstop%20offset='1'%20stop-color='%236081e6'/%3e%3c/radialGradient%3e%3c/defs%3e%3c/svg%3e";var Uc={PHANPY_CLIENT_NAME:"Phanpy",PHANPY_WEBSITE:"https://phanpy.social",PHANPY_LINGVA_INSTANCES:"lingva.phanpy.social lingva.lunar.icu lingva.garudalinux.org translate.plausibility.cloud",PHANPY_PRIVACY_POLICY_URL:"https://github.com/cheeaun/phanpy/blob/main/PRIVACY.MD",VITE_APP_ENV:"production",BASE_URL:"./",MODE:"production",DEV:!1,PROD:!0,SSR:!1};const{PHANPY_DEFAULT_INSTANCE:_t,PHANPY_WEBSITE:is,PHANPY_PRIVACY_POLICY_URL:Fc,PHANPY_DEFAULT_INSTANCE_REGISTRATION_URL:os}=Uc,as=is?is.replace(/https?:\/\//g,"").replace(/\/$/,""):null,cs=`${"2024-06-03T11:04:51.985Z".slice(0,10).replace(/-/g,".")}.0a6030c`;function rs(){return He(null,["/","/welcome"]),e("main",{id:"welcome",children:[e("div",{class:"hero-container",children:[e("div",{class:"hero-content",children:[e("h1",{children:[e("img",{src:wn,alt:"",width:"160",height:"160",style:{aspectRatio:"1/1",marginBlockEnd:-16}}),e("img",{src:Nc,alt:"Phanpy",width:"200"})]}),e("p",{class:"desc",children:"A minimalistic opinionated Mastodon web client."}),e("p",{children:e(oe,{to:_t?`/login?instance=${_t}&submit=1`:"/login",class:"button",children:_t?"Log in":"Log in with Mastodon"})}),_t&&os&&e("p",{children:e("a",{href:os,class:"button plain5",children:"Sign up"})}),!_t&&e("p",{class:"insignificant",children:e("small",{children:["Connect your existing Mastodon/Fediverse account.",e("br",{}),"Your credentials are not stored on this server."]})})]}),(as||cs)&&e("p",{class:"app-site-version",children:e("small",{children:[as," ",cs]})}),e("p",{children:[e("a",{href:"https://github.com/cheeaun/phanpy",target:"_blank",children:"Built"})," ","by"," ",e("a",{href:"https://mastodon.social/@cheeaun",target:"_blank",onClick:t=>{t.preventDefault(),T.showAccount="cheeaun@mastodon.social"},children:"@cheeaun"}),"."," ",e("a",{href:Fc,target:"_blank",children:"Privacy Policy"}),"."]})]}),e("div",{id:"why-container",children:e("div",{class:"sections",children:[e("section",{children:[e("img",{src:Lc,alt:"Screenshot of Boosts Carousel",loading:"lazy"}),e("h4",{children:"Boosts Carousel"}),e("p",{children:"Visually separate original posts and re-shared posts (boosted posts)."})]}),e("section",{children:[e("img",{src:Dc,alt:"Screenshot of nested comments thread",loading:"lazy"}),e("h4",{children:"Nested comments thread"}),e("p",{children:"Effortlessly follow conversations. Semi-collapsible replies."})]}),e("section",{children:[e("img",{src:Ec,alt:"Screenshot of grouped notifications",loading:"lazy"}),e("h4",{children:"Grouped notifications"}),e("p",{children:"Similar notifications are grouped and collapsed to reduce clutter."})]}),e("section",{children:[e("img",{src:Mc,alt:"Screenshot of multi-column UI",loading:"lazy"}),e("h4",{children:"Single or multi-column"}),e("p",{children:"By default, single column for zen-mode seekers. Configurable multi-column for power users."})]}),e("section",{children:[e("img",{src:Pc,alt:"Screenshot of multi-hashtag timeline with a form to add more hashtags",loading:"lazy"}),e("h4",{children:"Multi-hashtag timeline"}),e("p",{children:"Up to 5 hashtags combined into a single timeline."})]})]})})]})}const Oc=window.alert;window.__nativeAlert||(window.__nativeAlert=Oc);window.alert=function(t){t instanceof Error&&(t!=null&&t.message)&&(t=t.message),typeof t!="string"&&(t=JSON.stringify(t));const n=fi({text:t,className:"alert",gravity:"top",position:"center",duration:1e4,offset:{y:48},onClick:()=>{n.hideToast()}});n.showToast()};window.__STATES__=T;window.__STATES_STATS__=()=>{const t=["statuses","accounts","spoilers","unfurledLinks","statusQuotes"],n={};t.forEach(o=>{n[o]=Object.keys(T[o]).length});const{statuses:i}=T,s=[];for(const o in i)document.querySelector(`[data-state-post-id~="${o}"], [data-state-post-ids~="${o}"]`)||s.push(o)};setInterval(()=>{if(!window.__IDLE__)return;const{statuses:t,unfurledLinks:n,notifications:i}=T;let s=0;const{instance:o}=Q();for(const a in t){if(!window.__IDLE__)break;try{const h=document.querySelector(`[data-state-post-id~="${a}"], [data-state-post-ids~="${a}"]`),d=i.some(r=>{var u;return a===Ke((u=r.status)==null?void 0:u.id,o)});if(!h&&!d){delete T.statuses[a],delete T.statusQuotes[a];for(const r in n){const u=n[r];if(Ke(u.id,u.instance)===a){delete T.unfurledLinks[r];break}}s++}}catch{}}},15*60*1e3);setTimeout(()=>{for(const t in Nt)setTimeout(()=>{var n,i,s,o;Array.isArray(Nt[t])?(i=(n=Nt[t])[0])==null||i.call(n):(o=(s=Nt)[t])==null||o.call(s)},1)},5e3);(()=>{window.__IDLE__=!0;const t=["mousemove","mousedown","resize","keydown","touchstart","pointerdown","pointermove","wheel"],n=()=>{window.__IDLE__=!0},s=bs(n,3e3),o=()=>{window.__IDLE__=!1,s()};t.forEach(a=>{window.addEventListener(a,o,{passive:!0,capture:!0})}),window.addEventListener("blur",n,{passive:!0}),document.documentElement.addEventListener("mouseleave",a=>{!a.relatedTarget&&!a.toElement&&n()},{passive:!0})})();const zc=/iPad|iPhone|iPod/.test(navigator.userAgent);zc&&document.addEventListener("visibilitychange",()=>{if(document.visibilityState==="visible"){const t=be.local.get("theme");let n;if(t){if(n=document.querySelector('meta[name="theme-color"][data-theme-setting="manual"]'),n){const i=n.content,s=t==="light"?n.dataset.themeLightColorTemp:n.dataset.themeDarkColorTemp;n.content=s||"",setTimeout(()=>{n.content=i},10)}}else{const i=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";if(n=document.querySelector(`meta[name="theme-color"][media*="${i}"]`),n){const s=n.dataset.content,o=n.dataset.contentTemp;n.content=o||"",setTimeout(()=>{n.content=s},10)}}}});{const t=be.local.get("theme");if(t){document.documentElement.classList.add(`is-${t}`),document.querySelector('meta[name="color-scheme"]').setAttribute("content",t||"dark light");const i=document.querySelector('meta[data-theme-setting="manual"]');i&&(i.name="theme-color",i.content=t==="light"?i.dataset.themeLightColor:i.dataset.themeDarkColor),document.querySelectorAll('meta[data-theme-setting="auto"]').forEach(o=>{o.name=""})}const n=be.local.get("textSize");n&&document.documentElement.style.setProperty("--text-size",`${n}px`)}ps(T,t=>{var n;for(const[i,s,o,a]of t){if(s.join(".")==="settings.shortcutsViewMode"){const h=document.getElementById("app");h&&(h.dataset.shortcutsViewMode=(n=T.shortcuts)!=null&&n.length?o:"")}s.join(".")==="settings.cloakMode"&&document.body.classList.toggle("cloak",o)}});function Bc(){const[t,n]=$(!1),[i,s]=$("loading");G(()=>{const a=be.local.get("instanceURL"),h=decodeURIComponent((window.location.search.match(/code=([^&]+)/)||[,""])[1]);if(h){window.history.replaceState({},document.title,window.location.pathname||"/");const d=be.session.get("clientID"),r=be.session.get("clientSecret"),u=be.session.get("vapidKey");(async()=>{s("loading");const{access_token:f}=await gc({instanceURL:a,client_id:d,client_secret:r,code:h}),c=ei({instance:a,accessToken:f});await Promise.allSettled([$n(c,a),ti(c,a,f,u)]),An(),Rn(c),n(!0),s("default")})()}else{window.__IGNORE_GET_ACCOUNT_ERROR__=!0;const d=St();if(d){ds(d.info.id);const{client:r}=Q({account:d}),{instance:u}=r;An(),Rn(r),s("loading"),(async()=>{try{await $n(r,u)}catch{}finally{n(!0),s("default")}})()}else s("default")}},[]);let o=Tt();return T.currentLocation=o.pathname,G(an,[o,t]),/\/https?:/.test(o.pathname)?e(rc,{}):e(_,{children:[e(qc,{isLoggedIn:t,loading:i==="loading"}),e(Hc,{isLoggedIn:t}),i==="default"&&e(mn,{children:e(Ue,{path:"/:instance?/s/:id",element:e(_c,{})})}),t&&e(Ri,{}),t&&e(zo,{}),e(Mo,{}),t&&e(Uo,{}),e(Ai,{isLoggedIn:t}),i!=="loading"&&e(Fo,{onClose:an}),e(_i,{})]})}function qc({isLoggedIn:t,loading:n}){const i=Tt(),s=pe(()=>{const{pathname:o}=i;return!/^\/(login|welcome)/i.test(o)},[i]);return e(mn,{location:s||i,children:[e(Ue,{path:"/",element:t?e(oc,{}):n?e($e,{id:"loader-root"}):e(rs,{})}),e(Ue,{path:"/login",element:e(wc,{})}),e(Ue,{path:"/welcome",element:e(rs,{})})]})}function ls(){return T.prevLocation||null}function Hc({isLoggedIn:t}){const n=Tt(),i=z(ls());return pe(()=>Et("/:instance/s/:id",n.pathname)||Et("/s/:id",n.pathname),[n.pathname,Et])?i.current||(i.current=ls()):i.current=null,e(mn,{location:i.current||n,children:[t&&e(_,{children:[e(Ue,{path:"/notifications",element:e(Hs,{})}),e(Ue,{path:"/mentions",element:e(qs,{})}),e(Ue,{path:"/following",element:e(Tn,{})}),e(Ue,{path:"/b",element:e(Ds,{})}),e(Ue,{path:"/f",element:e(Ns,{})}),e(Ue,{path:"/l",children:[e(Ue,{index:!0,element:e(lc,{})}),e(Ue,{path:":id",element:e(Os,{})})]}),e(Ue,{path:"/fh",element:e(_a,{})}),e(Ue,{path:"/ft",element:e(xa,{})}),e(Ue,{path:"/catchup",element:e(ha,{})})]}),e(Ue,{path:"/:instance?/t/:hashtag",element:e(Fs,{})}),e(Ue,{path:"/:instance?/a/:id",element:e(na,{})}),e(Ue,{path:"/:instance?/p",children:[e(Ue,{index:!0,element:e(ln,{})}),e(Ue,{path:"l",element:e(ln,{local:!0})})]}),e(Ue,{path:"/:instance?/trending",element:e(Gs,{})}),e(Ue,{path:"/:instance?/search",element:e(Vs,{})})]})}"AbortSignal"in window&&(AbortSignal.timeout=AbortSignal.timeout||(t=>{const n=new AbortController;return setTimeout(()=>n.abort(),t),n.signal}));gi(e(mi,{children:e(Bc,{})}),document.getElementById("app"));setTimeout(()=>{try{Object.keys(localStorage).forEach(t=>{t.startsWith("iconify")&&localStorage.removeItem(t)}),Object.keys(sessionStorage).forEach(t=>{t.startsWith("iconify")&&sessionStorage.removeItem(t)}),localStorage.removeItem("settings:boostsCarousel")}catch{}},5e3);window.__CLOAK__=()=>{document.body.classList.toggle("cloak")}; +//# sourceMappingURL=main-1wKRS81d.js.map diff --git a/assets/main-1wKRS81d.js.map b/assets/main-1wKRS81d.js.map new file mode 100644 index 0000000..7611759 --- /dev/null +++ b/assets/main-1wKRS81d.js.map @@ -0,0 +1 @@ +{"version":3,"file":"main-1wKRS81d.js","sources":["../../src/utils/usePageVisibility.js","../../src/components/background-service.jsx","../../src/components/compose-button.jsx","../../src/components/keyboard-shortcuts-help.jsx","../../src/pages/accounts.jsx","../../src/assets/logo.svg","../../src/utils/push-notifications.js","../../src/pages/settings.jsx","../../src/utils/focus-deck.jsx","../../src/utils/useLocationChange.js","../../src/utils/lists.js","../../src/components/list-add-edit.jsx","../../src/components/account-info.jsx","../../src/components/account-sheet.jsx","../../src/components/drafts.jsx","../../src/components/embed-modal.jsx","../../src/components/generic-accounts.jsx","../../src/components/media-alt-modal.jsx","../../src/utils/color-utils.js","../../src/components/media-modal.jsx","../../src/components/report-modal.jsx","../../src/assets/floating-button.svg","../../src/assets/multi-column.svg","../../src/assets/tab-menu-bar.svg","../../src/utils/followed-tags.js","../../src/components/AsyncText.jsx","../../src/components/shortcuts-settings.jsx","../../src/components/modals.jsx","../../src/components/follow-request-buttons.jsx","../../src/components/notification.jsx","../../src/components/notification-service.jsx","../../src/components/search-form.jsx","../../src/components/search-command.jsx","../../src/components/shortcuts.jsx","../../src/utils/timeline-utils.jsx","../../src/utils/useScroll.js","../../src/utils/useScrollFn.js","../../src/components/media-post.jsx","../../src/components/nav-menu.jsx","../../src/components/timeline.jsx","../../src/pages/account-statuses.jsx","../../src/pages/bookmarks.jsx","../../src/assets/features/catch-up.png","../../src/pages/catchup.jsx","../../src/pages/favourites.jsx","../../src/pages/filters.jsx","../../src/pages/followed-hashtags.jsx","../../src/pages/following.jsx","../../src/pages/hashtag.jsx","../../src/pages/list.jsx","../../src/utils/group-notifications.jsx","../../src/pages/mentions.jsx","../../src/pages/notifications.jsx","../../src/pages/public.jsx","../../src/pages/search.jsx","../../src/pages/trending.jsx","../../src/components/columns.jsx","../../src/pages/home.jsx","../../src/utils/get-instance-status-url.js","../../src/pages/http-route.jsx","../../src/pages/lists.jsx","../../src/data/instances.json?url","../../src/utils/auth.js","../../src/pages/login.jsx","../../src/pages/status.jsx","../../src/pages/status-route.jsx","../../src/assets/features/boosts-carousel.jpg","../../src/assets/features/grouped-notifications.jpg","../../src/assets/features/multi-column.jpg","../../src/assets/features/multi-hashtag-timeline.jpg","../../src/assets/features/nested-comments-thread.jpg","../../src/assets/logo-text.svg","../../src/pages/welcome.jsx","../../src/utils/toast-alert.js","../../src/app.jsx","../../src/main.jsx"],"sourcesContent":["import { useEffect, useRef } from 'preact/hooks';\n\nexport default function usePageVisibility(fn = () => {}, deps = []) {\n const savedCallback = useRef(fn);\n useEffect(() => {\n savedCallback.current = fn;\n }, [deps]);\n\n useEffect(() => {\n const handleVisibilityChange = () => {\n const hidden = document.hidden || document.visibilityState === 'hidden';\n console.log('👀 Page visibility changed', hidden ? 'hidden' : 'visible');\n savedCallback.current(!hidden);\n };\n\n document.addEventListener('visibilitychange', handleVisibilityChange);\n return () =>\n document.removeEventListener('visibilitychange', handleVisibilityChange);\n }, []);\n}\n","import { memo } from 'preact/compat';\nimport { useEffect, useRef, useState } from 'preact/hooks';\nimport { useHotkeys } from 'react-hotkeys-hook';\n\nimport { api } from '../utils/api';\nimport showToast from '../utils/show-toast';\nimport states, { saveStatus } from '../utils/states';\nimport useInterval from '../utils/useInterval';\nimport usePageVisibility from '../utils/usePageVisibility';\n\nconst STREAMING_TIMEOUT = 1000 * 3; // 3 seconds\nconst POLL_INTERVAL = 15_000; // 15 seconds\n\nexport default memo(function BackgroundService({ isLoggedIn }) {\n // Notifications service\n // - WebSocket to receive notifications when page is visible\n const [visible, setVisible] = useState(true);\n usePageVisibility(setVisible);\n const checkLatestNotification = async (masto, instance, skipCheckMarkers) => {\n if (states.notificationsLast) {\n const notificationsIterator = masto.v1.notifications.list({\n limit: 1,\n sinceId: states.notificationsLast.id,\n });\n const { value: notifications } = await notificationsIterator.next();\n if (notifications?.length) {\n if (skipCheckMarkers) {\n states.notificationsShowNew = true;\n } else {\n let lastReadId;\n try {\n const markers = await masto.v1.markers.fetch({\n timeline: 'notifications',\n });\n lastReadId = markers?.notifications?.lastReadId;\n } catch (e) {}\n if (lastReadId) {\n states.notificationsShowNew = notifications[0].id !== lastReadId;\n } else {\n states.notificationsShowNew = true;\n }\n }\n }\n }\n };\n\n useEffect(() => {\n let sub;\n let pollNotifications;\n if (isLoggedIn && visible) {\n const { masto, streaming, instance } = api();\n (async () => {\n // 1. Get the latest notification\n await checkLatestNotification(masto, instance);\n\n let hasStreaming = false;\n // 2. Start streaming\n if (streaming) {\n pollNotifications = setTimeout(() => {\n (async () => {\n try {\n hasStreaming = true;\n sub = streaming.user.notification.subscribe();\n console.log('🎏 Streaming notification', sub);\n for await (const entry of sub) {\n if (!sub) break;\n if (!visible) break;\n console.log('🔔🔔 Notification entry', entry);\n if (entry.event === 'notification') {\n console.log('🔔🔔 Notification', entry);\n saveStatus(entry.payload, instance, {\n skipThreading: true,\n });\n }\n states.notificationsShowNew = true;\n }\n console.log('💥 Streaming notification loop STOPPED');\n } catch (e) {\n hasStreaming = false;\n console.error(e);\n }\n\n if (!hasStreaming) {\n console.log('🎏 Streaming failed, fallback to polling');\n pollNotifications = setInterval(() => {\n checkLatestNotification(masto, instance, true);\n }, POLL_INTERVAL);\n }\n })();\n }, STREAMING_TIMEOUT);\n }\n })();\n }\n return () => {\n sub?.unsubscribe?.();\n sub = null;\n clearTimeout(pollNotifications);\n clearInterval(pollNotifications);\n };\n }, [visible, isLoggedIn]);\n\n // Check for updates service\n const lastCheckDate = useRef();\n const checkForUpdates = () => {\n lastCheckDate.current = Date.now();\n console.log('✨ Check app update');\n fetch('./version.json')\n .then((r) => r.json())\n .then((info) => {\n if (info) states.appVersion = info;\n })\n .catch((e) => {\n console.error(e);\n });\n };\n useInterval(checkForUpdates, visible && 1000 * 60 * 30); // 30 minutes\n usePageVisibility((visible) => {\n if (visible) {\n if (!lastCheckDate.current) {\n checkForUpdates();\n } else {\n const diff = Date.now() - lastCheckDate.current;\n if (diff > 1000 * 60 * 60) {\n // 1 hour\n checkForUpdates();\n }\n }\n }\n });\n\n // Global keyboard shortcuts \"service\"\n useHotkeys('shift+alt+k', () => {\n const currentCloakMode = states.settings.cloakMode;\n states.settings.cloakMode = !currentCloakMode;\n showToast({\n text: `Cloak mode ${currentCloakMode ? 'disabled' : 'enabled'}`,\n });\n });\n\n return null;\n});\n","import { useHotkeys } from 'react-hotkeys-hook';\nimport { useSnapshot } from 'valtio';\n\nimport openCompose from '../utils/open-compose';\nimport openOSK from '../utils/open-osk';\nimport states from '../utils/states';\n\nimport Icon from './icon';\n\nexport default function ComposeButton() {\n const snapStates = useSnapshot(states);\n\n function handleButton(e) {\n if (snapStates.composerState.minimized) {\n states.composerState.minimized = false;\n openOSK();\n return;\n }\n\n if (e.shiftKey) {\n const newWin = openCompose();\n\n if (!newWin) {\n states.showCompose = true;\n }\n } else {\n openOSK();\n states.showCompose = true;\n }\n }\n\n useHotkeys('c, shift+c', handleButton, {\n ignoreEventWhen: (e) => {\n const hasModal = !!document.querySelector('#modal-container > *');\n return hasModal;\n },\n });\n\n return (\n \n \n \n );\n}\n","import './keyboard-shortcuts-help.css';\n\nimport { memo } from 'preact/compat';\nimport { useHotkeys } from 'react-hotkeys-hook';\nimport { useSnapshot } from 'valtio';\n\nimport states from '../utils/states';\n\nimport Icon from './icon';\nimport Modal from './modal';\n\nexport default memo(function KeyboardShortcutsHelp() {\n const snapStates = useSnapshot(states);\n\n function onClose() {\n states.showKeyboardShortcutsHelp = false;\n }\n\n useHotkeys(\n '?, shift+?, shift+slash',\n (e) => {\n console.log('help');\n states.showKeyboardShortcutsHelp = true;\n },\n {\n ignoreEventWhen: (e) => {\n const hasModal = !!document.querySelector('#modal-container > *');\n return hasModal;\n },\n },\n );\n\n return (\n !!snapStates.showKeyboardShortcutsHelp && (\n \n
    \n \n
    \n

    Keyboard shortcuts

    \n
    \n
    \n \n {[\n {\n action: 'Keyboard shortcuts help',\n keys: ?,\n },\n {\n action: 'Next post',\n keys: j,\n },\n {\n action: 'Previous post',\n keys: k,\n },\n {\n action: 'Skip carousel to next post',\n keys: (\n <>\n Shift + j\n \n ),\n },\n {\n action: 'Skip carousel to previous post',\n keys: (\n <>\n Shift + k\n \n ),\n },\n {\n action: 'Load new posts',\n keys: .,\n },\n {\n action: 'Open post details',\n keys: (\n <>\n Enter or o\n \n ),\n },\n {\n action: (\n <>\n Expand content warning or\n
    \n toggle expanded/collapsed thread\n \n ),\n keys: x,\n },\n {\n action: 'Close post or dialogs',\n keys: (\n <>\n Esc or Backspace\n \n ),\n },\n {\n action: 'Focus column in multi-column mode',\n keys: (\n <>\n 1 to 9\n \n ),\n },\n {\n action: 'Compose new post',\n keys: c,\n },\n {\n action: 'Compose new post (new window)',\n className: 'insignificant',\n keys: (\n <>\n Shift + c\n \n ),\n },\n {\n action: 'Send post',\n keys: (\n <>\n Ctrl + Enter or +{' '}\n Enter\n \n ),\n },\n {\n action: 'Search',\n keys: /,\n },\n {\n action: 'Reply',\n keys: r,\n },\n {\n action: 'Reply (new window)',\n className: 'insignificant',\n keys: (\n <>\n Shift + r\n \n ),\n },\n {\n action: 'Like (favourite)',\n keys: (\n <>\n l or f\n \n ),\n },\n {\n action: 'Boost',\n keys: (\n <>\n Shift + b\n \n ),\n },\n {\n action: 'Bookmark',\n keys: d,\n },\n {\n action: 'Toggle Cloak mode',\n keys: (\n <>\n Shift + Alt + k\n \n ),\n },\n ].map(({ action, className, keys }) => (\n \n \n \n \n ))}\n
    {action}{keys}
    \n
    \n
    \n
    \n )\n );\n});\n","import './accounts.css';\n\nimport { useAutoAnimate } from '@formkit/auto-animate/preact';\nimport { Menu, MenuDivider, MenuItem } from '@szhsin/react-menu';\nimport { useReducer } from 'preact/hooks';\n\nimport Avatar from '../components/avatar';\nimport Icon from '../components/icon';\nimport Link from '../components/link';\nimport Menu2 from '../components/menu2';\nimport MenuConfirm from '../components/menu-confirm';\nimport NameText from '../components/name-text';\nimport { api } from '../utils/api';\nimport states from '../utils/states';\nimport store from '../utils/store';\nimport { getCurrentAccountID, setCurrentAccountID } from '../utils/store-utils';\n\nfunction Accounts({ onClose }) {\n const { masto } = api();\n // Accounts\n const accounts = store.local.getJSON('accounts');\n const currentAccount = getCurrentAccountID();\n const moreThanOneAccount = accounts.length > 1;\n\n const [_, reload] = useReducer((x) => x + 1, 0);\n const [accountsListParent] = useAutoAnimate();\n\n return (\n
    \n {!!onClose && (\n \n )}\n
    \n

    Accounts

    \n
    \n
    \n
    \n
      \n {accounts.map((account, i) => {\n const isCurrent = account.info.id === currentAccount;\n const isDefault = i === 0; // first account is always default\n return (\n
    • \n
      \n {moreThanOneAccount && (\n \n \n \n )}\n {\n if (isCurrent) {\n try {\n const info = await masto.v1.accounts\n .$select(account.info.id)\n .fetch();\n console.log('fetched account info', info);\n account.info = info;\n store.local.setJSON('accounts', accounts);\n reload();\n } catch (e) {}\n }\n }}\n />\n {\n if (isCurrent) {\n states.showAccount = `${account.info.username}@${account.instanceURL}`;\n } else {\n setCurrentAccountID(account.info.id);\n location.reload();\n }\n }}\n />\n
      \n
      \n {isDefault && moreThanOneAccount && (\n <>\n Default{' '}\n \n )}\n \n \n \n }\n >\n {\n states.showAccount = `${account.info.username}@${account.instanceURL}`;\n }}\n >\n \n View profile…\n \n \n {moreThanOneAccount && (\n {\n // Move account to the top of the list\n accounts.splice(i, 1);\n accounts.unshift(account);\n store.local.setJSON('accounts', accounts);\n reload();\n }}\n >\n \n Set as default\n \n )}\n \n \n Log out @{account.info.acct}?\n \n }\n disabled={!isCurrent}\n menuItemClassName=\"danger\"\n onClick={() => {\n // const yes = confirm('Log out?');\n // if (!yes) return;\n accounts.splice(i, 1);\n store.local.setJSON('accounts', accounts);\n // location.reload();\n location.href = location.pathname || '/';\n }}\n >\n \n Log out…\n \n \n
      \n
    • \n );\n })}\n
    \n

    \n \n Add an existing account\n \n

    \n {moreThanOneAccount && (\n

    \n \n Note: Default account will always be used for first load.\n Switched accounts will persist during the session.\n \n

    \n )}\n
    \n
    \n
    \n );\n}\n\nexport default Accounts;\n","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xml:space='preserve'%20fill-rule='evenodd'%20stroke-linejoin='round'%20stroke-miterlimit='2'%20clip-rule='evenodd'%20viewBox='0%200%2064%2064'%3e%3cpath%20fill='none'%20d='M0%200h63.994v63.994H0z'/%3e%3cpath%20fill='%23a4bff7'%20d='M37.774%2011.471c14.639%203.752%2019.034%2016.557%2015.889%2031.304-.696%203.261-2.563%206.661-6.356%208.693-3.204%201.717-8.07%202.537-15.338.55l-9.634-2.404C11.651%2046.992%208.378%2038.733%2010.027%2031.823c3.627-15.201%2015.543-23.48%2027.747-20.352Z'/%3e%3cpath%20fill='%23d8e7fe'%20d='M36.76%2015.429c12.289%203.15%2015.547%2014.114%2012.907%2026.493-.947%204.44-4.937%209.365-16.664%206.143l-9.684-2.417c-7.854-1.923-10.53-7.8-9.318-12.877%203.016-12.639%2012.611-19.943%2022.759-17.342Z'/%3e%3cpath%20fill='%236081e6'%20d='M27.471%2024.991c-1.457-.698-7.229%203.213-7.663%208.926-.182%202.39%204.55%203.237%205.071-.169.725-4.743%203.715-8.218%202.592-8.757Zm10.746%202.005c-2.083.327-.382%205.901-.595%2010.727-.123%202.8%204.388%203.464%204.703%202.011%201.098-5.073-2.066-13.058-4.108-12.738Z'/%3e%3c/svg%3e\"","// Utils for push notifications\nimport { api } from './api';\nimport { getCurrentAccount } from './store-utils';\n\n// Subscription is an object with the following structure:\n// {\n// data: {\n// alerts: {\n// admin: {\n// report: boolean,\n// signUp: boolean,\n// },\n// favourite: boolean,\n// follow: boolean,\n// mention: boolean,\n// poll: boolean,\n// reblog: boolean,\n// status: boolean,\n// update: boolean,\n// }\n// },\n// policy: \"all\" | \"followed\" | \"follower\" | \"none\",\n// subscription: {\n// endpoint: string,\n// keys: {\n// auth: string,\n// p256dh: string,\n// },\n// },\n// }\n\n// Back-end CRUD\n// =============\n\nfunction createBackendPushSubscription(subscription) {\n const { masto } = api();\n return masto.v1.push.subscription.create(subscription);\n}\n\nfunction fetchBackendPushSubscription() {\n const { masto } = api();\n return masto.v1.push.subscription.fetch();\n}\n\nfunction updateBackendPushSubscription(subscription) {\n const { masto } = api();\n return masto.v1.push.subscription.update(subscription);\n}\n\nfunction removeBackendPushSubscription() {\n const { masto } = api();\n return masto.v1.push.subscription.remove();\n}\n\n// Front-end\n// =========\n\nexport function isPushSupported() {\n return 'serviceWorker' in navigator && 'PushManager' in window;\n}\n\nexport function getRegistration() {\n // return navigator.serviceWorker.ready;\n return navigator.serviceWorker.getRegistration();\n}\n\nasync function getSubscription() {\n const registration = await getRegistration();\n const subscription = registration\n ? await registration.pushManager.getSubscription()\n : undefined;\n return { registration, subscription };\n}\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 const outputArray = new Uint8Array(rawData.length);\n\n for (let i = 0; i < rawData.length; ++i) {\n outputArray[i] = rawData.charCodeAt(i);\n }\n\n return outputArray;\n}\n\n// Front-end <-> back-end\n// ======================\n\nexport async function initSubscription() {\n if (!isPushSupported()) return;\n const { subscription } = await getSubscription();\n let backendSubscription = null;\n try {\n backendSubscription = await fetchBackendPushSubscription();\n } catch (err) {\n if (/(not found|unknown)/i.test(err.message)) {\n // No subscription found\n } else {\n // Other error\n throw err;\n }\n }\n console.log('INIT subscription', {\n subscription,\n backendSubscription,\n });\n\n // Check if the subscription changed\n if (backendSubscription && subscription) {\n const sameEndpoint = backendSubscription.endpoint === subscription.endpoint;\n const { vapidKey } = getCurrentAccount();\n const sameKey = backendSubscription.serverKey === vapidKey;\n if (!sameEndpoint) {\n throw new Error('Backend subscription endpoint changed');\n }\n if (sameKey) {\n // Subscription didn't change\n } else {\n // Subscription changed\n console.error('🔔 Subscription changed', {\n sameEndpoint,\n serverKey: backendSubscription.serverKey,\n vapIdKey: vapidKey,\n endpoint1: backendSubscription.endpoint,\n endpoint2: subscription.endpoint,\n sameKey,\n key1: backendSubscription.serverKey,\n key2: vapidKey,\n });\n throw new Error('Backend subscription key and vapid key changed');\n // Only unsubscribe from backend, not from browser\n // await removeBackendPushSubscription();\n // // Now let's resubscribe\n // // NOTE: I have no idea if this works\n // return await updateSubscription({\n // data: backendSubscription.data,\n // policy: backendSubscription.policy,\n // });\n }\n }\n\n if (subscription && !backendSubscription) {\n // check if account's vapidKey is same as subscription's applicationServerKey\n const { vapidKey } = getCurrentAccount();\n const { applicationServerKey } = subscription.options;\n const vapidKeyStr = urlBase64ToUint8Array(vapidKey).toString();\n const applicationServerKeyStr = new Uint8Array(\n applicationServerKey,\n ).toString();\n const sameKey = vapidKeyStr === applicationServerKeyStr;\n if (sameKey) {\n // Subscription didn't change\n } else {\n // Subscription changed\n console.error('🔔 Subscription changed', {\n vapidKeyStr,\n applicationServerKeyStr,\n sameKey,\n });\n // Unsubscribe since backend doesn't have a subscription\n await subscription.unsubscribe();\n throw new Error('Subscription key and vapid key changed');\n }\n }\n\n // Check if backend subscription returns 404\n // if (subscription && !backendSubscription) {\n // // Re-subscribe to backend\n // backendSubscription = await createBackendPushSubscription({\n // subscription,\n // data: {},\n // policy: 'all',\n // });\n // }\n\n return { subscription, backendSubscription };\n}\n\nexport async function updateSubscription({ data, policy }) {\n console.log('🔔 Updating subscription', { data, policy });\n if (!isPushSupported()) return;\n let { registration, subscription } = await getSubscription();\n let backendSubscription = null;\n\n if (subscription) {\n try {\n backendSubscription = await updateBackendPushSubscription({\n data,\n policy,\n });\n // TODO: save subscription in user settings\n } catch (error) {\n // Backend doesn't have a subscription for this user\n // Create a new one\n backendSubscription = await createBackendPushSubscription({\n subscription,\n data,\n policy,\n });\n // TODO: save subscription in user settings\n }\n } else {\n // User is not subscribed\n const { vapidKey } = getCurrentAccount();\n if (!vapidKey) throw new Error('No server key found');\n subscription = await registration.pushManager.subscribe({\n userVisibleOnly: true,\n applicationServerKey: urlBase64ToUint8Array(vapidKey),\n });\n backendSubscription = await createBackendPushSubscription({\n subscription,\n data,\n policy,\n });\n // TODO: save subscription in user settings\n }\n\n return { subscription, backendSubscription };\n}\n\nexport async function removeSubscription() {\n if (!isPushSupported()) return;\n const { subscription } = await getSubscription();\n if (subscription) {\n await removeBackendPushSubscription();\n await subscription.unsubscribe();\n }\n}\n","import './settings.css';\n\nimport { useEffect, useRef, useState } from 'preact/hooks';\nimport { useSnapshot } from 'valtio';\n\nimport logo from '../assets/logo.svg';\n\nimport Icon from '../components/icon';\nimport Link from '../components/link';\nimport RelativeTime from '../components/relative-time';\nimport targetLanguages from '../data/lingva-target-languages';\nimport { api } from '../utils/api';\nimport getTranslateTargetLanguage from '../utils/get-translate-target-language';\nimport localeCode2Text from '../utils/localeCode2Text';\nimport {\n initSubscription,\n isPushSupported,\n removeSubscription,\n updateSubscription,\n} from '../utils/push-notifications';\nimport showToast from '../utils/show-toast';\nimport states from '../utils/states';\nimport store from '../utils/store';\n\nconst DEFAULT_TEXT_SIZE = 16;\nconst TEXT_SIZES = [14, 15, 16, 17, 18, 19, 20];\nconst {\n PHANPY_WEBSITE: WEBSITE,\n PHANPY_PRIVACY_POLICY_URL: PRIVACY_POLICY_URL,\n PHANPY_IMG_ALT_API_URL: IMG_ALT_API_URL,\n PHANPY_GIPHY_API_KEY: GIPHY_API_KEY,\n} = import.meta.env;\n\nfunction Settings({ onClose }) {\n const snapStates = useSnapshot(states);\n const currentTheme = store.local.get('theme') || 'auto';\n const themeFormRef = useRef();\n const targetLanguage =\n snapStates.settings.contentTranslationTargetLanguage || null;\n const systemTargetLanguage = getTranslateTargetLanguage();\n const systemTargetLanguageText = localeCode2Text(systemTargetLanguage);\n const currentTextSize = store.local.get('textSize') || DEFAULT_TEXT_SIZE;\n\n const [prefs, setPrefs] = useState(store.account.get('preferences') || {});\n const { masto, authenticated, instance } = api();\n // Get preferences every time Settings is opened\n // NOTE: Disabled for now because I don't expect this to change often. Also for some reason, the /api/v1/preferences endpoint is cached for a while and return old prefs if refresh immediately after changing them.\n // useEffect(() => {\n // const { masto } = api();\n // (async () => {\n // try {\n // const preferences = await masto.v1.preferences.fetch();\n // setPrefs(preferences);\n // store.account.set('preferences', preferences);\n // } catch (e) {\n // // Silently fail\n // console.error(e);\n // }\n // })();\n // }, []);\n\n return (\n
    \n {!!onClose && (\n \n )}\n
    \n

    Settings

    \n
    \n
    \n
    \n
      \n
    • \n
      \n \n
      \n
      \n {\n console.log(e);\n e.preventDefault();\n const formData = new FormData(themeFormRef.current);\n const theme = formData.get('theme');\n const html = document.documentElement;\n\n if (theme === 'auto') {\n html.classList.remove('is-light', 'is-dark');\n\n // Disable manual theme \n const $manualMeta = document.querySelector(\n 'meta[data-theme-setting=\"manual\"]',\n );\n if ($manualMeta) {\n $manualMeta.name = '';\n }\n // Enable auto theme s\n const $autoMetas = document.querySelectorAll(\n 'meta[data-theme-setting=\"auto\"]',\n );\n $autoMetas.forEach((m) => {\n m.name = 'theme-color';\n });\n } else {\n html.classList.toggle('is-light', theme === 'light');\n html.classList.toggle('is-dark', theme === 'dark');\n\n // Enable manual theme \n const $manualMeta = document.querySelector(\n 'meta[data-theme-setting=\"manual\"]',\n );\n if ($manualMeta) {\n $manualMeta.name = 'theme-color';\n $manualMeta.content =\n theme === 'light'\n ? $manualMeta.dataset.themeLightColor\n : $manualMeta.dataset.themeDarkColor;\n }\n // Disable auto theme s\n const $autoMetas = document.querySelectorAll(\n 'meta[data-theme-setting=\"auto\"]',\n );\n $autoMetas.forEach((m) => {\n m.name = '';\n });\n }\n document\n .querySelector('meta[name=\"color-scheme\"]')\n .setAttribute(\n 'content',\n theme === 'auto' ? 'dark light' : theme,\n );\n\n if (theme === 'auto') {\n store.local.del('theme');\n } else {\n store.local.set('theme', theme);\n }\n }}\n >\n
      \n \n \n \n
      \n \n
      \n
    • \n
    • \n
      \n \n
      \n
      \n A{' '}\n {\n const value = parseInt(e.target.value, 10);\n const html = document.documentElement;\n // set CSS variable\n html.style.setProperty('--text-size', `${value}px`);\n // save to local storage\n if (value === DEFAULT_TEXT_SIZE) {\n store.local.del('textSize');\n } else {\n store.local.set('textSize', e.target.value);\n }\n }}\n />{' '}\n \n A\n \n \n {TEXT_SIZES.map((size) => (\n \n
      \n
    • \n
    \n
    \n {authenticated && (\n <>\n

    Posting

    \n
    \n
      \n
    • \n
      \n \n
      \n
      \n {\n const { value } = e.target;\n (async () => {\n try {\n await masto.v1.accounts.updateCredentials({\n source: {\n privacy: value,\n },\n });\n setPrefs({\n ...prefs,\n 'posting:default:visibility': value,\n });\n store.account.set('preferences', {\n ...prefs,\n 'posting:default:visibility': value,\n });\n } catch (e) {\n alert('Failed to update posting privacy');\n console.error(e);\n }\n })();\n }}\n >\n \n \n \n \n
      \n
    • \n
    \n
    \n

    \n {' '}\n \n Synced to your instance server's settings.{' '}\n \n Go to your instance ({instance}) for more settings.\n \n \n

    \n \n )}\n

    Experiments

    \n
    \n
      \n
    • \n \n
    • \n
    • \n \n
    • \n
    • \n \n \n
      \n \n
      \n
      \n

      \n Hide \"Translate\" button for\n {snapStates.settings.contentTranslationHideLanguages.length >\n 0 && (\n <>\n {' '}\n (\n {\n snapStates.settings.contentTranslationHideLanguages\n .length\n }\n )\n \n )}\n :\n

      \n {targetLanguages.map((lang) => (\n \n ))}\n
      \n

      \n

      \n \n Note: This feature uses external translation services,\n powered by{' '}\n \n Lingva API\n {' '}\n &{' '}\n \n Lingva Translate\n \n .\n \n

      \n
      \n
      \n \n

      \n \n Automatically show translation for posts in timeline. Only\n works for short posts without content warning,\n media and poll.\n \n

      \n
      \n
    \n \n {!!GIPHY_API_KEY && authenticated && (\n
  • \n \n
    \n \n Note: This feature uses external GIF search service, powered\n by{' '}\n \n GIPHY\n \n . G-rated (suitable for viewing by all ages), tracking\n parameters are stripped, referrer information is omitted\n from requests, but search queries and IP address information\n will still reach their servers.\n \n
    \n
  • \n )}\n {!!IMG_ALT_API_URL && authenticated && (\n
  • \n \n
    \n Only for new images while composing new posts.\n
    \n
    \n \n Note: This feature uses external AI service, powered by{' '}\n \n img-alt-api\n \n . May not work well. Only for images and in English.\n \n
    \n
  • \n )}\n {authenticated && (\n
  • \n \n
    \n \n ⚠️⚠️⚠️ Very experimental.\n
    \n Stored in your own profile’s notes. Profile (private) notes\n are mainly used for other profiles, and hidden for own\n profile.\n
    \n
    \n
    \n \n Note: This feature uses currently-logged-in instance server\n API.\n \n
    \n
  • \n )}\n
  • \n \n
    \n \n Replace text as blocks, useful when taking screenshots, for\n privacy reasons.\n \n
    \n
  • \n {authenticated && (\n
  • \n {\n states.showDrafts = true;\n states.showSettings = false;\n }}\n >\n Unsent drafts\n \n
  • \n )}\n \n \n {authenticated && }\n

    About

    \n
    \n \n \n
    \n Phanpy{' '}\n {\n e.preventDefault();\n states.showAccount = 'phanpy@hachyderm.io';\n }}\n >\n @phanpy\n \n
    \n \n Built\n {' '}\n by{' '}\n {\n e.preventDefault();\n states.showAccount = 'cheeaun@mastodon.social';\n }}\n >\n @cheeaun\n \n
    \n \n

    \n \n Sponsor\n {' '}\n ·{' '}\n \n Donate\n {' '}\n ·{' '}\n \n Privacy Policy\n \n

    \n {__BUILD_TIME__ && (\n

    \n {WEBSITE && (\n <>\n Site:{' '}\n {WEBSITE.replace(/https?:\\/\\//g, '').replace(/\\/$/, '')}\n
    \n \n )}\n Version:{' '}\n {\n e.target.select();\n // Copy to clipboard\n try {\n navigator.clipboard.writeText(e.target.value);\n showToast('Version string copied');\n } catch (e) {\n console.warn(e);\n showToast('Unable to copy version string');\n }\n }}\n />{' '}\n {!__FAKE_COMMIT_HASH__ && (\n \n (\n \n \n \n )\n \n )}\n

    \n )}\n
    \n \n \n );\n}\n\nfunction PushNotificationsSection({ onClose }) {\n if (!isPushSupported()) return null;\n\n const { instance } = api();\n const [uiState, setUIState] = useState('default');\n const pushFormRef = useRef();\n const [allowNotifications, setAllowNotifications] = useState(false);\n const [needRelogin, setNeedRelogin] = useState(false);\n const previousPolicyRef = useRef();\n useEffect(() => {\n (async () => {\n setUIState('loading');\n try {\n const { subscription, backendSubscription } = await initSubscription();\n if (\n backendSubscription?.policy &&\n backendSubscription.policy !== 'none'\n ) {\n setAllowNotifications(true);\n const { alerts, policy } = backendSubscription;\n console.log('backendSubscription', backendSubscription);\n previousPolicyRef.current = policy;\n const { elements } = pushFormRef.current;\n const policyEl = elements.namedItem('policy');\n if (policyEl) policyEl.value = policy;\n // alerts is {}, iterate it\n Object.keys(alerts).forEach((alert) => {\n const el = elements.namedItem(alert);\n if (el?.type === 'checkbox') {\n el.checked = true;\n }\n });\n }\n setUIState('default');\n } catch (err) {\n console.warn(err);\n if (/outside.*authorized/i.test(err.message)) {\n setNeedRelogin(true);\n } else {\n alert(err?.message || err);\n }\n setUIState('error');\n }\n })();\n }, []);\n\n const isLoading = uiState === 'loading';\n\n return (\n {\n setTimeout(() => {\n const values = Object.fromEntries(new FormData(pushFormRef.current));\n const allowNotifications = !!values['policy-allow'];\n const params = {\n data: {\n policy: values.policy,\n alerts: {\n mention: !!values.mention,\n favourite: !!values.favourite,\n reblog: !!values.reblog,\n follow: !!values.follow,\n follow_request: !!values.followRequest,\n poll: !!values.poll,\n update: !!values.update,\n status: !!values.status,\n },\n },\n };\n\n let alertsCount = 0;\n // Remove false values from data.alerts\n // API defaults to false anyway\n Object.keys(params.data.alerts).forEach((key) => {\n if (!params.data.alerts[key]) {\n delete params.data.alerts[key];\n } else {\n alertsCount++;\n }\n });\n const policyChanged =\n previousPolicyRef.current !== params.data.policy;\n\n console.log('PN Form', {\n values,\n allowNotifications: allowNotifications,\n params,\n });\n\n if (allowNotifications && alertsCount > 0) {\n if (policyChanged) {\n console.debug('Policy changed.');\n removeSubscription()\n .then(() => {\n updateSubscription(params);\n })\n .catch((err) => {\n console.warn(err);\n alert('Failed to update subscription. Please try again.');\n });\n } else {\n updateSubscription(params).catch((err) => {\n console.warn(err);\n alert('Failed to update subscription. Please try again.');\n });\n }\n } else {\n removeSubscription().catch((err) => {\n console.warn(err);\n alert('Failed to remove subscription. Please try again.');\n });\n }\n }, 100);\n }}\n >\n

    Push Notifications (beta)

    \n
    \n
      \n
    • \n \n
    • \n
    \n
    \n

    \n \n NOTE: Push notifications only work for one account.\n \n

    \n \n );\n}\n\nexport default Settings;\n","const focusDeck = () => {\n let timer = setTimeout(() => {\n const columns = document.getElementById('columns');\n if (columns) {\n // Focus first column\n // columns.querySelector('.deck-container')?.focus?.();\n } else {\n const modals = document.querySelectorAll('#modal-container > *');\n if (modals?.length) {\n // Focus last modal\n const modal = modals[modals.length - 1]; // last one\n const modalFocusElement =\n modal.querySelector('[tabindex=\"-1\"]') || modal;\n if (modalFocusElement) {\n modalFocusElement.focus();\n return;\n }\n }\n const backDrop = document.querySelector('.deck-backdrop');\n if (backDrop) return;\n // Focus last deck\n const pages = document.querySelectorAll('.deck-container');\n const page = pages[pages.length - 1]; // last one\n if (page && page.tabIndex === -1) {\n console.log('FOCUS', page);\n page.focus();\n }\n }\n }, 100);\n return () => clearTimeout(timer);\n};\n\nexport default focusDeck;\n","import { useEffect, useRef } from 'preact/hooks';\nimport { useLocation } from 'react-router-dom';\n\n// Hook that runs a callback when the location changes\n// Won't run on the first render\n\nexport default function useLocationChange(fn) {\n if (!fn) return;\n const location = useLocation();\n const currentLocationRef = useRef(location.pathname);\n useEffect(() => {\n // console.log('location', {\n // current: currentLocationRef.current,\n // next: location.pathname,\n // });\n if (\n currentLocationRef.current &&\n location.pathname !== currentLocationRef.current\n ) {\n fn?.();\n }\n }, [location.pathname, fn]);\n}\n","import { api } from './api';\nimport pmem from './pmem';\nimport store from './store';\n\nconst FETCH_MAX_AGE = 1000 * 60; // 1 minute\nconst MAX_AGE = 24 * 60 * 60 * 1000; // 1 day\n\nexport const fetchLists = pmem(\n async () => {\n const { masto } = api();\n const lists = await masto.v1.lists.list();\n lists.sort((a, b) => a.title.localeCompare(b.title));\n\n if (lists.length) {\n setTimeout(() => {\n // Save to local storage, with saved timestamp\n store.account.set('lists', {\n lists,\n updatedAt: Date.now(),\n });\n }, 1);\n }\n\n return lists;\n },\n {\n maxAge: FETCH_MAX_AGE,\n },\n);\n\nexport async function getLists() {\n try {\n const { lists, updatedAt } = store.account.get('lists') || {};\n if (!lists?.length) return await fetchLists();\n if (Date.now() - updatedAt > MAX_AGE) {\n // Stale-while-revalidate\n fetchLists();\n return lists;\n }\n return lists;\n } catch (e) {\n return [];\n }\n}\n\nexport const fetchList = pmem(\n (id) => {\n const { masto } = api();\n return masto.v1.lists.$select(id).fetch();\n },\n {\n maxAge: FETCH_MAX_AGE,\n },\n);\n\nexport async function getList(id) {\n const { lists } = store.account.get('lists') || {};\n console.log({ lists });\n if (lists?.length) {\n const theList = lists.find((l) => l.id === id);\n if (theList) return theList;\n }\n try {\n return fetchList(id);\n } catch (e) {\n return null;\n }\n}\n\nexport async function getListTitle(id) {\n const list = await getList(id);\n return list?.title || '';\n}\n\nexport function addListStore(list) {\n const { lists } = store.account.get('lists') || {};\n if (lists?.length) {\n lists.push(list);\n lists.sort((a, b) => a.title.localeCompare(b.title));\n store.account.set('lists', {\n lists,\n updatedAt: Date.now(),\n });\n }\n}\n\nexport function updateListStore(list) {\n const { lists } = store.account.get('lists') || {};\n if (lists?.length) {\n const index = lists.findIndex((l) => l.id === list.id);\n if (index !== -1) {\n lists[index] = list;\n lists.sort((a, b) => a.title.localeCompare(b.title));\n store.account.set('lists', {\n lists,\n updatedAt: Date.now(),\n });\n }\n }\n}\n\nexport function deleteListStore(listID) {\n const { lists } = store.account.get('lists') || {};\n if (lists?.length) {\n const index = lists.findIndex((l) => l.id === listID);\n if (index !== -1) {\n lists.splice(index, 1);\n store.account.set('lists', {\n lists,\n updatedAt: Date.now(),\n });\n }\n }\n}\n","import { useEffect, useRef, useState } from 'preact/hooks';\n\nimport { api } from '../utils/api';\nimport { addListStore, deleteListStore, updateListStore } from '../utils/lists';\nimport supports from '../utils/supports';\n\nimport Icon from './icon';\nimport MenuConfirm from './menu-confirm';\n\nfunction ListAddEdit({ list, onClose }) {\n const { masto } = api();\n const [uiState, setUIState] = useState('default');\n const editMode = !!list;\n const nameFieldRef = useRef();\n const repliesPolicyFieldRef = useRef();\n const exclusiveFieldRef = useRef();\n useEffect(() => {\n if (editMode) {\n nameFieldRef.current.value = list.title;\n repliesPolicyFieldRef.current.value = list.repliesPolicy;\n if (exclusiveFieldRef.current) {\n exclusiveFieldRef.current.checked = list.exclusive;\n }\n }\n }, [editMode]);\n const supportsExclusive = supports('@mastodon/list-exclusive');\n\n return (\n
    \n {!!onClose && (\n \n )}{' '}\n
    \n

    {editMode ? 'Edit list' : 'New list'}

    \n
    \n
    \n {\n e.preventDefault(); // Get form values\n\n const formData = new FormData(e.target);\n const title = formData.get('title');\n const repliesPolicy = formData.get('replies_policy');\n const exclusive = formData.get('exclusive') === 'on';\n console.log({\n title,\n repliesPolicy,\n exclusive,\n });\n setUIState('loading');\n\n (async () => {\n try {\n let listResult;\n\n if (editMode) {\n listResult = await masto.v1.lists.$select(list.id).update({\n title,\n replies_policy: repliesPolicy,\n exclusive,\n });\n } else {\n listResult = await masto.v1.lists.create({\n title,\n replies_policy: repliesPolicy,\n exclusive,\n });\n }\n\n console.log(listResult);\n setUIState('default');\n onClose?.({\n state: 'success',\n list: listResult,\n });\n\n setTimeout(() => {\n if (editMode) {\n updateListStore(listResult);\n } else {\n addListStore(listResult);\n }\n }, 1);\n } catch (e) {\n console.error(e);\n setUIState('error');\n alert(\n editMode ? 'Unable to edit list.' : 'Unable to create list.',\n );\n }\n })();\n }}\n >\n
    \n \n
    \n
    \n \n \n \n \n \n
    \n {supportsExclusive && (\n
    \n \n
    \n )}\n
    \n \n {editMode && (\n {\n // const yes = confirm('Delete this list?');\n // if (!yes) return;\n setUIState('loading');\n\n (async () => {\n try {\n await masto.v1.lists.$select(list.id).remove();\n setUIState('default');\n onClose?.({\n state: 'deleted',\n });\n setTimeout(() => {\n deleteListStore(list.id);\n }, 1);\n } catch (e) {\n console.error(e);\n setUIState('error');\n alert('Unable to delete list.');\n }\n })();\n }}\n >\n \n Delete…\n \n \n )}\n
    \n \n
    \n
    \n );\n}\n\nexport default ListAddEdit;\n","import './account-info.css';\n\nimport { MenuDivider, MenuItem } from '@szhsin/react-menu';\nimport {\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from 'preact/hooks';\nimport punycode from 'punycode';\n\nimport { api } from '../utils/api';\nimport enhanceContent from '../utils/enhance-content';\nimport getHTMLText from '../utils/getHTMLText';\nimport handleContentLinks from '../utils/handle-content-links';\nimport { getLists } from '../utils/lists';\nimport niceDateTime from '../utils/nice-date-time';\nimport pmem from '../utils/pmem';\nimport shortenNumber from '../utils/shorten-number';\nimport showCompose from '../utils/show-compose';\nimport showToast from '../utils/show-toast';\nimport states, { hideAllModals } from '../utils/states';\nimport store from '../utils/store';\nimport { getCurrentAccountID, updateAccount } from '../utils/store-utils';\nimport supports from '../utils/supports';\n\nimport AccountBlock from './account-block';\nimport Avatar from './avatar';\nimport EmojiText from './emoji-text';\nimport Icon from './icon';\nimport Link from './link';\nimport ListAddEdit from './list-add-edit';\nimport Loader from './loader';\nimport Menu2 from './menu2';\nimport MenuConfirm from './menu-confirm';\nimport MenuLink from './menu-link';\nimport Modal from './modal';\nimport SubMenu2 from './submenu2';\nimport TranslationBlock from './translation-block';\n\nconst MUTE_DURATIONS = [\n 60 * 5, // 5 minutes\n 60 * 30, // 30 minutes\n 60 * 60, // 1 hour\n 60 * 60 * 6, // 6 hours\n 60 * 60 * 24, // 1 day\n 60 * 60 * 24 * 3, // 3 days\n 60 * 60 * 24 * 7, // 1 week\n 0, // forever\n];\nconst MUTE_DURATIONS_LABELS = {\n 0: 'Forever',\n 300: '5 minutes',\n 1_800: '30 minutes',\n 3_600: '1 hour',\n 21_600: '6 hours',\n 86_400: '1 day',\n 259_200: '3 days',\n 604_800: '1 week',\n};\n\nconst LIMIT = 80;\n\nconst ACCOUNT_INFO_MAX_AGE = 1000 * 60 * 10; // 10 mins\n\nfunction fetchFamiliarFollowers(currentID, masto) {\n return masto.v1.accounts.familiarFollowers.fetch({\n id: [currentID],\n });\n}\nconst memFetchFamiliarFollowers = pmem(fetchFamiliarFollowers, {\n maxAge: ACCOUNT_INFO_MAX_AGE,\n});\n\nasync function fetchPostingStats(accountID, masto) {\n const fetchStatuses = masto.v1.accounts\n .$select(accountID)\n .statuses.list({\n limit: 20,\n })\n .next();\n\n const { value: statuses } = await fetchStatuses;\n console.log('fetched statuses', statuses);\n const stats = {\n total: statuses.length,\n originals: 0,\n replies: 0,\n boosts: 0,\n };\n // Categories statuses by type\n // - Original posts (not replies to others)\n // - Threads (self-replies + 1st original post)\n // - Boosts (reblogs)\n // - Replies (not-self replies)\n statuses.forEach((status) => {\n if (status.reblog) {\n stats.boosts++;\n } else if (\n !!status.inReplyToId &&\n status.inReplyToAccountId !== status.account.id // Not self-reply\n ) {\n stats.replies++;\n } else {\n stats.originals++;\n }\n });\n\n // Count days since last post\n if (statuses.length) {\n stats.daysSinceLastPost = Math.ceil(\n (Date.now() - new Date(statuses[statuses.length - 1].createdAt)) /\n 86400000,\n );\n }\n\n console.log('posting stats', stats);\n return stats;\n}\nconst memFetchPostingStats = pmem(fetchPostingStats, {\n maxAge: ACCOUNT_INFO_MAX_AGE,\n});\n\nfunction AccountInfo({\n account,\n fetchAccount = () => {},\n standalone,\n instance,\n authenticated,\n}) {\n const { masto } = api({\n instance,\n });\n const { masto: currentMasto, instance: currentInstance } = api();\n const [uiState, setUIState] = useState('default');\n const isString = typeof account === 'string';\n const [info, setInfo] = useState(isString ? null : account);\n\n const sameCurrentInstance = useMemo(\n () => instance === currentInstance,\n [instance, currentInstance],\n );\n\n useEffect(() => {\n if (!isString) {\n setInfo(account);\n return;\n }\n setUIState('loading');\n (async () => {\n try {\n const info = await fetchAccount();\n states.accounts[`${info.id}@${instance}`] = info;\n setInfo(info);\n setUIState('default');\n } catch (e) {\n console.error(e);\n setInfo(null);\n setUIState('error');\n }\n })();\n }, [isString, account, fetchAccount]);\n\n const {\n acct,\n avatar,\n avatarStatic,\n bot,\n createdAt,\n displayName,\n emojis,\n fields,\n followersCount,\n followingCount,\n group,\n // header,\n // headerStatic,\n id,\n lastStatusAt,\n locked,\n note,\n statusesCount,\n url,\n username,\n memorial,\n moved,\n roles,\n hideCollections,\n } = info || {};\n let headerIsAvatar = false;\n let { header, headerStatic } = info || {};\n if (!header || /missing\\.png$/.test(header)) {\n if (avatar && !/missing\\.png$/.test(avatar)) {\n header = avatar;\n headerIsAvatar = true;\n if (avatarStatic && !/missing\\.png$/.test(avatarStatic)) {\n headerStatic = avatarStatic;\n }\n }\n }\n\n const isSelf = useMemo(() => id === getCurrentAccountID(), [id]);\n\n useEffect(() => {\n const infoHasEssentials = !!(\n info?.id &&\n info?.username &&\n info?.acct &&\n info?.avatar &&\n info?.avatarStatic &&\n info?.displayName &&\n info?.url\n );\n if (isSelf && instance && infoHasEssentials) {\n const accounts = store.local.getJSON('accounts');\n let updated = false;\n accounts.forEach((account) => {\n if (account.info.id === info.id && account.instanceURL === instance) {\n account.info = info;\n updated = true;\n }\n });\n if (updated) {\n console.log('Updated account info', info);\n store.local.setJSON('accounts', accounts);\n }\n }\n }, [isSelf, info, instance]);\n\n const accountInstance = useMemo(() => {\n if (!url) return null;\n const domain = punycode.toUnicode(new URL(url).hostname);\n return domain;\n }, [url]);\n\n const [headerCornerColors, setHeaderCornerColors] = useState([]);\n\n const followersIterator = useRef();\n const familiarFollowersCache = useRef([]);\n async function fetchFollowers(firstLoad) {\n if (firstLoad || !followersIterator.current) {\n followersIterator.current = masto.v1.accounts.$select(id).followers.list({\n limit: LIMIT,\n });\n }\n const results = await followersIterator.current.next();\n if (isSelf) return results;\n if (!sameCurrentInstance) return results;\n\n const { value } = results;\n let newValue = [];\n // On first load, fetch familiar followers, merge to top of results' `value`\n // Remove dups on every fetch\n if (firstLoad) {\n let familiarFollowers = [];\n try {\n familiarFollowers = await masto.v1.accounts.familiarFollowers.fetch({\n id: [id],\n });\n } catch (e) {}\n familiarFollowersCache.current = familiarFollowers?.[0]?.accounts || [];\n newValue = [\n ...familiarFollowersCache.current,\n ...value.filter(\n (account) =>\n !familiarFollowersCache.current.some(\n (familiar) => familiar.id === account.id,\n ),\n ),\n ];\n } else if (value?.length) {\n newValue = value.filter(\n (account) =>\n !familiarFollowersCache.current.some(\n (familiar) => familiar.id === account.id,\n ),\n );\n }\n\n return {\n ...results,\n value: newValue,\n };\n }\n\n const followingIterator = useRef();\n async function fetchFollowing(firstLoad) {\n if (firstLoad || !followingIterator.current) {\n followingIterator.current = masto.v1.accounts.$select(id).following.list({\n limit: LIMIT,\n });\n }\n const results = await followingIterator.current.next();\n return results;\n }\n\n const LinkOrDiv = standalone ? 'div' : Link;\n const accountLink = instance ? `/${instance}/a/${id}` : `/a/${id}`;\n\n const [familiarFollowers, setFamiliarFollowers] = useState([]);\n const [postingStats, setPostingStats] = useState();\n const [postingStatsUIState, setPostingStatsUIState] = useState('default');\n const hasPostingStats = !!postingStats?.total;\n\n const renderFamiliarFollowers = async (currentID) => {\n try {\n const followers = await memFetchFamiliarFollowers(\n currentID,\n currentMasto,\n );\n console.log('fetched familiar followers', followers);\n setFamiliarFollowers(\n followers[0].accounts.slice(0, FAMILIAR_FOLLOWERS_LIMIT),\n );\n } catch (e) {\n console.error(e);\n }\n };\n\n const renderPostingStats = async () => {\n if (!id) return;\n setPostingStatsUIState('loading');\n try {\n const stats = await memFetchPostingStats(id, masto);\n setPostingStats(stats);\n setPostingStatsUIState('default');\n } catch (e) {\n console.error(e);\n setPostingStatsUIState('error');\n }\n };\n\n const onRelationshipChange = useCallback(\n ({ relationship, currentID }) => {\n if (!relationship.following) {\n renderFamiliarFollowers(currentID);\n if (!standalone && statusesCount > 0) {\n // Only render posting stats if not standalone and has posts\n renderPostingStats();\n }\n }\n },\n [standalone, id, statusesCount],\n );\n\n const onProfileUpdate = useCallback(\n (newAccount) => {\n if (newAccount.id === id) {\n console.log('Updated account info', newAccount);\n setInfo(newAccount);\n states.accounts[`${newAccount.id}@${instance}`] = newAccount;\n }\n },\n [id, instance],\n );\n\n return (\n \n {uiState === 'error' && (\n
    \n

    Unable to load account.

    \n

    \n \n Go to account page \n \n

    \n
    \n )}\n {uiState === 'loading' ? (\n <>\n
    \n \n
    \n
    \n
    \n

    ███████ ████ ████

    \n

    ████ ████████ ██████ █████████ ████ ██

    \n
    \n \n
    \n \n \n \n \n
    \n
    \n \n ) : (\n info && (\n <>\n {!!moved && (\n
    \n

    \n {displayName} has indicated that their new account is\n now:\n

    \n {\n e.stopPropagation();\n states.showAccount = moved;\n }}\n />\n
    \n )}\n {!!header && !/missing\\.png$/.test(header) && (\n {\n if (e.target.crossOrigin) {\n if (e.target.src !== headerStatic) {\n e.target.src = headerStatic;\n } else {\n e.target.removeAttribute('crossorigin');\n e.target.src = header;\n }\n } else if (e.target.src !== headerStatic) {\n e.target.src = headerStatic;\n } else {\n e.target.remove();\n }\n }}\n crossOrigin=\"anonymous\"\n onLoad={(e) => {\n e.target.classList.add('loaded');\n try {\n // Get color from four corners of image\n const canvas = window.OffscreenCanvas\n ? new OffscreenCanvas(1, 1)\n : document.createElement('canvas');\n const ctx = canvas.getContext('2d', {\n willReadFrequently: true,\n });\n canvas.width = e.target.width;\n canvas.height = e.target.height;\n ctx.imageSmoothingEnabled = false;\n ctx.drawImage(e.target, 0, 0);\n // const colors = [\n // ctx.getImageData(0, 0, 1, 1).data,\n // ctx.getImageData(e.target.width - 1, 0, 1, 1).data,\n // ctx.getImageData(0, e.target.height - 1, 1, 1).data,\n // ctx.getImageData(\n // e.target.width - 1,\n // e.target.height - 1,\n // 1,\n // 1,\n // ).data,\n // ];\n // Get 10x10 pixels from corners, get average color from each\n const pixelDimension = 10;\n const colors = [\n ctx.getImageData(0, 0, pixelDimension, pixelDimension)\n .data,\n ctx.getImageData(\n e.target.width - pixelDimension,\n 0,\n pixelDimension,\n pixelDimension,\n ).data,\n ctx.getImageData(\n 0,\n e.target.height - pixelDimension,\n pixelDimension,\n pixelDimension,\n ).data,\n ctx.getImageData(\n e.target.width - pixelDimension,\n e.target.height - pixelDimension,\n pixelDimension,\n pixelDimension,\n ).data,\n ].map((data) => {\n let r = 0;\n let g = 0;\n let b = 0;\n let a = 0;\n for (let i = 0; i < data.length; i += 4) {\n r += data[i];\n g += data[i + 1];\n b += data[i + 2];\n a += data[i + 3];\n }\n const dataLength = data.length / 4;\n return [\n r / dataLength,\n g / dataLength,\n b / dataLength,\n a / dataLength,\n ];\n });\n const rgbColors = colors.map((color) => {\n const [r, g, b, a] = lightenRGB(color);\n return `rgba(${r}, ${g}, ${b}, ${a})`;\n });\n setHeaderCornerColors(rgbColors);\n console.log({ colors, rgbColors });\n } catch (e) {\n // Silently fail\n }\n }}\n />\n )}\n
    \n {standalone ? (\n \n {}}\n />\n \n }\n >\n
    \n \n
    \n {\n const handle = `@${acct}`;\n try {\n navigator.clipboard.writeText(handle);\n showToast('Handle copied');\n } catch (e) {\n console.error(e);\n showToast('Unable to copy handle');\n }\n }}\n >\n \n Copy handle\n \n \n \n Go to original profile page\n \n \n \n \n View profile image\n \n \n \n View profile header\n \n \n ) : (\n \n )}\n
    \n
    \n
    \n {!!memorial && In Memoriam}\n {!!bot && (\n \n Automated\n \n )}\n {!!group && (\n \n Group\n \n )}\n {roles?.map((role) => (\n \n {role.name}\n {!!accountInstance && (\n <>\n {' '}\n {accountInstance}\n \n )}\n \n ))}\n \n \n )}\n
    \n {\n // states.showAccount = false;\n setTimeout(() => {\n states.showGenericAccounts = {\n id: 'followers',\n heading: 'Followers',\n fetchAccounts: fetchFollowers,\n instance,\n excludeRelationshipAttrs: isSelf\n ? ['followedBy']\n : [],\n blankCopy: hideCollections\n ? 'This user has chosen to not make this information available.'\n : undefined,\n };\n }, 0);\n }}\n >\n {!!familiarFollowers.length && (\n \n \n {familiarFollowers.map((follower) => (\n \n ))}\n \n \n )}\n \n {shortenNumber(followersCount)}\n {' '}\n Followers\n \n {\n // states.showAccount = false;\n setTimeout(() => {\n states.showGenericAccounts = {\n heading: 'Following',\n fetchAccounts: fetchFollowing,\n instance,\n excludeRelationshipAttrs: isSelf ? ['following'] : [],\n blankCopy: hideCollections\n ? 'This user has chosen to not make this information available.'\n : undefined,\n };\n }, 0);\n }}\n >\n \n {shortenNumber(followingCount)}\n {' '}\n Following\n
    \n \n {\n // hideAllModals();\n // }\n // }\n >\n \n {shortenNumber(statusesCount)}\n {' '}\n Posts\n \n {!!createdAt && (\n
    \n Joined{' '}\n \n
    \n )}\n
    \n
    \n {!!postingStats && (\n