most-box 0.2.0 → 0.2.2

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.
Files changed (166) hide show
  1. package/README.md +69 -9
  2. package/electron/deepLink.js +29 -0
  3. package/electron/main.js +87 -20
  4. package/out/admin/index.html +0 -0
  5. package/out/app/index.html +0 -0
  6. package/out/assets/AppShell-BOtfY12t.js +1 -0
  7. package/out/assets/FilePreviewOverlay-C5qK9HAE.js +1 -0
  8. package/out/assets/LanguageToggle-Di5b88mK.js +1 -0
  9. package/out/assets/LogoIcon-B2fFe0l1.js +1 -0
  10. package/out/assets/MarketingHeader-BOytKcCc.js +1 -0
  11. package/out/assets/MarketingLayout-B8m1Q7Pa.js +1 -0
  12. package/out/assets/{MarketingThemeToggle-DBaC9bjz.js → MarketingThemeToggle-C6fggkl7.js} +1 -1
  13. package/out/assets/{MilkdownEditor-BqJzntYE.js → MilkdownEditor-Cfze75zl.js} +1 -1
  14. package/out/assets/OpenSidebarButton-DDuALgJ2.js +1 -0
  15. package/out/assets/SidebarAccount-bo1ypzrJ.js +1 -0
  16. package/out/assets/arrow-right-RldN7Rwi.js +1 -0
  17. package/out/assets/circle-alert-BQoSDxUe.js +1 -0
  18. package/out/assets/cloud-DHoTMeZY.js +1 -0
  19. package/out/assets/copy-BtJHJnqH.js +1 -0
  20. package/out/assets/download-Bg-OdoxM.js +1 -0
  21. package/out/assets/downloadValidation-CUvbvj9f.js +1 -0
  22. package/out/assets/external-link-m8ZIQe4p.js +1 -0
  23. package/out/assets/file-text-DG1orIkZ.js +1 -0
  24. package/out/assets/game-s6irY8hS.js +1 -0
  25. package/out/assets/hard-drive-BB-sllXA.js +1 -0
  26. package/out/assets/index-3OD3Chi9.css +1 -0
  27. package/out/assets/index-BSOvFG3o.css +1 -0
  28. package/out/assets/index-C0xqKeu-.css +1 -0
  29. package/out/assets/index-CrAXrmfP.js +31 -0
  30. package/out/assets/index.lazy-0Njp0U6I.js +1 -0
  31. package/out/assets/index.lazy-BTndBeBF.js +1 -0
  32. package/out/assets/index.lazy-Bq39jYTl.js +1 -0
  33. package/out/assets/index.lazy-Bu93oGzJ.js +2 -0
  34. package/out/assets/index.lazy-BvdBwgHx.js +1 -0
  35. package/out/assets/index.lazy-CIx8ist6.js +3 -0
  36. package/out/assets/index.lazy-DK7R297q.js +1 -0
  37. package/out/assets/index.lazy-DVOcrcEB.js +2 -0
  38. package/out/assets/index.lazy-DejOniAm.js +1 -0
  39. package/out/assets/index.lazy-DfsgyiMN.js +1 -0
  40. package/out/assets/index.lazy-DpNIiSXF.js +1 -0
  41. package/out/assets/index.lazy-Vnvz-t7T.js +1 -0
  42. package/out/assets/index.lazy-v7nBJ-sF.js +1 -0
  43. package/out/assets/key-round-DIQ3Xt5F.js +1 -0
  44. package/out/assets/lock-tf1t2yuy.js +1 -0
  45. package/out/assets/message-square-DaQH7q-P.js +1 -0
  46. package/out/assets/mp-DvFTsIL9.js +1 -0
  47. package/out/assets/music-DaFvU2DL.js +1 -0
  48. package/out/assets/notebook-pen-CqEFOHKx.js +1 -0
  49. package/out/assets/play-B7q6F75-.js +1 -0
  50. package/out/assets/plus-H2i2mspM.js +1 -0
  51. package/out/assets/refresh-cw-roxAhABl.js +1 -0
  52. package/out/assets/save-DR0O9ReR.js +1 -0
  53. package/out/assets/search-ncblG-zw.js +1 -0
  54. package/out/assets/send-m1XCcuPn.js +1 -0
  55. package/out/assets/shield-check-BwcvTU4U.js +1 -0
  56. package/out/assets/trash-2-CNpsqYc1.js +1 -0
  57. package/out/assets/triangle-alert-DP9EP7IM.js +1 -0
  58. package/out/assets/upload-V--8p13l.js +1 -0
  59. package/out/assets/useChannelMessages-46C52EyL.js +3 -0
  60. package/out/assets/useGameRoom-BtxPpfck.js +1 -0
  61. package/out/assets/useNavigate-DWlBD_-b.js +1 -0
  62. package/out/assets/userStore-C4vdYsQp.js +4 -0
  63. package/out/assets/wallet-CozFU6yK.js +1 -0
  64. package/out/assets/wifi-DIR3g_8A.js +1 -0
  65. package/out/avatars/default/LICENSE.md +7 -0
  66. package/out/avatars/default/dolphin.svg +25 -0
  67. package/out/avatars/default/owl.svg +60 -0
  68. package/out/avatars/default/panda.svg +29 -0
  69. package/out/avatars/default/snow-mountain.svg +100 -0
  70. package/out/avatars/default/tiger.svg +55 -0
  71. package/out/avatars/default/turtle.svg +34 -0
  72. package/out/chat/index.html +0 -0
  73. package/out/chat/join/index.html +0 -0
  74. package/out/download/index.html +4 -3
  75. package/out/game/gandengyan/index.html +0 -0
  76. package/out/game/index.html +0 -0
  77. package/out/game/zhajinhua/index.html +0 -0
  78. package/out/index.html +4 -3
  79. package/out/note/index.html +0 -0
  80. package/out/ping/index.html +4 -3
  81. package/out/{demo → profile}/index.html +0 -0
  82. package/out/web3/index.html +0 -0
  83. package/package.json +9 -1
  84. package/public/avatars/default/LICENSE.md +7 -0
  85. package/public/avatars/default/dolphin.svg +25 -0
  86. package/public/avatars/default/owl.svg +60 -0
  87. package/public/avatars/default/panda.svg +29 -0
  88. package/public/avatars/default/snow-mountain.svg +100 -0
  89. package/public/avatars/default/tiger.svg +55 -0
  90. package/public/avatars/default/turtle.svg +34 -0
  91. package/server/index.js +36 -7
  92. package/server/src/core/channelIdentity.js +6 -11
  93. package/server/src/core/gameRoom.js +15 -5
  94. package/server/src/core/mostLink.js +8 -7
  95. package/server/src/core/zhajinhua.js +6 -0
  96. package/server/src/games/gandengyan.js +10 -0
  97. package/server/src/http/access.js +63 -12
  98. package/server/src/http/app.js +34 -840
  99. package/server/src/http/nodeStatus.js +101 -9
  100. package/server/src/http/routePolicy.js +2 -0
  101. package/server/src/http/routes/channelRoutes.js +163 -0
  102. package/server/src/http/routes/fileRoutes.js +345 -0
  103. package/server/src/http/routes/nodeRoutes.js +323 -0
  104. package/server/src/http/routes/seedRoutes.js +58 -0
  105. package/server/src/index.js +483 -265
  106. package/server/src/node/config.js +2 -6
  107. package/server/src/utils/avatar.js +59 -3
  108. package/server/src/utils/downloadMessages.js +0 -2
  109. package/out/assets/AppShell-CQhg6DJU.js +0 -1
  110. package/out/assets/ChatUi-BepWs-ZU.js +0 -1
  111. package/out/assets/LanguageToggle-CtzCCAYv.js +0 -1
  112. package/out/assets/LogoIcon-Dxto3Sb4.js +0 -1
  113. package/out/assets/MarketingLayout-BQw0IS2i.js +0 -1
  114. package/out/assets/MoveModal-4D9n11Kw.js +0 -1
  115. package/out/assets/Nav-9MDdvgNs.js +0 -1
  116. package/out/assets/NoteSidebar-C-rIt32H.js +0 -1
  117. package/out/assets/OpenSidebarButton-Dd0JmKuE.js +0 -1
  118. package/out/assets/PemBlock-C8dEIzu-.js +0 -1
  119. package/out/assets/SidebarAccount-ClS-N0lq.js +0 -1
  120. package/out/assets/arrow-right-urE9Rd7j.js +0 -1
  121. package/out/assets/channelApi-BwQU0-h1.js +0 -1
  122. package/out/assets/check-DUNsD2t6.js +0 -1
  123. package/out/assets/chevron-down-D6mpsfv4.js +0 -1
  124. package/out/assets/circle-alert-W0iyN4sC.js +0 -1
  125. package/out/assets/cloud-BMyOoC2x.js +0 -1
  126. package/out/assets/code-B1Cb_Icm.js +0 -1
  127. package/out/assets/copy-C1MttOli.js +0 -1
  128. package/out/assets/download-y7SZXu6E.js +0 -1
  129. package/out/assets/downloadValidation-B0p9Ai_9.js +0 -1
  130. package/out/assets/filePreview-UI9NH34f.js +0 -1
  131. package/out/assets/game-CdU3xnZo.js +0 -1
  132. package/out/assets/hard-drive-D13Qbobu.js +0 -1
  133. package/out/assets/image-DJCA16l_.js +0 -1
  134. package/out/assets/index-8eWJAjpY.css +0 -1
  135. package/out/assets/index-BZc4blbW.css +0 -1
  136. package/out/assets/index-BdaFEQG-.css +0 -1
  137. package/out/assets/index-QxXZzOUL.js +0 -33
  138. package/out/assets/index.lazy-BBTTFanX.js +0 -1
  139. package/out/assets/index.lazy-BG4ZylHD.js +0 -2
  140. package/out/assets/index.lazy-Bi-6ZXZX.js +0 -1
  141. package/out/assets/index.lazy-BixWVr0B.js +0 -1
  142. package/out/assets/index.lazy-BjFwNYy5.js +0 -3
  143. package/out/assets/index.lazy-C8EIQsXY.js +0 -2
  144. package/out/assets/index.lazy-CarNe2uu.js +0 -1
  145. package/out/assets/index.lazy-DEuGu3H3.js +0 -1
  146. package/out/assets/index.lazy-GPyILCA7.js +0 -3
  147. package/out/assets/index.lazy-I8ofndXl.js +0 -1
  148. package/out/assets/index.lazy-TxhWsA7y.js +0 -1
  149. package/out/assets/index.lazy-azfky8k7.js +0 -1
  150. package/out/assets/key-round-CZniN9lv.js +0 -1
  151. package/out/assets/lock-D5OSNhep.js +0 -1
  152. package/out/assets/log-out-B6phyZ5z.js +0 -1
  153. package/out/assets/music-CbUskKgg.js +0 -1
  154. package/out/assets/notebook-pen-DqKDQ6MJ.js +0 -1
  155. package/out/assets/play-BIl8q9eU.js +0 -1
  156. package/out/assets/plus-BxxbpH6Q.js +0 -1
  157. package/out/assets/save-DkH1n_Ov.js +0 -1
  158. package/out/assets/search-BQi5Z0E-.js +0 -1
  159. package/out/assets/send-Cl6NtD2T.js +0 -1
  160. package/out/assets/trash-2-BBjpgK_f.js +0 -1
  161. package/out/assets/triangle-alert-l98G8u9O.js +0 -1
  162. package/out/assets/upload-ByP6Ydde.js +0 -1
  163. package/out/assets/useChannelMessages-BgbYfF2c.js +0 -3
  164. package/out/assets/useGameRoom-DPmweWwe.js +0 -1
  165. package/out/assets/wallet-c7zIhNSM.js +0 -1
  166. package/out/assets/wifi-Bm4biAjc.js +0 -1
