diff --git a/assets/compose-qZBynDN_.js b/assets/compose-Dh41_fT-.js similarity index 82% rename from assets/compose-qZBynDN_.js rename to assets/compose-Dh41_fT-.js index 124e43e..e7a6345 100644 --- a/assets/compose-qZBynDN_.js +++ b/assets/compose-Dh41_fT-.js @@ -1,2 +1,2 @@ -import{W as u,G as p}from"./useTitle-60DQEO3r.js";import{h as w,p as f,a as e,K as m}from"./vendor-jabuMAqb.js";window.opener&&(console=window.opener.console);function S(){var s,a;const[t,i]=w("default"),{editStatus:n,replyToStatus:o,draftStatus:d}=window.__COMPOSE__||{};return u(n?"Editing source status":o?`Replying to @${((s=o.account)==null?void 0:s.acct)||((a=o.account)==null?void 0:a.username)}`:"Compose"),f(()=>{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(p,{editStatus:n,replyToStatus:o,draftStatus:d,standalone:!0,hasOpener:window.opener,onClose:c=>{const{newStatus:r,fn:l=()=>{}}=c||{};try{r&&window.opener.__STATES__.reloadStatusPage++,l(),i("closed")}catch{}}})}m(e(S,{}),document.getElementById("app-standalone")); -//# sourceMappingURL=compose-qZBynDN_.js.map +import{W as u,G as p}from"./useTitle-sx0MJWtS.js";import{h as w,p as f,a as e,K as m}from"./vendor-f6XEe9UY.js";window.opener&&(console=window.opener.console);function S(){var s,a;const[t,i]=w("default"),{editStatus:n,replyToStatus:o,draftStatus:d}=window.__COMPOSE__||{};return u(n?"Editing source status":o?`Replying to @${((s=o.account)==null?void 0:s.acct)||((a=o.account)==null?void 0:a.username)}`:"Compose"),f(()=>{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(p,{editStatus:n,replyToStatus:o,draftStatus:d,standalone:!0,hasOpener:window.opener,onClose:c=>{const{newStatus:r,fn:l=()=>{}}=c||{};try{r&&window.opener.__STATES__.reloadStatusPage++,l(),i("closed")}catch{}}})}m(e(S,{}),document.getElementById("app-standalone")); +//# sourceMappingURL=compose-Dh41_fT-.js.map diff --git a/assets/compose-qZBynDN_.js.map b/assets/compose-Dh41_fT-.js.map similarity index 97% rename from assets/compose-qZBynDN_.js.map rename to assets/compose-Dh41_fT-.js.map index eefe7d8..cc4fc28 100644 --- a/assets/compose-qZBynDN_.js.map +++ b/assets/compose-Dh41_fT-.js.map @@ -1 +1 @@ -{"version":3,"file":"compose-qZBynDN_.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 Compose from './components/compose';\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 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","focus","close","_jsxs","class","children","_jsx","onClick","standalone","hasOpener","newStatus","results","fn","render"],"mappings":"gHAUIA,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,GAsBzE,OAnBEH,EAAAA,EACI,wBACAC,EACC,kBACCA,EAAAA,EAAcG,UAAdH,YAAAA,EAAuBI,SAAQJ,EAAAA,EAAcG,UAAdH,YAAAA,EAAuBK,SACvD,GACD,SACN,EAEAC,EAAU,IAAM,CACd,GAAIV,IAAY,SAAU,CACpB,GAAA,CAEFJ,OAAOC,OAAOc,aACJ,CAAC,CACbf,OAAOgB,MAAM,CACf,CAAA,EACC,CAACZ,CAAO,CAAC,EAERA,IAAY,SAEZa,EAAA,MAAA,CAAKC,MAAM,MAAKC,UACdC,EAAA,IAAA,CAAAD,SAAG,8BAAA,CAA+B,EAClCC,EAAA,IAAA,CAAAD,SACEC,EAAA,SAAA,CACEC,QAASA,IAAM,CACbrB,OAAOgB,MAAM,CACf,EAAEG,SACH,cAAA,CAEO,CAAA,CACP,CAAC,CAAA,CACD,EAITjB,IAA4B,CAE5B,WAAAK,EAEIA,cAAAA,EACAC,YAAAA,EACAC,WAAAA,GACAa,UAAU,OAAA,OACVC,WAAkBtB,OAEV,UAAAuB,EAAEA,GAAAA,EAAAA,IAAAA,EAAsB,EAACC,GAAA,CAAA,EAAE,GAAIA,CACjCD,GACF,OAAe,OAAA,WAAA,mBAEfE,IACGrB,EAAA,QAAA,CACHA,MAAAA,EACW,CAAA,CACf,CAAA,CAGNsB,EAAAP,EAAAjB,EAAA,CAAA,CAAA,EAAA,SAAA,eAAA,gBAAA,CAAA"} \ No newline at end of file +{"version":3,"file":"compose-Dh41_fT-.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 Compose from './components/compose';\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 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","focus","close","_jsxs","class","children","_jsx","onClick","standalone","hasOpener","newStatus","results","fn","render"],"mappings":"gHAUIA,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,GAsBzE,OAnBEH,EAAAA,EACI,wBACAC,EACC,kBACCA,EAAAA,EAAcG,UAAdH,YAAAA,EAAuBI,SAAQJ,EAAAA,EAAcG,UAAdH,YAAAA,EAAuBK,SACvD,GACD,SACN,EAEAC,EAAU,IAAM,CACd,GAAIV,IAAY,SAAU,CACpB,GAAA,CAEFJ,OAAOC,OAAOc,aACJ,CAAC,CACbf,OAAOgB,MAAM,CACf,CAAA,EACC,CAACZ,CAAO,CAAC,EAERA,IAAY,SAEZa,EAAA,MAAA,CAAKC,MAAM,MAAKC,UACdC,EAAA,IAAA,CAAAD,SAAG,8BAAA,CAA+B,EAClCC,EAAA,IAAA,CAAAD,SACEC,EAAA,SAAA,CACEC,QAASA,IAAM,CACbrB,OAAOgB,MAAM,CACf,EAAEG,SACH,cAAA,CAEO,CAAA,CACP,CAAC,CAAA,CACD,EAITjB,IAA4B,CAE5B,WAAAK,EAEIA,cAAAA,EACAC,YAAAA,EACAC,WAAAA,GACAa,UAAU,OAAA,OACVC,WAAkBtB,OAEV,UAAAuB,EAAEA,GAAAA,EAAAA,IAAAA,EAAsB,EAACC,GAAA,CAAA,EAAE,GAAIA,CACjCD,GACF,OAAe,OAAA,WAAA,mBAEfE,IACGrB,EAAA,QAAA,CACHA,MAAAA,EACW,CAAA,CACf,CAAA,CAGNsB,EAAAP,EAAAjB,EAAA,CAAA,CAAA,EAAA,SAAA,eAAA,gBAAA,CAAA"} \ 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/main-8KUm2C7U.css b/assets/main-8KUm2C7U.css deleted file mode 100644 index 1a32db2..0000000 --- a/assets/main-8KUm2C7U.css +++ /dev/null @@ -1 +0,0 @@ -body.cloak a,.cloak a{text-decoration-color:var(--link-color)}body.cloak .account-container :is(main>:not(.actions)){text-decoration-thickness:1.1em;text-decoration-line:line-through;text-rendering:optimizeSpeed;-webkit-filter:opacity(.5);filter:opacity(.5)}.cloak .account-container :is(main>:not(.actions)){text-decoration-thickness:1.1em;text-decoration-line:line-through;text-rendering:optimizeSpeed;-webkit-filter:opacity(.5);filter:opacity(.5)}body.cloak .account-container :is(main>:not(.actions)) *{text-decoration-thickness:1.1em;text-decoration-line:line-through;text-rendering:optimizeSpeed;-webkit-filter:opacity(.5);filter:opacity(.5)}.cloak .account-container :is(main>:not(.actions)) *{text-decoration-thickness:1.1em;text-decoration-line:line-through;text-rendering:optimizeSpeed;-webkit-filter:opacity(.5);filter:opacity(.5)}body.cloak .name-text,.cloak .name-text,body.cloak .name-text *,.cloak .name-text *,body.cloak .status .content-container,.cloak .status .content-container,body.cloak .status .content-container *,.cloak .status .content-container *,body.cloak .status .content-compact,.cloak .status .content-compact,body.cloak .account-container header:not(.does-not-exist),.cloak .account-container header:not(.does-not-exist),body.cloak .account-container header:not(.does-not-exist) *,.cloak .account-container header:not(.does-not-exist) *,body.cloak .header-double-lines,.cloak .header-double-lines,body.cloak .account-block,.cloak .account-block{text-decoration-thickness:1.1em;text-decoration-line:line-through;text-rendering:optimizeSpeed;-webkit-filter:opacity(.5);filter:opacity(.5)}body.cloak .account-container :is(main>:not(.actions)) *{-webkit-filter:none;filter:none}.cloak .account-container :is(main>:not(.actions)) *{-webkit-filter:none;filter:none}body.cloak .name-text *,.cloak .name-text *,body.cloak .status .content-container *,.cloak .status .content-container *,body.cloak .account-container header:not(.does-not-exist) *,.cloak .account-container header:not(.does-not-exist) *{-webkit-filter:none;filter:none}body.cloak .status img,body.cloak .status video,body.cloak .status audio,.cloak .status img,.cloak .status video,.cloak .status audio,body.cloak .media-post .media,.cloak .media-post .media,body.cloak .avatar,.cloak .avatar,body.cloak .emoji,.cloak .emoji,body.cloak .header-banner,.cloak .header-banner{-webkit-filter:contrast(0)!important;filter:contrast(0)!important;background-color:#000!important}@supports (display: -webkit-box){body.cloak .card .title,body.cloak .card .meta{background-color:var(--text-color)!important}}#keyboard-shortcuts-help-container table tr>*{border-top:1px solid var(--outline-color);vertical-align:middle}#keyboard-shortcuts-help-container table th{font-weight:400;text-align:start;padding:.25em 0;line-height:1;width:60%}#keyboard-shortcuts-help-container table td{padding:.25em 1em}#keyboard-shortcuts-help-container kbd{border-radius:4px;display:inline-block;padding:.2em .3em;margin:1px 0;line-height:1;border:1px solid var(--outline-color);background-color:var(--bg-faded-color);background-image:-webkit-linear-gradient(bottom,var(--bg-blur-color),transparent);background-image:linear-gradient(to top,var(--bg-blur-color),transparent);text-shadow:0 1px var(--bg-color);box-shadow:0 1px var(--drop-shadow-color),0 1px 1px var(--drop-shadow-color),0 1px 8px var(--drop-shadow-color),inset 0 1px var(--bg-blur-color)}#keyboard-shortcuts-help-container kbd:active{box-shadow:0 1px 4px var(--drop-shadow-color),inset 0 1px var(--bg-blur-color);-webkit-transform:translateY(1px);transform:translateY(1px);-webkit-filter:brightness(.95);filter:brightness(.95)}#accounts-container{background-color:var(--bg-faded-color)}#accounts-container section{background-color:var(--bg-color);margin:8px 0 0;padding:8px 16px;border-top:var(--hairline-width) solid var(--outline-color);border-bottom:var(--hairline-width) solid var(--outline-color);border-radius:8px}#accounts-container section ul>li:last-child{border-bottom:none}#accounts-container section>ul{margin:0;padding:0;list-style:none}#accounts-container section>ul>li{padding:8px 0;display:-webkit-box;display:flex;-webkit-box-pack:justify;justify-content:space-between;-webkit-box-align:center;align-items:center;border-bottom:var(--hairline-width) solid var(--outline-color)}#accounts-container section>ul>li .current{margin-right:8px;color:var(--green-color);opacity:.1}#accounts-container section>ul>li .current.is-current{opacity:1}#accounts-container section>ul>li .current.is-current+.avatar{box-shadow:0 0 0 1.5px var(--green-color),0 0 8px var(--green-color)}#accounts-container section>ul>li .avatar+.name-text{vertical-align:middle}#accounts-container section>ul>li>div.actions{flex-basis:fit-content;margin-top:8px}#accounts-container .avatar{margin-right:8px}#accounts-container .accounts-list li div{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center}#settings-container{background-color:var(--bg-faded-color)}#settings-container main h3{font-size:85%;text-transform:uppercase;color:var(--text-insignificant-color);font-weight:400;padding-inline:16px}#settings-container section{background-color:var(--bg-color);margin:8px 0 0;padding:8px 16px;border-top:var(--hairline-width) solid var(--outline-color);border-bottom:var(--hairline-width) solid var(--outline-color);border-radius:8px}#settings-container section ul>li:last-child{border-bottom:none}#settings-container section>ul{margin:0;padding:0;list-style:none}#settings-container section>ul>li{padding:8px 0;display:-webkit-box;display:flex;-webkit-box-pack:justify;justify-content:space-between;-webkit-box-align:center;align-items:center;flex-wrap:wrap;border-bottom:var(--hairline-width) solid var(--outline-color)}#settings-container section>ul>li>div:last-child{text-align:right}#settings-container section>ul>li .sub-section{text-align:left!important;margin-top:8px;margin-left:24px}#settings-container section>ul>li .sub-section p{margin-block:.5em}#settings-container section>ul>li .sub-section ul{margin:0;padding:0;list-style:none}#settings-container section>ul>li .sub-section ul li{line-height:1.6}#settings-container section>ul>li .sub-section p:last-child{-webkit-margin-after:0;margin-block-end:0}#settings-container div{vertical-align:middle}#settings-container section>ul>li .sub-section hr{margin:8px 0}#settings-container section select{padding:4px}#settings-container .radio-group{display:-webkit-inline-box;display:inline-flex;-webkit-box-align:center;align-items:center;border-radius:1.1em;border:1px solid var(--button-bg-color);overflow:hidden;padding:1px;flex-wrap:wrap}#settings-container .radio-group input[type=radio]{opacity:0;position:absolute;pointer-events:none}#settings-container .radio-group label{display:inline-block;padding:6px 12px;cursor:pointer;-webkit-box-flex:1;flex-grow:1;text-align:center}#settings-container .radio-group label input:checked+span{color:var(--link-color);font-weight:700}#settings-container .radio-group label:hover,#settings-container .radio-group label:focus{color:var(--button-bg-color)}#settings-container .radio-group label:has(input:checked){border-radius:1.1em;color:var(--button-text-color);background-color:var(--button-bg-color)}#settings-container .radio-group label:has(input:checked) input:checked+span{color:inherit}#settings-container .range-group{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;gap:4px}@media (max-width: 319.98px){#settings-container .range-group{display:grid;grid-gap:0;gap:0;grid-column-gap:4px;-webkit-column-gap:4px;-moz-column-gap:4px;column-gap:4px;grid-template-areas:"label1 label2" "input input";grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr}#settings-container .range-group>span:first-child{text-align:left}#settings-container .range-group>span:last-child{text-align:right}}#settings-container .range-group input[type=range]{-webkit-box-flex:1;flex-grow:1;width:100%}@media (max-width: 319.98px){#settings-container .range-group input[type=range]{grid-area:input}}#settings-container .checkbox-fields{border:1px solid var(--outline-color);background-color:var(--bg-faded-color);border-radius:8px;margin:8px 0;max-height:6.5em;overflow:auto;display:-webkit-box;display:flex;flex-wrap:wrap;font-size:90%}#settings-container .checkbox-fieldset label{-webkit-box-flex:1;flex:1 0 10em;padding:4px;display:-webkit-box;display:flex;gap:4px;-webkit-box-align:start;align-items:flex-start}#settings-container .section-postnote{margin-bottom:48px;padding-inline:16px;color:var(--text-insignificant-color)}#settings-container .synced-icon{color:var(--link-color);vertical-align:middle}#settings-container .version-string{padding:4px;font-family:var(--monospace-font);font-size:85%;text-align:center}.account-container{overflow-y:auto;max-width:100%;--banner-overlap: 44px;--posting-stats-size: 8px;--original-color: var(--link-color)}.account-container .note{font-size:95%;line-height:1.4;text-wrap:pretty;margin-bottom:16px}.account-container .note>*:first-child{margin-top:0;padding-top:0}.account-container .note>*:last-child{margin-bottom:0;padding-bottom:0}.account-container .note:not(:has(p)):not(:empty){padding:1em 0}.account-container .posting-stats{font-size:90%;color:var(--text-insignificant-color);background-color:var(--bg-faded-color);padding:8px 12px}.account-container .posting-stats:focus-within{background-color:var(--link-bg-hover-color)}.account-container .posting-stats:hover{background-color:var(--link-bg-hover-color)}.account-container .posting-stats-bar{--gap: .5px;--gap-color: var(--outline-color);height:var(--posting-stats-size);border-radius:var(--posting-stats-size);overflow:hidden;margin:8px 0;box-shadow:inset 0 0 0 1px var(--outline-color),inset 0 0 0 1.5px var(--bg-blur-color);background-color:var(--bg-color);background-repeat:no-repeat;-webkit-animation:swoosh-bg-image .3s ease-in-out .3s both;animation:swoosh-bg-image .3s ease-in-out .3s both;background-image:-webkit-linear-gradient(left,var(--original-color) 0%,var(--original-color) calc(var(--originals-percentage) - .5px),var(--outline-color) calc(var(--originals-percentage) - .5px),var(--outline-color) calc(var(--originals-percentage) + .5px),var(--reply-to-color) calc(var(--originals-percentage) + .5px),var(--reply-to-color) calc(var(--replies-percentage) - .5px),var(--outline-color) calc(var(--replies-percentage) - .5px),var(--outline-color) calc(var(--replies-percentage) + .5px),var(--reblog-color) calc(var(--replies-percentage) + .5px),var(--reblog-color) 100%);background-image:linear-gradient(to right,var(--original-color) 0%,var(--original-color) calc(var(--originals-percentage) - .5px),var(--outline-color) calc(var(--originals-percentage) - .5px),var(--outline-color) calc(var(--originals-percentage) + .5px),var(--reply-to-color) calc(var(--originals-percentage) + .5px),var(--reply-to-color) calc(var(--replies-percentage) - .5px),var(--outline-color) calc(var(--replies-percentage) - .5px),var(--outline-color) calc(var(--replies-percentage) + .5px),var(--reblog-color) calc(var(--replies-percentage) + .5px),var(--reblog-color) 100%);background-image:-webkit-linear-gradient(left,var(--original-color) 0%,var(--original-color) calc(var(--originals-percentage) - var(--gap)),var(--gap-color) calc(var(--originals-percentage) - var(--gap)),var(--gap-color) calc(var(--originals-percentage) + var(--gap)),var(--reply-to-color) calc(var(--originals-percentage) + var(--gap)),var(--reply-to-color) calc(var(--replies-percentage) - var(--gap)),var(--gap-color) calc(var(--replies-percentage) - var(--gap)),var(--gap-color) calc(var(--replies-percentage) + var(--gap)),var(--reblog-color) calc(var(--replies-percentage) + var(--gap)),var(--reblog-color) 100%);background-image:linear-gradient(to right,var(--original-color) 0%,var(--original-color) calc(var(--originals-percentage) - var(--gap)),var(--gap-color) calc(var(--originals-percentage) - var(--gap)),var(--gap-color) calc(var(--originals-percentage) + var(--gap)),var(--reply-to-color) calc(var(--originals-percentage) + var(--gap)),var(--reply-to-color) calc(var(--replies-percentage) - var(--gap)),var(--gap-color) calc(var(--replies-percentage) - var(--gap)),var(--gap-color) calc(var(--replies-percentage) + var(--gap)),var(--reblog-color) calc(var(--replies-percentage) + var(--gap)),var(--reblog-color) 100%)}.account-container .posting-stats-legends{font-size:12px;text-transform:uppercase}.account-container .posting-stats-legend-item{display:inline-block;width:var(--posting-stats-size);height:var(--posting-stats-size);border-radius:var(--posting-stats-size);background-color:var(--text-insignificant-color);vertical-align:middle;margin:0 4px 2px;box-shadow:inset 0 0 0 1px var(--outline-color),inset 0 0 0 1.5px var(--bg-blur-color)}.account-container .posting-stats-legend-item.posting-stats-legend-item-originals{background-color:var(--original-color)}.account-container .posting-stats-legend-item.posting-stats-legend-item-replies{background-color:var(--reply-to-color)}.account-container .posting-stats-legend-item.posting-stats-legend-item-boosts{background-color:var(--reblog-color)}.account-container.skeleton{color:var(--outline-color)}.account-container .account-moved{-webkit-animation:fade-in .3s both ease-in-out .3s;animation:fade-in .3s both ease-in-out .3s;padding:16px;background-color:var(--bg-color);position:absolute;top:8px;inset-inline:8px;z-index:3;border:1px solid var(--outline-color);box-shadow:0 8px 16px var(--drop-shadow-color);border-radius:8px;overflow:hidden}.account-container .account-moved p{margin:0 0 8px;padding:0}.account-container .account-moved .account-block{background-color:var(--bg-faded-color);padding:8px;border-radius:8px;border:1px solid var(--link-faded-color)}.account-container .account-moved .account-block:hover{background-color:var(--link-bg-hover-color);border-color:var(--link-color)}.account-container .account-moved .account-block b{color:var(--link-color)}.account-container .account-moved~*{-webkit-filter:grayscale(.75) opacity(.75);filter:grayscale(.75) opacity(.75)}.account-container .header-banner{vertical-align:top;aspect-ratio:6 / 1;width:100%;height:auto;-o-object-fit:cover;object-fit:cover;-webkit-mask-image:-webkit-linear-gradient(top,hsl(0,0%,0%) 0%,hsla(0,0%,0%,.987) 14%,hsla(0,0%,0%,.951) 26.2%,hsla(0,0%,0%,.896) 36.8%,hsla(0,0%,0%,.825) 45.9%,hsla(0,0%,0%,.741) 53.7%,hsla(0,0%,0%,.648) 60.4%,hsla(0,0%,0%,.55) 66.2%,hsla(0,0%,0%,.45) 71.2%,hsla(0,0%,0%,.352) 75.6%,hsla(0,0%,0%,.259) 79.6%,hsla(0,0%,0%,.175) 83.4%,hsla(0,0%,0%,.104) 87.2%,hsla(0,0%,0%,.049) 91.1%,hsla(0,0%,0%,.013) 95.3%,hsla(0,0%,0%,0) 100%);mask-image:linear-gradient(to bottom,hsl(0,0%,0%) 0%,hsla(0,0%,0%,.987) 14%,hsla(0,0%,0%,.951) 26.2%,hsla(0,0%,0%,.896) 36.8%,hsla(0,0%,0%,.825) 45.9%,hsla(0,0%,0%,.741) 53.7%,hsla(0,0%,0%,.648) 60.4%,hsla(0,0%,0%,.55) 66.2%,hsla(0,0%,0%,.45) 71.2%,hsla(0,0%,0%,.352) 75.6%,hsla(0,0%,0%,.259) 79.6%,hsla(0,0%,0%,.175) 83.4%,hsla(0,0%,0%,.104) 87.2%,hsla(0,0%,0%,.049) 91.1%,hsla(0,0%,0%,.013) 95.3%,hsla(0,0%,0%,0) 100%);margin-bottom:calc(-1 * var(--banner-overlap));-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none;opacity:0;-webkit-transition:opacity .3s ease-out;transition:opacity .3s ease-out}.account-container .header-banner.loaded{opacity:1}.sheet .account-container .header-banner{border-top-left-radius:16px;border-top-right-radius:16px}.account-container .header-banner.header-is-avatar{-webkit-mask-image:-webkit-linear-gradient(top,hsl(0,0%,0%) 0%,hsla(0,0%,0%,.987) 8.1%,hsla(0,0%,0%,.951) 15.5%,hsla(0,0%,0%,.896) 22.5%,hsla(0,0%,0%,.825) 29%,hsla(0,0%,0%,.741) 35.3%,hsla(0,0%,0%,.648) 41.2%,hsla(0,0%,0%,.55) 47.1%,hsla(0,0%,0%,.45) 52.9%,hsla(0,0%,0%,.352) 58.8%,hsla(0,0%,0%,.259) 64.7%,hsla(0,0%,0%,.175) 71%,hsla(0,0%,0%,.104) 77.5%,hsla(0,0%,0%,.049) 84.5%,hsla(0,0%,0%,.013) 91.9%,hsla(0,0%,0%,0) 100%);mask-image:linear-gradient(to bottom,hsl(0,0%,0%) 0%,hsla(0,0%,0%,.987) 8.1%,hsla(0,0%,0%,.951) 15.5%,hsla(0,0%,0%,.896) 22.5%,hsla(0,0%,0%,.825) 29%,hsla(0,0%,0%,.741) 35.3%,hsla(0,0%,0%,.648) 41.2%,hsla(0,0%,0%,.55) 47.1%,hsla(0,0%,0%,.45) 52.9%,hsla(0,0%,0%,.352) 58.8%,hsla(0,0%,0%,.259) 64.7%,hsla(0,0%,0%,.175) 71%,hsla(0,0%,0%,.104) 77.5%,hsla(0,0%,0%,.049) 84.5%,hsla(0,0%,0%,.013) 91.9%,hsla(0,0%,0%,0) 100%);-webkit-filter:blur(32px) saturate(3) opacity(.5);filter:blur(32px) saturate(3) opacity(.5);pointer-events:none}.account-container .header-banner:hover{-webkit-animation:position-object 5s ease-in-out 1s 5;animation:position-object 5s ease-in-out 1s 5}.account-container .header-banner:active{-webkit-mask-image:none;mask-image:none}.account-container .header-banner:active+header{background-image:none}.account-container .header-banner:active+header .avatar+*{-webkit-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out;opacity:0!important}.account-container .header-banner:active,.account-container .header-banner:active+header .avatar{-webkit-transition:-webkit-filter .3s ease-in-out;transition:-webkit-filter .3s ease-in-out;transition:filter .3s ease-in-out;transition:filter .3s ease-in-out,-webkit-filter .3s ease-in-out;-webkit-filter:none!important;filter:none!important}.account-container .header-banner:active+header .avatar img{-webkit-transition:border-radius .3s ease-in-out;transition:border-radius .3s ease-in-out;border-radius:8px}@media (min-height: 480px){.account-container .header-banner:not(.header-is-avatar){aspect-ratio:3 / 1}}.account-container header{position:relative;z-index:1;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;gap:8px;text-shadow:-8px 0 12px -6px var(--bg-color),8px 0 12px -6px var(--bg-color),-8px 0 24px --bg-color,8px 0 24px --bg-color;text-shadow:-8px 0 12px -6px var(--bg-color),8px 0 12px -6px var(--bg-color),-8px 0 24px var(--header-color-3, --bg-color),8px 0 24px var(--header-color-4, --bg-color);-webkit-animation:fade-in .3s both ease-in-out .1s;animation:fade-in .3s both ease-in-out .1s}.account-container header .avatar{overflow:visible;overflow:initial;-webkit-filter:drop-shadow(-2px 0 4px --bg-color) drop-shadow(2px 0 4px --bg-color);filter:drop-shadow(-2px 0 4px --bg-color) drop-shadow(2px 0 4px --bg-color);-webkit-filter:drop-shadow(-2px 0 4px var(--header-color-3, --bg-color)) drop-shadow(2px 0 4px var(--header-color-4, --bg-color));filter:drop-shadow(-2px 0 4px var(--header-color-3, --bg-color)) drop-shadow(2px 0 4px var(--header-color-4, --bg-color))}.account-container header .avatar:not(.has-alpha) img{border-radius:inherit}.account-container main>*:first-child{-webkit-animation:fade-in .3s both ease-in-out .15s;animation:fade-in .3s both ease-in-out .15s}.account-container main>*:first-child~*{-webkit-animation:fade-in .3s both ease-in-out .2s;animation:fade-in .3s both ease-in-out .2s}.account-container .account-block .account-block-acct{display:block;opacity:.7}.private-note-tag{z-index:1;-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-block;color:var(--private-note-text-color);background-color:var(--private-note-bg-color);border:1px solid var(--private-note-border-color);padding:4px;line-height:normal;font-size:smaller;border-radius:0;align-self:center!important;-webkit-clip-path:polygon(0 0,calc(100% - 4px) 0,100% 4px,100% 100%,0 100%);clip-path:polygon(0 0,calc(100% - 4px) 0,100% 4px,100% 100%,0 100%);background-size:4px 4px;background-repeat:no-repeat;background-position:top right;background-image:-webkit-linear-gradient(top,var(--private-note-border-color),var(--private-note-border-color));background-image:linear-gradient(to bottom,var(--private-note-border-color),var(--private-note-border-color));-webkit-transition:-webkit-transform .15s ease-in-out;transition:-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out;transition:transform .15s ease-in-out,-webkit-transform .15s ease-in-out;word-wrap:anywhere}.private-note-tag span{color:inherit;opacity:.75;text-overflow:ellipsis;overflow:hidden;display:-webkit-box;display:box;-webkit-box-orient:vertical;box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;text-align:left}.private-note-tag:hover:not(:active){-webkit-filter:none!important;filter:none!important;-webkit-transform:rotate(-.5deg) scale(1.05);transform:rotate(-.5deg) scale(1.05)}.private-note-tag:hover:not(:active) span{opacity:1}.account-container .private-note{font-size:90%;color:var(--text-insignificant-color);text-overflow:ellipsis;overflow:hidden;white-space:nowrap;padding:12px;background-color:var(--bg-faded-color);display:-webkit-box;display:flex;gap:.5em;-webkit-box-align:center;align-items:center}.account-container .private-note b{font-size:90%;text-transform:uppercase}.account-container .private-note p{margin:0;padding:0}.account-container .stats{display:-webkit-box;display:flex;-webkit-column-gap:24px;-moz-column-gap:24px;column-gap:24px;row-gap:8px;font-size:90%;background-color:var(--bg-faded-color);padding:12px;line-height:1.25;overflow-x:auto!important;-webkit-box-pack:start;justify-content:flex-start;position:relative}.account-container .stats [tabindex="0"]:hover,.account-container .stats [tabindex="0"]:focus{color:var(--text-color);cursor:pointer;text-decoration-color:var(--text-insignificant-color)}.account-container .stats .stats-avatars-bunch{-webkit-animation:appear 1s both ease-in-out;animation:appear 1s both ease-in-out}.account-container .stats .stats-avatars-bunch>*:not(:first-child){margin:0 0 0 -4px}.timeline-start .account-container .stats{flex-wrap:wrap}.account-container .stats>*{flex-shrink:0;display:-webkit-box;display:flex;gap:.5em}.account-container .stats a:not(.insignificant){color:inherit}.account-container .stats a:hover{color:inherit}.account-container footer{padding:0 16px 16px}.account-container .actions{display:-webkit-box;display:flex;gap:8px;-webkit-box-pack:justify;justify-content:space-between;min-height:2.5em;-webkit-box-align:center;align-items:center}.account-container .actions .buttons{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center}.account-container .account-metadata-box{overflow:hidden;border-radius:16px;display:block;-webkit-text-decoration:none;text-decoration:none}.account-container .account-metadata-box>*{margin-bottom:2px;border-radius:4px;overflow:hidden}.account-container .account-metadata-box:has(+.account-metadata-box){border-bottom-left-radius:4px;border-bottom-right-radius:4px}.account-container .account-metadata-box+.account-metadata-box{border-radius:4px 4px 16px 16px}.account-container .profile-metadata{display:-webkit-box;display:flex;gap:2px;overflow:hidden;overflow-x:auto}.timeline-start .account-container .profile-metadata{flex-wrap:wrap}.account-container .profile-field{min-width:0;-webkit-box-flex:1;flex-grow:1;font-size:90%;background-color:var(--bg-faded-color);padding:12px;border-radius:4px;-webkit-filter:saturate(.75);filter:saturate(.75);line-height:1.25;flex-shrink:0;max-width:calc(100% - 12px - 2em)}.account-container .profile-field:only-child{max-width:100%}.timeline-start .account-container .profile-field{flex-shrink:1;max-width:100%}.account-container .note .invisible,.account-container .profile-field .invisible{display:none}.account-container .note .ellipsis:after{content:"…"}.account-container .profile-field .ellipsis:after{content:"…"}.account-container .profile-field b{font-size:90%;color:var(--text-insignificant-color);text-transform:uppercase}.account-container .profile-field b .icon{color:var(--green-color)}.account-container .profile-field p{margin:0}.account-container .common-followers{font-size:90%;color:var(--text-insignificant-color);background-color:var(--bg-faded-color);padding:8px 12px;margin:0}.timeline-start .account-container{border-bottom:1px solid var(--outline-color);position:relative}.timeline-start .account-container header{padding:16px;-webkit-animation:none;animation:none}.timeline-start .account-container main{padding:1px 16px 16px}.timeline-start .account-container main>*{-webkit-animation:none;animation:none}.faux-header-bg{display:none}@-webkit-keyframes bye-banner{20%{-webkit-filter:blur(0) opacity(1);filter:blur(0) opacity(1)}to{-webkit-filter:blur(16px) opacity(.2);filter:blur(16px) opacity(.2)}}@keyframes bye-banner{20%{-webkit-filter:blur(0) opacity(1);filter:blur(0) opacity(1)}to{-webkit-filter:blur(16px) opacity(.2);filter:blur(16px) opacity(.2)}}@-webkit-keyframes surface-header{0%{border-bottom-color:transparent;box-shadow:none}to{border-bottom-color:var(--outline-color);box-shadow:0 8px 16px -8px var(--drop-shadow-color)}}@keyframes surface-header{0%{border-bottom-color:transparent;box-shadow:none}to{border-bottom-color:var(--outline-color);box-shadow:0 8px 16px -8px var(--drop-shadow-color)}}@-webkit-keyframes shrink-avatar{0%{width:64px;height:64px}to{width:2.5em;height:2.5em}}@keyframes shrink-avatar{0%{width:64px;height:64px}to{width:2.5em;height:2.5em}}.sheet .account-container{border-radius:16px 16px 0 0;overflow-x:hidden;max-height:75vh;overscroll-behavior:none;scroll-timeline:--account-scroll}.sheet .account-container header{padding-bottom:16px;position:sticky;top:0;z-index:2;background-image:-webkit-linear-gradient(top,transparent 30%,var(--bg-color) var(--banner-overlap),var(--bg-color) calc(100% - 8px),transparent);background-image:linear-gradient(to bottom,transparent 30%,var(--bg-color) var(--banner-overlap),var(--bg-color) calc(100% - 8px),transparent)}.sheet .account-container header .account-block-content{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;line-clamp:3;-webkit-line-clamp:3}.sheet .account-container .faux-header-bg{display:block;height:var(--banner-overlap);position:sticky;top:0;z-index:1;background-color:var(--bg-color);margin-top:calc(-1 * var(--banner-overlap))}@supports (animation-timeline: scroll()){.sheet .account-container .header-banner:not(.header-is-avatar):not(:hover):not(:active){-webkit-animation:bye-banner 1s linear both;animation:bye-banner 1s linear both;animation-timeline:view();animation-range:contain 100% cover 100%}.sheet .account-container header{background-image:-webkit-linear-gradient(top,transparent 30%,var(--bg-color) var(--banner-overlap));background-image:linear-gradient(to bottom,transparent 30%,var(--bg-color) var(--banner-overlap));border-bottom:1px solid transparent;-webkit-animation:surface-header 1s linear both;animation:surface-header 1s linear both;animation-timeline:--account-scroll;animation-range:0 150px}.sheet .account-container header .avatar{-webkit-animation:shrink-avatar 1s linear both;animation:shrink-avatar 1s linear both;animation-timeline:--account-scroll;animation-range:0 150px}}.sheet .account-container main{padding-top:1px;padding-bottom:16px}.sheet .account-container footer{min-height:56px;-webkit-animation:slide-up .3s ease-out .3s both;animation:slide-up .3s ease-out .3s both;position:sticky;bottom:0;background-color:var(--bg-faded-blur-color);-webkit-backdrop-filter:blur(16px) saturate(3);backdrop-filter:blur(16px) saturate(3);padding:8px 16px;border-top:var(--hairline-width) solid var(--outline-color);padding-bottom:max(8px,env(safe-area-inset-bottom));box-shadow:0 -8px 16px -8px var(--drop-shadow-color)}@-webkit-keyframes swoosh-bg-image{0%{background-position:-320px 0;opacity:.25}to{background-position:0 0;opacity:1}}@keyframes swoosh-bg-image{0%{background-position:-320px 0;opacity:.25}to{background-position:0 0;opacity:1}}.account-container .posting-stats-button{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;gap:8px;width:100%;color:inherit;background-color:var(--bg-faded-color);padding:8px 12px;font-size:90%;color:var(--text-insignificant-color);line-height:1;vertical-align:text-top;border-radius:4px}.account-container .posting-stats-button:focus-within{color:var(--text-color);background-color:var(--link-bg-hover-color);-webkit-filter:none!important;filter:none!important}.account-container .posting-stats-button:hover{color:var(--text-color);background-color:var(--link-bg-hover-color);-webkit-filter:none!important;filter:none!important}.account-container .posting-stats-button .loader-container{margin:0;opacity:.5;-webkit-transform:scale(.75);transform:scale(.75)}@-webkit-keyframes wobble{0%{-webkit-transform:rotate(-4deg);transform:rotate(-4deg)}to{-webkit-transform:rotate(4deg);transform:rotate(4deg)}}@keyframes wobble{0%{-webkit-transform:rotate(-4deg);transform:rotate(-4deg)}to{-webkit-transform:rotate(4deg);transform:rotate(4deg)}}@-webkit-keyframes loading-spin{0%{-webkit-transform:rotate(0deg) scale(.75);transform:rotate(0) scale(.75)}to{-webkit-transform:rotate(360deg) scale(.75);transform:rotate(360deg) scale(.75)}}@keyframes loading-spin{0%{-webkit-transform:rotate(0deg) scale(.75);transform:rotate(0) scale(.75)}to{-webkit-transform:rotate(360deg) scale(.75);transform:rotate(360deg) scale(.75)}}.posting-stats-icon{display:inline-block;width:24px;height:8px;-webkit-filter:opacity(.75);filter:opacity(.75);-webkit-animation:wobble 2s linear both infinite alternate!important;animation:wobble 2s linear both infinite alternate!important}.posting-stats-icon.loading{-webkit-animation:loading-spin .35s linear both infinite!important;animation:loading-spin .35s linear both infinite!important}#list-add-remove-container .list-add-remove{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;gap:8px;margin:0;padding:8px 0;list-style:none}#list-add-remove-container .list-add-remove button{border-radius:16px;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;gap:8px;width:100%;text-align:start}#list-add-remove-container .list-add-remove button .icon{opacity:.15}#list-add-remove-container .list-add-remove button.checked{border-color:var(--green-color);font-weight:700}#list-add-remove-container .list-add-remove button.checked .icon{opacity:1;color:var(--green-color)}@media (min-width: 40em){.timeline-start .account-container{--banner-overlap: 77px;--item-radius: 16px;border:1px solid var(--divider-color);margin:16px 0;background-color:var(--bg-color);border-radius:16px;border-radius:var(--item-radius);overflow:hidden;--shadow-offset: 16px;--shadow-blur: 32px;--shadow-spread: calc(var(--shadow-blur) * -.75);box-shadow:-16px 16px 32px -24px var(--header-color-1, var(--drop-shadow-color)),16px 16px 32px -24px var(--header-color-2, var(--drop-shadow-color));box-shadow:calc(var(--shadow-offset) * -1) var(--shadow-offset) var(--shadow-blur) var(--shadow-spread) var(--header-color-1, var(--drop-shadow-color)),var(--shadow-offset) var(--shadow-offset) var(--shadow-blur) var(--shadow-spread) var(--header-color-2, var(--drop-shadow-color))}.timeline-start .account-container header .account-block{font-size:175%;line-height:1.1;letter-spacing:-.5px;mix-blend-mode:multiply;gap:12px}.timeline-start .account-container header .account-block .avatar{width:112px!important;height:112px!important;-webkit-filter:drop-shadow(-8px 0 8px --bg-color) drop-shadow(8px 0 8px --bg-color);filter:drop-shadow(-8px 0 8px --bg-color) drop-shadow(8px 0 8px --bg-color);-webkit-filter:drop-shadow(-8px 0 8px var(--header-color-3, --bg-color)) drop-shadow(8px 0 8px var(--header-color-4, --bg-color));filter:drop-shadow(-8px 0 8px var(--header-color-3, --bg-color)) drop-shadow(8px 0 8px var(--header-color-4, --bg-color))}}#private-note-container textarea{margin-top:8px;width:100%;resize:vertical;height:33vh;min-height:25vh;max-height:50vh;color:var(--private-note-text-color);background-color:var(--private-note-bg-color);border:1px solid var(--private-note-border-color);box-shadow:0 2px 8px var(--drop-shadow-color);border-radius:0;padding:16px}#private-note-container footer{display:-webkit-box;display:flex;-webkit-box-pack:justify;justify-content:space-between;padding:8px 0}#private-note-container footer *{vertical-align:middle}.drafts-list{margin:1em 0;padding:0;list-style:none}.drafts-list>li{margin:8px 0 16px;padding:0}.mini-draft-meta{font-size:80%;-webkit-box-pack:justify;justify-content:space-between;-webkit-box-align:center;align-items:center;display:-webkit-box;display:flex;padding:8px 0}.mini-draft-meta *{vertical-align:middle}button.draft-item{display:block;width:100%;border:0;border-radius:8px;background-color:var(--bg-color);color:var(--text-color);border:1px solid var(--link-faded-color);text-align:left;padding:0}button.draft-item:hover,button.draft-item:focus{border-color:var(--link-color);box-shadow:0 0 0 3px var(--link-faded-color);-webkit-filter:none!important;filter:none!important}.mini-draft{display:-webkit-box;display:flex;gap:0 8px;font-size:90%;padding:8px}.mini-draft-aside{width:64px;aspect-ratio:1 / 1;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;background-color:var(--bg-faded-color);border-radius:4px;flex-shrink:0;border:1px solid var(--outline-color)}.mini-draft-aside.has-image{background-image:var(--bg-image);background-size:cover;background-position:center;background-repeat:no-repeat}.mini-draft-aside.has-image>span{background-color:var(--bg-faded-blur-color);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:4px 8px;border-radius:32px}.mini-draft-aside.has-image>span *{vertical-align:middle}.mini-draft-main{-webkit-box-flex:1;flex-grow:1}.mini-draft-spoiler,.mini-draft-status{text-overflow:ellipsis;overflow:hidden;display:-webkit-box;display:box;-webkit-box-orient:vertical;box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;line-height:1.1}.mini-draft-spoiler+.mini-draft-status{border-top:1px dashed var(--text-insignificant-color);padding-top:4px;margin-top:4px;color:var(--text-insignificant-color)}#generic-accounts-container .accounts-list{--list-gap: 16px;list-style:none;margin:0;padding:8px 0;display:-webkit-box;display:flex;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-column-gap:1.5em;-moz-column-gap:1.5em;column-gap:1.5em;row-gap:16px;row-gap:var(--list-gap)}#generic-accounts-container .accounts-list li{display:-webkit-box;display:flex;-webkit-box-flex:1;flex-grow:1;flex-basis:16em;margin:0;padding:0;gap:8px;position:relative}#generic-accounts-container .accounts-list li:before{content:"";display:block;border-top:var(--hairline-width) solid var(--divider-color);position:absolute;bottom:calc(-1 * var(--list-gap) / 2);left:40px;right:0}#generic-accounts-container .accounts-list li:has(.reactions-block):before{left:64px}#generic-accounts-container .accounts-list .account-block-acct{font-size:.9em;color:var(--text-insignificant-color)}#generic-accounts-container .reactions-block{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}#generic-accounts-container .reactions-block .favourite-icon{color:var(--favourite-color)}#generic-accounts-container .reactions-block .reblog-icon{color:var(--reblog-color)}#generic-accounts-container .reactions-block>.icon:only-child{margin-top:8px}#generic-accounts-container .account-relationships{-webkit-box-flex:1;flex-grow:1}#generic-accounts-container .account-relationships .tag{-webkit-animation:appear .3s ease-out;animation:appear .3s ease-out}#generic-accounts-container .account-block{-webkit-box-align:start;align-items:flex-start}#shortcuts-settings-container .shortcuts-list{line-height:1.5;padding:0;margin:8px 0 0;counter-reset:index;border-radius:8px;overflow:hidden}#shortcuts-settings-container .shortcuts-list li{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;padding:8px;gap:4px;background-color:var(--bg-faded-color)}#shortcuts-settings-container .shortcuts-list li:before{content:counter(index);counter-increment:index;display:inline-block;width:1.2em;text-align:right;margin-right:8px;color:var(--text-insignificant-color);font-size:90%;flex-shrink:0}#shortcuts-settings-container .shortcuts-list li .shortcut-text{-webkit-box-flex:1;flex-grow:1;min-width:0;line-height:1;word-break:break-word}#shortcuts-settings-container .shortcuts-list li .shortcut-actions{flex-shrink:0}#shortcuts-settings-container .shortcuts-view-mode{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;gap:2px;margin:8px 0 0}#shortcuts-settings-container .shortcuts-view-mode label{border-radius:4px;background-color:var(--bg-faded-color);padding:16px;text-align:center;cursor:pointer;display:block;-webkit-box-flex:1;flex-grow:1;display:-webkit-box;display:flex;gap:8px;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-align:center;align-items:center}#shortcuts-settings-container .shortcuts-view-mode label:first-child{border-top-left-radius:16px;border-bottom-left-radius:16px}#shortcuts-settings-container .shortcuts-view-mode label:last-child{border-top-right-radius:16px;border-bottom-right-radius:16px}#shortcuts-settings-container .shortcuts-view-mode label img{max-height:64px}@media (prefers-color-scheme: dark){:where(html:not(.is-light)) #shortcuts-settings-container .shortcuts-view-mode label img{-webkit-filter:invert(.9) hue-rotate(180deg);filter:invert(.9) hue-rotate(180deg)}}:where(html.is-dark) #shortcuts-settings-container .shortcuts-view-mode label img{-webkit-filter:invert(.9) hue-rotate(180deg);filter:invert(.9) hue-rotate(180deg)}#shortcuts-settings-container .shortcuts-view-mode label span{text-align:center;font-size:80%}#shortcuts-settings-container .shortcuts-view-mode label input{position:absolute;opacity:0;pointer-events:none;-webkit-perspective:500px;perspective:500px}#shortcuts-settings-container .shortcuts-view-mode label input~*{opacity:.5;-webkit-transform-origin:bottom;transform-origin:bottom;-webkit-transform:scale(.975);transform:scale(.975);-webkit-transition:all .2s ease-out;transition:all .2s ease-out}#shortcuts-settings-container .shortcuts-view-mode label.checked{box-shadow:inset 0 0 0 3px var(--link-color),inset 0 0 32px var(--link-faded-color)}#shortcuts-settings-container .shortcuts-view-mode label input:active~*{-webkit-transform:scale(1);transform:scale(1);opacity:1}#shortcuts-settings-container .shortcuts-view-mode label input:checked~*{-webkit-transform:scale(1);transform:scale(1);opacity:1}#shortcuts-settings-container .shortcuts-view-mode label input:hover~*{-webkit-transform:scale(1);transform:scale(1);opacity:1}#shortcuts-settings-container summary{cursor:pointer}#shortcut-settings-form label{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;gap:8px;-webkit-box-align:center;align-items:center}#shortcut-settings-form label>span:first-child{flex-basis:5em;text-align:right}#shortcut-settings-form input[type=text],#shortcut-settings-form select:not(.does-not-exist){-webkit-box-flex:1;flex-grow:1;flex-basis:70%;flex-shrink:1;min-width:0;max-width:320px}#shortcut-settings-form .form-note{display:-webkit-box;display:flex;gap:6px;-webkit-box-align:center;align-items:center}#shortcut-settings-form form footer{display:-webkit-box;display:flex;gap:16px}#import-export-container input[type=text]{font-family:var(--monospace-font)}#import-export-container section{margin:8px 0;background-color:var(--bg-faded-color);border-radius:16px;padding:8px}#import-export-container section h3{margin:0 0 8px}#import-export-container section h3 *{vertical-align:middle}#import-export-container section p{margin:8px 0}#import-export-container section details>summary{cursor:pointer}#import-export-container .import-settings-list{border-radius:8px;overflow:hidden;margin:8px 0 0;padding:0;counter-reset:index}#import-export-container .import-settings-list li{background-color:var(--bg-blur-color);margin:0 0 2px;padding:8px 4px;display:-webkit-box;display:flex;gap:4px}#import-export-container .import-settings-list li:before{content:counter(index);counter-increment:index;display:inline-block;width:1.2em;text-align:right;margin-right:8px;color:var(--text-insignificant-color);font-size:90%;flex-shrink:0}#search-command-container{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1002;background-color:var(--backdrop-darker-color);background-image:-webkit-radial-gradient(top,farthest-corner,var(--backdrop-color),transparent);background-image:radial-gradient(farthest-corner at top,var(--backdrop-color),transparent);display:-webkit-box;display:flex;-webkit-box-pack:center;justify-content:center;-webkit-box-align:start;align-items:flex-start;padding:16px;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}#search-command-container[hidden]{opacity:0;pointer-events:none}#search-command-container form{width:calc(40em - 32px);max-width:100%;-webkit-transition:-webkit-transform .1s ease-in-out;transition:-webkit-transform .1s ease-in-out;transition:transform .1s ease-in-out;transition:transform .1s ease-in-out,-webkit-transform .1s ease-in-out}#search-command-container[hidden] form{-webkit-transform:translateY(-64px) scale(.9);transform:translateY(-64px) scale(.9)}#search-command-container input{width:100%;padding:16px;border-radius:999px;background-color:var(--bg-faded-color);border:2px solid var(--outline-color);box-shadow:0 2px 16px var(--drop-shadow-color),0 32px 64px var(--drop-shadow-color)}#search-command-container input:focus{outline:0;background-color:var(--bg-color);border-color:var(--link-color)}@media (min-width: 40em){#search-command-container{-webkit-box-align:center;align-items:center;background-image:-webkit-radial-gradient(closest-side,var(--backdrop-color),transparent);background-image:radial-gradient(closest-side,var(--backdrop-color),transparent)}}#shortcuts-button{position:fixed;bottom:16px;bottom:max(16px,env(safe-area-inset-bottom));left:16px;left:max(16px,env(safe-area-inset-left));padding:16px;background-color:var(--bg-faded-blur-color);z-index:101;-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out;border:var(--hairline-width) solid var(--bg-color);box-shadow:inset 0 -4px 16px -8px var(--button-bg-blur-color),0 3px 8px -1px var(--drop-shadow-color)}#shortcuts-button .icon{-webkit-transform:translateY(2px);transform:translateY(2px)}#app:has(#home-page):not(:has(#home-page~.deck-container)):has(header[hidden]) #shortcuts-button,#app:has(#home-page~.deck-container header[hidden]) #shortcuts-button,#shortcuts-button[hidden]{-webkit-transform:translateY(200%);transform:translateY(200%);pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}#shortcuts-button:hover,#shortcuts-button:focus{background-color:var(--bg-color);-webkit-filter:none;filter:none}#shortcuts-button:active{-webkit-transform:scale(.95);transform:scale(.95);-webkit-transition:none;transition:none}@media (min-width: calc(40em + 64px)){#shortcuts-button{right:16px;right:max(16px,env(safe-area-inset-right));left:auto;top:16px;top:max(16px,env(safe-area-inset-top));bottom:auto}#app:has(#home-page):not(:has(#home-page~.deck-container)):has(header[hidden]) #shortcuts-button,#app:has(#home-page~.deck-container header[hidden]) #shortcuts-button,#shortcuts-button[hidden]{-webkit-transform:translateY(-200%);transform:translateY(-200%)}}#shortcuts .tab-bar:not([hidden]){position:fixed;bottom:0;left:0;right:0;z-index:100;background-color:var(--bg-color);border-top:var(--hairline-width) solid var(--outline-color);box-shadow:0 -8px 16px -8px var(--drop-shadow-color);overflow:auto;-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out;padding:0 env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-touch-callout:none}#shortcuts .tab-bar ul{display:-webkit-box;display:flex;margin:0;padding:0}#shortcuts .tab-bar li{-webkit-box-flex:1;flex-grow:1;margin:0;padding:0;list-style:none;display:-webkit-box;display:flex;-webkit-box-pack:center;justify-content:center;min-width:20vw;flex-basis:20vw}#shortcuts .tab-bar li a{-webkit-tap-highlight-color:transparent;display:block;color:var(--text-insignificant-color);font-size:10px;display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-align:center;align-items:center;-webkit-box-pack:start;justify-content:flex-start;padding:8px;-webkit-text-decoration:none;text-decoration:none;text-shadow:0 var(--hairline-width) var(--bg-color);width:100%}@media (hover: hover){#shortcuts .tab-bar li a:hover,#shortcuts .tab-bar li a:focus{color:var(--text-color)}}#shortcuts .tab-bar li a:active{-webkit-transform:scale(.95);transform:scale(.95);-webkit-transition:none;transition:none}#shortcuts .tab-bar li a *{pointer-events:none}#shortcuts .tab-bar li a span{width:100%;text-align:center;display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}#shortcuts .tab-bar li a.is-active{color:var(--link-color);background-image:-webkit-radial-gradient(50% 50%,closest-side,var(--bg-color),transparent);background-image:radial-gradient(closest-side at 50% 50%,var(--bg-color),transparent)}#app:has(#home-page):not(:has(#home-page~.deck-container)):has(header[hidden]) #shortcuts .tab-bar,#app:has(#home-page~.deck-container header[hidden]) #shortcuts .tab-bar,shortcuts .tab-bar[hidden]{-webkit-transform:translateY(200%);transform:translateY(200%);pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}@media (max-width: calc(40em - 1px)){#app[data-shortcuts-view-mode=tab-menu-bar] .deck-container{padding-bottom:52px}#shortcuts .tab-bar li a.has-subtitle .icon,#shortcuts .tab-bar li a.has-subtitle .icon svg{width:14px!important;height:14px!important}#shortcuts .tab-bar li a span{line-height:1}}@media (min-width: 40em) and (hover: hover){#app[data-shortcuts-view-mode=tab-menu-bar] .timeline-deck{margin-top:44px}#app[data-shortcuts-view-mode=tab-menu-bar] .timeline-deck>header{--margin-top:52px}#shortcuts .tab-bar:not([hidden]){top:0;bottom:auto;padding:env(safe-area-inset-top) env(safe-area-inset-right) 0 env(safe-area-inset-left);background-color:var(--bg-faded-blur-color);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:0;box-shadow:none;border-bottom:var(--hairline-width) solid var(--bg-faded-color)}#shortcuts .tab-bar ul:before{content:"";margin:auto}#shortcuts .tab-bar ul:after{content:"";margin:auto}#shortcuts .tab-bar li{-webkit-box-flex:0;flex-grow:0;min-width:auto;flex-basis:auto}#shortcuts .tab-bar li a{padding:0 16px;width:auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;font-size:14px;height:44px;gap:4px}#shortcuts .tab-bar li a span{text-align:left;line-height:1}#app:has(#home-page):not(:has(#home-page~.deck-container)):has(header[hidden]) #shortcuts .tab-bar,#app:has(#home-page~.deck-container header[hidden]) #shortcuts .tab-bar,shortcuts .tab-bar[hidden]{-webkit-transform:translateY(-150%);transform:translateY(-150%);pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}}.media-post{--item-radius: 16px;position:relative;-webkit-animation:appear-smooth 1s ease-out;animation:appear-smooth 1s ease-out}.media-post.filtered:not(.does-not-exist) img,.media-post.filtered:not(.does-not-exist) video,.media-post.has-spoiler:not(.show-media) img,.media-post.has-spoiler:not(.show-media) video{opacity:0;-webkit-animation:none!important;animation:none!important}.media-post.filtered[data-filtered-text]:before{content:attr(data-filtered-text)}.media-post.has-spoiler[data-spoiler-text]:before{content:attr(data-spoiler-text)}.media-post.filtered[data-filtered-text]:before,.media-post.has-spoiler[data-spoiler-text]:before{pointer-events:none;position:absolute;top:0;left:0;z-index:1;background-color:var(--bg-blur-color);margin:8px;padding:4px 6px;border-radius:calc(var(--item-radius) / 2);font-size:90%;border:var(--hairline-width) dashed var(--bg-color);word-break:break-word;word-wrap:break-word;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;box-orient:vertical;display:-webkit-box;display:box;overflow:hidden;z-index:2}.media-post.filtered[data-filtered-text]:before>*,.media-post.has-spoiler[data-spoiler-text]:before>*{pointer-events:none}.media-post.has-spoiler.show-media[data-spoiler-text]:before{mix-blend-mode:normal;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.media-post .media{border-radius:var(--item-radius);overflow:hidden;position:relative;display:block;aspect-ratio:1!important}.media-post .media:before{position:absolute;top:0;right:0;bottom:0;left:0;content:"";border:1px solid var(--outline-color);border-radius:inherit}.media-post .media:not(.media-audio){background-color:var(--average-color, var(--media-bg-color));background-clip:padding-box}@media (hover: hover){.media-post .media:hover{--drop-shadow: var(--drop-shadow-color);position:relative;z-index:1;box-shadow:0 8px 16px -4px var(--drop-shadow-color),0 4px 8px var(--drop-shadow-color);box-shadow:0 8px 16px -4px var(--drop-shadow),0 4px 8px var(--drop-shadow)}}@media (hover: hover) and (prefers-color-scheme: dark){:where(html:not(.is-light)) .media-post .media:hover{--drop-shadow: var(--link-color)}}@media (hover: hover){:where(html.is-dark) .media-post .media:hover{--drop-shadow: var(--link-color)}}.media-post .media:active:not(:has(button:active)){box-shadow:none;-webkit-filter:brightness(.8);filter:brightness(.8);-webkit-transform:scale(.99);transform:scale(.99)}.media-post .media video,.media-post .media img,.media-post .media audio{border-radius:16px;-o-object-fit:cover;object-fit:cover;width:100%;height:100%;vertical-align:top}:not(.filtered):not(.has-spoiler) .media-post .media:hover img,:not(.filtered):not(.has-spoiler) .media-post .media:focus img{-webkit-animation:position-object 5s ease-in-out .1s 5;animation:position-object 5s ease-in-out .1s 5;-webkit-animation-duration:5s;animation-duration:5s;-webkit-animation-duration:var(--anim-duration, 5s);animation-duration:var(--anim-duration, 5s)}.media-post.has-spoiler .media:not(.media-audio){background-image:-webkit-radial-gradient(50% 50%,circle,var(--average-color, var(--bg-faded-color)),var(--bg-color) 20em);background-image:radial-gradient(circle at 50% 50%,var(--average-color, var(--bg-faded-color)),var(--bg-color) 20em)}.nav-menu section:last-child{background-color:var(--bg-faded-color);margin-bottom:-8px;padding-bottom:8px}@media (min-width: 23em){.nav-menu{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:auto 1fr;grid-template-areas:"top top" "left right";padding:0;width:22em;max-width:calc(100vw - 16px)}.nav-menu .top-menu{grid-area:top;padding-top:8px;margin-bottom:-8px}.nav-menu section{padding:8px 0}@-webkit-keyframes phanpying{0%{background-position:0 0,0 0,3em 85%}to{background-position:0 0,0 0,2em 90%}}@keyframes phanpying{0%{background-position:0 0,0 0,3em 85%}to{background-position:0 0,0 0,2em 90%}}.nav-menu section:last-child{background-image:-webkit-linear-gradient(left,var(--divider-color) 1px,transparent 1px),-webkit-linear-gradient(top right,var(--bg-blur-color),transparent),url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='none'%20viewBox='0%200%2090%2085'%3e%3cpath%20fill='%23fff'%20fill-opacity='0.4'%20fill-rule='evenodd'%20d='M88%2064c6.4-29.6-2.4-55.2-31.7-62.7C31.9-4.9%208.1%2011.6.8%2042c-3.3%2013.8%203.3%2030.3%2024.6%2035.6l19.3%204.8c14.5%204%2024.3%202.3%2030.7-1.1a25%2025%200%200%200%2012.7-17.4Zm-8-1.8c5.4-24.7-1.1-46.7-25.7-53C34%204%2014.8%2018.6%208.8%2044c-2.5%2010.2%202.9%2022%2018.6%2025.8l19.4%204.8c23.4%206.4%2031.4-3.4%2033.3-12.3ZM35.8%2028.4c-3-1.4-14.5%206.4-15.3%2017.8-.4%204.8%209%206.5%2010.1-.3.7-4.8%202.6-9%204-12s2.3-5%201.2-5.5Zm19.8%2015c-.5-5.9-1-10.6%201.7-11%204-.7%2010.4%2015.3%208.2%2025.4-.6%203-9.6%201.6-9.4-4%20.2-3.5-.2-7.1-.5-10.4Z'%20clip-rule='evenodd'/%3e%3c/svg%3e");background-image:linear-gradient(to right,var(--divider-color) 1px,transparent 1px),linear-gradient(to bottom left,var(--bg-blur-color),transparent),url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20fill='none'%20viewBox='0%200%2090%2085'%3e%3cpath%20fill='%23fff'%20fill-opacity='0.4'%20fill-rule='evenodd'%20d='M88%2064c6.4-29.6-2.4-55.2-31.7-62.7C31.9-4.9%208.1%2011.6.8%2042c-3.3%2013.8%203.3%2030.3%2024.6%2035.6l19.3%204.8c14.5%204%2024.3%202.3%2030.7-1.1a25%2025%200%200%200%2012.7-17.4Zm-8-1.8c5.4-24.7-1.1-46.7-25.7-53C34%204%2014.8%2018.6%208.8%2044c-2.5%2010.2%202.9%2022%2018.6%2025.8l19.4%204.8c23.4%206.4%2031.4-3.4%2033.3-12.3ZM35.8%2028.4c-3-1.4-14.5%206.4-15.3%2017.8-.4%204.8%209%206.5%2010.1-.3.7-4.8%202.6-9%204-12s2.3-5%201.2-5.5Zm19.8%2015c-.5-5.9-1-10.6%201.7-11%204-.7%2010.4%2015.3%208.2%2025.4-.6%203-9.6%201.6-9.4-4%20.2-3.5-.2-7.1-.5-10.4Z'%20clip-rule='evenodd'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:0 0,0 0,2em 90%;background-blend-mode:normal,normal,overlay;box-shadow:inset 0 0 1px var(--bg-color);position:sticky;top:0;-webkit-animation:phanpying .2s ease-in-out both;animation:phanpying .2s ease-in-out both;border-top-right-radius:inherit;border-bottom-right-radius:inherit;margin-bottom:0;display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.nav-menu section:last-child .divider-grow{-webkit-box-flex:1;flex-grow:1;height:auto;background-color:transparent}.nav-menu section:last-child>.szh-menu__divider:first-child{display:none}.nav-menu .szh-menu__item span{white-space:normal}}@media (min-width: 40em){.nav-menu{width:28em}}@-webkit-keyframes sparkle-icon{0%{-webkit-transform:scale(1);transform:scale(1);color:var(--red-color)}to{-webkit-transform:scale(1.2);transform:scale(1.2);color:var(--orange-color)}}@keyframes sparkle-icon{0%{-webkit-transform:scale(1);transform:scale(1);color:var(--red-color)}to{-webkit-transform:scale(1.2);transform:scale(1.2);color:var(--orange-color)}}.sparkle-icon{-webkit-animation:sparkle-icon .3s ease-in-out infinite alternate;animation:sparkle-icon .3s ease-in-out infinite alternate}@-webkit-keyframes bell{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}33%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}66%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0)}}@keyframes bell{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}33%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}66%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0)}}.notifications-button.open{-webkit-animation:bell .3s ease-out both;animation:bell .3s ease-out both;-webkit-transform-origin:50% 0;transform-origin:50% 0}.notifications-menu{width:28em;font-size:90%;padding:0;height:40em;overflow:auto;overscroll-behavior:contain}.notifications-menu .status{font-size:inherit}.notifications-menu header{padding:16px;margin:0;border-bottom:var(--hairline-width) solid var(--outline-color)}.notifications-menu header h2{margin:0;padding:0;font-size:1.2em}.notifications-menu main{min-height:100%}.notifications-menu .notification{-webkit-animation:appear-smooth .3s ease-out .1s both;animation:appear-smooth .3s ease-out .1s both}.notifications-menu footer{-webkit-animation:slide-up .3s ease-out .2s both;animation:slide-up .3s ease-out .2s both;position:sticky;bottom:0;border-top:var(--hairline-width) solid var(--outline-color);background-color:var(--bg-blur-color);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);padding:16px;gap:8px;display:-webkit-box;display:flex;-webkit-box-pack:justify;justify-content:space-between}.list-form{padding:8px 0;display:-webkit-box;display:flex;gap:8px;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.list-form-row input[type=text],.list-form-row select:not(.does-not-exist){width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none}.list-form-row .label-block{display:-webkit-box;display:flex;padding:8px 0;gap:4px}.list-form-footer{display:-webkit-box;display:flex;gap:8px;-webkit-box-pack:justify;justify-content:space-between}.list-form-footer button[type=submit]{padding-inline:24px}#list-manage-members-container ul{display:block;list-style:none;padding:8px 0;margin:0}#list-manage-members-container ul li{display:-webkit-box;display:flex;gap:8px;-webkit-box-align:center;align-items:center;-webkit-box-pack:justify;justify-content:space-between;padding:8px 0}.notification{display:-webkit-box;display:flex;padding:16px!important;gap:12px;-webkit-animation:appear .2s ease-out;animation:appear .2s ease-out;clear:both}.notification b[tabindex="0"]:hover,.notification b[tabindex="0"]:focus{-webkit-text-decoration:underline;text-decoration:underline;cursor:pointer}.notification.notification-mention{margin-top:16px}.only-mentions .notification:not(.notification-mention),.only-mentions .timeline-empty{display:none}.notification.skeleton{color:var(--outline-color)}.notification-type{width:24px;flex-shrink:0;opacity:.75;color:var(--text-insignificant-color);line-height:0}.notification-type.notification-mention{color:var(--reply-to-color)}.notification-type.notification-favourite{color:var(--favourite-color)}.notification-type.notification-reblog{color:var(--reblog-color)}.notification-type.notification-poll{color:var(--link-color)}.notification .reblog-icon{color:var(--reblog-color)}.notification .favourite-icon{color:var(--favourite-color)}.notification .account-avatar-stack{position:relative;text-align:center}.notification .account-avatar-stack .account-sub-icons{display:block;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;margin:-.25em auto 0;line-height:1;background-color:var(--bg-blur-color);-webkit-backdrop-filter:blur(16px) saturate(3);backdrop-filter:blur(16px) saturate(3);padding:2px 4px;border-radius:999px;overflow:hidden;border:var(--hairline-width) solid var(--bg-color);box-shadow:0 1px var(--drop-shadow-color)}.notification .avatars-stack .account-avatar-stack .account-sub-icons .icon{-webkit-transition:-webkit-transform .2s ease-out;transition:-webkit-transform .2s ease-out;transition:transform .2s ease-out;transition:transform .2s ease-out,-webkit-transform .2s ease-out}.notification .avatars-stack:hover .account-avatar-stack .account-sub-icons .icon{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}.notification .avatars-stack:hover .account-avatar-stack .account-sub-icons .icon+.icon{-webkit-transform:rotate(15deg);transform:rotate(15deg)}.notification .status-link{border-radius:8px;border:1px solid var(--outline-color);max-height:160px;overflow:hidden;-webkit-filter:saturate(.25);filter:saturate(.25)}.notification .status-link:not(.status-type-mention)>.status{font-size:calc(var(--text-size) * .9)}.notification .status-link.truncated:not(.status-type-mention)>.status{-webkit-mask-image:-webkit-linear-gradient(rgba(0,0,0,1) 130px,rgba(0,0,0,.5) 145px,transparent 159px);mask-image:linear-gradient(rgba(0,0,0,1) 130px,rgba(0,0,0,.5) 145px,transparent 159px)}.notification .status-link.truncated{position:relative}.notification .status-link.truncated:after{content:attr(data-read-more);line-height:1;display:inline-block;position:absolute;--inset-offset: 16px;inset-block-end:16px;inset-block-end:var(--inset-offset);inset-inline-end:16px;inset-inline-end:var(--inset-offset);color:var(--text-color);background-color:var(--bg-faded-color);border:1px dashed var(--link-color);box-shadow:0 0 0 1px var(--bg-color),0 -5px 10px var(--bg-color),0 -5px 15px var(--bg-color),0 -5px 20px var(--bg-color);padding:.5em .75em;border-radius:10em;font-size:90%;white-space:nowrap;text-shadow:0 -1px var(--bg-color);-webkit-transition:-webkit-transform .2s ease-out;transition:-webkit-transform .2s ease-out;transition:transform .2s ease-out;transition:transform .2s ease-out,-webkit-transform .2s ease-out}.notification .status-link.truncated:hover:after{color:var(--link-color);-webkit-transform:translate(2px,0);transform:translate(2px)}.notification .status-link.truncated:focus:after{color:var(--link-color);-webkit-transform:translate(2px,0);transform:translate(2px)}.notification .status-link.status-type-mention{max-height:320px;-webkit-filter:none;filter:none;background-color:var(--bg-color);margin-top:-17px;border-color:var(--reply-to-color);box-shadow:0 0 0 3px var(--reply-to-faded-color)}.notification .status-link:hover,.notification .status-link:focus{background-color:var(--bg-blur-color);-webkit-filter:saturate(1);filter:saturate(1);border-color:var(--outline-hover-color)}.notification .status-link.status-type-mention:hover,.notification .status-link.status-type-mention:focus{border-color:var(--reply-to-color);box-shadow:0 0 5px var(--reply-to-color)}.notification .status-link:active{-webkit-filter:brightness(.95);filter:brightness(.95)}.notification .status-link>*{pointer-events:none}.notification-content{-webkit-box-flex:1;flex-grow:1;min-width:0}.notification-content>p:first-child{margin-top:0;margin-bottom:8px;text-wrap:pretty}.notification-group-statuses{margin:0;padding:0;list-style:none}.notification-group-statuses>li{margin:0;padding:0;list-style:none;position:relative;counter-increment:index}.notification-group-statuses>li:before{content:counter(index);position:absolute;left:0;font-size:10px;padding:8px;font-weight:700}.notification-group-statuses>li+li{margin-top:-1px}.notification-group-statuses>li:not(:last-child) .status-link{border-bottom-left-radius:0;border-bottom-right-radius:0}.notification-group-statuses>li:not(:first-child) .status-link{border-top-left-radius:0;border-top-right-radius:0}#mentions-option{float:right;margin-top:.5em}#mentions-option label{color:var(--text-insignificant-color);display:inline-block;padding:1em 16px;position:relative;cursor:pointer;z-index:1;font-size:90%;background-color:var(--bg-blur-color);border-radius:2em}#mentions-option label:has(:checked){color:var(--text-color);background-color:var(--bg-color)}.follow-requests{-webkit-padding-after:16px;padding-block-end:16px}.follow-requests summary{padding:8px 16px;cursor:pointer}.follow-requests summary::marker,.follow-requests summary::-webkit-details-marker{color:var(--text-insignificant-color)}.follow-requests details[open] summary{color:var(--text-insignificant-color)}.follow-requests ul{list-style:none;padding:0;margin:0;max-height:50vh;max-height:50dvh;overflow:auto;border-bottom:var(--hairline-width) solid var(--outline-color)}.follow-requests summary+ul{border-top:var(--hairline-width) solid var(--outline-color)}.follow-requests ul li{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;padding:16px;border-bottom:var(--hairline-width) solid var(--outline-color);-webkit-box-pack:justify;justify-content:space-between;-webkit-column-gap:16px;-moz-column-gap:16px;column-gap:16px;row-gap:4px;flex-wrap:wrap}.follow-requests ul li:last-child{border-bottom:none}.follow-requests ul li .follow-request-buttons{margin:0;padding:0;display:-webkit-box;display:flex;-webkit-box-flex:1;flex:1;gap:4px;-webkit-box-pack:end;justify-content:flex-end;-webkit-box-align:center;align-items:center}.follow-request-buttons .follow-request-states{vertical-align:middle}.follow-request-buttons .follow-request-states .icon{margin-inline:8px}.follow-request-buttons .follow-request-states .icon.follow-accepted{color:var(--green-color)}.follow-request-buttons .follow-request-states .icon.follow-rejected{color:var(--red-color)}.follow-requests ul li .follow-request-buttons .follow-request-states{-webkit-box-ordinal-group:0;order:-1}.announcements{border:1px solid var(--outline-color);background-color:var(--bg-blur-color);border-radius:16px;margin:8px;overflow:hidden}.announcements summary{list-style:none;padding:8px 16px;cursor:pointer;display:-webkit-box;display:flex;gap:8px;-webkit-box-align:center;align-items:center;-webkit-box-pack:justify;justify-content:space-between;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-wrap:wrap}.announcements summary .announcement-icon{color:var(--red-color)}.announcements[open] summary{background-color:var(--bg-faded-color)}.announcements summary>span{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;gap:8px}@-webkit-keyframes wiggle{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}25%{-webkit-transform:rotate(-25deg) scale(1.1);transform:rotate(-25deg) scale(1.1)}50%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}75%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0)}}@keyframes wiggle{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}25%{-webkit-transform:rotate(-25deg) scale(1.1);transform:rotate(-25deg) scale(1.1)}50%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}75%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0)}}.announcements summary .announcements-nav-buttons{-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;opacity:0;pointer-events:none;display:none}.announcements[open] summary .announcements-nav-buttons{display:-webkit-box;display:flex;opacity:1;pointer-events:auto}.announcements summary:hover .announcement-icon{-webkit-animation:wiggle .5s 1;animation:wiggle .5s 1}.announcements:not([open]):hover{background-color:var(--bg-faded-color)}.announcements[open] summary{color:var(--text-color)}.announcements summary::-webkit-details-marker{display:none}.announcements>ul{display:-webkit-box;display:flex;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-behavior:smooth;margin:0;padding:8px;gap:8px;background-color:var(--bg-faded-color)}.announcements>ul>li{background-color:var(--bg-color);scroll-snap-align:center;scroll-snap-stop:always;flex-shrink:0;display:-webkit-box;display:flex;width:100%;list-style:none;margin:0;padding:0;position:relative;border-radius:8px;box-shadow:0 8px 16px -4px var(--drop-shadow-color)}.announcements>ul.announcements-list-multiple>li{width:calc(100% - 16px)}.announcements>ul>li:last-child{border-right:none}.announcements .announcement-block{padding:16px;max-height:50vh;max-height:50dvh;overflow:auto;-webkit-mask-image:-webkit-linear-gradient(bottom,transparent 1px,black 48px,black calc(100% - 16px),transparent calc(100% - 1px));mask-image:linear-gradient(to top,transparent 1px,black 48px,black calc(100% - 16px),transparent calc(100% - 1px))}.announcements .announcement-content{line-height:1.4}.announcements .announcement-content p{margin-block:min(.75em,12px);white-space:pre-wrap;-moz-tab-size:2;-o-tab-size:2;tab-size:2;text-wrap:pretty}.announcements .announcement-reactions:not(:hidden){display:-webkit-box;display:flex;flex-wrap:wrap;gap:8px}.announcements .announcement-reactions button.reacted{color:var(--text-color);background-color:var(--link-faded-color)}#search-page .deck>header .header-grid{grid-template-columns:auto 1fr auto}#search-page header input{width:100%;padding:8px 16px;border:0;border-radius:999px;background-color:var(--bg-faded-color);border:2px solid transparent}#search-page header input:focus{outline:0;background-color:var(--bg-color);border-color:var(--link-color)}#columns #search-page header input{font-weight:700;background-color:transparent;text-align:center;padding-inline:8px;text-overflow:ellipsis}#columns #search-page .header-grid .header-side{min-width:40px}#columns #search-page .header-grid .header-side:last-of-type button{display:block}#columns #search-page .header-grid .header-side:last-of-type button:not(:hover):not(:focus){color:var(--text-insignificant-color)}#search-page ul.accounts-list{display:-webkit-box;display:flex;flex-wrap:wrap}#search-page ul.accounts-list li{flex-basis:320px;display:-webkit-box;display:flex;padding:8px 16px;gap:8px;-webkit-box-flex:1;flex-grow:1}#search-page ul.accounts-list li .account-block{-webkit-box-align:start;align-items:flex-start}ul.link-list.hashtag-list{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;flex-wrap:wrap;gap:8px}ul.link-list.hashtag-list li a{border-radius:var(--radius)}@media (min-width: 40em){#search-page header input{background-color:var(--bg-color)}#search-page .filter-bar{margin-top:8px}}.search-popover-container{position:relative}.search-popover{position:absolute;left:8px;max-width:calc(100% - 16px);background-color:var(--bg-color);border:1px solid var(--outline-color);box-shadow:0 4px 24px var(--drop-shadow-color);border-radius:8px;display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-animation:appear-smooth .2s ease-out;animation:appear-smooth .2s ease-out;overflow:hidden}.search-popover[hidden]{display:none}.search-popover-item{-webkit-text-decoration:none;text-decoration:none;padding:8px 16px 8px 8px;display:-webkit-box;display:flex;gap:8px;-webkit-box-align:center;align-items:center}.search-popover-item[hidden]{display:none}.search-popover-item:hover,.search-popover-item:focus,.search-popover-item.focus{background-color:var(--button-bg-color);color:var(--button-text-color)}.search-popover-item mark,.search-popover-item q{background-color:var(--bg-faded-blur-color);color:inherit}.search-popover-item:hover mark,.search-popover-item:hover q,.search-popover-item:focus mark,.search-popover-item:focus q,.search-popover-item.focus mark,.search-popover-item.focus q{background-color:var(--button-bg-color)}.search-popover:hover .search-popover-item.focus:not(:hover):not(:focus),.search-popover:hover .search-popover-item.focus:not(:hover):not(:focus) mark,.search-popover:hover .search-popover-item.focus:not(:hover):not(:focus) q{background-color:transparent;background-color:initial;color:inherit}.search-popover-item>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-popover-item:hover>.icon,.search-popover-item:focus>.icon,.search-popover-item.focus>.icon{opacity:1}.links-bar{position:relative;display:-webkit-box;display:flex;padding:16px 16px 20px;gap:16px;overflow-x:auto;background-color:var(--bg-faded-color);-webkit-mask-image:-webkit-linear-gradient(left,transparent,black 16px,black calc(100% - 16px),transparent);mask-image:linear-gradient(to right,transparent,black 16px,black calc(100% - 16px),transparent);text-shadow:0 1px var(--bg-blur-color);-webkit-transition:opacity .3s ease-out;transition:opacity .3s ease-out}@media (min-width: 40em){.links-bar:not(#columns .links-bar){width:95vw;max-width:1056px;-webkit-transform:translateX(calc(-50% + var(--main-width) / 2));transform:translate(calc(-50% + var(--main-width) / 2))}}.links-bar>header{width:1.2em;white-space:nowrap;position:relative;flex-shrink:0}.links-bar>header h3{font-size:90%;font-style:italic;margin:0;padding:0;text-transform:uppercase;color:var(--text-insignificant-color);position:absolute;top:8px;left:0;-webkit-transform-origin:top left;transform-origin:top left;-webkit-transform:rotate(-90deg) translateX(-100%);transform:rotate(-90deg) translate(-100%);-webkit-user-select:none;-moz-user-select:none;user-select:none;background-image:-webkit-linear-gradient(right,var(--text-color),var(--link-color));background-image:linear-gradient(to left,var(--text-color),var(--link-color));-webkit-background-clip:text;background-clip:text;text-fill-color:transparent;-webkit-text-fill-color:transparent}.links-bar a{min-width:240px;-webkit-box-flex:1;flex-grow:1;max-width:320px;-webkit-text-decoration:none;text-decoration:none;color:inherit;border-radius:16px;overflow:hidden;background-color:var(--accent-alpha-color);border:4px solid transparent;box-shadow:0 4px 8px -2px var(--drop-shadow-color);-webkit-transition:all .15s ease-out;transition:all .15s ease-out;display:-webkit-box;display:flex;background-image:-webkit-linear-gradient(top,var(--accent-color, var(--link-text-color)) -50%,transparent);background-image:linear-gradient(to bottom,var(--accent-color, var(--link-text-color)) -50%,transparent);background-clip:border-box;background-origin:border-box;min-height:160px;height:320px;max-height:50vh}.links-bar a:not(:active):hover{border-color:var(--accent-color, var(--link-light-color));box-shadow:0 4px 8px var(--drop-shadow-color),0 8px 16px var(--drop-shadow-color);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-transform:scale(1.02);transform:scale(1.02)}.links-bar a:not(:active):focus-visible{border-color:var(--accent-color, var(--link-light-color));box-shadow:0 4px 8px var(--drop-shadow-color),0 8px 16px var(--drop-shadow-color);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-transform:scale(1.02);transform:scale(1.02)}.links-bar a:not(:active):hover img{-webkit-animation:position-object 5s ease-in-out 1s 5;animation:position-object 5s ease-in-out 1s 5}.links-bar a:not(:active):focus-visible img{-webkit-animation:position-object 5s ease-in-out 1s 5;animation:position-object 5s ease-in-out 1s 5}.links-bar a:active{-webkit-transition:none;transition:none;-webkit-transform:scale(1.015);transform:scale(1.015);-webkit-filter:brightness(.8);filter:brightness(.8)}.links-bar a article{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-pack:end;justify-content:flex-end;background-color:var(--bg-color);background-repeat:no-repeat;background-image:-webkit-linear-gradient(top,var(--accent-alpha-color) 70%,var(--bg-color) 100%);background-image:linear-gradient(to bottom,var(--accent-alpha-color) 70%,var(--bg-color) 100%);-webkit-transition:background-position-y .15s ease-out;transition:background-position-y .15s ease-out}.links-bar a article figure{-webkit-box-flex:1;flex-grow:1;margin:0 0 -16px;padding:0;position:relative}.links-bar a article img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;vertical-align:top;-webkit-mask-image:-webkit-linear-gradient(top,hsl(0,0%,0%) 0%,hsla(0,0%,0%,.987) 14%,hsla(0,0%,0%,.951) 26.2%,hsla(0,0%,0%,.896) 36.8%,hsla(0,0%,0%,.825) 45.9%,hsla(0,0%,0%,.741) 53.7%,hsla(0,0%,0%,.648) 60.4%,hsla(0,0%,0%,.55) 66.2%,hsla(0,0%,0%,.45) 71.2%,hsla(0,0%,0%,.352) 75.6%,hsla(0,0%,0%,.259) 79.6%,hsla(0,0%,0%,.175) 83.4%,hsla(0,0%,0%,.104) 87.2%,hsla(0,0%,0%,.049) 91.1%,hsla(0,0%,0%,.013) 95.3%,hsla(0,0%,0%,0) 100%);mask-image:linear-gradient(to bottom,hsl(0,0%,0%) 0%,hsla(0,0%,0%,.987) 14%,hsla(0,0%,0%,.951) 26.2%,hsla(0,0%,0%,.896) 36.8%,hsla(0,0%,0%,.825) 45.9%,hsla(0,0%,0%,.741) 53.7%,hsla(0,0%,0%,.648) 60.4%,hsla(0,0%,0%,.55) 66.2%,hsla(0,0%,0%,.45) 71.2%,hsla(0,0%,0%,.352) 75.6%,hsla(0,0%,0%,.259) 79.6%,hsla(0,0%,0%,.175) 83.4%,hsla(0,0%,0%,.104) 87.2%,hsla(0,0%,0%,.049) 91.1%,hsla(0,0%,0%,.013) 95.3%,hsla(0,0%,0%,0) 100%)}.links-bar a:focus-visible article{background-position-y:-40px}.links-bar a:hover article{background-position-y:-40px}.links-bar a .article-body{padding:0 8px 8px;line-height:1.3;flex-shrink:0}.links-bar a .article-meta{color:var(--text-insignificant-color);font-size:90%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.links-bar a:hover .domain{color:var(--link-text-color)}.links-bar a h1{font-weight:400;font-size:inherit;margin:0;padding:0;text-wrap:balance;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.links-bar a p{color:var(--text-insignificant-color);margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:90%}#login{padding:16px;background-image:-webkit-radial-gradient(50% 50%,closest-side,var(--bg-color),transparent);background-image:radial-gradient(closest-side at 50% 50%,var(--bg-color),transparent)}#login .error{color:var(--red-color)}#login label p{margin:0 0 .25em;padding:0;text-transform:uppercase;font-size:90%;font-weight:700;color:var(--text-insignificant-color)}#login input{display:block;width:15em;margin:0 auto;max-width:100%;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}#instances-suggestions{margin:.2em 0 0;padding:0 0 0 1.2em;list-style:none;width:90vw;max-width:40em;overflow:auto;white-space:nowrap;-webkit-mask-image:-webkit-linear-gradient(left,transparent,black 1.2em,black calc(100% - 5em),transparent);mask-image:linear-gradient(to right,transparent,black 1.2em,black calc(100% - 5em),transparent);-webkit-animation:fade-in .2s ease-in-out;animation:fade-in .2s ease-in-out;height:2.5em}#instances-suggestions li{display:inline-block;margin:0;padding:0}#instances-eg{margin:.2em 0 0;padding:8px;height:2.5em;color:var(--text-insignificant-color);font-style:italic}.status-deck header{white-space:nowrap}.status-deck header h1{min-width:0;-webkit-box-flex:1;flex-grow:1;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;align-self:stretch}.status-deck header h1 .deck-back{margin-left:-16px}.hero-heading{font-size:var(--text-size);display:inline-block}.hero-heading .icon{vertical-align:middle;color:var(--text-insignificant-color)}.hero-heading .insignificant{font-weight:400}.ancestors-indicator{font-size:70%!important}.ancestors-indicator>.avatar~.avatar{margin-left:-4px}.ancestors-indicator:not([hidden]){-webkit-animation:slide-up .3s both ease-out .3s;animation:slide-up .3s both ease-out .3s}.ancestors-indicator[hidden]{opacity:0;pointer-events:none}.post-status-banner{position:sticky;bottom:16px;bottom:max(16px,env(safe-area-inset-bottom));font-size:90%;background-color:var(--bg-faded-color);padding:16px;margin:0 16px;border-radius:16px;white-space:pre-wrap;line-height:1.2;max-width:var(--main-width);z-index:1}.post-status-banner>p:first-of-type{margin-top:0;padding-top:0}#welcome{text-align:center;background-image:-webkit-radial-gradient(center,circle,var(--bg-color),transparent 16em),-webkit-radial-gradient(center,circle,var(--bg-color),transparent 8em);background-image:radial-gradient(circle at center,var(--bg-color),transparent 16em),radial-gradient(circle at center,var(--bg-color),transparent 8em);background-repeat:no-repeat;background-attachment:fixed;cursor:default}@media (prefers-color-scheme: dark){:where(html:not(.is-light)) #welcome{background-image:none}}:where(html.is-dark) #welcome{background-image:none}#welcome .hero-container{padding:16px;height:100vh;height:100svh;max-height:800px;display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}#welcome .hero-content{-webkit-box-flex:1;flex-grow:1;display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-pack:center;justify-content:center}#welcome h1{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-align:center;align-items:center;margin:0;padding:0;font-size:5em;line-height:1;letter-spacing:-1px;position:relative}#welcome h1 img{-webkit-filter:drop-shadow(-1px -1px var(--bg-blur-color)) drop-shadow(0 -1px 1px #fff) drop-shadow(0 16px 32px var(--drop-shadow-color));filter:drop-shadow(-1px -1px var(--bg-blur-color)) drop-shadow(0 -1px 1px #fff) drop-shadow(0 16px 32px var(--drop-shadow-color))}@media (prefers-color-scheme: dark){:where(html:not(.is-light)) #welcome h1 img{-webkit-filter:none;filter:none}}:where(html.is-dark) #welcome h1 img{-webkit-filter:none;filter:none}#welcome h1:hover img{-webkit-transform:scale(1.05);transform:scale(1.05)}#welcome img{vertical-align:top;-webkit-transition:-webkit-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out}#welcome .desc{font-size:1.4em;text-wrap:balance;opacity:.7}#welcome .desc~p{margin-top:0}#welcome .hero-container>p{margin-top:0}#welcome .app-site-version{text-align:center;opacity:.5;color:var(--text-insignificant-color);font-family:var(--monospace-font),monospace}#welcome .app-site-version small{font-size:11px;letter-spacing:-.2px}#welcome #why-container{padding:0 16px}#welcome .sections{padding-inline:16px}#welcome .sections section{text-align:start;max-width:480px;background-color:var(--bg-color);border-radius:16px;overflow:hidden;box-shadow:17px 20px 40px var(--drop-shadow-color);margin-bottom:48px}#welcome .sections section h4{margin:0;padding:30px 30px 0;font-size:1.4em;font-weight:600}#welcome .sections section p{margin-inline:30px;margin-bottom:30px;opacity:.7;text-wrap:balance}#welcome .sections section img{width:100%;height:auto;border-bottom:1px solid var(--outline-color)}@media (prefers-color-scheme: dark){:where(html:not(.is-light)) #welcome .sections section img{-webkit-filter:invert(.85) hue-rotate(180deg);filter:invert(.85) hue-rotate(180deg)}}:where(html.is-dark) #welcome .sections section img{-webkit-filter:invert(.85) hue-rotate(180deg);filter:invert(.85) hue-rotate(180deg)}@media (min-width: 40.001em){#welcome{width:100%}#welcome .hero-container{height:auto;max-height:none;position:fixed;left:0;top:0;bottom:0;width:50%;-webkit-box-align:end;align-items:flex-end}#welcome .hero-container>*{max-width:40em;width:100%}#welcome #why-container{padding:32px 32px 32px 8px;margin-left:50%}}#welcome~#compose-button,#welcome~#shortcuts{display:none} diff --git a/assets/main-9vVntYq7.js b/assets/main-9vVntYq7.js deleted file mode 100644 index e1c85fc..0000000 --- a/assets/main-9vVntYq7.js +++ /dev/null @@ -1,22 +0,0 @@ -import{s as k,a as z,b as Ae,u as _n,c as pe,o as ms,I as w,M as Ce,d as se,A as et,N as It,e as Fe,f as Be,L as ee,g as at,h as En,l as gs,t as Qt,R as $t,i as bs,p as tt,j as He,k as Pn,m as Pt,E as Nn,n as Ue,q as Ke,r as ys,v as Ie,w as en,T as Dn,x as ht,y as Un,z as tn,B as ws,C as vs,D as Fn,F as Ee,G as Ss,S as Me,H as ks,J as Is,K as Ge,O as On,P as Nt,Q as Ts,U as rt,V as Bn,W as _e,X as zn,Y as Cs,Z as $s,_ as xs,$ as gt,a0 as As,a1 as nn,a2 as Ls,a3 as sn,a4 as on}from"./useTitle-60DQEO3r.js";import{_ as D,p as B,h as $,u as Re,w as ze,a as e,b as Se,g as A,s as xt,c as Ht,M as oe,d as De,e as lt,F as he,T as Ve,S as Ms,I as je,y as Je,f as qn,l as an,i as Hn,j as Vn,k as qe,A as Rs,N as _s,m as Es,q as Ps,J as Ns,C as Gn,n as Ds,o as nt,r as jn,t as Us,v as Fs,x as Os,z as pt,B as Yn,D as cn,E as Bs,R as Vt,G as Te,H as zs,K as qs}from"./vendor-jabuMAqb.js";function ct(t=()=>{},n=[]){const i=D(t);B(()=>{i.current=t},[n]),B(()=>{const o=()=>{const a=document.hidden||document.visibilityState==="hidden";i.current(!a)};return document.addEventListener("visibilitychange",o),()=>document.removeEventListener("visibilitychange",o)},[])}const Hs=1e3*3,Vs=15e3,Gs=ze(function({isLoggedIn:n}){const[i,o]=$(!0);ct(o);const a=async(l,c,d)=>{var h;if(k.notificationsLast){const r=l.v1.notifications.list({limit:1,sinceId:k.notificationsLast.id}),{value:p}=await r.next();if(p!=null&&p.length)if(d)k.notificationsShowNew=!0;else{let f;try{const b=await l.v1.markers.fetch({timeline:"notifications"});f=(h=b==null?void 0:b.notifications)==null?void 0:h.lastReadId}catch{}f?k.notificationsShowNew=p[0].id!==f:k.notificationsShowNew=!0}}};B(()=>{let l,c;if(n&&i){const{masto:d,streaming:h,instance:r}=z();(async()=>{await a(d,r);let p=!1;h&&(c=setTimeout(()=>{(async()=>{try{p=!0,l=h.user.notification.subscribe();for await(const f of l){if(!l||!i)break;f.event==="notification"&&Ae(f.payload,r,{skipThreading:!0}),k.notificationsShowNew=!0}}catch{p=!1}p||(c=setInterval(()=>{a(d,r,!0)},Vs))})()},Hs))})()}return()=>{var d;(d=l==null?void 0:l.unsubscribe)==null||d.call(l),l=null,clearTimeout(c),clearInterval(c)}},[i,n]);const s=D(),u=()=>{s.current=Date.now(),fetch("./version.json").then(l=>l.json()).then(l=>{l&&(k.appVersion=l)}).catch(l=>{})};return _n(u,i&&1e3*60*30),ct(l=>{l&&(s.current?Date.now()-s.current>1e3*60*60&&u():u())}),Re("shift+alt+k",()=>{const l=k.settings.cloakMode;k.settings.cloakMode=!l,pe({text:`Cloak mode ${l?"disabled":"enabled"}`})}),null});function js(){function t(n){n.shiftKey?ms()||(k.showCompose=!0):k.showCompose=!0}return Re("c, shift+c",t,{ignoreEventWhen:n=>!!document.querySelector("#modal-container > *")}),e("button",{type:"button",id:"compose-button",onClick:t,children:e(w,{icon:"quill",size:"xl",alt:"Compose"})})}const Ys=ze(function(){const n=Se(k);function i(){k.showKeyboardShortcutsHelp=!1}return Re("?, shift+?",o=>{k.showKeyboardShortcutsHelp=!0},{ignoreEventWhen:o=>!!document.querySelector("#modal-container > *")}),!!n.showKeyboardShortcutsHelp&&e(Ce,{class:"light",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(A,{children:[e("kbd",{children:"Shift"})," + ",e("kbd",{children:"j"})]})},{action:"Skip carousel to previous post",keys:e(A,{children:[e("kbd",{children:"Shift"})," + ",e("kbd",{children:"k"})]})},{action:"Open post details",keys:e(A,{children:[e("kbd",{children:"Enter"})," or ",e("kbd",{children:"o"})]})},{action:e(A,{children:["Expand content warning or",e("br",{}),"toggle expanded/collapsed thread"]}),keys:e("kbd",{children:"x"})},{action:"Close post or dialogs",keys:e(A,{children:[e("kbd",{children:"Esc"})," or ",e("kbd",{children:"Backspace"})]})},{action:"Focus column in multi-column mode",keys:e(A,{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(A,{children:[e("kbd",{children:"Shift"})," + ",e("kbd",{children:"c"})]})},{action:"Send post",keys:e(A,{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(A,{children:[e("kbd",{children:"Shift"})," + ",e("kbd",{children:"r"})]})},{action:"Like (favourite)",keys:e(A,{children:[e("kbd",{children:"l"})," or ",e("kbd",{children:"f"})]})},{action:"Boost",keys:e(A,{children:[e("kbd",{children:"Shift"})," + ",e("kbd",{children:"b"})]})},{action:"Bookmark",keys:e("kbd",{children:"d"})},{action:"Toggle Cloak mode",keys:e(A,{children:[e("kbd",{children:"Shift"})," + ",e("kbd",{children:"Alt"})," + ",e("kbd",{children:"k"})]})}].map(({action:o,className:a,keys:s})=>e("tr",{children:[e("th",{class:a,children:o}),e("td",{children:s})]},o))})})]})})});function Ws({onClose:t}){const{masto:n}=z(),i=se.local.getJSON("accounts"),o=se.session.get("currentAccount"),a=i.length>1,[s,u]=xt(c=>c+1,0),[l]=Ht();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:l,children:i.map((c,d)=>{const h=c.info.id===o,r=d===0;return e("li",{children:[e("div",{children:[a&&e("span",{class:`current ${h?"is-current":""}`,children:e(w,{icon:"check-circle",alt:"Current"})}),e(et,{url:c.info.avatarStatic,size:"xxl",onDblClick:async()=>{if(h)try{const p=await n.v1.accounts.$select(c.info.id).fetch();c.info=p,se.local.setJSON("accounts",i),u()}catch{}}}),e(It,{account:a?{...c.info,acct:/@/.test(c.info.acct)?c.info.acct:`${c.info.acct}@${c.instanceURL}`}:c.info,showAcct:!0,onClick:()=>{h?k.showAccount=`${c.info.username}@${c.instanceURL}`:(se.session.set("currentAccount",c.info.id),location.reload())}})]}),e("div",{class:"actions",children:[r&&a&&e(A,{children:[e("span",{class:"tag",children:"Default"})," "]}),e(Fe,{align:"end",menuButton:e("button",{type:"button",title:"More",class:"plain more-button",children:e(w,{icon:"more",size:"l",alt:"More"})}),children:[e(oe,{onClick:()=>{k.showAccount=`${c.info.username}@${c.instanceURL}`},children:[e(w,{icon:"user"}),e("span",{children:"View profile…"})]}),e(De,{}),a&&e(oe,{disabled:r,onClick:()=>{i.splice(d,1),i.unshift(c),se.local.setJSON("accounts",i),u()},children:[e(w,{icon:"check-circle"}),e("span",{children:"Set as default"})]}),e(Be,{subMenu:!0,confirmLabel:e(A,{children:[e(w,{icon:"exit"}),e("span",{children:["Log out @",c.info.acct,"?"]})]}),disabled:!h,menuItemClassName:"danger",onClick:()=>{i.splice(d,1),se.local.setJSON("accounts",i),location.href=location.pathname||"/"},children:[e(w,{icon:"exit"}),e("span",{children:"Log out…"})]})]})]})]},c.info.id)})}),e("p",{children:e(ee,{to:"/login",class:"button plain2",onClick:t,children:[e(w,{icon:"plus"})," ",e("span",{children:"Add an existing account"})]})}),a&&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 Gt="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 rn(t){const{masto:n}=z();return n.v1.push.subscription.create(t)}function Ks(){const{masto:t}=z();return t.v1.push.subscription.fetch()}function Zs(t){const{masto:n}=z();return n.v1.push.subscription.update(t)}function Js(){const{masto:t}=z();return t.v1.push.subscription.remove()}function At(){return"serviceWorker"in navigator&&"PushManager"in window}function Xs(){return navigator.serviceWorker.getRegistration()}async function jt(){const t=await Xs(),n=t?await t.pushManager.getSubscription():void 0;return{registration:t,subscription:n}}function Wn(t){const n="=".repeat((4-t.length%4)%4),i=`${t}${n}`.replace(/-/g,"+").replace(/_/g,"/"),o=window.atob(i),a=new Uint8Array(o.length);for(let s=0;s{f.preventDefault();const g=new FormData(o.current).get("theme"),v=document.documentElement;if(g==="auto"){v.classList.remove("is-light","is-dark");const m=document.querySelector('meta[data-theme-setting="manual"]');m&&(m.name=""),document.querySelectorAll('meta[data-theme-setting="auto"]').forEach(S=>{S.name="theme-color"})}else{v.classList.toggle("is-light",g==="light"),v.classList.toggle("is-dark",g==="dark");const m=document.querySelector('meta[data-theme-setting="manual"]');m&&(m.name="theme-color",m.content=g==="light"?m.dataset.themeLightColor:m.dataset.themeDarkColor),document.querySelectorAll('meta[data-theme-setting="auto"]').forEach(S=>{S.name=""})}document.querySelector('meta[name="color-scheme"]').setAttribute("content",g==="auto"?"dark light":g),g==="auto"?se.local.del("theme"):se.local.set("theme",g)},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:Qe[0]},children:"A"})," ",e("input",{type:"range",min:Qe[0],max:Qe[Qe.length-1],step:"1",value:l,list:"sizes",onChange:f=>{const b=parseInt(f.target.value,10);document.documentElement.style.setProperty("--text-size",`${b}px`),b===un?se.local.del("textSize"):se.local.set("textSize",f.target.value)}})," ",e("span",{style:{fontSize:Qe[Qe.length-1]},children:"A"}),e("datalist",{id:"sizes",children:Qe.map(f=>e("option",{value:f}))})]})]})]})}),r&&e(A,{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:c["posting:default:visibility"]||"public",onChange:f=>{const{value:b}=f.target;(async()=>{try{await h.v1.accounts.updateCredentials({source:{privacy:b}}),d({...c,"posting:default:visibility":b}),se.account.set("preferences",{...c,"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:f=>{k.settings.autoRefresh=f.target.checked}})," ","Auto refresh timeline posts"]})}),e("li",{children:e("label",{children:[e("input",{type:"checkbox",checked:n.settings.boostsCarousel,onChange:f=>{k.settings.boostsCarousel=f.target.checked}})," ","Boosts carousel"]})}),e("li",{children:[e("label",{children:[e("input",{type:"checkbox",checked:n.settings.contentTranslation,onChange:f=>{const{checked:b}=f.target;k.settings.contentTranslation=b,b||(k.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:a||"",disabled:!n.settings.contentTranslation,onChange:f=>{k.settings.contentTranslationTargetLanguage=f.target.value||null},children:[e("option",{value:"",children:["System language (",u,")"]}),e("option",{disabled:!0,children:"──────────"}),Qt.map(f=>e("option",{value:f.code,children:f.name}))]})]})}),e("hr",{}),e("p",{class:"checkbox-fieldset",children:['Hide "Translate" button for',n.settings.contentTranslationHideLanguages.length>0&&e(A,{children:[" ","(",n.settings.contentTranslationHideLanguages.length,")"]}),":",e("div",{class:"checkbox-fields",children:Qt.map(f=>e("label",{children:[e("input",{type:"checkbox",checked:n.settings.contentTranslationHideLanguages.includes(f.code),onChange:b=>{const{checked:g}=b.target;g?k.settings.contentTranslationHideLanguages.push(f.code):k.settings.contentTranslationHideLanguages=n.settings.contentTranslationHideLanguages.filter(v=>v!==f.code)}})," ",f.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:f=>{k.settings.contentTranslationAutoInline=f.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."]})})]})]})]}),!!ni&&e("li",{children:[e("label",{children:[e("input",{type:"checkbox",checked:n.settings.mediaAltGenerator,onChange:f=>{k.settings.mediaAltGenerator=f.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."]})})]}),e("li",{children:[e("label",{children:[e("input",{type:"checkbox",checked:n.settings.cloakMode,onChange:f=>{k.settings.cloakMode=f.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."})})]}),r&&e("li",{children:e("button",{type:"button",class:"light",onClick:()=>{k.showDrafts=!0,k.showSettings=!1},children:"Unsent drafts"})})]})}),r&&e(ii,{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:Gt,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:f=>{f.preventDefault(),k.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:f=>{f.preventDefault(),k.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:ti,target:"_blank",rel:"noopener noreferrer",children:"Privacy Policy"})]}),e("p",{children:[hn&&e(A,{children:[e("span",{class:"insignificant",children:"Site:"})," ",hn.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-01-05T19:24:44.622Z".slice(0,10).replace(/-/g,".")}.32c53b8`,onClick:f=>{f.target.select();try{navigator.clipboard.writeText(f.target.value),pe("Version string copied")}catch{pe("Unable to copy version string")}}})," ",e("span",{class:"ib insignificant",children:["(",e("a",{href:"https://github.com/cheeaun/phanpy/commit/32c53b8",target:"_blank",rel:"noopener noreferrer",children:e($t,{datetime:new Date("2024-01-05T19:24:44.622Z")})}),")"]})]})]})]})]})}function ii({onClose:t}){if(!At())return null;const{instance:n}=z(),[i,o]=$("default"),a=D(),[s,u]=$(!1),[l,c]=$(!1),d=D();B(()=>{(async()=>{o("loading");try{const{subscription:r,backendSubscription:p}=await Qs();if(p!=null&&p.policy&&p.policy!=="none"){u(!0);const{alerts:f,policy:b}=p;d.current=b;const{elements:g}=a.current,v=g.namedItem(b);v&&(v.value=b),Object.keys(f).forEach(m=>{const y=g.namedItem(m);(y==null?void 0:y.type)==="checkbox"&&(y.checked=!0)})}o("default")}catch(r){/outside.*authorized/i.test(r.message)?c(!0):alert((r==null?void 0:r.message)||r),o("error")}})()},[]);const h=i==="loading";return e("form",{ref:a,onChange:()=>{const r=Object.fromEntries(new FormData(a.current)),p=!!r["policy-allow"],f={policy:r.policy,data:{alerts:{mention:!!r.mention,favourite:!!r.favourite,reblog:!!r.reblog,follow:!!r.follow,follow_request:!!r.followRequest,poll:!!r.poll,update:!!r.update,status:!!r.status}}};let b=0;Object.keys(f.data.alerts).forEach(v=>{f.data.alerts[v]?b++:delete f.data.alerts[v]});const g=d.current!==f.policy;p&&b>0?g?dn().then(()=>{ln(f)}).catch(v=>{alert("Failed to update subscription. Please try again.")}):ln(f).catch(v=>{alert("Failed to update subscription. Please try again.")}):dn().catch(v=>{alert("Failed to remove subscription. Please try again.")})},children:[e("h3",{children:"Push Notifications (beta)"}),e("section",{children:e("ul",{children:e("li",{children:[e("label",{children:[e("input",{type:"checkbox",disabled:h||l,name:"policy-allow",checked:s,onChange:async r=>{const{checked:p}=r.target;if(p){const f=await Notification.requestPermission();f==="granted"?u(!0):(u(!1),f==="denied"&&alert("Push notifications are blocked. Please enable them in your browser settings."))}else u(!1)}})," ","Allow from"," ",e("select",{name:"policy",disabled:h||l||!s,children:[{value:"all",label:"anyone"},{value:"followed",label:"people I follow"},{value:"follower",label:"followers"}].map(r=>e("option",{value:r.value,children:r.label}))})]}),e("div",{class:"shazam-container no-animation",style:{width:"100%"},hidden:!s,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(r=>e("li",{children:e("label",{children:[e("input",{type:"checkbox",name:r.value})," ",r.label]})}))})})})}),l&&e("div",{class:"sub-section",children:e("p",{children:["Push permission was not granted since your last login. You'll need to"," ",e(ee,{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 Dt=()=>{let t=setTimeout(()=>{if(!document.getElementById("columns")){const i=document.querySelectorAll("#modal-container > *");if(i!=null&&i.length){const u=i[i.length-1],l=u.querySelector('[tabindex="-1"]')||u;if(l){l.focus();return}}if(document.querySelector(".deck-backdrop"))return;const a=document.querySelectorAll(".deck-container"),s=a[a.length-1];s&&s.tabIndex===-1&&s.focus()}},100);return()=>clearTimeout(t)};function Kn(t){if(!t)return;const n=lt(),i=D(n.pathname);B(()=>{i.current&&n.pathname!==i.current&&(t==null||t())},[n.pathname,t])}function Yt({list:t,onClose:n}){const{masto:i}=z(),[o,a]=$("default"),s=!!t,u=D(),l=D(),c=D();B(()=>{s&&(u.current.value=t.title,l.current.value=t.repliesPolicy,c.current&&(c.current.checked=t.exclusive))},[s]);const d=bs("@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:s?"Edit list":"New list"})}),e("main",{children:e("form",{class:"list-form",onSubmit:h=>{h.preventDefault();const r=new FormData(h.target),p=r.get("title"),f=r.get("replies_policy"),b=r.get("exclusive")==="on";a("loading"),(async()=>{try{let g;s?g=await i.v1.lists.$select(t.id).update({title:p,replies_policy:f,exclusive:b}):g=await i.v1.lists.create({title:p,replies_policy:f,exclusive:b}),a("default"),n==null||n({state:"success",list:g})}catch{a("error"),alert(s?"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:u,type:"text",id:"list-title",name:"title",required:!0,disabled:o==="loading",dir:"auto"})]})}),e("div",{class:"list-form-row",children:e("select",{ref:l,name:"replies_policy",required:!0,disabled:o==="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"})]})}),d&&e("div",{class:"list-form-row",children:e("label",{class:"label-block",children:[e("input",{ref:c,type:"checkbox",name:"exclusive",disabled:o==="loading"})," ","Hide posts on this list from Home/Following"]})}),e("div",{class:"list-form-footer",children:[e("button",{type:"submit",disabled:o==="loading",children:s?"Save":"Create"}),s&&e(Be,{disabled:o==="loading",align:"end",menuItemClassName:"danger",confirmLabel:"Delete this list?",onClick:()=>{a("loading"),(async()=>{try{await i.v1.lists.$select(t.id).remove(),a("default"),n==null||n({state:"deleted"})}catch{a("error"),alert("Unable to delete list.")}})()},children:e("button",{type:"button",class:"light danger",disabled:o==="loading",children:"Delete…"})})]})]})})]})}const oi=[60*5,60*30,60*60,60*60*6,60*60*24,60*60*24*3,60*60*24*7,0],fn={0:"Forever",300:"5 minutes",1800:"30 minutes",3600:"1 hour",21600:"6 hours",86400:"1 day",259200:"3 days",604800:"1 week"},pn=80,Zn=1e3*60*10;function ai(t,n){return n.v1.accounts.familiarFollowers.fetch({id:[t]})}const ci=tt(ai,{maxAge:Zn});async function ri(t,n){const i=n.v1.accounts.$select(t).statuses.list({limit:20}).next(),{value:o}=await i,a={total:o.length,originals:0,replies:0,boosts:0};return o.forEach(s=>{s.reblog?a.boosts++:s.inReplyToId&&s.inReplyToAccountId!==s.account.id?a.replies++:a.originals++}),o.length&&(a.daysSinceLastPost=Math.ceil((Date.now()-new Date(o[o.length-1].createdAt))/864e5)),a}const li=tt(ri,{maxAge:Zn});function Jn({account:t,fetchAccount:n=()=>{},standalone:i,instance:o,authenticated:a}){const{masto:s}=z({instance:o}),{masto:u,instance:l}=z(),[c,d]=$("default"),h=typeof t=="string",[r,p]=$(h?null:t),f=he(()=>o===l,[o,l]);B(()=>{if(!h){p(t);return}d("loading"),(async()=>{try{const q=await n();k.accounts[`${q.id}@${o}`]=q,p(q),d("default")}catch{p(null),d("error")}})()},[h,t,n]);const{acct:b,avatar:g,avatarStatic:v,bot:m,createdAt:y,displayName:S,emojis:I,fields:T,followersCount:x,followingCount:L,group:N,id:O,lastStatusAt:U,locked:P,note:M,statusesCount:C,url:_,username:F,memorial:Y,moved:te,roles:W}=r||{};let ke=!1,{header:re,headerStatic:X}=r||{};(!re||/missing\.png$/.test(re))&&g&&!/missing\.png$/.test(g)&&(re=g,ke=!0,v&&!/missing\.png$/.test(v)&&(X=v));const E=he(()=>O===se.session.get("currentAccount"),[O]);B(()=>{const q=!!(r!=null&&r.id&&(r!=null&&r.username)&&(r!=null&&r.acct)&&(r!=null&&r.avatar)&&(r!=null&&r.avatarStatic)&&(r!=null&&r.displayName)&&(r!=null&&r.url));if(E&&o&&q){const ge=se.local.getJSON("accounts");let be=!1;ge.forEach(ue=>{ue.info.id===r.id&&ue.instanceURL===o&&(ue.info=r,be=!0)}),be&&se.local.setJSON("accounts",ge)}},[E,r,o]);const j=he(()=>_?new URL(_).hostname:null,[_]),[ne,le]=$([]),H=D(),ae=D([]);async function Q(q){(q||!H.current)&&(H.current=s.v1.accounts.$select(O).followers.list({limit:pn}));const ge=await H.current.next();if(E||!f)return ge;const{value:be}=ge;let ue=[];if(q){const xe=await s.v1.accounts.familiarFollowers.fetch({id:[O]});ae.current=xe[0].accounts,ue=[...ae.current,...be.filter(Pe=>!ae.current.some(Ne=>Ne.id===Pe.id))]}else be!=null&&be.length&&(ue=be.filter(xe=>!ae.current.some(Pe=>Pe.id===xe.id)));return{...ge,value:ue}}const ye=D();async function V(q){return(q||!ye.current)&&(ye.current=s.v1.accounts.$select(O).following.list({limit:pn})),await ye.current.next()}const Z=i?"div":ee,ce=o?`/${o}/a/${O}`:`/a/${O}`,[fe,me]=$([]),[de,R]=$(),[G,K]=$("default"),ie=!!(de!=null&&de.total),we=async q=>{try{const ge=await ci(q,u);me(ge[0].accounts.slice(0,di))}catch{}},Le=async()=>{if(O){K("loading");try{const q=await li(O,s);R(q),K("default")}catch{K("error")}}},$e=Ve(({relationship:q,currentID:ge})=>{q.following||(we(ge),!i&&C>0&&Le())},[i,O,C]);return e("div",{tabIndex:"-1",class:`account-container ${c==="loading"?"skeleton":""}`,style:{"--header-color-1":ne[0],"--header-color-2":ne[1],"--header-color-3":ne[2],"--header-color-4":ne[3]},children:[c==="error"&&e("div",{class:"ui-state",children:[e("p",{children:"Unable to load account."}),e("p",{children:e("a",{href:h?t:_,target:"_blank",rel:"noopener noreferrer",children:["Go to account page ",e(w,{icon:"external"})]})})]}),c==="loading"?e(A,{children:[e("header",{children:e(He,{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"})})})]})]})]}):r&&e(A,{children:[!!te&&e("div",{class:"account-moved",children:[e("p",{children:[e("b",{children:S})," has indicated that their new account is now:"]}),e(He,{account:te,instance:o,onClick:q=>{q.stopPropagation(),k.showAccount=te}})]}),!!re&&!/missing\.png$/.test(re)&&e("img",{src:re,alt:"",class:`header-banner ${ke?"header-is-avatar":""}`,onError:q=>{q.target.crossOrigin?q.target.src!==X?q.target.src=X:(q.target.removeAttribute("crossorigin"),q.target.src=re):q.target.src!==X?q.target.src=X:q.target.remove()},crossOrigin:"anonymous",onLoad:q=>{q.target.classList.add("loaded");try{const ge=document.createElement("canvas"),be=ge.getContext("2d",{willReadFrequently:!0});ge.width=q.target.width,ge.height=q.target.height,be.drawImage(q.target,0,0);const ue=10,Pe=[be.getImageData(0,0,ue,ue).data,be.getImageData(q.target.width-ue,0,ue,ue).data,be.getImageData(0,q.target.height-ue,ue,ue).data,be.getImageData(q.target.width-ue,q.target.height-ue,ue,ue).data].map(Ne=>{let st=0,Oe=0,We=0,Xe=0;for(let ve=0;ve{const[st,Oe,We,Xe]=hi(Ne);return`rgba(${st}, ${Oe}, ${We}, ${Xe})`});le(Pe)}catch{}}}),e("header",{children:e(He,{account:r,instance:o,avatarSize:"xxxl",external:i,internal:!i})}),e("div",{class:"faux-header-bg","aria-hidden":"true"}),e("main",{children:[!!Y&&e("span",{class:"tag",children:"In Memoriam"}),!!m&&e("span",{class:"tag",children:[e(w,{icon:"bot"})," Automated"]}),!!N&&e("span",{class:"tag",children:[e(w,{icon:"group"})," Group"]}),W==null?void 0:W.map(q=>e("span",{class:"tag",children:[q.name,!!j&&e(A,{children:[" ",e("span",{class:"more-insignificant",children:j})]})]})),e("div",{class:"note",dir:"auto",onClick:Pn({instance:l}),dangerouslySetInnerHTML:{__html:Pt(M,{emojis:I})}}),e("div",{class:"account-metadata-box",children:[(T==null?void 0:T.length)>0&&e("div",{class:"profile-metadata",children:T.map(({name:q,value:ge,verifiedAt:be},ue)=>e("div",{class:`profile-field ${be?"profile-verified":""}`,dir:"auto",children:[e("b",{children:[e(Nn,{text:q,emojis:I})," ",!!be&&e(w,{icon:"check-circle",size:"s"})]}),e("p",{dangerouslySetInnerHTML:{__html:Pt(ge,{emojis:I})}})]},q+ue))}),e("div",{class:"stats",children:[e(Z,{tabIndex:0,to:ce,onClick:()=>{setTimeout(()=>{k.showGenericAccounts={heading:"Followers",fetchAccounts:Q,instance:o,excludeRelationshipAttrs:E?["followedBy"]:[]}},0)},children:[!!fe.length&&e("span",{class:"shazam-container-horizontal",children:e("span",{class:"shazam-container-inner stats-avatars-bunch",children:fe.map(q=>e(et,{url:q.avatarStatic,size:"s",alt:`${q.displayName} @${q.acct}`,squircle:q==null?void 0:q.bot}))})}),e("span",{title:x,children:Ue(x)})," ","Followers"]}),e(Z,{class:"insignificant",tabIndex:0,to:ce,onClick:()=>{setTimeout(()=>{k.showGenericAccounts={heading:"Following",fetchAccounts:V,instance:o,excludeRelationshipAttrs:E?["following"]:[]}},0)},children:[e("span",{title:L,children:Ue(L)})," ","Following",e("br",{})]}),e(Z,{class:"insignificant",to:ce,children:[e("span",{title:C,children:Ue(C)})," ","Posts"]}),!!y&&e("div",{class:"insignificant",children:["Joined"," ",e("time",{datetime:y,children:Ke(y,{hideTime:!0})})]})]})]}),!!de&&e(Z,{to:ce,class:"account-metadata-box",children:e("div",{class:"shazam-container",children:e("div",{class:"shazam-container-inner",children:ie?e("div",{class:"posting-stats",title:`${Math.round(de.originals/de.total*100)}% original posts, ${Math.round(de.replies/de.total*100)}% replies, ${Math.round(de.boosts/de.total*100)}% boosts`,children:[e("div",{children:de.daysSinceLastPost<365?`Last ${de.total} post${de.total>1?"s":""} in the past - ${de.daysSinceLastPost} day${de.daysSinceLastPost>1?"s":""}`:` - Last ${de.total} posts in the past year(s) - `}),e("div",{class:"posting-stats-bar",style:{"--originals-percentage":`${de.originals/de.total*100}%`,"--replies-percentage":`${(de.originals+de.replies)/de.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."})})})}),e("div",{class:"account-metadata-box",children:e("div",{class:"shazam-container no-animation",hidden:!!de,children:e("div",{class:"shazam-container-inner",children:e("button",{type:"button",class:"posting-stats-button",disabled:G==="loading",onClick:()=>{Le()},children:[e("div",{class:`posting-stats-bar posting-stats-icon ${G==="loading"?"loading":""}`,style:{"--originals-percentage":"33%","--replies-percentage":"66%"}}),"View post stats"," "]})})})})]}),e("footer",{children:e(ui,{info:r,instance:o,authenticated:a,onRelationshipChange:$e})})]})]})}const di=3;function ui({info:t,instance:n,authenticated:i,onRelationshipChange:o=()=>{}}){var ye;if(!t)return null;const{masto:a,instance:s,authenticated:u}=z(),l=n===s,[c,d]=$("default"),[h,r]=$(null),{id:p,acct:f,url:b,username:g,locked:v,lastStatusAt:m,note:y,fields:S,moved:I}=t,T=D(p),{following:x,showingReblogs:L,notifying:N,followedBy:O,blocking:U,blockedBy:P,muting:M,mutingNotifications:C,requested:_,domainBlocking:F,endorsed:Y,note:te}=h||{},[W,ke]=$(null),[re,X]=$(!1);B(()=>{if(t){const V=se.session.get("currentAccount");let Z;(async()=>{if(l&&i)Z=p;else if(!l&&u){const fe=t.acct.includes("@");try{const me=await a.v2.search.fetch({q:fe?t.acct:`${t.username}@${n}`,type:"accounts",limit:1,resolve:!0});me.accounts.length&&(Z=me.accounts[0].id,ke(me.accounts[0]))}catch{}}if(!Z)return;if(V===Z){X(!0);return}if(T.current=Z,I)return;d("loading");const ce=a.v1.accounts.relationships.fetch({id:[Z]});try{const fe=await ce;if(d("default"),fe.length){const me=fe[0];r(me),o({relationship:me,currentID:Z})}}catch{d("error")}})()}},[t,i]),B(()=>{t&&re&&ys(t)},[t,re]);const E=c==="loading",[j,ne]=$(!1),[le,H]=$(!1),[ae,Q]=$(!1);return e(A,{children:[e("div",{class:"actions",children:[e("span",{children:[O?e("span",{class:"tag",children:"Follows you"}):m?e("small",{class:"insignificant",children:["Last post:"," ",e("span",{class:"ib",children:Ke(m,{hideTime:!0})})]}):e("span",{}),M&&e("span",{class:"tag danger",children:"Muted"}),U&&e("span",{class:"tag danger",children:"Blocked"})]})," ",e("span",{class:"buttons",children:[!!te&&e("button",{type:"button",class:"private-note-tag",title:"Private note",onClick:()=>{Q(!0)},dir:"auto",children:e("span",{children:te})}),e(Fe,{portal:{target:document.body},containerProps:{style:{zIndex:1001}},align:"center",position:"anchor",overflow:"auto",menuButton:e("button",{type:"button",title:"More",class:"plain",disabled:E,children:e(w,{icon:"more",size:"l",alt:"More"})}),children:[u&&!re&&e(A,{children:[e(oe,{onClick:()=>{k.showCompose={draftStatus:{status:`@${(W==null?void 0:W.acct)||f} `}}},children:[e(w,{icon:"at"}),e("span",{children:["Mention @",g]})]}),e(oe,{onClick:()=>{ne(!0)},children:[e(w,{icon:"translate"}),e("span",{children:"Translate bio"})]}),e(oe,{onClick:()=>{Q(!0)},children:[e(w,{icon:"pencil"}),e("span",{children:te?"Edit private note":"Add private note"})]}),x&&e(oe,{onClick:()=>{H(!0)},children:[e(w,{icon:"list"}),e("span",{children:"Add/remove from Lists"})]}),e(De,{})]}),e(oe,{href:b,target:"_blank",children:[e(w,{icon:"external"}),e("small",{class:"menu-double-lines",children:fi(b)})]}),e("div",{class:"menu-horizontal",children:[e(oe,{onClick:()=>{try{navigator.clipboard.writeText(b),pe("Link copied")}catch{pe("Unable to copy link")}},children:[e(w,{icon:"link"}),e("span",{children:"Copy"})]}),(navigator==null?void 0:navigator.share)&&((ye=navigator==null?void 0:navigator.canShare)==null?void 0:ye.call(navigator,{url:b}))&&e(oe,{onClick:()=>{try{navigator.share({url:b})}catch{alert("Sharing doesn't seem to work.")}},children:[e(w,{icon:"share"}),e("span",{children:"Share…"})]})]}),!!h&&e(A,{children:[e(De,{}),M?e(oe,{onClick:()=>{d("loading"),(async()=>{try{const V=await a.v1.accounts.$select((W==null?void 0:W.id)||p).unmute();r(V),d("default"),pe(`Unmuted @${g}`),k.reloadGenericAccounts.id="mute",k.reloadGenericAccounts.counter++}catch{d("error")}})()},children:[e(w,{icon:"unmute"}),e("span",{children:["Unmute @",g]})]}):e(Ms,{openTrigger:"clickOnly",direction:"bottom",overflow:"auto",shift:16,label:e(A,{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:oi.map(V=>e(oe,{onClick:()=>{d("loading"),(async()=>{try{const Z=await a.v1.accounts.$select((W==null?void 0:W.id)||p).mute({duration:V});r(Z),d("default"),pe(`Muted @${g} for ${fn[V]}`),k.reloadGenericAccounts.id="mute",k.reloadGenericAccounts.counter++}catch{d("error"),pe(`Unable to mute @${g}`)}})()},children:fn[V]}))})}),e(Be,{subMenu:!0,confirm:!U,confirmLabel:e(A,{children:[e(w,{icon:"block"}),e("span",{children:["Block @",g,"?"]})]}),menuItemClassName:"danger",onClick:()=>{d("loading"),(async()=>{try{if(U){const V=await a.v1.accounts.$select((W==null?void 0:W.id)||p).unblock();r(V),d("default"),pe(`Unblocked @${g}`)}else{const V=await a.v1.accounts.$select((W==null?void 0:W.id)||p).block();r(V),d("default"),pe(`Blocked @${g}`)}k.reloadGenericAccounts.id="block",k.reloadGenericAccounts.counter++}catch{d("error"),U?pe(`Unable to unblock @${g}`):pe(`Unable to block @${g}`)}})()},children:U?e(A,{children:[e(w,{icon:"unblock"}),e("span",{children:["Unblock @",g]})]}):e(A,{children:[e(w,{icon:"block"}),e("span",{children:["Block @",g,"…"]})]})})]})]}),!h&&c==="loading"&&e(Ie,{abrupt:!0}),!!h&&e(Be,{confirm:x||_,confirmLabel:e("span",{children:_?"Withdraw follow request?":`Unfollow @${t.acct||t.username}?`}),menuItemClassName:"danger",align:"end",disabled:E,onClick:()=>{d("loading"),(async()=>{try{let V;x||_?V=await a.v1.accounts.$select(T.current).unfollow():V=await a.v1.accounts.$select(T.current).follow(),V&&r(V),d("default")}catch(V){alert(V),d("error")}})()},children:e("button",{type:"button",class:`${x||_?"light swap":""}`,"data-swap-state":x||_?"danger":"",disabled:E,children:x?e(A,{children:[e("span",{children:"Following"}),e("span",{children:"Unfollow…"})]}):_?e(A,{children:[e("span",{children:"Requested"}),e("span",{children:"Withdraw…"})]}):v?e(A,{children:[e(w,{icon:"lock"})," ",e("span",{children:"Follow"})]}):"Follow"})})]})]}),!!j&&e(Ce,{class:"light",onClose:()=>{ne(!1)},children:e(pi,{note:y,fields:S,onClose:()=>ne(!1)})}),!!le&&e(Ce,{class:"light",onClose:()=>{H(!1)},children:e(mi,{accountID:T.current,onClose:()=>H(!1)})}),!!ae&&e(Ce,{class:"light",onClose:()=>{Q(!1)},children:e(gi,{account:t,note:te,onRelationshipChange:V=>{r(V)},onClose:()=>Q(!1)})})]})}function hi([t,n,i]){const o=.2126*t+.7152*n+.0722*i;let a;return o>=220?a=1:o<=50?a=.1:a=o/255,a=Math.min(1,a),[t,n,i,a]}function fi(t){if(!t)return;const n=new URL(t),{host:i,pathname:o}=n,a=o.replace(/\/$/,"").replace(/^\//,"");return e(A,{children:[e("span",{class:"more-insignificant",children:[i,"/"]}),e("wbr",{}),e("span",{children:a})]})}function pi({note:t,fields:n,onClose:i}){const o=(n==null?void 0:n.map(({name:s,value:u})=>`${s} -${en(u)}`).join(` - -`))||"",a=en(t)+(o?` - -${o}`:"");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:a}),e(Dn,{forceTranslate:!0,text:a})]})]})}function mi({accountID:t,onClose:n}){const{masto:i}=z(),[o,a]=$("default"),[s,u]=$([]),[l,c]=$([]),[d,h]=xt(f=>f+1,0);B(()=>{a("loading"),(async()=>{try{const f=await i.v1.lists.list();f.sort((g,v)=>g.title.localeCompare(v.title));const b=await i.v1.accounts.$select(t).lists.list();u(f),c(b),a("default")}catch{a("error")}})()},[d]);const[r,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:[s.length>0?e("ul",{class:"list-add-remove",children:s.map(f=>{const b=l.some(g=>g.id===f.id);return e("li",{children:e("button",{type:"button",class:`light ${b?"checked":""}`,disabled:o==="loading",onClick:()=>{a("loading"),(async()=>{try{b?await i.v1.lists.$select(f.id).accounts.remove({accountIds:[t]}):await i.v1.lists.$select(f.id).accounts.create({accountIds:[t]}),h()}catch{a("error"),alert(b?"Unable to remove from list.":"Unable to add to list.")}})()},children:[e(w,{icon:"check-circle"}),e("span",{children:f.title})]})})})}):o==="loading"?e("p",{class:"ui-state",children:e(Ie,{abrupt:!0})}):o==="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:o!=="default",children:[e(w,{icon:"plus",size:"l"})," ",e("span",{children:"New list"})]})]}),r&&e(Ce,{class:"light",onClick:f=>{f.target===f.currentTarget&&p(!1)},children:e(Yt,{list:r==null?void 0:r.list,onClose:f=>{f.state==="success"&&h(),p(!1)}})})]})}function gi({account:t,note:n,onRelationshipChange:i=()=>{},onClose:o=()=>{}}){const{masto:a}=z(),[s,u]=$("default"),l=D(null);return B(()=>{let c;return l.current&&!n&&(c=setTimeout(()=>{var d,h;(h=(d=l.current).focus)==null||h.call(d)},100)),()=>{clearTimeout(c)}},[]),e("div",{class:"sheet",id:"private-note-container",children:[!!o&&e("button",{type:"button",class:"sheet-close",onClick:o,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:c=>{c.preventDefault();const h=new FormData(c.target).get("note");(h==null?void 0:h.trim())!==(n==null?void 0:n.trim())&&(u("loading"),(async()=>{try{const r=await a.v1.accounts.$select(t==null?void 0:t.id).note.create({comment:h});u("default"),i(r),o()}catch(r){u("error"),alert((r==null?void 0:r.message)||"Unable to update private note.")}})())},children:[e("textarea",{ref:l,name:"note",disabled:s==="loading",children:n}),e("footer",{children:[e("button",{type:"button",class:"light",disabled:s==="loading",onClick:()=>{o==null||o()},children:"Cancel"}),e("span",{children:[e(Ie,{abrupt:!0,hidden:s!=="loading"}),e("button",{disabled:s==="loading",type:"submit",children:"Save & close"})]})]})]})})]})}function bi({account:t,instance:n,onClose:i}){const{masto:o,instance:a,authenticated:s}=z({instance:n}),u=typeof t=="string";return B(()=>{u||(k.accounts[`${t.id}@${a}`]=t)},[t]),Kn(i),e("div",{class:"sheet",children:[!!i&&e("button",{type:"button",class:"sheet-close outer",onClick:i,children:e(w,{icon:"x"})}),e(Jn,{instance:a,authenticated:s,account:t,fetchAccount:async()=>{if(u)try{return await o.v1.accounts.lookup({acct:t,skip_webfinger:!1})}catch{const c=await o.v2.search.fetch({q:t,type:"accounts",limit:1,resolve:s});if(c.accounts.length)return c.accounts[0];if(/https?:\/\/[^/]+\/@/.test(t)){const h=new URL(t).pathname.replace(/^\//,""),r=await o.v2.search.fetch({q:h,type:"accounts",limit:1,resolve:s});if(r.accounts.length)return r.accounts[0]}}else return t}})]})}function yi({onClose:t}){const{masto:n}=z(),[i,o]=$("default"),[a,s]=$([]),[u,l]=xt(d=>d+1,0);B(()=>{o("loading"),(async()=>{try{const d=await ht.drafts.keys();if(d.length){const h=Un(),r=d.filter(p=>p.startsWith(h));if(r.length){const p=await ht.drafts.getMany(r);p.sort((f,b)=>new Date(b.updatedAt).getTime()-new Date(f.updatedAt).getTime()),s(p)}else s([])}else s([]);o("default")}catch{o("error")}})()},[u]);const c=(a==null?void 0:a.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(Ie,{abrupt:!0,hidden:i!=="loading"})]}),c&&e("div",{class:"insignificant",children:"Looks like you have unsent drafts. Let's continue where you left off."})]}),e("main",{children:c?e(A,{children:[e("ul",{class:"drafts-list",children:a.map(d=>{const{updatedAt:h,key:r,draftStatus:p,replyTo:f}=d,b=new Date(h);return e("li",{children:[e("div",{class:"mini-draft-meta",children:[e("b",{children:[e(w,{icon:f?"reply":"quill",size:"s"})," ",e("time",{children:[!!f&&e(A,{children:["@",f.account.acct,e("br",{})]}),Ke(b)]})]}),e(Be,{confirmLabel:e("span",{children:"Delete this draft?"}),menuItemClassName:"danger",align:"end",disabled:i==="loading",onClick:()=>{(async()=>{try{await ht.drafts.del(r),l()}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 g;if(f){o("loading");try{g=await n.v1.statuses.$select(f.id).fetch()}catch{alert("Error fetching reply-to status!"),o("default");return}o("default")}window.__COMPOSE__={draftStatus:p,replyToStatus:g},k.showCompose=!0,k.showDrafts=!1},children:e(wi,{draft:d})})]},h)})}),a.length>1&&e("p",{children:e(Be,{confirmLabel:e("span",{children:"Delete all drafts?"}),menuItemClassName:"danger",disabled:i==="loading",onClick:()=>{(async()=>{o("loading");try{await ht.drafts.delMany(a.map(d=>d.key)),o("default"),l()}catch{alert("Error deleting drafts! Please try again."),o("error")}})()},children:e("button",{type:"button",class:"light danger",disabled:i==="loading",children:"Delete all…"})})})]}):e("p",{children:"No drafts found."})})]})}function wi({draft:t}){var r;const{draftStatus:n,replyTo:i}=t,{status:o,spoilerText:a,poll:s,mediaAttachments:u}=n,l=((r=s==null?void 0:s.options)==null?void 0:r.length)>0,c=(u==null?void 0:u.length)>0,d=l||c,h=he(()=>{if(!c)return;const p=u.find(g=>/image/.test(g.type));if(!p)return;const{file:f}=p;return URL.createObjectURL(f)},[c,u]);return e(A,{children:e("div",{class:"mini-draft",children:[d&&e("div",{class:`mini-draft-aside ${h?"has-image":""}`,style:h?{"--bg-image":`url(${h})`}:{},children:[l&&e(w,{icon:"poll"}),c&&e("span",{children:[e(w,{icon:"attachment"})," ",e("small",{children:u==null?void 0:u.length})]})]}),e("div",{class:"mini-draft-main",children:[!!a&&e("div",{class:"mini-draft-spoiler",children:a}),!!o&&e("div",{class:"mini-draft-status",children:o})]})]})})}async function Wt(t,n={}){if(!(t!=null&&t.length))return;const{masto:i}=z(),o=se.session.get("currentAccount"),a=t.reduce((s,u)=>(!s.includes(u.id)&&!n[u.id]&&u.id!==o&&s.push(u.id),s),[]);if(!a.length)return null;try{return(await i.v1.accounts.relationships.fetch({id:a})).reduce((l,c)=>(l[c.id]=c,l),{})}catch{return null}}function vi({instance:t,excludeRelationshipAttrs:n=[],onClose:i=()=>{}}){const{masto:o,instance:a}=z(),s=t?t===a:!0,u=Se(k),[l,c]=$("default"),[d,h]=$([]),[r,p]=$(!1);if(Kn(i),!u.showGenericAccounts)return null;const{id:f,heading:b,fetchAccounts:g,accounts:v,showReactions:m}=u.showGenericAccounts,[y,S]=$({}),I=async L=>{if(!(L!=null&&L.length)||!s)return;const N=await Wt(L,y);N&&S({...y,...N})},T=L=>{g&&(L&&h([]),c("loading"),(async()=>{try{const{done:N,value:O}=await g(L);if(Array.isArray(O)){if(L){const U=[];for(let P=0;P_.id===M.id&&P!==F);C?C._types.push(...M._types):U.push({_types:[],...M})}h(U)}else h(U=>{const P=U;for(const M of O){const C=P.find(_=>_.id===M.id);C?C._types.push(...M._types):P.push(M)}return P});p(!N),I(O)}else p(!1);c("default")}catch{c("error")}})())},x=D(!0);return B(()=>{(v==null?void 0:v.length)>0?(h(v),I(v)):(T(!0),x.current=!1)},[v,g]),B(()=>{var L;x.current||((L=u.reloadGenericAccounts)==null?void 0:L.id)===f&&T(!0)},[u.reloadGenericAccounts.counter]),e("div",{id:"generic-accounts-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:b||"Accounts"})}),e("main",{children:d.length>0?e(A,{children:[e("ul",{class:"accounts-list",children:d.map(L=>{var U,P;const N=y[L.id],O=`${L.id}-${((U=L._types)==null?void 0:U.length)||""}`;return e("li",{children:[m&&((P=L._types)==null?void 0:P.length)>0&&e("div",{class:"reactions-block",children:L._types.map(M=>e(w,{icon:{reblog:"rocket",favourite:"heart"}[M],class:`${M}-icon`}))}),e("div",{class:"account-relationships",children:e(He,{account:L,showStats:!0,relationship:N,excludeRelationshipAttrs:n})})]},O)})}),l==="default"?r?e(je,{onChange:L=>{L&&T()},children:e("button",{type:"button",class:"plain block",onClick:()=>T(),children:"Show more…"})}):e("p",{class:"ui-state insignificant",children:"The end."}):l==="loading"&&e("p",{class:"ui-state",children:e(Ie,{abrupt:!0})})]}):l==="loading"?e("p",{class:"ui-state",children:e(Ie,{abrupt:!0})}):l==="error"?e("p",{class:"ui-state",children:"Error loading accounts"}):e("p",{class:"ui-state insignificant",children:"Nothing to show"})})]})}function Si({alt:t,lang:n,onClose:i}){const o=Se(k),[a,s]=$(!1),u=En(!0),l=o.settings.contentTranslationHideLanguages||[],c=!!n&&n!==u&&!tn([n],[u])&&!l.find(d=>n===d||tn([n],[d]));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(Fe,{align:"end",menuButton:e("button",{type:"button",class:"plain4",children:e(w,{icon:"more",alt:"More",size:"xl"})}),children:[e(oe,{disabled:a,onClick:()=>{s(!0)},children:[e(w,{icon:"translate"}),e("span",{children:"Translate"})]}),ws&&e(oe,{onClick:()=>{vs(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}),(c||a)&&e(Dn,{forceTranslate:a,sourceLanguage:n,text:t})]})]})}function Lt(t,n,i){return Math.max(Math.min(t,i),n)}const Mt=t=>t>=.04045?Math.pow((t+.055)/1.055,2.4):t/12.92,Rt=t=>t>=.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t;function Xn([t,n,i]){t=Mt(t/255),n=Mt(n/255),i=Mt(i/255);var o=.4122214708*t+.5363325363*n+.0514459929*i,a=.2119034982*t+.6806995451*n+.1073969566*i,s=.0883024619*t+.2817188376*n+.6299787005*i;return o=Math.cbrt(o),a=Math.cbrt(a),s=Math.cbrt(s),[o*.2104542553+a*.793617785+s*-.0040720468,o*1.9779984951+a*-2.428592205+s*.4505937099,o*.0259040371+a*.7827717662+s*-.808675766]}function Qn([t,n,c]){var o=t+n*.3963377774+c*.2158037573,a=t+n*-.1055613458+c*-.0638541728,s=t+n*-.0894841775+c*-1.291485548;o=o**3,a=a**3,s=s**3;var u=o*4.0767416621+a*-3.3077115913+s*.2309699292,l=o*-1.2684380046+a*2.6097574011+s*-.3413193965,c=o*-.0041960863+a*-.7034186147+s*1.707614701;return u=255*Rt(u),l=255*Rt(l),c=255*Rt(c),u=Lt(u,0,255),l=Lt(l,0,255),c=Lt(c,0,255),u=Math.round(u),l=Math.round(l),c=Math.round(c),[u,l,c]}var ki={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:ka}=ki;function es({mediaAttachments:t,statusID:n,instance:i,lang:o,index:a=0,onClose:s=()=>{}}){var y,S;const[u,l]=$("default"),c=D(null),[d,h]=$(a),r=D(null);Je(()=>{var I;(I=r.current)==null||I.scrollIntoView()},[]);const p=D(n);B(()=>{const I=a*c.current.clientWidth,T=p.current!==n;T&&(p.current=n),c.current.scrollTo({left:I,behavior:T?"auto":"smooth"}),c.current.focus()},[a,n]);const[f,b]=$(!0);B(()=>{let I=()=>{s()};return c.current&&c.current.addEventListener("swiped-down",I),()=>{c.current&&c.current.removeEventListener("swiped-down",I)}},[]),Re("esc",s,{ignoreEventWhen:I=>!!document.querySelector("#modal-container > *")},[s]),B(()=>{let I=()=>{const{clientWidth:T,scrollLeft:x}=c.current,L=Math.round(x/T);h(L)};return c.current&&c.current.addEventListener("scroll",I,{passive:!0}),()=>{c.current&&c.current.removeEventListener("scroll",I)}},[]),B(()=>{let I=setTimeout(()=>{var T,x;(x=(T=c.current)==null?void 0:T.focus)==null||x.call(T)},100);return()=>clearTimeout(I)},[]);const g=he(()=>t==null?void 0:t.map(I=>{const{blurhash:T}=I;if(T){const x=qn(T),L=Xn(x);return Qn([.6,L[1],L[2]])}return null}),[t]),v=he(()=>{var x;const T=100/g.length;return((x=g==null?void 0:g.map((L,N)=>{const O=N*T+5,U=(N+1)*T-5;return L?` - rgba(${L==null?void 0:L.join(",")}, 0.4) ${O}%, - rgba(${L==null?void 0:L.join(",")}, 0.4) ${U}% - `:` - transparent ${O}%, - transparent ${U}% - `}))==null?void 0:x.join(", "))||"transparent"},[g]);let m=D(null);return B(()=>()=>{var I,T;(T=(I=m.current)==null?void 0:I.hideToast)==null||T.call(I)},[]),e("div",{class:`media-modal-container media-modal-count-${t==null?void 0:t.length}`,children:[e("div",{ref:c,tabIndex:"0","data-swipe-threshold":"44",class:"carousel",onClick:I=>{(I.target.classList.contains("carousel-item")||I.target.classList.contains("media")||I.target.classList.contains("media-zoom"))&&s()},style:t.length>1?{backgroundAttachment:"local",backgroundImage:`linear-gradient( - to right, ${v})`}:{},children:t==null?void 0:t.map((I,T)=>{const x=t.length===1?g[T]: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:T===d?r:null,onClick:L=>{L.target.classList.contains("media")||b(!f)},children:[!!I.description&&e("button",{type:"button",class:"media-alt",hidden:!f,onClick:()=>{k.showMediaAlt={alt:I.description,lang:o}},children:[e("span",{class:"alt-badge",children:"ALT"}),e("span",{class:"media-alt-desc",lang:o,dir:"auto",children:I.description})]}),e(Fn,{media:I,showOriginal:!0,lang:o})]},I.id)})}),e("div",{class:"carousel-top-controls",hidden:!f,children:[e("span",{children:e("button",{type:"button",class:"carousel-button",onClick:()=>s(),children:e(w,{icon:"x"})})}),(t==null?void 0:t.length)>1?e("span",{class:"carousel-dots",children:t==null?void 0:t.map((I,T)=>e("button",{type:"button",disabled:T===d,class:`carousel-dot ${T===d?"active":""}`,onClick:x=>{x.preventDefault(),x.stopPropagation(),c.current.scrollTo({left:c.current.clientWidth*T,behavior:"smooth"}),c.current.focus()},children:e(w,{icon:"round",size:"s"})},I.id))}):e("span",{}),e("span",{children:[e(Fe,{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(Ee,{href:((y=t[d])==null?void 0:y.remoteUrl)||((S=t[d])==null?void 0:S.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(ee,{to:`${i?`/${i}`:""}/s/${n}${window.matchMedia("(min-width: calc(40em + 350px))").matches?`?media=${d+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:!f,children:[e("button",{type:"button",class:"carousel-button",hidden:d===0,onClick:I=>{I.preventDefault(),I.stopPropagation(),c.current.focus(),c.current.scrollTo({left:c.current.clientWidth*(d-1),behavior:"smooth"})},children:e(w,{icon:"arrow-left"})}),e("button",{type:"button",class:"carousel-button",hidden:d===t.length-1,onClick:I=>{I.preventDefault(),I.stopPropagation(),c.current.focus(),c.current.scrollTo({left:c.current.clientWidth*(d+1),behavior:"smooth"})},children:e(w,{icon:"arrow-right"})})]})]})}const Ii="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",Ti="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",Ci="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",$i=200,xi=10;async function Tt(){const{masto:t}=z(),n=t.v1.followedTags.list({limit:$i}),i=[];let o=0;do{const{value:a,done:s}=await n.next();if(s||(a==null?void 0:a.length)===0)break;i.push(...a),o++}while(oa.name.localeCompare(s.name)),i.length&&setTimeout(()=>{se.account.set("followedTags",{tags:i,updatedAt:Date.now()})},1),i}const Ai=24*60*60*1e3;async function Li(){try{const{tags:t,updatedAt:n}=se.account.get("followedTags")||{};return t!=null&&t.length?(Date.now()-n>Ai&&Tt(),t):await Tt()}catch{return[]}}const mn=document.createElement("div"),Mi=t=>{if(!t)return[];if(t.indexOf("#")===-1)return[];mn.innerHTML=t;const n=mn.querySelectorAll("a.hashtag");return n.length?Array.from(n).map(i=>i.innerText.trim().replace(/^[^#]*#+/,"")):[]};function Ut({children:t}){if(typeof t=="string")return t;const[n,i]=$("");return B(()=>{Promise.resolve(t).then(i)},[t]),n}const Ze=9,Ri=["following","mentions","notifications","list","public","trending","search","hashtag","bookmarks","favourites"],ts={following:"Home / Following",notifications:"Notifications",list:"List",public:"Public (Local / Federated)",search:"Search","account-statuses":"Account",bookmarks:"Bookmarks",favourites:"Likes",hashtag:"Hashtag",trending:"Trending",mentions:"Mentions"},vt={list:[{text:"List ID",name:"id"}],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}]},_i=tt(async({id:t})=>(await z().masto.v1.lists.$select(t).fetch()).title),Ei=tt(async({id:t})=>{const n=await z().masto.v1.accounts.$select(t).fetch();return n.username||n.acct||n.displayName}),Ct={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:"list",title:_i,path:({id:t})=>`/l/${t}`,icon:"list"},public:{id:"public",title:({local:t})=>t?"Local":"Federated",subtitle:({instance:t})=>t||z().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||z().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:Ei,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||z().instance,path:({hashtag:t,instance:n,media:i})=>`${n?`/${n}`:""}/t/${t.split(/\s+/).join("+")}${i?"?media=1":""}`,icon:"hashtag"}};function Pi({onClose:t}){const n=Se(k),{shortcuts:i}=n,[o,a]=$(!1),[s,u]=$(!1),[l]=Ht();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:Ii},{value:"tab-menu-bar",label:"Tab/Menu bar",imgURL:Ci},{value:"multi-column",label:"Multi-column",imgURL:Ti}].map(({value:c,label:d,imgURL:h})=>{const r=n.settings.shortcutsViewMode===c||c==="float-button"&&!n.settings.shortcutsViewMode;return e("label",{class:r?"checked":"",children:[e("input",{type:"radio",name:"shortcuts-view-mode",value:c,checked:r,onChange:p=>{k.settings.shortcutsViewMode=p.target.value}})," ",e("img",{src:h,alt:"",width:"80",height:"58"})," ",e("span",{children:d})]},c)})}),i.length>0?e("ol",{class:"shortcuts-list",ref:l,children:i.filter(Boolean).map((c,d)=>{const h=Object.values(c).join("-"),{type:r}=c;if(!Ct[r])return null;let{icon:p,title:f,subtitle:b,excludeViewMode:g}=Ct[r];typeof f=="function"&&(f=f(c,d)),typeof b=="function"&&(b=b(c,d)),typeof p=="function"&&(p=p(c,d)),typeof g=="function"&&(g=g(c,d));const v=g==null?void 0:g.includes(n.settings.shortcutsViewMode);return e("li",{children:[e(w,{icon:p}),e("span",{class:"shortcut-text",children:[e(Ut,{children:f}),b&&e(A,{children:[" ",e("small",{class:"ib insignificant",children:b})]}),v&&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:d===0,onClick:()=>{const m=Array.from(k.shortcuts);if(d>0){const y=k.shortcuts[d-1];m[d-1]=c,m[d]=y,k.shortcuts=m}},children:e(w,{icon:"arrow-up",alt:"Move up"})}),e("button",{type:"button",class:"plain small",disabled:d===i.length-1,onClick:()=>{const m=Array.from(k.shortcuts);if(d{a({shortcut:c,shortcutIndex:d})},children:e(w,{icon:"pencil",alt:"Edit"})})]})]},h)})}):e("div",{class:"ui-state insignificant",children:[e("p",{children:"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:c=>{c.preventDefault(),k.shortcuts=[{type:"following"},{type:"notifications"}]},children:"Home / Following and Notifications"})," ","first."]})]}),e("p",{class:"insignificant",children:i.length>=Ze&&`Max ${Ze} shortcuts`}),e("p",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[e("button",{type:"button",class:"light",onClick:()=>u(!0),children:"Import/export"}),e("button",{type:"button",disabled:i.length>=Ze,onClick:()=>a(!0),children:[e(w,{icon:"plus"})," ",e("span",{children:"Add shortcut"})]})]})]}),o&&e(Ce,{class:"light",onClick:c=>{c.target===c.currentTarget&&a(!1)},children:e(Ui,{shortcut:o.shortcut,shortcutIndex:o.shortcutIndex,onSubmit:({result:c,mode:d})=>{d==="edit"?k.shortcuts[o.shortcutIndex]=c:k.shortcuts.push(c)},onClose:()=>a(!1)})}),s&&e(Ce,{class:"light",onClick:c=>{c.target===c.currentTarget&&u(!1)},children:e(Fi,{shortcuts:i,onClose:()=>u(!1)})})]})}const Ni=1e3*60,Di=tt(()=>{const{masto:t}=z();return t.v1.lists.list()},{maxAge:Ni}),gn={search:"For multi-column mode, search term is required, else the column will not be shown.",hashtag:"Multiple hashtags are supported. Space-separated."};function Ui({onSubmit:t,disabled:n,shortcut:i,shortcutIndex:o,onClose:a}){var v,m;const s=!!i,[u,l]=$((i==null?void 0:i.type)||null),{masto:c}=z(),[d,h]=$("default"),[r,p]=$([]),[f,b]=$([]);B(()=>{(async()=>{if(u==="list")try{h("loading");const y=await Di();y.sort((S,I)=>S.title.localeCompare(I.title)),p(y),h("default")}catch{h("error")}})(),(async()=>{if(u==="hashtag")try{const y=await Tt();b(y)}catch{}})()},[u]);const g=D();return B(()=>{if(s&&u&&vt[u]){const y=g.current;vt[u].forEach(({name:S,type:I})=>{const T=y.querySelector(`[name="${S}"]`);T&&i[S]&&(I==="checkbox"?T.checked=i[S]==="on":T.value=i[S])})}},[s,u]),e("div",{id:"shortcut-settings-form",class:"sheet",children:[!!a&&e("button",{type:"button",class:"sheet-close",onClick:a,children:e(w,{icon:"x"})}),e("header",{children:e("h2",{children:[s?"Edit":"Add"," shortcut"]})}),e("main",{tabindex:"-1",children:e("form",{ref:g,onSubmit:y=>{y.preventDefault();const S=new FormData(y.target),I={};S.forEach((T,x)=>{I[x]=T==null?void 0:T.trim(),x==="instance"&&(I[x]=I[x].replace(/^https?:\/\//,"").replace(/\/+$/,""),I[x]=I[x].replace(/^@?[^@]+@/,""))}),I.type&&(t({result:I,mode:s?"edit":"add"}),y.target.reset(),l(null),a==null||a())},children:[e("p",{children:e("label",{children:[e("span",{children:"Timeline"}),e("select",{required:!0,disabled:n,onChange:y=>{l(y.target.value)},defaultValue:s?i.type:void 0,name:"type",children:[e("option",{}),Ri.map(y=>e("option",{value:y,children:ts[y]}))]})]})}),(m=(v=vt[u])==null?void 0:v.map)==null?void 0:m.call(v,({text:y,name:S,type:I,placeholder:T,pattern:x,notRequired:L})=>u==="list"?e("p",{children:e("label",{children:[e("span",{children:"List"}),e("select",{name:"id",required:!L,disabled:n||d==="loading",defaultValue:s?i.id:void 0,children:r.map(N=>e("option",{value:N.id,children:N.title}))})]})}):e("p",{children:e("label",{children:[e("span",{children:y})," ",e("input",{type:I,switch:I==="checkbox"||void 0,name:S,placeholder:T,required:I==="text"&&!L,disabled:n,list:u==="hashtag"?"followed-hashtags-datalist":null,autocorrect:"off",autocapitalize:"off",spellcheck:!1,pattern:x}),u==="hashtag"&&f.length>0&&e("datalist",{id:"followed-hashtags-datalist",children:f.map(N=>e("option",{value:N.name}))})]})})),!!gn[u]&&e("p",{class:"form-note insignificant",children:[e(w,{icon:"info"}),gn[u]]}),e("footer",{children:[e("button",{type:"submit",class:"block",disabled:n||d==="loading",children:s?"Save":"Add"}),s&&e("button",{type:"button",class:"light danger",onClick:()=>{k.shortcuts.splice(o,1),a==null||a()},children:"Remove"})]})]})})]})}function Fi({shortcuts:t,onClose:n}){var d;const i=he(()=>!t||!t.filter(Boolean).length?"":an.compressToEncodedURIComponent(JSON.stringify(t.filter(Boolean))),[t]),[o,a]=$(""),[s,u]=$("default"),l=he(()=>{if(!o)return u("default"),null;try{const h=JSON.parse(an.decompressFromEncodedURIComponent(o));if(!Array.isArray(h))throw new Error("Not an array");return u("default"),h}catch{try{const r=JSON.parse(o);if(!Array.isArray(r))throw new Error("Not an array");return u("default"),r}catch{return u("error"),null}}},[o]),c=k.shortcuts.length>0;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",{children:e("input",{type:"text",name:"import",placeholder:"Paste shortcuts here",class:"block",onInput:h=>{a(h.target.value)}})}),!!l&&Array.isArray(l)&&e(A,{children:[e("p",{children:[e("b",{children:l.length})," shortcut",l.length>1?"s":""," ",e("small",{class:"insignificant",children:["(",o.length," characters)"]})]}),e("ol",{class:"import-settings-list",children:l.map(h=>{var r,p;return e("li",{children:[e("span",{style:{opacity:t.some(f=>Object.keys(f).every(b=>f[b]===h[b]))?1:0},children:"*"}),e("span",{children:[ts[h.type],h.type==="list"&&" ⚠️"," ",(p=(r=vt[h.type])==null?void 0:r.map)==null?void 0:p.call(r,({text:f,name:b,type:g})=>h[b]?e(A,{children:[e("span",{class:"tag collapsed insignificant",children:[f,":"," ",g==="checkbox"?h[b]==="on"?"✅":"❌":h[b]]})," "]}):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."})]})]}),s==="error"&&e("p",{class:"error",children:e("small",{children:"⚠️ Invalid settings format"})}),e("p",{children:[c&&e(A,{children:[e(Be,{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 h=l.filter(f=>!k.shortcuts.some(b=>Object.keys(b).every(g=>b[g]===f[g])));if(!h.length){pe("No new shortcuts to import");return}let r=[...k.shortcuts,...h];const p=r.length>Ze;p&&(r=r.slice(0,Ze)),k.shortcuts=r,pe(p?`Shortcuts imported. Exceeded max ${Ze}, so the rest are not imported.`:"Shortcuts imported"),n==null||n()},children:e("button",{type:"button",class:"plain2",disabled:!l,children:"Import & append…"})})," "]}),e(Be,{confirmLabel:c?"Override current shortcuts?":"Import shortcuts?",menuItemClassName:c?"danger":void 0,onClick:()=>{k.shortcuts=l,pe("Shortcuts imported"),n==null||n()},children:e("button",{type:"button",class:"plain2",disabled:!l,children:c?"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:i,readOnly:!0,onClick:h=>{if(h.target.value){h.target.select();try{navigator.clipboard.writeText(h.target.value),pe("Shortcuts copied")}catch{pe("Unable to copy shortcuts")}}}})}),e("p",{children:[e("button",{type:"button",class:"plain2",disabled:!i,onClick:()=>{try{navigator.clipboard.writeText(i),pe("Shortcut settings copied")}catch{pe("Unable to copy shortcut settings")}},children:[e(w,{icon:"clipboard"})," ",e("span",{children:"Copy"})]})," ",(navigator==null?void 0:navigator.share)&&((d=navigator==null?void 0:navigator.canShare)==null?void 0:d.call(navigator,{text:i}))&&e("button",{type:"button",class:"plain2",disabled:!i,onClick:()=>{try{navigator.share({text:i})}catch{alert("Sharing doesn't seem to work.")}},children:[e(w,{icon:"share"})," ",e("span",{children:"Share"})]})," ",i.length>0&&e("small",{class:"insignificant",children:[i.length," characters"]})]}),!!i&&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)})]})]})]})]})}Hn(k,t=>{for(const[n,i,o,a]of t)/^show/i.test(i)&&!o&&Dt()});function Oi(){var o,a,s,u,l,c,d,h;const t=Se(k),n=Vn(),i=lt();return e(A,{children:[!!t.showCompose&&e(Ce,{children:e(Ss,{replyToStatus:typeof t.showCompose!="boolean"?t.showCompose.replyToStatus:((o=window.__COMPOSE__)==null?void 0:o.replyToStatus)||null,editStatus:((a=k.showCompose)==null?void 0:a.editStatus)||((s=window.__COMPOSE__)==null?void 0:s.editStatus)||null,draftStatus:((u=k.showCompose)==null?void 0:u.draftStatus)||((l=window.__COMPOSE__)==null?void 0:l.draftStatus)||null,onClose:r=>{const{newStatus:p,instance:f,type:b}=r||{};k.showCompose=!1,window.__COMPOSE__=null,p&&(k.reloadStatusPage++,pe({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:g=>{g.hideToast(),k.prevLocation=i,n(f?`/${f}/s/${p.id}`:`/s/${p.id}`)}}))}})}),!!t.showSettings&&e(Ce,{onClose:()=>{k.showSettings=!1},children:e(si,{onClose:()=>{k.showSettings=!1}})}),!!t.showAccounts&&e(Ce,{onClose:()=>{k.showAccounts=!1},children:e(Ws,{onClose:()=>{k.showAccounts=!1}})}),!!t.showAccount&&e(Ce,{class:"light",onClose:()=>{k.showAccount=!1},children:e(bi,{account:((c=t.showAccount)==null?void 0:c.account)||t.showAccount,instance:(d=t.showAccount)==null?void 0:d.instance,onClose:({destination:r}={})=>{k.showAccount=!1}})}),!!t.showDrafts&&e(Ce,{onClose:()=>{k.showDrafts=!1},children:e(yi,{onClose:()=>k.showDrafts=!1})}),!!t.showMediaModal&&e(Ce,{onClick:r=>{(r.target===r.currentTarget||r.target.classList.contains("media"))&&(k.showMediaModal=!1)},children:e(es,{mediaAttachments:t.showMediaModal.mediaAttachments,instance:t.showMediaModal.instance,index:t.showMediaModal.index,statusID:t.showMediaModal.statusID,onClose:()=>{k.showMediaModal=!1}})}),!!t.showShortcutsSettings&&e(Ce,{class:"light",onClose:()=>{k.showShortcutsSettings=!1},children:e(Pi,{onClose:()=>k.showShortcutsSettings=!1})}),!!t.showGenericAccounts&&e(Ce,{class:"light",onClose:()=>{k.showGenericAccounts=!1},children:e(vi,{instance:t.showGenericAccounts.instance,excludeRelationshipAttrs:t.showGenericAccounts.excludeRelationshipAttrs,onClose:()=>k.showGenericAccounts=!1})}),!!t.showMediaAlt&&e(Ce,{class:"light",onClose:r=>{k.showMediaAlt=!1},children:e(Si,{alt:t.showMediaAlt.alt||t.showMediaAlt,lang:(h=t.showMediaAlt)==null?void 0:h.lang,onClose:()=>{k.showMediaAlt=!1}})})]})}function Ft({accountID:t,onChange:n}){const{masto:i}=z(),[o,a]=$("default"),[s,u]=$(null),[l,c]=$(null),d=l!==null;return e("p",{class:"follow-request-buttons",children:[e("button",{type:"button",disabled:o==="loading"||d,onClick:()=>{a("loading"),u("accept"),(async()=>{try{const h=await i.v1.followRequests.$select(t).authorize();if(!(h!=null&&h.followedBy))throw new Error("Follow request not accepted");c(h),n()}catch{}a("default")})()},children:"Accept"})," ",e("button",{type:"button",disabled:o==="loading"||d,class:"light danger",onClick:()=>{a("loading"),u("reject"),(async()=>{try{const h=await i.v1.followRequests.$select(t).reject();if(h!=null&&h.followedBy)throw new Error("Follow request not rejected");c(h),n()}catch{a("default")}})()},children:"Reject"}),e("span",{class:"follow-request-states",children:d&&s?s==="accept"?e(w,{icon:"check-circle",alt:"Accepted",class:"follow-accepted"}):e(w,{icon:"x-circle",alt:"Rejected",class:"follow-rejected"}):e(Ie,{hidden:o!=="loading"})})]})}const bn={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"},it={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(A,{children:["reported ",t]})},_t=50;function Bi({notification:t,instance:n,isStatic:i,disableContextMenu:o}){var L,N,O,U;const{id:a,status:s,account:u,report:l,_accounts:c,_statuses:d}=t;let{type:h}=t;const r=(s==null?void 0:s.reblog)||s,p=r==null?void 0:r.id,f=se.session.get("currentAccount"),b=f===(u==null?void 0:u.id),g=(L=s==null?void 0:s.poll)==null?void 0:L.voted,v=!!(s!=null&&s.inReplyToAccountId)&&(s==null?void 0:s.inReplyToAccountId)!==f&&((N=s==null?void 0:s.account)==null?void 0:N.id)===f;let m=0,y=0;if(h==="favourite+reblog"){for(const P of c)(O=P._types)!=null&&O.includes("favourite")&&m++,(U=P._types)!=null&&U.includes("reblog")&&y++;!y&&m&&(h="favourite"),!m&&y&&(h="reblog")}let S;if(h==="poll"?S=it[b?"poll-self":g?"poll-voted":"poll"]:h==="reblog"||h==="favourite"||h==="favourite+reblog"?(d==null?void 0:d.length)>1?S=it[`${h}+account`]:v?S=it[`${h}_reply`]:S=it[h]:it[h]?S=it[h]:S=`[Unknown notification type: ${h}]`,typeof S=="function"){const P=(d==null?void 0:d.length)||(c==null?void 0:c.length);if(P)S=S(P);else if(h==="admin.report"){const M=l==null?void 0:l.targetAccount;M&&(S=S(e(It,{account:M,showAvatar:!0})))}}if(h==="mention"&&!s)return null;const I=t.createdAt&&new Date(t.createdAt).toLocaleString(),T={"favourite+reblog":"Boosted/Liked by…",favourite:"Liked by…",reblog:"Boosted by…",follow:"Followed by…"}[h]||"Accounts",x=()=>{k.showGenericAccounts={heading:T,accounts:c,showReactions:h==="favourite+reblog",excludeRelationshipAttrs:h==="follow"?["followedBy"]:[]}};return e("div",{class:`notification notification-${h}`,"data-notification-id":a,tabIndex:"0",children:[e("div",{class:`notification-type notification-${h}`,title:I,children:h==="favourite+reblog"?e(A,{children:[e(w,{icon:"rocket",size:"xl",alt:h,class:"reblog-icon"}),e(w,{icon:"heart",size:"xl",alt:h,class:"favourite-icon"})]}):e(w,{icon:bn[h]||"notification",size:"xl",alt:h})}),e("div",{class:"notification-content",children:[h!=="mention"&&e(A,{children:[e("p",{children:[!/poll|update/i.test(h)&&e(A,{children:(c==null?void 0:c.length)>1?e(A,{children:[e("b",{tabIndex:"0",onClick:x,children:[e("span",{title:c.length,children:Ue(c.length)})," ","people"]})," "]}):e(A,{children:[e(It,{account:u,showAvatar:!0})," "]})}),S,h==="mention"&&e("span",{class:"insignificant",children:[" ","•"," ",e($t,{datetime:t.createdAt,format:"micro"})]})]}),h==="follow_request"&&e(Ft,{accountID:u.id})]}),(c==null?void 0:c.length)>1&&e("p",{class:"avatars-stack",children:[c.slice(0,_t).map(P=>e(A,{children:[e("a",{href:P.url,rel:"noopener noreferrer",class:"account-avatar-stack",onClick:M=>{M.preventDefault(),k.showAccount=P},children:[e(et,{url:P.avatarStatic,size:c.length<=10?"xxl":c.length<20?"xl":c.length<30?"l":c.length<40?"m":"s",alt:`${P.displayName} @${P.acct}`,squircle:P==null?void 0:P.bot},P.id),h==="favourite+reblog"&&e("div",{class:"account-sub-icons",children:P._types.map(M=>e(w,{icon:bn[M],size:"s",class:`${M}-icon`}))})]},P.id)," "]},P.id)),e("button",{type:"button",class:"small plain",onClick:x,children:[c.length>_t&&`+${c.length-_t}`,e(w,{icon:"chevron-down"})]})]}),(d==null?void 0:d.length)>1&&e("ul",{class:"notification-group-statuses",children:d.map(P=>e("li",{children:e(yn,{class:`status-link status-type-${h}`,to:n?`/${n}/s/${P.id}`:`/s/${P.id}`,children:e(Me,{status:P,size:"s"})})},P.id))}),s&&(!(d!=null&&d.length)||(d==null?void 0:d.length)<=1)&&e(yn,{class:`status-link status-type-${h}`,to:n?`/${n}/s/${p}`:`/s/${p}`,onContextMenu:o?void 0:P=>{const M=P.target.querySelector(".status");if(M){if(P.metaKey)return;P.preventDefault(),M.dispatchEvent(new MouseEvent("contextmenu",{clientX:P.clientX,clientY:P.clientY}))}},children:i?e(Me,{status:r,size:"s"}):e(Me,{statusID:p,size:"s"})})]})]})}function yn(t){const n=ks();return e(ee,{...t,"data-read-more":"Read more →",ref:n})}const Kt=ze(Bi);"serviceWorker"in navigator&&navigator.serviceWorker.addEventListener("message",t=>{const{type:n,id:i,accessToken:o}=(t==null?void 0:t.data)||{};n==="notification"&&(k.routeNotification={id:i,accessToken:o})});const zi=ze(function(){if(!("serviceWorker"in navigator))return null;const n=Se(k),{routeNotification:i}=n,{id:o,accessToken:a}=i||{},[s,u]=$(!1);Je(()=>{if(!o||!a)return;const{instance:c}=z(),{masto:d,instance:h}=z({accessToken:a}),r=c===h,p=a?Is(a):at();(async()=>{const f=await d.v1.notifications.$select(o).fetch();if(f&&p){const b=p.instanceURL,{type:g,status:v,account:m}=f,y=!!document.querySelector("#modal-container > *"),S=g==="follow"&&!!(m!=null&&m.id),I=!!(m!=null&&m.id),T=!!(v!=null&&v.id);S&&r?k.showAccount={account:m,instance:b}:y||!r||I&&T?u({id:o,account:p,notification:f,sameInstance:r}):T?location.hash=`/${c}/s/${v.id}`:S?location.hash=`/${c}/a/${m.id}`:location.hash="/notifications"}})()},[o,a]),Je(()=>{navigator!=null&&navigator.clearAppBadge&&navigator.clearAppBadge()},[]),ct(c=>{c&&(navigator!=null&&navigator.clearAppBadge)&&navigator.clearAppBadge()});const l=()=>{u(!1),k.routeNotification=null,/\/notifications\?id=/i.test(location.hash)&&(location.hash="/notifications")};if(s){const{id:c,account:d,notification:h,sameInstance:r}=s;return e(Ce,{class:"light",onClick:p=>{p.target===p.currentTarget&&l()},children:e("div",{class:"sheet",tabIndex:"-1",children:[e("button",{type:"button",class:"sheet-close",onClick:l,children:e(w,{icon:"x"})}),e("header",{children:e("b",{children:"Notification"})}),e("main",{children:[!r&&e("p",{children:"This notification is from your other account."}),e("div",{class:"notification-peek",onClick:p=>{const{target:f}=p;(p.target.tagName==="BUTTON"||p.target.tagName==="A")&&l()},children:e(Kt,{instance:d.instanceURL,notification:h,isStatic:!0})}),e("div",{style:{textAlign:"end"},children:e(ee,{to:"/notifications",class:"button light",onClick:l,children:[e("span",{children:"View all notifications"})," ",e(w,{icon:"arrow-right"})]})})]})]})})}return null}),ns=_s((t,n)=>{const{instance:i}=z(),[o,a]=qe(),[s,u]=$(!1),[l,c]=$(o.get("q")||""),d=o.get("type"),h=D(null),r=D(null);return Rs(n,()=>({setValue:p=>{c(p)},focus:()=>{r.current.focus()},select:()=>{r.current.select()},blur:()=>{r.current.blur()}})),e("form",{ref:h,class:"search-popover-container",onSubmit:p=>{var b;if(p.preventDefault(),/\/search/.test(location.hash))if(l){const g={q:l};d&&(g.type=d),a(g)}else a({});else l?location.hash=`/search?q=${encodeURIComponent(l)}${d?`&type=${d}`:""}`:location.hash="/search";(b=t==null?void 0:t.onSubmit)==null||b.call(t,p)},children:[e("input",{ref:r,value:l,name:"q",type:"search",placeholder:"Search",dir:"auto",autocomplete:"off",autocorrect:"off",autocapitalize:"off",onSearch:p=>{p.target.value||a({})},onInput:p=>{c(p.target.value),u(!0)},onFocus:()=>{u(!0)},onBlur:()=>{var p,f;setTimeout(()=>{u(!1)},100),(f=(p=h.current)==null?void 0:p.querySelector(".search-popover-item.focus"))==null||f.classList.remove("focus")},onKeyDown:p=>{var b;const{key:f}=p;switch(f){case"Escape":u(!1);break;case"Down":case"ArrowDown":if(p.preventDefault(),s){const g=h.current.querySelector(".search-popover-item.focus");if(g){let v=g.nextElementSibling;for(;v&&v.hidden;)v=v.nextElementSibling;v&&(v.classList.add("focus"),Array.from(v.parentElement.children).filter(y=>y!==v).forEach(y=>{y.classList.remove("focus")}))}else{const v=h.current.querySelector(".search-popover-item");v&&v.classList.add("focus")}}break;case"Up":case"ArrowUp":if(p.preventDefault(),s){const g=document.querySelector(".search-popover-item.focus");if(g){let v=g.previousElementSibling;for(;v&&v.hidden;)v=v.previousElementSibling;v&&(v.classList.add("focus"),Array.from(v.parentElement.children).filter(y=>y!==v).forEach(y=>{y.classList.remove("focus")}))}else{const v=document.querySelector(".search-popover-item:last-child");v&&v.classList.add("focus")}}break;case"Enter":if(s){const g=document.querySelector(".search-popover-item.focus");g&&(p.preventDefault(),g.click()),u(!1),(b=t==null?void 0:t.onSubmit)==null||b.call(t,p)}break}}}),e("div",{class:"search-popover",hidden:!s||!l,children:!!l&&[{label:e(A,{children:["Posts with ",e("q",{children:l})]}),to:`/search?q=${encodeURIComponent(l)}&type=statuses`,hidden:/^https?:/.test(l)},{label:e(A,{children:["Posts tagged with ",e("mark",{children:["#",l.replace(/^#/,"")]})]}),to:`/${i}/t/${l.replace(/^#/,"")}`,hidden:/^@/.test(l)||/^https?:/.test(l)||/\s/.test(l),top:/^#/.test(l),type:"link"},{label:e(A,{children:["Look up ",e("mark",{children:l})]}),to:`/${l}`,hidden:!/^https?:/.test(l),top:/^https?:/.test(l),type:"link"},{label:e(A,{children:["Accounts with ",e("q",{children:l})]}),to:`/search?q=${encodeURIComponent(l)}&type=accounts`}].sort((p,f)=>p.top&&!f.top?-1:!p.top&&f.top?1:0).map(({label:p,to:f,hidden:b,type:g})=>e(ee,{to:f,class:"search-popover-item",hidden:b,onClick:v=>{var m;(m=t==null?void 0:t.onSubmit)==null||m.call(t,v)},children:[e(w,{icon:g==="link"?"arrow-right":"search",class:"more-insignificant"}),e("span",{children:p})," "]}))})]})}),qi=ze(function({onClose:n=()=>{}}){const[i,o]=$(!1),a=D(null);Re("/",u=>{o(!0),setTimeout(()=>{var l,c,d,h;(c=(l=a.current)==null?void 0:l.focus)==null||c.call(l),(h=(d=a.current)==null?void 0:d.select)==null||h.call(d)},0)},{preventDefault:!0,ignoreEventWhen:u=>{const l=/\/search/.test(location.hash),c=!!document.querySelector("#modal-container > *");return l||c}});const s=()=>{o(!1),n()};return Re("esc",u=>{var l,c;(c=(l=a.current)==null?void 0:l.blur)==null||c.call(l),s()},{enabled:i,enableOnFormTags:!0,preventDefault:!0}),e("div",{id:"search-command-container",hidden:!i,onClick:u=>{u.target===u.currentTarget&&s()},children:e(ns,{ref:a,onSubmit:()=>{s()}})})});function Hi(){const{instance:t}=z(),n=Se(k),{shortcuts:i,settings:o}=n;if(!i.length||o.shortcutsViewMode==="multi-column"||!o.shortcutsViewMode&&o.shortcutsColumnsMode)return null;const a=D(),s=he(()=>i.map((l,c)=>{const{type:d,...h}=l;if(!Ct[d])return null;let{id:r,path:p,title:f,subtitle:b,icon:g}=Ct[d];return typeof r=="function"&&(r=r(h,c)),typeof p=="function"&&(p=p({...h,instance:h.instance||t},c)),typeof f=="function"&&(f=f(h,c)),typeof b=="function"&&(b=b(h,c)),typeof g=="function"&&(g=g(h,c)),{id:r,path:p,title:f,subtitle:b,icon:g}}).filter(Boolean),[i]),u=Vn();return Re(["1","2","3","4","5","6","7","8","9"],(l,c)=>{var h,r;const d=parseInt(c.keys[0],10)-1;if(d{l.preventDefault(),k.showShortcutsSettings=!0},children:e("ul",{children:s.map(({id:l,path:c,title:d,subtitle:h,icon:r},p)=>e("li",{children:e(ee,{class:h?"has-subtitle":"",to:c,onClick:f=>{if(f.target.classList.contains("is-active")){f.preventDefault();const b=document.getElementById(`${l}-page`);if(b){b.scrollTop=0;const g=b.querySelector(".updates-button");g&&g.click()}}},children:[e(w,{icon:r,size:"xl",alt:d}),e("span",{children:[e(Ut,{children:d}),h&&e(A,{children:[e("br",{}),e("small",{children:h})]})]})]})},`${p}-${l}-${d}-${h}-${c}`))})}):e(Fe,{instanceRef:a,overflow:"auto",viewScroll:"close",menuClassName:"glass-menu shortcuts-menu",gap:8,position:"anchor",menuButton:e("button",{type:"button",id:"shortcuts-button",class:"plain",onContextMenu:l=>{l.preventDefault(),k.showShortcutsSettings=!0},onTransitionStart:l=>{var c,d;try{const{target:h}=l;getComputedStyle(h).pointerEvents==="none"&&((d=(c=a.current)==null?void 0:c.closeMenu)==null||d.call(c))}catch{}},children:e(w,{icon:"shortcut",size:"xl",alt:"Shortcuts"})}),children:s.map(({id:l,path:c,title:d,subtitle:h,icon:r},p)=>e(Ee,{to:c,class:"glass-menu-item",children:[e(w,{icon:r,size:"l"})," ",e("span",{class:"menu-grow",children:[e("span",{children:e(Ut,{children:d})}),h&&e(A,{children:[" ",e("small",{class:"more-insignificant",children:h})]})]}),e("span",{class:"menu-shortcut hide-until-focus-visible",children:p+1})]},`${p}-${l}-${d}-${h}-${c}`))})})}const Vi=ze(Hi);function Gi(t){var a;let n=[],i=[],o=0;for(let s=0;s10&&(i.length>t.length/4||o>=3)){const s=i.map(u=>u.id);if(i.length>t.length*3/4)n=[...n,{id:s,items:i,type:"boosts"}];else{const u=Math.floor(n.length/2);n=[...n.slice(0,u),{id:s,items:i,type:"boosts"},...n.slice(u)]}return n}else return t}function wn(t,n){const i=se.account.get("boostedStatusIDs")||{},o=t.filter(s=>{if(!s.reblog)return!0;const u=`${n}-${s.reblog.id}`,l=i[u];return l&&l!==s.id?!1:(i[u]=s.id,!0)}),a=Object.keys(i);return a.length>50&&a.slice(0,a.length-50).forEach(s=>{delete i[s]}),se.account.set("boostedStatusIDs",i),o}function ji(t){const n=[];let i=0;t.forEach(s=>{for(let l=0;lc.id===s.id))return;if(n[l].find(c=>c.id===s.inReplyToId)||n[l].find(c=>c.inReplyToId===s.id)){n[l].push(s);return}}const u=t.find(l=>l.id===s.inReplyToId);u&&(n[i++]=[s,u])});for(let s=0;sn[u].includes(c))&&(n[s]=[...n[s],...n[u]],n[s]=n[s].filter((c,d,h)=>h.findIndex(r=>r.id===c.id)===d),n.splice(u,1),u--);n.forEach(s=>{s.sort((u,l)=>!u.inReplyToId&&!l.inReplyToId?new Date(u.createdAt)-new Date(l.createdAt):u.inReplyToId===l.id?1:l.inReplyToId===u.id||!u.inReplyToId?-1:l.inReplyToId?new Date(u.createdAt)-new Date(l.createdAt):1)}),n.forEach(s=>{const u=s[0].account.id;s.forEach(l=>{l.account.id!==u&&(l._differentAuthor=!0)})}),n.length;const o=[],a=[];return t.forEach(s=>{if(s.reblog){o.push(s);return}for(let u=0;ul.id===s.id)){if(a.includes(u))return;const l=n[u];l.sort((d,h)=>{const r=new Date(d.createdAt),p=new Date(h.createdAt);return r-p});const c=l[0].account.id;o.push({id:l.map(d=>d.id),items:l,type:l.every(d=>d.account.id===c)?"thread":"conversation"}),a.push(u);return}o.push(s)}),o}async function Yi(t,n){const i=await Li();if(!i.length)return;const{statusFollowedTags:o}=k,a=[];if(t.forEach(s=>{var p;if(s.reblog)return;const{id:u,content:l,tags:c=[]}=s,d=Ge(u,n);if((p=o[d])!=null&&p.length)return;const h=Mi(l);if(!h.length&&!c.length)return;const r=i.reduce((f,b)=>((h.some(g=>g.toLowerCase()===b.name.toLowerCase())||c.some(g=>g.name.toLowerCase()===b.name.toLowerCase()))&&f.push(b.name),f),[]);r.length&&a.push({item:s,sKey:d,followedTags:r})}),a.length){const s=a.map(l=>l.item.account),u=await Wt(s);if(!u)return;a.forEach(l=>{const{item:c,sKey:d,followedTags:h}=l;u[c.account.id].following||(o[d]=h)})}}function Wi(){k.statusFollowedTags={}}function Ki({scrollableRef:t,distanceFromStart:n=1,distanceFromEnd:i=1,scrollThresholdStart:o=10,scrollThresholdEnd:a=10,direction:s="vertical",distanceFromStartPx:u,distanceFromEndPx:l}={}){const[c,d]=$(null),[h,r]=$(!1),[p,f]=$(!1),[b,g]=$(!1),[v,m]=$(!1),y=s==="vertical";return Je(()=>{const S=t.current;if(!S)return{};let I=y?S.scrollTop:S.scrollLeft;function T(){const{scrollTop:x,scrollLeft:L,scrollHeight:N,scrollWidth:O,clientHeight:U,clientWidth:P}=S,M=y?x:L,C=y?N:O,_=y?U:P,F=Math.abs(M-I),Y=u||Math.min(_*n,C,M),te=l||Math.min(_*i,C,C-M-_);F>=(I=C),g(M<=Y),m(M+_>=C-te)}return S.addEventListener("scroll",T,{passive:!0}),()=>S.removeEventListener("scroll",T)},[n,i,o,a]),{scrollDirection:c,reachStart:h,reachEnd:p,nearReachStart:b,nearReachEnd:v,init:()=>{t.current&&t.current.dispatchEvent(new Event("scroll"))}}}function Zi({scrollableRef:t,distanceFromStart:n=1,distanceFromEnd:i=1,scrollThresholdStart:o=10,scrollThresholdEnd:a=10,direction:s="vertical",distanceFromStartPx:u,distanceFromEndPx:l,init:c}={},d,h){if(!d)return;const[r,p]=$(null),[f,b]=$(!1),[g,v]=$(!1),[m,y]=$(!1),[S,I]=$(!1),T=s==="vertical",x=D(null),L=Es(()=>{const N=t.current,{scrollTop:O,scrollLeft:U,scrollHeight:P,scrollWidth:M,clientHeight:C,clientWidth:_}=N,F=T?O:U,Y=T?P:M,te=T?C:_,W=Math.abs(F-x.current),ke=u||Math.min(te*n,Y,F),re=l||Math.min(te*i,Y,Y-F-te);W>=(x.current=Y),y(F<=ke),I(F+te>=Y-re)},500);Je(()=>{const N=t.current;return N?(x.current=N[T?"scrollTop":"scrollLeft"],N.addEventListener("scroll",L,{passive:!0}),()=>N.removeEventListener("scroll",L)):{}},[n,i,o,a]),B(()=>{d({scrollDirection:r,reachStart:f,reachEnd:g,nearReachStart:m,nearReachEnd:S})},[r,f,g,m,S,...h]),B(()=>{c&&t.current&&queueMicrotask(()=>{t.current.dispatchEvent(new Event("scroll"))})},[c])}function Ji({class:t,statusID:n,status:i,instance:o,parent:a,onMediaClick:s}){let u=Ge(n,o);const l=Se(k);if(i||(i=l.statuses[u]||l.statuses[n],u=Ge(i==null?void 0:i.id,o)),!i)return null;const{account:{acct:c,avatar:d,avatarStatic:h,id:r,url:p,displayName:f,username:b,emojis:g,bot:v,group:m},id:y,repliesCount:S,reblogged:I,reblogsCount:T,favourited:x,favouritesCount:L,bookmarked:N,poll:O,muted:U,sensitive:P,spoilerText:M,visibility:C,language:_,editedAt:F,filtered:Y,card:te,createdAt:W,inReplyToId:ke,inReplyToAccountId:re,content:X,mentions:E,mediaAttachments:j,reblog:ne,uri:le,url:H,emojis:ae,_deleted:Q,_pinned:ye}=i;if(!(j!=null&&j.length))return null;const V=ie=>{ie.shiftKey},Z=he(()=>se.session.get("currentAccount"),[]),ce=he(()=>Z&&Z===r,[r,Z]),fe=Ps(On),me=!ce&&Nt(Y,fe);if((me==null?void 0:me.action)==="hide")return null;const de=P,G=he(()=>(se.account.get("preferences")||{})["reading:expand:media"]||"default",[])==="show_all",K=a||"div";return j.map((ie,we)=>{const Le=`${u}-${ie.id}`,$e=me==null?void 0:me.titlesStr;return e(K,{"data-state-post-id":u,onMouseEnter:V,"data-spoiler-text":M||(P?"Sensitive media":void 0),"data-filtered-text":me?`Filtered${$e?`: ${$e}`:""}`:void 0,class:` - media-post - ${me?"filtered":""} - ${de?"has-spoiler":""} - ${G?"show-media":""} - `,children:e(Fn,{class:t,media:ie,lang:_,to:`/${o}/s/${y}?media-only=${we+1}`,onClick:s?q=>s(q,we,ie,i):void 0})},Le)})}const vn=ze(Ji);function mt(t){var S,I,T,x,L;const n=Se(k),{masto:i,instance:o,authenticated:a}=z(),[s,u]=$(),[l,c]=$(!1);B(()=>{const N=se.local.getJSON("accounts")||[],O=N.find(U=>U.info.id===se.session.get("currentAccount"));O&&u(O),c(N.length>1)},[]);const d=(n.settings.shortcutsViewMode==="multi-column"||!n.settings.shortcutsViewMode&&n.settings.shortcutsColumnsMode)&&!n.shortcuts.find(N=>N.type==="following"),h=Ns(()=>{k.showAccounts=!0},{threshold:600,detect:"touch",cancelOnMovement:!0}),r=D(),[p,f]=$(void 0),b=Ts([0,0,n.settings.shortcutsViewMode==="tab-menu-bar"?50:0,0]),g=D();async function v(N){return(N||!g.current)&&(g.current=i.v1.mutes.list({limit:80})),await g.current.next()}const m=D();async function y(N){return(N||!m.current)&&(m.current=i.v1.blocks.list({limit:80})),await m.current.next()}return e(A,{children:[e("button",{ref:r,type:"button",class:`button plain nav-menu-button ${l?"with-avatar":""} ${open?"active":""}`,style:{position:"relative"},onClick:()=>{f(N=>N?void 0:"open")},onContextMenu:N=>{N.preventDefault(),k.showAccounts=!0},...h(),children:[l&&e(et,{url:((S=s==null?void 0:s.info)==null?void 0:S.avatar)||((I=s==null?void 0:s.info)==null?void 0:I.avatarStatic),size:"l",squircle:(T=s==null?void 0:s.info)==null?void 0:T.bot}),e(w,{icon:"menu",size:l?"s":"l"})]}),e(Gn,{menuClassName:"nav-menu",state:p,anchorRef:r,onClose:()=>{f(void 0)},containerProps:{style:{zIndex:10},onClick:()=>{f(void 0)}},portal:{target:document.body},...t,overflow:"auto",viewScroll:"close",position:"anchor",align:"center",boundingBoxPadding:b,unmountOnClose:!0,children:[!!((x=n.appVersion)!=null&&x.commitHash)&&n.appVersion.commitHash!=="32c53b8"&&e("div",{class:"top-menu",children:[e(oe,{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(De,{})]}),e("section",{children:[e(Ee,{to:"/",children:[e(w,{icon:"home",size:"l"})," ",e("span",{children:"Home"})]}),a&&e(A,{children:[d&&e(Ee,{to:"/following",children:[e(w,{icon:"following",size:"l"})," ",e("span",{children:"Following"})]}),e(Ee,{to:"/mentions",children:[e(w,{icon:"at",size:"l"})," ",e("span",{children:"Mentions"})]}),e(Ee,{to:"/notifications",children:[e(w,{icon:"notification",size:"l"})," ",e("span",{children:"Notifications"}),n.notificationsShowNew&&e("sup",{title:"New",style:{opacity:.5},children:[" ","•"]})]}),e(De,{}),e(Ee,{to:"/l",children:[e(w,{icon:"list",size:"l"})," ",e("span",{children:"Lists"})]}),e(Ee,{to:"/ft",children:[e(w,{icon:"hashtag",size:"l"})," ",e("span",{children:"Followed Hashtags"})]}),e(Ee,{to:"/b",children:[e(w,{icon:"bookmark",size:"l"})," ",e("span",{children:"Bookmarks"})]}),e(Ee,{to:"/f",children:[e(w,{icon:"heart",size:"l"})," ",e("span",{children:"Likes"})]})]}),e(De,{}),e(Ee,{to:"/search",children:[e(w,{icon:"search",size:"l"})," ",e("span",{children:"Search"})]}),e(Ee,{to:`/${o}/p/l`,children:[e(w,{icon:"building",size:"l"})," ",e("span",{children:"Local"})]}),e(Ee,{to:`/${o}/p`,children:[e(w,{icon:"earth",size:"l"})," ",e("span",{children:"Federated"})]}),e(Ee,{to:`/${o}/trending`,children:[e(w,{icon:"chart",size:"l"})," ",e("span",{children:"Trending"})]})]}),e("section",{children:a?e(A,{children:[e(De,{}),((L=s==null?void 0:s.info)==null?void 0:L.id)&&e(Ee,{to:`/${o}/a/${s.info.id}`,children:[e(w,{icon:"user",size:"l"})," ",e("span",{children:"Profile"})]}),e(oe,{onClick:()=>{k.showAccounts=!0},children:[e(w,{icon:"group",size:"l"})," ",e("span",{children:"Accounts…"})]}),e(oe,{onClick:()=>{k.showGenericAccounts={id:"mute",heading:"Muted users",fetchAccounts:v,excludeRelationshipAttrs:["muting"]}},children:[e(w,{icon:"mute",size:"l"})," Muted users…"]}),e(oe,{onClick:()=>{k.showGenericAccounts={id:"block",heading:"Blocked users",fetchAccounts:y,excludeRelationshipAttrs:["blocking"]}},children:[e(w,{icon:"block",size:"l"}),"Blocked users…"]}),e(De,{className:"divider-grow"}),e(oe,{onClick:()=>{k.showKeyboardShortcutsHelp=!0},children:[e(w,{icon:"keyboard",size:"l"})," ",e("span",{children:"Keyboard shortcuts"})]}),e(oe,{onClick:()=>{k.showShortcutsSettings=!0},children:[e(w,{icon:"shortcut",size:"l"})," ",e("span",{children:"Shortcuts / Columns…"})]}),e(oe,{onClick:()=>{k.showSettings=!0},children:[e(w,{icon:"gear",size:"l"})," ",e("span",{children:"Settings…"})]})]}):e(A,{children:[e(De,{}),e(Ee,{to:"/login",children:[e(w,{icon:"user",size:"l"})," ",e("span",{children:"Log in"})]}),e(oe,{onClick:()=>{k.showSettings=!0},children:[e(w,{icon:"gear",size:"l"})," ",e("span",{children:"Settings…"})]})]})})]})]})}const bt={block:"nearest",inline:"center",behavior:"smooth"};function Ye({title:t,titleComponent:n,id:i,instance:o,emptyText:a,errorText:s,useItemID:u,boostsCarousel:l,fetchItems:c=()=>{},checkForUpdates:d=()=>{},checkForUpdatesInterval:h=15e3,headerStart:r,headerEnd:p,timelineStart:f,refresh:b,view:g,filterContext:v,showFollowedTags:m}){const y=Se(k),[S,I]=$([]),[T,x]=$("default"),[L,N]=$(!1),[O,U]=$(!1),[P,M]=$(!0),C=D(),_=g!=="media",F=Ds(H=>{U(!1),T!=="loading"&&(x("loading"),(async()=>{try{let{done:ae,value:Q}=await c(H);if(Array.isArray(Q)){const[ye,V]=Q.reduce((Z,ce)=>(ce._pinned?Z[0].push(ce):Z[1].push(ce),Z),[[],[]]);Q=V,_&&(l&&(Q=Gi(Q)),Q=ji(Q)),ye.length&&(Q=ye.concat(Q)),I(H?Q:Z=>[...Z,...Q]),Q.length||(ae=!0),N(!ae)}else N(!1);x("default")}catch{x("error")}finally{F.cancel()}})())},1500,{leading:!0,trailing:!1}),Y=".timeline-item, .timeline-item-alt",te=Re("j, shift+j",(H,ae)=>{const Q=document.activeElement.closest(Y),ye=Q==null?void 0:Q.getBoundingClientRect(),V=Array.from(C.current.querySelectorAll(Y));if(Q&&ye.top0){const Z=V.indexOf(Q);let ce=V[Z+1];ae.shift&&(ce=V.find((fe,me)=>me>Z&&!fe.classList.contains("timeline-item-alt"))),ce&&(ce.focus(),ce.scrollIntoView(bt))}else{const Z=V.find(ce=>{const fe=ce.getBoundingClientRect();return fe.top>=44&&fe.left>=0});Z&&(Z.focus(),Z.scrollIntoView(bt))}}),W=Re("k, shift+k",(H,ae)=>{const Q=document.activeElement.closest(Y),ye=Q==null?void 0:Q.getBoundingClientRect(),V=Array.from(C.current.querySelectorAll(Y));if(Q&&ye.top0){const Z=V.indexOf(Q);let ce=V[Z-1];ae.shift&&(ce=V.findLast((fe,me)=>me{const fe=ce.getBoundingClientRect();return fe.top>=44&&fe.left>=0});Z&&(Z.focus(),Z.scrollIntoView(bt))}}),ke=Re(["enter","o"],()=>{const H=document.activeElement.closest(Y);H&&H.click()}),re=D(),[X,E]=$(!1);Zi({scrollableRef:C,distanceFromEnd:2,scrollThresholdStart:44},({scrollDirection:H,nearReachStart:ae,nearReachEnd:Q,reachStart:ye,reachEnd:V})=>{if(re.current){const Z=H==="end"&&!ae;re.current.hidden=Z}E(ae),ye&&F(!0)},[]),B(()=>{var H;(H=C.current)==null||H.scrollTo({top:0}),F(!0)},[]),B(()=>{F(!0)},[b]);const j=D(g);B(()=>{j.current!==g&&(j.current=g,I([]))},[g]);const ne=Ve(async({disableIdleCheck:H=!1}={})=>{const ae=C.current?getComputedStyle(C.current).pointerEvents==="none":!1;y.settings.autoRefresh&&C.current.scrollTop<16&&(H||window.__IDLE__)&&!to()&&!ae?F(!0):await d()&&U(!0)},[i,F,d,y.settings.autoRefresh]),le=D();return ct(H=>{if(H){const ae=Date.now()-le.current;(!le.current||ae>1e3*3)&&ne({disableIdleCheck:!0})}else le.current=Date.now();M(H)},[d,ne,y.settings.autoRefresh]),_n(ne,P&&!O?h*(X?1:2):null),e(On.Provider,{value:v,children:e("div",{id:`${i}-page`,class:"deck-container",ref:H=>{C.current=H,te.current=H,W.current=H,ke.current=H},tabIndex:"-1",children:e("div",{class:"timeline-deck deck",children:[e("header",{ref:re,onClick:H=>{var ae;H.target.closest("a, button")||(ae=C.current)==null||ae.scrollTo({top:0,behavior:"smooth"})},onDblClick:H=>{H.target.closest("a, button")||F(!0)},class:T==="loading"?"loading":"",children:[e("div",{class:"header-grid",children:[e("div",{class:"header-side",children:[e(mt,{}),r??e(ee,{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})]}),S.length>0&&T!=="loading"&&O&&e("button",{class:"updates-button shiny-pill",type:"button",onClick:()=>{var H;F(!0),(H=C.current)==null||H.scrollTo({top:0,behavior:"smooth"})},children:[e(w,{icon:"arrow-up"})," New posts"]})]}),!!f&&e("div",{class:`timeline-start ${T==="loading"?"loading":""}`,children:f}),S.length?e(A,{children:[e("ul",{class:`timeline ${g?`timeline-${g}`:""}`,children:[S.map(H=>e(Xi,{status:H,instance:o,useItemID:u,filterContext:v,view:g,showFollowedTags:m},H.id+(H==null?void 0:H._pinned)+g)),L&&T==="loading"&&(g==="media"?null:e(A,{children:[e("li",{style:{height:"20vh"},children:e(Me,{skeleton:!0})}),e("li",{style:{height:"25vh"},children:e(Me,{skeleton:!0})})]}))]}),T==="default"&&(L?e(je,{root:C.current,rootMargin:`0px 0px ${screen.height*1.5}px 0px`,onChange:H=>{H&&F()},children:e("button",{type:"button",class:"plain block",onClick:()=>F(),style:{marginBlockEnd:"6em"},children:"Show more…"})}):e("p",{class:"ui-state insignificant",children:"The end."}))]}):T==="loading"?e("ul",{class:"timeline",children:Array.from({length:5}).map((H,ae)=>g==="media"?e("div",{style:{height:"50vh"}}):e("li",{children:e(Me,{skeleton:!0})},ae))}):T!=="error"&&e("p",{class:"ui-state",children:a}),T==="error"&&e("p",{class:"ui-state",children:[s,e("br",{}),e("br",{}),e("button",{type:"button",onClick:()=>F(!S.length),children:"Try again"})]})]})})})}function Xi({status:t,instance:n,useItemID:i,filterContext:o,view:a,showFollowedTags:s}){const{id:u,reblog:l,items:c,type:d,_pinned:h}=t;h&&(i=!1);const r=(l==null?void 0:l.id)||u,p=n?`/${n}/s/${r}`:`/s/${r}`;let f="";d==="boosts"?f=`${c.length} Boosts`:d==="pinned"&&(f="Pinned posts");const b=d==="boosts"||d==="pinned";if(c){const v=rt(c,o);if(b)return v.sort((y,S)=>{const I=Nt(y.filtered,o),T=Nt(S.filtered,o);return I&&!T?1:!I&&T?-1:0}),e("li",{class:"timeline-item-carousel",children:e(Qi,{title:f,class:`${d}-carousel`,children:v.map(y=>{const{id:S,reblog:I,_pinned:T}=y,x=(I==null?void 0:I.id)||S,L=n?`/${n}/s/${x}`:`/s/${x}`;return T&&(i=!1),e("li",{children:e(ee,{class:"status-carousel-link timeline-item-alt",to:L,children:i?e(Me,{statusID:S,instance:n,size:"s",contentTextWeight:!0,enableCommentHint:!0}):e(Me,{status:y,instance:n,size:"s",contentTextWeight:!0,enableCommentHint:!0})})},S)})})},`timeline-${u}`);const m=v.length>3;return v.map((y,S)=>{const{id:I,_differentAuthor:T}=y,x=n?`/${n}/s/${I}`:`/s/${I}`,L=S>0&&S0||m&&L&&(d==="thread"||d==="conversation"&&!T&&!v[S-1]._differentAuthor&&!v[S+1]._differentAuthor),U=S===0,P=S===v.length-1;return e("li",{class:`timeline-item-container timeline-item-container-type-${d} timeline-item-container-${U?"start":P?"end":"middle"} ${T?"timeline-item-diff-author":""}`,children:e(ee,{class:"status-link timeline-item",to:x,children:O?e(eo,{status:y,instance:n}):i?e(Me,{statusID:I,instance:n,enableCommentHint:P,showFollowedTags:s}):e(Me,{status:y,instance:n,enableCommentHint:P,showFollowedTags:s})})},`timeline-${I}`)})}const g=`timeline-${u+h}`;return a==="media"?i?e(vn,{class:"timeline-item",parent:"li",statusID:u,instance:n},g):e(vn,{class:"timeline-item",parent:"li",status:t,instance:n},g):e("li",{children:e(ee,{class:"status-link timeline-item",to:p,children:i?e(Me,{statusID:u,instance:n,enableCommentHint:!0,showFollowedTags:s}):e(Me,{status:t,instance:n,enableCommentHint:!0,showFollowedTags:s})})},g)}function Qi({title:t,class:n,children:i}){const o=D(),a=D(),s=D(),[u,l]=$(!1);return B(()=>{setTimeout(()=>{l(!0)},1)},[]),e("div",{class:`status-carousel ${n}`,children:[e("header",{children:[e("h3",{children:t}),e("span",{children:[e("button",{ref:a,type:"button",class:"small plain2",onClick:()=>{var c,d;(d=o.current)==null||d.scrollBy({left:-Math.min(320,(c=o.current)==null?void 0:c.offsetWidth),behavior:"smooth"})},children:e(w,{icon:"chevron-left"})})," ",e("button",{ref:s,type:"button",class:"small plain2",onClick:()=>{var c,d;(d=o.current)==null||d.scrollBy({left:Math.min(320,(c=o.current)==null?void 0:c.offsetWidth),behavior:"smooth"})},children:e(w,{icon:"chevron-right"})})]})]}),e("ul",{ref:o,children:[e(je,{class:"status-carousel-beacon",onChange:c=>{a.current&&(a.current.disabled=c)}}),i[0],u&&i.slice(1),e(je,{class:"status-carousel-beacon",onChange:c=>{s.current&&(s.current.disabled=c)}})]})]})}function eo({status:t,instance:n}){const i=Se(k),{id:o,visibility:a}=t,s=Bn(t),u=Ge(o,n);return e("article",{class:`status compact-thread ${a==="direct"?"visibility-direct":""}`,tabindex:"-1",children:[i.statusThreadNumber[u]?e("div",{class:"status-thread-badge",children:[e(w,{icon:"thread",size:"s"}),i.statusThreadNumber[u]?` ${i.statusThreadNumber[u]}/X`:""]}):e("div",{class:"status-thread-badge",children:e(w,{icon:"thread",size:"s"})}),e("div",{class:"content-compact",title:s,children:[s,t.sensitive&&t.spoilerText&&e(A,{children:[" ",e("span",{class:"spoiler-badge",children:e(w,{icon:"eye-close",size:"s"})})]})]})]})}function to(){return!!document.querySelector(".deck-backdrop, #modal-container > *")}const ot=20,Zt=1983,Sn=`${Zt}-01`,no=(()=>{try{const t=document.createElement("input");return t.setAttribute("type","month"),t.type==="month"}catch{return!1}})();async function so(t){var o;const{masto:n}=z({instance:t}),i=await n.v2.search.fetch({q:"from:me",type:"statuses",limit:1});return!!((o=i==null?void 0:i.statuses)!=null&&o.length)}const io=tt(so);function oo(){const t=Se(k),{id:n,...i}=nt(),[o,a]=qe(),s=o.get("month"),u=!o.get("replies"),l=!!o.get("boosts"),c=o.get("tagged"),d=!!o.get("media"),{masto:h,instance:r,authenticated:p}=z({instance:i.instance}),{masto:f,instance:b}=z(),g=D(),v=[s,u,l,c,d],[m,y]=$(),S=D(0);B(()=>{S.current=0},v);const I=he(()=>r===b,[r,b]),[T,x]=$(!1);B(()=>{I&&m!=null&&m.acct&&(async()=>{const X=await io(r);x(X)})()},[r,I,m==null?void 0:m.acct]);async function L(X){var ae,Q,ye;const E=/^\d{4}-[01]\d$/.test(s),j=((Q=(ae=s==null?void 0:s.split)==null?void 0:ae.call(s,"-"))==null?void 0:Q[0])>=Zt;if(E&&j){if(!m)return{value:[],done:!0};const[V,Z]=s.split("-"),ce=parseInt(Z,10)-1,fe=new Date(V,ce,0),me=`${fe.getFullYear()}-${(fe.getMonth()+1).toString().padStart(2,"0")}-${fe.getDate().toString().padStart(2,"0")}`,de=new Date(V,ce+1,1),R=`${de.getFullYear()}-${(de.getMonth()+1).toString().padStart(2,"0")}-${de.getDate().toString().padStart(2,"0")}`;let G;X?(G=ot+1,S.current=0):(G=ot+S.current+1,S.current+=ot);const K=await h.v2.search.fetch({q:`from:${m.acct} after:${me} before:${R}`,type:"statuses",limit:G,offset:S.current});if((ye=K==null?void 0:K.statuses)!=null&&ye.length){const ie=K.statuses.slice(0,ot);ie.forEach(Le=>{Ae(Le,r)});const we=K.statuses.length<=ot;return{value:ie,done:we}}else return{value:[],done:!0}}const ne=[];if(X){const{value:V}=await h.v1.accounts.$select(n).statuses.list({pinned:!0}).next();if(V!=null&&V.length&&!c&&!d){const Z=V.map(ce=>(Ae(ce,r),{...ce,_pinned:!0}));if(Z.length>=3){const ce=Z.map(fe=>fe.id);ne.push({id:ce,items:Z,type:"pinned"})}else ne.push(...Z)}}(X||!g.current)&&(g.current=h.v1.accounts.$select(n).statuses.list({limit:ot,exclude_replies:u,exclude_reblogs:l,only_media:d,tagged:c}));const{value:le,done:H}=await g.current.next();return le!=null&&le.length&&(ne.push(...le),le.forEach(V=>{Ae(V,r)})),{value:ne,done:H}}const[N,O]=$([]);_e(m!=null&&m.acct?`${m!=null&&m.displayName?m.displayName+" ":""}@${m.acct}${u?l?" (- Boosts)":c?` (#${c})`:d?" (Media)":s?` (${new Date(s).toLocaleString("default",{month:"long",year:"numeric"})})`:"":" (+ Replies)"}`:"Account posts","/:instance?/a/:id");const U=D(),P=Ve(()=>{const X=U.current||h.v1.accounts.$select(n).fetch();return U.current=X,X},[n,h]);B(()=>{(async()=>{try{const X=await P();y(X)}catch{}try{const X=await h.v1.accounts.$select(n).featuredTags.list();O(X)}catch{}})()},[n]);const{displayName:M,acct:C,emojis:_}=m||{},F=he(()=>{const X=t.accounts[`${n}@${r}`];return e(Jn,{instance:r,account:X||n,fetchAccount:P,authenticated:p,standalone:!0})},[n,r,p,P]),Y=D(),te=he(()=>e(A,{children:[F,e("div",{class:"filter-bar",ref:Y,style:{position:"relative"},children:[!u||l||c||d||!!s?e(ee,{to:`/${r}/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(ee,{to:`/${r}/a/${n}${u?"?replies=1":""}`,onClick:()=>{u&&pe("Showing post with replies")},class:u?"":"is-active",children:"+ Replies"}),e(ee,{to:`/${r}/a/${n}${l?"":"?boosts=0"}`,onClick:()=>{l||pe("Showing posts without boosts")},class:l?"is-active":"",children:"- Boosts"}),e(ee,{to:`/${r}/a/${n}${d?"":"?media=1"}`,onClick:()=>{d||pe("Showing posts with media")},class:d?"is-active":"",children:"Media"}),N.map(E=>e(ee,{to:`/${r}/a/${n}${c===E.name?"":`?tagged=${encodeURIComponent(E.name)}`}`,onClick:()=>{c!==E.name&&pe(`Showing posts tagged with #${E.name}`)},class:c===E.name?"is-active":"",children:e("span",{children:[e("span",{class:"more-insignificant",children:"#"}),E.name]})},E.id)),T&&(no?e("label",{class:`filter-field ${s?"is-active":""}`,children:[e(w,{icon:"month",size:"l"}),e("input",{type:"month",disabled:!(m!=null&&m.acct),value:s||"",min:Sn,max:new Date().toISOString().slice(0,7),onInput:E=>{const{value:j,validity:ne}=E.currentTarget;if(!ne.valid)return;a(j?{month:j}:{});const[le,H]=j.split("-"),ae=parseInt(H,10)-1,Q=new Date(le,ae);pe(`Showing posts in ${Q.toLocaleString("default",{month:"long",year:"numeric"})}`)}})]}):e(ao,{class:`filter-field ${s?"is-active":""}`,disabled:!(m!=null&&m.acct),value:s||"",min:Sn,max:new Date().toISOString().slice(0,7),onInput:E=>{const{value:j,validity:ne}=E;ne.valid&&a(j?{month:j}:{})}}))]})]}),[n,r,p,N,T,...v]);B(()=>{var E;const X=(E=Y.current)==null?void 0:E.querySelector(".is-active");X&&Y.current.scrollTo({behavior:"smooth",left:X.offsetLeft-(Y.current.offsetWidth-X.offsetWidth)/2})},[N,T,...v]);const W=he(()=>m!=null&&m.url?new URL(m.url).hostname:null,[m]),re=!!m&&!(r===W);return e(Ye,{title:`${m!=null&&m.acct?"@"+m.acct:"Posts"}`,titleComponent:e("h1",{class:"header-double-lines header-account",children:[e("b",{children:e(Nn,{text:M,emojis:_})}),e("div",{children:e("span",{children:["@",C]})})]}),id:"account-statuses",instance:r,emptyText:"Nothing to see here yet.",errorText:"Unable to load posts",fetchItems:L,useItemID:!0,view:d?"media":void 0,boostsCarousel:t.settings.boostsCarousel,timelineStart:te,refresh:[u,l,c,d,s+(m==null?void 0:m.acct)].toString(),headerEnd:e(Fe,{portal:!0,overflow:"auto",viewScroll:"close",position:"anchor",menuButton:e("button",{type:"button",class:"plain",children:e(w,{icon:"more",size:"l"})}),children:[e(oe,{disabled:!re,onClick:()=>{(async()=>{try{const{masto:X}=z({instance:W}),E=await X.v1.accounts.lookup({acct:m.acct}),{id:j}=E;location.hash=`/${W}/a/${j}`}catch{alert("Unable to fetch account info")}})()},children:[e(w,{icon:"transfer"})," ",e("small",{class:"menu-double-lines",children:["Switch to account's instance (",e("b",{children:W}),")"]})]}),!I&&e(oe,{onClick:()=>{(async()=>{try{const X=await f.v1.accounts.lookup({acct:m.acct+"@"+r}),{id:E}=X;location.hash=`/${b}/a/${E}`}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 ao(t){const{class:n,disabled:i,value:o,min:a,max:s,onInput:u=()=>{}}=t,[l,c]=(o==null?void 0:o.split("-"))||[],d=D(),h=D(),r=(p,f)=>{const[b,g]=(a==null?void 0:a.split("-"))||[],[v,m]=(s==null?void 0:s.split("-"))||[];return!(fv||f===b&&pm)};return e("div",{class:n,children:[e(w,{icon:"month",size:"l"}),e("select",{ref:d,disabled:i,value:c||"",onInput:p=>{const{value:f}=p.currentTarget,b=h.current.value;if(!r(f,b))return{value:"",validity:{valid:!1}};u({value:f?`${b}-${f}`:"",validity:{valid:!0}})},children:[e("option",{value:"",children:"Month"}),e("option",{disabled:!0,children:"-----"}),Array.from({length:12},(p,f)=>e("option",{value:(f+1).toString().padStart(2,"0"),children:new Date(0,f).toLocaleString("default",{month:"long"})},f))]})," ",e("input",{ref:h,type:"number",disabled:i,value:l||new Date().getFullYear(),min:(a==null?void 0:a.slice(0,4))||Zt,max:(s==null?void 0:s.slice(0,4))||new Date().getFullYear(),onInput:p=>{const{value:f,validity:b}=p.currentTarget,g=d.current.value;if(!b.valid||!r(g,f))return{value:"",validity:{valid:!1}};u({value:f?`${f}-${g}`:"",validity:{valid:!0}})},style:{width:"4.5em"}})]})}const co=20;function ss(){_e("Bookmarks","/b");const{masto:t,instance:n}=z(),i=D();async function o(a){return(a||!i.current)&&(i.current=t.v1.bookmarks.list({limit:co})),await i.current.next()}return e(Ye,{title:"Bookmarks",id:"bookmarks",emptyText:"No bookmarks yet. Go bookmark something!",errorText:"Unable to load bookmarks",instance:n,fetchItems:o})}const ro=20;function is(){_e("Likes","/f");const{masto:t,instance:n}=z(),i=D();async function o(a){return(a||!i.current)&&(i.current=t.v1.favourites.list({limit:ro})),await i.current.next()}return e(Ye,{title:"Likes",id:"favourites",emptyText:"No likes yet. Go like something!",errorText:"Unable to load likes",instance:n,fetchItems:o})}function lo(){const{masto:t,instance:n}=z();_e("Followed Hashtags","/ft");const[i,o]=$("default"),[a,s]=$([]);return B(()=>{o("loading"),(async()=>{try{const u=await Tt();s(u),o("default")}catch{o("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(mt,{}),e(ee,{to:"/",class:"button plain",children:e(w,{icon:"home",size:"l"})})]}),e("h1",{children:"Followed Hashtags"}),e("div",{class:"header-side"})]})}),e("main",{children:a.length>0?e("ul",{class:"link-list",children:a.map(u=>e("li",{children:e(ee,{to:n?`/${n}/t/${u.name}`:`/t/${u.name}`,children:[e(w,{icon:"hashtag"})," ",e("span",{children:u.name})]})}))}):i==="loading"?e("p",{class:"ui-state",children:e(Ie,{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 uo=20;function Jt({title:t,path:n,id:i,...o}){_e(t||"Following",n||"/following");const{masto:a,streaming:s,instance:u}=z(),l=Se(k),c=D(),d=D();async function h(p){(p||!c.current)&&(c.current=a.v1.timelines.home.list({limit:uo}));const f=await c.current.next();let{value:b}=f;if(b!=null&&b.length){let g=!1;p&&(b[0].id!==d.current&&(g=!0),d.current=b[0].id),b.forEach(v=>{Ae(v,u)}),b=wn(b,u),p&&g&&Wi(),Yi(b,u),b.sort((v,m)=>{const y=new Date(v.createdAt);return new Date(m.createdAt)-y})}return{...f,value:b}}async function r(){try{const p=await a.v1.timelines.home.list({limit:5,since_id:d.current}).next();let{value:f}=p;return!!(f!=null&&f.length&&(d.current=f[0].id,f=wn(f,u),f=rt(f,"home"),f.some(b=>!b.reblog)))}catch{return!1}}return B(()=>{let p;return(async()=>{if(s){p=s.user.subscribe();for await(const f of p){if(!p)break;if(f.event==="status.update"){const b=f.payload;Ae(b,u)}else if(f.event==="delete"){const b=f.payload,g=zn(b,u);g&&(g._deleted=!0)}}}})(),()=>{var f;(f=p==null?void 0:p.unsubscribe)==null||f.call(p),p=null}},[s]),e(Ye,{title:t||"Following",id:i||"following",emptyText:"Nothing to see here.",errorText:"Unable to load posts.",instance:u,fetchItems:h,checkForUpdates:r,useItemID:!0,boostsCarousel:l.settings.boostsCarousel,...o,filterContext:"home",showFollowedTags:!0})}const ho=20,fo=4,kn=fo+1;function os({media:t,columnMode:n,...i}){let{hashtag:o,...a}=n?{}:nt();i.hashtag&&(o=i.hashtag);let s=o.trim().split(/[\s+]+/);s.sort(),o=s[0];const[u,l]=qe(),c=t||!!u.get("media"),d=c?"?media=1":"",{masto:h,instance:r,authenticated:p}=z({instance:(i==null?void 0:i.instance)||a.instance}),{masto:f,instance:b,authenticated:g}=z(),v=s.map(M=>`#${M}`).join(" "),m=c?" (Media only)":"",y=r?`${v}${m} on ${r}`:`${v}${m}`;_e(y,"/:instance?/t/:hashtag");const S=D(),I=D(void 0);async function T(M){const C=await h.v1.timelines.tag.$select(o).list({limit:ho,any:s.slice(1),maxId:M?void 0:I.current,onlyMedia:c}).next();let{value:_}=C;return _!=null&&_.length&&(M&&(S.current=_[0].id),_.forEach(F=>{Ae(F,r,{skipThreading:c})}),I.current=_[_.length-1].id),{...C,value:_}}async function x(){try{const M=await h.v1.timelines.tag.$select(o).list({limit:1,any:s.slice(1),since_id:S.current,onlyMedia:c}).next();let{value:C}=M;return C=rt(C,"public"),!!(C!=null&&C.length)}catch{return!1}}const[L,N]=$("default"),[O,U]=$();B(()=>{(async()=>{try{const M=await h.v1.tags.$select(o).fetch();U(M)}catch{}})()},[o]);const P=s.length>=kn;return e(Ye,{title:y,titleComponent:!!r&&e("h1",{class:"header-double-lines",children:[e("b",{children:v}),e("div",{children:r})]}),id:"hashtag",instance:r,emptyText:"No one has posted anything with this tag yet.",errorText:"Unable to load posts with this tag",fetchItems:T,checkForUpdates:x,useItemID:!0,view:c?"media":void 0,refresh:c,filterContext:"public",headerEnd:e(Fe,{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:[!!O&&s.length===1&&e(A,{children:[e(Be,{subMenu:!0,confirm:O.following,confirmLabel:`Unfollow #${o}?`,disabled:L==="loading"||!p,onClick:()=>{N("loading"),O.following?h.v1.tags.$select(o).unfollow().then(()=>{U({...O,following:!1}),pe(`Unfollowed #${o}`)}).catch(M=>{alert(M)}).finally(()=>{N("default")}):h.v1.tags.$select(o).follow().then(()=>{U({...O,following:!0}),pe(`Followed #${o}`)}).catch(M=>{alert(M)}).finally(()=>{N("default")})},children:O.following?e(A,{children:[e(w,{icon:"check-circle"})," ",e("span",{children:"Following…"})]}):e(A,{children:[e(w,{icon:"plus"})," ",e("span",{children:"Follow"})]})}),e(De,{})]}),e(jn,{className:"plain",children:"Filters"}),e(oe,{type:"checkbox",checked:!!c,onClick:()=>{c?u.delete("media"):u.set("media","1"),l(u)},children:[e(w,{icon:"check-circle"})," ",e("span",{class:"menu-grow",children:"Media only"})]}),e(De,{}),e(Us,{className:"menu-field",disabled:P,children:({ref:M})=>e("form",{onSubmit:C=>{var F,Y;C.preventDefault();const _=(Y=(F=C.target[0].value)==null?void 0:F.trim)==null?void 0:Y.call(F);_&&!s.some(te=>te.toLowerCase()===_.toLowerCase())&&(s.push(_),s.sort(),location.hash=r?`/${r}/t/${s.join("+")}`:`/t/${s.join("+")}${d}`)},children:[e(w,{icon:"hashtag"}),e("input",{ref:M,type:"text",placeholder:P?`Max ${kn} tags`:"Add hashtag",required:!0,autocorrect:"off",autocapitalize:"off",spellcheck:!1,pattern:"[^#][^\\s#]+[^#]",disabled:P})]})}),e(Fs,{takeOverflow:!0,children:s.map((M,C)=>e(oe,{disabled:s.length===1,onClick:_=>{s.splice(C,1),s.sort(),location.hash=r?`/${r}/t/${s.join("+")}${d}`:`/t/${s.join("+")}${d}`},children:[e(w,{icon:"x",alt:"Remove hashtag",class:"danger-icon"}),e("span",{children:[e("span",{class:"more-insignificant",children:"#"}),M]})]},M))}),e(De,{}),e(oe,{disabled:!g,onClick:()=>{if(k.shortcuts.length>=Ze){alert(`Max ${Ze} shortcuts reached. Unable to add shortcut.`);return}const M={type:"hashtag",hashtag:s.join(" "),instance:r,media:c?"on":void 0};k.shortcuts.some(_=>_.type===M.type&&_.hashtag.split(/[\s+]+/).sort().join(" ")===M.hashtag.split(/[\s+]+/).sort().join(" ")&&(_.instance?_.instance===M.instance:!0)&&(_.media?!!_.media==!!M.media:!0))?alert("This shortcut already exists"):(k.shortcuts.push(M),pe("Hashtag shortcut added"))},children:[e(w,{icon:"shortcut"})," ",e("span",{children:"Add to Shorcuts"})]}),e(oe,{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=`/${M}/t/${s.join("+")}${d}`)},children:[e(w,{icon:"bus"})," ",e("span",{children:"Go to another instance…"})]}),b!==r&&e(oe,{onClick:()=>{location.hash=`/${b}/t/${s.join("+")}${d}`},children:[e(w,{icon:"bus"})," ",e("small",{class:"menu-double-lines",children:["Go to my instance (",e("b",{children:b}),")"]})]})]})},r+v)}const po=20;function as(t){var g;const n=Se(k),{masto:i,instance:o}=z(),a=(t==null?void 0:t.id)||((g=nt())==null?void 0:g.id),s=D(),u=D();async function l(v){(v||!u.current)&&(u.current=i.v1.timelines.list.$select(a).list({limit:po}));const m=await u.current.next();let{value:y}=m;return y!=null&&y.length&&(v&&(s.current=y[0].id),y.forEach(S=>{Ae(S,o)})),{...m,value:y}}async function c(){try{const v=await i.v1.timelines.list.$select(a).list({limit:1,since_id:s.current});let{value:m}=v;return m=rt(m,"home"),!!(m!=null&&m.length)}catch{return!1}}const[d,h]=$({title:"List"});_e(d.title,"/l/:id"),B(()=>{(async()=>{try{const v=await i.v1.lists.$select(a).fetch();h(v)}catch{}})()},[a]);const[r,p]=$(!1),[f,b]=$(!1);return e(A,{children:[e(Ye,{title:d.title,id:"list",emptyText:"Nothing yet.",errorText:"Unable to load posts.",instance:o,fetchItems:l,checkForUpdates:c,useItemID:!0,boostsCarousel:n.settings.boostsCarousel,filterContext:"home",headerStart:e(ee,{to:"/l",class:"button plain",children:e(w,{icon:"list",size:"l"})}),headerEnd:e(Fe,{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(oe,{onClick:()=>p({list:d}),children:[e(w,{icon:"pencil",size:"l"}),e("span",{children:"Edit"})]}),e(oe,{onClick:()=>b(!0),children:[e(w,{icon:"group",size:"l"}),e("span",{children:"Manage members"})]})]})},a),r&&e(Ce,{class:"light",onClick:v=>{v.target===v.currentTarget&&p(!1)},children:e(Yt,{list:r==null?void 0:r.list,onClose:v=>{v.state==="success"&&v.list?h(v.list):v.state==="deleted"&&(location.hash="/l"),p(!1)}})}),f&&e(Ce,{class:"light",onClick:v=>{v.target===v.currentTarget&&b(!1)},children:e(go,{listID:a,onClose:()=>b(!1)})})]})}const mo=40;function go({listID:t,onClose:n}){const{masto:i,instance:o}=z(),[a,s]=$([]),[u,l]=$("default"),[c,d]=$(!1),h=D();async function r(p){d(!1),l("loading"),(async()=>{try{(p||!h.current)&&(h.current=i.v1.lists.$select(t).accounts.list({limit:mo}));const f=await h.current.next();let{done:b,value:g}=f;g!=null&&g.length?(s(p?g:a.concat(g)),d(!b)):d(!1),l("default")}catch{l("error")}})()}return B(()=>{r(!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:[a.map(p=>e("li",{children:[e(He,{account:p,instance:o}),e(bo,{account:p,listID:t})]},p.id)),c&&u==="default"&&e(je,{as:"li",onChange:p=>p&&r(),children:e("button",{type:"button",class:"light block",onClick:r,children:"Show more…"})})]})})]})}function bo({account:t,listID:n}){const{masto:i}=z(),[o,a]=$("default"),[s,u]=$(!1);return e(Be,{confirm:!s,confirmLabel:e("span",{children:["Remove @",t.username," from list?"]}),align:"end",menuItemClassName:"danger",onClick:()=>{s?(a("loading"),(async()=>{try{await i.v1.lists.$select(n).accounts.create({accountIds:[t.id]}),a("default"),u(!1)}catch{a("error")}})()):(a("loading"),(async()=>{try{await i.v1.lists.$select(n).accounts.remove({accountIds:[t.id]}),a("default"),u(!0)}catch{a("error")}})())},children:e("button",{type:"button",class:`light ${s?"":"danger"}`,disabled:o==="loading",children:s?"Add":"Remove…"})})}const In=20,yo=new URLSearchParams;function cs({columnMode:t,...n}){const{masto:i,instance:o}=z(),[a]=t?[yo]:qe(),[s,u]=$(null),l=(n==null?void 0:n.type)||a.get("type")||s;_e(`Mentions${l==="private"?" (Private)":""}`,"/mentions");const c=D(),d=D();async function h(m){(m||!c.current)&&(c.current=i.v1.notifications.list({limit:In,types:["mention"]}));const y=await c.current.next();let{value:S}=y;return S!=null&&S.length&&(m&&(d.current=S[0].id),S.forEach(({status:I})=>{Ae(I,o)})),{...y,value:S==null?void 0:S.map(I=>I.status)}}const r=D(),p=D();async function f(m){(m||!r.current)&&(r.current=i.v1.conversations.list({limit:In}));const y=await r.current.next();let{value:S}=y;return S=S==null?void 0:S.filter(I=>I.lastStatus),S!=null&&S.length&&(m&&(p.current=S[0].lastStatus.id),S.forEach(({lastStatus:I})=>{Ae(I,o)})),{...y,value:S==null?void 0:S.map(I=>I.lastStatus)}}function b(...m){return l==="private"?f(...m):h(...m)}async function g(){if(l==="private")try{const m=await i.v1.conversations.list({limit:1,since_id:p.current}).next();let{value:y}=m;return y!=null&&y.length?(p.current=y[0].lastStatus.id,!0):!1}catch{return!1}else try{const m=await i.v1.notifications.list({limit:1,types:["mention"],since_id:d.current}).next();let{value:y}=m;return y!=null&&y.length?(d.current=y[0].id,!0):!1}catch{return!1}}const v=he(()=>e("div",{class:"filter-bar centered",children:[e(ee,{to:"/mentions",class:l?"":"is-active",onClick:m=>{t&&(m.preventDefault(),u(null))},children:"All"}),e(ee,{to:"/mentions?type=private",class:l==="private"?"is-active":"",onClick:m=>{t&&(m.preventDefault(),u("private"))},children:"Private"})]}),[l]);return e(Ye,{title:"Mentions",id:"mentions",emptyText:"No one mentioned you :(",errorText:"Unable to load mentions.",instance:o,fetchItems:b,checkForUpdates:g,useItemID:!0,timelineStart:v,refresh:l})}const wo={mention:["account","status"],status:["account","status"],reblog:["account","status"],follow:["account"],follow_request:["account"],favourite:["account","status"],poll:["status"],update:["status"]};function vo(t){return t.filter(n=>{const{type:i,id:o,createdAt:a}=n;if(!i)return!1;const s=wo[i];return s!=null&&s.length?s.every(u=>!!n[u]):!0})}function rs(t){t=vo(t);const n={},i=[];for(let s=0,u=0;sy.id===h.id);m?(m._types.push(r),m._types.sort().reverse(),v.id+=`-${c}`):(h._types=[r],v._accounts.push(h),v.id+=`-${c}`)}else{h._types=[r];let m=n[g]={...l,type:b,_accounts:[h]};i[u++]=m}}const o={},a=[];for(let s=0,u=0;s{Ae(H.status,i,{skipThreading:!0})});const le=rs(ne);E?(k.notificationsLast=ne[0],k.notifications=le,n.v1.markers.create({notifications:{lastReadId:ne[0].id}}).catch(()=>{})):k.notifications.push(...le)}return k.notificationsShowNew=!1,k.notificationsLastFetchTime=Date.now(),j}async function O(){try{return await n.v1.followRequests.list({limit:80})}catch{return[]}}const U=()=>{s("loading"),(async()=>{try{const E=await O();I(E),s("default")}catch{s("error")}})()};async function P(){try{return await n.v1.announcements.list()}catch{return[]}}const M=E=>{_(!1),s("loading"),(async()=>{try{const j=N(E);E&&(P().then(le=>{le.sort((H,ae)=>{const Q=new Date(H.updatedAt||H.createdAt);return new Date(ae.updatedAt||ae.createdAt)-Q}),x(le)}).catch(()=>{}),O().then(le=>{I(le)}).catch(()=>{}));const{done:ne}=await j;h(!ne),s("default")}catch{s("error")}})()};B(()=>{M(!0)},[]),B(()=>{v&&M(!0)},[v]);const[C,_]=$(!1),F=Ve(({disableIdleCheck:E=!1}={})=>{var j;a!=="loading"&&o.settings.autoRefresh&&((j=f.current)==null?void 0:j.scrollTop)<16&&(E||window.__IDLE__)&&!To()&&M(!0)},[o.notificationsShowNew,o.settings.autoRefresh,a]),Y=D();ct(E=>{let j;if(E){const ne=Date.now()-Y.current;!Y.current||ne>1e3*3?F({disableIdleCheck:!0}):Y.current=Date.now(),j=Os(k,"notificationsShowNew",le=>{le&&F(),_(le)})}return()=>{j==null||j()}});const te=new Date,W=new Date(te-24*60*60*1e3);let ke=new Date;const re=!o.notifications.some(E=>new Date(E.createdAt).toDateString()===te.toDateString()),X=D();return B(()=>{l&&(k.routeNotification={id:l,accessToken:atob(c)})},[l,c]),e("div",{id:"notifications-page",class:"deck-container",ref:f,tabIndex:"-1",children:e("div",{class:`timeline-deck deck ${r?"only-mentions":""}`,children:[e("header",{hidden:y,onClick:E=>{var j;E.target.closest("a, button")||(j=f.current)==null||j.scrollTo({top:0,behavior:"smooth"})},class:a==="loading"?"loading":"",children:[e("div",{class:"header-grid",children:[e("div",{class:"header-side",children:[e(mt,{}),e(ee,{to:"/",class:"button plain",children:e(w,{icon:"home",size:"l",alt:"Home"})})]}),e("h1",{children:"Notifications"}),e("div",{class:"header-side"})]}),C&&a!=="loading"&&e("button",{class:"updates-button shiny-pill",type:"button",onClick:()=>{var E;M(!0),(E=f.current)==null||E.scrollTo({top:0,behavior:"smooth"})},children:[e(w,{icon:"arrow-up"})," New notifications"]})]}),T.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",T.length>1?"s":""]})," ",e("small",{class:"insignificant",children:i})]}),T.length>1&&e("span",{class:"announcements-nav-buttons",children:T.map((E,j)=>e("button",{type:"button",class:"plain2 small",onClick:()=>{var ne;(ne=X.current)==null||ne.children[j].scrollIntoView({behavior:"smooth",block:"nearest"})},children:j+1}))})]}),e("ul",{class:`announcements-list-${T.length>1?"multiple":"single"}`,ref:X,children:T.map(E=>e("li",{children:e(Co,{announcement:E})}))})]})})}),S.length>0&&e("div",{class:"follow-requests",children:[e("h2",{class:"timeline-header",children:"Follow requests"}),S.length>5?e("details",{children:[e("summary",{children:[S.length," follow requests"]}),e("ul",{children:S.map(E=>e("li",{children:[e(He,{account:E}),e(Ft,{accountID:E.id,onChange:()=>{}})]},E.id))})]}):e("ul",{children:S.map(E=>e("li",{children:[e(He,{account:E}),e(Ft,{accountID:E.id,onChange:()=>{}})]},E.id))})]}),e("div",{id:"mentions-option",children:e("label",{children:[e("input",{type:"checkbox",checked:r,onChange:E=>{p(E.target.checked)}})," ","Only mentions"]})}),e("h2",{class:"timeline-header",children:"Today"}),re&&!!o.notifications.length&&e("p",{class:"ui-state insignificant",children:a==="default"?"You're all caught up.":e(A,{children:"…"})}),o.notifications.length?e(A,{children:o.notifications.filter(E=>E.type!=="follow_request").map(E=>{if(r&&E.type!=="mention")return null;const j=new Date(E.createdAt),ne=j.toDateString()!==ke.toDateString();ne&&(ke=j);const le=j.toDateString()===W.toDateString()?"Yesterday":Ke(ke,{hideTime:!0});return e(A,{children:[ne&&e("h2",{class:"timeline-header",children:le}),e(Kt,{instance:i,notification:E},E.id)]},E.id)})}):e(A,{children:[a==="loading"&&e(A,{children:e("ul",{class:"timeline flat",children:Array.from({length:5}).map((E,j)=>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:"███████████ ████"})})]}))})}),a==="error"&&e("p",{class:"ui-state",children:["Unable to load notifications",e("br",{}),e("br",{}),e("button",{type:"button",onClick:()=>M(!0),children:"Try again"})]})]}),d&&e(je,{onChange:E=>{E&&M()},children:e("button",{type:"button",class:"plain block",disabled:a==="loading",onClick:()=>M(),style:{marginBlockEnd:"6em"},children:a==="loading"?e(Ie,{abrupt:!0}):e(A,{children:"Show more…"})})})]})})}function To(){return!!document.querySelector(".deck-backdrop, #modal-container > *")}function Co({announcement:t}){const{instance:n}=z(),{contact:i}=Cs(),o=i==null?void 0:i.account,{id:a,content:s,startsAt:u,endsAt:l,published:c,allDay:d,publishedAt:h,updatedAt:r,read:p,mentions:f,statuses:b,tags:g,emojis:v,reactions:m}=t,y=new Date(h),S=Ke(y),I=new Date(r),T=Ke(I);return e("div",{class:"announcement-block",children:[e(He,{account:o}),e("div",{class:"announcement-content",onClick:Pn({mentions:f,instance:n}),dangerouslySetInnerHTML:{__html:Pt(s,{emojis:v})}}),e("p",{class:"insignificant",children:[e("time",{datetime:y.toISOString(),children:Ke(y)}),r&&T!==S&&e(A,{children:[" ","•"," ",e("span",{class:"ib",children:["Updated"," ",e("time",{datetime:I.toISOString(),children:Ke(I)})]})]})]}),e("div",{class:"announcement-reactions",hidden:!0,children:m.map(x=>{const{name:L,count:N,me:O,staticUrl:U,url:P}=x;return e("button",{type:"button",class:`plain4 small ${O?"reacted":""}`,children:[P||U?e("img",{src:P||U,alt:L,width:"16",height:"16"}):e("span",{children:L})," ",e("span",{class:"count",children:Ue(N)})]})})})]})}const ls=ze(Io),$o=20;function Ot({local:t,columnMode:n,...i}){const o=Se(k),a=!!t,s=n?{}:nt(),{masto:u,instance:l}=z({instance:(i==null?void 0:i.instance)||s.instance}),{masto:c,instance:d}=z(),h=`${a?"Local":"Federated"} timeline (${l})`;_e(h,a?"/:instance?/p/l":"/:instance?/p");const r=D(),p=D();async function f(g){(g||!p.current)&&(p.current=u.v1.timelines.public.list({limit:$o,local:a}));const v=await p.current.next();let{value:m}=v;return m!=null&&m.length&&(g&&(r.current=m[0].id),m.forEach(y=>{Ae(y,l)})),{...v,value:m}}async function b(){try{const g=await u.v1.timelines.public.list({limit:1,local:a,since_id:r.current}).next();let{value:v}=g;return v=rt(v,"public"),!!(v!=null&&v.length)}catch{return!1}}return e(Ye,{title:h,titleComponent:e("h1",{class:"header-double-lines",children:[e("b",{children:a?"Local timeline":"Federated timeline"}),e("div",{children:l})]}),id:"public",instance:l,emptyText:"No one has posted anything yet.",errorText:"Unable to load posts",fetchItems:f,checkForUpdates:b,useItemID:!0,headerStart:e(A,{}),boostsCarousel:o.settings.boostsCarousel,filterContext:"public",headerEnd:e(Fe,{portal:!0,overflow:"auto",viewScroll:"close",position:"anchor",menuButton:e("button",{type:"button",class:"plain",children:e(w,{icon:"more",size:"l"})}),children:[e(oe,{href:a?`/#/${l}/p`:`/#/${l}/p/l`,children:a?e(A,{children:[e(w,{icon:"transfer"})," ",e("span",{children:"Switch to Federated"})]}):e(A,{children:[e(w,{icon:"transfer"})," ",e("span",{children:"Switch to Local"})]})}),e(De,{}),e(oe,{onClick:()=>{let g=prompt('Enter a new instance e.g. "mastodon.social"');if(!/\./.test(g)){g&&alert("Invalid instance");return}g&&(g=g.toLowerCase().trim(),location.hash=a?`/${g}/p/l`:`/${g}/p`)},children:[e(w,{icon:"bus"})," ",e("span",{children:"Go to another instance…"})]}),d!==l&&e(oe,{onClick:()=>{location.hash=a?`/${d}/p/l`:`/${d}/p`},children:[e(w,{icon:"bus"})," ",e("small",{class:"menu-double-lines",children:["Go to my instance (",e("b",{children:d}),")"]})]})]})},l+a)}const yt=5,Et=40,xo=new URLSearchParams;function ds({columnMode:t,...n}){const i=t?{}:nt(),{masto:o,instance:a,authenticated:s}=z({instance:i.instance}),[u,l]=$("default"),[c]=t?[xo]:qe(),d=D(),h=(n==null?void 0:n.query)||c.get("q"),r=t?"statuses":(n==null?void 0:n.type)||c.get("type");_e(h?`Search: ${h}${r?` (${{statuses:"Posts",accounts:"Accounts",hashtags:"Hashtags"}[r]})`:""}`:"Search","/search");const[p,f]=$(!1),b=D(0);B(()=>{b.current=0},[h,r]);const g=D();Je(()=>{var C,_;(_=(C=g.current)==null?void 0:C.scrollTo)==null||_.call(C,0,0)},[h,r]);const[v,m]=$([]),[y,S]=$([]),[I,T]=$([]);B(()=>{m([]),S([]),T([])},[h]);const x={statuses:m,accounts:S,hashtags:T},[L,N]=$({}),O=async C=>{if(!(C!=null&&C.length))return;const _=await Wt(C,L);_&&N({...L,..._})};function U(C){C&&(b.current=0),!(!C&&!s)&&(l("loading"),C&&!r&&(m(v.slice(0,yt)),S(y.slice(0,yt)),T(I.slice(0,yt))),(async()=>{var F,Y;const _={q:h,resolve:s,limit:yt};r&&(_.limit=Et,_.type=r,s&&(_.offset=b.current));try{const te=await o.v2.search.fetch(_);if(r)if(C){x[r](te[r]);const W=(F=te[r])==null?void 0:F.length;b.current=Et,f(!!W)}else{x[r](ke=>[...ke,...te[r]]);const W=(Y=te[r])==null?void 0:Y.length;b.current=b.current+Et,f(!!W)}else m(te.statuses||[]),S(te.accounts||[]),T(te.hashtags||[]),b.current=0,f(!1);O(te.accounts),l("default")}catch{l("error")}})())}const P=D();ct(C=>{var F;const _=((F=g.current)==null?void 0:F.scrollTop)===0;if(C&&_){const Y=Date.now()-P.current;!P.current||Y>1e3*3?U(!0):P.current=Date.now()}}),B(()=>{var C,_,F,Y;(_=(C=d.current)==null?void 0:C.setValue)==null||_.call(C,h||""),h?U(!0):(Y=(F=d.current)==null?void 0:F.focus)==null||Y.call(F)},[h,r,a]),Re("/",C=>{var _,F;(F=(_=d.current)==null?void 0:_.focus)==null||F.call(_)},{preventDefault:!0});const[M]=Ht();return e("div",{id:"search-page",class:"deck-container",ref:g,children:e("div",{class:"timeline-deck deck",children:[e("header",{class:u==="loading"?"loading":"",children:e("div",{class:"header-grid",children:[e("div",{class:"header-side",children:e(mt,{})}),e(ns,{ref:d}),e("div",{class:"header-side",children:e("button",{type:"button",class:"plain",onClick:()=>{U(!0)},disabled:u==="loading",children:e(w,{icon:"search",size:"l"})})})]})}),e("main",{children:[!!h&&!t&&e("div",{ref:M,class:`filter-bar ${u==="loading"?"loading":""}`,children:[!!r&&e(ee,{to:`/search${h?`?q=${encodeURIComponent(h)}`:""}`,children:"‹ All"}),[{label:"Accounts",type:"accounts",to:`/search?q=${encodeURIComponent(h)}&type=accounts`},{label:"Hashtags",type:"hashtags",to:`/search?q=${encodeURIComponent(h)}&type=hashtags`},{label:"Posts",type:"statuses",to:`/search?q=${encodeURIComponent(h)}&type=statuses`}].sort((C,_)=>C.type===r?-1:_.type===r?1:0).map(C=>e(ee,{to:C.to,children:C.label},C.type))]}),h?e(A,{children:[(!r||r==="accounts")&&e(A,{children:[r!=="accounts"&&e("h2",{class:"timeline-header",children:"Accounts"}),y.length>0?e(A,{children:[e("ul",{class:"timeline flat accounts-list",children:y.map(C=>e("li",{children:e(He,{account:C,instance:a,showStats:!0,relationship:L[C.id]})},C.id))}),r!=="accounts"&&e("div",{class:"ui-state",children:e(ee,{class:"plain button",to:`/search?q=${h}&type=accounts`,children:["See more accounts ",e(w,{icon:"arrow-right"})]})})]}):!r&&(u==="loading"?e("p",{class:"ui-state",children:e(Ie,{abrupt:!0})}):e("p",{class:"ui-state",children:"No accounts found."}))]}),(!r||r==="hashtags")&&e(A,{children:[r!=="hashtags"&&e("h2",{class:"timeline-header",children:"Hashtags"}),I.length>0?e(A,{children:[e("ul",{class:"link-list hashtag-list",children:I.map(C=>{var te;const{name:_,history:F}=C,Y=(te=F==null?void 0:F.reduce)==null?void 0:te.call(F,(W,ke)=>W+ +ke.uses,0);return e("li",{children:e(ee,{to:a?`/${a}/t/${_}`:`/t/${_}`,children:[e(w,{icon:"hashtag"}),e("span",{children:_}),!!Y&&e("span",{class:"count",children:Ue(Y)})]})},`${_}-${Y}`)})}),r!=="hashtags"&&e("div",{class:"ui-state",children:e(ee,{class:"plain button",to:`/search?q=${h}&type=hashtags`,children:["See more hashtags ",e(w,{icon:"arrow-right"})]})})]}):!r&&(u==="loading"?e("p",{class:"ui-state",children:e(Ie,{abrupt:!0})}):e("p",{class:"ui-state",children:"No hashtags found."}))]}),(!r||r==="statuses")&&e(A,{children:[r!=="statuses"&&e("h2",{class:"timeline-header",children:"Posts"}),v.length>0?e(A,{children:[e("ul",{class:"timeline",children:v.map(C=>e("li",{children:e(ee,{class:"status-link",to:a?`/${a}/s/${C.id}`:`/s/${C.id}`,children:e(Me,{status:C})})},C.id))}),r!=="statuses"&&e("div",{class:"ui-state",children:e(ee,{class:"plain button",to:`/search?q=${h}&type=statuses`,children:["See more posts ",e(w,{icon:"arrow-right"})]})})]}):!r&&(u==="loading"?e("p",{class:"ui-state",children:e(Ie,{abrupt:!0})}):e("p",{class:"ui-state",children:"No posts found."}))]}),!!r&&(u==="default"?p?e(je,{onChange:C=>{C&&U()},children:e("button",{type:"button",class:"plain block",onClick:()=>U(),style:{marginBlockEnd:"6em"},children:"Show more…"})}):e("p",{class:"ui-state insignificant",children:"The end."}):u==="loading"&&e("p",{class:"ui-state",children:e(Ie,{abrupt:!0})}))]}):u==="loading"?e("p",{class:"ui-state",children:e(Ie,{abrupt:!0})}):e("p",{class:"ui-state",children:"Enter your search term or paste a URL above to get started."})]})]})})}const Ao=20,Lo=tt(t=>t.v1.trends.links.list().next(),{maxAge:10*60*1e3});function us({columnMode:t,...n}){const i=Se(k),o=t?{}:nt(),{masto:a,instance:s}=z({instance:(n==null?void 0:n.instance)||o.instance}),{masto:u,instance:l}=z(),c=`Trending (${s})`;_e(c,"/:instance?/trending");const d=D(),[h,r]=$([]),[p,f]=$([]),b=D();async function g(y){var T;if(y||!b.current){b.current=a.v1.trends.statuses.list({limit:Ao});try{const x=a.v1.trends.tags.list(),{value:L}=await x.next();L!=null&&L.length&&r(L)}catch{}try{const{value:x}=await Lo(a),L=(T=x==null?void 0:x.filter)==null?void 0:T.call(x,N=>N.type==="link");L!=null&&L.length&&f(L)}catch{}}const S=await b.current.next();let{value:I}=S;return I!=null&&I.length&&(y&&(d.current=I[0].id),I.forEach(x=>{Ae(x,s)})),{...S,value:I}}async function v(){try{const y=await a.v1.trends.statuses.list({limit:1}).next();let{value:S}=y;return S=rt(S,"public"),S!=null&&S.length&&S[0].id!==d.current?(d.current=S[0].id,!0):!1}catch{return!1}}const m=he(()=>e(A,{children:[!!h.length&&e("div",{class:"filter-bar expandable",children:[e(w,{icon:"chart",class:"insignificant",size:"l"}),h.map((y,S)=>{const{name:I,history:T}=y,x=T.reduce((L,N)=>L+ +N.uses,0);return e(ee,{to:`/${s}/t/${I}`,children:[e("span",{children:[e("span",{class:"more-insignificant",children:"#"}),I]}),e("span",{class:"filter-count",children:Ue(x)})]},I)})]}),!!p.length&&e("div",{class:"links-bar",children:[e("header",{children:e("h3",{children:"Trending News"})}),p.map(y=>{const{authorName:S,authorUrl:I,blurhash:T,description:x,height:L,image:N,imageDescription:O,language:U,providerName:P,providerUrl:M,publishedAt:C,title:_,url:F,width:Y}=y,te=new URL(F).hostname.replace(/^www\./,"").replace(/\/$/,"");let W;if(T){const ke=qn(T),re=Xn(ke);W=Qn([.6,re[1],re[2]])}return e("a",{href:F,target:"_blank",rel:"noopener noreferrer",style:W?{"--accent-color":`rgb(${W.join(",")})`,"--accent-alpha-color":`rgba(${W.join(",")}, 0.4)`}:{},children:e("article",{children:[e("figure",{children:e("img",{src:N,alt:O,width:Y,height:L,loading:"lazy"})}),e("div",{class:"article-body",children:[e("header",{children:[e("div",{class:"article-meta",children:[e("span",{class:"domain",children:te})," ",!!C&&e(A,{children:"· "}),!!C&&e(A,{children:e($t,{datetime:C,format:"micro"})})]}),!!_&&e("h1",{class:"title",lang:U,dir:"auto",children:_})]}),!!x&&e("p",{class:"description",lang:U,dir:"auto",children:x})]})]})},F)})]})]}),[h,p]);return e(Ye,{title:c,titleComponent:e("h1",{class:"header-double-lines",children:[e("b",{children:"Trending"}),e("div",{children:s})]}),id:"trending",instance:s,emptyText:"No trending posts.",errorText:"Unable to load posts",fetchItems:g,checkForUpdates:v,checkForUpdatesInterval:5*60*1e3,useItemID:!0,headerStart:e(A,{}),boostsCarousel:i.settings.boostsCarousel,filterContext:"public",timelineStart:m,headerEnd:e(Fe,{portal:!0,overflow:"auto",viewScroll:"close",position:"anchor",menuButton:e("button",{type:"button",class:"plain",children:e(w,{icon:"more",size:"l"})}),children:[e(oe,{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…"})]}),l!==s&&e(oe,{onClick:()=>{location.hash=`/${l}/trending`},children:[e(w,{icon:"bus"})," ",e("small",{class:"menu-double-lines",children:["Go to my instance (",e("b",{children:l}),")"]})]})]})},s)}function Mo(){_e("Home","/");const t=Se(k),{shortcuts:n}=t,i=n.map(o=>{if(!o)return null;const{type:a,...s}=o,u={following:Jt,notifications:ls,list:as,public:Ot,bookmarks:ss,favourites:is,hashtag:os,mentions:cs,trending:us,search:ds}[a];return!u||a==="search"&&!s.query?null:e(u,{...s,columnMode:!0},a+JSON.stringify(s))});return Re(["1","2","3","4","5","6","7","8","9"],(o,a)=>{try{const s=parseInt(a.keys[0],10)-1;document.querySelectorAll("#columns > *")[s].focus()}catch{}}),e("div",{id:"columns",onContextMenu:o=>{o.target.closest(".deck > header")&&!o.target.closest("a")&&!o.target.closest("button")&&(o.preventDefault(),k.showShortcutsSettings=!0)},children:i})}function Ro(){var n;const t=Se(k);return B(()=>{(async()=>{const i=await ht.drafts.keys();if(i.length){const o=Un();i.filter(s=>s.startsWith(o)).length&&(k.showDrafts=!0)}})()},[]),e(A,{children:(t.settings.shortcutsViewMode==="multi-column"||!t.settings.shortcutsViewMode&&t.settings.shortcutsColumnsMode)&&((n=t.shortcuts)!=null&&n.length)?e(Mo,{}):e(Jt,{title:"Home",path:"/",id:"home",headerStart:!1,headerEnd:e(_o,{})})})}function _o(){const t=Se(k),n=D(),[i,o]=$(void 0);return e(A,{children:[e(ee,{ref:n,to:"/notifications",class:`button plain notifications-button ${t.notificationsShowNew?"has-badge":""} ${i||""}`,onClick:a=>{a.stopPropagation(),window.matchMedia("(min-width: calc(40em))").matches&&(a.preventDefault(),o(s=>s?void 0:"open"))},children:e(w,{icon:"notification",size:"l",alt:"Notifications"})}),e(No,{state:i,anchorRef:n,onClose:()=>o(void 0)})]})}const Eo=30,Po=5;function No({anchorRef:t,state:n,onClose:i}){const{masto:o,instance:a}=z(),s=Se(k),[u,l]=$("default"),c=o.v1.notifications.list({limit:Eo});async function d(){const b=await c.next(),g=b.value;if(g!=null&&g.length){g.forEach(m=>{Ae(m.status,a,{skipThreading:!0})});const v=rs(g);k.notificationsLast=g[0],k.notifications=v,o.v1.markers.create({notifications:{lastReadId:g[0].id}}).catch(()=>{})}return k.notificationsShowNew=!1,k.notificationsLastFetchTime=Date.now(),b}const[h,r]=$(!1);function p(){return o.v1.followRequests.list({limit:1})}function f(){l("loading"),(async()=>{try{await d();const b=await p();r(!!(b!=null&&b.length)),l("default")}catch{l("error")}})()}return B(()=>{n==="open"&&f()},[n]),e(Gn,{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:s.notifications.length?e(A,{children:s.notifications.slice(0,Po).map(b=>e(Kt,{instance:a,notification:b,disableContextMenu:!0},b.id))}):u==="loading"?e("div",{class:"ui-state",children:e(Ie,{abrupt:!0})}):u==="error"&&e("div",{class:"ui-state",children:[e("p",{children:"Unable to fetch notifications."}),e("p",{children:e("button",{type:"button",onClick:f,children:"Try again"})})]})}),e("footer",{children:[e(ee,{to:"/mentions",class:"button plain",children:[e(w,{icon:"at"})," ",e("span",{children:"Mentions"})]}),e(ee,{to:"/notifications",class:"button plain2",children:[h?e(A,{children:[e("span",{class:"tag collapsed",children:"New"})," ",e("span",{children:"Follow Requests"})]}):e("b",{children:"See all"})," ",e(w,{icon:"arrow-right"})]})]})]})}const Do=ze(Ro),Uo=[/^\/@[^@\/]+\/(?:statuses|posts)\/([^\/]+)/i,/\/notes\/([^\/]+)/i,/^\/(?:notice|objects)\/([a-z0-9-]+)/i,/\/@[^@\/]+@?[^\/]+?\/([^\/]+)/i];function hs(t){const{hostname:n,pathname:i}=new URL(t);for(const o of Uo){const[,a]=i.match(o)||[];if(a)return{instance:n,id:a}}return{}}function Fo(t){const{instance:n,id:i}=hs(t);return n&&i?`/${n}/s/${i}`:null}function Oo(){const n=lt().pathname.replace(/^\//,""),i=hs(n),o=i!=null&&i.instance?`/${i.instance}/s/${i.id}`:null,[a,s]=$("loading");return Je(()=>{s("loading"),(async()=>{try{const{instance:u,id:l}=i,{masto:c}=z({instance:u});if(await c.v1.statuses.$select(l).fetch()){window.location.hash=o+"?view=full";return}}catch{}{const{masto:u,instance:l}=z(),c=await u.v2.search.fetch({q:n,type:"statuses",limit:1,resolve:!0});if(c.statuses.length){const d=c.statuses[0];window.location.hash=`/${l}/s/${d.id}?view=full`}else window.location.hash=o+"?view=full"}})()},[o]),e("div",{class:"ui-state",tabIndex:"-1",children:[a==="loading"?e(A,{children:[e(Ie,{abrupt:!0}),e("h2",{children:"Resolving…"}),e("p",{children:e("a",{href:n,target:"_blank",rel:"noopener noreferrer",children:n})})]}):e(A,{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(ee,{to:"/",children:"Go home"})})]})}function Bo(){const{masto:t}=z();_e("Lists","/l");const[n,i]=$("default"),[o,a]=xt(d=>d+1,0),[s,u]=$([]);B(()=>{i("loading"),(async()=>{try{const d=await t.v1.lists.list();d.sort((h,r)=>h.title.localeCompare(r.title)),u(d),i("default")}catch{i("error")}})()},[o]);const[l,c]=$(!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(mt,{}),e(ee,{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:()=>c(!0),children:e(w,{icon:"plus",size:"l",alt:"New list"})})})]})}),e("main",{children:s.length>0?e("ul",{class:"link-list",children:s.map(d=>e("li",{children:e(ee,{to:`/l/${d.id}`,children:e("span",{children:[e(w,{icon:"list"})," ",e("span",{children:d.title})]})})}))}):n==="loading"?e("p",{class:"ui-state",children:e(Ie,{})}):n==="error"?e("p",{class:"ui-state",children:"Unable to load lists."}):e("p",{class:"ui-state",children:"No lists yet."})})]}),l&&e(Ce,{class:"light",onClick:d=>{d.target===d.currentTarget&&c(!1)},children:e(Yt,{list:l==null?void 0:l.list,onClose:d=>{d.state==="success"&&a(),c(!1)}})})]})}const zo=""+new URL("instances-cddSOnAA.json",import.meta.url).href;var qo={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:Ho,PHANPY_WEBSITE:Vo}=qo,Xt="read write follow push";async function Go({instanceURL:t}){const n=new URLSearchParams({client_name:Ho,redirect_uris:location.origin+location.pathname,scopes:Xt,website:Vo});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 jo({instanceURL:t,client_id:n}){const i=new URLSearchParams({client_id:n,scope:Xt,redirect_uri:location.origin+location.pathname,response_type:"code"});return`https://${t}/oauth/authorize?${i.toString()}`}async function Yo({instanceURL:t,client_id:n,client_secret:i,code:o}){const a=new URLSearchParams({client_id:n,client_secret:i,redirect_uri:location.origin+location.pathname,grant_type:"authorization_code",code:o,scope:Xt});return await(await fetch(`https://${t}/oauth/token`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:a.toString()})).json()}var Wo={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:Ko}=Wo;function Zo(){_e("Log in");const t=D(),n=se.local.get("instanceURL"),[i,o]=$("default"),[a]=qe(),s=a.get("instance"),u=a.get("submit"),[l,c]=$(s||(n==null?void 0:n.toLowerCase())||""),[d,h]=$([]);B(()=>{(async()=>{try{const y=await(await fetch(zo)).json();h(y)}catch{}})()},[]);const r=m=>{m&&(se.local.set("instanceURL",m),(async()=>{o("loading");try{const{client_id:y,client_secret:S,vapid_key:I}=await Go({instanceURL:m});y&&S?(se.session.set("clientID",y),se.session.set("clientSecret",S),se.session.set("vapidKey",I),location.href=await jo({instanceURL:m,client_id:y})):alert("Failed to register application"),o("default")}catch{o("error")}})())},p=l?l.replace(/^https?:\/\//,"").replace(/\/+$/,"").replace(/^@?[^@]+@/,"").trim():null,f=/[^\s\r\n\t\/\\]+\.[^\s\r\n\t\/\\]+/.test(p)&&!/[\s\/\\@]/.test(p),b=p?d.filter(m=>m.includes(l)).sort((m,y)=>{const S=m.toLowerCase().startsWith(l.toLowerCase()),I=y.toLowerCase().startsWith(l.toLowerCase());return S&&!I?-1:!S&&I?1:0}).slice(0,10):[],g=f?p:b!=null&&b.length?b[0]:l?d.find(m=>m.includes(l)):null,v=m=>{m.preventDefault(),r(g)};return u&&B(()=>{r(s||g)},[]),e("main",{id:"login",style:{textAlign:"center"},children:e("form",{onSubmit:v,children:[e("h1",{children:[e("img",{src:Gt,alt:"",width:"80",height:"80"}),e("br",{}),"Log in"]}),e("label",{children:[e("p",{children:"Instance"}),e("input",{value:l,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:m=>{c(m.target.value)}}),(b==null?void 0:b.length)>0?e("ul",{id:"instances-suggestions",children:b.map((m,y)=>e("li",{children:e("button",{type:"button",class:"plain5",onClick:()=>{r(m)},children:m})}))}):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"||!l||!g,children:g?`Continue with ${g}`:"Continue"})," "]}),e(Ie,{hidden:i!=="loading"}),e("hr",{}),!Ko&&e("p",{children:e("a",{href:"https://joinmastodon.org/servers",target:"_blank",children:"Don't have an account? Create one!"})}),e("p",{children:e(ee,{to:"/",children:"Go home"})})]})})}const wt=40,Jo=10,Xo=5;let Bt={},St={},kt={};function zt(t){delete St[t],delete kt[t]}const dt={block:"nearest",inline:"center",behavior:"smooth"},Tn=".status-link:not(details:not([open]) > summary ~ *, details:not([open]) > summary ~ * *), .status-focus:not(details:not([open]) > summary ~ *, details:not([open]) > summary ~ * *)",Cn=/\/s\//i;function Qo(t){const{id:n}=t,{masto:i,instance:o}=z({instance:t.instance}),a=Se(k),[s,u]=qe(),l=s.get("media"),c=s.get("media-only"),d=parseInt(l||c,10);let h=d>0;const r=s.get("mediaStatusID"),p=zn(r,o);r&&!p&&(h=!1);const f=h&&!!c,b=Ge(n,o),[g,v]=$(k.statuses[b]);B(()=>{k.statuses[b]&&v(k.statuses[b])},[b]);const m=he(()=>{const{prevLocation:I}=k,T=((I==null?void 0:I.pathname)||"")+((I==null?void 0:I.search)||""),x=pt("/:instance/s/:id",T)||pt("/s/:id",T);return!T||x?"/":T},[]);B(()=>{!g&&h&&(async()=>{try{const I=await i.v1.statuses.$select(n).fetch();Ae(I,o),v(I)}catch{alert("Unable to load post."),location.hash=m}})()},[h]);const y=r?p==null?void 0:p.mediaAttachments:g==null?void 0:g.mediaAttachments,S=Ve(()=>{!window.matchMedia("(min-width: calc(40em + 350px))").matches&&a.prevLocation?history.back():f?location.hash=m:(s.delete("media"),s.delete("mediaStatusID"),u(s))},[f,m,a.prevLocation]);return B(()=>{let I=setTimeout(()=>{const T=document.querySelector(".carousel");T&&T.focus()},100);return()=>clearTimeout(I)},[f]),e("div",{class:"deck-backdrop",children:[h?y!=null&&y.length?e(es,{mediaAttachments:y,statusID:r||n,instance:o,lang:g==null?void 0:g.language,index:d-1,onClose:S}):e("div",{class:"media-modal-container loading",children:e(Ie,{abrupt:!0})}):e(ee,{to:m}),!f&&e(ea,{id:n,instance:t.instance,closeLink:m})]})}function ea({id:t,closeLink:n="/",instance:i}){var me,de;const[o,a]=qe(),s=o.get("media"),u=o.get("mediaStatusID"),l=parseInt(s,10)>0,c=D(!k.prevLocation&&(history.length===1||"navigation"in window&&((de=(me=navigation==null?void 0:navigation.entries)==null?void 0:me.call(navigation))==null?void 0:de.length)===1)),[d,h]=$(o.get("view")||c.current?"full":null),r=!!parseInt(o.get("translate")),{masto:p,instance:f}=z({instance:i}),{masto:b,instance:g,authenticated:v}=z(),m=f===g,y=Se(k),[S,I]=$([]),[T,x]=$("default"),L=D(),N=Ge(t,f),O=D(0),U=D();B(()=>{var R;(R=U.current)==null||R.focus()},[]),B(()=>{var G;const R=Yn(()=>{if(!U.current)return;const{scrollTop:K}=U.current;T!=="loading"&&(kt[t]=K)},50);return(G=U.current)==null||G.addEventListener("scroll",R,{passive:!0}),R(),()=>{var K;R.cancel(),(K=U.current)==null||K.removeEventListener("scroll",R)}},[t,T!=="loading"]);const P=D(),M=({reloadHero:R}={})=>{x("loading");let G;const K=St[t];if(K){const ie=K.filter(we=>k.statuses[N]);I(ie)}else I([{id:t}]);return(async()=>{var q,ge;const ie=()=>cn(()=>p.v1.statuses.$select(t).fetch(),{retries:4}),we=cn(()=>p.v1.statuses.$select(t).context.fetch(),{retries:8}),Le=!!y.statuses[N];let $e=y.statuses[N];if(!(Le&&!R))try{$e=await ie(),Ae($e,f),await new Promise(be=>{setTimeout(be,100)})}catch{x("error");return}try{let be=function(J){return J==null?void 0:J.map(ve=>({id:ve.id,account:ve.account,repliesCount:ve.repliesCount,content:ve.content,weight:ft(ve),replies:be(ve.__replies)}))};const ue=await we,{ancestors:xe,descendants:Pe}=ue;O.current=(Pe==null?void 0:Pe.length)||0;const Ne=new Set;xe.forEach(J=>{Ae(J,f,{skipThreading:!0}),J.inReplyToId&&!xe.find(ve=>ve.id===J.inReplyToId)&&Ne.add(J.inReplyToId)});const st=xe.every(J=>J.account.id===$e.account.id),Oe=[];Pe.forEach(J=>{if(Ae(J,f,{skipThreading:!0}),J.inReplyToId&&!Pe.find(ve=>ve.id===J.inReplyToId)&&J.inReplyToId!==$e.id&&Ne.add(J.inReplyToId),J.inReplyToAccountId===J.account.id)Oe.push(J);else if(J.inReplyToId===$e.id)Oe.push(J);else if(!J.inReplyToAccountId&&Oe.find(ve=>ve.id===J.inReplyToId)&&J.account.id===$e.account.id)Oe.push(J);else{const ve=Pe.find(ps=>ps.id===J.inReplyToId);ve&&(ve.__replies||(ve.__replies=[]),ve.__replies.push(J))}}),Ne.size;const We=[...xe.map(J=>({id:J.id,ancestor:!0,isThread:st,accountID:J.account.id,account:J.account,repliesCount:J.repliesCount,weight:ft(J)})),{id:t,accountID:$e.account.id,weight:ft($e)},...Oe.map(J=>({id:J.id,account:J.account,accountID:J.account.id,descendant:!0,thread:J.account.id===$e.account.id,weight:ft(J),replies:be(J.__replies)}))];x("default"),P.current={offsetTop:(q=L.current)==null?void 0:q.offsetTop,scrollTop:(ge=U.current)==null?void 0:ge.scrollTop};const Xe=We.findIndex(J=>J.id===t);Xe>=W&&ke(Xe+1),I(We),St[t]=We,$s($e,f)}catch{x("error")}})(),()=>{clearTimeout(G)}};B(M,[t,p]),B(()=>{var G,K;if(!S.length)return;const R=kt[t];if(R)U.current.scrollTop=R;else if(P.current){const ie={offsetTop:(G=L.current)==null?void 0:G.offsetTop,scrollTop:(K=U.current)==null?void 0:K.scrollTop},we=ie.offsetTop-P.current.offsetTop+ie.scrollTop;U.current.scrollTop=we}else S.length===1&&(U.current.scrollTop=0);P.current=null},[S]),B(()=>{y.reloadStatusPage<=0||(async()=>{try{const{instanceURL:R}=at(),G=`https://${R}/api/v1/statuses/${t}/context`;return await(await caches.open("api")).delete(G,{ignoreVary:!0}),M({reloadHero:!0})}catch{}})()},[y.reloadStatusPage]),B(()=>()=>{kt={},k.reloadStatusPage=0,St={},Bt={},qt.clear()},[]);const C=y.statuses[N]||y.statuses[t],_=he(()=>{if(!C)return"";const{account:R}=C,G=document.createElement("div");return G.innerHTML=R.displayName,G.innerText.trim()},[C]),F=he(()=>{if(!C)return"";let R=Bn(C);return R.length>64&&(R=R.slice(0,64)+"…"),R},[C]);_e(_&&F?`${_}: "${F}"`:"Status","/:instance?/s/:id");const Y=he(()=>{if(!C)return;const{url:R}=C;if(R)return new URL(R).hostname},[C]),te=he(()=>{if(Y)return Y===f},[Y,f]),[W,ke]=$(wt),re=he(()=>S.length-W,[S.length,W]),X=S.some(R=>R.descendant),E=S.filter(R=>R.ancestor),[j,ne]=$(!0),le=he(()=>{if(!L.current||j)return null;const{top:R}=L.current.getBoundingClientRect();return R>0?"down":"up"},[j]);Re("esc",()=>{location.hash=n},{enabled:!l,ignoreEventWhen:R=>!!document.querySelector("#modal-container > *")}),Re("backspace",()=>{location.hash=n}),Re("j",()=>{const R=document.activeElement.closest(".status-link, .status-focus"),G=R==null?void 0:R.getBoundingClientRect(),K=Array.from(U.current.querySelectorAll(Tn));if(R&&G.top0){const ie=K.indexOf(R);let we=K[ie+1];we&&(we.focus(),we.scrollIntoView(dt))}else{const ie=K.find(we=>{const Le=we.getBoundingClientRect();return Le.top>=44&&Le.left>=0});ie&&(ie.focus(),ie.scrollIntoView(dt))}}),Re("k",()=>{const R=document.activeElement.closest(".status-link, .status-focus"),G=R==null?void 0:R.getBoundingClientRect(),K=Array.from(U.current.querySelectorAll(Tn));if(R&&G.top0){const ie=K.indexOf(R);let we=K[ie-1];we&&(we.focus(),we.scrollIntoView(dt))}else{const ie=K.find(we=>{const Le=we.getBoundingClientRect();return Le.top>=44&&Le.left>=0});ie&&(ie.focus(),ie.scrollIntoView(dt))}}),Re("x",()=>{const R=document.activeElement.closest(".status-link, .status-focus");if(R){const G=R.nextElementSibling;G&&G.tagName.toLowerCase()==="details"&&(G.open=!G.open)}});const[H,ae]=$(!1),Q=D(l?"media+status":"status"),ye=Ve((R,G,K,ie)=>{R.preventDefault(),R.stopPropagation(),a({media:G+1,mediaStatusID:ie.id})},[t]),V=Ve((R,G)=>{zt(G.id)},[]);B(()=>{let R;return u&&l&&(R=setTimeout(()=>{var K;const G=(K=U.current)==null?void 0:K.querySelector(`.status-link[href*="/${u}"]`);G&&G.scrollIntoView(dt)},400)),()=>{clearTimeout(R)}},[u,l]);const Z=Ve((R,G)=>{const{id:K,ancestor:ie,isThread:we,descendant:Le,thread:$e,replies:q,repliesCount:ge,weight:be}=R,ue=K===t;return e("li",{ref:ue?L:null,class:`${ie?"ancestor":""} ${Le?"descendant":""} ${$e?"thread":""} ${ue?"hero":""}`,children:[ue?e(A,{children:[e(je,{threshold:.1,onChange:xe=>{queueMicrotask(()=>{requestAnimationFrame(()=>{ne(xe)})})},class:"status-focus",tabIndex:0,children:e(Me,{statusID:K,instance:f,withinContext:!0,size:"l",enableTranslate:!0,forceTranslate:r})}),T!=="loading"&&!v?e("div",{class:"post-status-banner",children:[e("p",{children:"You're not logged in. Interactions (reply, boost, etc) are not possible."}),e(ee,{to:"/login",class:"button",children:"Log in"})]}):!m&&e("div",{class:"post-status-banner",children:[e("p",{children:["This post is from another instance (",e("b",{children:f}),"). Interactions (reply, boost, etc) are not possible."]}),e("button",{type:"button",disabled:T==="loading",onClick:()=>{x("loading"),(async()=>{try{const xe=await b.v2.search.fetch({q:C.url,type:"statuses",resolve:!0,limit:1});if(xe.statuses.length){const Pe=xe.statuses[0];location.hash=g?`/${g}/s/${Pe.id}`:`/s/${Pe.id}`}else throw new Error("No results")}catch(xe){x("default"),alert("Error: "+xe)}})()},children:[e(w,{icon:"transfer"})," Switch to my instance to enable interactions"]})]})]}):e(ee,{class:"status-link",to:f?`/${f}/s/${K}`:`/s/${K}`,onClick:()=>{zt(K)},children:[e(je,{skip:G!==0||!ie,threshold:.5,onChange:xe=>{queueMicrotask(()=>{requestAnimationFrame(()=>{ae(xe)})})},children:e(Me,{statusID:K,instance:f,withinContext:!0,size:$e||ie?"m":"s",enableTranslate:!0,onMediaClick:ye,onStatusLinkClick:V})}),ie&&ge>1&&e("div",{class:"replies-link",children:[e(w,{icon:"comment2"})," ",e("span",{title:ge,children:Ue(ge)})]})," "]}),Le&&(q==null?void 0:q.length)>0&&e(fs,{instance:f,replies:q,hasParentThread:$e,level:1,accWeight:be,openAll:O.current{k.reloadStatusPage++},children:"Try again"})]})]},K)},[t,f,T,v,m,r,ye,V,X]),ce=he(()=>{var R;if("navigation"in window&&(navigation!=null&&navigation.entries)){const G=navigation.entries()[navigation.currentEntry.index-1];if(G!=null&&G.url)return Cn.test(G.url)}return Cn.test((R=k.prevLocation)==null?void 0:R.pathname)},[N]),fe=he(()=>{if(!re)return[];const R=[];function G(K){R.push(K.id),K.replies&&K.replies.forEach(G)}return S.slice(W).forEach(G),R.map(K=>Ge(K,f))},[re,S,W,f]);return e("div",{tabIndex:"-1",ref:U,class:`status-deck deck contained ${S.length>1?"padded-bottom":""} ${Q.current==="status"&&!c.current?"slide-in":""} ${d?`deck-view-${d}`:""}`,onAnimationEnd:R=>{Q.current==="status"&&(Q.current=null)},children:[e("header",{class:`${T==="loading"?"loading":""}`,onDblClick:R=>{k.reloadStatusPage++},children:e("div",{class:"header-grid header-grid-2",children:[e("h1",{children:[ce&&e("button",{type:"button",class:"plain deck-back",onClick:()=>{history.back()},children:e(w,{icon:"chevron-left",size:"xl"})}),!j&&C&&T!=="loading"?e(A,{children:[e("span",{class:"hero-heading",children:[e(It,{account:C.account,instance:f,showAvatar:!0,short:!0})," ",e("span",{class:"insignificant",children:["•"," ",e($t,{datetime:C.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:le==="down"?"arrow-down":"arrow-up"})})]}):e(A,{children:["Post"," ",e("button",{type:"button",class:"ancestors-indicator light small",onClick:R=>{R.preventDefault(),R.stopPropagation(),U.current.scrollTo({top:0,behavior:"smooth"})},hidden:!E.length||H,title:`${E.length} posts above ‒ Go to top`,children:[e(w,{icon:"arrow-up"}),E.filter((R,G,K)=>K.findIndex(ie=>ie.accountID===R.accountID)===G).slice(0,3).map(R=>e(et,{url:R.account.avatar,alt:R.account.displayName},R.account.id)),E.length>3&&e(A,{children:[" ",e("span",{class:"insignificant",children:Ue(E.length)})]})]})]})]}),e("div",{class:"header-side",children:[e("button",{type:"button",class:"plain4 button-switch-view",style:{display:d==="full"?"":"none"},onClick:()=>{h(null),o.delete("media"),o.delete("media-only"),o.delete("view"),a(o)},title:"Switch to Side Peek view",children:e(w,{icon:"layout4",size:"l"})}),e(Fe,{align:"end",portal:{target:U.current},menuButton:e("button",{type:"button",class:"button plain4",children:e(w,{icon:"more",alt:"Actions",size:"xl"})}),children:[e(oe,{disabled:T==="loading",onClick:()=>{k.reloadStatusPage++},children:[e(w,{icon:"refresh"}),e("span",{children:"Refresh"})]}),e(oe,{className:"menu-switch-view",onClick:()=>{h(d==="full"?null:"full"),o.delete("media"),o.delete("media-only"),d==="full"?o.delete("view"):o.set("view","full"),a(o)},children:[e(w,{icon:{"":"layout5",full:"layout4"}[d||""]}),e("span",{children:["Switch to ",d==="full"?"Side Peek":"Full"," view"]})]}),e(oe,{onClick:()=>{Array.from(U.current.querySelectorAll(".spoiler-button:not(.spoiling), .spoiler-media-button:not(.spoiling)")).forEach(G=>{G.click()})},children:[e(w,{icon:"eye-open"})," ",e("span",{children:"Show all sensitive content"})]}),e(De,{}),e(jn,{className:"plain",children:"Experimental"}),e(oe,{disabled:!Y||te,onClick:()=>{const R=Fo(C.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",Y?e(A,{children:[" ","(",e("b",{children:Y}),")"]}):""]})]})]}),e(ee,{class:"button plain deck-close",to:n,children:e(w,{icon:"x",size:"xl"})})]})]})}),S.length&&C?e("ul",{class:`timeline flat contextual grow ${T==="loading"?"loading":""}`,children:[S.slice(0,W).map(Z),re>0&&e("li",{children:e("button",{type:"button",class:"plain block show-more",disabled:T==="loading",onClick:()=>ke(R=>R+wt),style:{marginBlockEnd:"6em"},"data-state-post-ids":fe.join(" "),children:[e("div",{class:"ib avatars-bunch",children:S.slice(W,W+5).map(R=>e(et,{url:R.account.avatarStatic},R.id))})," ",e("div",{class:"ib",children:["Show more…"," ",e("span",{class:"tag",children:re>wt?`${wt}+`:re})]})]})})]}):e(A,{children:[T==="loading"&&e("ul",{class:"timeline flat contextual grow loading",children:e("li",{children:e(Me,{skeleton:!0,size:"l"})})}),T==="error"&&e("p",{class:"ui-state",children:["Unable to load post",e("br",{}),e("br",{}),e("button",{type:"button",onClick:()=>{k.reloadStatusPage++},children:"Try again"})]})]})]})}function fs({replies:t,instance:n,hasParentThread:i,level:o,accWeight:a,openAll:s}){const[u,l]=qe(),c=m=>m.reduce((y,S)=>{const{repliesCount:I,replies:T}=S,x=(T==null?void 0:T.length)||I;return y+x+c(T||[])},0),d=t.length+c(t),h=t.length===d,r=t.map(m=>m.account).filter((m,y,S)=>S.findIndex(I=>I.id===m.id)===y).slice(0,3),p=he(()=>t==null?void 0:t.reduce((m,y)=>m+(y==null?void 0:y.weight),a),[a,t==null?void 0:t.length]);let f=!1;(s||p<=Xo||!i&&d===1&&ft(t[0])<2)&&(f=!0);const b=Bt[t[0].id],g=Ve((m,y,S,I)=>{m.preventDefault(),m.stopPropagation(),l({media:y+1,mediaStatusID:I.id})},[]),v=D();return Je(()=>{var y;function m(S){S.target.dataset.scrollLeft=S.target.scrollLeft}return(y=v.current)==null||y.addEventListener("scroll",m,{passive:!0}),()=>{var S;(S=v.current)==null||S.removeEventListener("scroll",m)}},[]),e("details",{ref:v,class:"replies",open:b||f,onToggle:m=>{const{open:y}=m.target;Bt[t[0].id]=y},style:{"--comments-level":o},"data-comments-level":o,"data-comments-level-overflow":o>4,children:[e("summary",{class:"replies-summary",hidden:f,children:[e("span",{class:"avatars",children:r.map(m=>e(et,{url:m.avatarStatic,title:`${m.displayName} @${m.username}`,squircle:m==null?void 0:m.bot},m.id))}),e("b",{children:[e("span",{title:t.length,children:Ue(t.length)})," ","repl",t.length===1?"y":"ies"]}),!h&&d>1&&e(A,{children:[" ","·"," ",e("span",{children:[e("span",{title:d,children:Ue(d)})," ","comment",d===1?"":"s"]})]})]}),e("ul",{children:t.map(m=>{var y,S;return e("li",{children:[e(ee,{class:"status-link",to:n?`/${n}/s/${m.id}`:`/s/${m.id}`,onClick:()=>{zt(m.id)},children:[e(Me,{statusID:m.id,instance:n,withinContext:!0,size:"s",enableTranslate:!0,onMediaClick:g}),!((y=m.replies)!=null&&y.length)&&m.repliesCount>0&&e("div",{class:"replies-link",children:[e(w,{icon:"comment2"})," ",e("span",{title:m.repliesCount,children:Ue(m.repliesCount)})]})]}),((S=m.replies)==null?void 0:S.length)&&e(fs,{instance:n,replies:m.replies,level:o+1,accWeight:f?p:m.weight,openAll:s})]},m.id)})})]})}const ta=140,na=35,sa=70,ia=140,qt=new Map;function ft(t){var f,b;const n=qt.get(t.id);if(n)return n;const{spoilerText:i,content:o,mediaAttachments:a,poll:s,card:u}=t,l=xs(i+o),c=a!=null&&a.length?ta:0,d=(((f=s==null?void 0:s.options)==null?void 0:f.length)||0)*na,h=u&&(a!=null&&a.length||(b=s==null?void 0:s.options)!=null&&b.length)?0:sa,p=(l+c+d+h)/ia;return qt.set(t.id,p),p}const oa=ze(Qo);function aa(){const t=nt(),{id:n,instance:i}=t;return e(oa,{id:n,instance:i})}const ca=""+new URL("boosts-carousel-YjmjXTE6.jpg",import.meta.url).href,ra=""+new URL("grouped-notifications-xYMFVY91.jpg",import.meta.url).href,la=""+new URL("multi-column-ETnJNDVb.jpg",import.meta.url).href,da=""+new URL("multi-hashtag-timeline-x-SDVR4g.jpg",import.meta.url).href,ua=""+new URL("nested-comments-thread-Ib-fZGS3.jpg",import.meta.url).href,ha="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 fa={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:ut,PHANPY_WEBSITE:$n,PHANPY_PRIVACY_POLICY_URL:pa,PHANPY_DEFAULT_INSTANCE_REGISTRATION_URL:xn}=fa,An=$n?$n.replace(/https?:\/\//g,"").replace(/\/$/,""):null,Ln=`${"2024-01-05T19:24:44.622Z".slice(0,10).replace(/-/g,".")}.32c53b8`;function Mn(){return _e(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:Gt,alt:"",width:"160",height:"160",style:{aspectRatio:"1/1",marginBlockEnd:-16}}),e("img",{src:ha,alt:"Phanpy",width:"200"})]}),e("p",{class:"desc",children:"A minimalistic opinionated Mastodon web client."}),e("p",{children:e(ee,{to:ut?`/login?instance=${ut}&submit=1`:"/login",class:"button",children:ut?"Log in":"Log in with Mastodon"})}),ut&&xn&&e("p",{children:e("a",{href:xn,class:"button plain5",children:"Sign up"})}),!ut&&e("p",{class:"insignificant",children:e("small",{children:["Connect your existing Mastodon/Fediverse account.",e("br",{}),"Your credentials are not stored on this server."]})})]}),(An||Ln)&&e("p",{class:"app-site-version",children:e("small",{children:[An," ",Ln]})}),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(),k.showAccount="cheeaun@mastodon.social"},children:"@cheeaun"}),"."," ",e("a",{href:pa,target:"_blank",children:"Privacy Policy"}),"."]})]}),e("div",{id:"why-container",children:e("div",{class:"sections",children:[e("section",{children:[e("img",{src:ca,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:ua,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:ra,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:la,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:da,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 ma=window.alert;window.__nativeAlert||(window.__nativeAlert=ma);window.alert=function(t){t instanceof Error&&(t!=null&&t.message)&&(t=t.message),typeof t!="string"&&(t=JSON.stringify(t));const n=Bs({text:t,className:"alert",gravity:"top",position:"center",duration:1e4,offset:{y:48},onClick:()=>{n.hideToast()}});n.showToast()};window.__STATES__=k;window.__STATES_STATS__=()=>{const t=["statuses","accounts","spoilers","unfurledLinks","statusQuotes"],n={};t.forEach(a=>{n[a]=Object.keys(k[a]).length});const{statuses:i}=k,o=[];for(const a in i)document.querySelector(`[data-state-post-id~="${a}"], [data-state-post-ids~="${a}"]`)||o.push(a)};setInterval(()=>{if(!window.__IDLE__)return;const{statuses:t,unfurledLinks:n,notifications:i}=k;let o=0;const{instance:a}=z();for(const s in t){if(!window.__IDLE__)break;try{const u=document.querySelector(`[data-state-post-id~="${s}"], [data-state-post-ids~="${s}"]`),l=i.some(c=>{var d;return s===Ge((d=c.status)==null?void 0:d.id,a)});if(!u&&!l){delete k.statuses[s],delete k.statusQuotes[s];for(const c in n){const d=n[c];if(Ge(d.id,d.instance)===s){delete k.unfurledLinks[c];break}}o++}}catch{}}},15*60*1e3);setTimeout(()=>{for(const t in gt)queueMicrotask(()=>{var n,i,o,a;Array.isArray(gt[t])?(i=(n=gt[t])[0])==null||i.call(n):(a=(o=gt)[t])==null||a.call(o)})},5e3);(()=>{window.__IDLE__=!0;const t=["mousemove","mousedown","resize","keydown","touchstart","pointerdown","pointermove","wheel"],n=()=>{window.__IDLE__=!0},o=Yn(n,3e3),a=()=>{window.__IDLE__=!1,o()};t.forEach(s=>{window.addEventListener(s,a,{passive:!0,capture:!0})}),window.addEventListener("blur",n,{passive:!0}),document.documentElement.addEventListener("mouseleave",s=>{!s.relatedTarget&&!s.toElement&&n()},{passive:!0})})();const ga=/iPad|iPhone|iPod/.test(navigator.userAgent);ga&&document.addEventListener("visibilitychange",()=>{if(document.visibilityState==="visible"){const t=se.local.get("theme");let n;if(t){if(n=document.querySelector('meta[name="theme-color"][data-theme-setting="manual"]'),n){const i=n.content,o=t==="light"?n.dataset.themeLightColorTemp:n.dataset.themeDarkColorTemp;n.content=o||"",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 o=n.dataset.content,a=n.dataset.contentTemp;n.content=a||"",setTimeout(()=>{n.content=o},10)}}}});{const t=se.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(a=>{a.name=""})}const n=se.local.get("textSize");n&&document.documentElement.style.setProperty("--text-size",`${n}px`)}Hn(k,t=>{var n;for(const[i,o,a,s]of t){if(o.join(".")==="settings.shortcutsViewMode"){const u=document.getElementById("app");u&&(u.dataset.shortcutsViewMode=(n=k.shortcuts)!=null&&n.length?a:"")}o.join(".")==="settings.cloakMode"&&document.body.classList.toggle("cloak",a)}});function ba(){const[t,n]=$(!1),[i,o]=$("loading");B(()=>{const s=se.local.get("instanceURL"),u=decodeURIComponent((window.location.search.match(/code=([^&]+)/)||[,""])[1]);if(u){window.history.replaceState({},document.title,window.location.pathname||"/");const l=se.session.get("clientID"),c=se.session.get("clientSecret"),d=se.session.get("vapidKey");(async()=>{o("loading");const{access_token:h}=await Yo({instanceURL:s,client_id:l,client_secret:c,code:u}),r=As({instance:s,accessToken:h});await Promise.allSettled([nn(r,s),Ls(r,s,h,d)]),sn(),on(r),n(!0),o("default")})()}else{window.__IGNORE_GET_ACCOUNT_ERROR__=!0;const l=at();if(l){se.session.set("currentAccount",l.info.id);const{client:c}=z({account:l}),{instance:d}=c;sn(),on(c),o("loading"),(async()=>{try{await nn(c,d)}catch{}finally{n(!0),o("default")}})()}else o("default")}},[]);let a=lt();return k.currentLocation=a.pathname,B(Dt,[a,t]),/\/https?:/.test(a.pathname)?e(Oo,{}):e(A,{children:[e(ya,{isLoggedIn:t,loading:i==="loading"}),e(wa,{isLoggedIn:t}),i==="default"&&e(Vt,{children:e(Te,{path:"/:instance?/s/:id",element:e(aa,{})})}),t&&e(js,{}),t&&e(Vi,{}),e(Oi,{}),t&&e(zi,{}),e(Gs,{isLoggedIn:t}),i!=="loading"&&e(qi,{onClose:Dt}),e(Ys,{})]})}function ya({isLoggedIn:t,loading:n}){const i=lt(),o=he(()=>{const{pathname:a}=i;return!/^\/(login|welcome)/.test(a)},[i]);return e(Vt,{location:o||i,children:[e(Te,{path:"/",element:t?e(Do,{}):n?e(Ie,{id:"loader-root"}):e(Mn,{})}),e(Te,{path:"/login",element:e(Zo,{})}),e(Te,{path:"/welcome",element:e(Mn,{})})]})}function Rn(){return k.prevLocation||null}function wa({isLoggedIn:t}){const n=lt(),i=D(Rn());return he(()=>pt("/:instance/s/:id",n.pathname)||pt("/s/:id",n.pathname),[n.pathname,pt])?i.current||(i.current=Rn()):i.current=null,e(Vt,{location:i.current||n,children:[t&&e(A,{children:[e(Te,{path:"/notifications",element:e(ls,{})}),e(Te,{path:"/mentions",element:e(cs,{})}),e(Te,{path:"/following",element:e(Jt,{})}),e(Te,{path:"/b",element:e(ss,{})}),e(Te,{path:"/f",element:e(is,{})}),e(Te,{path:"/l",children:[e(Te,{index:!0,element:e(Bo,{})}),e(Te,{path:":id",element:e(as,{})})]}),e(Te,{path:"/ft",element:e(lo,{})})]}),e(Te,{path:"/:instance?/t/:hashtag",element:e(os,{})}),e(Te,{path:"/:instance?/a/:id",element:e(oo,{})}),e(Te,{path:"/:instance?/p",children:[e(Te,{index:!0,element:e(Ot,{})}),e(Te,{path:"l",element:e(Ot,{local:!0})})]}),e(Te,{path:"/:instance?/trending",element:e(us,{})}),e(Te,{path:"/:instance?/search",element:e(ds,{})})]})}"AbortSignal"in window&&(AbortSignal.timeout=AbortSignal.timeout||(t=>{const n=new AbortController;return setTimeout(()=>n.abort(),t),n.signal}));qs(e(zs,{children:e(ba,{})}),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-9vVntYq7.js.map diff --git a/assets/main-9vVntYq7.js.map b/assets/main-9vVntYq7.js.map deleted file mode 100644 index 9f06731..0000000 --- a/assets/main-9vVntYq7.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"main-9vVntYq7.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/components/list-add-edit.jsx","../../src/components/account-info.jsx","../../src/components/account-sheet.jsx","../../src/components/drafts.jsx","../../src/utils/relationships.js","../../src/components/generic-accounts.jsx","../../src/components/media-alt-modal.jsx","../../src/utils/color-utils.js","../../src/components/media-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/pages/favourites.jsx","../../src/pages/followed-hashtags.jsx","../../src/pages/following.jsx","../../src/pages/hashtag.jsx","../../src/pages/list.jsx","../../src/pages/mentions.jsx","../../src/utils/group-notifications.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';\n\nimport openCompose from '../utils/open-compose';\nimport states from '../utils/states';\n\nimport Icon from './icon';\n\nexport default function ComposeButton() {\n function handleButton(e) {\n if (e.shiftKey) {\n const newWin = openCompose();\n\n if (!newWin) {\n states.showCompose = true;\n }\n } else {\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","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+?',\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: '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';\n\nfunction Accounts({ onClose }) {\n const { masto } = api();\n // Accounts\n const accounts = store.local.getJSON('accounts');\n const currentAccount = store.session.get('currentAccount');\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 store.session.set('currentAccount', 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 = [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} = 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 {!!IMG_ALT_API_URL && (\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
  • \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 [allowNofitications, 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 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 const values = Object.fromEntries(new FormData(pushFormRef.current));\n const allowNofitications = !!values['policy-allow'];\n const params = {\n policy: values.policy,\n data: {\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 = previousPolicyRef.current !== params.policy;\n\n console.log('PN Form', { values, allowNofitications, params });\n\n if (allowNofitications && 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 }}\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 { useEffect, useRef, useState } from 'preact/hooks';\n\nimport { api } from '../utils/api';\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 } 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 } 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 { Menu, MenuDivider, MenuItem, SubMenu } from '@szhsin/react-menu';\nimport {\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from 'preact/hooks';\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 niceDateTime from '../utils/nice-date-time';\nimport pmem from '../utils/pmem';\nimport shortenNumber from '../utils/shorten-number';\nimport showToast from '../utils/show-toast';\nimport states, { hideAllModals } from '../utils/states';\nimport store from '../utils/store';\nimport { updateAccount } from '../utils/store-utils';\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 Modal from './modal';\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 } = 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(\n () => id === store.session.get('currentAccount'),\n [id],\n );\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 = 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 const familiarFollowers = await masto.v1.accounts.familiarFollowers.fetch(\n {\n id: [id],\n },\n );\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 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 = 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.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 \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 heading: 'Followers',\n fetchAccounts: fetchFollowers,\n instance,\n excludeRelationshipAttrs: isSelf\n ? ['followedBy']\n : [],\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 };\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