most-box 0.2.2 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/admin/index.html +0 -0
- package/out/app/index.html +0 -0
- package/out/assets/{AppShell-BOtfY12t.js → AppShell-B1U4lDqV.js} +1 -1
- package/out/assets/{FilePreviewOverlay-C5qK9HAE.js → FilePreviewOverlay-Cme4vUhr.js} +1 -1
- package/out/assets/{LanguageToggle-Di5b88mK.js → LanguageToggle-CBpXWdO9.js} +1 -1
- package/out/assets/{MarketingHeader-BOytKcCc.js → MarketingHeader-CkcBATx2.js} +1 -1
- package/out/assets/{MarketingLayout-B8m1Q7Pa.js → MarketingLayout-mQV6ciYc.js} +1 -1
- package/out/assets/{MarketingThemeToggle-C6fggkl7.js → MarketingThemeToggle-DHVvLtms.js} +1 -1
- package/out/assets/{MilkdownEditor-Cfze75zl.js → MilkdownEditor-WdGJyEa8.js} +1 -1
- package/out/assets/{OpenSidebarButton-DDuALgJ2.js → OpenSidebarButton-CtsDYSq0.js} +1 -1
- package/out/assets/{SidebarAccount-bo1ypzrJ.js → SidebarAccount-4NFTcAF7.js} +1 -1
- package/out/assets/{downloadValidation-CUvbvj9f.js → downloadValidation-DS9_BV-n.js} +1 -1
- package/out/assets/index-BJ7E8LJN.js +31 -0
- package/out/assets/{index.lazy-Bu93oGzJ.js → index.lazy-B5hOQuoO.js} +2 -2
- package/out/assets/{index.lazy-DK7R297q.js → index.lazy-B9ligvAg.js} +1 -1
- package/out/assets/{index.lazy-CIx8ist6.js → index.lazy-BZ7nMBcY.js} +1 -1
- package/out/assets/{index.lazy-v7nBJ-sF.js → index.lazy-C-2BI6Ew.js} +1 -1
- package/out/assets/{index.lazy-BTndBeBF.js → index.lazy-C3z-lGsL.js} +1 -1
- package/out/assets/{index.lazy-0Njp0U6I.js → index.lazy-Cda9sU_h.js} +1 -1
- package/out/assets/{index.lazy-Bq39jYTl.js → index.lazy-D5ybxeOu.js} +1 -1
- package/out/assets/{index.lazy-Vnvz-t7T.js → index.lazy-DMZi3gid.js} +1 -1
- package/out/assets/{index.lazy-DejOniAm.js → index.lazy-DSjaivix.js} +1 -1
- package/out/assets/{index.lazy-DpNIiSXF.js → index.lazy-Dvgt53xN.js} +1 -1
- package/out/assets/{index.lazy-DVOcrcEB.js → index.lazy-Dvo4Ncqe.js} +1 -1
- package/out/assets/{index.lazy-DfsgyiMN.js → index.lazy-DwKnzBXo.js} +1 -1
- package/out/assets/{index.lazy-BvdBwgHx.js → index.lazy-GQILyi6o.js} +1 -1
- package/out/assets/{mp-DvFTsIL9.js → mp-DYPYks13.js} +1 -1
- package/out/assets/{useChannelMessages-46C52EyL.js → useChannelMessages-qJTlBnzX.js} +1 -1
- package/out/assets/{useGameRoom-BtxPpfck.js → useGameRoom-C9hu7Cez.js} +1 -1
- package/out/chat/index.html +0 -0
- package/out/chat/join/index.html +0 -0
- package/out/download/index.html +2 -2
- package/out/game/gandengyan/index.html +0 -0
- package/out/game/index.html +0 -0
- package/out/game/zhajinhua/index.html +0 -0
- package/out/index.html +2 -2
- package/out/note/index.html +0 -0
- package/out/ping/index.html +2 -2
- package/out/profile/index.html +0 -0
- package/out/web3/index.html +0 -0
- package/package.json +1 -1
- package/server/src/utils/api.js +27 -1
- package/out/assets/index-CrAXrmfP.js +0 -31
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,o as t,t as n}from"./jsx-runtime-Bt-cYkS5.js";import{t as r,x as i,y as a}from"./userStore-C4vdYsQp.js";import{t as o}from"./arrow-right-RldN7Rwi.js";import{n as s,r as c}from"./LanguageToggle-Di5b88mK.js";import{t as l}from"./circle-alert-BQoSDxUe.js";import{t as u}from"./download-Bg-OdoxM.js";import{n as d,t as ee}from"./plus-H2i2mspM.js";import{t as f}from"./file-text-DG1orIkZ.js";import{a as p,i as te,n as ne,o as m,r as re,t as ie}from"./FilePreviewOverlay-C5qK9HAE.js";import{r as ae,t as oe}from"./AppShell-BOtfY12t.js";import{t as se}from"./message-square-DaQH7q-P.js";import{t as h}from"./music-DaFvU2DL.js";import{t as ce}from"./OpenSidebarButton-DDuALgJ2.js";import{t as le}from"./search-ncblG-zw.js";import{t as g}from"./trash-2-CNpsqYc1.js";import{B as _,F as ue,L as de,M as fe,N as pe,_ as v,c as me,f as he,h as ge,m as _e,n as ve,o as y,p as ye,v as be,x as xe}from"./index-CrAXrmfP.js";import{t as Se}from"./SidebarAccount-bo1ypzrJ.js";import{n as Ce,r as we,t as Te}from"./downloadValidation-CUvbvj9f.js";import{t as Ee}from"./LogoIcon-B2fFe0l1.js";import{t as De}from"./useChannelMessages-46C52EyL.js";var Oe=a(`calendar`,[[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`,key:`1hopcy`}],[`path`,{d:`M3 10h18`,key:`8toen8`}]]),ke=a(`hash`,[[`line`,{x1:`4`,x2:`20`,y1:`9`,y2:`9`,key:`4lhtct`}],[`line`,{x1:`4`,x2:`20`,y1:`15`,y2:`15`,key:`vyu0kd`}],[`line`,{x1:`10`,x2:`8`,y1:`3`,y2:`21`,key:`1ggp8o`}],[`line`,{x1:`16`,x2:`14`,y1:`3`,y2:`21`,key:`weycgp`}]]),b=a(`pin`,[[`path`,{d:`M12 17v5`,key:`bb1du9`}],[`path`,{d:`M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z`,key:`1nkz8b`}]]),Ae=a(`pin-off`,[[`path`,{d:`M12 17v5`,key:`bb1du9`}],[`path`,{d:`M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89`,key:`znwnzq`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11`,key:`c9qhm2`}]]),je=a(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),x=t(e(),1),S=n();function Me(e){return!e||e<=0?``:e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:e<1024*1024*1024?`${(e/(1024*1024)).toFixed(1)} MB`:`${(e/(1024*1024*1024)).toFixed(2)} GB`}function Ne(e){let t=String(e||``).split(`/`);return t[t.length-1]||e}function C(e){return e===`image`?(0,S.jsx)(p,{size:20}):e===`video`?(0,S.jsx)(m,{size:20}):e===`audio`?(0,S.jsx)(h,{size:20}):(0,S.jsx)(f,{size:20})}function Pe({attachment:e,status:t=`idle`,pending:n=!1,onOpen:r}){let{t:i}=_(),a=t===`checking`,o=[`ui-file-action`,`chat-attachment-action`,t===`error`?`error`:``,t===`available`?`available`:``].filter(Boolean).join(` `),s=Me(e.size)||i(`chat.mostboxFile`);return(0,S.jsxs)(`button`,{type:`button`,className:`ui-file-card chat-attachment-card`,onClick:()=>r?.(e),disabled:n||a,title:e.link,translate:`no`,children:[(0,S.jsx)(`span`,{className:`ui-file-icon chat-attachment-icon ${e.kind}`,children:a?(0,S.jsx)(te,{size:20,className:`ui-spinner chat-attachment-spinner`}):C(e.kind)}),(0,S.jsxs)(`span`,{className:`ui-file-info chat-attachment-info`,children:[(0,S.jsx)(`span`,{className:`ui-file-name chat-attachment-name`,translate:`no`,children:Ne(e.fileName)}),(0,S.jsx)(`span`,{className:`ui-file-meta chat-attachment-meta`,translate:`yes`,children:n?i(`chat.sending`):s})]}),(0,S.jsx)(`span`,{className:o,translate:`yes`,children:a?i(`chat.checking`):t===`available`?(0,S.jsx)(ue,{size:16}):t===`error`?(0,S.jsx)(l,{size:17}):(0,S.jsx)(u,{size:16})})]})}var Fe=[{key:`image`,labelKey:`chat.attachment.image`,accept:`image/*`,icon:p},{key:`video`,labelKey:`chat.attachment.video`,accept:`video/*`,icon:m},{key:`file`,labelKey:`chat.attachment.file`,accept:``,icon:f}],w=Fe.map(e=>e.accept).join(`,`);function Ie({children:e}){return(0,S.jsx)(`div`,{className:`message-bubble`,translate:`no`,children:e})}function Le({children:e}){return(0,S.jsx)(`div`,{className:`message-bubble has-attachment`,children:e})}function Re({variant:e,pending:t=!1,avatarSrc:n,author:r,time:i,children:a}){return(0,S.jsxs)(`div`,{className:[`chat-message`,e,t?`pending`:``].filter(Boolean).join(` `),children:[(0,S.jsx)(`img`,{className:`msg-avatar`,src:n,alt:`avatar`}),(0,S.jsxs)(`div`,{className:`msg-content`,children:[(0,S.jsx)(`span`,{className:`message-author`,translate:`no`,children:r}),a,(0,S.jsx)(`span`,{className:`message-time`,children:i})]})]})}function ze({active:e=!1,pinned:t=!1,unread:n=!1,title:r,onSelect:i,onTogglePin:a,onRename:o,onLeave:s}){let{t:c}=_(),l=!!(a||o||s);return(0,S.jsxs)(`div`,{className:[`sidebar-nav-btn`,e?`active`:``,t?`pinned`:``,n?`unread`:``].filter(Boolean).join(` `),onClick:i,role:`button`,tabIndex:0,onKeyDown:e=>{e.target===e.currentTarget&&e.key===`Enter`&&i?.()},children:[(0,S.jsxs)(`span`,{className:`chat-channel-icon-wrap`,children:[(0,S.jsx)(se,{size:16}),n&&(0,S.jsx)(`span`,{className:`chat-channel-unread-dot`,title:c(`chat.unread`),"aria-hidden":`true`})]}),(0,S.jsx)(`span`,{className:`chat-channel-title`,children:(0,S.jsx)(`span`,{className:`chat-channel-title-text`,translate:`no`,children:r})}),l&&(0,S.jsx)(he,{ariaLabel:c(`chat.channelActions`),className:`channel-actions-anchor`,placement:`bottom-end`,items:[{key:`pin`,label:c(t?`chat.unpin`:`chat.pin`),icon:t?(0,S.jsx)(Ae,{size:16}):(0,S.jsx)(b,{size:16}),onSelect:()=>a?.()},{key:`rename`,label:c(`chat.rename`),icon:(0,S.jsx)(re,{size:16}),onSelect:()=>o?.()},{key:`delete`,label:c(`chat.delete`),icon:(0,S.jsx)(g,{size:16}),onSelect:()=>s?.()}],renderTrigger:e=>(0,S.jsx)(`button`,{...e,className:`leave-channel-btn channel-actions-trigger`,title:c(`common.moreActions`),"aria-label":c(`common.moreActions`),children:(0,S.jsx)(d,{size:16})})})]})}function Be({members:e,isLoading:t=!1}){let{t:n}=_();return t&&e.length===0?(0,S.jsx)(`div`,{className:`ui-empty-inline channel-members-empty`,children:n(`chat.loadingMembers`)}):e.length===0?(0,S.jsx)(`div`,{className:`ui-empty-inline channel-members-empty`,children:n(`chat.noMembers`)}):(0,S.jsx)(`div`,{className:`channel-members-grid`,children:e.map(e=>(0,S.jsxs)(`div`,{className:`channel-member`,children:[(0,S.jsx)(`img`,{className:`channel-member-avatar`,src:e.avatarSrc,alt:`avatar`}),(0,S.jsx)(`span`,{className:`channel-member-name`,translate:`no`,children:e.name})]},e.id))})}function Ve({message:e,placeholder:t,disabled:n=!1,isPublishingAttachment:r=!1,attachmentButtonTitle:i,attachmentInputRef:a,onMessageChange:s,onSend:c,onSelectAttachmentFiles:l}){let{t:u}=_(),d=n||r,f=n||!e.trim(),p=i||u(`chat.attachment.add`);function ne(e,t){t?.(e.currentTarget.files),e.currentTarget.value=``}function m(t){t.key===`Enter`&&e.trim()&&c()}function re(e){if(d)return;let t=a?.current;t&&(t.accept=e,t.click())}return(0,S.jsxs)(`div`,{className:`chat-input-area`,children:[(0,S.jsx)(`input`,{ref:a,type:`file`,accept:w,className:`chat-file-input`,onChange:e=>ne(e,l)}),(0,S.jsx)(he,{ariaLabel:u(`chat.attachmentType`),placement:`top-start`,disabled:d,items:Fe.map(e=>{let t=e.icon;return{key:e.key,label:u(e.labelKey),icon:(0,S.jsx)(t,{size:16}),onSelect:()=>re(e.accept)}}),renderTrigger:e=>(0,S.jsx)(`button`,{...e,className:`btn btn-circle chat-tool-btn`,"aria-label":p,children:r?(0,S.jsx)(te,{size:18,className:`ui-spinner chat-attachment-spinner`}):(0,S.jsx)(ee,{size:18})})}),(0,S.jsx)(`input`,{type:`text`,className:`input input-pill`,placeholder:t,value:e,disabled:n,onChange:e=>s(e.target.value),onKeyDown:m}),(0,S.jsx)(`button`,{type:`button`,className:`btn btn-circle btn-primary send-btn`,onClick:c,disabled:f,title:u(`chat.sendMessage`),children:(0,S.jsx)(o,{size:18})})]})}var He=`mostbox.chat.lastReadAt`;function T(e){return Date.parse(e?.lastMessageAt||``)||Date.parse(e?.createdAt||``)||0}function Ue(e){let t=String(e||``).trim().toLowerCase();return t?`${He}:${t}`:``}function E(e,t=Date.now()){let n=Number(e);return Math.max(0,Math.floor(Number.isFinite(n)&&n>0?n:t))}function We(e,t=D()){if(!e||!t)return{};try{let n=t.getItem(e);if(!n)return{};let r=JSON.parse(n);return!r||typeof r!=`object`?{}:Object.entries(r).reduce((e,[t,n])=>{let r=Number(n);return t&&Number.isFinite(r)&&r>=0&&(e[t]=r),e},{})}catch{return{}}}function Ge(e,t,n=D()){if(!(!e||!n))try{n.setItem(e,JSON.stringify(t))}catch{}}function Ke(e,t,n=Date.now(),r=Date.now()){if(!t)return{changed:!1,value:e};let i=E(n,r);return(e[t]||0)>=i?{changed:!1,value:e}:{changed:!0,value:{...e,[t]:i}}}function qe(e,t,n=Date.now()){let r=!1,i={...e};for(let e of t){let t=e?.channelKey||e?.name;!t||i[t]!==void 0||(i[t]=E(T(e),n),r=!0)}return{changed:r,value:r?i:e}}function Je(e,{channelName:t,messageTime:n,activeChannelName:r=``,messageAuthor:i=``,userAddress:a=``,now:o=Date.now()}){if(!t)return{changed:!1,notify:!1,value:e};let s=E(n,o),c=t===r,l=String(i||``).toLowerCase()===String(a||``).toLowerCase();if(c||l)return{...Ke(e,t,s,o),notify:!1};let u=e[t]||0;if(u<s)return{changed:!1,notify:!0,value:e};let d=Math.max(0,s-1);return u===d?{changed:!1,notify:!0,value:e}:{changed:!0,notify:!0,value:{...e,[t]:d}}}function Ye(e,t){let n=e?.channelKey||e?.name;return T(e)>(t[n]||0)}function D(){if(!(typeof window>`u`))return window.localStorage}var Xe=3,Ze=30,Qe=/^[a-zA-Z0-9_-]+$/,$e=1e4,et=12e3,tt=1200;function O(e){return e?.channelKey||e?.name||``}function k(e){return e?.channelId||e?.name||``}function A(e){return e?.remark||k(e)}var nt=`chat-file`;function rt(e,t){return e.type.startsWith(`image/`)?`image`:e.type.startsWith(`video/`)?`video`:e.type.startsWith(`audio/`)?`audio`:e.type.startsWith(`text/`)?`text`:ne(t)}function it(e){return e?`${e.slice(0,6)}...${e.slice(-4)}`:`Unknown`}function at(e){return/#[a-fA-F0-9]{4}$/.test(String(e||``).trim())}function ot(){if(typeof window>`u`)return;let e=window;return e.AudioContext||e.webkitAudioContext}function st(){let e=v(e=>e.isDarkMode),t=v(e=>e.setIsDarkMode),n=v(e=>e.hasBackend),i=v(e=>e.addToast),a=v(e=>e.openConnectModal),o=r(e=>e.identity),l=r(e=>e.openLoginModal),u=fe(),[d,f]=(0,x.useState)([]),[p,m]=(0,x.useState)(null),[h,g]=(0,x.useState)(``),[ue,he]=(0,x.useState)(``),[b,Ae]=(0,x.useState)(``),[Me,C]=ae(!1),[Fe,w]=(0,x.useState)(``),[He,E]=(0,x.useState)(!1),[D,st]=(0,x.useState)(!1),[ct,j]=ae(!1),[lt,M]=(0,x.useState)(null),[N,P]=(0,x.useState)(null),[ut,F]=(0,x.useState)(!1),[dt,ft]=(0,x.useState)(``),[pt,mt]=(0,x.useState)(!1),[ht,gt]=(0,x.useState)(null),[_t,vt]=(0,x.useState)(!1),[I,L]=(0,x.useState)({}),[R,z]=(0,x.useState)(null),[yt,bt]=(0,x.useState)([]),[xt,St]=(0,x.useState)(!1),[Ct,wt]=(0,x.useState)(!1),[Tt,Et]=(0,x.useState)(!1),[Dt,B]=(0,x.useState)({}),V=o?.identity===`user`,Ot=V&&!Tt?o.logo:``,kt=(0,x.useRef)(null),At=(0,x.useRef)(null),jt=(0,x.useRef)(``),H=(0,x.useRef)(null),Mt=(0,x.useRef)(!1),Nt=(0,x.useRef)(0),U=(0,x.useRef)(new Map),W=(0,x.useRef)(new Set),G=n===!0,{t:K,compareStrings:Pt,formatDate:Ft,formatTime:It}=_(),q=(0,x.useCallback)(async(e,t)=>{i(await xe(e,t),`error`)},[i]),J=(0,x.useMemo)(()=>Ue(o?.address),[o?.address]),Lt=(0,x.useCallback)((e,t=Date.now())=>{e&&B(n=>{let r=Ke(n,e,t);return r.changed?(Ge(J,r.value),r.value):n})},[J]),Y=(0,x.useCallback)(()=>{if(Mt.current||typeof window>`u`)return;let e=ot();if(e)try{let t=H.current||new e;H.current=t,t.state===`suspended`&&t.resume().catch(()=>{}),Mt.current=!0}catch{}},[]),Rt=(0,x.useCallback)(()=>{if(!Mt.current)return;let e=Date.now();if(e-Nt.current<tt)return;Nt.current=e;let t=ot();if(t)try{let e=H.current||new t;if(H.current=e,e.state===`suspended`){e.resume().catch(()=>{});return}let n=e.createGain();n.gain.setValueAtTime(1e-4,e.currentTime),n.gain.exponentialRampToValueAtTime(.08,e.currentTime+.015),n.gain.exponentialRampToValueAtTime(1e-4,e.currentTime+.18),n.connect(e.destination),[740,980].forEach((t,r)=>{let i=e.createOscillator();i.type=`sine`,i.frequency.setValueAtTime(t,e.currentTime),i.connect(n),i.start(e.currentTime+r*.035),i.stop(e.currentTime+.16+r*.035)})}catch{}},[]),X=(0,x.useCallback)(async(e=O(p))=>{if(!e||!G||!o){bt([]);return}St(!0);try{bt(await y.getChannelMembers(e))}catch(e){bt([]),await q(e,K(`chat.error.members`))}finally{St(!1)}},[p,G,q,K,o]);function zt(e,t){switch(e){case`channel:message`:{let e=t?.channelKey||t?.channel,n=t?.message,r=Number(n?.timestamp)||Date.now();if(e){f(t=>t.map(t=>O(t)===e?{...t,lastMessageAt:new Date(r).toISOString()}:t));let t=e===jt.current;B(i=>{let a=Je(i,{channelName:e,messageTime:r,activeChannelName:t?e:``,messageAuthor:n?.author,userAddress:o?.address});return a.changed&&Ge(J,a.value),a.notify&&Rt(),a.changed?a.value:i})}break}case`channel:peer:online`:case`channel:peer:offline`:p&&y.getChannelPeers(O(p)).catch(e=>{console.warn(`[Chat] Failed to fetch peers on event:`,e.message)});break;case`channel:joined`:case`channel:left`:$(),X();break;case`user:metadata:updated`:t?.scope===`channels`&&($(),X(jt.current));break;case`download:success`:{let e=U.current.get(t.taskId);e&&(U.current.delete(t.taskId),W.current.delete(e.cid),L(t=>({...t,[e.cid]:{status:`available`}})),i(K(`chat.attachment.downloadCompleted`,{fileName:t.fileName||Ne(e.fileName)}),`success`),Kt(e,t.fileName||e.fileName));break}case`download:error`:case`download:cancelled`:{let n=U.current.get(t.taskId);n&&(U.current.delete(t.taskId),W.current.delete(n.cid),L(r=>({...r,[n.cid]:{status:`error`,message:e===`download:cancelled`?K(`chat.attachment.downloadCancelled`):t.error||K(`chat.attachment.downloadFailed`)}})),i(e===`download:cancelled`?K(`chat.attachment.downloadCancelled`):t.error||K(`chat.attachment.downloadFailed`),`error`));break}}}let Bt=(0,x.useMemo)(()=>d.map(e=>O(e)),[d]),{clearMessages:Vt,messages:Ht,sendMessage:Ut,syncMessages:Wt}=De({isReady:G,enabled:!!o,channelName:O(p),extraSubscribedChannelNames:Bt,peerId:Fe,waitForPeerId:!0,onSyncError:e=>q(e,K(`chat.error.messages`)),onSocketEvent:zt,onReconnect:$});function Z(){return G?!0:(a(),!1)}function Q(){return o?!0:(l(),!1)}(0,x.useEffect)(()=>{let e=()=>{g(new URLSearchParams(window.location.search).get(`channel`)||``)};return e(),window.addEventListener(`popstate`,e),()=>window.removeEventListener(`popstate`,e)},[]),(0,x.useEffect)(()=>{o&&g(new URLSearchParams(window.location.search).get(`channel`)||``)},[o?.address]),(0,x.useEffect)(()=>{Et(!1)},[o?.logo]),(0,x.useEffect)(()=>{jt.current=O(p)},[p]),(0,x.useEffect)(()=>{B(We(J))},[J]),(0,x.useEffect)(()=>{!J||d.length===0||B(e=>{let t=qe(e,d);return t.changed&&Ge(J,t.value),t.changed?t.value:e})},[J,d]),(0,x.useEffect)(()=>(window.addEventListener(`pointerdown`,Y,{passive:!0}),window.addEventListener(`keydown`,Y),()=>{window.removeEventListener(`pointerdown`,Y),window.removeEventListener(`keydown`,Y)}),[Y]),(0,x.useEffect)(()=>()=>{H.current?.close().catch(()=>{}),H.current=null,Mt.current=!1},[]),(0,x.useEffect)(()=>{kt.current?.scrollIntoView({behavior:`smooth`})},[Ht]),(0,x.useEffect)(()=>{if(!G){w(``);return}be.get(`/api/node-id`).json().then(e=>w(e.id)).catch(e=>{console.warn(`[Chat] Failed to fetch node ID:`,e.message),q(e,K(`chat.error.nodeId`))})},[G,q,K]),(0,x.useEffect)(()=>{G&&o&&$()},[n,G,o?.address]),(0,x.useEffect)(()=>{if(p&&G){let e=O(p);Wt(e,{replace:!0}),y.getChannelPeers(e).catch(()=>{}),X(e)}},[p,n,G,X,Wt]),(0,x.useEffect)(()=>{!ut||!p||X(O(p))},[p,X,ut]),(0,x.useEffect)(()=>{if(h&&d.length>0){let e=d.find(e=>O(e)===h)||d.find(e=>k(e)===h);e&&(!p||O(p)!==O(e))?Xt(e):e&&p&&O(p)===O(e)&&(p.createdAt!==e.createdAt||p.coreKey!==e.coreKey||p.lastMessageAt!==e.lastMessageAt||p.pinned!==e.pinned||p.remark!==e.remark||p.type!==e.type)&&m(e)}},[d,p,h]),(0,x.useEffect)(()=>{o||(f([]),m(null),g(``),P(null),Vt(),Ae(``),w(``),F(!1),gt(null),bt([]),L({}),B({}),W.current.clear(),U.current.clear())},[Vt,o?.address]);function Gt(e){return e.length<Xe?K(`chat.validation.nameMin`,{count:Xe}):e.length>Ze?K(`chat.validation.nameMax`,{count:Ze}):e.includes(`.`)?K(`chat.validation.dotReserved`):Qe.test(e)?``:K(`chat.validation.allowedChars`)}async function $(){if(G)try{f(await y.getChannels())}catch(e){f([]),await q(e,K(`chat.error.channelList`))}}function Kt(e,t=e.fileName){let n=ne(t);gt({cid:e.cid,fileName:t,subtype:n===`file`?e.kind:n})}async function qt(e){let t=Te(e.link,K);if(t)return L(n=>({...n,[e.cid]:{status:`error`,message:t}})),!1;try{L(t=>({...t,[e.cid]:{status:`checking`}}));let t=await Ce.checkDownload(e.link,{timeout:$e,requestTimeout:et});return L(n=>({...n,[e.cid]:{status:`available`,message:t.alreadyExists?K(`chat.attachment.localAvailable`):K(`chat.attachment.previewAvailable`)}})),!0}catch(t){let n=await we(t);return L(t=>({...t,[e.cid]:{status:`error`,message:n}})),!1}}async function Jt(e){z(null),await qt(e)&&await Yt(e)}async function Yt(e){if(!W.current.has(e.cid)){W.current.add(e.cid),L(t=>({...t,[e.cid]:{status:`available`}}));try{let t=await Ce.downloadFile(e.link);if(t.alreadyExists||t.fileName){W.current.delete(e.cid),L(t=>({...t,[e.cid]:{status:`available`}})),Kt({...e,fileName:t.fileName||e.fileName},t.fileName||e.fileName);return}t.taskId&&(U.current.set(t.taskId,e),i(K(`chat.attachment.downloadStarted`),`success`))}catch(t){let n=await we(t);W.current.delete(e.cid),L(t=>({...t,[e.cid]:{status:`error`,message:n}}))}}}async function Xt(e){if(!Q()||!Z())return;let t=O(e);Lt(t,Math.max(T(e),Date.now())),m(e),g(t),window.history.pushState({},``,`?channel=${encodeURIComponent(t)}`)}async function Zt(e,t){if(t&&t.stopPropagation(),Q()&&Z()&&!D){st(!0);try{if(await y.leaveChannel(e),O(p)===e){m(null),g(``),Vt();let e=new URL(window.location.href);e.searchParams.delete(`channel`),window.history.pushState({},``,e.pathname)}$(),j.close(),M(null)}catch(e){await q(e,K(`chat.error.leave`))}finally{st(!1)}}}async function Qt(e){if(!Q()||!Z())return;let t=!e.pinned,n=O(e);try{let e=await y.setChannelPinned(n,t);f(t=>t.map(t=>O(t)===n?{...t,pinned:e.pinned}:t)),m(t=>t&&O(t)===n?{...t,pinned:e.pinned}:t)}catch(e){await q(e,K(t?`chat.error.pin`:`chat.error.unpin`))}}async function $t(e){let t=e.trim();if(!t||He)return;let n=Gt(t);if(n){i(n,`error`);return}if(Q()&&Z()){E(!0);try{let e=await y.createChannel(t,`public`,ve(o)),n=e.channelKey||e.key||e.name||t,r=d.find(e=>O(e)===n),i={...r,name:e.name||t,channelId:e.channelId||e.name||t,channelKey:e.channelKey||e.key||r?.channelKey,type:e.type||r?.type||`public`,createdAt:e.createdAt||r?.createdAt,coreKey:e.coreKey||e.key||r?.coreKey,localWriterCoreKey:e.localWriterCoreKey||r?.localWriterCoreKey,writerCoreKeys:e.writerCoreKeys||r?.writerCoreKeys,remark:e.remark||r?.remark},a=O(i);f(e=>e.some(e=>O(e)===a)?e.map(e=>O(e)===a?{...e,...i}:e):[...e,i]),C.close(),await Xt(i),X(a),$()}catch(e){await q(e,K(`chat.error.join`))}finally{E(!1)}}}async function en(e,t){if(!e.trim()||!p||!Q()||!Z())return!1;let n=e.trim(),r=O(p);try{let e=await Ut({channelName:r,content:n,attachment:t});return f(t=>t.map(t=>O(t)===r?{...t,lastMessageAt:new Date(Number(e?.timestamp)||Date.now()).toISOString()}:t)),e&&Lt(r,Number(e.timestamp)||Date.now()),X(r),!0}catch(e){return await q(e,K(`chat.error.send`)),!1}}async function tn(){if(!b.trim())return;let e=b.trim();Ae(``),await en(e)}function nn(e,t){return`${nt}/${e}/${t}`}async function rn(e){if(!(!e||e.length===0||!p)&&Q()&&Z()&&!_t){vt(!0);try{for(let t of Array.from(e)){let e=nn(k(p),t.name),n=await Ce.publishFile(t,e),r=n.fileName||e,a=n.link||`most://${n.cid}?filename=${encodeURIComponent(r)}`;await en(a,{kind:rt(t,r),cid:n.cid,fileName:r,link:a,mimeType:t.type||void 0,size:t.size})&&i(K(`chat.attachment.published`,{fileName:Ne(r)}),`success`)}}catch(e){await q(e,K(`chat.error.attachmentSend`))}finally{vt(!1)}}}async function an(e){if(!Q()||!Z())return;let t=I[e.cid];if(t?.status!==`checking`){if(t?.status===`error`){z(e);return}if(t?.status!==`available`){await qt(e)&&await Yt(e);return}await Yt(e)}}async function on(e,t){if(!Q()||!Z())return;let n=O(e),r=await y.setChannelRemark(n,t);return f(e=>e.map(e=>O(e)===n?{...e,remark:r.remark}:e)),m(e=>e&&O(e)===n?{...e,remark:r.remark}:e),r.remark}async function sn(){if(p)try{await on(p,dt)}catch(e){await q(e,K(`chat.error.remark`))}}async function cn(e){if(!(!N||pt)){mt(!0);try{await on(N,e),P(null)}catch(e){await q(e,K(`chat.error.rename`))}finally{mt(!1)}}}function ln(e){if(!e.attachment)return(0,S.jsx)(Ie,{children:e.content});let t=e.attachment,n=I[t.cid]?.status;return(0,S.jsx)(Le,{children:(0,S.jsx)(Pe,{attachment:t,status:n,pending:e.pending,onOpen:an})})}function un(e,t){let n=String(e||``).trim();return n?Ct?at(n)?n:t?`${n}#${t.slice(-4).toUpperCase()}`:n:n.replace(/#[a-fA-F0-9]{4}$/,``):it(t)}function dn(){return(0,S.jsx)(Be,{isLoading:xt,members:yt.map(e=>({id:e.address,name:un(e.displayName,e.address),avatarSrc:me(e.address,e.avatar)}))})}let fn=V&&!!h&&!p,pn=p?(0,S.jsx)(`h2`,{className:`header-title`,translate:`no`,children:A(p)}):(0,S.jsx)(`h2`,{className:`header-title`,children:K(`chat.title`)}),mn=ue.trim().toLowerCase(),hn=(0,x.useMemo)(()=>[...d].sort((e,t)=>{let n=Number(!!t.pinned)-Number(!!e.pinned);if(n!==0)return n;let r=T(t)-T(e);return r===0?Pt(A(e),A(t)):r}),[d,Pt]),gn=mn?hn.filter(e=>[A(e),k(e),O(e)].some(e=>e.toLowerCase().includes(mn))):hn;return(0,S.jsxs)(oe,{className:`chat-app-layout`,defaultHide:V,sidebar:({closeSidebar:e})=>(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(`button`,{type:`button`,className:`sidebar-header sidebar-header-link`,onClick:u,children:[(0,S.jsx)(de,{size:18}),(0,S.jsx)(`h1`,{children:`MOST PEOPLE`})]}),(0,S.jsx)(`div`,{className:`chat-channel-search`,children:(0,S.jsxs)(`div`,{className:`ui-input-control`,children:[(0,S.jsx)(le,{className:`ui-input-icon`,size:15}),(0,S.jsx)(`input`,{type:`search`,className:`input input-compact`,placeholder:K(`chat.search.placeholder`),value:ue,onChange:e=>he(e.target.value),"aria-label":K(`chat.search.placeholder`)})]})}),(0,S.jsx)(`nav`,{className:`sidebar-nav`,children:d.length===0?(0,S.jsx)(`div`,{className:`sidebar-empty-state`,children:(0,S.jsx)(`p`,{children:K(`chat.empty.noChannels`)})}):gn.length===0?(0,S.jsx)(`div`,{className:`sidebar-empty-state`,children:(0,S.jsx)(`p`,{children:K(`chat.empty.noMatches`)})}):gn.map(t=>(0,S.jsx)(ze,{active:O(p)===O(t),pinned:!!t.pinned,unread:Ye(t,Dt),title:A(t),onSelect:()=>{Xt(t),e()},onTogglePin:()=>void Qt(t),onRename:()=>P(t),onLeave:()=>{M(t),j.open()}},O(t)))}),(0,S.jsxs)(`button`,{className:`ui-action-dashed create-channel-btn`,onClick:()=>{!Q()||!Z()||C.open()},children:[(0,S.jsx)(ee,{size:16}),K(`chat.joinChannel`)]}),(0,S.jsx)(Se,{})]}),headerTitle:pn,sidebarToggleReplacement:V?(0,S.jsx)(`span`,{className:`sidebar-toggle-static-logo`,"aria-hidden":`true`,children:Ot?(0,S.jsx)(`img`,{className:`sidebar-toggle-static-logo-img`,src:Ot,alt:``,onError:()=>Et(!0)}):(0,S.jsx)(Ee,{size:18})}):void 0,headerRight:(0,S.jsxs)(`div`,{className:`header-right-actions`,children:[(0,S.jsx)(`button`,{className:`btn btn-icon`,onClick:()=>t(!e),title:K(`common.theme.toggle`),children:e?(0,S.jsx)(s,{size:16}):(0,S.jsx)(c,{size:16})}),p&&(0,S.jsx)(`button`,{className:`btn btn-icon`,onClick:()=>F(!0),title:K(`chat.channelSettings`),children:(0,S.jsx)(je,{size:16})})]}),children:[p?(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(`div`,{className:`chat-messages`,children:[Ht.length===0?(0,S.jsxs)(`div`,{className:`ui-empty-state chat-messages-empty`,children:[(0,S.jsx)(`div`,{className:`ui-empty-icon empty-icon`,children:(0,S.jsx)(se,{size:28})}),(0,S.jsx)(`p`,{children:K(`chat.empty.noMessages`)})]}):Ht.map(e=>{let t=e.author?.toLowerCase()===o?.address.toLowerCase();return(0,S.jsx)(Re,{variant:t?`self`:`other`,pending:e.pending,avatarSrc:me(e.author,e.avatar||(t?o.avatar:void 0)),author:un(e.authorName,e.author),time:It(e.timestamp),children:ln(e)},e.id||`${e.author}-${e.timestamp}`)}),(0,S.jsx)(`div`,{ref:kt})]}),(0,S.jsx)(Ve,{message:b,placeholder:K(o?`chat.composer.placeholder`:`chat.composer.signInPlaceholder`),disabled:!o,isPublishingAttachment:_t,attachmentInputRef:At,onMessageChange:Ae,onSend:tn,onSelectAttachmentFiles:e=>{rn(e)}})]}):fn?(0,S.jsxs)(`div`,{className:`ui-empty-state chat-welcome`,children:[(0,S.jsx)(`div`,{className:`ui-empty-icon ui-empty-icon-lg welcome-icon`,children:(0,S.jsx)(te,{size:36,className:`ui-spinner`})}),(0,S.jsx)(`h2`,{className:`ui-empty-title`,children:K(`chat.restoring.title`)}),(0,S.jsx)(`p`,{className:`ui-empty-desc`,children:K(`chat.restoring.desc`)})]}):(0,S.jsx)(S.Fragment,{children:(0,S.jsxs)(`div`,{className:`ui-empty-state chat-welcome`,children:[(0,S.jsx)(`div`,{className:`ui-empty-icon ui-empty-icon-lg welcome-icon`,children:(0,S.jsx)(se,{size:36})}),(0,S.jsx)(`h2`,{className:`ui-empty-title`,children:K(`chat.select.title`)}),(0,S.jsx)(`p`,{className:`ui-empty-desc`,children:K(`chat.select.desc`)}),(0,S.jsx)(ce,{label:K(`chat.openChannelList`)})]})}),Me&&(0,S.jsx)(ye,{title:K(`chat.joinChannel`),placeholder:K(`chat.join.placeholder`),confirmText:K(`chat.join.confirm`),validate:Gt,onConfirm:$t,onClose:()=>C.close(),isLoading:He,loadingText:K(`chat.join.joining`)}),N&&(0,S.jsx)(ye,{title:K(`chat.renameChannel`),placeholder:K(`chat.remark.placeholder`),defaultValue:N.remark||``,confirmText:K(`chat.remark.save`),onConfirm:cn,onClose:()=>{pt||P(null)},isLoading:pt,loadingText:K(`chat.remark.saving`),allowEmpty:!0,validate:e=>e.length>50?K(`chat.remark.tooLong`):``}),ct&<&&(0,S.jsx)(_e,{title:K(`chat.leaveChannel`),message:K(`chat.leaveConfirm`,{channel:A(lt)}),confirmText:K(D?`chat.leaving`:`chat.leaveChannel`),onConfirm:()=>Zt(O(lt),void 0),danger:!0,onClose:()=>{j.close(),M(null)}}),R&&(0,S.jsx)(ge,{onClose:()=>z(null),children:(0,S.jsxs)(`div`,{className:`confirm-modal`,onClick:e=>e.stopPropagation(),children:[(0,S.jsxs)(`div`,{className:`modal-header`,children:[(0,S.jsx)(`h3`,{children:K(`chat.attachment.noSeedsTitle`)}),(0,S.jsx)(`button`,{type:`button`,className:`btn btn-icon`,onClick:()=>z(null),"aria-label":K(`common.close`),children:(0,S.jsx)(pe,{size:18})})]}),(0,S.jsx)(`p`,{children:I[R.cid]?.message||K(`chat.attachment.noSeedsFallback`)}),(0,S.jsxs)(`div`,{className:`modal-actions`,children:[(0,S.jsx)(`button`,{type:`button`,className:`btn btn-secondary`,onClick:()=>z(null),children:K(`common.cancel`)}),(0,S.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>Jt(R),disabled:I[R.cid]?.status===`checking`,children:I[R.cid]?.status===`checking`?K(`app.checking`):K(`chat.attachment.retryCheck`)})]})]})}),ht&&(0,S.jsx)(ie,{item:ht,isBackendReady:G,getFileDownloadUrl:Ce.getFileDownloadUrl,onClose:()=>gt(null)}),ut&&p&&(0,S.jsx)(`div`,{className:`channel-detail-overlay`,onClick:()=>F(!1),children:(0,S.jsxs)(`div`,{className:`channel-detail-drawer`,onClick:e=>e.stopPropagation(),children:[(0,S.jsxs)(`div`,{className:`channel-detail-header`,children:[(0,S.jsx)(`h3`,{children:K(`chat.details.title`)}),(0,S.jsx)(`button`,{className:`btn btn-icon`,onClick:()=>F(!1),children:(0,S.jsx)(pe,{size:18})})]}),(0,S.jsxs)(`div`,{className:`channel-detail-body`,children:[(0,S.jsxs)(`div`,{className:`channel-detail-section channel-members-section`,children:[(0,S.jsx)(`div`,{className:`channel-detail-label`,children:(0,S.jsx)(`span`,{children:K(`chat.details.members`,{count:yt.length})})}),dn()]}),!V&&(0,S.jsx)(`div`,{className:`channel-detail-section`,children:(0,S.jsxs)(`label`,{className:`setting-switch`,children:[(0,S.jsx)(`span`,{children:K(`chat.details.showAddressSuffix`)}),(0,S.jsx)(`input`,{type:`checkbox`,checked:Ct,onChange:e=>wt(e.target.checked)})]})}),!V&&(0,S.jsxs)(`div`,{className:`channel-detail-section`,children:[(0,S.jsxs)(`div`,{className:`channel-detail-label`,children:[(0,S.jsx)(ke,{size:14}),(0,S.jsx)(`span`,{children:K(`chat.details.channelId`)})]}),(0,S.jsx)(`div`,{className:`ui-meta-box channel-detail-value channel-detail-mono`,translate:`no`,children:k(p)})]}),(0,S.jsxs)(`div`,{className:`channel-detail-section`,children:[(0,S.jsxs)(`div`,{className:`channel-detail-label`,children:[(0,S.jsx)(re,{size:14}),(0,S.jsx)(`span`,{children:K(`chat.remark.placeholder`)})]}),(0,S.jsx)(`input`,{type:`text`,className:`input input-compact`,placeholder:K(`chat.remark.placeholder`),value:dt,onChange:e=>ft(e.target.value),onFocus:()=>ft(p.remark||``),onBlur:()=>sn(),onKeyDown:e=>{e.key===`Enter`&&e.currentTarget.blur()},maxLength:50})]}),(0,S.jsxs)(`div`,{className:`channel-detail-section`,children:[(0,S.jsxs)(`div`,{className:`channel-detail-label`,children:[(0,S.jsx)(Oe,{size:14}),(0,S.jsx)(`span`,{children:K(`chat.channel.createdAt`)})]}),(0,S.jsx)(`div`,{className:`ui-meta-box channel-detail-value`,children:p.createdAt?Ft(p.createdAt):`-`})]})]}),!V&&(0,S.jsx)(`div`,{className:`channel-detail-footer`,children:(0,S.jsx)(`button`,{className:`btn btn-secondary btn-block`,onClick:()=>{F(!1),M(p),j.open()},children:K(`chat.leaveChannel`)})})]})})]})}var ct=i(`/chat/`)({component:st});export{ct as Route};
|
|
1
|
+
import{n as e,o as t,t as n}from"./jsx-runtime-Bt-cYkS5.js";import{t as r,x as i,y as a}from"./userStore-C4vdYsQp.js";import{t as o}from"./arrow-right-RldN7Rwi.js";import{n as s,r as c}from"./LanguageToggle-CBpXWdO9.js";import{t as l}from"./circle-alert-BQoSDxUe.js";import{t as u}from"./download-Bg-OdoxM.js";import{n as d,t as ee}from"./plus-H2i2mspM.js";import{t as f}from"./file-text-DG1orIkZ.js";import{a as p,i as te,n as ne,o as m,r as re,t as ie}from"./FilePreviewOverlay-Cme4vUhr.js";import{r as ae,t as oe}from"./AppShell-B1U4lDqV.js";import{t as se}from"./message-square-DaQH7q-P.js";import{t as h}from"./music-DaFvU2DL.js";import{t as ce}from"./OpenSidebarButton-CtsDYSq0.js";import{t as le}from"./search-ncblG-zw.js";import{t as g}from"./trash-2-CNpsqYc1.js";import{B as _,F as ue,L as de,M as fe,N as pe,_ as v,c as me,f as he,h as ge,m as _e,n as ve,o as y,p as ye,v as be,x as xe}from"./index-BJ7E8LJN.js";import{t as Se}from"./SidebarAccount-4NFTcAF7.js";import{n as Ce,r as we,t as Te}from"./downloadValidation-DS9_BV-n.js";import{t as Ee}from"./LogoIcon-B2fFe0l1.js";import{t as De}from"./useChannelMessages-qJTlBnzX.js";var Oe=a(`calendar`,[[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`,key:`1hopcy`}],[`path`,{d:`M3 10h18`,key:`8toen8`}]]),ke=a(`hash`,[[`line`,{x1:`4`,x2:`20`,y1:`9`,y2:`9`,key:`4lhtct`}],[`line`,{x1:`4`,x2:`20`,y1:`15`,y2:`15`,key:`vyu0kd`}],[`line`,{x1:`10`,x2:`8`,y1:`3`,y2:`21`,key:`1ggp8o`}],[`line`,{x1:`16`,x2:`14`,y1:`3`,y2:`21`,key:`weycgp`}]]),b=a(`pin`,[[`path`,{d:`M12 17v5`,key:`bb1du9`}],[`path`,{d:`M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z`,key:`1nkz8b`}]]),Ae=a(`pin-off`,[[`path`,{d:`M12 17v5`,key:`bb1du9`}],[`path`,{d:`M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89`,key:`znwnzq`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11`,key:`c9qhm2`}]]),je=a(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),x=t(e(),1),S=n();function Me(e){return!e||e<=0?``:e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:e<1024*1024*1024?`${(e/(1024*1024)).toFixed(1)} MB`:`${(e/(1024*1024*1024)).toFixed(2)} GB`}function Ne(e){let t=String(e||``).split(`/`);return t[t.length-1]||e}function C(e){return e===`image`?(0,S.jsx)(p,{size:20}):e===`video`?(0,S.jsx)(m,{size:20}):e===`audio`?(0,S.jsx)(h,{size:20}):(0,S.jsx)(f,{size:20})}function Pe({attachment:e,status:t=`idle`,pending:n=!1,onOpen:r}){let{t:i}=_(),a=t===`checking`,o=[`ui-file-action`,`chat-attachment-action`,t===`error`?`error`:``,t===`available`?`available`:``].filter(Boolean).join(` `),s=Me(e.size)||i(`chat.mostboxFile`);return(0,S.jsxs)(`button`,{type:`button`,className:`ui-file-card chat-attachment-card`,onClick:()=>r?.(e),disabled:n||a,title:e.link,translate:`no`,children:[(0,S.jsx)(`span`,{className:`ui-file-icon chat-attachment-icon ${e.kind}`,children:a?(0,S.jsx)(te,{size:20,className:`ui-spinner chat-attachment-spinner`}):C(e.kind)}),(0,S.jsxs)(`span`,{className:`ui-file-info chat-attachment-info`,children:[(0,S.jsx)(`span`,{className:`ui-file-name chat-attachment-name`,translate:`no`,children:Ne(e.fileName)}),(0,S.jsx)(`span`,{className:`ui-file-meta chat-attachment-meta`,translate:`yes`,children:n?i(`chat.sending`):s})]}),(0,S.jsx)(`span`,{className:o,translate:`yes`,children:a?i(`chat.checking`):t===`available`?(0,S.jsx)(ue,{size:16}):t===`error`?(0,S.jsx)(l,{size:17}):(0,S.jsx)(u,{size:16})})]})}var Fe=[{key:`image`,labelKey:`chat.attachment.image`,accept:`image/*`,icon:p},{key:`video`,labelKey:`chat.attachment.video`,accept:`video/*`,icon:m},{key:`file`,labelKey:`chat.attachment.file`,accept:``,icon:f}],w=Fe.map(e=>e.accept).join(`,`);function Ie({children:e}){return(0,S.jsx)(`div`,{className:`message-bubble`,translate:`no`,children:e})}function Le({children:e}){return(0,S.jsx)(`div`,{className:`message-bubble has-attachment`,children:e})}function Re({variant:e,pending:t=!1,avatarSrc:n,author:r,time:i,children:a}){return(0,S.jsxs)(`div`,{className:[`chat-message`,e,t?`pending`:``].filter(Boolean).join(` `),children:[(0,S.jsx)(`img`,{className:`msg-avatar`,src:n,alt:`avatar`}),(0,S.jsxs)(`div`,{className:`msg-content`,children:[(0,S.jsx)(`span`,{className:`message-author`,translate:`no`,children:r}),a,(0,S.jsx)(`span`,{className:`message-time`,children:i})]})]})}function ze({active:e=!1,pinned:t=!1,unread:n=!1,title:r,onSelect:i,onTogglePin:a,onRename:o,onLeave:s}){let{t:c}=_(),l=!!(a||o||s);return(0,S.jsxs)(`div`,{className:[`sidebar-nav-btn`,e?`active`:``,t?`pinned`:``,n?`unread`:``].filter(Boolean).join(` `),onClick:i,role:`button`,tabIndex:0,onKeyDown:e=>{e.target===e.currentTarget&&e.key===`Enter`&&i?.()},children:[(0,S.jsxs)(`span`,{className:`chat-channel-icon-wrap`,children:[(0,S.jsx)(se,{size:16}),n&&(0,S.jsx)(`span`,{className:`chat-channel-unread-dot`,title:c(`chat.unread`),"aria-hidden":`true`})]}),(0,S.jsx)(`span`,{className:`chat-channel-title`,children:(0,S.jsx)(`span`,{className:`chat-channel-title-text`,translate:`no`,children:r})}),l&&(0,S.jsx)(he,{ariaLabel:c(`chat.channelActions`),className:`channel-actions-anchor`,placement:`bottom-end`,items:[{key:`pin`,label:c(t?`chat.unpin`:`chat.pin`),icon:t?(0,S.jsx)(Ae,{size:16}):(0,S.jsx)(b,{size:16}),onSelect:()=>a?.()},{key:`rename`,label:c(`chat.rename`),icon:(0,S.jsx)(re,{size:16}),onSelect:()=>o?.()},{key:`delete`,label:c(`chat.delete`),icon:(0,S.jsx)(g,{size:16}),onSelect:()=>s?.()}],renderTrigger:e=>(0,S.jsx)(`button`,{...e,className:`leave-channel-btn channel-actions-trigger`,title:c(`common.moreActions`),"aria-label":c(`common.moreActions`),children:(0,S.jsx)(d,{size:16})})})]})}function Be({members:e,isLoading:t=!1}){let{t:n}=_();return t&&e.length===0?(0,S.jsx)(`div`,{className:`ui-empty-inline channel-members-empty`,children:n(`chat.loadingMembers`)}):e.length===0?(0,S.jsx)(`div`,{className:`ui-empty-inline channel-members-empty`,children:n(`chat.noMembers`)}):(0,S.jsx)(`div`,{className:`channel-members-grid`,children:e.map(e=>(0,S.jsxs)(`div`,{className:`channel-member`,children:[(0,S.jsx)(`img`,{className:`channel-member-avatar`,src:e.avatarSrc,alt:`avatar`}),(0,S.jsx)(`span`,{className:`channel-member-name`,translate:`no`,children:e.name})]},e.id))})}function Ve({message:e,placeholder:t,disabled:n=!1,isPublishingAttachment:r=!1,attachmentButtonTitle:i,attachmentInputRef:a,onMessageChange:s,onSend:c,onSelectAttachmentFiles:l}){let{t:u}=_(),d=n||r,f=n||!e.trim(),p=i||u(`chat.attachment.add`);function ne(e,t){t?.(e.currentTarget.files),e.currentTarget.value=``}function m(t){t.key===`Enter`&&e.trim()&&c()}function re(e){if(d)return;let t=a?.current;t&&(t.accept=e,t.click())}return(0,S.jsxs)(`div`,{className:`chat-input-area`,children:[(0,S.jsx)(`input`,{ref:a,type:`file`,accept:w,className:`chat-file-input`,onChange:e=>ne(e,l)}),(0,S.jsx)(he,{ariaLabel:u(`chat.attachmentType`),placement:`top-start`,disabled:d,items:Fe.map(e=>{let t=e.icon;return{key:e.key,label:u(e.labelKey),icon:(0,S.jsx)(t,{size:16}),onSelect:()=>re(e.accept)}}),renderTrigger:e=>(0,S.jsx)(`button`,{...e,className:`btn btn-circle chat-tool-btn`,"aria-label":p,children:r?(0,S.jsx)(te,{size:18,className:`ui-spinner chat-attachment-spinner`}):(0,S.jsx)(ee,{size:18})})}),(0,S.jsx)(`input`,{type:`text`,className:`input input-pill`,placeholder:t,value:e,disabled:n,onChange:e=>s(e.target.value),onKeyDown:m}),(0,S.jsx)(`button`,{type:`button`,className:`btn btn-circle btn-primary send-btn`,onClick:c,disabled:f,title:u(`chat.sendMessage`),children:(0,S.jsx)(o,{size:18})})]})}var He=`mostbox.chat.lastReadAt`;function T(e){return Date.parse(e?.lastMessageAt||``)||Date.parse(e?.createdAt||``)||0}function Ue(e){let t=String(e||``).trim().toLowerCase();return t?`${He}:${t}`:``}function E(e,t=Date.now()){let n=Number(e);return Math.max(0,Math.floor(Number.isFinite(n)&&n>0?n:t))}function We(e,t=D()){if(!e||!t)return{};try{let n=t.getItem(e);if(!n)return{};let r=JSON.parse(n);return!r||typeof r!=`object`?{}:Object.entries(r).reduce((e,[t,n])=>{let r=Number(n);return t&&Number.isFinite(r)&&r>=0&&(e[t]=r),e},{})}catch{return{}}}function Ge(e,t,n=D()){if(!(!e||!n))try{n.setItem(e,JSON.stringify(t))}catch{}}function Ke(e,t,n=Date.now(),r=Date.now()){if(!t)return{changed:!1,value:e};let i=E(n,r);return(e[t]||0)>=i?{changed:!1,value:e}:{changed:!0,value:{...e,[t]:i}}}function qe(e,t,n=Date.now()){let r=!1,i={...e};for(let e of t){let t=e?.channelKey||e?.name;!t||i[t]!==void 0||(i[t]=E(T(e),n),r=!0)}return{changed:r,value:r?i:e}}function Je(e,{channelName:t,messageTime:n,activeChannelName:r=``,messageAuthor:i=``,userAddress:a=``,now:o=Date.now()}){if(!t)return{changed:!1,notify:!1,value:e};let s=E(n,o),c=t===r,l=String(i||``).toLowerCase()===String(a||``).toLowerCase();if(c||l)return{...Ke(e,t,s,o),notify:!1};let u=e[t]||0;if(u<s)return{changed:!1,notify:!0,value:e};let d=Math.max(0,s-1);return u===d?{changed:!1,notify:!0,value:e}:{changed:!0,notify:!0,value:{...e,[t]:d}}}function Ye(e,t){let n=e?.channelKey||e?.name;return T(e)>(t[n]||0)}function D(){if(!(typeof window>`u`))return window.localStorage}var Xe=3,Ze=30,Qe=/^[a-zA-Z0-9_-]+$/,$e=1e4,et=12e3,tt=1200;function O(e){return e?.channelKey||e?.name||``}function k(e){return e?.channelId||e?.name||``}function A(e){return e?.remark||k(e)}var nt=`chat-file`;function rt(e,t){return e.type.startsWith(`image/`)?`image`:e.type.startsWith(`video/`)?`video`:e.type.startsWith(`audio/`)?`audio`:e.type.startsWith(`text/`)?`text`:ne(t)}function it(e){return e?`${e.slice(0,6)}...${e.slice(-4)}`:`Unknown`}function at(e){return/#[a-fA-F0-9]{4}$/.test(String(e||``).trim())}function ot(){if(typeof window>`u`)return;let e=window;return e.AudioContext||e.webkitAudioContext}function st(){let e=v(e=>e.isDarkMode),t=v(e=>e.setIsDarkMode),n=v(e=>e.hasBackend),i=v(e=>e.addToast),a=v(e=>e.openConnectModal),o=r(e=>e.identity),l=r(e=>e.openLoginModal),u=fe(),[d,f]=(0,x.useState)([]),[p,m]=(0,x.useState)(null),[h,g]=(0,x.useState)(``),[ue,he]=(0,x.useState)(``),[b,Ae]=(0,x.useState)(``),[Me,C]=ae(!1),[Fe,w]=(0,x.useState)(``),[He,E]=(0,x.useState)(!1),[D,st]=(0,x.useState)(!1),[ct,j]=ae(!1),[lt,M]=(0,x.useState)(null),[N,P]=(0,x.useState)(null),[ut,F]=(0,x.useState)(!1),[dt,ft]=(0,x.useState)(``),[pt,mt]=(0,x.useState)(!1),[ht,gt]=(0,x.useState)(null),[_t,vt]=(0,x.useState)(!1),[I,L]=(0,x.useState)({}),[R,z]=(0,x.useState)(null),[yt,bt]=(0,x.useState)([]),[xt,St]=(0,x.useState)(!1),[Ct,wt]=(0,x.useState)(!1),[Tt,Et]=(0,x.useState)(!1),[Dt,B]=(0,x.useState)({}),V=o?.identity===`user`,Ot=V&&!Tt?o.logo:``,kt=(0,x.useRef)(null),At=(0,x.useRef)(null),jt=(0,x.useRef)(``),H=(0,x.useRef)(null),Mt=(0,x.useRef)(!1),Nt=(0,x.useRef)(0),U=(0,x.useRef)(new Map),W=(0,x.useRef)(new Set),G=n===!0,{t:K,compareStrings:Pt,formatDate:Ft,formatTime:It}=_(),q=(0,x.useCallback)(async(e,t)=>{i(await xe(e,t),`error`)},[i]),J=(0,x.useMemo)(()=>Ue(o?.address),[o?.address]),Lt=(0,x.useCallback)((e,t=Date.now())=>{e&&B(n=>{let r=Ke(n,e,t);return r.changed?(Ge(J,r.value),r.value):n})},[J]),Y=(0,x.useCallback)(()=>{if(Mt.current||typeof window>`u`)return;let e=ot();if(e)try{let t=H.current||new e;H.current=t,t.state===`suspended`&&t.resume().catch(()=>{}),Mt.current=!0}catch{}},[]),Rt=(0,x.useCallback)(()=>{if(!Mt.current)return;let e=Date.now();if(e-Nt.current<tt)return;Nt.current=e;let t=ot();if(t)try{let e=H.current||new t;if(H.current=e,e.state===`suspended`){e.resume().catch(()=>{});return}let n=e.createGain();n.gain.setValueAtTime(1e-4,e.currentTime),n.gain.exponentialRampToValueAtTime(.08,e.currentTime+.015),n.gain.exponentialRampToValueAtTime(1e-4,e.currentTime+.18),n.connect(e.destination),[740,980].forEach((t,r)=>{let i=e.createOscillator();i.type=`sine`,i.frequency.setValueAtTime(t,e.currentTime),i.connect(n),i.start(e.currentTime+r*.035),i.stop(e.currentTime+.16+r*.035)})}catch{}},[]),X=(0,x.useCallback)(async(e=O(p))=>{if(!e||!G||!o){bt([]);return}St(!0);try{bt(await y.getChannelMembers(e))}catch(e){bt([]),await q(e,K(`chat.error.members`))}finally{St(!1)}},[p,G,q,K,o]);function zt(e,t){switch(e){case`channel:message`:{let e=t?.channelKey||t?.channel,n=t?.message,r=Number(n?.timestamp)||Date.now();if(e){f(t=>t.map(t=>O(t)===e?{...t,lastMessageAt:new Date(r).toISOString()}:t));let t=e===jt.current;B(i=>{let a=Je(i,{channelName:e,messageTime:r,activeChannelName:t?e:``,messageAuthor:n?.author,userAddress:o?.address});return a.changed&&Ge(J,a.value),a.notify&&Rt(),a.changed?a.value:i})}break}case`channel:peer:online`:case`channel:peer:offline`:p&&y.getChannelPeers(O(p)).catch(e=>{console.warn(`[Chat] Failed to fetch peers on event:`,e.message)});break;case`channel:joined`:case`channel:left`:$(),X();break;case`user:metadata:updated`:t?.scope===`channels`&&($(),X(jt.current));break;case`download:success`:{let e=U.current.get(t.taskId);e&&(U.current.delete(t.taskId),W.current.delete(e.cid),L(t=>({...t,[e.cid]:{status:`available`}})),i(K(`chat.attachment.downloadCompleted`,{fileName:t.fileName||Ne(e.fileName)}),`success`),Kt(e,t.fileName||e.fileName));break}case`download:error`:case`download:cancelled`:{let n=U.current.get(t.taskId);n&&(U.current.delete(t.taskId),W.current.delete(n.cid),L(r=>({...r,[n.cid]:{status:`error`,message:e===`download:cancelled`?K(`chat.attachment.downloadCancelled`):t.error||K(`chat.attachment.downloadFailed`)}})),i(e===`download:cancelled`?K(`chat.attachment.downloadCancelled`):t.error||K(`chat.attachment.downloadFailed`),`error`));break}}}let Bt=(0,x.useMemo)(()=>d.map(e=>O(e)),[d]),{clearMessages:Vt,messages:Ht,sendMessage:Ut,syncMessages:Wt}=De({isReady:G,enabled:!!o,channelName:O(p),extraSubscribedChannelNames:Bt,peerId:Fe,waitForPeerId:!0,onSyncError:e=>q(e,K(`chat.error.messages`)),onSocketEvent:zt,onReconnect:$});function Z(){return G?!0:(a(),!1)}function Q(){return o?!0:(l(),!1)}(0,x.useEffect)(()=>{let e=()=>{g(new URLSearchParams(window.location.search).get(`channel`)||``)};return e(),window.addEventListener(`popstate`,e),()=>window.removeEventListener(`popstate`,e)},[]),(0,x.useEffect)(()=>{o&&g(new URLSearchParams(window.location.search).get(`channel`)||``)},[o?.address]),(0,x.useEffect)(()=>{Et(!1)},[o?.logo]),(0,x.useEffect)(()=>{jt.current=O(p)},[p]),(0,x.useEffect)(()=>{B(We(J))},[J]),(0,x.useEffect)(()=>{!J||d.length===0||B(e=>{let t=qe(e,d);return t.changed&&Ge(J,t.value),t.changed?t.value:e})},[J,d]),(0,x.useEffect)(()=>(window.addEventListener(`pointerdown`,Y,{passive:!0}),window.addEventListener(`keydown`,Y),()=>{window.removeEventListener(`pointerdown`,Y),window.removeEventListener(`keydown`,Y)}),[Y]),(0,x.useEffect)(()=>()=>{H.current?.close().catch(()=>{}),H.current=null,Mt.current=!1},[]),(0,x.useEffect)(()=>{kt.current?.scrollIntoView({behavior:`smooth`})},[Ht]),(0,x.useEffect)(()=>{if(!G){w(``);return}be.get(`/api/node-id`).json().then(e=>w(e.id)).catch(e=>{console.warn(`[Chat] Failed to fetch node ID:`,e.message),q(e,K(`chat.error.nodeId`))})},[G,q,K]),(0,x.useEffect)(()=>{G&&o&&$()},[n,G,o?.address]),(0,x.useEffect)(()=>{if(p&&G){let e=O(p);Wt(e,{replace:!0}),y.getChannelPeers(e).catch(()=>{}),X(e)}},[p,n,G,X,Wt]),(0,x.useEffect)(()=>{!ut||!p||X(O(p))},[p,X,ut]),(0,x.useEffect)(()=>{if(h&&d.length>0){let e=d.find(e=>O(e)===h)||d.find(e=>k(e)===h);e&&(!p||O(p)!==O(e))?Xt(e):e&&p&&O(p)===O(e)&&(p.createdAt!==e.createdAt||p.coreKey!==e.coreKey||p.lastMessageAt!==e.lastMessageAt||p.pinned!==e.pinned||p.remark!==e.remark||p.type!==e.type)&&m(e)}},[d,p,h]),(0,x.useEffect)(()=>{o||(f([]),m(null),g(``),P(null),Vt(),Ae(``),w(``),F(!1),gt(null),bt([]),L({}),B({}),W.current.clear(),U.current.clear())},[Vt,o?.address]);function Gt(e){return e.length<Xe?K(`chat.validation.nameMin`,{count:Xe}):e.length>Ze?K(`chat.validation.nameMax`,{count:Ze}):e.includes(`.`)?K(`chat.validation.dotReserved`):Qe.test(e)?``:K(`chat.validation.allowedChars`)}async function $(){if(G)try{f(await y.getChannels())}catch(e){f([]),await q(e,K(`chat.error.channelList`))}}function Kt(e,t=e.fileName){let n=ne(t);gt({cid:e.cid,fileName:t,subtype:n===`file`?e.kind:n})}async function qt(e){let t=Te(e.link,K);if(t)return L(n=>({...n,[e.cid]:{status:`error`,message:t}})),!1;try{L(t=>({...t,[e.cid]:{status:`checking`}}));let t=await Ce.checkDownload(e.link,{timeout:$e,requestTimeout:et});return L(n=>({...n,[e.cid]:{status:`available`,message:t.alreadyExists?K(`chat.attachment.localAvailable`):K(`chat.attachment.previewAvailable`)}})),!0}catch(t){let n=await we(t);return L(t=>({...t,[e.cid]:{status:`error`,message:n}})),!1}}async function Jt(e){z(null),await qt(e)&&await Yt(e)}async function Yt(e){if(!W.current.has(e.cid)){W.current.add(e.cid),L(t=>({...t,[e.cid]:{status:`available`}}));try{let t=await Ce.downloadFile(e.link);if(t.alreadyExists||t.fileName){W.current.delete(e.cid),L(t=>({...t,[e.cid]:{status:`available`}})),Kt({...e,fileName:t.fileName||e.fileName},t.fileName||e.fileName);return}t.taskId&&(U.current.set(t.taskId,e),i(K(`chat.attachment.downloadStarted`),`success`))}catch(t){let n=await we(t);W.current.delete(e.cid),L(t=>({...t,[e.cid]:{status:`error`,message:n}}))}}}async function Xt(e){if(!Q()||!Z())return;let t=O(e);Lt(t,Math.max(T(e),Date.now())),m(e),g(t),window.history.pushState({},``,`?channel=${encodeURIComponent(t)}`)}async function Zt(e,t){if(t&&t.stopPropagation(),Q()&&Z()&&!D){st(!0);try{if(await y.leaveChannel(e),O(p)===e){m(null),g(``),Vt();let e=new URL(window.location.href);e.searchParams.delete(`channel`),window.history.pushState({},``,e.pathname)}$(),j.close(),M(null)}catch(e){await q(e,K(`chat.error.leave`))}finally{st(!1)}}}async function Qt(e){if(!Q()||!Z())return;let t=!e.pinned,n=O(e);try{let e=await y.setChannelPinned(n,t);f(t=>t.map(t=>O(t)===n?{...t,pinned:e.pinned}:t)),m(t=>t&&O(t)===n?{...t,pinned:e.pinned}:t)}catch(e){await q(e,K(t?`chat.error.pin`:`chat.error.unpin`))}}async function $t(e){let t=e.trim();if(!t||He)return;let n=Gt(t);if(n){i(n,`error`);return}if(Q()&&Z()){E(!0);try{let e=await y.createChannel(t,`public`,ve(o)),n=e.channelKey||e.key||e.name||t,r=d.find(e=>O(e)===n),i={...r,name:e.name||t,channelId:e.channelId||e.name||t,channelKey:e.channelKey||e.key||r?.channelKey,type:e.type||r?.type||`public`,createdAt:e.createdAt||r?.createdAt,coreKey:e.coreKey||e.key||r?.coreKey,localWriterCoreKey:e.localWriterCoreKey||r?.localWriterCoreKey,writerCoreKeys:e.writerCoreKeys||r?.writerCoreKeys,remark:e.remark||r?.remark},a=O(i);f(e=>e.some(e=>O(e)===a)?e.map(e=>O(e)===a?{...e,...i}:e):[...e,i]),C.close(),await Xt(i),X(a),$()}catch(e){await q(e,K(`chat.error.join`))}finally{E(!1)}}}async function en(e,t){if(!e.trim()||!p||!Q()||!Z())return!1;let n=e.trim(),r=O(p);try{let e=await Ut({channelName:r,content:n,attachment:t});return f(t=>t.map(t=>O(t)===r?{...t,lastMessageAt:new Date(Number(e?.timestamp)||Date.now()).toISOString()}:t)),e&&Lt(r,Number(e.timestamp)||Date.now()),X(r),!0}catch(e){return await q(e,K(`chat.error.send`)),!1}}async function tn(){if(!b.trim())return;let e=b.trim();Ae(``),await en(e)}function nn(e,t){return`${nt}/${e}/${t}`}async function rn(e){if(!(!e||e.length===0||!p)&&Q()&&Z()&&!_t){vt(!0);try{for(let t of Array.from(e)){let e=nn(k(p),t.name),n=await Ce.publishFile(t,e),r=n.fileName||e,a=n.link||`most://${n.cid}?filename=${encodeURIComponent(r)}`;await en(a,{kind:rt(t,r),cid:n.cid,fileName:r,link:a,mimeType:t.type||void 0,size:t.size})&&i(K(`chat.attachment.published`,{fileName:Ne(r)}),`success`)}}catch(e){await q(e,K(`chat.error.attachmentSend`))}finally{vt(!1)}}}async function an(e){if(!Q()||!Z())return;let t=I[e.cid];if(t?.status!==`checking`){if(t?.status===`error`){z(e);return}if(t?.status!==`available`){await qt(e)&&await Yt(e);return}await Yt(e)}}async function on(e,t){if(!Q()||!Z())return;let n=O(e),r=await y.setChannelRemark(n,t);return f(e=>e.map(e=>O(e)===n?{...e,remark:r.remark}:e)),m(e=>e&&O(e)===n?{...e,remark:r.remark}:e),r.remark}async function sn(){if(p)try{await on(p,dt)}catch(e){await q(e,K(`chat.error.remark`))}}async function cn(e){if(!(!N||pt)){mt(!0);try{await on(N,e),P(null)}catch(e){await q(e,K(`chat.error.rename`))}finally{mt(!1)}}}function ln(e){if(!e.attachment)return(0,S.jsx)(Ie,{children:e.content});let t=e.attachment,n=I[t.cid]?.status;return(0,S.jsx)(Le,{children:(0,S.jsx)(Pe,{attachment:t,status:n,pending:e.pending,onOpen:an})})}function un(e,t){let n=String(e||``).trim();return n?Ct?at(n)?n:t?`${n}#${t.slice(-4).toUpperCase()}`:n:n.replace(/#[a-fA-F0-9]{4}$/,``):it(t)}function dn(){return(0,S.jsx)(Be,{isLoading:xt,members:yt.map(e=>({id:e.address,name:un(e.displayName,e.address),avatarSrc:me(e.address,e.avatar)}))})}let fn=V&&!!h&&!p,pn=p?(0,S.jsx)(`h2`,{className:`header-title`,translate:`no`,children:A(p)}):(0,S.jsx)(`h2`,{className:`header-title`,children:K(`chat.title`)}),mn=ue.trim().toLowerCase(),hn=(0,x.useMemo)(()=>[...d].sort((e,t)=>{let n=Number(!!t.pinned)-Number(!!e.pinned);if(n!==0)return n;let r=T(t)-T(e);return r===0?Pt(A(e),A(t)):r}),[d,Pt]),gn=mn?hn.filter(e=>[A(e),k(e),O(e)].some(e=>e.toLowerCase().includes(mn))):hn;return(0,S.jsxs)(oe,{className:`chat-app-layout`,defaultHide:V,sidebar:({closeSidebar:e})=>(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(`button`,{type:`button`,className:`sidebar-header sidebar-header-link`,onClick:u,children:[(0,S.jsx)(de,{size:18}),(0,S.jsx)(`h1`,{children:`MOST PEOPLE`})]}),(0,S.jsx)(`div`,{className:`chat-channel-search`,children:(0,S.jsxs)(`div`,{className:`ui-input-control`,children:[(0,S.jsx)(le,{className:`ui-input-icon`,size:15}),(0,S.jsx)(`input`,{type:`search`,className:`input input-compact`,placeholder:K(`chat.search.placeholder`),value:ue,onChange:e=>he(e.target.value),"aria-label":K(`chat.search.placeholder`)})]})}),(0,S.jsx)(`nav`,{className:`sidebar-nav`,children:d.length===0?(0,S.jsx)(`div`,{className:`sidebar-empty-state`,children:(0,S.jsx)(`p`,{children:K(`chat.empty.noChannels`)})}):gn.length===0?(0,S.jsx)(`div`,{className:`sidebar-empty-state`,children:(0,S.jsx)(`p`,{children:K(`chat.empty.noMatches`)})}):gn.map(t=>(0,S.jsx)(ze,{active:O(p)===O(t),pinned:!!t.pinned,unread:Ye(t,Dt),title:A(t),onSelect:()=>{Xt(t),e()},onTogglePin:()=>void Qt(t),onRename:()=>P(t),onLeave:()=>{M(t),j.open()}},O(t)))}),(0,S.jsxs)(`button`,{className:`ui-action-dashed create-channel-btn`,onClick:()=>{!Q()||!Z()||C.open()},children:[(0,S.jsx)(ee,{size:16}),K(`chat.joinChannel`)]}),(0,S.jsx)(Se,{})]}),headerTitle:pn,sidebarToggleReplacement:V?(0,S.jsx)(`span`,{className:`sidebar-toggle-static-logo`,"aria-hidden":`true`,children:Ot?(0,S.jsx)(`img`,{className:`sidebar-toggle-static-logo-img`,src:Ot,alt:``,onError:()=>Et(!0)}):(0,S.jsx)(Ee,{size:18})}):void 0,headerRight:(0,S.jsxs)(`div`,{className:`header-right-actions`,children:[(0,S.jsx)(`button`,{className:`btn btn-icon`,onClick:()=>t(!e),title:K(`common.theme.toggle`),children:e?(0,S.jsx)(s,{size:16}):(0,S.jsx)(c,{size:16})}),p&&(0,S.jsx)(`button`,{className:`btn btn-icon`,onClick:()=>F(!0),title:K(`chat.channelSettings`),children:(0,S.jsx)(je,{size:16})})]}),children:[p?(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(`div`,{className:`chat-messages`,children:[Ht.length===0?(0,S.jsxs)(`div`,{className:`ui-empty-state chat-messages-empty`,children:[(0,S.jsx)(`div`,{className:`ui-empty-icon empty-icon`,children:(0,S.jsx)(se,{size:28})}),(0,S.jsx)(`p`,{children:K(`chat.empty.noMessages`)})]}):Ht.map(e=>{let t=e.author?.toLowerCase()===o?.address.toLowerCase();return(0,S.jsx)(Re,{variant:t?`self`:`other`,pending:e.pending,avatarSrc:me(e.author,e.avatar||(t?o.avatar:void 0)),author:un(e.authorName,e.author),time:It(e.timestamp),children:ln(e)},e.id||`${e.author}-${e.timestamp}`)}),(0,S.jsx)(`div`,{ref:kt})]}),(0,S.jsx)(Ve,{message:b,placeholder:K(o?`chat.composer.placeholder`:`chat.composer.signInPlaceholder`),disabled:!o,isPublishingAttachment:_t,attachmentInputRef:At,onMessageChange:Ae,onSend:tn,onSelectAttachmentFiles:e=>{rn(e)}})]}):fn?(0,S.jsxs)(`div`,{className:`ui-empty-state chat-welcome`,children:[(0,S.jsx)(`div`,{className:`ui-empty-icon ui-empty-icon-lg welcome-icon`,children:(0,S.jsx)(te,{size:36,className:`ui-spinner`})}),(0,S.jsx)(`h2`,{className:`ui-empty-title`,children:K(`chat.restoring.title`)}),(0,S.jsx)(`p`,{className:`ui-empty-desc`,children:K(`chat.restoring.desc`)})]}):(0,S.jsx)(S.Fragment,{children:(0,S.jsxs)(`div`,{className:`ui-empty-state chat-welcome`,children:[(0,S.jsx)(`div`,{className:`ui-empty-icon ui-empty-icon-lg welcome-icon`,children:(0,S.jsx)(se,{size:36})}),(0,S.jsx)(`h2`,{className:`ui-empty-title`,children:K(`chat.select.title`)}),(0,S.jsx)(`p`,{className:`ui-empty-desc`,children:K(`chat.select.desc`)}),(0,S.jsx)(ce,{label:K(`chat.openChannelList`)})]})}),Me&&(0,S.jsx)(ye,{title:K(`chat.joinChannel`),placeholder:K(`chat.join.placeholder`),confirmText:K(`chat.join.confirm`),validate:Gt,onConfirm:$t,onClose:()=>C.close(),isLoading:He,loadingText:K(`chat.join.joining`)}),N&&(0,S.jsx)(ye,{title:K(`chat.renameChannel`),placeholder:K(`chat.remark.placeholder`),defaultValue:N.remark||``,confirmText:K(`chat.remark.save`),onConfirm:cn,onClose:()=>{pt||P(null)},isLoading:pt,loadingText:K(`chat.remark.saving`),allowEmpty:!0,validate:e=>e.length>50?K(`chat.remark.tooLong`):``}),ct&<&&(0,S.jsx)(_e,{title:K(`chat.leaveChannel`),message:K(`chat.leaveConfirm`,{channel:A(lt)}),confirmText:K(D?`chat.leaving`:`chat.leaveChannel`),onConfirm:()=>Zt(O(lt),void 0),danger:!0,onClose:()=>{j.close(),M(null)}}),R&&(0,S.jsx)(ge,{onClose:()=>z(null),children:(0,S.jsxs)(`div`,{className:`confirm-modal`,onClick:e=>e.stopPropagation(),children:[(0,S.jsxs)(`div`,{className:`modal-header`,children:[(0,S.jsx)(`h3`,{children:K(`chat.attachment.noSeedsTitle`)}),(0,S.jsx)(`button`,{type:`button`,className:`btn btn-icon`,onClick:()=>z(null),"aria-label":K(`common.close`),children:(0,S.jsx)(pe,{size:18})})]}),(0,S.jsx)(`p`,{children:I[R.cid]?.message||K(`chat.attachment.noSeedsFallback`)}),(0,S.jsxs)(`div`,{className:`modal-actions`,children:[(0,S.jsx)(`button`,{type:`button`,className:`btn btn-secondary`,onClick:()=>z(null),children:K(`common.cancel`)}),(0,S.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>Jt(R),disabled:I[R.cid]?.status===`checking`,children:I[R.cid]?.status===`checking`?K(`app.checking`):K(`chat.attachment.retryCheck`)})]})]})}),ht&&(0,S.jsx)(ie,{item:ht,isBackendReady:G,getFileDownloadUrl:Ce.getFileDownloadUrl,onClose:()=>gt(null)}),ut&&p&&(0,S.jsx)(`div`,{className:`channel-detail-overlay`,onClick:()=>F(!1),children:(0,S.jsxs)(`div`,{className:`channel-detail-drawer`,onClick:e=>e.stopPropagation(),children:[(0,S.jsxs)(`div`,{className:`channel-detail-header`,children:[(0,S.jsx)(`h3`,{children:K(`chat.details.title`)}),(0,S.jsx)(`button`,{className:`btn btn-icon`,onClick:()=>F(!1),children:(0,S.jsx)(pe,{size:18})})]}),(0,S.jsxs)(`div`,{className:`channel-detail-body`,children:[(0,S.jsxs)(`div`,{className:`channel-detail-section channel-members-section`,children:[(0,S.jsx)(`div`,{className:`channel-detail-label`,children:(0,S.jsx)(`span`,{children:K(`chat.details.members`,{count:yt.length})})}),dn()]}),!V&&(0,S.jsx)(`div`,{className:`channel-detail-section`,children:(0,S.jsxs)(`label`,{className:`setting-switch`,children:[(0,S.jsx)(`span`,{children:K(`chat.details.showAddressSuffix`)}),(0,S.jsx)(`input`,{type:`checkbox`,checked:Ct,onChange:e=>wt(e.target.checked)})]})}),!V&&(0,S.jsxs)(`div`,{className:`channel-detail-section`,children:[(0,S.jsxs)(`div`,{className:`channel-detail-label`,children:[(0,S.jsx)(ke,{size:14}),(0,S.jsx)(`span`,{children:K(`chat.details.channelId`)})]}),(0,S.jsx)(`div`,{className:`ui-meta-box channel-detail-value channel-detail-mono`,translate:`no`,children:k(p)})]}),(0,S.jsxs)(`div`,{className:`channel-detail-section`,children:[(0,S.jsxs)(`div`,{className:`channel-detail-label`,children:[(0,S.jsx)(re,{size:14}),(0,S.jsx)(`span`,{children:K(`chat.remark.placeholder`)})]}),(0,S.jsx)(`input`,{type:`text`,className:`input input-compact`,placeholder:K(`chat.remark.placeholder`),value:dt,onChange:e=>ft(e.target.value),onFocus:()=>ft(p.remark||``),onBlur:()=>sn(),onKeyDown:e=>{e.key===`Enter`&&e.currentTarget.blur()},maxLength:50})]}),(0,S.jsxs)(`div`,{className:`channel-detail-section`,children:[(0,S.jsxs)(`div`,{className:`channel-detail-label`,children:[(0,S.jsx)(Oe,{size:14}),(0,S.jsx)(`span`,{children:K(`chat.channel.createdAt`)})]}),(0,S.jsx)(`div`,{className:`ui-meta-box channel-detail-value`,children:p.createdAt?Ft(p.createdAt):`-`})]})]}),!V&&(0,S.jsx)(`div`,{className:`channel-detail-footer`,children:(0,S.jsx)(`button`,{className:`btn btn-secondary btn-block`,onClick:()=>{F(!1),M(p),j.open()},children:K(`chat.leaveChannel`)})})]})})]})}var ct=i(`/chat/`)({component:st});export{ct as Route};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,o as t,t as n}from"./jsx-runtime-Bt-cYkS5.js";import{t as r,x as i,y as a}from"./userStore-C4vdYsQp.js";import{i as o,n as s,r as ee}from"./LanguageToggle-Di5b88mK.js";import{n as c,r as l,t as te}from"./upload-V--8p13l.js";import{t as ne}from"./copy-BtJHJnqH.js";import{t as u}from"./download-Bg-OdoxM.js";import{t as re}from"./file-text-DG1orIkZ.js";import{a as d,i as ie,n as f,o as ae,r as oe,t as se}from"./FilePreviewOverlay-C5qK9HAE.js";import{r as p,t as ce}from"./AppShell-BOtfY12t.js";import{t as m}from"./music-DaFvU2DL.js";import{t as le}from"./OpenSidebarButton-DDuALgJ2.js";import{t as ue}from"./search-ncblG-zw.js";import{t as de}from"./trash-2-CNpsqYc1.js";import{B as fe,C as pe,L as me,M as he,N as h,T as ge,_ as g,h as _,m as _e,p as ve,x as v}from"./index-CrAXrmfP.js";import{t as ye}from"./format-CR8oUWq6.js";import{t as be}from"./SidebarAccount-bo1ypzrJ.js";import{n as y,r as xe,t as Se}from"./downloadValidation-CUvbvj9f.js";var Ce=a(`arrow-up-down`,[[`path`,{d:`m21 16-4 4-4-4`,key:`f6ql7i`}],[`path`,{d:`M17 20V4`,key:`1ejh1v`}],[`path`,{d:`m3 8 4-4 4 4`,key:`11wl7u`}],[`path`,{d:`M7 4v16`,key:`1glfcx`}]]),we=a(`files`,[[`path`,{d:`M15 2h-4a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V8`,key:`14sh0y`}],[`path`,{d:`M16.706 2.706A2.4 2.4 0 0 0 15 2v5a1 1 0 0 0 1 1h5a2.4 2.4 0 0 0-.706-1.706z`,key:`1970lx`}],[`path`,{d:`M5 7a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 1.732-1`,key:`l4dndm`}]]),Te=a(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),Ee=a(`star`,[[`path`,{d:`M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z`,key:`r04s7s`}]]),b=t(e(),1);function De(e={}){let t=e.timeout??2e3,[n,r]=(0,b.useState)(null),[i,a]=(0,b.useState)(!1),o=(0,b.useRef)(null);(0,b.useEffect)(()=>()=>{window.clearTimeout(o.current)},[]);let s=e=>{window.clearTimeout(o.current),o.current=window.setTimeout(()=>a(!1),t),a(e)};return{copy:e=>{`clipboard`in navigator?navigator.clipboard.writeText(e).then(()=>{r(null),s(!0)}).catch(e=>r(e)):r(Error(`useClipboard: navigator.clipboard is not supported`))},reset:()=>{a(!1),r(null),window.clearTimeout(o.current)},error:n,copied:i}}var x=n();function S(e){let t=e.lastIndexOf(`/`);return t===-1?{folder:``,name:e}:{folder:e.substring(0,t),name:e.substring(t+1)}}function Oe({file:e,isSelected:t,onSelect:n,onPreview:r}){let i=f(e.fileName),a=(0,x.jsx)(re,{size:24,color:`#fff`});return i===`image`?a=(0,x.jsx)(d,{size:24,color:`#fff`}):i===`video`?a=(0,x.jsx)(ae,{size:24,color:`#fff`}):i===`audio`&&(a=(0,x.jsx)(m,{size:24,color:`#fff`})),(0,x.jsxs)(`div`,{"data-id":e.cid,onClick:()=>n(e.cid),onDoubleClick:()=>r(e),className:`card ${t?`selected`:``}`,children:[(0,x.jsx)(`div`,{className:`card-icon ${e.starred?`starred`:`file`}`,children:a}),(0,x.jsx)(`p`,{className:`card-name`,translate:`no`,children:S(e.fileName).name})]})}function ke({folder:e,onClick:t}){return(0,x.jsxs)(`div`,{onClick:t,className:`card`,children:[(0,x.jsx)(`div`,{className:`card-icon folder`,children:(0,x.jsx)(c,{size:28,color:`#fff`})}),(0,x.jsx)(`p`,{className:`card-name`,translate:`no`,children:e.name})]})}function Ae(e,t){return e?[{path:``,name:t},...e.split(`/`).filter(Boolean).map((e,t,n)=>({path:n.slice(0,t+1).join(`/`),name:e}))]:[]}function je({items:e,allFolders:t,currentPath:n,onMove:r,onClose:i}){let[a,o]=(0,b.useState)(``),[s,ee]=(0,b.useState)(n),{t:l}=fe(),te=Ae(a,l(`move.root`));function ne(){r(a||s.trim())}let u=t.filter(e=>{if(a===``)return!e.path.includes(`/`);let t=a+`/`;return e.path.startsWith(t)?!e.path.substring(t.length).includes(`/`):!1});return(0,x.jsx)(_,{onClose:i,children:(0,x.jsxs)(`div`,{className:`move-modal`,onClick:e=>e.stopPropagation(),children:[(0,x.jsxs)(`div`,{className:`modal-header`,children:[(0,x.jsx)(`h3`,{children:l(`move.title`)}),(0,x.jsx)(`button`,{type:`button`,onClick:i,className:`btn btn-icon`,children:(0,x.jsx)(h,{size:18})})]}),(0,x.jsx)(`p`,{className:`move-modal-desc`,children:l(`move.selectedCount`,{count:e.length})}),(0,x.jsx)(`div`,{className:`move-new-folder`,children:(0,x.jsx)(`input`,{type:`text`,className:`input`,value:s,onChange:e=>ee(e.target.value),placeholder:l(`move.pathPlaceholder`),translate:`no`})}),(0,x.jsx)(`p`,{className:`move-modal-hint`,children:l(`move.pathExample`)}),(0,x.jsx)(`div`,{className:`move-breadcrumb`,children:te.map((e,t)=>(0,x.jsxs)(b.Fragment,{children:[t>0&&(0,x.jsx)(`span`,{className:`breadcrumb-separator`,children:`/`}),(0,x.jsx)(`button`,{type:`button`,onClick:()=>{o(e.path),ee(e.path)},className:`move-breadcrumb-btn ${a===e.path&&!s?`active`:``}`,children:(0,x.jsx)(`span`,{translate:e.path?`no`:`yes`,children:e.name})})]},e.path))}),(0,x.jsxs)(`div`,{className:`move-folder-list`,children:[u.length===0&&(0,x.jsx)(`p`,{className:`move-modal-empty`,children:l(`move.noSubfolders`)}),u.map(e=>(0,x.jsxs)(`button`,{type:`button`,onClick:()=>o(e.path),className:`move-folder-item ${a===e.path&&!s?`selected`:``}`,children:[(0,x.jsx)(c,{size:16}),(0,x.jsx)(`span`,{translate:`no`,children:e.name})]},e.path))]}),(0,x.jsxs)(`div`,{className:`modal-actions`,children:[(0,x.jsx)(`button`,{type:`button`,onClick:i,className:`btn btn-secondary`,children:l(`common.cancel`)}),(0,x.jsx)(`button`,{type:`button`,onClick:ne,className:`btn btn-primary`,children:l(`move.action`)})]})]})})}function C(e){return S(e)}function Me(e){let t=new Set;return e.forEach(e=>{let{folder:n}=C(e.fileName),r=n.split(`/`).filter(Boolean),i=``;for(let e of r)i+=(i?`/`:``)+e,t.add(i)}),[...t].sort()}function w(e,t){let n=t?t+`/`:``;return e.filter(e=>{let t=e.toLowerCase().startsWith(n.toLowerCase()),r=e.substring(n.length);return t&&!r.includes(`/`)}).map(e=>({name:e.substring(n.length),path:e}))}function Ne(e,t,n){return{folders:w(t,n),files:e.filter(e=>C(e.fileName).folder===n)}}function Pe(e,t){return e?[{path:``,name:t},...e.split(`/`).filter(Boolean).map((e,t,n)=>({path:n.slice(0,t+1).join(`/`),name:e}))]:[]}function Fe(){let e=g(e=>e.isDarkMode),t=g(e=>e.setIsDarkMode),n=g(e=>e.addToast),i=g(e=>e.hasBackend),a=g(e=>e.openConnectModal),c=r(e=>e.identity),d=r(e=>e.openLoginModal),ae=he(),[m,S]=(0,b.useState)([]),[Ae,w]=(0,b.useState)([]),[Fe,T]=(0,b.useState)(null),[E,Ie]=(0,b.useState)(`all`),[Le,Re]=(0,b.useState)(!1),[D,O]=(0,b.useState)([]),[ze,k]=(0,b.useState)(null),[A,j]=(0,b.useState)(null),[Be,Ve]=p(!1),[He,Ue]=(0,b.useState)(``),[M,N]=(0,b.useState)(null),[P,We]=(0,b.useState)(!1),[Ge,F]=(0,b.useState)([]),[Ke,I]=p(!1),[L,R]=(0,b.useState)(``),{copy:qe,copied:Je}=De({timeout:2e3}),[Ye,Xe]=p(!1),[z,B]=(0,b.useState)(null),[V,Ze]=(0,b.useState)(null),[Qe,$e]=(0,b.useState)(!1),{t:H,formatDate:et}=fe(),U=i===!0,tt=e=>e?et(e):``,W=Fe||``,nt=Me(m),{folders:rt,files:it}=Ne(m,nt,W);function G(){return U?!0:(a(),!1)}function K(){return c?!0:(d(),!1)}let at=L?m.filter(e=>C(e.fileName).name.toLowerCase().includes(L.toLowerCase())):it,q=async()=>{if(!U||!c){S([]);return}try{S(await y.listPublishedFiles()||[])}catch{S([])}},J=async()=>{if(!U||!c){w([]);return}try{w(await y.listTrashFiles()||[])}catch{w([])}},ot=e=>{O(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},st=async e=>{if(K()&&G())try{await y.restoreTrashFile(e),n(H(`app.toast.restored`),`success`),q(),J()}catch(e){n(await v(e,H(`app.toast.restoreFailed`)),`error`)}},ct=async()=>{K()&&G()&&B({title:H(`app.clearTrash.title`),message:H(`app.clearTrash.message`),confirmText:H(`app.clear`),danger:!0,onConfirm:async()=>{B(null);try{await y.emptyTrash(),n(H(`app.toast.trashEmptied`),`success`),J()}catch(e){n(await v(e,H(`app.toast.emptyFailed`)),`error`)}}})},lt=async e=>{if(K()&&G())try{let t=await y.toggleStar(e);S(n=>n.map(n=>n.cid===e?{...n,starred:t.starred}:n)),n(t.starred?H(`app.toast.favorited`):H(`app.toast.unfavorited`),`success`)}catch(e){n(await v(e,H(`app.toast.actionFailed`)),`error`)}},ut=async()=>{if(!K()||!G())return;let e=E===`trash`;B({title:H(e?`app.permanentDelete`:`app.batchDelete`),message:H(e?`app.deleteSelectedPermanent`:`app.deleteSelected`,{count:D.length}),confirmText:H(e?`app.permanentDelete`:`app.delete`),danger:!0,onConfirm:async()=>{B(null);try{for(let t of D)e?await y.permanentDeleteTrashFile(t):t.startsWith(`__`)||await y.deletePublishedFile(t);O([]),n(H(e?`app.toast.deletedPermanently`:`app.toast.deleted`),`success`),q(),J()}catch(e){n(await v(e,H(`app.toast.deleteFailed`)),`error`)}}})},dt=async e=>{if(K()&&G())try{for(let t of D){let n=m.find(e=>e.cid===t);if(!n)continue;let{name:r}=C(n.fileName),i=e?`${e}/${r}`:r;n.fileName!==i&&await y.moveFile(t,i)}O([]),Xe.close(),n(H(`app.toast.moved`),`success`),q()}catch(e){n(await v(e,H(`app.toast.moveFailed`)),`error`)}},ft=e=>{let t=!!e.path,r=t?e.name:C(e.fileName).name;Ze({title:H(t?`app.renameFolder`:`app.renameFile`),placeholder:H(`app.enterNewName`),defaultValue:r,confirmText:H(`app.rename`),onConfirm:async i=>{if(i!==r&&K()&&G()){$e(!0);try{if(t){let t=e.path.lastIndexOf(`/`),r=t===-1?``:e.path.substring(0,t),a=r?`${r}/${i}`:i;await y.renameFolder(e.path,a),n(H(`app.toast.renamed`),`success`),q(),Q(a)}else{let{folder:t}=C(e.fileName),r=t?`${t}/${i}`:i;await y.moveFile(e.cid,r),n(H(`app.toast.renamed`),`success`),q()}Ze(null)}catch(e){n(await v(e,H(`app.toast.renameFailed`)),`error`)}finally{$e(!1)}}}})},pt=async e=>{if(!c){d(),n(H(`app.toast.signInBeforePublish`),`warning`);return}if(!G())return;let t=W?W+`/`:``,r=[];for(let i of Array.from(e)){let e=t+i.name;if(m.some(t=>t.fileName===e)){n(H(`app.fileAlreadyExists`,{fileName:i.name}),`warning`);continue}let a=`upload_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,o={id:a,fileName:i.name,progress:0,type:`upload`,status:`uploading`};r.push(o),F(e=>[...e,o]),r.length>0&&I.open();try{(await y.publishFile(i,e)).alreadyExists?(F(e=>e.map(e=>e.id===a?{...e,status:`completed`}:e)),n(H(`app.fileAlreadyExists`,{fileName:i.name}),`warning`)):(F(e=>e.map(e=>e.id===a?{...e,progress:100,status:`completed`}:e)),n(H(`app.fileAddedLocal`,{fileName:i.name}),`success`))}catch(e){F(e=>e.map(e=>e.id===a?{...e,status:`error`}:e)),n(await v(e,H(`app.publishFailedWithFile`,{fileName:i.name})),`error`)}}setTimeout(()=>{F(e=>e.filter(e=>e.status!==`completed`&&e.status!==`error`&&e.status!==`cancelled`))},3e3),q()},mt=()=>{qe(`most://${A.cid}?filename=${encodeURIComponent(A.fileName)}`)},[Y,ht]=(0,b.useState)(!1),X=He.trim(),Z=M?.status===`success`&&M.link===X,gt=()=>{Ve.close(),N(null)},_t=e=>{Ue(e.target.value),N(null)},vt=async()=>{let e=Se(X,H);if(e){N({status:`error`,link:X,message:e}),n(e,`warning`);return}if(!(P||Y)&&K()&&G()){We(!0),N(null);try{let e=await y.checkDownload(X);N({status:`success`,link:X,message:e.alreadyExists?H(`app.fileAlreadyLocal`,{fileName:e.fileName}):H(`app.fileAvailable`,{fileName:e.fileName})}),n(e.alreadyExists?H(`app.fileAlreadyExists`,{fileName:e.fileName}):H(`app.toast.checkPassed`),e.alreadyExists?`warning`:`success`)}catch(e){let t=await xe(e);N({status:`error`,link:X,message:t}),n(t,`error`)}finally{We(!1)}}},yt=async()=>{if(!c){d(),n(H(`app.toast.signInBeforeDownload`),`warning`);return}if(!G())return;let e=Se(X,H);if(e){n(e,`warning`);return}if(!Z){n(H(`app.toast.checkLinkFirst`),`warning`);return}if(!Y){ht(!0);try{let e=await y.downloadFile(X);if(Ue(``),N(null),gt(),e.alreadyExists)n(H(`app.fileAlreadyExists`,{fileName:e.fileName}),`warning`);else{let t={id:e.taskId,fileName:H(`app.downloadFallbackName`),progress:0,type:`download`,status:`downloading`};F(e=>[...e,t]),I.open(),n(H(`app.toast.downloadStarted`),`info`)}}catch(e){n(await v(e,H(`app.toast.downloadFailed`)),`error`)}finally{ht(!1)}}},bt=async e=>{if(K()&&G()&&e.type===`download`&&e.status===`downloading`){F(t=>t.map(t=>t.id===e.id?{...t,status:`cancelling`}:t));try{await y.cancelDownload(e.id)}catch(t){F(t=>t.map(t=>t.id===e.id?{...t,status:`downloading`}:t)),n(await v(t,H(`app.toast.cancelFailed`)),`error`)}}},xt=async e=>{if(K()&&G()){if(e.localAvailable===!1){n(H(`app.toast.fileNotLocal`),`warning`);return}try{let t=await fetch(y.getFileDownloadUrl(e.cid),{headers:await pe(`GET`,`/api/files/${e.cid}/download`)});if(!t.ok)throw Error(H(`app.toast.getFileFailed`));let r=await t.blob(),i=window.showSaveFilePicker;if(i){let t=await(await i({suggestedName:e.fileName})).createWritable();await t.write(r),await t.close(),n(H(`app.toast.fileSaved`),`success`)}else{let t=URL.createObjectURL(r),i=document.createElement(`a`);i.href=t,i.download=e.fileName,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(t),n(H(`app.toast.fileDownloaded`),`success`)}}catch(e){e.name!==`AbortError`&&n(H(`app.saveFailedWithError`,{error:e.message}),`error`)}}},St=async e=>{if(K()&&G())try{n(H(`app.toast.startPullLocal`),`info`),await y.cacheFile(e.cid),n(H(`app.toast.pulledAndSeeding`),`success`),q()}catch(e){n(await v(e,H(`app.toast.pullFailed`)),`error`)}},Q=e=>{T(e||null),O([])};(0,b.useEffect)(()=>{if(i!==!0)return;let e=null,t=!1;return(async()=>{if(e=new WebSocket(await ge(`/ws`)),t){e.close();return}e.onmessage=e=>{try{let{event:t,data:r}=JSON.parse(e.data);if(t===`publish:success`||t===`download:success`){q();let e=r.taskId||r.fileName;F(t=>t.map(t=>t.id===e||t.fileName===r.fileName?{...t,progress:100,status:`completed`}:t)),t===`download:success`&&(r.alreadyExists?n(H(`app.fileAlreadyExists`,{fileName:r.fileName}),`warning`):n(H(`app.fileDownloadCompleted`,{fileName:r.fileName}),`success`),setTimeout(()=>{F(t=>t.filter(t=>!(t.id===e&&t.status===`completed`)))},3e3))}t===`publish:progress`&&F(e=>e.map(e=>{if(r.file&&e.fileName===r.file&&e.type===`upload`){let t=50;return r.stage===`calculating-cid`?t=25:r.stage===`uploading`?t=75:r.stage===`complete`&&(t=100),{...e,progress:t}}return e})),t===`download:progress`&&F(e=>e.map(e=>e.id===r.taskId?{...e,progress:r.percent||0,loaded:r.loaded,total:r.total}:e)),t===`download:error`&&(F(e=>e.map(e=>e.id===r.taskId?{...e,status:`error`}:e)),n(H(`app.downloadFailedWithError`,{error:r.error}),`error`)),t===`download:status`&&F(e=>e.map(e=>e.id===r.taskId?{...e,fileName:r.file||e.fileName}:e)),t===`download:cancelled`&&(F(e=>e.map(e=>e.id===r.taskId?{...e,status:`cancelled`}:e)),n(H(`app.toast.downloadCancelled`),`warning`)),t===`user:metadata:updated`&&(q(),J())}catch(e){console.warn(`[App WS] Failed to parse message:`,e.message)}}})(),()=>{t=!0,e?.close()}},[i,c?.address]),(0,b.useEffect)(()=>{if(i===!0&&c){q(),J();return}i===!1&&(S([]),w([]))},[i,c?.address]),(0,b.useEffect)(()=>{c||(O([]),k(null),j(null),Ue(``),N(null),F([]),R(``),T(null),Ie(`all`))},[c?.address]);let Ct=H(E===`all`?`app.nav.local`:E===`starred`?`app.nav.favorites`:`app.nav.trash`),$=E===`all`?at:E===`starred`?m.filter(e=>e.starred&&C(e.fileName).name.toLowerCase().includes(L.toLowerCase())):Ae.filter(e=>C(e.fileName).name.toLowerCase().includes(L.toLowerCase())),wt=E===`starred`?[]:rt.filter(e=>e.name.toLowerCase().includes(L.toLowerCase())),Tt=Pe(W,H(`app.allContent`));return(0,x.jsxs)(ce,{sidebar:({closeSidebar:e})=>(0,x.jsxs)(x.Fragment,{children:[(0,x.jsxs)(`button`,{type:`button`,className:`sidebar-header sidebar-header-link`,onClick:ae,children:[(0,x.jsx)(me,{size:18}),(0,x.jsx)(`h1`,{children:`MOST PEOPLE`})]}),(0,x.jsx)(`nav`,{className:`sidebar-nav`,children:[{id:`all`,icon:(0,x.jsx)(we,{size:18}),label:H(`app.nav.local`)},{id:`starred`,icon:(0,x.jsx)(Ee,{size:18}),label:H(`app.nav.favorites`)},{id:`trash`,icon:(0,x.jsx)(de,{size:18}),label:H(`app.nav.trash`)}].map(t=>(0,x.jsxs)(`button`,{onClick:()=>{Ie(t.id),T(null),O([]),R(``),e()},className:`sidebar-nav-btn ${E===t.id?`active`:``}`,children:[t.icon,(0,x.jsx)(`span`,{children:t.label})]},t.id))}),(0,x.jsx)(be,{})]}),headerTitle:(0,x.jsx)(`h2`,{className:`header-title`,children:Ct}),headerRight:(0,x.jsxs)(x.Fragment,{children:[(0,x.jsxs)(`div`,{className:`search-box`,children:[(0,x.jsx)(ue,{size:14}),(0,x.jsx)(`input`,{type:`text`,value:L,onChange:e=>R(e.target.value),placeholder:H(`app.search.placeholder`)}),L&&(0,x.jsx)(`button`,{onClick:()=>R(``),children:(0,x.jsx)(h,{size:12})})]}),E===`trash`&&Ae.length>0&&(0,x.jsx)(`button`,{onClick:ct,className:`btn btn-sm btn-empty-trash`,children:H(`app.emptyTrash`)}),(0,x.jsx)(`button`,{onClick:()=>I.open(),className:`btn btn-icon`,children:(0,x.jsx)(Ce,{size:16})}),(0,x.jsx)(`button`,{onClick:()=>t(!e),className:`btn btn-icon`,children:e?(0,x.jsx)(s,{size:16}):(0,x.jsx)(ee,{size:16})})]}),children:[E===`all`&&(0,x.jsxs)(`div`,{className:`action-grid`,children:[(0,x.jsxs)(`div`,{className:`action-card upload ${Le?`drag-over`:``}`,onDragOver:e=>{e.preventDefault(),Re(!0)},onDragLeave:()=>Re(!1),onDrop:e=>{e.preventDefault(),Re(!1),!(!K()||!G())&&pt(e.dataTransfer.files)},children:[(0,x.jsx)(`input`,{type:`file`,multiple:!0,onClick:e=>{(!K()||!G())&&e.preventDefault()},onChange:e=>pt(e.target.files),className:`action-card-input`}),(0,x.jsx)(te,{size:20,className:`action-grid-icon`}),(0,x.jsx)(`p`,{children:H(`app.publishFile`)})]}),(0,x.jsxs)(`div`,{className:`action-card action-card-download`,onClick:()=>{!K()||!G()||Ve.open()},children:[(0,x.jsx)(u,{size:20,className:`action-grid-icon`}),(0,x.jsx)(`p`,{children:H(`app.downloadFile`)})]})]}),E===`all`&&(0,x.jsx)(`div`,{className:`breadcrumb`,children:W?(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`button`,{onClick:()=>Q(``),children:H(`app.allContent`)}),Tt.slice(1).map((e,t)=>(0,x.jsxs)(b.Fragment,{children:[(0,x.jsx)(l,{size:12}),(0,x.jsx)(`button`,{onClick:()=>Q(e.path),className:t===Tt.length-2?`current`:``,children:(0,x.jsx)(`span`,{translate:`no`,children:e.name})}),t===Tt.length-2&&(0,x.jsx)(`button`,{onClick:()=>ft(e),className:`breadcrumb-edit-btn`,children:(0,x.jsx)(oe,{size:12})})]},e.path))]}):null}),(0,x.jsxs)(`div`,{className:`content-grid`,children:[E===`trash`&&($.length===0?(0,x.jsxs)(`div`,{className:`empty-state app-empty-state`,children:[(0,x.jsx)(`p`,{children:H(L?`app.noMatches`:`app.trashEmpty`)}),(0,x.jsx)(le,{label:H(`app.openFileNavigation`)})]}):(0,x.jsx)(`div`,{className:`file-grid`,children:$.map(e=>(0,x.jsxs)(`div`,{onClick:()=>O(t=>t.includes(e.cid)?t.filter(t=>t!==e.cid):[...t,e.cid]),onDoubleClick:()=>st(e.cid),className:`card ${D.includes(e.cid)?`selected`:``}`,children:[(0,x.jsx)(`div`,{className:`card-icon trash`,children:(0,x.jsx)(re,{size:24,color:`#fff`})}),(0,x.jsx)(`p`,{className:`card-name`,translate:`no`,children:C(e.fileName).name}),(0,x.jsx)(`p`,{className:`card-date`,children:H(`app.deletedOn`,{date:tt(e.deletedAt)})})]},e.cid))})),E!==`trash`&&($.length===0&&wt.length===0?(0,x.jsxs)(`div`,{className:`empty-state app-empty-state`,children:[(0,x.jsx)(`p`,{children:H(L?`app.noMatches`:E===`starred`?`app.noFavorites`:`app.noLocalFiles`)}),(0,x.jsx)(le,{label:H(`app.openFileNavigation`)})]}):(0,x.jsxs)(`div`,{className:`file-grid`,children:[wt.map(e=>(0,x.jsx)(ke,{folder:e,onClick:()=>Q(e.path)},e.path)),$.map(e=>(0,x.jsx)(Oe,{file:e,isSelected:D.includes(e.cid),onSelect:ot,onPreview:e=>{if(e.localAvailable===!1){n(H(`app.toast.fileNotLocal`),`warning`);return}k({...e,subtype:f(e.fileName)})}},e.cid))]}))]}),z&&(0,x.jsx)(_e,{title:z.title,message:z.message,confirmText:z.confirmText,danger:z.danger,onConfirm:z.onConfirm,onClose:()=>B(null)}),V&&(0,x.jsx)(ve,{title:V.title,placeholder:V.placeholder,defaultValue:V.defaultValue,confirmText:V.confirmText,isLoading:Qe,onConfirm:V.onConfirm,onClose:()=>Ze(null)}),Ye&&(0,x.jsx)(je,{items:D.map(e=>m.find(t=>t.cid===e)).filter(Boolean),allFolders:nt.map(e=>({path:e,name:e.split(`/`).pop()})),currentPath:W,onMove:dt,onClose:()=>Xe.close()}),A&&(0,x.jsx)(_,{onClose:()=>j(null),children:(0,x.jsxs)(`div`,{className:`share-modal`,onClick:e=>e.stopPropagation(),children:[(0,x.jsxs)(`div`,{className:`modal-header`,children:[(0,x.jsx)(`h3`,{children:H(`app.shareLink`)}),(0,x.jsx)(`button`,{onClick:()=>j(null),className:`btn btn-icon`,children:(0,x.jsx)(h,{size:18})})]}),(0,x.jsxs)(`div`,{className:`share-link-box`,children:[(0,x.jsx)(`div`,{className:`share-link-text`,translate:`no`,children:`most://${A.cid}?filename=${encodeURIComponent(A.fileName)}`}),(0,x.jsx)(`button`,{onClick:mt,className:`btn btn-circle btn-primary ${Je?`copied`:``}`,children:Je?(0,x.jsx)(o,{size:18}):(0,x.jsx)(ne,{size:18})})]}),(0,x.jsx)(`div`,{className:`share-storage-note`,children:(0,x.jsx)(`span`,{children:H(`app.shareSeedNote`)})})]})}),Be&&(0,x.jsx)(_,{onClose:gt,children:(0,x.jsxs)(`div`,{className:`download-modal`,onClick:e=>e.stopPropagation(),children:[(0,x.jsxs)(`div`,{className:`modal-header`,children:[(0,x.jsx)(`h3`,{children:H(`app.downloadFile`)}),(0,x.jsx)(`button`,{onClick:gt,className:`btn btn-icon`,children:(0,x.jsx)(h,{size:18})})]}),(0,x.jsxs)(`div`,{className:`download-link-row`,children:[(0,x.jsx)(`input`,{type:`text`,className:`input`,value:He,onChange:_t,placeholder:H(`app.downloadLink.placeholder`)}),(0,x.jsxs)(`button`,{type:`button`,onClick:vt,disabled:!X||P||Y,className:`btn btn-secondary download-check-btn`,children:[P?(0,x.jsx)(ie,{size:14,className:`spin`}):Z?(0,x.jsx)(o,{size:14}):(0,x.jsx)(ue,{size:14}),H(P?`app.checking`:Z?`app.passed`:`app.check`)]})]}),M&&(0,x.jsxs)(`div`,{className:`download-check-status ${M.status}`,children:[M.status===`success`?(0,x.jsx)(o,{size:14}):(0,x.jsx)(Te,{size:14}),(0,x.jsx)(`span`,{children:M.message})]}),(0,x.jsxs)(`button`,{onClick:yt,disabled:!Z||Y||P,className:`btn btn-info btn-full`,children:[Y?(0,x.jsx)(ie,{size:14,className:`spin`}):(0,x.jsx)(u,{size:14}),H(Y?`app.downloading`:`app.startDownload`)]})]})}),ze&&(0,x.jsx)(se,{item:ze,isBackendReady:U,getFileDownloadUrl:y.getFileDownloadUrl,onClose:()=>k(null)}),D.length>0&&(0,x.jsxs)(`div`,{className:`batch-bar`,children:[(0,x.jsx)(`span`,{className:`batch-info`,children:H(`app.selectedItems`,{count:D.length})}),(0,x.jsx)(`button`,{onClick:()=>O([]),className:`batch-dismiss`,children:(0,x.jsx)(h,{size:16})}),(0,x.jsx)(`div`,{className:`batch-divider`}),E===`trash`?(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`button`,{onClick:async()=>{K()&&G()&&(await Promise.all(D.map(e=>y.restoreTrashFile(e))),O([]),n(H(`app.toast.restored`),`success`),q(),J())},className:`btn btn-sm`,children:H(`app.restore`)}),(0,x.jsx)(`button`,{onClick:ut,className:`btn btn-sm btn-danger`,children:H(`app.permanentDelete`)})]}):(0,x.jsxs)(x.Fragment,{children:[D.length===1&&(()=>{let e=m.find(e=>e.cid===D[0]);return e&&f(e.fileName)!==`file`})()&&(0,x.jsx)(`button`,{onClick:()=>{let e=m.find(e=>e.cid===D[0]);if(e){if(e.localAvailable===!1){n(H(`app.toast.fileNotLocal`),`warning`);return}let t=f(e.fileName);k({...e,subtype:t})}},className:`btn btn-sm`,children:H(`app.preview`)}),(0,x.jsx)(`button`,{onClick:()=>{let e=D.some(e=>{let t=m.find(t=>t.cid===e);return t&&!t.starred});D.forEach(t=>{let n=m.find(e=>e.cid===t);n&&(e?!n.starred:n.starred)&<(t)})},className:`btn btn-sm btn-star`,children:H(`app.favorite`)}),D.length===1&&(0,x.jsx)(`button`,{onClick:()=>{let e=m.find(e=>e.cid===D[0]);e&&ft(e)},className:`btn btn-sm`,children:H(`app.rename`)}),(0,x.jsx)(`button`,{onClick:()=>Xe.open(),className:`btn btn-sm btn-move`,children:H(`app.move`)}),(0,x.jsx)(`button`,{onClick:ut,className:`btn btn-sm btn-danger`,children:H(`app.delete`)}),D.length===1&&(()=>{let e=m.find(e=>e.cid===D[0]);return e&&e.localAvailable===!1})()&&(0,x.jsx)(`button`,{onClick:()=>{let e=m.find(e=>e.cid===D[0]);e&&St(e)},className:`btn btn-sm`,children:H(`app.pullToLocal`)}),D.length===1&&(0,x.jsx)(`button`,{onClick:()=>j(m.find(e=>e.cid===D[0])),className:`btn btn-sm`,children:H(`app.share`)}),D.length===1&&(0,x.jsx)(`button`,{onClick:()=>{let e=m.find(e=>e.cid===D[0]);e&&xt(e)},className:`btn btn-sm`,children:H(`app.saveAs`)})]})]}),Ke&&(0,x.jsx)(_,{onClose:()=>I.close(),children:(0,x.jsxs)(`div`,{className:`transfer-modal`,onClick:e=>e.stopPropagation(),children:[(0,x.jsxs)(`div`,{className:`modal-header`,children:[(0,x.jsx)(`h3`,{children:H(`app.transfers`)}),(0,x.jsx)(`button`,{onClick:()=>I.close(),className:`btn btn-icon`,children:(0,x.jsx)(h,{size:18})})]}),Ge.length===0?(0,x.jsx)(`div`,{className:`empty-transfer`,children:H(`app.noTransfers`)}):Ge.map(e=>(0,x.jsxs)(`div`,{className:`transfer-item`,children:[(0,x.jsxs)(`div`,{className:`transfer-item-header`,children:[e.type===`upload`?(0,x.jsx)(te,{size:14}):(0,x.jsx)(u,{size:14}),(0,x.jsx)(`span`,{className:`transfer-item-name`,translate:`no`,children:e.fileName}),e.status===`downloading`&&e.type===`download`&&(0,x.jsx)(`button`,{onClick:()=>bt(e),className:`transfer-item-cancel`,children:(0,x.jsx)(h,{size:14})})]}),(0,x.jsxs)(`div`,{className:`transfer-progress-row`,children:[(0,x.jsx)(`progress`,{className:`transfer-progress-meter ${e.type===`download`?`download`:``} ${e.status===`error`?`error`:``} ${e.status===`cancelled`?`cancelled`:``}`,value:Math.max(0,Math.min(100,e.progress)),max:100,"aria-label":H(`app.transferProgress`,{fileName:e.fileName})}),(0,x.jsx)(`span`,{className:`transfer-progress-text`,children:e.status===`completed`?H(`app.completed`):e.status===`error`?H(`app.failed`):e.status===`cancelled`?H(`app.cancelled`):e.status===`cancelling`?H(`app.cancelling`):e.loaded&&e.total?`${ye(e.loaded)}/${ye(e.total)}`:`${e.progress}%`})]})]},e.id))]})})]})}var T=i(`/app/`)({component:Fe});export{T as Route};
|
|
1
|
+
import{n as e,o as t,t as n}from"./jsx-runtime-Bt-cYkS5.js";import{t as r,x as i,y as a}from"./userStore-C4vdYsQp.js";import{i as o,n as s,r as ee}from"./LanguageToggle-CBpXWdO9.js";import{n as c,r as l,t as te}from"./upload-V--8p13l.js";import{t as ne}from"./copy-BtJHJnqH.js";import{t as u}from"./download-Bg-OdoxM.js";import{t as re}from"./file-text-DG1orIkZ.js";import{a as d,i as ie,n as f,o as ae,r as oe,t as se}from"./FilePreviewOverlay-Cme4vUhr.js";import{r as p,t as ce}from"./AppShell-B1U4lDqV.js";import{t as m}from"./music-DaFvU2DL.js";import{t as le}from"./OpenSidebarButton-CtsDYSq0.js";import{t as ue}from"./search-ncblG-zw.js";import{t as de}from"./trash-2-CNpsqYc1.js";import{B as fe,C as pe,L as me,M as he,N as h,T as ge,_ as g,h as _,m as _e,p as ve,x as v}from"./index-BJ7E8LJN.js";import{t as ye}from"./format-CR8oUWq6.js";import{t as be}from"./SidebarAccount-4NFTcAF7.js";import{n as y,r as xe,t as Se}from"./downloadValidation-DS9_BV-n.js";var Ce=a(`arrow-up-down`,[[`path`,{d:`m21 16-4 4-4-4`,key:`f6ql7i`}],[`path`,{d:`M17 20V4`,key:`1ejh1v`}],[`path`,{d:`m3 8 4-4 4 4`,key:`11wl7u`}],[`path`,{d:`M7 4v16`,key:`1glfcx`}]]),we=a(`files`,[[`path`,{d:`M15 2h-4a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V8`,key:`14sh0y`}],[`path`,{d:`M16.706 2.706A2.4 2.4 0 0 0 15 2v5a1 1 0 0 0 1 1h5a2.4 2.4 0 0 0-.706-1.706z`,key:`1970lx`}],[`path`,{d:`M5 7a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 1.732-1`,key:`l4dndm`}]]),Te=a(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),Ee=a(`star`,[[`path`,{d:`M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z`,key:`r04s7s`}]]),b=t(e(),1);function De(e={}){let t=e.timeout??2e3,[n,r]=(0,b.useState)(null),[i,a]=(0,b.useState)(!1),o=(0,b.useRef)(null);(0,b.useEffect)(()=>()=>{window.clearTimeout(o.current)},[]);let s=e=>{window.clearTimeout(o.current),o.current=window.setTimeout(()=>a(!1),t),a(e)};return{copy:e=>{`clipboard`in navigator?navigator.clipboard.writeText(e).then(()=>{r(null),s(!0)}).catch(e=>r(e)):r(Error(`useClipboard: navigator.clipboard is not supported`))},reset:()=>{a(!1),r(null),window.clearTimeout(o.current)},error:n,copied:i}}var x=n();function S(e){let t=e.lastIndexOf(`/`);return t===-1?{folder:``,name:e}:{folder:e.substring(0,t),name:e.substring(t+1)}}function Oe({file:e,isSelected:t,onSelect:n,onPreview:r}){let i=f(e.fileName),a=(0,x.jsx)(re,{size:24,color:`#fff`});return i===`image`?a=(0,x.jsx)(d,{size:24,color:`#fff`}):i===`video`?a=(0,x.jsx)(ae,{size:24,color:`#fff`}):i===`audio`&&(a=(0,x.jsx)(m,{size:24,color:`#fff`})),(0,x.jsxs)(`div`,{"data-id":e.cid,onClick:()=>n(e.cid),onDoubleClick:()=>r(e),className:`card ${t?`selected`:``}`,children:[(0,x.jsx)(`div`,{className:`card-icon ${e.starred?`starred`:`file`}`,children:a}),(0,x.jsx)(`p`,{className:`card-name`,translate:`no`,children:S(e.fileName).name})]})}function ke({folder:e,onClick:t}){return(0,x.jsxs)(`div`,{onClick:t,className:`card`,children:[(0,x.jsx)(`div`,{className:`card-icon folder`,children:(0,x.jsx)(c,{size:28,color:`#fff`})}),(0,x.jsx)(`p`,{className:`card-name`,translate:`no`,children:e.name})]})}function Ae(e,t){return e?[{path:``,name:t},...e.split(`/`).filter(Boolean).map((e,t,n)=>({path:n.slice(0,t+1).join(`/`),name:e}))]:[]}function je({items:e,allFolders:t,currentPath:n,onMove:r,onClose:i}){let[a,o]=(0,b.useState)(``),[s,ee]=(0,b.useState)(n),{t:l}=fe(),te=Ae(a,l(`move.root`));function ne(){r(a||s.trim())}let u=t.filter(e=>{if(a===``)return!e.path.includes(`/`);let t=a+`/`;return e.path.startsWith(t)?!e.path.substring(t.length).includes(`/`):!1});return(0,x.jsx)(_,{onClose:i,children:(0,x.jsxs)(`div`,{className:`move-modal`,onClick:e=>e.stopPropagation(),children:[(0,x.jsxs)(`div`,{className:`modal-header`,children:[(0,x.jsx)(`h3`,{children:l(`move.title`)}),(0,x.jsx)(`button`,{type:`button`,onClick:i,className:`btn btn-icon`,children:(0,x.jsx)(h,{size:18})})]}),(0,x.jsx)(`p`,{className:`move-modal-desc`,children:l(`move.selectedCount`,{count:e.length})}),(0,x.jsx)(`div`,{className:`move-new-folder`,children:(0,x.jsx)(`input`,{type:`text`,className:`input`,value:s,onChange:e=>ee(e.target.value),placeholder:l(`move.pathPlaceholder`),translate:`no`})}),(0,x.jsx)(`p`,{className:`move-modal-hint`,children:l(`move.pathExample`)}),(0,x.jsx)(`div`,{className:`move-breadcrumb`,children:te.map((e,t)=>(0,x.jsxs)(b.Fragment,{children:[t>0&&(0,x.jsx)(`span`,{className:`breadcrumb-separator`,children:`/`}),(0,x.jsx)(`button`,{type:`button`,onClick:()=>{o(e.path),ee(e.path)},className:`move-breadcrumb-btn ${a===e.path&&!s?`active`:``}`,children:(0,x.jsx)(`span`,{translate:e.path?`no`:`yes`,children:e.name})})]},e.path))}),(0,x.jsxs)(`div`,{className:`move-folder-list`,children:[u.length===0&&(0,x.jsx)(`p`,{className:`move-modal-empty`,children:l(`move.noSubfolders`)}),u.map(e=>(0,x.jsxs)(`button`,{type:`button`,onClick:()=>o(e.path),className:`move-folder-item ${a===e.path&&!s?`selected`:``}`,children:[(0,x.jsx)(c,{size:16}),(0,x.jsx)(`span`,{translate:`no`,children:e.name})]},e.path))]}),(0,x.jsxs)(`div`,{className:`modal-actions`,children:[(0,x.jsx)(`button`,{type:`button`,onClick:i,className:`btn btn-secondary`,children:l(`common.cancel`)}),(0,x.jsx)(`button`,{type:`button`,onClick:ne,className:`btn btn-primary`,children:l(`move.action`)})]})]})})}function C(e){return S(e)}function Me(e){let t=new Set;return e.forEach(e=>{let{folder:n}=C(e.fileName),r=n.split(`/`).filter(Boolean),i=``;for(let e of r)i+=(i?`/`:``)+e,t.add(i)}),[...t].sort()}function w(e,t){let n=t?t+`/`:``;return e.filter(e=>{let t=e.toLowerCase().startsWith(n.toLowerCase()),r=e.substring(n.length);return t&&!r.includes(`/`)}).map(e=>({name:e.substring(n.length),path:e}))}function Ne(e,t,n){return{folders:w(t,n),files:e.filter(e=>C(e.fileName).folder===n)}}function Pe(e,t){return e?[{path:``,name:t},...e.split(`/`).filter(Boolean).map((e,t,n)=>({path:n.slice(0,t+1).join(`/`),name:e}))]:[]}function Fe(){let e=g(e=>e.isDarkMode),t=g(e=>e.setIsDarkMode),n=g(e=>e.addToast),i=g(e=>e.hasBackend),a=g(e=>e.openConnectModal),c=r(e=>e.identity),d=r(e=>e.openLoginModal),ae=he(),[m,S]=(0,b.useState)([]),[Ae,w]=(0,b.useState)([]),[Fe,T]=(0,b.useState)(null),[E,Ie]=(0,b.useState)(`all`),[Le,Re]=(0,b.useState)(!1),[D,O]=(0,b.useState)([]),[ze,k]=(0,b.useState)(null),[A,j]=(0,b.useState)(null),[Be,Ve]=p(!1),[He,Ue]=(0,b.useState)(``),[M,N]=(0,b.useState)(null),[P,We]=(0,b.useState)(!1),[Ge,F]=(0,b.useState)([]),[Ke,I]=p(!1),[L,R]=(0,b.useState)(``),{copy:qe,copied:Je}=De({timeout:2e3}),[Ye,Xe]=p(!1),[z,B]=(0,b.useState)(null),[V,Ze]=(0,b.useState)(null),[Qe,$e]=(0,b.useState)(!1),{t:H,formatDate:et}=fe(),U=i===!0,tt=e=>e?et(e):``,W=Fe||``,nt=Me(m),{folders:rt,files:it}=Ne(m,nt,W);function G(){return U?!0:(a(),!1)}function K(){return c?!0:(d(),!1)}let at=L?m.filter(e=>C(e.fileName).name.toLowerCase().includes(L.toLowerCase())):it,q=async()=>{if(!U||!c){S([]);return}try{S(await y.listPublishedFiles()||[])}catch{S([])}},J=async()=>{if(!U||!c){w([]);return}try{w(await y.listTrashFiles()||[])}catch{w([])}},ot=e=>{O(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},st=async e=>{if(K()&&G())try{await y.restoreTrashFile(e),n(H(`app.toast.restored`),`success`),q(),J()}catch(e){n(await v(e,H(`app.toast.restoreFailed`)),`error`)}},ct=async()=>{K()&&G()&&B({title:H(`app.clearTrash.title`),message:H(`app.clearTrash.message`),confirmText:H(`app.clear`),danger:!0,onConfirm:async()=>{B(null);try{await y.emptyTrash(),n(H(`app.toast.trashEmptied`),`success`),J()}catch(e){n(await v(e,H(`app.toast.emptyFailed`)),`error`)}}})},lt=async e=>{if(K()&&G())try{let t=await y.toggleStar(e);S(n=>n.map(n=>n.cid===e?{...n,starred:t.starred}:n)),n(t.starred?H(`app.toast.favorited`):H(`app.toast.unfavorited`),`success`)}catch(e){n(await v(e,H(`app.toast.actionFailed`)),`error`)}},ut=async()=>{if(!K()||!G())return;let e=E===`trash`;B({title:H(e?`app.permanentDelete`:`app.batchDelete`),message:H(e?`app.deleteSelectedPermanent`:`app.deleteSelected`,{count:D.length}),confirmText:H(e?`app.permanentDelete`:`app.delete`),danger:!0,onConfirm:async()=>{B(null);try{for(let t of D)e?await y.permanentDeleteTrashFile(t):t.startsWith(`__`)||await y.deletePublishedFile(t);O([]),n(H(e?`app.toast.deletedPermanently`:`app.toast.deleted`),`success`),q(),J()}catch(e){n(await v(e,H(`app.toast.deleteFailed`)),`error`)}}})},dt=async e=>{if(K()&&G())try{for(let t of D){let n=m.find(e=>e.cid===t);if(!n)continue;let{name:r}=C(n.fileName),i=e?`${e}/${r}`:r;n.fileName!==i&&await y.moveFile(t,i)}O([]),Xe.close(),n(H(`app.toast.moved`),`success`),q()}catch(e){n(await v(e,H(`app.toast.moveFailed`)),`error`)}},ft=e=>{let t=!!e.path,r=t?e.name:C(e.fileName).name;Ze({title:H(t?`app.renameFolder`:`app.renameFile`),placeholder:H(`app.enterNewName`),defaultValue:r,confirmText:H(`app.rename`),onConfirm:async i=>{if(i!==r&&K()&&G()){$e(!0);try{if(t){let t=e.path.lastIndexOf(`/`),r=t===-1?``:e.path.substring(0,t),a=r?`${r}/${i}`:i;await y.renameFolder(e.path,a),n(H(`app.toast.renamed`),`success`),q(),Q(a)}else{let{folder:t}=C(e.fileName),r=t?`${t}/${i}`:i;await y.moveFile(e.cid,r),n(H(`app.toast.renamed`),`success`),q()}Ze(null)}catch(e){n(await v(e,H(`app.toast.renameFailed`)),`error`)}finally{$e(!1)}}}})},pt=async e=>{if(!c){d(),n(H(`app.toast.signInBeforePublish`),`warning`);return}if(!G())return;let t=W?W+`/`:``,r=[];for(let i of Array.from(e)){let e=t+i.name;if(m.some(t=>t.fileName===e)){n(H(`app.fileAlreadyExists`,{fileName:i.name}),`warning`);continue}let a=`upload_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,o={id:a,fileName:i.name,progress:0,type:`upload`,status:`uploading`};r.push(o),F(e=>[...e,o]),r.length>0&&I.open();try{(await y.publishFile(i,e)).alreadyExists?(F(e=>e.map(e=>e.id===a?{...e,status:`completed`}:e)),n(H(`app.fileAlreadyExists`,{fileName:i.name}),`warning`)):(F(e=>e.map(e=>e.id===a?{...e,progress:100,status:`completed`}:e)),n(H(`app.fileAddedLocal`,{fileName:i.name}),`success`))}catch(e){F(e=>e.map(e=>e.id===a?{...e,status:`error`}:e)),n(await v(e,H(`app.publishFailedWithFile`,{fileName:i.name})),`error`)}}setTimeout(()=>{F(e=>e.filter(e=>e.status!==`completed`&&e.status!==`error`&&e.status!==`cancelled`))},3e3),q()},mt=()=>{qe(`most://${A.cid}?filename=${encodeURIComponent(A.fileName)}`)},[Y,ht]=(0,b.useState)(!1),X=He.trim(),Z=M?.status===`success`&&M.link===X,gt=()=>{Ve.close(),N(null)},_t=e=>{Ue(e.target.value),N(null)},vt=async()=>{let e=Se(X,H);if(e){N({status:`error`,link:X,message:e}),n(e,`warning`);return}if(!(P||Y)&&K()&&G()){We(!0),N(null);try{let e=await y.checkDownload(X);N({status:`success`,link:X,message:e.alreadyExists?H(`app.fileAlreadyLocal`,{fileName:e.fileName}):H(`app.fileAvailable`,{fileName:e.fileName})}),n(e.alreadyExists?H(`app.fileAlreadyExists`,{fileName:e.fileName}):H(`app.toast.checkPassed`),e.alreadyExists?`warning`:`success`)}catch(e){let t=await xe(e);N({status:`error`,link:X,message:t}),n(t,`error`)}finally{We(!1)}}},yt=async()=>{if(!c){d(),n(H(`app.toast.signInBeforeDownload`),`warning`);return}if(!G())return;let e=Se(X,H);if(e){n(e,`warning`);return}if(!Z){n(H(`app.toast.checkLinkFirst`),`warning`);return}if(!Y){ht(!0);try{let e=await y.downloadFile(X);if(Ue(``),N(null),gt(),e.alreadyExists)n(H(`app.fileAlreadyExists`,{fileName:e.fileName}),`warning`);else{let t={id:e.taskId,fileName:H(`app.downloadFallbackName`),progress:0,type:`download`,status:`downloading`};F(e=>[...e,t]),I.open(),n(H(`app.toast.downloadStarted`),`info`)}}catch(e){n(await v(e,H(`app.toast.downloadFailed`)),`error`)}finally{ht(!1)}}},bt=async e=>{if(K()&&G()&&e.type===`download`&&e.status===`downloading`){F(t=>t.map(t=>t.id===e.id?{...t,status:`cancelling`}:t));try{await y.cancelDownload(e.id)}catch(t){F(t=>t.map(t=>t.id===e.id?{...t,status:`downloading`}:t)),n(await v(t,H(`app.toast.cancelFailed`)),`error`)}}},xt=async e=>{if(K()&&G()){if(e.localAvailable===!1){n(H(`app.toast.fileNotLocal`),`warning`);return}try{let t=await fetch(y.getFileDownloadUrl(e.cid),{headers:await pe(`GET`,`/api/files/${e.cid}/download`)});if(!t.ok)throw Error(H(`app.toast.getFileFailed`));let r=await t.blob(),i=window.showSaveFilePicker;if(i){let t=await(await i({suggestedName:e.fileName})).createWritable();await t.write(r),await t.close(),n(H(`app.toast.fileSaved`),`success`)}else{let t=URL.createObjectURL(r),i=document.createElement(`a`);i.href=t,i.download=e.fileName,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(t),n(H(`app.toast.fileDownloaded`),`success`)}}catch(e){e.name!==`AbortError`&&n(H(`app.saveFailedWithError`,{error:e.message}),`error`)}}},St=async e=>{if(K()&&G())try{n(H(`app.toast.startPullLocal`),`info`),await y.cacheFile(e.cid),n(H(`app.toast.pulledAndSeeding`),`success`),q()}catch(e){n(await v(e,H(`app.toast.pullFailed`)),`error`)}},Q=e=>{T(e||null),O([])};(0,b.useEffect)(()=>{if(i!==!0)return;let e=null,t=!1;return(async()=>{if(e=new WebSocket(await ge(`/ws`)),t){e.close();return}e.onmessage=e=>{try{let{event:t,data:r}=JSON.parse(e.data);if(t===`publish:success`||t===`download:success`){q();let e=r.taskId||r.fileName;F(t=>t.map(t=>t.id===e||t.fileName===r.fileName?{...t,progress:100,status:`completed`}:t)),t===`download:success`&&(r.alreadyExists?n(H(`app.fileAlreadyExists`,{fileName:r.fileName}),`warning`):n(H(`app.fileDownloadCompleted`,{fileName:r.fileName}),`success`),setTimeout(()=>{F(t=>t.filter(t=>!(t.id===e&&t.status===`completed`)))},3e3))}t===`publish:progress`&&F(e=>e.map(e=>{if(r.file&&e.fileName===r.file&&e.type===`upload`){let t=50;return r.stage===`calculating-cid`?t=25:r.stage===`uploading`?t=75:r.stage===`complete`&&(t=100),{...e,progress:t}}return e})),t===`download:progress`&&F(e=>e.map(e=>e.id===r.taskId?{...e,progress:r.percent||0,loaded:r.loaded,total:r.total}:e)),t===`download:error`&&(F(e=>e.map(e=>e.id===r.taskId?{...e,status:`error`}:e)),n(H(`app.downloadFailedWithError`,{error:r.error}),`error`)),t===`download:status`&&F(e=>e.map(e=>e.id===r.taskId?{...e,fileName:r.file||e.fileName}:e)),t===`download:cancelled`&&(F(e=>e.map(e=>e.id===r.taskId?{...e,status:`cancelled`}:e)),n(H(`app.toast.downloadCancelled`),`warning`)),t===`user:metadata:updated`&&(q(),J())}catch(e){console.warn(`[App WS] Failed to parse message:`,e.message)}}})(),()=>{t=!0,e?.close()}},[i,c?.address]),(0,b.useEffect)(()=>{if(i===!0&&c){q(),J();return}i===!1&&(S([]),w([]))},[i,c?.address]),(0,b.useEffect)(()=>{c||(O([]),k(null),j(null),Ue(``),N(null),F([]),R(``),T(null),Ie(`all`))},[c?.address]);let Ct=H(E===`all`?`app.nav.local`:E===`starred`?`app.nav.favorites`:`app.nav.trash`),$=E===`all`?at:E===`starred`?m.filter(e=>e.starred&&C(e.fileName).name.toLowerCase().includes(L.toLowerCase())):Ae.filter(e=>C(e.fileName).name.toLowerCase().includes(L.toLowerCase())),wt=E===`starred`?[]:rt.filter(e=>e.name.toLowerCase().includes(L.toLowerCase())),Tt=Pe(W,H(`app.allContent`));return(0,x.jsxs)(ce,{sidebar:({closeSidebar:e})=>(0,x.jsxs)(x.Fragment,{children:[(0,x.jsxs)(`button`,{type:`button`,className:`sidebar-header sidebar-header-link`,onClick:ae,children:[(0,x.jsx)(me,{size:18}),(0,x.jsx)(`h1`,{children:`MOST PEOPLE`})]}),(0,x.jsx)(`nav`,{className:`sidebar-nav`,children:[{id:`all`,icon:(0,x.jsx)(we,{size:18}),label:H(`app.nav.local`)},{id:`starred`,icon:(0,x.jsx)(Ee,{size:18}),label:H(`app.nav.favorites`)},{id:`trash`,icon:(0,x.jsx)(de,{size:18}),label:H(`app.nav.trash`)}].map(t=>(0,x.jsxs)(`button`,{onClick:()=>{Ie(t.id),T(null),O([]),R(``),e()},className:`sidebar-nav-btn ${E===t.id?`active`:``}`,children:[t.icon,(0,x.jsx)(`span`,{children:t.label})]},t.id))}),(0,x.jsx)(be,{})]}),headerTitle:(0,x.jsx)(`h2`,{className:`header-title`,children:Ct}),headerRight:(0,x.jsxs)(x.Fragment,{children:[(0,x.jsxs)(`div`,{className:`search-box`,children:[(0,x.jsx)(ue,{size:14}),(0,x.jsx)(`input`,{type:`text`,value:L,onChange:e=>R(e.target.value),placeholder:H(`app.search.placeholder`)}),L&&(0,x.jsx)(`button`,{onClick:()=>R(``),children:(0,x.jsx)(h,{size:12})})]}),E===`trash`&&Ae.length>0&&(0,x.jsx)(`button`,{onClick:ct,className:`btn btn-sm btn-empty-trash`,children:H(`app.emptyTrash`)}),(0,x.jsx)(`button`,{onClick:()=>I.open(),className:`btn btn-icon`,children:(0,x.jsx)(Ce,{size:16})}),(0,x.jsx)(`button`,{onClick:()=>t(!e),className:`btn btn-icon`,children:e?(0,x.jsx)(s,{size:16}):(0,x.jsx)(ee,{size:16})})]}),children:[E===`all`&&(0,x.jsxs)(`div`,{className:`action-grid`,children:[(0,x.jsxs)(`div`,{className:`action-card upload ${Le?`drag-over`:``}`,onDragOver:e=>{e.preventDefault(),Re(!0)},onDragLeave:()=>Re(!1),onDrop:e=>{e.preventDefault(),Re(!1),!(!K()||!G())&&pt(e.dataTransfer.files)},children:[(0,x.jsx)(`input`,{type:`file`,multiple:!0,onClick:e=>{(!K()||!G())&&e.preventDefault()},onChange:e=>pt(e.target.files),className:`action-card-input`}),(0,x.jsx)(te,{size:20,className:`action-grid-icon`}),(0,x.jsx)(`p`,{children:H(`app.publishFile`)})]}),(0,x.jsxs)(`div`,{className:`action-card action-card-download`,onClick:()=>{!K()||!G()||Ve.open()},children:[(0,x.jsx)(u,{size:20,className:`action-grid-icon`}),(0,x.jsx)(`p`,{children:H(`app.downloadFile`)})]})]}),E===`all`&&(0,x.jsx)(`div`,{className:`breadcrumb`,children:W?(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`button`,{onClick:()=>Q(``),children:H(`app.allContent`)}),Tt.slice(1).map((e,t)=>(0,x.jsxs)(b.Fragment,{children:[(0,x.jsx)(l,{size:12}),(0,x.jsx)(`button`,{onClick:()=>Q(e.path),className:t===Tt.length-2?`current`:``,children:(0,x.jsx)(`span`,{translate:`no`,children:e.name})}),t===Tt.length-2&&(0,x.jsx)(`button`,{onClick:()=>ft(e),className:`breadcrumb-edit-btn`,children:(0,x.jsx)(oe,{size:12})})]},e.path))]}):null}),(0,x.jsxs)(`div`,{className:`content-grid`,children:[E===`trash`&&($.length===0?(0,x.jsxs)(`div`,{className:`empty-state app-empty-state`,children:[(0,x.jsx)(`p`,{children:H(L?`app.noMatches`:`app.trashEmpty`)}),(0,x.jsx)(le,{label:H(`app.openFileNavigation`)})]}):(0,x.jsx)(`div`,{className:`file-grid`,children:$.map(e=>(0,x.jsxs)(`div`,{onClick:()=>O(t=>t.includes(e.cid)?t.filter(t=>t!==e.cid):[...t,e.cid]),onDoubleClick:()=>st(e.cid),className:`card ${D.includes(e.cid)?`selected`:``}`,children:[(0,x.jsx)(`div`,{className:`card-icon trash`,children:(0,x.jsx)(re,{size:24,color:`#fff`})}),(0,x.jsx)(`p`,{className:`card-name`,translate:`no`,children:C(e.fileName).name}),(0,x.jsx)(`p`,{className:`card-date`,children:H(`app.deletedOn`,{date:tt(e.deletedAt)})})]},e.cid))})),E!==`trash`&&($.length===0&&wt.length===0?(0,x.jsxs)(`div`,{className:`empty-state app-empty-state`,children:[(0,x.jsx)(`p`,{children:H(L?`app.noMatches`:E===`starred`?`app.noFavorites`:`app.noLocalFiles`)}),(0,x.jsx)(le,{label:H(`app.openFileNavigation`)})]}):(0,x.jsxs)(`div`,{className:`file-grid`,children:[wt.map(e=>(0,x.jsx)(ke,{folder:e,onClick:()=>Q(e.path)},e.path)),$.map(e=>(0,x.jsx)(Oe,{file:e,isSelected:D.includes(e.cid),onSelect:ot,onPreview:e=>{if(e.localAvailable===!1){n(H(`app.toast.fileNotLocal`),`warning`);return}k({...e,subtype:f(e.fileName)})}},e.cid))]}))]}),z&&(0,x.jsx)(_e,{title:z.title,message:z.message,confirmText:z.confirmText,danger:z.danger,onConfirm:z.onConfirm,onClose:()=>B(null)}),V&&(0,x.jsx)(ve,{title:V.title,placeholder:V.placeholder,defaultValue:V.defaultValue,confirmText:V.confirmText,isLoading:Qe,onConfirm:V.onConfirm,onClose:()=>Ze(null)}),Ye&&(0,x.jsx)(je,{items:D.map(e=>m.find(t=>t.cid===e)).filter(Boolean),allFolders:nt.map(e=>({path:e,name:e.split(`/`).pop()})),currentPath:W,onMove:dt,onClose:()=>Xe.close()}),A&&(0,x.jsx)(_,{onClose:()=>j(null),children:(0,x.jsxs)(`div`,{className:`share-modal`,onClick:e=>e.stopPropagation(),children:[(0,x.jsxs)(`div`,{className:`modal-header`,children:[(0,x.jsx)(`h3`,{children:H(`app.shareLink`)}),(0,x.jsx)(`button`,{onClick:()=>j(null),className:`btn btn-icon`,children:(0,x.jsx)(h,{size:18})})]}),(0,x.jsxs)(`div`,{className:`share-link-box`,children:[(0,x.jsx)(`div`,{className:`share-link-text`,translate:`no`,children:`most://${A.cid}?filename=${encodeURIComponent(A.fileName)}`}),(0,x.jsx)(`button`,{onClick:mt,className:`btn btn-circle btn-primary ${Je?`copied`:``}`,children:Je?(0,x.jsx)(o,{size:18}):(0,x.jsx)(ne,{size:18})})]}),(0,x.jsx)(`div`,{className:`share-storage-note`,children:(0,x.jsx)(`span`,{children:H(`app.shareSeedNote`)})})]})}),Be&&(0,x.jsx)(_,{onClose:gt,children:(0,x.jsxs)(`div`,{className:`download-modal`,onClick:e=>e.stopPropagation(),children:[(0,x.jsxs)(`div`,{className:`modal-header`,children:[(0,x.jsx)(`h3`,{children:H(`app.downloadFile`)}),(0,x.jsx)(`button`,{onClick:gt,className:`btn btn-icon`,children:(0,x.jsx)(h,{size:18})})]}),(0,x.jsxs)(`div`,{className:`download-link-row`,children:[(0,x.jsx)(`input`,{type:`text`,className:`input`,value:He,onChange:_t,placeholder:H(`app.downloadLink.placeholder`)}),(0,x.jsxs)(`button`,{type:`button`,onClick:vt,disabled:!X||P||Y,className:`btn btn-secondary download-check-btn`,children:[P?(0,x.jsx)(ie,{size:14,className:`spin`}):Z?(0,x.jsx)(o,{size:14}):(0,x.jsx)(ue,{size:14}),H(P?`app.checking`:Z?`app.passed`:`app.check`)]})]}),M&&(0,x.jsxs)(`div`,{className:`download-check-status ${M.status}`,children:[M.status===`success`?(0,x.jsx)(o,{size:14}):(0,x.jsx)(Te,{size:14}),(0,x.jsx)(`span`,{children:M.message})]}),(0,x.jsxs)(`button`,{onClick:yt,disabled:!Z||Y||P,className:`btn btn-info btn-full`,children:[Y?(0,x.jsx)(ie,{size:14,className:`spin`}):(0,x.jsx)(u,{size:14}),H(Y?`app.downloading`:`app.startDownload`)]})]})}),ze&&(0,x.jsx)(se,{item:ze,isBackendReady:U,getFileDownloadUrl:y.getFileDownloadUrl,onClose:()=>k(null)}),D.length>0&&(0,x.jsxs)(`div`,{className:`batch-bar`,children:[(0,x.jsx)(`span`,{className:`batch-info`,children:H(`app.selectedItems`,{count:D.length})}),(0,x.jsx)(`button`,{onClick:()=>O([]),className:`batch-dismiss`,children:(0,x.jsx)(h,{size:16})}),(0,x.jsx)(`div`,{className:`batch-divider`}),E===`trash`?(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`button`,{onClick:async()=>{K()&&G()&&(await Promise.all(D.map(e=>y.restoreTrashFile(e))),O([]),n(H(`app.toast.restored`),`success`),q(),J())},className:`btn btn-sm`,children:H(`app.restore`)}),(0,x.jsx)(`button`,{onClick:ut,className:`btn btn-sm btn-danger`,children:H(`app.permanentDelete`)})]}):(0,x.jsxs)(x.Fragment,{children:[D.length===1&&(()=>{let e=m.find(e=>e.cid===D[0]);return e&&f(e.fileName)!==`file`})()&&(0,x.jsx)(`button`,{onClick:()=>{let e=m.find(e=>e.cid===D[0]);if(e){if(e.localAvailable===!1){n(H(`app.toast.fileNotLocal`),`warning`);return}let t=f(e.fileName);k({...e,subtype:t})}},className:`btn btn-sm`,children:H(`app.preview`)}),(0,x.jsx)(`button`,{onClick:()=>{let e=D.some(e=>{let t=m.find(t=>t.cid===e);return t&&!t.starred});D.forEach(t=>{let n=m.find(e=>e.cid===t);n&&(e?!n.starred:n.starred)&<(t)})},className:`btn btn-sm btn-star`,children:H(`app.favorite`)}),D.length===1&&(0,x.jsx)(`button`,{onClick:()=>{let e=m.find(e=>e.cid===D[0]);e&&ft(e)},className:`btn btn-sm`,children:H(`app.rename`)}),(0,x.jsx)(`button`,{onClick:()=>Xe.open(),className:`btn btn-sm btn-move`,children:H(`app.move`)}),(0,x.jsx)(`button`,{onClick:ut,className:`btn btn-sm btn-danger`,children:H(`app.delete`)}),D.length===1&&(()=>{let e=m.find(e=>e.cid===D[0]);return e&&e.localAvailable===!1})()&&(0,x.jsx)(`button`,{onClick:()=>{let e=m.find(e=>e.cid===D[0]);e&&St(e)},className:`btn btn-sm`,children:H(`app.pullToLocal`)}),D.length===1&&(0,x.jsx)(`button`,{onClick:()=>j(m.find(e=>e.cid===D[0])),className:`btn btn-sm`,children:H(`app.share`)}),D.length===1&&(0,x.jsx)(`button`,{onClick:()=>{let e=m.find(e=>e.cid===D[0]);e&&xt(e)},className:`btn btn-sm`,children:H(`app.saveAs`)})]})]}),Ke&&(0,x.jsx)(_,{onClose:()=>I.close(),children:(0,x.jsxs)(`div`,{className:`transfer-modal`,onClick:e=>e.stopPropagation(),children:[(0,x.jsxs)(`div`,{className:`modal-header`,children:[(0,x.jsx)(`h3`,{children:H(`app.transfers`)}),(0,x.jsx)(`button`,{onClick:()=>I.close(),className:`btn btn-icon`,children:(0,x.jsx)(h,{size:18})})]}),Ge.length===0?(0,x.jsx)(`div`,{className:`empty-transfer`,children:H(`app.noTransfers`)}):Ge.map(e=>(0,x.jsxs)(`div`,{className:`transfer-item`,children:[(0,x.jsxs)(`div`,{className:`transfer-item-header`,children:[e.type===`upload`?(0,x.jsx)(te,{size:14}):(0,x.jsx)(u,{size:14}),(0,x.jsx)(`span`,{className:`transfer-item-name`,translate:`no`,children:e.fileName}),e.status===`downloading`&&e.type===`download`&&(0,x.jsx)(`button`,{onClick:()=>bt(e),className:`transfer-item-cancel`,children:(0,x.jsx)(h,{size:14})})]}),(0,x.jsxs)(`div`,{className:`transfer-progress-row`,children:[(0,x.jsx)(`progress`,{className:`transfer-progress-meter ${e.type===`download`?`download`:``} ${e.status===`error`?`error`:``} ${e.status===`cancelled`?`cancelled`:``}`,value:Math.max(0,Math.min(100,e.progress)),max:100,"aria-label":H(`app.transferProgress`,{fileName:e.fileName})}),(0,x.jsx)(`span`,{className:`transfer-progress-text`,children:e.status===`completed`?H(`app.completed`):e.status===`error`?H(`app.failed`):e.status===`cancelled`?H(`app.cancelled`):e.status===`cancelling`?H(`app.cancelling`):e.loaded&&e.total?`${ye(e.loaded)}/${ye(e.total)}`:`${e.progress}%`})]})]},e.id))]})})]})}var T=i(`/app/`)({component:Fe});export{T as Route};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,o as t,t as n}from"./jsx-runtime-Bt-cYkS5.js";import{C as r,x as i,y as a}from"./userStore-C4vdYsQp.js";import{t as o}from"./arrow-right-RldN7Rwi.js";import{i as s}from"./LanguageToggle-
|
|
1
|
+
import{n as e,o as t,t as n}from"./jsx-runtime-Bt-cYkS5.js";import{C as r,x as i,y as a}from"./userStore-C4vdYsQp.js";import{t as o}from"./arrow-right-RldN7Rwi.js";import{i as s}from"./LanguageToggle-CBpXWdO9.js";import{t as c}from"./download-Bg-OdoxM.js";import{t as l}from"./external-link-m8ZIQe4p.js";import{t as u}from"./hard-drive-BB-sllXA.js";import{t as d}from"./message-square-DaQH7q-P.js";import{t as f}from"./notebook-pen-CqEFOHKx.js";import{t as p}from"./wallet-CozFU6yK.js";import{B as m,P as h,_ as g,g as _}from"./index-BJ7E8LJN.js";import{t as v}from"./MarketingLayout-mQV6ciYc.js";var y=a(`arrow-up-right`,[[`path`,{d:`M7 7h10v10`,key:`1tivn9`}],[`path`,{d:`M7 17 17 7`,key:`1vkiza`}]]),b=a(`folder-open`,[[`path`,{d:`m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2`,key:`usdka0`}]]),x=a(`gamepad-2`,[[`line`,{x1:`6`,x2:`10`,y1:`11`,y2:`11`,key:`1gktln`}],[`line`,{x1:`8`,x2:`8`,y1:`9`,y2:`13`,key:`qnk9ow`}],[`line`,{x1:`15`,x2:`15.01`,y1:`12`,y2:`12`,key:`krot7o`}],[`line`,{x1:`18`,x2:`18.01`,y1:`10`,y2:`10`,key:`1lcuu1`}],[`path`,{d:`M17.32 5H6.68a4 4 0 0 0-3.978 3.59c-.006.052-.01.101-.017.152C2.604 9.416 2 14.456 2 16a3 3 0 0 0 3 3c1 0 1.5-.5 2-1l1.414-1.414A2 2 0 0 1 9.828 16h4.344a2 2 0 0 1 1.414.586L17 18c.5.5 1 1 2 1a3 3 0 0 0 3-3c0-1.545-.604-6.584-.685-7.258-.007-.05-.011-.1-.017-.151A4 4 0 0 0 17.32 5z`,key:`mfqc10`}]]),S=t(e(),1),C=n(),w=[{id:`app`,titleKey:`portal.feature.app.title`,subtitleKey:`portal.feature.app.subtitle`,icon:(0,C.jsx)(b,{size:28}),path:`/app/`,requiresBackend:!0,heroKey:`portal.feature.app.hero`,descKey:`portal.feature.app.desc`,featureKeys:[`portal.feature.app.bullet.localIdentity`,`portal.feature.app.bullet.hyperswarm`,`portal.feature.app.bullet.largeFiles`,`portal.feature.app.bullet.cid`,`portal.feature.app.bullet.seedAfterDownload`,`portal.feature.app.bullet.noCloud`,`portal.feature.app.bullet.desktop`,`portal.feature.app.bullet.openSource`],steps:[{num:`1`,titleKey:`portal.feature.app.step.download.title`,descKey:`portal.feature.app.step.download.desc`,link:`/download/`,linkTextKey:`portal.feature.app.step.download.link`,hideInDesktopClient:!0},{num:`2`,titleKey:`portal.feature.app.step.install.title`,descKey:`portal.feature.app.step.install.desc`,hideInDesktopClient:!0},{num:`3`,titleKey:`portal.feature.app.step.share.title`,descKey:`portal.feature.app.step.share.desc`}]},{id:`chat`,titleKey:`portal.feature.chat.title`,subtitleKey:`portal.feature.chat.subtitle`,icon:(0,C.jsx)(d,{size:28}),path:`/chat/`,requiresBackend:!0,heroKey:`portal.feature.chat.hero`,descKey:`portal.feature.chat.desc`,featureKeys:[`portal.feature.chat.bullet.encrypted`,`portal.feature.chat.bullet.identity`,`portal.feature.chat.bullet.sync`,`portal.feature.chat.bullet.offline`,`portal.feature.chat.bullet.noAccount`],steps:[{num:`1`,titleKey:`portal.feature.chat.step.download.title`,descKey:`portal.feature.chat.step.download.desc`,link:`/download/`,linkTextKey:`portal.feature.chat.step.download.link`,hideInDesktopClient:!0},{num:`2`,titleKey:`portal.feature.chat.step.create.title`,descKey:`portal.feature.chat.step.create.desc`},{num:`3`,titleKey:`portal.feature.chat.step.send.title`,descKey:`portal.feature.chat.step.send.desc`}]},{id:`note`,titleKey:`portal.feature.note.title`,subtitleKey:`portal.feature.note.subtitle`,icon:(0,C.jsx)(f,{size:28}),path:`/note/`,requiresBackend:!1,heroKey:`portal.feature.note.hero`,descKey:`portal.feature.note.desc`,featureKeys:[`portal.feature.note.bullet.markdown`,`portal.feature.note.bullet.privacy`,`portal.feature.note.bullet.folders`,`portal.feature.note.bullet.web3`,`portal.feature.note.bullet.backup`,`portal.feature.note.bullet.independent`],steps:[{num:`1`,titleKey:`portal.feature.note.step.account.title`,descKey:`portal.feature.note.step.account.desc`},{num:`2`,titleKey:`portal.feature.note.step.create.title`,descKey:`portal.feature.note.step.create.desc`},{num:`3`,titleKey:`portal.feature.note.step.backup.title`,descKey:`portal.feature.note.step.backup.desc`}]},{id:`gandengyan`,titleKey:`portal.feature.game.title`,subtitleKey:`portal.feature.game.subtitle`,icon:(0,C.jsx)(x,{size:28}),path:`/game/gandengyan/`,requiresBackend:!0,heroKey:`portal.feature.game.hero`,descKey:`portal.feature.game.desc`,featureKeys:[`portal.feature.game.bullet.account`,`portal.feature.game.bullet.channel`,`portal.feature.game.bullet.link`,`portal.feature.game.bullet.rules`,`portal.feature.game.bullet.maintain`],steps:[{num:`1`,titleKey:`portal.feature.game.step.login.title`,descKey:`portal.feature.game.step.login.desc`},{num:`2`,titleKey:`portal.feature.game.step.create.title`,descKey:`portal.feature.game.step.create.desc`},{num:`3`,titleKey:`portal.feature.game.step.test.title`,descKey:`portal.feature.game.step.test.desc`}]},{id:`web3`,titleKey:`portal.feature.web3.title`,subtitleKey:`portal.feature.web3.subtitle`,icon:(0,C.jsx)(p,{size:28}),path:`/web3/`,requiresBackend:!1,heroKey:`portal.feature.web3.hero`,descKey:`portal.feature.web3.desc`,featureKeys:[`portal.feature.web3.bullet.frontend`,`portal.feature.web3.bullet.keys`,`portal.feature.web3.bullet.mnemonic`,`portal.feature.web3.bullet.eth`,`portal.feature.web3.bullet.pem`,`portal.feature.web3.bullet.qr`],steps:[{num:`1`,titleKey:`portal.feature.web3.step.username.title`,descKey:`portal.feature.web3.step.username.desc`},{num:`2`,titleKey:`portal.feature.web3.step.keys.title`,descKey:`portal.feature.web3.step.keys.desc`},{num:`3`,titleKey:`portal.feature.web3.step.export.title`,descKey:`portal.feature.web3.step.export.desc`}]}];function T(){let e=g(e=>e.hasBackend),t=g(e=>e.openConnectModal),[n,i]=(0,S.useState)(`app`),{t:a}=m(),d=_(),f=w.find(e=>e.id===n)||w[0],p=a(f.titleKey),v=f.steps.filter(e=>!(d&&e.hideInDesktopClient));return(0,C.jsxs)(`div`,{className:`portal-page`,children:[(0,C.jsx)(`section`,{className:`portal-hero`,children:(0,C.jsxs)(`div`,{className:`mkt-container`,children:[(0,C.jsx)(`h1`,{className:`portal-hero-title`,children:a(`common.brand`)}),(0,C.jsx)(`p`,{className:`portal-hero-subtitle`,children:a(`portal.hero.subtitle`)})]})}),(0,C.jsx)(`section`,{className:`portal-cards-section`,children:(0,C.jsxs)(`div`,{className:`mkt-container`,children:[(0,C.jsx)(`div`,{className:`portal-cards`,children:w.map(t=>{let o=n===t.id,s=t.requiresBackend,c=s?e===!0?`connected`:e===!1?`disconnected`:`checking`:`none`,l=a(t.titleKey);return(0,C.jsxs)(`button`,{className:`portal-card ${o?`active`:``}`,onClick:()=>i(t.id),children:[(0,C.jsx)(r,{to:t.path,className:`btn btn-icon portal-card-open-btn`,onClick:e=>e.stopPropagation(),title:a(`portal.openFeature`,{title:l}),children:(0,C.jsx)(y,{size:16})}),(0,C.jsx)(`div`,{className:`portal-card-icon`,children:t.icon}),(0,C.jsx)(`div`,{className:`portal-card-title`,children:l}),(0,C.jsx)(`div`,{className:`portal-card-subtitle`,children:a(t.subtitleKey)}),s?(0,C.jsxs)(`div`,{className:`ui-badge portal-card-status ${c}`,children:[c===`checking`&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`span`,{className:`status-dot checking`}),a(`common.status.checking`)]}),c===`connected`&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`span`,{className:`status-dot connected`}),a(`common.status.connected`)]}),c===`disconnected`&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`span`,{className:`status-dot disconnected`}),a(`common.status.needsConnection`)]})]}):(0,C.jsxs)(`div`,{className:`ui-badge portal-card-status ready`,children:[(0,C.jsx)(`span`,{className:`status-dot ready`}),a(`common.status.ready`)]})]},t.id)})}),(0,C.jsxs)(`div`,{className:`portal-node-actions`,"aria-label":a(`portal.nodeEntry`),children:[(0,C.jsxs)(`button`,{onClick:t,className:`btn btn-secondary`,children:[(0,C.jsx)(h,{size:16}),a(`portal.webConnectNode`)]}),(0,C.jsxs)(r,{to:`/admin/`,className:`btn btn-secondary`,children:[(0,C.jsx)(u,{size:16}),a(`portal.nodeAdmin`)]})]})]})}),(0,C.jsx)(`section`,{className:`portal-marketing`,children:(0,C.jsx)(`div`,{className:`mkt-container`,children:(0,C.jsxs)(`div`,{className:`portal-marketing-inner`,children:[(0,C.jsxs)(`div`,{className:`portal-marketing-header`,children:[(0,C.jsx)(`h2`,{children:a(f.heroKey)}),(0,C.jsx)(`p`,{children:a(f.descKey)})]}),(0,C.jsx)(`div`,{className:`portal-marketing-features`,children:f.featureKeys.map(e=>(0,C.jsxs)(`div`,{className:`portal-feature-item`,children:[(0,C.jsx)(`span`,{className:`portal-feature-icon`,children:(0,C.jsx)(s,{size:14,strokeWidth:3})}),(0,C.jsx)(`span`,{children:a(e)})]},e))}),(0,C.jsx)(`div`,{className:`portal-marketing-steps`,children:v.map((e,t)=>(0,C.jsxs)(`div`,{className:`portal-step`,children:[(0,C.jsx)(`span`,{className:`portal-step-num`,children:t+1}),(0,C.jsxs)(`div`,{className:`portal-step-content`,children:[(0,C.jsx)(`strong`,{children:a(e.titleKey)}),(0,C.jsx)(`p`,{children:a(e.descKey)}),e.code&&(0,C.jsx)(`code`,{className:`portal-step-code`,translate:`no`,children:e.code}),e.link&&e.linkTextKey&&(0,C.jsx)(`p`,{className:`portal-step-link`,children:(0,C.jsxs)(r,{to:e.link,children:[a(e.linkTextKey),` `,(0,C.jsx)(l,{size:12})]})})]})]},e.num))}),(0,C.jsxs)(`div`,{className:`portal-actions`,children:[(0,C.jsxs)(r,{to:f.path,className:`btn btn-primary`,children:[a(`portal.enterFeature`,{title:p}),(0,C.jsx)(o,{size:16})]}),f.requiresBackend&&e===!1&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`button`,{onClick:t,className:`btn btn-secondary`,children:[(0,C.jsx)(h,{size:16}),a(`portal.webConnectNode`)]}),!d&&(0,C.jsxs)(r,{to:`/download/`,className:`btn btn-secondary`,children:[(0,C.jsx)(c,{size:16}),a(`nav.downloadClient`)]})]})]})]})})})]})}function E(){return(0,C.jsx)(v,{children:(0,C.jsx)(T,{})})}var D=i(`/`)({component:E});export{D as Route};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,o as t,t as n}from"./jsx-runtime-Bt-cYkS5.js";import{C as r,x as i,y as a}from"./userStore-C4vdYsQp.js";import{t as o}from"./cloud-DHoTMeZY.js";import{t as s}from"./download-Bg-OdoxM.js";import{B as c}from"./index-
|
|
1
|
+
import{n as e,o as t,t as n}from"./jsx-runtime-Bt-cYkS5.js";import{C as r,x as i,y as a}from"./userStore-C4vdYsQp.js";import{t as o}from"./cloud-DHoTMeZY.js";import{t as s}from"./download-Bg-OdoxM.js";import{B as c}from"./index-BJ7E8LJN.js";import{t as l}from"./MarketingHeader-CkcBATx2.js";import{n as u}from"./format-CR8oUWq6.js";var d=a(`apple`,[[`path`,{d:`M12 6.528V3a1 1 0 0 1 1-1h0`,key:`11qiee`}],[`path`,{d:`M18.237 21A15 15 0 0 0 22 11a6 6 0 0 0-10-4.472A6 6 0 0 0 2 11a15.1 15.1 0 0 0 3.763 10 3 3 0 0 0 3.648.648 5.5 5.5 0 0 1 5.178 0A3 3 0 0 0 18.237 21`,key:`110c12`}]]),f=a(`code`,[[`path`,{d:`m16 18 6-6-6-6`,key:`eg8j8`}],[`path`,{d:`m8 6-6 6 6 6`,key:`ppft3o`}]]),p=a(`laptop`,[[`path`,{d:`M18 5a2 2 0 0 1 2 2v8.526a2 2 0 0 0 .212.897l1.068 2.127a1 1 0 0 1-.9 1.45H3.62a1 1 0 0 1-.9-1.45l1.068-2.127A2 2 0 0 0 4 15.526V7a2 2 0 0 1 2-2z`,key:`1pdavp`}],[`path`,{d:`M20.054 15.987H3.946`,key:`14rxg9`}]]),m=a(`monitor`,[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]),h=t(e(),1),g=n(),_=`https://github.com/most-people/most/releases/latest`,v=`${`https://download.most.box`.replace(/\/+$/,``)}/releases/latest.json`,y=[{platform:`windows`,arch:`x64`,kind:`installer`,filename:`GitHub Releases`,githubUrl:_},{platform:`windows`,arch:`arm64`,kind:`installer`,filename:`GitHub Releases`,githubUrl:_},{platform:`macos`,arch:`x64`,kind:`installer`,filename:`GitHub Releases`,githubUrl:_},{platform:`macos`,arch:`arm64`,kind:`installer`,filename:`GitHub Releases`,githubUrl:_},{platform:`linux`,arch:`x64`,kind:`installer`,filename:`GitHub Releases`,githubUrl:_},{platform:`linux`,arch:`arm64`,kind:`installer`,filename:`GitHub Releases`,githubUrl:_}],b={windows:{name:`Windows`,ext:`.exe`,descKey:`download.platform.windows.desc`,icon:m},macos:{name:`macOS`,ext:`.dmg`,descKey:`download.platform.macos.desc`,icon:d},linux:{name:`Linux`,ext:`.AppImage`,descKey:`download.platform.linux.desc`,icon:p}};function x(e){return typeof e==`object`&&!!e}function S(e){return x(e)?[`windows`,`macos`,`linux`].includes(String(e.platform))&&[`x64`,`arm64`].includes(String(e.arch))&&e.kind===`installer`&&typeof e.filename==`string`&&typeof e.githubUrl==`string`&&(typeof e.r2Url==`string`||e.r2Url===void 0):!1}function C(e){return!x(e)||typeof e.version!=`string`||typeof e.publishedAt!=`string`||!Array.isArray(e.assets)?!1:e.assets.every(S)}function w(){return[navigator.userAgentData?.platform,navigator.platform,navigator.userAgent].filter(Boolean).join(` `).toLowerCase()}function T(){if(typeof navigator>`u`)return`windows:x64`;let e=w(),t=/arm|aarch64/.test(e)?`arm64`:`x64`;return/mac|darwin/.test(e)?`macos:${t}`:/linux/.test(e)?`linux:${t}`:`windows:${t}`}function E(){let{t:e}=c(),[t,n]=(0,h.useState)(null),[r,i]=(0,h.useState)(v?`loading`:`fallback`),[a,l]=(0,h.useState)(`windows:x64`),[d,p]=(0,h.useState)(`r2`);(0,h.useEffect)(()=>{l(T())},[]),(0,h.useEffect)(()=>{if(!v)return;let e=new AbortController;return fetch(v,{cache:`no-store`,signal:e.signal}).then(e=>{if(!e.ok)throw Error(`Manifest request failed: ${e.status}`);return e.json()}).then(e=>{if(!C(e))throw Error(`Invalid download manifest`);n(e),i(`ready`)}).catch(e=>{e instanceof DOMException&&e.name===`AbortError`||(n(null),i(`fallback`))}),()=>e.abort()},[]),(0,h.useEffect)(()=>{r===`fallback`&&p(`github`)},[r]);let m=t?.assets.length?t.assets:y,_=m.some(e=>e.r2Url),x=d===`r2`&&_?`r2`:`github`;return(0,g.jsxs)(`div`,{className:`download-options`,children:[(0,g.jsxs)(`div`,{className:`ui-segmented-control download-source-tabs`,role:`tablist`,"aria-label":e(`download.source.label`),children:[(0,g.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":x===`r2`,disabled:!_,className:x===`r2`?`ui-segmented-option download-source-tab is-active`:`ui-segmented-option download-source-tab`,onClick:()=>p(`r2`),children:[(0,g.jsx)(o,{size:15}),`Cloudflare R2`]}),(0,g.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":x===`github`,className:x===`github`?`ui-segmented-option download-source-tab is-active`:`ui-segmented-option download-source-tab`,onClick:()=>p(`github`),children:[(0,g.jsx)(f,{size:15}),`GitHub Releases`]})]}),(0,g.jsx)(`p`,{className:`download-source-note`,children:r===`loading`?e(`download.source.loading`):r===`ready`&&t?e(`download.source.ready`,{version:t.version}):e(`download.source.fallback`)}),(0,g.jsx)(`div`,{className:`download-platform-grid`,children:m.map(t=>{let n=b[t.platform],r=n.icon,i=`${t.platform}:${t.arch}`,o=x===`r2`&&t.r2Url?t.r2Url:t.githubUrl,c=i===a;return(0,g.jsxs)(`article`,{className:c?`download-platform-card is-recommended`:`download-platform-card`,children:[(0,g.jsx)(`div`,{className:`download-platform-icon`,children:(0,g.jsx)(r,{size:32})}),(0,g.jsxs)(`div`,{className:`download-platform-content`,children:[(0,g.jsxs)(`div`,{className:`download-platform-heading`,children:[(0,g.jsx)(`h3`,{children:n.name}),(0,g.jsx)(`span`,{children:t.arch})]}),(0,g.jsx)(`p`,{children:e(n.descKey)}),(0,g.jsxs)(`dl`,{className:`download-platform-meta`,children:[(0,g.jsxs)(`div`,{children:[(0,g.jsx)(`dt`,{children:e(`download.platform.source`)}),(0,g.jsx)(`dd`,{children:x===`r2`&&t.r2Url?e(`download.source.r2Mirror`):`GitHub Releases`})]}),t.size?(0,g.jsxs)(`div`,{children:[(0,g.jsx)(`dt`,{children:e(`download.platform.size`)}),(0,g.jsx)(`dd`,{children:u(t.size)})]}):null,t.sha256?(0,g.jsxs)(`div`,{children:[(0,g.jsx)(`dt`,{children:`SHA256`}),(0,g.jsx)(`dd`,{children:t.sha256.slice(0,12)})]}):null]}),(0,g.jsx)(`div`,{className:`download-platform-actions`,children:(0,g.jsxs)(`a`,{href:o,className:`btn btn-primary`,children:[(0,g.jsx)(s,{size:16}),e(`download.platform.action`,{ext:n.ext})]})})]}),c?(0,g.jsx)(`span`,{className:`download-recommended-badge`,children:e(`download.platform.current`)}):null]},i)})})]})}var D=[{featureKey:`download.comparison.node`,webKey:`download.comparison.webConnectsNode`,desktopKey:`download.comparison.desktopBuiltinNode`},{featureKey:`download.comparison.fileSharing`,webKey:`download.comparison.webDependsNode`,desktopKey:`download.comparison.desktopFull`},{featureKey:`download.comparison.verification`,webKey:`download.comparison.webDependsNode`,desktopKey:`download.comparison.desktopFull`},{featureKey:`download.comparison.seeding`,webKey:`download.comparison.webDependsNode`,desktopKey:`download.comparison.desktopDefaultOn`},{featureKey:`download.comparison.largeFiles`,webKey:`download.comparison.webDependsNode`,desktopKey:`download.comparison.desktop10gb`}];function O(){let{t:e}=c();return(0,h.useEffect)(()=>{document.title=e(`download.meta.title`)},[e]),(0,g.jsxs)(`div`,{className:`download-page`,children:[(0,g.jsx)(l,{}),(0,g.jsx)(`section`,{className:`download-hero`,children:(0,g.jsxs)(`div`,{className:`mkt-container`,children:[(0,g.jsx)(`div`,{className:`download-hero-icon`,children:(0,g.jsx)(s,{size:40})}),(0,g.jsx)(`h1`,{className:`download-hero-title`,children:e(`download.hero.title`)}),(0,g.jsx)(`p`,{className:`download-hero-desc`,children:e(`download.hero.desc`)})]})}),(0,g.jsx)(`section`,{className:`download-platforms`,children:(0,g.jsxs)(`div`,{className:`mkt-container`,children:[(0,g.jsx)(`h2`,{className:`download-section-title`,children:e(`download.platforms.title`)}),(0,g.jsx)(E,{})]})}),(0,g.jsx)(`section`,{className:`download-comparison`,children:(0,g.jsxs)(`div`,{className:`mkt-container`,children:[(0,g.jsx)(`h2`,{className:`download-section-title`,children:e(`download.comparison.title`)}),(0,g.jsx)(`div`,{className:`download-table-wrap`,children:(0,g.jsxs)(`table`,{className:`download-table`,children:[(0,g.jsx)(`thead`,{children:(0,g.jsxs)(`tr`,{children:[(0,g.jsx)(`th`,{children:e(`download.comparison.feature`)}),(0,g.jsx)(`th`,{children:e(`download.comparison.web`)}),(0,g.jsx)(`th`,{children:e(`download.comparison.desktop`)})]})}),(0,g.jsx)(`tbody`,{children:D.map(t=>(0,g.jsxs)(`tr`,{children:[(0,g.jsx)(`td`,{children:e(t.featureKey)}),(0,g.jsx)(`td`,{className:`col-web`,children:e(t.webKey)}),(0,g.jsx)(`td`,{className:`col-desktop`,children:e(t.desktopKey)})]},t.featureKey))})]})})]})}),(0,g.jsx)(`section`,{className:`download-cta`,children:(0,g.jsx)(`div`,{className:`mkt-container`,children:(0,g.jsx)(`p`,{className:`download-hero-desc`,children:e(`download.npmNote`)})})}),(0,g.jsx)(`section`,{className:`download-cta`,children:(0,g.jsx)(`div`,{className:`mkt-container`,children:(0,g.jsx)(r,{to:`/`,className:`btn btn-primary`,children:e(`common.backHome`)})})}),(0,g.jsx)(`footer`,{className:`mkt-footer`,children:(0,g.jsx)(`div`,{className:`mkt-container`,children:(0,g.jsx)(`div`,{className:`mkt-footer-inner`,children:(0,g.jsx)(`p`,{className:`mkt-footer-copy`,children:`MostBox`})})})})]})}var k=i(`/download/`)({component:O});export{k as Route};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{n as e,o as t,r as n,t as r}from"./jsx-runtime-Bt-cYkS5.js";import{x as i,y as a}from"./userStore-C4vdYsQp.js";import{n as o,t as s}from"./triangle-alert-DP9EP7IM.js";import{t as c}from"./download-Bg-OdoxM.js";import{t as l}from"./file-text-DG1orIkZ.js";import{t as u}from"./hard-drive-BB-sllXA.js";import{t as d}from"./refresh-cw-roxAhABl.js";import{t as f}from"./save-DR0O9ReR.js";import{t as p}from"./shield-check-BwcvTU4U.js";import{t as m}from"./trash-2-CNpsqYc1.js";import{t as h}from"./wifi-DIR3g_8A.js";import{B as g,E as _,P as v,T as ee,_ as y,v as b,x}from"./index-
|
|
1
|
+
import{n as e,o as t,r as n,t as r}from"./jsx-runtime-Bt-cYkS5.js";import{x as i,y as a}from"./userStore-C4vdYsQp.js";import{n as o,t as s}from"./triangle-alert-DP9EP7IM.js";import{t as c}from"./download-Bg-OdoxM.js";import{t as l}from"./file-text-DG1orIkZ.js";import{t as u}from"./hard-drive-BB-sllXA.js";import{t as d}from"./refresh-cw-roxAhABl.js";import{t as f}from"./save-DR0O9ReR.js";import{t as p}from"./shield-check-BwcvTU4U.js";import{t as m}from"./trash-2-CNpsqYc1.js";import{t as h}from"./wifi-DIR3g_8A.js";import{B as g,E as _,P as v,T as ee,_ as y,v as b,x}from"./index-BJ7E8LJN.js";import{t as S}from"./dayjs.min-Dcc0B6Je.js";import{t as te}from"./MarketingHeader-CkcBATx2.js";import{t as C}from"./format-CR8oUWq6.js";var ne=a(`activity`,[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]),re=a(`clipboard`,[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}]]),w=a(`database`,[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]),T=n(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_plugin_relativeTime=r()})(e,(function(){return function(e,t,n){e||={};var r=t.prototype,i={future:`in %s`,past:`%s ago`,s:`a few seconds`,m:`a minute`,mm:`%d minutes`,h:`an hour`,hh:`%d hours`,d:`a day`,dd:`%d days`,M:`a month`,MM:`%d months`,y:`a year`,yy:`%d years`};function a(e,t,n,i){return r.fromToBase(e,t,n,i)}n.en.relativeTime=i,r.fromToBase=function(t,r,a,o,s){for(var c,l,u,d=a.$locale().relativeTime||i,f=e.thresholds||[{l:`s`,r:44,d:`second`},{l:`m`,r:89},{l:`mm`,r:44,d:`minute`},{l:`h`,r:89},{l:`hh`,r:21,d:`hour`},{l:`d`,r:35},{l:`dd`,r:25,d:`day`},{l:`M`,r:45},{l:`MM`,r:10,d:`month`},{l:`y`,r:17},{l:`yy`,d:`year`}],p=f.length,m=0;m<p;m+=1){var h=f[m];h.d&&(c=o?n(t).diff(a,h.d,!0):a.diff(t,h.d,!0));var g=(e.rounding||Math.round)(Math.abs(c));if(u=c>0,g<=h.r||!h.r){g<=1&&m>0&&(h=f[m-1]);var _=d[h.l];s&&(g=s(``+g)),l=typeof _==`string`?_.replace(`%d`,g):_(g,r,h.l,u);break}}if(r)return l;var v=u?d.future:d.past;return typeof v==`function`?v(l):v.replace(`%s`,l)},r.to=function(e,t){return a(e,t,this,!0)},r.from=function(e,t){return a(e,t,this)};var o=function(e){return e.$u?n.utc():n()};r.toNow=function(e){return this.to(o(this),e)},r.fromNow=function(e){return this.from(o(this),e)}}}))})),E=n(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r(S()):typeof define==`function`&&define.amd?define([`dayjs`],r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_locale_zh_cn=r(n.dayjs)})(e,(function(e){function t(e){return e&&typeof e==`object`&&`default`in e?e:{default:e}}var n=t(e),r={name:`zh-cn`,weekdays:`星期日_星期一_星期二_星期三_星期四_星期五_星期六`.split(`_`),weekdaysShort:`周日_周一_周二_周三_周四_周五_周六`.split(`_`),weekdaysMin:`日_一_二_三_四_五_六`.split(`_`),months:`一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月`.split(`_`),monthsShort:`1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月`.split(`_`),ordinal:function(e,t){return t===`W`?e+`周`:e+`日`},weekStart:1,yearStart:4,formats:{LT:`HH:mm`,LTS:`HH:mm:ss`,L:`YYYY/MM/DD`,LL:`YYYY年M月D日`,LLL:`YYYY年M月D日Ah点mm分`,LLLL:`YYYY年M月D日ddddAh点mm分`,l:`YYYY/M/D`,ll:`YYYY年M月D日`,lll:`YYYY年M月D日 HH:mm`,llll:`YYYY年M月D日dddd HH:mm`},relativeTime:{future:`%s内`,past:`%s前`,s:`几秒`,m:`1 分钟`,mm:`%d 分钟`,h:`1 小时`,hh:`%d 小时`,d:`1 天`,dd:`%d 天`,M:`1 个月`,MM:`%d 个月`,y:`1 年`,yy:`%d 年`},meridiem:function(e,t){var n=100*e+t;return n<600?`凌晨`:n<900?`早上`:n<1100?`上午`:n<1300?`中午`:n<1800?`下午`:`晚上`}};return n.default.locale(r,null,!0),r}))})),D=n(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r(S()):typeof define==`function`&&define.amd?define([`dayjs`],r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_locale_zh_tw=r(n.dayjs)})(e,(function(e){function t(e){return e&&typeof e==`object`&&`default`in e?e:{default:e}}var n=t(e),r={name:`zh-tw`,weekdays:`星期日_星期一_星期二_星期三_星期四_星期五_星期六`.split(`_`),weekdaysShort:`週日_週一_週二_週三_週四_週五_週六`.split(`_`),weekdaysMin:`日_一_二_三_四_五_六`.split(`_`),months:`一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月`.split(`_`),monthsShort:`1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月`.split(`_`),ordinal:function(e,t){return t===`W`?e+`週`:e+`日`},formats:{LT:`HH:mm`,LTS:`HH:mm:ss`,L:`YYYY/MM/DD`,LL:`YYYY年M月D日`,LLL:`YYYY年M月D日 HH:mm`,LLLL:`YYYY年M月D日dddd HH:mm`,l:`YYYY/M/D`,ll:`YYYY年M月D日`,lll:`YYYY年M月D日 HH:mm`,llll:`YYYY年M月D日dddd HH:mm`},relativeTime:{future:`%s內`,past:`%s前`,s:`幾秒`,m:`1 分鐘`,mm:`%d 分鐘`,h:`1 小時`,hh:`%d 小時`,d:`1 天`,dd:`%d 天`,M:`1 個月`,MM:`%d 個月`,y:`1 年`,yy:`%d 年`},meridiem:function(e,t){var n=100*e+t;return n<600?`凌晨`:n<900?`早上`:n<1100?`上午`:n<1300?`中午`:n<1800?`下午`:`晚上`}};return n.default.locale(r,null,!0),r}))})),O=t(e(),1),k=t(S(),1),A=t(T(),1);E(),D();var j=r();k.default.extend(A.default);var ie=null;function ae(e,t){let n=Math.max(0,Number(e)||0),r=Math.floor(n/86400),i=Math.floor(n%86400/3600),a=Math.floor(n%3600/60);return r>0?t(`admin.uptime.daysHours`,{days:r,hours:i}):i>0?t(`admin.uptime.hoursMinutes`,{hours:i,minutes:a}):t(`admin.uptime.minutes`,{minutes:a})}function M(e){return Number.isFinite(e)?String(Math.round(e/(1024*1024*1024)*100)/100):`0`}function N(e){let t=Number(e);return!Number.isFinite(t)||t<0?0:Math.round(t*1024*1024*1024)}function oe(e){return Array.from(new Set(String(e||``).split(/[\n,]/).map(e=>e.trim()).filter(Boolean)))}function P(e,t=12,n=8){return e?e.length<=t+n+3?e:`${e.slice(0,t)}...${e.slice(-n)}`:`-`}function se(e,t){switch(e.seedStatus){case`queued`:return t(`admin.seedStatus.queued`);case`joining`:return t(`admin.seedStatus.joining`);case`active`:return t(`admin.seedStatus.active`);case`paused`:return t(`admin.seedStatus.paused`);case`error`:return e.seedError?t(`admin.seedStatus.errorWithMessage`,{message:e.seedError}):t(`admin.seedStatus.error`);default:return e.joined?t(`admin.seedStatus.active`):t(`admin.seedStatus.notJoined`)}}function F(e){return{"zh-CN":`zh-cn`,"zh-TW":`zh-tw`,en:`en`}[e]}function ce(e,t,n){if(!e)return t(`admin.time.never`);let r=(0,k.default)(e);if(!r.isValid())return t(`admin.time.never`);if(r.isAfter((0,k.default)()))return t(`admin.time.justNow`);let i=F(n);return r.locale(i).from((0,k.default)().locale(i))}var le=[{labelKey:`admin.seedHelp.active.label`,tone:`active`,descKey:`admin.seedHelp.active.desc`},{labelKey:`admin.seedHelp.pending.label`,tone:`pending`,descKey:`admin.seedHelp.pending.desc`},{labelKey:`admin.seedHelp.paused.label`,tone:`muted`,descKey:`admin.seedHelp.paused.desc`},{labelKey:`admin.seedHelp.error.label`,tone:`error`,descKey:`admin.seedHelp.error.desc`}],ue=[{value:`all`,labelKey:`admin.logFilter.all`},{value:`join`,labelKey:`admin.logFilter.join`},{value:`pull`,labelKey:`admin.logFilter.pull`},{value:`verify`,labelKey:`admin.logFilter.verify`},{value:`serve`,labelKey:`admin.logFilter.serve`},{value:`error`,labelKey:`admin.logFilter.error`}],I={join:[`join`,`joined`,`topic`],pull:[`pull`,`p2p`],verify:[`verify`,`verified`,`integrity`,`download:success`],serve:[`seed`,`seeding`,`holding`,`publish:success`,`topic:joined`],error:[`error`,`failed`,`fail`]};function L(e){let t=``;try{t=JSON.stringify(e.data||{})}catch{}return[e.level,e.event,e.message,t].map(e=>String(e||``).toLowerCase()).join(` `)}function de(e,t){let n=String(t||`all`).trim().toLowerCase();if(!n||n===`all`)return!0;let r=L(e);return n===`error`?e.level===`error`||I.error.some(e=>r.includes(e)):(I[n]||[n]).some(e=>r.includes(e))}function R(){let{t:e,locale:t,formatNumber:n,formatTime:r}=g(),i=y(e=>e.hasBackend),a=y(e=>e.addToast),[S,T]=(0,O.useState)(ie),[E,D]=(0,O.useState)([]),[k,A]=(0,O.useState)(``),[F,I]=(0,O.useState)(!1),[L,R]=(0,O.useState)(!1),[z,B]=(0,O.useState)(!1),[V,fe]=(0,O.useState)(`all`),[H,pe]=(0,O.useState)([]),[me,U]=(0,O.useState)(``),[W,G]=(0,O.useState)({dataPath:``,capacityGiB:`100`,maxFileSizeGiB:`10`,remoteInvites:``}),K=i===!0;function q(){return K?!0:(a(e(i===null?`admin.toast.backendChecking`:`admin.toast.backendDisconnected`),`warning`),!1)}let J=(0,O.useMemo)(()=>!S||S.capacity.configuredBytes<=0?0:Math.min(100,Math.round(S.capacity.usedBytes/S.capacity.configuredBytes*100)),[S]),he=(0,O.useMemo)(()=>(S?.holdings||[]).slice(0,100),[S]),Y=Math.max(0,(S?.holdings.length||0)-100),X=_(),Z=!!X&&!X.includes(`localhost`)&&!X.includes(`127.0.0.1`),Q=async()=>{if(!K)return!1;try{let e=await b.get(`/api/node/status`).json(),t=await b.get(`/api/node/config`).json();return T(e),G({dataPath:t.dataPath||e.dataPath||``,capacityGiB:M(t.capacityBytes),maxFileSizeGiB:M(t.maxFileSizeBytes),remoteInvites:(t.remoteInvites||[]).join(`
|
|
2
2
|
`)}),A(``),!0}catch(t){let n=await x(t,e(`admin.error.readStatus`));return A(n),a(n,`error`),!1}},ge=async()=>{q()&&await Q()&&a(e(`admin.toast.statusRefreshed`),`success`)},$=async(e=V)=>{if(K)try{let t=new URLSearchParams({limit:`80`,filter:e});D((await b.get(`/api/node/logs?${t.toString()}`).json()).logs||[])}catch{}},_e=async()=>{if(K)try{pe((await b.get(`/api/admin/users`).json()).users||[])}catch{}},ve=async()=>{if(q()){I(!0);try{await b.post(`/api/node/config`,{json:{dataPath:W.dataPath,capacityBytes:N(W.capacityGiB),maxFileSizeBytes:N(W.maxFileSizeGiB),remoteInvites:oe(W.remoteInvites)}}).json(),a(W.dataPath===(S?.dataPath||``)?e(`admin.toast.configSaved`):e(`admin.toast.configSavedRestart`),`success`),await Q(),await $()}catch(t){let n=await x(t,e(`admin.error.saveConfig`));a(n,`error`),A(n)}finally{I(!1)}}},ye=async()=>{S?.nodeId&&(await navigator.clipboard.writeText(S.nodeId),a(e(`admin.toast.nodeIdCopied`),`success`))},be=async()=>{if(q()){R(!0);try{await b.delete(`/api/node/logs`).json(),D([]),a(e(`admin.toast.logsCleared`),`success`)}catch(t){let n=await x(t,e(`admin.error.clearLogs`));a(n,`error`),A(n)}finally{R(!1)}}},xe=async()=>{if(q()){B(!0);try{let t=await b.get(`/api/node/diagnostics`).json(),n=new Blob([JSON.stringify(t,null,2)],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`),o=new Date().toISOString().replace(/[:.]/g,`-`);i.href=r,i.download=`mostbox-diagnostics-${o}.json`,document.body.appendChild(i),i.click(),i.remove(),URL.revokeObjectURL(r),a(e(`admin.toast.diagnosticsExported`),`success`)}catch(t){let n=await x(t,e(`admin.error.exportDiagnostics`));a(n,`error`),A(n)}finally{B(!1)}}},Se=async t=>{if(q()&&window.confirm(e(`admin.confirm.clearUserData`,{address:`${t.slice(0,6)}...${t.slice(-4)}`}))){U(t);try{await b.delete(`/api/admin/users/${t}/data`).json(),a(e(`admin.toast.userDataCleared`),`success`),await _e(),await Q()}catch(t){let n=await x(t,e(`admin.error.clearUserData`));a(n,`error`),A(n)}finally{U(``)}}};return(0,O.useEffect)(()=>{if(!K||Z)return;Q(),$(),_e();let e=null,t=!1;return(async()=>{if(e=new WebSocket(await ee(`/ws`)),t){e.close();return}e.onmessage=e=>{try{let t=JSON.parse(e.data);t.event===`node:status`&&T(t.data),t.event===`node:log`&&de(t.data,V)&&D(e=>[t.data,...e].slice(0,80)),t.event===`node:logs:cleared`&&D([]),(t.event===`publish:success`||t.event===`download:success`||t.event===`network:status`)&&Q()}catch{}}})(),()=>{t=!0,e?.close()}},[K,Z,V]),(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(te,{}),(0,j.jsxs)(`main`,{className:`admin-page`,children:[(0,j.jsxs)(`header`,{className:`admin-topbar`,children:[(0,j.jsx)(`div`,{className:`admin-title-group`,children:(0,j.jsx)(`h1`,{children:e(`admin.title`)})}),(0,j.jsxs)(`div`,{className:`admin-topbar-actions`,children:[(0,j.jsxs)(`span`,{className:`admin-status-pill ${S?.status===`online`?`online`:``}`,children:[(0,j.jsx)(ne,{size:14}),S?.status===`online`?e(`admin.status.online`):e(`admin.status.waiting`)]}),(0,j.jsxs)(`button`,{className:`btn btn-secondary`,onClick:ge,children:[(0,j.jsx)(d,{size:16}),e(`admin.action.refresh`)]})]})]}),i===!1&&(0,j.jsxs)(`section`,{className:`admin-panel admin-error`,children:[(0,j.jsx)(v,{size:20}),(0,j.jsx)(`span`,{children:e(`admin.error.localDaemonDisconnected`)})]}),Z&&(0,j.jsxs)(`section`,{className:`admin-panel admin-error`,children:[(0,j.jsx)(s,{size:18}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`h2`,{children:e(`admin.remoteUnavailable.title`)}),(0,j.jsx)(`p`,{children:e(`admin.remoteUnavailable.desc`)})]})]}),!Z&&k&&(0,j.jsxs)(`section`,{className:`admin-panel admin-error`,children:[(0,j.jsx)(l,{size:20}),(0,j.jsx)(`span`,{children:k})]}),!Z&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)(`section`,{className:`admin-overview`,children:[(0,j.jsxs)(`div`,{className:`admin-metric`,children:[(0,j.jsx)(`div`,{className:`admin-metric-icon`,children:(0,j.jsx)(p,{size:18})}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`span`,{children:e(`admin.metric.nodeId`)}),(0,j.jsx)(`strong`,{translate:`no`,children:P(S?.nodeId||``)})]}),(0,j.jsx)(`button`,{className:`btn btn-icon admin-metric-action`,onClick:ye,"aria-label":e(`admin.action.copyNodeId`),children:(0,j.jsx)(re,{size:15})})]}),(0,j.jsxs)(`div`,{className:`admin-metric`,children:[(0,j.jsx)(`div`,{className:`admin-metric-icon`,children:(0,j.jsx)(h,{size:18})}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`span`,{children:e(`admin.metric.connections`)}),(0,j.jsx)(`strong`,{children:S?e(`admin.metric.peers`,{count:S.network.peers}):`-`})]})]}),(0,j.jsxs)(`div`,{className:`admin-metric`,children:[(0,j.jsx)(`div`,{className:`admin-metric-icon`,children:(0,j.jsx)(u,{size:18})}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`span`,{children:e(`admin.metric.capacity`)}),(0,j.jsxs)(`strong`,{children:[J,`%`]})]})]}),(0,j.jsxs)(`div`,{className:`admin-metric`,children:[(0,j.jsx)(`div`,{className:`admin-metric-icon`,children:(0,j.jsx)(v,{size:18})}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`span`,{children:e(`admin.metric.uptime`)}),(0,j.jsx)(`strong`,{children:S?ae(S.uptimeSeconds,e):`-`})]})]})]}),(0,j.jsxs)(`section`,{className:`admin-grid`,children:[(0,j.jsxs)(`div`,{className:`admin-panel admin-span-2`,children:[(0,j.jsxs)(`div`,{className:`admin-panel-header`,children:[(0,j.jsx)(`div`,{children:(0,j.jsx)(`h2`,{children:e(`admin.nodeStatus.title`)})}),(0,j.jsx)(o,{size:18})]}),(0,j.jsxs)(`div`,{className:`admin-status-grid`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`span`,{children:e(`admin.nodeStatus.version`)}),(0,j.jsx)(`strong`,{translate:`no`,children:S?.version||`-`})]}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`span`,{children:e(`admin.nodeStatus.listen`)}),(0,j.jsx)(`strong`,{translate:`no`,children:S?`${S.host}:${S.port}`:`-`})]}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`span`,{children:e(`admin.nodeStatus.dataPath`)}),(0,j.jsx)(`strong`,{translate:`no`,children:S?.dataPath||`-`})]})]}),(0,j.jsx)(`div`,{className:`admin-address-list`,children:(S?.listen.addresses||[]).map(e=>(0,j.jsxs)(`span`,{translate:`no`,children:[e.label,`: `,e.ip,`:`,S?.port]},`${e.type}-${e.ip}`))})]}),(0,j.jsxs)(`div`,{className:`admin-panel admin-span-2`,children:[(0,j.jsxs)(`div`,{className:`admin-panel-header`,children:[(0,j.jsx)(`div`,{children:(0,j.jsx)(`h2`,{children:e(`admin.userData.title`)})}),(0,j.jsx)(w,{size:18})]}),(0,j.jsxs)(`div`,{className:`admin-table`,children:[(0,j.jsxs)(`div`,{className:`admin-table-row admin-table-head`,children:[(0,j.jsx)(`span`,{children:e(`admin.userData.user`)}),(0,j.jsx)(`span`,{children:e(`admin.userData.files`)}),(0,j.jsx)(`span`,{children:e(`admin.userData.trash`)}),(0,j.jsx)(`span`,{children:e(`admin.userData.actions`)})]}),H.map(t=>(0,j.jsxs)(`div`,{className:`admin-table-row`,children:[(0,j.jsx)(`span`,{title:t.address,translate:`no`,children:P(t.address)}),(0,j.jsx)(`span`,{children:n(t.fileCount)}),(0,j.jsx)(`span`,{children:n(t.trashCount)}),(0,j.jsx)(`span`,{children:(0,j.jsxs)(`button`,{className:`btn btn-ghost`,onClick:()=>Se(t.address),disabled:me===t.address,children:[(0,j.jsx)(m,{size:16}),e(`admin.action.clear`)]})})]},t.address)),H.length===0&&(0,j.jsx)(`div`,{className:`admin-empty-row`,children:e(`admin.userData.empty`)})]})]}),(0,j.jsxs)(`div`,{className:`admin-panel admin-span-2`,children:[(0,j.jsxs)(`div`,{className:`admin-panel-header`,children:[(0,j.jsx)(`div`,{children:(0,j.jsx)(`h2`,{children:e(`admin.settings.title`)})}),(0,j.jsx)(w,{size:18})]}),(0,j.jsxs)(`div`,{className:`admin-settings-fields`,children:[(0,j.jsxs)(`label`,{className:`admin-field admin-field-wide`,children:[(0,j.jsx)(`span`,{children:e(`admin.settings.dataPath`)}),(0,j.jsx)(`input`,{className:`input`,value:W.dataPath,onChange:e=>G(t=>({...t,dataPath:e.target.value}))})]}),(0,j.jsxs)(`label`,{className:`admin-field`,children:[(0,j.jsx)(`span`,{children:e(`admin.settings.capacityGiB`)}),(0,j.jsx)(`input`,{className:`input`,type:`number`,min:`0`,step:`1`,value:W.capacityGiB,onChange:e=>G(t=>({...t,capacityGiB:e.target.value}))})]}),(0,j.jsxs)(`label`,{className:`admin-field`,children:[(0,j.jsx)(`span`,{children:e(`admin.settings.maxFileSizeGiB`)}),(0,j.jsx)(`input`,{className:`input`,type:`number`,min:`0`,step:`1`,value:W.maxFileSizeGiB,onChange:e=>G(t=>({...t,maxFileSizeGiB:e.target.value}))})]}),(0,j.jsxs)(`label`,{className:`admin-field admin-field-wide`,children:[(0,j.jsx)(`span`,{children:e(`admin.settings.remoteInvites`)}),(0,j.jsx)(`textarea`,{className:`input admin-textarea`,value:W.remoteInvites,placeholder:e(`admin.settings.remoteInvitesPlaceholder`),onChange:e=>G(t=>({...t,remoteInvites:e.target.value}))})]})]}),(0,j.jsx)(`p`,{className:`admin-field-hint`,children:e(`admin.settings.hint`)}),(0,j.jsxs)(`button`,{className:`btn btn-primary btn-full`,onClick:ve,disabled:F,children:[(0,j.jsx)(f,{size:16}),e(`admin.action.saveConfig`)]})]}),(0,j.jsxs)(`div`,{className:`admin-panel admin-span-2`,children:[(0,j.jsxs)(`div`,{className:`admin-panel-header`,children:[(0,j.jsx)(`div`,{children:(0,j.jsx)(`h2`,{children:e(`admin.holdings.title`)})}),(0,j.jsx)(u,{size:18})]}),(0,j.jsxs)(`div`,{className:`admin-capacity-row`,children:[(0,j.jsx)(`progress`,{value:J,max:`100`}),(0,j.jsxs)(`span`,{children:[C(S?.capacity.usedBytes||0),` /`,` `,C(S?.capacity.configuredBytes||0)]})]}),(0,j.jsx)(`div`,{className:`admin-seed-help`,"aria-label":e(`admin.seedHelp.label`),children:le.map(t=>(0,j.jsxs)(`div`,{className:`admin-seed-help-item`,children:[(0,j.jsx)(`span`,{className:`admin-seed-dot ${t.tone}`}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`strong`,{children:e(t.labelKey)}),(0,j.jsx)(`span`,{children:e(t.descKey)})]})]},t.labelKey))}),Y>0&&(0,j.jsx)(`p`,{className:`admin-table-note`,children:e(`admin.holdings.hiddenCount`,{count:n(Y)})}),(0,j.jsxs)(`div`,{className:`admin-table`,children:[(0,j.jsxs)(`div`,{className:`admin-table-row admin-table-head`,children:[(0,j.jsx)(`span`,{children:e(`admin.holdings.file`)}),(0,j.jsx)(`span`,{children:`CID`}),(0,j.jsx)(`span`,{children:e(`admin.holdings.size`)}),(0,j.jsx)(`span`,{children:`Peer`}),(0,j.jsx)(`span`,{children:e(`admin.holdings.lastServed`)}),(0,j.jsx)(`span`,{children:e(`admin.holdings.status`)})]}),he.map(n=>(0,j.jsxs)(`div`,{className:`admin-table-row`,children:[(0,j.jsx)(`span`,{translate:`no`,children:n.fileName||`-`}),(0,j.jsx)(`span`,{title:n.cid,translate:`no`,children:P(n.cid)}),(0,j.jsx)(`span`,{children:C(n.size)}),(0,j.jsx)(`span`,{children:n.peerCount??0}),(0,j.jsx)(`span`,{title:n.lastServedAt||``,children:ce(n.lastServedAt,e,t)}),(0,j.jsx)(`span`,{className:`admin-seed-pill ${n.seedStatus===`error`?`error`:n.seedStatus===`active`||n.joined?`active`:``}`,children:se(n,e)})]},n.cid)),(!S||S.holdings.length===0)&&(0,j.jsx)(`div`,{className:`admin-empty-row`,children:e(`admin.holdings.empty`)})]})]}),(0,j.jsxs)(`div`,{className:`admin-panel admin-span-2`,children:[(0,j.jsxs)(`div`,{className:`admin-panel-header`,children:[(0,j.jsx)(`div`,{children:(0,j.jsx)(`h2`,{children:e(`admin.logs.title`)})}),(0,j.jsxs)(`div`,{className:`admin-panel-actions`,children:[(0,j.jsxs)(`button`,{className:`btn btn-secondary`,onClick:xe,disabled:z,children:[(0,j.jsx)(c,{size:16}),e(`admin.action.exportDiagnostics`)]}),(0,j.jsxs)(`button`,{className:`btn btn-ghost`,onClick:be,disabled:L||E.length===0,children:[(0,j.jsx)(m,{size:16}),e(`admin.action.clearLogs`)]}),(0,j.jsx)(l,{size:18})]})]}),(0,j.jsx)(`div`,{className:`admin-log-filter`,"aria-label":e(`admin.logs.filterLabel`),children:ue.map(t=>(0,j.jsx)(`button`,{type:`button`,className:V===t.value?`active`:``,onClick:()=>{fe(t.value),$(t.value)},children:e(t.labelKey)},t.value))}),(0,j.jsxs)(`div`,{className:`admin-log-list`,children:[E.map(e=>(0,j.jsxs)(`div`,{className:`admin-log-row`,children:[(0,j.jsx)(`time`,{children:r(e.ts)}),(0,j.jsx)(`span`,{className:`admin-log-level ${e.level}`,translate:`no`,children:e.level}),(0,j.jsx)(`strong`,{translate:`no`,children:e.event}),(0,j.jsx)(`span`,{translate:`no`,children:e.message})]},e.id)),E.length===0&&(0,j.jsx)(`div`,{className:`admin-empty-row`,children:e(`admin.logs.empty`)})]})]})]})]})]})]})}var z=i(`/admin/`)({component:R});export{z as Route};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,o as t,t as n}from"./jsx-runtime-Bt-cYkS5.js";import{x as r,y as i}from"./userStore-C4vdYsQp.js";import{t as a}from"./cloud-DHoTMeZY.js";import{t as o}from"./message-square-DaQH7q-P.js";import{t as s}from"./music-DaFvU2DL.js";import{t as c}from"./play-B7q6F75-.js";import{t as l}from"./search-ncblG-zw.js";import{t as u}from"./send-m1XCcuPn.js";import{t as d}from"./wifi-DIR3g_8A.js";import{B as f}from"./index-CrAXrmfP.js";import{t as p}from"./MarketingLayout-B8m1Q7Pa.js";var m=i(`at-sign`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8`,key:`7n84p3`}]]),h=i(`book-open`,[[`path`,{d:`M12 7v14`,key:`1akyts`}],[`path`,{d:`M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z`,key:`ruj8y`}]]),g=i(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]),_=i(`camera`,[[`path`,{d:`M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z`,key:`18u6gg`}],[`circle`,{cx:`12`,cy:`13`,r:`3`,key:`1vg3eu`}]]),v=i(`messages-square`,[[`path`,{d:`M16 10a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 14.286V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z`,key:`1n2ejm`}],[`path`,{d:`M20 9a2 2 0 0 1 2 2v10.286a.71.71 0 0 1-1.212.502l-2.202-2.202A2 2 0 0 0 17.172 19H10a2 2 0 0 1-2-2v-1`,key:`1qfcsi`}]]),y=i(`package`,[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]),b=i(`rotate-cw`,[[`path`,{d:`M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8`,key:`1p45f6`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}]]),x=i(`smartphone`,[[`rect`,{width:`14`,height:`20`,x:`5`,y:`2`,rx:`2`,ry:`2`,key:`1yt0o3`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}]]),ee=i(`terminal`,[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]),te=i(`triangle`,[[`path`,{d:`M13.73 4a2 2 0 0 0-3.46 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z`,key:`14u9p9`}]]),S=t(e(),1);function ne(e,t){let n=e.icons,r=e.aliases||Object.create(null),i=Object.create(null);function a(e){if(n[e])return i[e]=[];if(!(e in i)){i[e]=null;let t=r[e]&&r[e].parent,n=t&&a(t);n&&(i[e]=[t].concat(n))}return i[e]}return Object.keys(n).concat(Object.keys(r)).forEach(a),i}var re=Object.freeze({left:0,top:0,width:16,height:16}),C=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),w=Object.freeze({...re,...C}),T=Object.freeze({...w,body:``,hidden:!1});function ie(e,t){let n={};!e.hFlip!=!t.hFlip&&(n.hFlip=!0),!e.vFlip!=!t.vFlip&&(n.vFlip=!0);let r=((e.rotate||0)+(t.rotate||0))%4;return r&&(n.rotate=r),n}function E(e,t){let n=ie(e,t);for(let r in T)r in C?r in e&&!(r in n)&&(n[r]=C[r]):r in t?n[r]=t[r]:r in e&&(n[r]=e[r]);return n}function ae(e,t,n){let r=e.icons,i=e.aliases||Object.create(null),a={};function o(e){a=E(r[e]||i[e],a)}return o(t),n.forEach(o),E(e,a)}function D(e,t){let n=[];if(typeof e!=`object`||typeof e.icons!=`object`)return n;e.not_found instanceof Array&&e.not_found.forEach(e=>{t(e,null),n.push(e)});let r=ne(e);for(let i in r){let a=r[i];a&&(t(i,ae(e,i,a)),n.push(i))}return n}var oe={provider:``,aliases:{},not_found:{},...re};function O(e,t){for(let n in t)if(n in e&&typeof e[n]!=typeof t[n])return!1;return!0}function k(e){if(typeof e!=`object`||!e)return null;let t=e;if(typeof t.prefix!=`string`||!e.icons||typeof e.icons!=`object`||!O(e,oe))return null;let n=t.icons;for(let e in n){let t=n[e];if(!e||typeof t.body!=`string`||!O(t,T))return null}let r=t.aliases||Object.create(null);for(let e in r){let t=r[e],i=t.parent;if(!e||typeof i!=`string`||!n[i]&&!r[i]||!O(t,T))return null}return t}var A=Object.create(null);function se(e,t){return{provider:e,prefix:t,icons:Object.create(null),missing:new Set}}function j(e,t){let n=A[e]||(A[e]=Object.create(null));return n[t]||(n[t]=se(e,t))}function ce(e,t){return k(t)?D(t,(t,n)=>{n?e.icons[t]=n:e.missing.add(t)}):[]}function le(e,t,n){try{if(typeof n.body==`string`)return e.icons[t]={...n},!0}catch{}return!1}var ue=/^[a-z0-9]+(-[a-z0-9]+)*$/,M=(e,t,n,r=``)=>{let i=e.split(`:`);if(e.slice(0,1)===`@`){if(i.length<2||i.length>3)return null;r=i.shift().slice(1)}if(i.length>3||!i.length)return null;if(i.length>1){let e=i.pop(),n=i.pop(),a={provider:i.length>0?i[0]:r,prefix:n,name:e};return t&&!N(a)?null:a}let a=i[0],o=a.split(`-`);if(o.length>1){let e={provider:r,prefix:o.shift(),name:o.join(`-`)};return t&&!N(e)?null:e}if(n&&r===``){let e={provider:r,prefix:``,name:a};return t&&!N(e,n)?null:e}return null},N=(e,t)=>e?!!((t&&e.prefix===``||e.prefix)&&e.name):!1,P=!1;function F(e){return typeof e==`boolean`&&(P=e),P}function I(e){let t=typeof e==`string`?M(e,!0,P):e;if(t){let e=j(t.provider,t.prefix),n=t.name;return e.icons[n]||(e.missing.has(n)?null:void 0)}}function de(e,t){let n=M(e,!0,P);if(!n)return!1;let r=j(n.provider,n.prefix);return t?le(r,n.name,t):(r.missing.add(n.name),!0)}function fe(e,t){if(typeof e!=`object`)return!1;if(typeof t!=`string`&&(t=e.provider||``),P&&!t&&!e.prefix){let t=!1;return k(e)&&(e.prefix=``,D(e,(e,n)=>{de(e,n)&&(t=!0)})),t}let n=e.prefix;return N({prefix:n,name:`a`})?!!ce(j(t,n),e):!1}var L=Object.freeze({width:null,height:null}),R=Object.freeze({...L,...C}),pe=/(-?[0-9.]*[0-9]+[0-9.]*)/g,me=/^-?[0-9.]*[0-9]+[0-9.]*$/g;function z(e,t,n){if(t===1)return e;if(n||=100,typeof e==`number`)return Math.ceil(e*t*n)/n;if(typeof e!=`string`)return e;let r=e.split(pe);if(r===null||!r.length)return e;let i=[],a=r.shift(),o=me.test(a);for(;;){if(o){let e=parseFloat(a);isNaN(e)?i.push(a):i.push(Math.ceil(e*t*n)/n)}else i.push(a);if(a=r.shift(),a===void 0)return i.join(``);o=!o}}function he(e,t=`defs`){let n=``,r=e.indexOf(`<`+t);for(;r>=0;){let i=e.indexOf(`>`,r),a=e.indexOf(`</`+t);if(i===-1||a===-1)break;let o=e.indexOf(`>`,a);if(o===-1)break;n+=e.slice(i+1,a).trim(),e=e.slice(0,r).trim()+e.slice(o+1)}return{defs:n,content:e}}function ge(e,t){return e?`<defs>`+e+`</defs>`+t:t}function _e(e,t,n){let r=he(e);return ge(r.defs,t+r.content+n)}var ve=e=>e===`unset`||e===`undefined`||e===`none`;function ye(e,t){let n={...w,...e},r={...R,...t},i={left:n.left,top:n.top,width:n.width,height:n.height},a=n.body;[n,r].forEach(e=>{let t=[],n=e.hFlip,r=e.vFlip,o=e.rotate;n?r?o+=2:(t.push(`translate(`+(i.width+i.left).toString()+` `+(0-i.top).toString()+`)`),t.push(`scale(-1 1)`),i.top=i.left=0):r&&(t.push(`translate(`+(0-i.left).toString()+` `+(i.height+i.top).toString()+`)`),t.push(`scale(1 -1)`),i.top=i.left=0);let s;switch(o<0&&(o-=Math.floor(o/4)*4),o%=4,o){case 1:s=i.height/2+i.top,t.unshift(`rotate(90 `+s.toString()+` `+s.toString()+`)`);break;case 2:t.unshift(`rotate(180 `+(i.width/2+i.left).toString()+` `+(i.height/2+i.top).toString()+`)`);break;case 3:s=i.width/2+i.left,t.unshift(`rotate(-90 `+s.toString()+` `+s.toString()+`)`);break}o%2==1&&(i.left!==i.top&&(s=i.left,i.left=i.top,i.top=s),i.width!==i.height&&(s=i.width,i.width=i.height,i.height=s)),t.length&&(a=_e(a,`<g transform="`+t.join(` `)+`">`,`</g>`))});let o=r.width,s=r.height,c=i.width,l=i.height,u,d;o===null?(d=s===null?`1em`:s===`auto`?l:s,u=z(d,c/l)):(u=o===`auto`?c:o,d=s===null?z(u,l/c):s===`auto`?l:s);let f={},p=(e,t)=>{ve(t)||(f[e]=t.toString())};p(`width`,u),p(`height`,d);let m=[i.left,i.top,c,l];return f.viewBox=m.join(` `),{attributes:f,viewBox:m,body:a}}var be=/\sid="(\S+)"/g,xe=`IconifyId`+Date.now().toString(16)+(Math.random()*16777216|0).toString(16),Se=0;function Ce(e,t=xe){let n=[],r;for(;r=be.exec(e);)n.push(r[1]);if(!n.length)return e;let i=`suffix`+(Math.random()*16777216|Date.now()).toString(16);return n.forEach(n=>{let r=typeof t==`function`?t(n):t+(Se++).toString(),a=n.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);e=e.replace(RegExp(`([#;"])(`+a+`)([")]|\\.[a-z])`,`g`),`$1`+r+i+`$3`)}),e=e.replace(new RegExp(i,`g`),``),e}var B=Object.create(null);function we(e,t){B[e]=t}function V(e){return B[e]||B[``]}function H(e){let t;if(typeof e.resources==`string`)t=[e.resources];else if(t=e.resources,!(t instanceof Array)||!t.length)return null;return{resources:t,path:e.path||`/`,maxURL:e.maxURL||500,rotate:e.rotate||750,timeout:e.timeout||5e3,random:e.random===!0,index:e.index||0,dataAfterTimeout:e.dataAfterTimeout!==!1}}for(var U=Object.create(null),W=[`https://api.simplesvg.com`,`https://api.unisvg.com`],G=[];W.length>0;)W.length===1||Math.random()>.5?G.push(W.shift()):G.push(W.pop());U[``]=H({resources:[`https://api.iconify.design`].concat(G)});function Te(e,t){let n=H(t);return n===null?!1:(U[e]=n,!0)}function K(e){return U[e]}var q=(()=>{let e;try{if(e=fetch,typeof e==`function`)return e}catch{}})();function Ee(e,t){let n=K(e);if(!n)return 0;let r;if(!n.maxURL)r=0;else{let e=0;n.resources.forEach(t=>{e=Math.max(e,t.length)});let i=t+`.json?icons=`;r=n.maxURL-e-n.path.length-i.length}return r}function De(e){return e===404}var Oe=(e,t,n)=>{let r=[],i=Ee(e,t),a=`icons`,o={type:a,provider:e,prefix:t,icons:[]},s=0;return n.forEach((n,c)=>{s+=n.length+1,s>=i&&c>0&&(r.push(o),o={type:a,provider:e,prefix:t,icons:[]},s=n.length),o.icons.push(n)}),r.push(o),r};function ke(e){if(typeof e==`string`){let t=K(e);if(t)return t.path}return`/`}var Ae={prepare:Oe,send:(e,t,n)=>{if(!q){n(`abort`,424);return}let r=ke(t.provider);switch(t.type){case`icons`:{let e=t.prefix,n=t.icons.join(`,`),i=new URLSearchParams({icons:n});r+=e+`.json?`+i.toString();break}case`custom`:{let e=t.uri;r+=e.slice(0,1)===`/`?e.slice(1):e;break}default:n(`abort`,400);return}let i=503;q(e+r).then(e=>{let t=e.status;if(t!==200){setTimeout(()=>{n(De(t)?`abort`:`next`,t)});return}return i=501,e.json()}).then(e=>{if(typeof e!=`object`||!e){setTimeout(()=>{e===404?n(`abort`,e):n(`next`,i)});return}setTimeout(()=>{n(`success`,e)})}).catch(()=>{n(`next`,i)})}};function je(e,t){e.forEach(e=>{let n=e.loaderCallbacks;n&&(e.loaderCallbacks=n.filter(e=>e.id!==t))})}function Me(e){e.pendingCallbacksFlag||(e.pendingCallbacksFlag=!0,setTimeout(()=>{e.pendingCallbacksFlag=!1;let t=e.loaderCallbacks?e.loaderCallbacks.slice(0):[];if(!t.length)return;let n=!1,r=e.provider,i=e.prefix;t.forEach(t=>{let a=t.icons,o=a.pending.length;a.pending=a.pending.filter(t=>{if(t.prefix!==i)return!0;let o=t.name;if(e.icons[o])a.loaded.push({provider:r,prefix:i,name:o});else if(e.missing.has(o))a.missing.push({provider:r,prefix:i,name:o});else return n=!0,!0;return!1}),a.pending.length!==o&&(n||je([e],t.id),t.callback(a.loaded.slice(0),a.missing.slice(0),a.pending.slice(0),t.abort))})}))}var Ne=0;function Pe(e,t,n){let r=Ne++,i=je.bind(null,n,r);if(!t.pending.length)return i;let a={id:r,icons:t,callback:e,abort:i};return n.forEach(e=>{(e.loaderCallbacks||=[]).push(a)}),i}function Fe(e){let t={loaded:[],missing:[],pending:[]},n=Object.create(null);e.sort((e,t)=>e.provider===t.provider?e.prefix===t.prefix?e.name.localeCompare(t.name):e.prefix.localeCompare(t.prefix):e.provider.localeCompare(t.provider));let r={provider:``,prefix:``,name:``};return e.forEach(e=>{if(r.name===e.name&&r.prefix===e.prefix&&r.provider===e.provider)return;r=e;let i=e.provider,a=e.prefix,o=e.name,s=n[i]||(n[i]=Object.create(null)),c=s[a]||(s[a]=j(i,a)),l;l=o in c.icons?t.loaded:a===``||c.missing.has(o)?t.missing:t.pending;let u={provider:i,prefix:a,name:o};l.push(u)}),t}function Ie(e,t=!0,n=!1){let r=[];return e.forEach(e=>{let i=typeof e==`string`?M(e,t,n):e;i&&r.push(i)}),r}var Le={resources:[],index:0,timeout:2e3,rotate:750,random:!1,dataAfterTimeout:!1};function Re(e,t,n,r){let i=e.resources.length,a=e.random?Math.floor(Math.random()*i):e.index,o;if(e.random){let t=e.resources.slice(0);for(o=[];t.length>1;){let e=Math.floor(Math.random()*t.length);o.push(t[e]),t=t.slice(0,e).concat(t.slice(e+1))}o=o.concat(t)}else o=e.resources.slice(a).concat(e.resources.slice(0,a));let s=Date.now(),c=`pending`,l=0,u,d=null,f=[],p=[];typeof r==`function`&&p.push(r);function m(){d&&=(clearTimeout(d),null)}function h(){c===`pending`&&(c=`aborted`),m(),f.forEach(e=>{e.status===`pending`&&(e.status=`aborted`)}),f=[]}function g(e,t){t&&(p=[]),typeof e==`function`&&p.push(e)}function _(){return{startTime:s,payload:t,status:c,queriesSent:l,queriesPending:f.length,subscribe:g,abort:h}}function v(){c=`failed`,p.forEach(e=>{e(void 0,u)})}function y(){f.forEach(e=>{e.status===`pending`&&(e.status=`aborted`)}),f=[]}function b(t,n,r){let i=n!==`success`;switch(f=f.filter(e=>e!==t),c){case`pending`:break;case`failed`:if(i||!e.dataAfterTimeout)return;break;default:return}if(n===`abort`){u=r,v();return}if(i){u=r,f.length||(o.length?x():v());return}if(m(),y(),!e.random){let n=e.resources.indexOf(t.resource);n!==-1&&n!==e.index&&(e.index=n)}c=`completed`,p.forEach(e=>{e(r)})}function x(){if(c!==`pending`)return;m();let r=o.shift();if(r===void 0){if(f.length){d=setTimeout(()=>{m(),c===`pending`&&(y(),v())},e.timeout);return}v();return}let i={status:`pending`,resource:r,callback:(e,t)=>{b(i,e,t)}};f.push(i),l++,d=setTimeout(x,e.rotate),n(r,t,i.callback)}return setTimeout(x),_}function ze(e){let t={...Le,...e},n=[];function r(){n=n.filter(e=>e().status===`pending`)}function i(e,i,a){let o=Re(t,e,i,(e,t)=>{r(),a&&a(e,t)});return n.push(o),o}function a(e){return n.find(t=>e(t))||null}return{query:i,find:a,setIndex:e=>{t.index=e},getIndex:()=>t.index,cleanup:r}}function Be(){}var J=Object.create(null);function Ve(e){if(!J[e]){let t=K(e);if(!t)return;J[e]={config:t,redundancy:ze(t)}}return J[e]}function He(e,t,n){let r,i;if(typeof e==`string`){let t=V(e);if(!t)return n(void 0,424),Be;i=t.send;let a=Ve(e);a&&(r=a.redundancy)}else{let t=H(e);if(t){r=ze(t);let n=V(e.resources?e.resources[0]:``);n&&(i=n.send)}}return!r||!i?(n(void 0,424),Be):r.query(t,i,n)().abort}function Ue(){}function We(e){e.iconsLoaderFlag||(e.iconsLoaderFlag=!0,setTimeout(()=>{e.iconsLoaderFlag=!1,Me(e)}))}function Ge(e){let t=[],n=[];return e.forEach(e=>{(e.match(ue)?t:n).push(e)}),{valid:t,invalid:n}}function Y(e,t,n){function r(){let n=e.pendingIcons;t.forEach(t=>{n&&n.delete(t),e.icons[t]||e.missing.add(t)})}if(n&&typeof n==`object`)try{if(!ce(e,n).length){r();return}}catch(e){console.error(e)}r(),We(e)}function Ke(e,t){e instanceof Promise?e.then(e=>{t(e)}).catch(()=>{t(null)}):t(e)}function qe(e,t){e.iconsToLoad?e.iconsToLoad=e.iconsToLoad.concat(t).sort():e.iconsToLoad=t,e.iconsQueueFlag||(e.iconsQueueFlag=!0,setTimeout(()=>{e.iconsQueueFlag=!1;let{provider:t,prefix:n}=e,r=e.iconsToLoad;if(delete e.iconsToLoad,!r||!r.length)return;let i=e.loadIcon;if(e.loadIcons&&(r.length>1||!i)){Ke(e.loadIcons(r,n,t),t=>{Y(e,r,t)});return}if(i){r.forEach(r=>{Ke(i(r,n,t),t=>{Y(e,[r],t?{prefix:n,icons:{[r]:t}}:null)})});return}let{valid:a,invalid:o}=Ge(r);if(o.length&&Y(e,o,null),!a.length)return;let s=n.match(ue)?V(t):null;if(!s){Y(e,a,null);return}s.prepare(t,n,a).forEach(n=>{He(t,n,t=>{Y(e,n.icons,t)})})}))}var Je=(e,t)=>{let n=Fe(Ie(e,!0,F()));if(!n.pending.length){let e=!0;return t&&setTimeout(()=>{e&&t(n.loaded,n.missing,n.pending,Ue)}),()=>{e=!1}}let r=Object.create(null),i=[],a,o;return n.pending.forEach(e=>{let{provider:t,prefix:n}=e;if(n===o&&t===a)return;a=t,o=n,i.push(j(t,n));let s=r[t]||(r[t]=Object.create(null));s[n]||(s[n]=[])}),n.pending.forEach(e=>{let{provider:t,prefix:n,name:i}=e,a=j(t,n),o=a.pendingIcons||=new Set;o.has(i)||(o.add(i),r[t][n].push(i))}),i.forEach(e=>{let t=r[e.provider][e.prefix];t.length&&qe(e,t)}),t?Pe(t,n,i):Ue};function Ye(e,t){let n={...e};for(let e in t){let r=t[e],i=typeof r;e in L?(r===null||r&&(i===`string`||i===`number`))&&(n[e]=r):i===typeof n[e]&&(n[e]=e===`rotate`?r%4:r)}return n}var Xe=/[\s,]+/;function Ze(e,t){t.split(Xe).forEach(t=>{switch(t.trim()){case`horizontal`:e.hFlip=!0;break;case`vertical`:e.vFlip=!0;break}})}function Qe(e,t=0){let n=e.replace(/^-?[0-9.]*/,``);function r(e){for(;e<0;)e+=4;return e%4}if(n===``){let t=parseInt(e);return isNaN(t)?0:r(t)}else if(n!==e){let t=0;switch(n){case`%`:t=25;break;case`deg`:t=90}if(t){let i=parseFloat(e.slice(0,e.length-n.length));return isNaN(i)?0:(i/=t,i%1==0?r(i):0)}}return t}function $e(e,t){let n=e.indexOf(`xlink:`)===-1?``:` xmlns:xlink="http://www.w3.org/1999/xlink"`;for(let e in t)n+=` `+e+`="`+t[e]+`"`;return`<svg xmlns="http://www.w3.org/2000/svg"`+n+`>`+e+`</svg>`}function et(e){return e.replace(/"/g,`'`).replace(/%/g,`%25`).replace(/#/g,`%23`).replace(/</g,`%3C`).replace(/>/g,`%3E`).replace(/\s+/g,` `)}function tt(e){return`data:image/svg+xml,`+et(e)}function nt(e){return`url("`+tt(e)+`")`}var X;function rt(){try{X=window.trustedTypes.createPolicy(`iconify`,{createHTML:e=>e})}catch{X=null}}function it(e){return X===void 0&&rt(),X?X.createHTML(e):e}var at={...R,inline:!1},ot={xmlns:`http://www.w3.org/2000/svg`,xmlnsXlink:`http://www.w3.org/1999/xlink`,"aria-hidden":!0,role:`img`},st={display:`inline-block`},Z={backgroundColor:`currentColor`},ct={backgroundColor:`transparent`},lt={Image:`var(--svg)`,Repeat:`no-repeat`,Size:`100% 100%`},ut={WebkitMask:Z,mask:Z,background:ct};for(let e in ut){let t=ut[e];for(let n in lt)t[e+n]=lt[n]}var dt={...at,inline:!0};function ft(e){return e+(e.match(/^[-0-9.]+$/)?`px`:``)}var pt=(e,t,n)=>{let r=t.inline?dt:at,i=Ye(r,t),a=t.mode||`svg`,o={},s=t.style||{},c={...a===`svg`?ot:{}};if(n){let e=M(n,!1,!0);if(e){let t=[`iconify`];for(let n of[`provider`,`prefix`])e[n]&&t.push(`iconify--`+e[n]);c.className=t.join(` `)}}for(let e in t){let n=t[e];if(n!==void 0)switch(e){case`icon`:case`style`:case`children`:case`onLoad`:case`mode`:case`ssr`:case`fallback`:break;case`_ref`:c.ref=n;break;case`className`:c[e]=(c[e]?c[e]+` `:``)+n;break;case`inline`:case`hFlip`:case`vFlip`:i[e]=n===!0||n===`true`||n===1;break;case`flip`:typeof n==`string`&&Ze(i,n);break;case`color`:o.color=n;break;case`rotate`:typeof n==`string`?i[e]=Qe(n):typeof n==`number`&&(i[e]=n);break;case`ariaHidden`:case`aria-hidden`:n!==!0&&n!==`true`&&delete c[`aria-hidden`];break;default:r[e]===void 0&&(c[e]=n)}}let l=ye(e,i),u=l.attributes;if(i.inline&&(o.verticalAlign=`-0.125em`),a===`svg`){c.style={...o,...s},Object.assign(c,u);let e=0,n=t.id;return typeof n==`string`&&(n=n.replace(/-/g,`_`)),c.dangerouslySetInnerHTML={__html:it(Ce(l.body,n?()=>n+`ID`+ e++:`iconifyReact`))},(0,S.createElement)(`svg`,c)}let{body:d,width:f,height:p}=e,m=a===`mask`||(a===`bg`?!1:d.indexOf(`currentColor`)!==-1),h=$e(d,{...u,width:f+``,height:p+``});return c.style={...o,"--svg":nt(h),width:ft(u.width),height:ft(u.height),...st,...m?Z:ct,...s},(0,S.createElement)(`span`,c)};if(F(!0),we(``,Ae),typeof document<`u`&&typeof window<`u`){let e=window;if(e.IconifyPreload!==void 0){let t=e.IconifyPreload,n=`Invalid IconifyPreload syntax.`;typeof t==`object`&&t&&(t instanceof Array?t:[t]).forEach(e=>{try{(typeof e!=`object`||!e||e instanceof Array||typeof e.icons!=`object`||typeof e.prefix!=`string`||!fe(e))&&console.error(n)}catch{console.error(n)}})}if(e.IconifyProviders!==void 0){let t=e.IconifyProviders;if(typeof t==`object`&&t)for(let e in t){let n=`IconifyProviders[`+e+`] is invalid.`;try{let r=t[e];if(typeof r!=`object`||!r||r.resources===void 0)continue;Te(e,r)||console.error(n)}catch{console.error(n)}}}}function mt(e){let[t,n]=(0,S.useState)(!!e.ssr),[r,i]=(0,S.useState)({});function a(t){if(t){let t=e.icon;if(typeof t==`object`)return{name:``,data:t};let n=I(t);if(n)return{name:t,data:n}}return{name:``}}let[o,s]=(0,S.useState)(a(!!e.ssr));function c(){let e=r.callback;e&&(e(),i({}))}function l(e){if(JSON.stringify(o)!==JSON.stringify(e))return c(),s(e),!0}function u(){var t;let n=e.icon;if(typeof n==`object`){l({name:``,data:n});return}let r=I(n);l({name:n,data:r})&&(r===void 0?i({callback:Je([n],u)}):r&&((t=e.onLoad)==null||t.call(e,n)))}(0,S.useEffect)(()=>(n(!0),c),[]),(0,S.useEffect)(()=>{t&&u()},[e.icon,t]);let{name:d,data:f}=o;return f?pt({...w,...f},e,d):e.children?e.children:e.fallback?e.fallback:(0,S.createElement)(`span`,{})}var ht=(0,S.forwardRef)((e,t)=>mt({...e,_ref:t}));(0,S.forwardRef)((e,t)=>mt({inline:!0,...e,_ref:t}));var Q=n(),$=[{name:`Google`,host:`google.com`,icon:`simple-icons:google`,fallback:(0,Q.jsx)(l,{size:20})},{name:`Cloudflare`,host:`cloudflare.com`,icon:`simple-icons:cloudflare`,fallback:(0,Q.jsx)(a,{size:20})},{name:`YouTube`,host:`youtube.com`,icon:`simple-icons:youtube`,fallback:(0,Q.jsx)(c,{size:20})},{name:`GitHub`,host:`github.com`,icon:`simple-icons:github`,fallback:(0,Q.jsx)(ee,{size:20})},{name:`ChatGPT`,host:`chatgpt.com`,icon:`simple-icons:openai`,fallback:(0,Q.jsx)(g,{size:20})},{name:`X`,host:`x.com`,icon:`simple-icons:x`,fallback:(0,Q.jsx)(m,{size:20})},{name:`Instagram`,host:`instagram.com`,icon:`simple-icons:instagram`,fallback:(0,Q.jsx)(_,{size:20})},{name:`Reddit`,host:`reddit.com`,icon:`simple-icons:reddit`,fallback:(0,Q.jsx)(o,{size:20})},{name:`Wikipedia`,host:`wikipedia.org`,icon:`simple-icons:wikipedia`,fallback:(0,Q.jsx)(h,{size:20})},{name:`Apple`,host:`apple.com`,icon:`simple-icons:apple`,fallback:(0,Q.jsx)(x,{size:20})},{name:`Telegram`,host:`telegram.org`,icon:`simple-icons:telegram`,fallback:(0,Q.jsx)(u,{size:20})},{name:`Discord`,host:`discord.com`,icon:`simple-icons:discord`,fallback:(0,Q.jsx)(v,{size:20})},{name:`TikTok`,host:`tiktok.com`,icon:`simple-icons:tiktok`,fallback:(0,Q.jsx)(s,{size:20})},{name:`npm`,host:`npmjs.com`,icon:`simple-icons:npm`,fallback:(0,Q.jsx)(y,{size:20})},{name:`Vercel`,host:`vercel.com`,icon:`simple-icons:vercel`,fallback:(0,Q.jsx)(te,{size:20})}],gt=5e3;function _t({icon:e,fallback:t}){let[n,r]=(0,S.useState)(!1);return(0,S.useEffect)(()=>{let t=new Image;t.onload=()=>r(!0),t.onerror=()=>r(!1),t.src=`https://api.iconify.design/${e.replace(`:`,`/`)}.svg`},[e]),(0,Q.jsxs)(`span`,{className:`brand-icon-wrap`,children:[(0,Q.jsx)(`span`,{className:`brand-icon-fallback ${n?`hidden`:``}`,children:t}),(0,Q.jsx)(`span`,{className:`brand-icon-real ${n?`visible`:``}`,children:(0,Q.jsx)(ht,{icon:e,width:20,height:20})})]})}function vt(){let{t:e,formatNumber:t}=f(),[n,r]=(0,S.useState)(new Map),[i,a]=(0,S.useState)(!1),o=(0,S.useRef)(new Map);(0,S.useEffect)(()=>{document.title=e(`ping.meta.title`)},[e]);let s=(0,S.useCallback)(e=>{r(t=>{let n=new Map(t);return n.set(e,{status:`pending`,latency:0}),n});let t=new AbortController;o.current.set(e,t);let n=performance.now(),i=(t,n)=>{r(r=>{let i=new Map(r);return i.set(e,{status:t,latency:n}),i})},a=setTimeout(()=>{t.abort()},gt);fetch(`https://${e}/`,{method:`HEAD`,mode:`no-cors`,cache:`no-store`,signal:t.signal}).then(()=>{clearTimeout(a),i(`ok`,Math.round(performance.now()-n))}).catch(()=>{clearTimeout(a),i(`timeout`,0)})},[]),c=(0,S.useCallback)(()=>{a(!0);let e=new Map;$.forEach(t=>{e.set(t.host,{status:`pending`,latency:0})}),r(e);let t=new Set($.map(e=>e.host));$.forEach(e=>{let n=new AbortController;o.current.set(e.host,n);let i=performance.now(),s=(n,i)=>{t.has(e.host)&&(t.delete(e.host),r(t=>{let r=new Map(t);return r.set(e.host,{status:n,latency:i}),r}),t.size===0&&a(!1))},c=setTimeout(()=>{n.abort()},gt);fetch(`https://${e.host}/`,{method:`HEAD`,mode:`no-cors`,cache:`no-store`,signal:n.signal}).then(()=>{clearTimeout(c),s(`ok`,Math.round(performance.now()-i))}).catch(()=>{clearTimeout(c),s(`timeout`,0)})})},[]);return(0,S.useEffect)(()=>(c(),()=>{o.current.forEach(e=>e.abort()),o.current.clear()}),[c]),(0,Q.jsxs)(`div`,{className:`ping-page`,children:[(0,Q.jsxs)(`div`,{className:`ping-header`,children:[(0,Q.jsxs)(`div`,{className:`ping-title-wrap`,children:[(0,Q.jsx)(d,{size:28,className:`ping-title-icon`}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h1`,{className:`ping-title`,children:e(`ping.title`)}),(0,Q.jsx)(`p`,{className:`ping-subtitle`,children:e(`ping.subtitle`)})]})]}),(0,Q.jsx)(`button`,{className:`btn btn-icon`,onClick:c,disabled:i,"aria-label":e(`ping.retryAll`),title:e(`ping.retryAll`),children:(0,Q.jsx)(b,{size:18,className:i?`ping-spin`:``})})]}),(0,Q.jsx)(`div`,{className:`ping-grid`,children:$.map(r=>{let i=n.get(r.host),a=!i||i.status===`pending`,o=i?.status===`timeout`;return(0,Q.jsxs)(`div`,{className:`ping-card ${a?`pending`:``}`,children:[(0,Q.jsxs)(`div`,{className:`ping-card-top`,children:[(0,Q.jsx)(`span`,{className:`ping-card-icon`,children:(0,Q.jsx)(_t,{icon:r.icon,fallback:r.fallback})}),(0,Q.jsx)(`a`,{href:`https://${r.host}`,target:`_blank`,rel:`noreferrer`,className:`ping-card-name`,children:r.name}),(0,Q.jsx)(`button`,{className:`ping-card-refresh`,onClick:()=>s(r.host),disabled:a,"aria-label":e(`ping.retryOne`,{name:r.name}),title:e(`ping.retry`),children:(0,Q.jsx)(b,{size:13,className:a?`ping-spin`:``})})]}),(0,Q.jsxs)(`div`,{className:`ping-card-bottom`,children:[a?(0,Q.jsx)(`span`,{className:`ping-pulse-dot`}):(0,Q.jsx)(`span`,{className:`ping-status-label ${o?`is-error`:`is-success`}`,children:e(o?`ping.unavailable`:`ping.available`)}),(0,Q.jsx)(`span`,{className:`ping-latency ${a?`is-muted`:o?`is-error`:`is-success`}`,children:a?`--`:o?e(`ping.timeout`):`${t(i.latency)} ms`})]})]},r.host)})})]})}function yt(){return(0,Q.jsx)(p,{children:(0,Q.jsx)(vt,{})})}var bt=r(`/ping/`)({component:yt});export{bt as Route};
|
|
1
|
+
import{n as e,o as t,t as n}from"./jsx-runtime-Bt-cYkS5.js";import{x as r,y as i}from"./userStore-C4vdYsQp.js";import{t as a}from"./cloud-DHoTMeZY.js";import{t as o}from"./message-square-DaQH7q-P.js";import{t as s}from"./music-DaFvU2DL.js";import{t as c}from"./play-B7q6F75-.js";import{t as l}from"./search-ncblG-zw.js";import{t as u}from"./send-m1XCcuPn.js";import{t as d}from"./wifi-DIR3g_8A.js";import{B as f}from"./index-BJ7E8LJN.js";import{t as p}from"./MarketingLayout-mQV6ciYc.js";var m=i(`at-sign`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8`,key:`7n84p3`}]]),h=i(`book-open`,[[`path`,{d:`M12 7v14`,key:`1akyts`}],[`path`,{d:`M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z`,key:`ruj8y`}]]),g=i(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]),_=i(`camera`,[[`path`,{d:`M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z`,key:`18u6gg`}],[`circle`,{cx:`12`,cy:`13`,r:`3`,key:`1vg3eu`}]]),v=i(`messages-square`,[[`path`,{d:`M16 10a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 14.286V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z`,key:`1n2ejm`}],[`path`,{d:`M20 9a2 2 0 0 1 2 2v10.286a.71.71 0 0 1-1.212.502l-2.202-2.202A2 2 0 0 0 17.172 19H10a2 2 0 0 1-2-2v-1`,key:`1qfcsi`}]]),y=i(`package`,[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]),b=i(`rotate-cw`,[[`path`,{d:`M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8`,key:`1p45f6`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}]]),x=i(`smartphone`,[[`rect`,{width:`14`,height:`20`,x:`5`,y:`2`,rx:`2`,ry:`2`,key:`1yt0o3`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}]]),ee=i(`terminal`,[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]),te=i(`triangle`,[[`path`,{d:`M13.73 4a2 2 0 0 0-3.46 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z`,key:`14u9p9`}]]),S=t(e(),1);function ne(e,t){let n=e.icons,r=e.aliases||Object.create(null),i=Object.create(null);function a(e){if(n[e])return i[e]=[];if(!(e in i)){i[e]=null;let t=r[e]&&r[e].parent,n=t&&a(t);n&&(i[e]=[t].concat(n))}return i[e]}return Object.keys(n).concat(Object.keys(r)).forEach(a),i}var re=Object.freeze({left:0,top:0,width:16,height:16}),C=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),w=Object.freeze({...re,...C}),T=Object.freeze({...w,body:``,hidden:!1});function ie(e,t){let n={};!e.hFlip!=!t.hFlip&&(n.hFlip=!0),!e.vFlip!=!t.vFlip&&(n.vFlip=!0);let r=((e.rotate||0)+(t.rotate||0))%4;return r&&(n.rotate=r),n}function E(e,t){let n=ie(e,t);for(let r in T)r in C?r in e&&!(r in n)&&(n[r]=C[r]):r in t?n[r]=t[r]:r in e&&(n[r]=e[r]);return n}function ae(e,t,n){let r=e.icons,i=e.aliases||Object.create(null),a={};function o(e){a=E(r[e]||i[e],a)}return o(t),n.forEach(o),E(e,a)}function D(e,t){let n=[];if(typeof e!=`object`||typeof e.icons!=`object`)return n;e.not_found instanceof Array&&e.not_found.forEach(e=>{t(e,null),n.push(e)});let r=ne(e);for(let i in r){let a=r[i];a&&(t(i,ae(e,i,a)),n.push(i))}return n}var oe={provider:``,aliases:{},not_found:{},...re};function O(e,t){for(let n in t)if(n in e&&typeof e[n]!=typeof t[n])return!1;return!0}function k(e){if(typeof e!=`object`||!e)return null;let t=e;if(typeof t.prefix!=`string`||!e.icons||typeof e.icons!=`object`||!O(e,oe))return null;let n=t.icons;for(let e in n){let t=n[e];if(!e||typeof t.body!=`string`||!O(t,T))return null}let r=t.aliases||Object.create(null);for(let e in r){let t=r[e],i=t.parent;if(!e||typeof i!=`string`||!n[i]&&!r[i]||!O(t,T))return null}return t}var A=Object.create(null);function se(e,t){return{provider:e,prefix:t,icons:Object.create(null),missing:new Set}}function j(e,t){let n=A[e]||(A[e]=Object.create(null));return n[t]||(n[t]=se(e,t))}function ce(e,t){return k(t)?D(t,(t,n)=>{n?e.icons[t]=n:e.missing.add(t)}):[]}function le(e,t,n){try{if(typeof n.body==`string`)return e.icons[t]={...n},!0}catch{}return!1}var ue=/^[a-z0-9]+(-[a-z0-9]+)*$/,M=(e,t,n,r=``)=>{let i=e.split(`:`);if(e.slice(0,1)===`@`){if(i.length<2||i.length>3)return null;r=i.shift().slice(1)}if(i.length>3||!i.length)return null;if(i.length>1){let e=i.pop(),n=i.pop(),a={provider:i.length>0?i[0]:r,prefix:n,name:e};return t&&!N(a)?null:a}let a=i[0],o=a.split(`-`);if(o.length>1){let e={provider:r,prefix:o.shift(),name:o.join(`-`)};return t&&!N(e)?null:e}if(n&&r===``){let e={provider:r,prefix:``,name:a};return t&&!N(e,n)?null:e}return null},N=(e,t)=>e?!!((t&&e.prefix===``||e.prefix)&&e.name):!1,P=!1;function F(e){return typeof e==`boolean`&&(P=e),P}function I(e){let t=typeof e==`string`?M(e,!0,P):e;if(t){let e=j(t.provider,t.prefix),n=t.name;return e.icons[n]||(e.missing.has(n)?null:void 0)}}function de(e,t){let n=M(e,!0,P);if(!n)return!1;let r=j(n.provider,n.prefix);return t?le(r,n.name,t):(r.missing.add(n.name),!0)}function fe(e,t){if(typeof e!=`object`)return!1;if(typeof t!=`string`&&(t=e.provider||``),P&&!t&&!e.prefix){let t=!1;return k(e)&&(e.prefix=``,D(e,(e,n)=>{de(e,n)&&(t=!0)})),t}let n=e.prefix;return N({prefix:n,name:`a`})?!!ce(j(t,n),e):!1}var L=Object.freeze({width:null,height:null}),R=Object.freeze({...L,...C}),pe=/(-?[0-9.]*[0-9]+[0-9.]*)/g,me=/^-?[0-9.]*[0-9]+[0-9.]*$/g;function z(e,t,n){if(t===1)return e;if(n||=100,typeof e==`number`)return Math.ceil(e*t*n)/n;if(typeof e!=`string`)return e;let r=e.split(pe);if(r===null||!r.length)return e;let i=[],a=r.shift(),o=me.test(a);for(;;){if(o){let e=parseFloat(a);isNaN(e)?i.push(a):i.push(Math.ceil(e*t*n)/n)}else i.push(a);if(a=r.shift(),a===void 0)return i.join(``);o=!o}}function he(e,t=`defs`){let n=``,r=e.indexOf(`<`+t);for(;r>=0;){let i=e.indexOf(`>`,r),a=e.indexOf(`</`+t);if(i===-1||a===-1)break;let o=e.indexOf(`>`,a);if(o===-1)break;n+=e.slice(i+1,a).trim(),e=e.slice(0,r).trim()+e.slice(o+1)}return{defs:n,content:e}}function ge(e,t){return e?`<defs>`+e+`</defs>`+t:t}function _e(e,t,n){let r=he(e);return ge(r.defs,t+r.content+n)}var ve=e=>e===`unset`||e===`undefined`||e===`none`;function ye(e,t){let n={...w,...e},r={...R,...t},i={left:n.left,top:n.top,width:n.width,height:n.height},a=n.body;[n,r].forEach(e=>{let t=[],n=e.hFlip,r=e.vFlip,o=e.rotate;n?r?o+=2:(t.push(`translate(`+(i.width+i.left).toString()+` `+(0-i.top).toString()+`)`),t.push(`scale(-1 1)`),i.top=i.left=0):r&&(t.push(`translate(`+(0-i.left).toString()+` `+(i.height+i.top).toString()+`)`),t.push(`scale(1 -1)`),i.top=i.left=0);let s;switch(o<0&&(o-=Math.floor(o/4)*4),o%=4,o){case 1:s=i.height/2+i.top,t.unshift(`rotate(90 `+s.toString()+` `+s.toString()+`)`);break;case 2:t.unshift(`rotate(180 `+(i.width/2+i.left).toString()+` `+(i.height/2+i.top).toString()+`)`);break;case 3:s=i.width/2+i.left,t.unshift(`rotate(-90 `+s.toString()+` `+s.toString()+`)`);break}o%2==1&&(i.left!==i.top&&(s=i.left,i.left=i.top,i.top=s),i.width!==i.height&&(s=i.width,i.width=i.height,i.height=s)),t.length&&(a=_e(a,`<g transform="`+t.join(` `)+`">`,`</g>`))});let o=r.width,s=r.height,c=i.width,l=i.height,u,d;o===null?(d=s===null?`1em`:s===`auto`?l:s,u=z(d,c/l)):(u=o===`auto`?c:o,d=s===null?z(u,l/c):s===`auto`?l:s);let f={},p=(e,t)=>{ve(t)||(f[e]=t.toString())};p(`width`,u),p(`height`,d);let m=[i.left,i.top,c,l];return f.viewBox=m.join(` `),{attributes:f,viewBox:m,body:a}}var be=/\sid="(\S+)"/g,xe=`IconifyId`+Date.now().toString(16)+(Math.random()*16777216|0).toString(16),Se=0;function Ce(e,t=xe){let n=[],r;for(;r=be.exec(e);)n.push(r[1]);if(!n.length)return e;let i=`suffix`+(Math.random()*16777216|Date.now()).toString(16);return n.forEach(n=>{let r=typeof t==`function`?t(n):t+(Se++).toString(),a=n.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);e=e.replace(RegExp(`([#;"])(`+a+`)([")]|\\.[a-z])`,`g`),`$1`+r+i+`$3`)}),e=e.replace(new RegExp(i,`g`),``),e}var B=Object.create(null);function we(e,t){B[e]=t}function V(e){return B[e]||B[``]}function H(e){let t;if(typeof e.resources==`string`)t=[e.resources];else if(t=e.resources,!(t instanceof Array)||!t.length)return null;return{resources:t,path:e.path||`/`,maxURL:e.maxURL||500,rotate:e.rotate||750,timeout:e.timeout||5e3,random:e.random===!0,index:e.index||0,dataAfterTimeout:e.dataAfterTimeout!==!1}}for(var U=Object.create(null),W=[`https://api.simplesvg.com`,`https://api.unisvg.com`],G=[];W.length>0;)W.length===1||Math.random()>.5?G.push(W.shift()):G.push(W.pop());U[``]=H({resources:[`https://api.iconify.design`].concat(G)});function Te(e,t){let n=H(t);return n===null?!1:(U[e]=n,!0)}function K(e){return U[e]}var q=(()=>{let e;try{if(e=fetch,typeof e==`function`)return e}catch{}})();function Ee(e,t){let n=K(e);if(!n)return 0;let r;if(!n.maxURL)r=0;else{let e=0;n.resources.forEach(t=>{e=Math.max(e,t.length)});let i=t+`.json?icons=`;r=n.maxURL-e-n.path.length-i.length}return r}function De(e){return e===404}var Oe=(e,t,n)=>{let r=[],i=Ee(e,t),a=`icons`,o={type:a,provider:e,prefix:t,icons:[]},s=0;return n.forEach((n,c)=>{s+=n.length+1,s>=i&&c>0&&(r.push(o),o={type:a,provider:e,prefix:t,icons:[]},s=n.length),o.icons.push(n)}),r.push(o),r};function ke(e){if(typeof e==`string`){let t=K(e);if(t)return t.path}return`/`}var Ae={prepare:Oe,send:(e,t,n)=>{if(!q){n(`abort`,424);return}let r=ke(t.provider);switch(t.type){case`icons`:{let e=t.prefix,n=t.icons.join(`,`),i=new URLSearchParams({icons:n});r+=e+`.json?`+i.toString();break}case`custom`:{let e=t.uri;r+=e.slice(0,1)===`/`?e.slice(1):e;break}default:n(`abort`,400);return}let i=503;q(e+r).then(e=>{let t=e.status;if(t!==200){setTimeout(()=>{n(De(t)?`abort`:`next`,t)});return}return i=501,e.json()}).then(e=>{if(typeof e!=`object`||!e){setTimeout(()=>{e===404?n(`abort`,e):n(`next`,i)});return}setTimeout(()=>{n(`success`,e)})}).catch(()=>{n(`next`,i)})}};function je(e,t){e.forEach(e=>{let n=e.loaderCallbacks;n&&(e.loaderCallbacks=n.filter(e=>e.id!==t))})}function Me(e){e.pendingCallbacksFlag||(e.pendingCallbacksFlag=!0,setTimeout(()=>{e.pendingCallbacksFlag=!1;let t=e.loaderCallbacks?e.loaderCallbacks.slice(0):[];if(!t.length)return;let n=!1,r=e.provider,i=e.prefix;t.forEach(t=>{let a=t.icons,o=a.pending.length;a.pending=a.pending.filter(t=>{if(t.prefix!==i)return!0;let o=t.name;if(e.icons[o])a.loaded.push({provider:r,prefix:i,name:o});else if(e.missing.has(o))a.missing.push({provider:r,prefix:i,name:o});else return n=!0,!0;return!1}),a.pending.length!==o&&(n||je([e],t.id),t.callback(a.loaded.slice(0),a.missing.slice(0),a.pending.slice(0),t.abort))})}))}var Ne=0;function Pe(e,t,n){let r=Ne++,i=je.bind(null,n,r);if(!t.pending.length)return i;let a={id:r,icons:t,callback:e,abort:i};return n.forEach(e=>{(e.loaderCallbacks||=[]).push(a)}),i}function Fe(e){let t={loaded:[],missing:[],pending:[]},n=Object.create(null);e.sort((e,t)=>e.provider===t.provider?e.prefix===t.prefix?e.name.localeCompare(t.name):e.prefix.localeCompare(t.prefix):e.provider.localeCompare(t.provider));let r={provider:``,prefix:``,name:``};return e.forEach(e=>{if(r.name===e.name&&r.prefix===e.prefix&&r.provider===e.provider)return;r=e;let i=e.provider,a=e.prefix,o=e.name,s=n[i]||(n[i]=Object.create(null)),c=s[a]||(s[a]=j(i,a)),l;l=o in c.icons?t.loaded:a===``||c.missing.has(o)?t.missing:t.pending;let u={provider:i,prefix:a,name:o};l.push(u)}),t}function Ie(e,t=!0,n=!1){let r=[];return e.forEach(e=>{let i=typeof e==`string`?M(e,t,n):e;i&&r.push(i)}),r}var Le={resources:[],index:0,timeout:2e3,rotate:750,random:!1,dataAfterTimeout:!1};function Re(e,t,n,r){let i=e.resources.length,a=e.random?Math.floor(Math.random()*i):e.index,o;if(e.random){let t=e.resources.slice(0);for(o=[];t.length>1;){let e=Math.floor(Math.random()*t.length);o.push(t[e]),t=t.slice(0,e).concat(t.slice(e+1))}o=o.concat(t)}else o=e.resources.slice(a).concat(e.resources.slice(0,a));let s=Date.now(),c=`pending`,l=0,u,d=null,f=[],p=[];typeof r==`function`&&p.push(r);function m(){d&&=(clearTimeout(d),null)}function h(){c===`pending`&&(c=`aborted`),m(),f.forEach(e=>{e.status===`pending`&&(e.status=`aborted`)}),f=[]}function g(e,t){t&&(p=[]),typeof e==`function`&&p.push(e)}function _(){return{startTime:s,payload:t,status:c,queriesSent:l,queriesPending:f.length,subscribe:g,abort:h}}function v(){c=`failed`,p.forEach(e=>{e(void 0,u)})}function y(){f.forEach(e=>{e.status===`pending`&&(e.status=`aborted`)}),f=[]}function b(t,n,r){let i=n!==`success`;switch(f=f.filter(e=>e!==t),c){case`pending`:break;case`failed`:if(i||!e.dataAfterTimeout)return;break;default:return}if(n===`abort`){u=r,v();return}if(i){u=r,f.length||(o.length?x():v());return}if(m(),y(),!e.random){let n=e.resources.indexOf(t.resource);n!==-1&&n!==e.index&&(e.index=n)}c=`completed`,p.forEach(e=>{e(r)})}function x(){if(c!==`pending`)return;m();let r=o.shift();if(r===void 0){if(f.length){d=setTimeout(()=>{m(),c===`pending`&&(y(),v())},e.timeout);return}v();return}let i={status:`pending`,resource:r,callback:(e,t)=>{b(i,e,t)}};f.push(i),l++,d=setTimeout(x,e.rotate),n(r,t,i.callback)}return setTimeout(x),_}function ze(e){let t={...Le,...e},n=[];function r(){n=n.filter(e=>e().status===`pending`)}function i(e,i,a){let o=Re(t,e,i,(e,t)=>{r(),a&&a(e,t)});return n.push(o),o}function a(e){return n.find(t=>e(t))||null}return{query:i,find:a,setIndex:e=>{t.index=e},getIndex:()=>t.index,cleanup:r}}function Be(){}var J=Object.create(null);function Ve(e){if(!J[e]){let t=K(e);if(!t)return;J[e]={config:t,redundancy:ze(t)}}return J[e]}function He(e,t,n){let r,i;if(typeof e==`string`){let t=V(e);if(!t)return n(void 0,424),Be;i=t.send;let a=Ve(e);a&&(r=a.redundancy)}else{let t=H(e);if(t){r=ze(t);let n=V(e.resources?e.resources[0]:``);n&&(i=n.send)}}return!r||!i?(n(void 0,424),Be):r.query(t,i,n)().abort}function Ue(){}function We(e){e.iconsLoaderFlag||(e.iconsLoaderFlag=!0,setTimeout(()=>{e.iconsLoaderFlag=!1,Me(e)}))}function Ge(e){let t=[],n=[];return e.forEach(e=>{(e.match(ue)?t:n).push(e)}),{valid:t,invalid:n}}function Y(e,t,n){function r(){let n=e.pendingIcons;t.forEach(t=>{n&&n.delete(t),e.icons[t]||e.missing.add(t)})}if(n&&typeof n==`object`)try{if(!ce(e,n).length){r();return}}catch(e){console.error(e)}r(),We(e)}function Ke(e,t){e instanceof Promise?e.then(e=>{t(e)}).catch(()=>{t(null)}):t(e)}function qe(e,t){e.iconsToLoad?e.iconsToLoad=e.iconsToLoad.concat(t).sort():e.iconsToLoad=t,e.iconsQueueFlag||(e.iconsQueueFlag=!0,setTimeout(()=>{e.iconsQueueFlag=!1;let{provider:t,prefix:n}=e,r=e.iconsToLoad;if(delete e.iconsToLoad,!r||!r.length)return;let i=e.loadIcon;if(e.loadIcons&&(r.length>1||!i)){Ke(e.loadIcons(r,n,t),t=>{Y(e,r,t)});return}if(i){r.forEach(r=>{Ke(i(r,n,t),t=>{Y(e,[r],t?{prefix:n,icons:{[r]:t}}:null)})});return}let{valid:a,invalid:o}=Ge(r);if(o.length&&Y(e,o,null),!a.length)return;let s=n.match(ue)?V(t):null;if(!s){Y(e,a,null);return}s.prepare(t,n,a).forEach(n=>{He(t,n,t=>{Y(e,n.icons,t)})})}))}var Je=(e,t)=>{let n=Fe(Ie(e,!0,F()));if(!n.pending.length){let e=!0;return t&&setTimeout(()=>{e&&t(n.loaded,n.missing,n.pending,Ue)}),()=>{e=!1}}let r=Object.create(null),i=[],a,o;return n.pending.forEach(e=>{let{provider:t,prefix:n}=e;if(n===o&&t===a)return;a=t,o=n,i.push(j(t,n));let s=r[t]||(r[t]=Object.create(null));s[n]||(s[n]=[])}),n.pending.forEach(e=>{let{provider:t,prefix:n,name:i}=e,a=j(t,n),o=a.pendingIcons||=new Set;o.has(i)||(o.add(i),r[t][n].push(i))}),i.forEach(e=>{let t=r[e.provider][e.prefix];t.length&&qe(e,t)}),t?Pe(t,n,i):Ue};function Ye(e,t){let n={...e};for(let e in t){let r=t[e],i=typeof r;e in L?(r===null||r&&(i===`string`||i===`number`))&&(n[e]=r):i===typeof n[e]&&(n[e]=e===`rotate`?r%4:r)}return n}var Xe=/[\s,]+/;function Ze(e,t){t.split(Xe).forEach(t=>{switch(t.trim()){case`horizontal`:e.hFlip=!0;break;case`vertical`:e.vFlip=!0;break}})}function Qe(e,t=0){let n=e.replace(/^-?[0-9.]*/,``);function r(e){for(;e<0;)e+=4;return e%4}if(n===``){let t=parseInt(e);return isNaN(t)?0:r(t)}else if(n!==e){let t=0;switch(n){case`%`:t=25;break;case`deg`:t=90}if(t){let i=parseFloat(e.slice(0,e.length-n.length));return isNaN(i)?0:(i/=t,i%1==0?r(i):0)}}return t}function $e(e,t){let n=e.indexOf(`xlink:`)===-1?``:` xmlns:xlink="http://www.w3.org/1999/xlink"`;for(let e in t)n+=` `+e+`="`+t[e]+`"`;return`<svg xmlns="http://www.w3.org/2000/svg"`+n+`>`+e+`</svg>`}function et(e){return e.replace(/"/g,`'`).replace(/%/g,`%25`).replace(/#/g,`%23`).replace(/</g,`%3C`).replace(/>/g,`%3E`).replace(/\s+/g,` `)}function tt(e){return`data:image/svg+xml,`+et(e)}function nt(e){return`url("`+tt(e)+`")`}var X;function rt(){try{X=window.trustedTypes.createPolicy(`iconify`,{createHTML:e=>e})}catch{X=null}}function it(e){return X===void 0&&rt(),X?X.createHTML(e):e}var at={...R,inline:!1},ot={xmlns:`http://www.w3.org/2000/svg`,xmlnsXlink:`http://www.w3.org/1999/xlink`,"aria-hidden":!0,role:`img`},st={display:`inline-block`},Z={backgroundColor:`currentColor`},ct={backgroundColor:`transparent`},lt={Image:`var(--svg)`,Repeat:`no-repeat`,Size:`100% 100%`},ut={WebkitMask:Z,mask:Z,background:ct};for(let e in ut){let t=ut[e];for(let n in lt)t[e+n]=lt[n]}var dt={...at,inline:!0};function ft(e){return e+(e.match(/^[-0-9.]+$/)?`px`:``)}var pt=(e,t,n)=>{let r=t.inline?dt:at,i=Ye(r,t),a=t.mode||`svg`,o={},s=t.style||{},c={...a===`svg`?ot:{}};if(n){let e=M(n,!1,!0);if(e){let t=[`iconify`];for(let n of[`provider`,`prefix`])e[n]&&t.push(`iconify--`+e[n]);c.className=t.join(` `)}}for(let e in t){let n=t[e];if(n!==void 0)switch(e){case`icon`:case`style`:case`children`:case`onLoad`:case`mode`:case`ssr`:case`fallback`:break;case`_ref`:c.ref=n;break;case`className`:c[e]=(c[e]?c[e]+` `:``)+n;break;case`inline`:case`hFlip`:case`vFlip`:i[e]=n===!0||n===`true`||n===1;break;case`flip`:typeof n==`string`&&Ze(i,n);break;case`color`:o.color=n;break;case`rotate`:typeof n==`string`?i[e]=Qe(n):typeof n==`number`&&(i[e]=n);break;case`ariaHidden`:case`aria-hidden`:n!==!0&&n!==`true`&&delete c[`aria-hidden`];break;default:r[e]===void 0&&(c[e]=n)}}let l=ye(e,i),u=l.attributes;if(i.inline&&(o.verticalAlign=`-0.125em`),a===`svg`){c.style={...o,...s},Object.assign(c,u);let e=0,n=t.id;return typeof n==`string`&&(n=n.replace(/-/g,`_`)),c.dangerouslySetInnerHTML={__html:it(Ce(l.body,n?()=>n+`ID`+ e++:`iconifyReact`))},(0,S.createElement)(`svg`,c)}let{body:d,width:f,height:p}=e,m=a===`mask`||(a===`bg`?!1:d.indexOf(`currentColor`)!==-1),h=$e(d,{...u,width:f+``,height:p+``});return c.style={...o,"--svg":nt(h),width:ft(u.width),height:ft(u.height),...st,...m?Z:ct,...s},(0,S.createElement)(`span`,c)};if(F(!0),we(``,Ae),typeof document<`u`&&typeof window<`u`){let e=window;if(e.IconifyPreload!==void 0){let t=e.IconifyPreload,n=`Invalid IconifyPreload syntax.`;typeof t==`object`&&t&&(t instanceof Array?t:[t]).forEach(e=>{try{(typeof e!=`object`||!e||e instanceof Array||typeof e.icons!=`object`||typeof e.prefix!=`string`||!fe(e))&&console.error(n)}catch{console.error(n)}})}if(e.IconifyProviders!==void 0){let t=e.IconifyProviders;if(typeof t==`object`&&t)for(let e in t){let n=`IconifyProviders[`+e+`] is invalid.`;try{let r=t[e];if(typeof r!=`object`||!r||r.resources===void 0)continue;Te(e,r)||console.error(n)}catch{console.error(n)}}}}function mt(e){let[t,n]=(0,S.useState)(!!e.ssr),[r,i]=(0,S.useState)({});function a(t){if(t){let t=e.icon;if(typeof t==`object`)return{name:``,data:t};let n=I(t);if(n)return{name:t,data:n}}return{name:``}}let[o,s]=(0,S.useState)(a(!!e.ssr));function c(){let e=r.callback;e&&(e(),i({}))}function l(e){if(JSON.stringify(o)!==JSON.stringify(e))return c(),s(e),!0}function u(){var t;let n=e.icon;if(typeof n==`object`){l({name:``,data:n});return}let r=I(n);l({name:n,data:r})&&(r===void 0?i({callback:Je([n],u)}):r&&((t=e.onLoad)==null||t.call(e,n)))}(0,S.useEffect)(()=>(n(!0),c),[]),(0,S.useEffect)(()=>{t&&u()},[e.icon,t]);let{name:d,data:f}=o;return f?pt({...w,...f},e,d):e.children?e.children:e.fallback?e.fallback:(0,S.createElement)(`span`,{})}var ht=(0,S.forwardRef)((e,t)=>mt({...e,_ref:t}));(0,S.forwardRef)((e,t)=>mt({inline:!0,...e,_ref:t}));var Q=n(),$=[{name:`Google`,host:`google.com`,icon:`simple-icons:google`,fallback:(0,Q.jsx)(l,{size:20})},{name:`Cloudflare`,host:`cloudflare.com`,icon:`simple-icons:cloudflare`,fallback:(0,Q.jsx)(a,{size:20})},{name:`YouTube`,host:`youtube.com`,icon:`simple-icons:youtube`,fallback:(0,Q.jsx)(c,{size:20})},{name:`GitHub`,host:`github.com`,icon:`simple-icons:github`,fallback:(0,Q.jsx)(ee,{size:20})},{name:`ChatGPT`,host:`chatgpt.com`,icon:`simple-icons:openai`,fallback:(0,Q.jsx)(g,{size:20})},{name:`X`,host:`x.com`,icon:`simple-icons:x`,fallback:(0,Q.jsx)(m,{size:20})},{name:`Instagram`,host:`instagram.com`,icon:`simple-icons:instagram`,fallback:(0,Q.jsx)(_,{size:20})},{name:`Reddit`,host:`reddit.com`,icon:`simple-icons:reddit`,fallback:(0,Q.jsx)(o,{size:20})},{name:`Wikipedia`,host:`wikipedia.org`,icon:`simple-icons:wikipedia`,fallback:(0,Q.jsx)(h,{size:20})},{name:`Apple`,host:`apple.com`,icon:`simple-icons:apple`,fallback:(0,Q.jsx)(x,{size:20})},{name:`Telegram`,host:`telegram.org`,icon:`simple-icons:telegram`,fallback:(0,Q.jsx)(u,{size:20})},{name:`Discord`,host:`discord.com`,icon:`simple-icons:discord`,fallback:(0,Q.jsx)(v,{size:20})},{name:`TikTok`,host:`tiktok.com`,icon:`simple-icons:tiktok`,fallback:(0,Q.jsx)(s,{size:20})},{name:`npm`,host:`npmjs.com`,icon:`simple-icons:npm`,fallback:(0,Q.jsx)(y,{size:20})},{name:`Vercel`,host:`vercel.com`,icon:`simple-icons:vercel`,fallback:(0,Q.jsx)(te,{size:20})}],gt=5e3;function _t({icon:e,fallback:t}){let[n,r]=(0,S.useState)(!1);return(0,S.useEffect)(()=>{let t=new Image;t.onload=()=>r(!0),t.onerror=()=>r(!1),t.src=`https://api.iconify.design/${e.replace(`:`,`/`)}.svg`},[e]),(0,Q.jsxs)(`span`,{className:`brand-icon-wrap`,children:[(0,Q.jsx)(`span`,{className:`brand-icon-fallback ${n?`hidden`:``}`,children:t}),(0,Q.jsx)(`span`,{className:`brand-icon-real ${n?`visible`:``}`,children:(0,Q.jsx)(ht,{icon:e,width:20,height:20})})]})}function vt(){let{t:e,formatNumber:t}=f(),[n,r]=(0,S.useState)(new Map),[i,a]=(0,S.useState)(!1),o=(0,S.useRef)(new Map);(0,S.useEffect)(()=>{document.title=e(`ping.meta.title`)},[e]);let s=(0,S.useCallback)(e=>{r(t=>{let n=new Map(t);return n.set(e,{status:`pending`,latency:0}),n});let t=new AbortController;o.current.set(e,t);let n=performance.now(),i=(t,n)=>{r(r=>{let i=new Map(r);return i.set(e,{status:t,latency:n}),i})},a=setTimeout(()=>{t.abort()},gt);fetch(`https://${e}/`,{method:`HEAD`,mode:`no-cors`,cache:`no-store`,signal:t.signal}).then(()=>{clearTimeout(a),i(`ok`,Math.round(performance.now()-n))}).catch(()=>{clearTimeout(a),i(`timeout`,0)})},[]),c=(0,S.useCallback)(()=>{a(!0);let e=new Map;$.forEach(t=>{e.set(t.host,{status:`pending`,latency:0})}),r(e);let t=new Set($.map(e=>e.host));$.forEach(e=>{let n=new AbortController;o.current.set(e.host,n);let i=performance.now(),s=(n,i)=>{t.has(e.host)&&(t.delete(e.host),r(t=>{let r=new Map(t);return r.set(e.host,{status:n,latency:i}),r}),t.size===0&&a(!1))},c=setTimeout(()=>{n.abort()},gt);fetch(`https://${e.host}/`,{method:`HEAD`,mode:`no-cors`,cache:`no-store`,signal:n.signal}).then(()=>{clearTimeout(c),s(`ok`,Math.round(performance.now()-i))}).catch(()=>{clearTimeout(c),s(`timeout`,0)})})},[]);return(0,S.useEffect)(()=>(c(),()=>{o.current.forEach(e=>e.abort()),o.current.clear()}),[c]),(0,Q.jsxs)(`div`,{className:`ping-page`,children:[(0,Q.jsxs)(`div`,{className:`ping-header`,children:[(0,Q.jsxs)(`div`,{className:`ping-title-wrap`,children:[(0,Q.jsx)(d,{size:28,className:`ping-title-icon`}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h1`,{className:`ping-title`,children:e(`ping.title`)}),(0,Q.jsx)(`p`,{className:`ping-subtitle`,children:e(`ping.subtitle`)})]})]}),(0,Q.jsx)(`button`,{className:`btn btn-icon`,onClick:c,disabled:i,"aria-label":e(`ping.retryAll`),title:e(`ping.retryAll`),children:(0,Q.jsx)(b,{size:18,className:i?`ping-spin`:``})})]}),(0,Q.jsx)(`div`,{className:`ping-grid`,children:$.map(r=>{let i=n.get(r.host),a=!i||i.status===`pending`,o=i?.status===`timeout`;return(0,Q.jsxs)(`div`,{className:`ping-card ${a?`pending`:``}`,children:[(0,Q.jsxs)(`div`,{className:`ping-card-top`,children:[(0,Q.jsx)(`span`,{className:`ping-card-icon`,children:(0,Q.jsx)(_t,{icon:r.icon,fallback:r.fallback})}),(0,Q.jsx)(`a`,{href:`https://${r.host}`,target:`_blank`,rel:`noreferrer`,className:`ping-card-name`,children:r.name}),(0,Q.jsx)(`button`,{className:`ping-card-refresh`,onClick:()=>s(r.host),disabled:a,"aria-label":e(`ping.retryOne`,{name:r.name}),title:e(`ping.retry`),children:(0,Q.jsx)(b,{size:13,className:a?`ping-spin`:``})})]}),(0,Q.jsxs)(`div`,{className:`ping-card-bottom`,children:[a?(0,Q.jsx)(`span`,{className:`ping-pulse-dot`}):(0,Q.jsx)(`span`,{className:`ping-status-label ${o?`is-error`:`is-success`}`,children:e(o?`ping.unavailable`:`ping.available`)}),(0,Q.jsx)(`span`,{className:`ping-latency ${a?`is-muted`:o?`is-error`:`is-success`}`,children:a?`--`:o?e(`ping.timeout`):`${t(i.latency)} ms`})]})]},r.host)})})]})}function yt(){return(0,Q.jsx)(p,{children:(0,Q.jsx)(vt,{})})}var bt=r(`/ping/`)({component:yt});export{bt as Route};
|