@@ -0,0 +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)&&lt(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};
@@ -0,0 +1 @@
1
+ import{n as e,o as t,t as n}from"./jsx-runtime-Bt-cYkS5.js";import{C as r,t as i,w as a,x as o,y as s}from"./userStore-C4vdYsQp.js";import{n as c,t as l}from"./triangle-alert-DP9EP7IM.js";import{t as u}from"./download-Bg-OdoxM.js";import{t as ee}from"./external-link-m8ZIQe4p.js";import{t as te}from"./file-text-DG1orIkZ.js";import{t as ne}from"./hard-drive-BB-sllXA.js";import{t as d}from"./refresh-cw-roxAhABl.js";import{B as re,T as ie,U as f,_ as p,x as ae}from"./index-CrAXrmfP.js";import{t as m}from"./format-CR8oUWq6.js";import{i as oe,n as h,r as se,t as g}from"./downloadValidation-CUvbvj9f.js";var _=s(`circle-x`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]]),v=s(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),y=s(`log-in`,[[`path`,{d:`m10 17 5-5-5-5`,key:`1bsop3`}],[`path`,{d:`M15 12H3`,key:`6jk70r`}],[`path`,{d:`M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4`,key:`u53s6r`}]]),b=s(`wifi-off`,[[`path`,{d:`M12 20h.01`,key:`zekei9`}],[`path`,{d:`M8.5 16.429a5 5 0 0 1 7 0`,key:`1bycff`}],[`path`,{d:`M5 12.859a10 10 0 0 1 5.17-2.69`,key:`1dl1wf`}],[`path`,{d:`M19 12.859a10 10 0 0 0-2.007-1.523`,key:`4k23kn`}],[`path`,{d:`M2 8.82a15 15 0 0 1 4.177-2.643`,key:`1grhjp`}],[`path`,{d:`M22 8.82a15 15 0 0 0-11.288-3.764`,key:`z3jwby`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),x=t(e(),1),S=n(),ce=1800;function C(e,t){return`most://${e}${t||``}`}function le(e,t){let n=e.trim().replace(/[\\/]+$/,``);return n?`${n}${n.includes(`\\`)?`\\`:`/`}downloads`:t}function w(e,t){let n=e[t];return typeof n==`string`?n:void 0}function T(e,t){let n=e[t];return typeof n==`number`&&Number.isFinite(n)?n:void 0}function ue(e){let t;try{t=JSON.parse(e)}catch{return null}if(!t||typeof t!=`object`)return null;let n=t,r=w(n,`event`),i=n.data;if(!r||!i||typeof i!=`object`)return null;let a=i;return{event:r,payload:{taskId:w(a,`taskId`),percent:T(a,`percent`),loaded:T(a,`loaded`),total:T(a,`total`),file:w(a,`file`),fileName:w(a,`fileName`),error:w(a,`error`)}}}function E(){let{t:e}=re(),{cid:t}=a({from:`/cid/$cid/`}),n=f({select:e=>e.searchStr}),o=p(e=>e.hasBackend),s=p(e=>e.addToast),c=p(e=>e.openConnectModal),w=i(e=>e.identity),T=i(e=>e.openLoginModal),E=(0,x.useMemo)(()=>C(t,n),[t,n]),k=(0,x.useMemo)(()=>oe(E),[E]),A=(0,x.useMemo)(()=>g(E,e),[E,e]),de=k.fileName||t,[j,M]=(0,x.useState)({status:`idle`,message:``}),[N,P]=(0,x.useState)(null),[F,I]=(0,x.useState)({status:`idle`,message:``}),[L,R]=(0,x.useState)(``),[z,B]=(0,x.useState)(0),[V,H]=(0,x.useState)(null),[U,W]=(0,x.useState)(null),[fe,G]=(0,x.useState)(``),[pe,K]=(0,x.useState)(!1),q=(0,x.useRef)(0),J=(0,x.useRef)(null),Y=N?.fileName||de,X=N?.size??U,Z=j.status===`available`||j.status===`already-local`,Q=F.status===`starting`||F.status===`downloading`,me=le(fe,e(`cid.saveToFallback`)),$=(0,x.useCallback)(async()=>{let t=q.current+1;if(q.current=t,R(``),B(0),H(null),W(null),I({status:`idle`,message:``}),A){P(null),M({status:`error`,message:A});return}if(o===null){P(null),M({status:`waiting-backend`,message:e(`cid.status.waitingBackend`)});return}if(o!==!0){P(null),M({status:`backend-missing`,message:e(`cid.status.backendMissing`)});return}if(!w){P(null),M({status:`login-required`,message:e(`cid.status.loginRequired`)});return}M({status:`checking`,message:e(`cid.status.checking`)}),P(null);try{let n=await h.checkDownload(E);if(q.current!==t)return;P(n),M({status:n.alreadyExists?`already-local`:`available`,message:n.alreadyExists?e(`cid.status.alreadyLocal`,{fileName:n.fileName}):e(`cid.status.available`,{fileName:n.fileName})})}catch(e){if(q.current!==t)return;M({status:`error`,message:await se(e)}),P(null)}},[o,E,e,w,A]);(0,x.useEffect)(()=>{document.title=e(`cid.meta.title`)},[e]),(0,x.useEffect)(()=>{let e=()=>{J.current!==null&&(window.clearTimeout(J.current),J.current=null)},t=()=>{document.visibilityState===`hidden`&&(e(),K(!1))};return document.addEventListener(`visibilitychange`,t),window.addEventListener(`pagehide`,t),()=>{e(),document.removeEventListener(`visibilitychange`,t),window.removeEventListener(`pagehide`,t)}},[]),(0,x.useEffect)(()=>{$()},[$]),(0,x.useEffect)(()=>{if(o!==!0)return;let e=!1;return h.getDataPath().then(t=>{e||G(t.dataPath)}).catch(()=>{e||G(``)}),()=>{e=!0}},[o]),(0,x.useEffect)(()=>{if(!L||!w)return;let t=null,n=!1;return(async()=>{if(t=new WebSocket(await ie(`/ws`)),n){t.close();return}t.onmessage=t=>{let n=ue(t.data);!n||n.payload.taskId!==L||(n.event===`download:progress`&&(B(n.payload.percent||0),H(n.payload.loaded??null),W(n.payload.total??null)),n.event===`download:status`&&I({status:`downloading`,message:n.payload.file?e(`cid.status.downloadingFile`,{fileName:n.payload.file}):e(`cid.status.downloading`)}),n.event===`download:success`&&(B(100),I({status:`completed`,message:e(`cid.status.downloadComplete`,{fileName:n.payload.fileName||Y})}),s(e(`cid.toast.downloadComplete`),`success`)),n.event===`download:error`&&(I({status:`error`,message:n.payload.error||e(`cid.status.downloadFailed`,{error:``})}),s(e(`cid.toast.downloadFailed`,{error:n.payload.error||e(`cid.errorFallback`)}),`error`)),n.event===`download:cancelled`&&(I({status:`cancelled`,message:e(`cid.status.cancelled`)}),s(e(`cid.toast.cancelled`),`warning`)))}})(),()=>{n=!0,t?.close()}},[s,Y,e,L,w]);let he=async()=>{if(!w){T();return}if(o!==!0){c();return}if(!(!Z||Q)){I({status:`starting`,message:e(`cid.status.startingDownload`)}),B(0);try{let t=await h.downloadFile(E);if(t.alreadyExists){I({status:`completed`,message:e(`cid.status.alreadyLocal`,{fileName:t.fileName||Y})}),s(e(`cid.toast.alreadyLocal`),`warning`);return}t.taskId&&(R(t.taskId),I({status:`downloading`,message:e(`cid.status.downloading`)}),s(e(`cid.toast.downloadStarted`),`info`))}catch(t){let n=await ae(t,e(`cid.status.downloadFailed`,{error:e(`cid.errorFallback`)}));I({status:`error`,message:n}),s(n,`error`)}}},ge=()=>{K(!1),J.current!==null&&window.clearTimeout(J.current),J.current=window.setTimeout(()=>{J.current=null,document.visibilityState!==`hidden`&&K(!0)},ce)},_e=async()=>{L&&await h.cancelDownload(L).catch(()=>{})},ve=D(j.status,F.status);return(0,S.jsx)(`main`,{className:`cid-page`,children:(0,S.jsxs)(`section`,{className:`cid-shell`,children:[(0,S.jsxs)(`div`,{className:`cid-heading`,children:[(0,S.jsx)(`span`,{className:`cid-kicker`,children:e(`cid.kicker`)}),(0,S.jsx)(`h1`,{children:e(`cid.title`)}),(0,S.jsx)(`p`,{children:e(`cid.subtitle`)})]}),(0,S.jsxs)(`div`,{className:`cid-panel`,children:[(0,S.jsxs)(`div`,{className:`cid-handoff`,"aria-label":e(`cid.handoff.title`),children:[(0,S.jsxs)(`div`,{className:`cid-handoff-copy`,children:[(0,S.jsx)(`p`,{className:`cid-handoff-title`,children:e(`cid.handoff.title`)}),(0,S.jsx)(`p`,{children:e(`cid.handoff.desc`)})]}),(0,S.jsxs)(`a`,{className:`btn btn-primary`,href:E,onClick:ge,children:[(0,S.jsx)(ee,{size:16}),e(`cid.handoff.action`)]})]}),pe&&(0,S.jsxs)(`div`,{className:`cid-handoff-fallback`,role:`status`,children:[(0,S.jsx)(l,{size:18}),(0,S.jsx)(`p`,{children:e(`cid.handoff.fallback`)}),(0,S.jsxs)(r,{to:`/download/`,className:`btn btn-secondary`,children:[(0,S.jsx)(u,{size:16}),e(`cid.handoff.downloadAction`)]})]}),(0,S.jsxs)(`div`,{className:`cid-status`,children:[(0,S.jsx)(`span`,{className:`cid-status-icon ${j.status}`,children:ve}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`p`,{className:`cid-status-label`,children:O(j.status,e)}),(0,S.jsx)(`p`,{className:`cid-status-message`,children:j.message})]})]}),(0,S.jsxs)(`dl`,{className:`cid-details`,children:[(0,S.jsxs)(`div`,{children:[(0,S.jsxs)(`dt`,{children:[(0,S.jsx)(te,{size:16}),e(`cid.fileNameLabel`)]}),(0,S.jsx)(`dd`,{children:Y})]}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`dt`,{children:e(`cid.cidLabel`)}),(0,S.jsx)(`dd`,{className:`cid-mono`,children:t})]}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`dt`,{children:e(`cid.sizeLabel`)}),(0,S.jsx)(`dd`,{children:X?m(X):e(`cid.unknownSize`)})]}),(0,S.jsxs)(`div`,{children:[(0,S.jsxs)(`dt`,{children:[(0,S.jsx)(ne,{size:16}),e(`cid.saveToLabel`)]}),(0,S.jsx)(`dd`,{children:me})]})]}),F.status!==`idle`&&(0,S.jsxs)(`div`,{className:`cid-download-state ${F.status}`,children:[(0,S.jsx)(`p`,{children:F.message}),(F.status===`starting`||F.status===`downloading`)&&(0,S.jsxs)(`div`,{className:`cid-progress`,children:[(0,S.jsx)(`progress`,{className:`cid-progress-bar`,value:z,max:100}),(0,S.jsx)(`span`,{children:V!==null&&U!==null?`${m(V)} / ${m(U)}`:`${z}%`})]})]}),(0,S.jsxs)(`div`,{className:`cid-actions`,children:[j.status===`login-required`&&(0,S.jsxs)(`button`,{className:`btn btn-primary`,onClick:T,children:[(0,S.jsx)(y,{size:16}),e(`cid.loginAction`)]}),j.status===`backend-missing`&&(0,S.jsxs)(`button`,{className:`btn btn-primary`,onClick:c,children:[(0,S.jsx)(b,{size:16}),e(`cid.connectAction`)]}),(0,S.jsxs)(`button`,{className:`btn btn-primary`,disabled:!Z||Q,onClick:he,children:[Q?(0,S.jsx)(v,{className:`cid-spin-icon`,size:16}):(0,S.jsx)(u,{size:16}),e(Q?`cid.downloadingAction`:`cid.startAction`)]}),L&&F.status===`downloading`&&(0,S.jsxs)(`button`,{className:`btn btn-secondary`,onClick:_e,children:[(0,S.jsx)(_,{size:16}),e(`cid.cancelAction`)]}),(0,S.jsxs)(`button`,{className:`btn btn-secondary`,disabled:j.status===`checking`,onClick:$,children:[(0,S.jsx)(d,{size:16}),e(`cid.retryAction`)]}),(0,S.jsx)(r,{to:`/app/`,className:`btn btn-secondary`,children:e(`cid.openAppAction`)})]})]})]})})}function D(e,t){return t===`completed`?(0,S.jsx)(c,{size:28}):t===`error`||e===`error`?(0,S.jsx)(l,{size:28}):e===`checking`||e===`waiting-backend`||t===`starting`||t===`downloading`?(0,S.jsx)(v,{size:28}):e===`backend-missing`?(0,S.jsx)(b,{size:28}):e===`login-required`?(0,S.jsx)(y,{size:28}):(0,S.jsx)(c,{size:28})}function O(e,t){switch(e){case`checking`:return t(`cid.label.checking`);case`available`:return t(`cid.label.available`);case`already-local`:return t(`cid.label.alreadyLocal`);case`login-required`:return t(`cid.label.loginRequired`);case`backend-missing`:return t(`cid.label.backendMissing`);case`waiting-backend`:return t(`cid.label.waitingBackend`);case`error`:return t(`cid.label.error`);default:return t(`cid.label.idle`)}}var k=o(`/cid/$cid/`)({component:E});export{k as Route};
@@ -0,0 +1 @@
1
+ import{y as e}from"./userStore-C4vdYsQp.js";var t=e(`key-round`,[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{y as e}from"./userStore-C4vdYsQp.js";var t=e(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),n=e(`lock`,[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`,key:`1w4ew1`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`,key:`fwvmzm`}]]);export{t as n,n as t};
@@ -0,0 +1 @@
1
+ import{y as e}from"./userStore-C4vdYsQp.js";var t=e(`message-square`,[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{n as e,o as t,t as n}from"./jsx-runtime-Bt-cYkS5.js";import{_ as r,f as i,y as a}from"./userStore-C4vdYsQp.js";import{i as o}from"./LanguageToggle-Di5b88mK.js";import{t as s}from"./copy-BtJHJnqH.js";import{B as c}from"./index-CrAXrmfP.js";import{t as l}from"./dayjs.min-Dcc0B6Je.js";var u=a(`fingerprint-pattern`,[[`path`,{d:`M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4`,key:`1nerag`}],[`path`,{d:`M14 13.12c0 2.38 0 6.38-1 8.88`,key:`o46ks0`}],[`path`,{d:`M17.29 21.02c.12-.6.43-2.3.5-3.02`,key:`ptglia`}],[`path`,{d:`M2 12a10 10 0 0 1 18-6`,key:`ydlgp0`}],[`path`,{d:`M2 16h.01`,key:`1gqxmh`}],[`path`,{d:`M21.8 16c.2-2 .131-5.354 0-6`,key:`drycrb`}],[`path`,{d:`M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2`,key:`1tidbn`}],[`path`,{d:`M8.65 22c.21-.66.45-1.32.57-2`,key:`13wd9y`}],[`path`,{d:`M9 6.8a6 6 0 0 1 9 5.2v2`,key:`1fr1j5`}]]),d=a(`user`,[[`path`,{d:`M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2`,key:`975kel`}],[`circle`,{cx:`12`,cy:`7`,r:`4`,key:`17ys0d`}]]),f=t(e(),1),p=n();function m({text:e,label:t,copiedLabel:n,className:r=`btn btn-icon`,iconSize:i=14}){let{t:a}=c(),[l,u]=(0,f.useState)(!1),d=n||a(`common.copied`),m=t||a(`common.copy`);async function h(){try{await navigator.clipboard.writeText(e),u(!0),setTimeout(()=>u(!1),1500)}catch{}}return(0,p.jsxs)(`button`,{type:`button`,className:r,onClick:h,title:l?d:m,children:[l?(0,p.jsx)(o,{size:i}):(0,p.jsx)(s,{size:i}),t?l?d:t:null]})}var h=t(i(),1);l();var g=`0123456789abcdefghijklmnopqrstuvwxyz`,_=e=>{let t=[];for(;e>=128;)t.push(e&127|128),e>>=7;return t.push(e),t},v=e=>{let t=new Uint8Array([8,1,18,..._(e.length)]),n=new Uint8Array(t.length+e.length);return n.set(t,0),n.set(e,t.length),n},y=(e,t)=>{if(e.length===0)return``;let n=t.length,r=0;for(;r<e.length&&e[r]===0;)r++;let i=[0];for(let t=r;t<e.length;t++){let r=e[t];for(let e=0;e<i.length;e++){let t=i[e]*256+r;i[e]=t%n,r=Math.floor(t/n)}for(;r>0;)i.push(r%n),r=Math.floor(r/n)}let a=``;for(let e=0;e<r;e++)a+=t[0];for(let e=i.length-1;e>=0;e--)a+=t[i[e]];return a},b=(e,t)=>{let n=t.slice(2),i=new Uint8Array(r(e+n));return h.default.sign.keyPair.fromSecretKey(i)},x=(e,t)=>{let n=v(b(e,t).publicKey),r=new Uint8Array(2+n.length);r[0]=0,r[1]=36,r.set(n,2);let i=new Uint8Array([1,114]),a=new Uint8Array(i.length+r.length);return a.set(i,0),a.set(r,i.length),`k`+y(a,g)};export{u as a,d as i,x as n,m as r,b as t};
@@ -0,0 +1 @@
1
+ import{y as e}from"./userStore-C4vdYsQp.js";var t=e(`music`,[[`path`,{d:`M9 18V5l12-2v13`,key:`1jmyc2`}],[`circle`,{cx:`6`,cy:`18`,r:`3`,key:`fqmcym`}],[`circle`,{cx:`18`,cy:`16`,r:`3`,key:`1hluhg`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{y as e}from"./userStore-C4vdYsQp.js";var t=e(`notebook-pen`,[[`path`,{d:`M13.4 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-7.4`,key:`re6nr2`}],[`path`,{d:`M2 6h4`,key:`aawbzj`}],[`path`,{d:`M2 10h4`,key:`l0bgd4`}],[`path`,{d:`M2 14h4`,key:`1gsvsf`}],[`path`,{d:`M2 18h4`,key:`1bu2t1`}],[`path`,{d:`M21.378 5.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z`,key:`pqwjuv`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{y as e}from"./userStore-C4vdYsQp.js";var t=e(`play`,[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{y as e}from"./userStore-C4vdYsQp.js";var t=e(`ellipsis`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`19`,cy:`12`,r:`1`,key:`1wjl8i`}],[`circle`,{cx:`5`,cy:`12`,r:`1`,key:`1pcz8c`}]]),n=e(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]);export{t as n,n as t};
@@ -0,0 +1 @@
1
+ import{y as e}from"./userStore-C4vdYsQp.js";var t=e(`refresh-cw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{y as e}from"./userStore-C4vdYsQp.js";var t=e(`save`,[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`,key:`1c8476`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`,key:`1ydtos`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`,key:`t51u73`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{y as e}from"./userStore-C4vdYsQp.js";var t=e(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{y as e}from"./userStore-C4vdYsQp.js";var t=e(`send`,[[`path`,{d:`M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z`,key:`1ffxy3`}],[`path`,{d:`m21.854 2.147-10.94 10.939`,key:`12cjpa`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{y as e}from"./userStore-C4vdYsQp.js";var t=e(`shield-check`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{y as e}from"./userStore-C4vdYsQp.js";var t=e(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{y as e}from"./userStore-C4vdYsQp.js";var t=e(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),n=e(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]);export{t as n,n as t};
@@ -0,0 +1 @@
1
+ import{y as e}from"./userStore-C4vdYsQp.js";var t=e(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),n=e(`folder`,[[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`,key:`1kt360`}]]),r=e(`upload`,[[`path`,{d:`M12 3v12`,key:`1x0j5s`}],[`path`,{d:`m17 8-5-5-5 5`,key:`7q97r8`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}]]);export{n,t as r,r as t};
@@ -0,0 +1,3 @@
1
+ import{n as e,o as t}from"./jsx-runtime-Bt-cYkS5.js";import{t as n}from"./userStore-C4vdYsQp.js";import{T as r,i,o as a}from"./index-CrAXrmfP.js";var o=t(e(),1);function s(e=``,t=[]){let n=[e,...t];return[...new Set(n.filter(Boolean))]}function c(e=[]){return s(``,e).join(`
2
+ `)}function l(e,t){let n=new Set(e),r=new Set(t);return{subscribe:[...r].filter(e=>!n.has(e)),unsubscribe:[...n].filter(e=>!r.has(e))}}function u(e){return String(e.id||`${e.author||``}-${e.timestamp||``}-${e.content||``}`)}function d(e){let t=Number(e.timestamp);return Number.isFinite(t)?t:0}function f(e){return e.map((e,t)=>({message:e,index:t})).sort((e,t)=>{let n=d(e.message)-d(t.message);return n===0?e.index-t.index:n}).map(e=>e.message)}function p({isReady:e,enabled:t=!0,channelName:d=``,extraSubscribedChannelNames:p=[],peerId:m=``,waitForPeerId:h=!1,limit:g=100,reconnectBaseDelay:_=2500,acceptMessage:v,getMessageKey:y=u,onSyncError:b,onSocketEvent:x,onReconnect:S}){let C=n(e=>e.identity),[w,T]=(0,o.useState)([]),[E,D]=(0,o.useState)(!1),O=(0,o.useMemo)(()=>c(p),[p]),k=(0,o.useRef)(null),A=(0,o.useRef)(d),j=(0,o.useRef)(p),M=(0,o.useRef)(null),N=(0,o.useRef)(0),P=(0,o.useRef)(v),F=(0,o.useRef)(y),I=(0,o.useRef)(x),L=(0,o.useRef)(b),R=(0,o.useRef)(S),z=(0,o.useRef)(m),B=(0,o.useRef)(new Set);(0,o.useEffect)(()=>{j.current=O?O.split(`
3
+ `):[]},[O]),(0,o.useEffect)(()=>{P.current=v},[v]),(0,o.useEffect)(()=>{F.current=y},[y]),(0,o.useEffect)(()=>{I.current=x},[x]),(0,o.useEffect)(()=>{L.current=b},[b]),(0,o.useEffect)(()=>{R.current=S},[S]);let V=(0,o.useCallback)(e=>{let t=P.current;return t?e.filter(t):e},[]),H=(0,o.useCallback)((e,t,n=!0)=>{let r=[...e];for(let e of V(t)){let t=F.current(e);if(n){let n=r.findIndex(t=>t.pending&&t.author?.toLowerCase()===e.author?.toLowerCase()&&t.content===e.content);if(n!==-1){r[n]={...e,id:e.id||t};continue}}r.some(e=>F.current(e)===t)||r.push({...e,id:e.id||t})}return f(r)},[V]),U=(0,o.useCallback)((e,t)=>{k.current?.readyState===WebSocket.OPEN&&k.current.send(JSON.stringify({event:e,data:t}))},[]),W=(0,o.useCallback)(e=>{let t=new Set(e.filter(Boolean)),n=l(B.current,t);for(let e of n.unsubscribe)U(`channel:unsubscribe`,{channel:e});for(let e of n.subscribe)U(`channel:subscribe`,{channel:e});B.current=t},[U]),G=(0,o.useCallback)(()=>s(A.current,j.current),[]),K=(0,o.useCallback)(async(t=A.current,n={})=>{if(!t||!e)return[];try{let e=V(await a.getChannelMessages(t,g));return T(t=>n.replace?f(e):H(t,e,!1)),e}catch(e){return n.replace&&T([]),await L.current?.(e),[]}},[V,e,g,H]);(0,o.useEffect)(()=>{z.current=m,m&&(U(`register`,{peerId:m}),h&&(W(G()),A.current&&K(A.current,{replace:!0})))},[G,m,W,K,h,U]);let q=(0,o.useCallback)(()=>{T([])},[]),J=(0,o.useCallback)(async({channelName:e=A.current,content:t,attachment:n,optimisticId:r})=>{let o=t.trim();if(!e||!o||!C)return null;let s=i(C),c={id:r||`${s.author}-${Date.now()}-${Math.random().toString(36).slice(2)}`,...s,content:o,timestamp:Date.now(),pending:!0,attachment:n};T(e=>f([...e,c]));try{let t=await a.sendChannelMessage({channelName:e,content:o,...s,attachment:n});return T(e=>f(e.map(e=>e.id===c.id?{...t.message,id:t.message.id||F.current(t.message)}:e))),t.message}catch(e){throw T(e=>e.filter(e=>e.id!==c.id)),e}},[C]);return(0,o.useEffect)(()=>{A.current=d,!(!e||!t)&&(d&&K(d,{replace:!0}),(!h||z.current)&&W(G()))},[d,t,O,G,e,W,K,h]),(0,o.useEffect)(()=>{!e||!t||h&&!z.current||W(G())},[t,G,e,W,h]),(0,o.useEffect)(()=>{if(!e||!t){D(!1);return}let n=!1;N.current=0;async function i(){let e=new WebSocket(await r(`/ws`));if(n){e.close();return}e.onopen=()=>{D(!0),N.current=0,z.current&&e.send(JSON.stringify({event:`register`,data:{peerId:z.current}})),(!h||z.current)&&(B.current.clear(),W(G()),A.current&&K(A.current,{replace:!0}),R.current?.())},e.onmessage=e=>{try{let t=JSON.parse(e.data);I.current?.(t.event,t.data),t.event===`channel:message`&&t.data?.channel===A.current&&t.data?.message&&T(e=>H(e,[t.data.message])),t.event===`user:metadata:updated`&&t.data?.scope===`channels`&&A.current&&K(A.current,{replace:!0})}catch{}},e.onclose=()=>{if(D(!1),n)return;let e=N.current;if(e>=20)return;let t=Math.min(_*2**e,3e4);N.current=e+1,M.current=setTimeout(i,t)},e.onerror=()=>e.close(),k.current=e}return i(),()=>{n=!0,M.current&&clearTimeout(M.current),k.current?.close(),k.current=null,B.current.clear()}},[t,G,e,H,_,W,K,h]),{clearMessages:q,connected:E,messages:w,sendMessage:J,setMessages:T,syncMessages:K}}export{p as t};
@@ -0,0 +1 @@
1
+ import{n as e,o as t,t as n}from"./jsx-runtime-Bt-cYkS5.js";import{C as r,t as i,y as a}from"./userStore-C4vdYsQp.js";import{B as o,L as s,M as c,_ as l,i as u,n as d,o as f,r as p,x as m}from"./index-CrAXrmfP.js";import{t as h}from"./SidebarAccount-bo1ypzrJ.js";import{t as g}from"./useChannelMessages-46C52EyL.js";var _=a(`spade`,[[`path`,{d:`M12 18v4`,key:`jadmvz`}],[`path`,{d:`M2 14.499a5.5 5.5 0 0 0 9.591 3.675.6.6 0 0 1 .818.001A5.5 5.5 0 0 0 22 14.5c0-2.29-1.5-4-3-5.5l-5.492-5.312a2 2 0 0 0-3-.02L5 8.999c-1.5 1.5-3 3.2-3 5.5`,key:`1aw2pz`}]]),v=a(`swords`,[[`polyline`,{points:`14.5 17.5 3 6 3 3 6 3 17.5 14.5`,key:`1hfsw2`}],[`line`,{x1:`13`,x2:`19`,y1:`19`,y2:`13`,key:`1vrmhu`}],[`line`,{x1:`16`,x2:`20`,y1:`16`,y2:`20`,key:`1bron3`}],[`line`,{x1:`19`,x2:`21`,y1:`21`,y2:`19`,key:`13pww6`}],[`polyline`,{points:`14.5 6.5 18 3 21 3 21 6 17.5 9.5`,key:`hbey2j`}],[`line`,{x1:`5`,x2:`9`,y1:`14`,y2:`18`,key:`1hf58s`}],[`line`,{x1:`7`,x2:`4`,y1:`17`,y2:`20`,key:`pidxm4`}],[`line`,{x1:`3`,x2:`5`,y1:`19`,y2:`21`,key:`1pehsh`}]]),y=n(),b=[{id:`gandengyan`,labelKey:`game.gandengyan.title`,href:`/game/gandengyan/`,icon:(0,y.jsx)(v,{size:16})},{id:`zhajinhua`,labelKey:`game.zhajinhua.title`,href:`/game/zhajinhua/`,icon:(0,y.jsx)(_,{size:16})}];function x({activeGame:e,closeSidebar:t}){let{t:n}=o();return(0,y.jsxs)(y.Fragment,{children:[(0,y.jsxs)(`button`,{type:`button`,className:`sidebar-header sidebar-header-link`,onClick:c(),children:[(0,y.jsx)(s,{size:18}),(0,y.jsx)(`h1`,{children:`MOST PEOPLE`})]}),(0,y.jsx)(`nav`,{className:`sidebar-nav`,children:b.map(i=>(0,y.jsxs)(r,{to:i.href,className:`sidebar-nav-btn ${e===i.id?`active`:``}`,onClick:t,children:[i.icon,(0,y.jsx)(`span`,{children:n(i.labelKey)})]},i.id))}),(0,y.jsx)(h,{})]})}var S=t(e(),1),C=`game`,w=`mostbox.game.event`,T=[`gandengyan`,`zhajinhua`],E=`ABCDEFGHJKLMNPQRSTUVWXYZ23456789`;function D(e){let t=String(e||``).trim().toLowerCase();return T.includes(t)?t:``}function O(e){return String(e||``).trim().toUpperCase().replace(/[^A-Z0-9]/g,``).slice(0,8)}function k(e){return/^[A-Z0-9]{4,8}$/.test(String(e||``))}function A(){let e=``;for(let t=0;t<6;t++)e+=E[V(32)];return e}function j(e,t){let n=D(e),r=O(t);return!n||!k(r)?``:`game.${n}.${r.toLowerCase()}`}function M({gameId:e,roomCode:t,event:n,payload:r}){let i=D(e);return{kind:w,version:1,gameId:i,roomCode:O(t),event:String(n||``),eventId:B(i||`game`),payload:r||{}}}function N(e,t={}){try{let n=JSON.parse(String(e||``));if(!n||n.kind!==`mostbox.game.event`||n.version!==1||typeof n.event!=`string`||typeof n.eventId!=`string`)return null;let r=D(n.gameId),i=O(n.roomCode);return!r||!k(i)||t.gameId&&r!==D(t.gameId)||t.roomCode&&i!==O(t.roomCode)?null:{...n,gameId:r,roomCode:i,payload:n.payload&&typeof n.payload==`object`?n.payload:{}}}catch{return null}}function P(e=[],t={}){let n=[],r=new Map,i=``;for(let a of z(e)){let e=N(a.content,t);if(e){if(e.event===`room:create`){let t=I(e.payload?.player,a);if(!t)continue;i||=t.address,R(n,r,t);continue}if(e.event===`player:join`){let t=I(e.payload?.player,a);t&&R(n,r,t);continue}if(e.event===`player:leave`){let t=L(e.payload?.player?.address||a.author);if(t){let e=n.findIndex(e=>e.address===t);e!==-1&&(n.splice(e,1),r.delete(t))}}}}return{gameId:D(t.gameId),roomCode:O(t.roomCode),hostAddress:i,players:n}}function F(e=[],t={}){let n=null;for(let r of z(e)){let e=N(r.content,t);if(!e||e.event!==`room:state`)continue;let i=Number(e.payload?.seq||0);(!n||i>=Number(n.payload?.seq||0))&&(n=e)}return n}function I(e,t){if(!e||typeof e!=`object`)return null;let n=t&&typeof t==`object`?t:{author:t},r=n.author,i=L(e.address||r);if(!i||L(r)!==i)return null;let a=String(n.authorName||e.name||``).trim().slice(0,50)||U(i),o=String(n.avatar||e.avatar||``).trim(),s={address:i,name:a,publicKey:String(e.publicKey||``).trim(),joinedAt:Number(e.joinedAt||Date.now())};return o&&(s.avatar=o.slice(0,4096)),s}function L(e){let t=String(e||``).trim();return/^0x[a-fA-F0-9]{40}$/.test(t)?t.toLowerCase():``}function R(e,t,n){let r=t.get(n.address);if(r){Object.assign(r,n);return}e.push(n),t.set(n.address,n)}function z(e){return[...e].sort((e,t)=>Number(e.timestamp||0)-Number(t.timestamp||0))}function B(e){return`${e}_${Date.now()}_${H(4)}`}function V(e){if(globalThis.crypto?.getRandomValues){let t=new Uint32Array(1);return globalThis.crypto.getRandomValues(t),t[0]%e}return Math.floor(Math.random()*e)}function H(e){let t=new Uint8Array(e);if(globalThis.crypto?.getRandomValues)globalThis.crypto.getRandomValues(t);else for(let e=0;e<t.length;e++)t[e]=Math.floor(Math.random()*256);return[...t].map(e=>e.toString(16).padStart(2,`0`)).join(``)}function U(e){return e?`${e.slice(0,6)}...${e.slice(-4)}`:``}function W({gameId:e,onError:t,getPlayerPayload:n}){let{t:r}=o(),a=l(e=>e.hasBackend),s=l(e=>e.checkBackend),c=l(e=>e.openConnectModal),u=i(e=>e.identity),p=i(e=>e.openLoginModal),[h,_]=(0,S.useState)(``),[v,y]=(0,S.useState)(``),[b,x]=(0,S.useState)(!1),w=a===!0,T=(0,S.useCallback)(async(e,n)=>{let r=await m(e,n);t&&t(r)},[t]),E=(0,S.useCallback)(t=>!!N(t.content,{gameId:e,roomCode:h}),[e,h]),D=(0,S.useCallback)(t=>{let n=N(t.content,{gameId:e,roomCode:h});return n?`${t.author}-${n.eventId}`:`${t.author}-${t.timestamp}-${t.content}`},[e,h]),{clearMessages:k,connected:P,messages:F,sendMessage:I,syncMessages:L}=g({isReady:w,enabled:!!u,channelName:v,limit:500,acceptMessage:E,getMessageKey:D,onSyncError:e=>T(e,r(`game.room.error.readLog`))}),R=(0,S.useMemo)(()=>F.map(t=>({message:t,event:N(t.content,{gameId:e,roomCode:h})})).filter(e=>e.event),[e,F,h]),z=(0,S.useCallback)(()=>u?w?!0:(c(),!1):(p(),!1),[w,c,p,u]);(0,S.useEffect)(()=>{a===null&&s()},[s,a]);let B=(0,S.useCallback)(async(i,a=!1)=>{if(!z()||!u)return!1;let o=a?A():O(i),s=j(e,o);if(!s)return t&&t(r(`game.room.error.invalidCode`)),!1;x(!0);try{let t=await f.createChannel(s,C,d(u)),r=t.channelKey||t.key||s;return await G(r,u,e,o,a?`room:create`:`player:join`,{player:q(u,n?.(u))}),_(o),y(r),k(),!0}catch(e){return await T(e,r(a?`game.room.error.createFailed`:`game.room.error.joinFailed`)),!1}finally{x(!1)}},[z,e,n,t,T,k,r,u]);return{channelName:v,connected:P,createRoom:(0,S.useCallback)(()=>B(``,!0),[B]),ensureReady:z,isBackendReady:w,joinRoom:(0,S.useCallback)(e=>B(e),[B]),joining:b,messages:F,roomCode:h,roomEvents:R,sendRoomEvent:(0,S.useCallback)(async(t,n={})=>{if(!z()||!u||!v||!h)return!1;let i=M({gameId:e,roomCode:h,event:t,payload:n}),a=JSON.stringify(i);try{return await I({channelName:v,content:a,optimisticId:`${u.address}-${i.eventId}`}),!0}catch(e){return await T(e,r(`game.room.error.sendEventFailed`)),!1}},[v,z,e,T,h,I,r,u]),setRoomCode:_,syncMessages:L,userIdentity:u}}async function G(e,t,n,r,i,a){let o=M({gameId:n,roomCode:r,event:i,payload:a});await f.sendChannelMessage({channelName:e,content:JSON.stringify(o),...u(t)})}function K(e){return{address:e.address,name:p(e),avatar:e.avatar||``,publicKey:``,joinedAt:Date.now()}}function q(e,t={}){let n=K(e),r={...n,...t};return Object.prototype.hasOwnProperty.call(t,`avatar`)||(r.avatar=n.avatar),r}export{_ as a,x as i,P as n,F as r,W as t};
@@ -0,0 +1 @@
1
+ import{n as e,o as t}from"./jsx-runtime-Bt-cYkS5.js";var n=t(e(),1),r=n.use,i=typeof window<`u`?n.useLayoutEffect:n.useEffect;function a(e){let t=n.useRef({value:e,prev:null}),r=t.current.value;return e!==r&&(t.current={value:e,prev:r}),t.current.prev}function o(e,t,r={},i={}){n.useEffect(()=>{if(!e.current||i.disabled||typeof IntersectionObserver!=`function`)return;let n=new IntersectionObserver(([e])=>{t(e)},r);return n.observe(e.current),()=>{n.disconnect()}},[t,r,i.disabled,e])}function s(e){let t=n.useRef(null);return n.useImperativeHandle(e,()=>t.current,[]),t}var c=n.createContext(null);function l(e){return n.useContext(c)}function u(e){let t=l();return n.useCallback(n=>t.navigate({...n,from:n.from??e?.from}),[e?.from,t])}function d(e){let t=l(),r=u(),a=n.useRef(null);return i(()=>{a.current!==e&&(r(e),a.current=e)},[t,e,r]),null}export{r as a,i as c,c as i,a as l,u as n,s as o,l as r,o as s,d as t};