most-box 0.1.6 → 0.1.7
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/README.md +18 -13
- package/out/404/index.html +2 -2
- package/out/404.html +2 -2
- package/out/__next.__PAGE__.txt +6 -6
- package/out/__next._full.txt +15 -15
- package/out/__next._head.txt +3 -3
- package/out/__next._index.txt +7 -7
- package/out/__next._tree.txt +4 -4
- package/out/_next/static/chunks/0-c8h4u1i2f78.js +1 -0
- package/out/_next/static/chunks/02j6ojja7vzp8.js +1 -0
- package/out/_next/static/chunks/06im3as4nwfil.js +1 -0
- package/out/_next/static/chunks/0sq_0pwxnhby2.js +1 -0
- package/out/_next/static/chunks/1h-f81ddyfcmx.css +1 -0
- package/out/_next/static/chunks/22h69_zwmttt4.js +1 -0
- package/out/_next/static/chunks/23zlmarf-go2x.js +1 -0
- package/out/_next/static/chunks/24k_4-y4ym0df.js +1 -0
- package/out/_next/static/chunks/{0vmjat-s4a3yj.css → 258tyt1xt34p4.css} +1 -1
- package/out/_next/static/chunks/2693fczty5yr8.js +1 -0
- package/out/_next/static/chunks/26hcvxjw9do9d.js +1 -0
- package/out/_next/static/chunks/2_i1b78h0yiu_.js +1 -0
- package/out/_next/static/chunks/3e9ia0hs-pqvs.css +1 -0
- package/out/_next/static/chunks/3ejz1mdljwwqf.css +1 -0
- package/out/_next/static/chunks/3mccxoa60ley8.js +1 -0
- package/out/_next/static/chunks/{23kls47vn_rpg.css → 418_591yp64lx.css} +1 -1
- package/out/_next/static/chunks/43l72x-2z3zxb.js +1 -0
- package/out/_not-found/__next._full.txt +12 -12
- package/out/_not-found/__next._head.txt +3 -3
- package/out/_not-found/__next._index.txt +7 -7
- package/out/_not-found/__next._not-found.__PAGE__.txt +4 -4
- package/out/_not-found/__next._not-found.txt +3 -3
- package/out/_not-found/__next._tree.txt +2 -2
- package/out/_not-found/index.html +2 -2
- package/out/_not-found/index.txt +12 -12
- package/out/admin/__next._full.txt +13 -13
- package/out/admin/__next._head.txt +3 -3
- package/out/admin/__next._index.txt +7 -7
- package/out/admin/__next._tree.txt +2 -2
- package/out/admin/__next.admin.__PAGE__.txt +4 -4
- package/out/admin/__next.admin.txt +3 -3
- package/out/admin/index.html +2 -2
- package/out/admin/index.txt +13 -13
- package/out/app/__next._full.txt +13 -13
- package/out/app/__next._head.txt +3 -3
- package/out/app/__next._index.txt +7 -7
- package/out/app/__next._tree.txt +2 -2
- package/out/app/__next.app.__PAGE__.txt +4 -4
- package/out/app/__next.app.txt +3 -3
- package/out/app/index.html +2 -2
- package/out/app/index.txt +13 -13
- package/out/chat/__next._full.txt +13 -13
- package/out/chat/__next._head.txt +3 -3
- package/out/chat/__next._index.txt +7 -7
- package/out/chat/__next._tree.txt +2 -2
- package/out/chat/__next.chat.__PAGE__.txt +4 -4
- package/out/chat/__next.chat.txt +3 -3
- package/out/chat/index.html +2 -2
- package/out/chat/index.txt +13 -13
- package/out/chat/join/__next._full.txt +13 -13
- package/out/chat/join/__next._head.txt +3 -3
- package/out/chat/join/__next._index.txt +7 -7
- package/out/chat/join/__next._tree.txt +2 -2
- package/out/chat/join/__next.chat.join.__PAGE__.txt +4 -4
- package/out/chat/join/__next.chat.join.txt +3 -3
- package/out/chat/join/__next.chat.txt +3 -3
- package/out/chat/join/index.html +2 -2
- package/out/chat/join/index.txt +13 -13
- package/out/demo/__next._full.txt +15 -15
- package/out/demo/__next._head.txt +3 -3
- package/out/demo/__next._index.txt +7 -7
- package/out/demo/__next._tree.txt +4 -4
- package/out/demo/__next.demo.__PAGE__.txt +6 -6
- package/out/demo/__next.demo.txt +3 -3
- package/out/demo/index.html +3 -3
- package/out/demo/index.txt +15 -15
- package/out/download/__next._full.txt +35 -33
- package/out/download/__next._head.txt +3 -3
- package/out/download/__next._index.txt +7 -7
- package/out/download/__next._tree.txt +3 -3
- package/out/download/__next.download.__PAGE__.txt +6 -6
- package/out/download/__next.download.txt +3 -3
- package/out/download/index.html +2 -2
- package/out/download/index.txt +35 -33
- package/out/game/__next._full.txt +11 -11
- package/out/game/__next._head.txt +3 -3
- package/out/game/__next._index.txt +7 -7
- package/out/game/__next._tree.txt +2 -2
- package/out/game/__next.game.__PAGE__.txt +2 -2
- package/out/game/__next.game.txt +3 -3
- package/out/game/gandengyan/__next._full.txt +14 -14
- package/out/game/gandengyan/__next._head.txt +3 -3
- package/out/game/gandengyan/__next._index.txt +7 -7
- package/out/game/gandengyan/__next._tree.txt +3 -3
- package/out/game/gandengyan/__next.game.gandengyan.__PAGE__.txt +5 -5
- package/out/game/gandengyan/__next.game.gandengyan.txt +3 -3
- package/out/game/gandengyan/__next.game.txt +3 -3
- package/out/game/gandengyan/index.html +2 -2
- package/out/game/gandengyan/index.txt +14 -14
- package/out/game/index.html +1 -1
- package/out/game/index.txt +11 -11
- package/out/game/zhajinhua/__next._full.txt +14 -13
- package/out/game/zhajinhua/__next._head.txt +3 -3
- package/out/game/zhajinhua/__next._index.txt +7 -7
- package/out/game/zhajinhua/__next._tree.txt +3 -2
- package/out/game/zhajinhua/__next.game.txt +3 -3
- package/out/game/zhajinhua/__next.game.zhajinhua.__PAGE__.txt +5 -4
- package/out/game/zhajinhua/__next.game.zhajinhua.txt +3 -3
- package/out/game/zhajinhua/index.html +2 -2
- package/out/game/zhajinhua/index.txt +14 -13
- package/out/index.html +2 -2
- package/out/index.txt +15 -15
- package/out/note/__next._full.txt +13 -13
- package/out/note/__next._head.txt +3 -3
- package/out/note/__next._index.txt +7 -7
- package/out/note/__next._tree.txt +2 -2
- package/out/note/__next.note.__PAGE__.txt +4 -4
- package/out/note/__next.note.txt +3 -3
- package/out/note/index.html +2 -2
- package/out/note/index.txt +13 -13
- package/out/ping/__next._full.txt +14 -14
- package/out/ping/__next._head.txt +3 -3
- package/out/ping/__next._index.txt +7 -7
- package/out/ping/__next._tree.txt +3 -3
- package/out/ping/__next.ping.__PAGE__.txt +5 -5
- package/out/ping/__next.ping.txt +3 -3
- package/out/ping/index.html +2 -2
- package/out/ping/index.txt +14 -14
- package/out/web3/__next._full.txt +13 -13
- package/out/web3/__next._head.txt +3 -3
- package/out/web3/__next._index.txt +7 -7
- package/out/web3/__next._tree.txt +2 -2
- package/out/web3/__next.web3.__PAGE__.txt +4 -4
- package/out/web3/__next.web3.txt +3 -3
- package/out/web3/ed25519/__next._full.txt +11 -11
- package/out/web3/ed25519/__next._head.txt +3 -3
- package/out/web3/ed25519/__next._index.txt +7 -7
- package/out/web3/ed25519/__next._tree.txt +2 -2
- package/out/web3/ed25519/__next.web3.ed25519.__PAGE__.txt +2 -2
- package/out/web3/ed25519/__next.web3.ed25519.txt +3 -3
- package/out/web3/ed25519/__next.web3.txt +3 -3
- package/out/web3/ed25519/index.html +1 -1
- package/out/web3/ed25519/index.txt +11 -11
- package/out/web3/index.html +2 -2
- package/out/web3/index.txt +13 -13
- package/out/web3/tools/__next._full.txt +11 -11
- package/out/web3/tools/__next._head.txt +3 -3
- package/out/web3/tools/__next._index.txt +7 -7
- package/out/web3/tools/__next._tree.txt +2 -2
- package/out/web3/tools/__next.web3.tools.__PAGE__.txt +2 -2
- package/out/web3/tools/__next.web3.tools.txt +3 -3
- package/out/web3/tools/__next.web3.txt +3 -3
- package/out/web3/tools/index.html +1 -1
- package/out/web3/tools/index.txt +11 -11
- package/package.json +1 -1
- package/server/src/core/gameRoom.js +12 -0
- package/server/src/core/zhajinhua.js +82 -14
- package/server/src/games/gandengyan.js +39 -0
- package/server/src/index.js +8 -1
- package/out/_next/static/chunks/0-ryc9icn6dql.css +0 -1
- package/out/_next/static/chunks/088-v8tzobg5g.js +0 -1
- package/out/_next/static/chunks/0g9303i8psy6z.js +0 -1
- package/out/_next/static/chunks/10p6-qnuk3p9x.js +0 -1
- package/out/_next/static/chunks/2524ggtr3e4fp.js +0 -1
- package/out/_next/static/chunks/2mcmt4yla_xle.js +0 -1
- package/out/_next/static/chunks/2v7_4ps1l4a8o.css +0 -1
- package/out/_next/static/chunks/2vk2ln79gpvm4.js +0 -1
- package/out/_next/static/chunks/37msy2-4ucgts.js +0 -1
- package/out/_next/static/chunks/384w3w4qvhw61.js +0 -1
- package/out/_next/static/chunks/3aa-weedhv4e0.js +0 -1
- package/out/_next/static/chunks/3erbaukgkw8f2.js +0 -1
- package/out/_next/static/chunks/3qj5xz_d4cbk6.js +0 -1
- /package/out/_next/static/{NPIlpdzQWkiVZpgfhlypH → eXddCOt9eyz0j78b1m4Ex}/_buildManifest.js +0 -0
- /package/out/_next/static/{NPIlpdzQWkiVZpgfhlypH → eXddCOt9eyz0j78b1m4Ex}/_clientMiddlewareManifest.js +0 -0
- /package/out/_next/static/{NPIlpdzQWkiVZpgfhlypH → eXddCOt9eyz0j78b1m4Ex}/_ssgManifest.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,33525,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"warnOnce",{enumerable:!0,get:function(){return i}});let i=e=>{}},18967,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var i={DecodeError:function(){return y},MiddlewareNotFoundError:function(){return w},MissingStaticPage:function(){return b},NormalizeError:function(){return x},PageNotFoundError:function(){return v},SP:function(){return p},ST:function(){return g},WEB_VITALS:function(){return a},execOnce:function(){return n},getDisplayName:function(){return u},getLocationOrigin:function(){return c},getURL:function(){return d},isAbsoluteUrl:function(){return s},isResSent:function(){return h},loadGetInitialProps:function(){return m},normalizeRepeatedSlashes:function(){return f},stringifyError:function(){return k}};for(var l in i)Object.defineProperty(r,l,{enumerable:!0,get:i[l]});let a=["CLS","FCP","FID","INP","LCP","TTFB"];function n(e){let t,r=!1;return(...i)=>(r||(r=!0,t=e(...i)),t)}let o=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,s=e=>o.test(e);function c(){let{protocol:e,hostname:t,port:r}=window.location;return`${e}//${t}${r?":"+r:""}`}function d(){let{href:e}=window.location,t=c();return e.substring(t.length)}function u(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function h(e){return e.finished||e.headersSent}function f(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?`?${t.slice(1).join("?")}`:"")}async function m(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await m(t.Component,t.ctx)}:{};let i=await e.getInitialProps(t);if(r&&h(r))return i;if(!i)throw Object.defineProperty(Error(`"${u(e)}.getInitialProps()" should resolve to an object. But found "${i}" instead.`),"__NEXT_ERROR_CODE",{value:"E1025",enumerable:!1,configurable:!0});return i}let p="u">typeof performance,g=p&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class y extends Error{}class x extends Error{}class v extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message=`Cannot find module for page: ${e}`}}class b extends Error{constructor(e,t){super(),this.message=`Failed to load static file for page: ${e} ${t}`}}class w extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function k(e){return JSON.stringify({message:e.message,stack:e.stack})}},98183,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var i={assign:function(){return s},searchParamsToUrlQuery:function(){return a},urlQueryToSearchParams:function(){return o}};for(var l in i)Object.defineProperty(r,l,{enumerable:!0,get:i[l]});function a(e){let t={};for(let[r,i]of e.entries()){let e=t[r];void 0===e?t[r]=i:Array.isArray(e)?e.push(i):t[r]=[e,i]}return t}function n(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function o(e){let t=new URLSearchParams;for(let[r,i]of Object.entries(e))if(Array.isArray(i))for(let e of i)t.append(r,n(e));else t.set(r,n(i));return t}function s(e,...t){for(let r of t){for(let t of r.keys())e.delete(t);for(let[t,i]of r.entries())e.append(t,i)}return e}},18566,(e,t,r)=>{t.exports=e.r(76562)},41220,e=>{"use strict";let t=(0,e.i(56420).default)("server",[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]]);e.s(["Server",0,t],41220)},96661,5014,e=>{"use strict";let t=(...e)=>e.filter((e,t,r)=>!!e&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim();e.s(["mergeClasses",0,t],96661);var r=e.i(71645),i={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let l=(0,r.createContext)({}),a=(0,r.forwardRef)(({color:e,size:a,strokeWidth:n,absoluteStrokeWidth:o,className:s="",children:c,iconNode:d,...u},h)=>{let{size:f=24,strokeWidth:m=2,absoluteStrokeWidth:p=!1,color:g="currentColor",className:y=""}=(0,r.useContext)(l)??{},x=o??p?24*Number(n??m)/Number(a??f):n??m;return(0,r.createElement)("svg",{ref:h,...i,width:a??f??i.width,height:a??f??i.height,stroke:e??g,strokeWidth:x,className:t("lucide",y,s),...!c&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(u)&&{"aria-hidden":"true"},...u},[...d.map(([e,t])=>(0,r.createElement)(e,t)),...Array.isArray(c)?c:[c]])});e.s(["default",0,a],5014)},56420,e=>{"use strict";var t=e.i(71645),r=e.i(96661);let i=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,r)=>r?r.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)};var l=e.i(5014);e.s(["default",0,(e,a)=>{let n=(0,t.forwardRef)(({className:n,...o},s)=>(0,t.createElement)(l.default,{ref:s,iconNode:a,className:(0,r.mergeClasses)(`lucide-${i(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,n),...o}));return n.displayName=i(e),n}],56420)},71192,11470,e=>{"use strict";var t=e.i(68834),r=e.i(66112);function i(e,t){let{address:i,danger:l}=(0,r.mostWallet)(e,t);return{username:e,address:i,danger:l,displayName:`${e}#${i.slice(-4).toUpperCase()}`}}function l(){if("u"<typeof localStorage)return null;try{let e=localStorage.getItem("mostbox_identity");if(!e)return null;return JSON.parse(e)}catch{return null}}function a(e){"u">typeof localStorage&&localStorage.setItem("mostbox_identity",JSON.stringify(e))}function n(){"u">typeof localStorage&&(localStorage.removeItem("mostbox_identity"),localStorage.removeItem("mostbox_guest_identity"))}function o(e){return e&&"object"==typeof e&&e.username&&e.address&&e.danger&&"匿名"!==e.username?{username:e.username,address:e.address,danger:e.danger,displayName:e.displayName?e.displayName:`${e.username}#${e.address.slice(-4).toUpperCase()}`,avatar:"string"==typeof e.avatar?e.avatar:void 0}:null}function s(){return{loginUsername:"",loginPassword:"",showPassword:!1,loginPreviewAddress:"",hasPreviewedAvatar:!1,loginLoading:!1,loginError:""}}e.s(["clearIdentity",0,n,"createLoginIdentity",0,i,"loadIdentity",0,l,"saveIdentity",0,a],11470);let c=(0,t.create)((e,t)=>({identity:null,wallet:void 0,showLoginModal:!1,loginUsername:"",loginPassword:"",showPassword:!1,loginPreviewAddress:"",hasPreviewedAvatar:!1,loginLoading:!1,loginError:"",initializeUser:()=>{let t=o(l());t||n(),e({identity:t,wallet:t||void 0})},openLoginModal:()=>{e({showLoginModal:!0,loginError:""})},closeLoginModal:()=>{e({showLoginModal:!1,...s()})},setLoginUsername:t=>{e({loginUsername:t,loginPreviewAddress:"",hasPreviewedAvatar:!1,loginError:""})},setLoginPassword:t=>{e({loginPassword:t,loginPreviewAddress:"",hasPreviewedAvatar:!1,loginError:""})},togglePassword:()=>{e(e=>({showPassword:!e.showPassword}))},previewLoginIdentity:()=>{let{loginUsername:r,loginPassword:l}=t();if(!r.trim()||!l.trim())return e({loginError:"请输入用户名和密码"}),null;let a=i(r.trim(),l);return e({loginPreviewAddress:a.address,hasPreviewedAvatar:!0,loginError:""}),a},loginUser:()=>{let{loginUsername:r,loginPassword:l,hasPreviewedAvatar:n}=t();if(!r.trim()||!l.trim())return e({loginError:"请输入用户名和密码"}),null;if(!n)return e({loginError:"请先预览并确认头像"}),null;e({loginLoading:!0,loginError:""});try{let t=i(r.trim(),l);return a(t),e({identity:t,wallet:t,showLoginModal:!1,...s()}),t}catch(t){return e({loginLoading:!1,loginError:t instanceof Error?t.message:"登录失败"}),null}},setUserIdentity:t=>{let r=o(t);r&&(a(r),e({identity:r,wallet:r}))},logoutUser:()=>{n(),e({identity:null,wallet:void 0})}}));e.s(["useUserStore",0,c],71192)},93957,e=>{"use strict";function t(e){return e.replace(/&/g,"&").replace(/'/g,"'").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function r(e){return e^=e<<13,e^=e>>17,e^=e<<5}function i(e=""){let t=function(e){let t=0;for(let i=0;i<e.length;i++)t=r(t=(t<<5)-t+e.charCodeAt(i)|0);return t}(e=e.toString().slice(0,1024))||1,l=()=>t=r(t),a=(e,t)=>Math.floor((l()- -0x80000000)/0xffffffff*(t+1-e)+e);return{seed:e,next:l,bool:(e=50)=>a(1,100)<=e,integer:(e,t)=>a(e,t),pick(e,t){var r;return 0===e.length?(l(),t):null!=(r=e[a(0,e.length-1)])?r:t},shuffle(e){let t=i(l().toString()),r=[...e];for(let e=r.length-1;e>0;e--){let i=t.integer(0,e);[r[e],r[i]]=[r[i],r[e]]}return r},string(e,t="abcdefghijklmnopqrstuvwxyz1234567890"){let r=i(l().toString()),a="";for(let i=0;i<e;i++)a+=t[r.integer(0,t.length-1)];return a}}}function l(e){let t=e.attributes.viewBox.split(" "),r=parseInt(t[0]),i=parseInt(t[1]);return{x:r,y:i,width:parseInt(t[2]),height:parseInt(t[3])}}let a={type:"object",$schema:"http://json-schema.org/draft-07/schema#",properties:{seed:{type:"string"},flip:{type:"boolean",default:!1},rotate:{type:"integer",minimum:0,maximum:360,default:0},scale:{type:"integer",minimum:0,maximum:200,default:100},radius:{type:"integer",minimum:0,maximum:50,default:0},size:{type:"integer",minimum:1},backgroundColor:{type:"array",items:{type:"string",pattern:"^(transparent|[a-fA-F0-9]{6})$"}},backgroundType:{type:"array",items:{type:"string",enum:["solid","gradientLinear"]},default:["solid"]},backgroundRotation:{type:"array",items:{type:"integer",minimum:-360,maximum:360},default:[0,360]},translateX:{type:"integer",minimum:-100,maximum:100,default:0},translateY:{type:"integer",minimum:-100,maximum:100,default:0},clip:{type:"boolean",default:!0},randomizeIds:{type:"boolean",default:!1}}};function n(e){var t;let r={},i=null!=(t=e.properties)?t:{};return Object.keys(i).forEach(e=>{let t=i[e];"object"==typeof t&&void 0!==t.default&&(Array.isArray(t.default)?r[e]=[...t.default]:"object"==typeof t.default?r[e]={...t.default}:r[e]=t.default)}),r}function o(e){return"transparent"===e?e:`#${e}`}e.s([],56357),e.i(56357),e.s(["eyes",0,{bulging:(e,t)=>'<circle cx="28" cy="24" r="18" fill="#000" fill-opacity=".2"/><circle cx="74" cy="24" r="18" fill="#000" fill-opacity=".2"/><circle cx="28" cy="24" r="15" fill="#F1EEDA"/><circle cx="74" cy="24" r="15" fill="#F1EEDA"/><rect x="26" y="15" width="10" height="10" rx="2" fill="#000" fill-opacity=".8"/><rect x="74" y="15" width="10" height="10" rx="2" fill="#000" fill-opacity=".8"/>',dizzy:(e,t)=>'<path d="m25 27.2 5.5 5.5c.5.4 1.2.4 1.6 0l1.6-1.6c.4-.5.4-1.2 0-1.6L28.2 24l5.5-5.5c.4-.5.4-1.2 0-1.6l-1.6-1.6c-.5-.4-1.2-.4-1.6 0L25 20.8l-5.5-5.5c-.5-.4-1.2-.4-1.6 0l-1.6 1.6c-.4.4-.4 1.1 0 1.6l5.5 5.5-5.5 5.5c-.4.5-.4 1.2 0 1.6l1.6 1.6c.5.4 1.2.4 1.6 0l5.5-5.5ZM79 27.2l5.5 5.5c.5.4 1.2.4 1.6 0l1.6-1.6c.4-.5.4-1.2 0-1.6L82.2 24l5.5-5.5c.4-.5.4-1.2 0-1.6l-1.6-1.6c-.5-.4-1.2-.4-1.6 0L79 20.8l-5.5-5.5c-.5-.4-1.2-.4-1.6 0l-1.6 1.6c-.4.4-.4 1.1 0 1.6l5.5 5.5-5.5 5.5c-.4.5-.4 1.2 0 1.6l1.6 1.6c.5.4 1.2.4 1.6 0l5.5-5.5Z" fill="#000" fill-opacity=".8"/>',eva:(e,t)=>'<g fill-rule="evenodd" clip-rule="evenodd"><path d="M53 0c34.75 0 49 17.47 49 31 0 13.53-19.59 17-49 17-29.05 0-51-3.47-51-17S17.11 0 53 0Z" fill="#000" fill-opacity=".8"/><path d="M28.82 34.65c-6.53-1.35-11.24-6.34-10.52-11.14.72-4.79 6.6-7.58 13.12-6.23 6.53 1.36 11.24 6.35 10.52 11.15-.72 4.8-6.6 7.59-13.12 6.23ZM75.42 34.65c-6.52 1.36-12.4-1.43-13.12-6.23-.72-4.8 4-9.8 10.52-11.15 6.52-1.35 12.4 1.44 13.12 6.24.72 4.81-4 9.8-10.52 11.15Z" fill="#25A6F5"/></g>',frame1:(e,t)=>'<rect y="4" width="104" height="42" rx="4" fill="#000" fill-opacity=".8"/><rect x="28" y="25" width="10" height="11" rx="2" fill="#8BDDFF"/><rect x="66" y="25" width="10" height="11" rx="2" fill="#8BDDFF"/><path fill-rule="evenodd" clip-rule="evenodd" d="M21 4h8L12 46H4L21 4Z" fill="#fff" fill-opacity=".4"/>',frame2:(e,t)=>'<rect x="8" y="10" width="88" height="36" rx="4" fill="#000" fill-opacity=".8"/><rect x="28" y="21" width="10" height="17" rx="2" fill="#5EF2B8"/><rect x="66" y="21" width="10" height="17" rx="2" fill="#5EF2B8"/><path fill-rule="evenodd" clip-rule="evenodd" d="M83 10h5L76 46h-5l12-36Z" fill="#fff" fill-opacity=".4"/>',glow:(e,t)=>'<g fill="#fff"><circle cx="21" cy="30" r="15" fill-opacity=".1"/><circle cx="83" cy="30" r="15" fill-opacity=".1"/><circle cx="21" cy="30" r="12" fill-opacity=".1"/><circle cx="83" cy="30" r="12" fill-opacity=".1"/><circle cx="21" cy="30" r="6" fill-opacity=".8"/><circle cx="83" cy="30" r="6" fill-opacity=".8"/><circle cx="21" cy="30" r="3" fill-opacity=".8"/><circle cx="83" cy="30" r="3" fill-opacity=".8"/></g>',happy:(e,t)=>'<path d="m18 19 12-2M20 31c0-3.31 2.9-6 7-6 3.1 0 6 2.69 6 6M86 20l-12-3M84 31c0-3.31-2.9-6-6-6-4.1 0-7 2.69-7 6" stroke="#000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>',hearts:(e,t)=>'<path d="M29.27 9.68c-2.55.13-4.96 2.24-6.25 4.15-1.48-1.76-4.1-3.6-6.65-3.47-5.48.28-8.85 3.8-8.63 8.1.3 5.72 4.88 8.89 9.7 12.24 1.71 1.15 5 4.15 5.42 4.82.42.67 2.14.6 2.58-.13a37.8 37.8 0 0 1 4.9-5.36c4.43-3.84 8.66-7.47 8.36-13.2-.23-4.3-3.95-7.44-9.43-7.15ZM87.63 10.36c-2.55-.14-5.17 1.7-6.65 3.47-1.3-1.9-3.7-4.02-6.25-4.15-5.48-.29-9.2 2.86-9.43 7.16-.3 5.72 3.93 9.35 8.36 13.19 1.6 1.32 4.55 4.64 4.9 5.36.35.7 2.06.82 2.58.13.51-.7 3.7-3.67 5.42-4.82 4.81-3.35 9.4-6.52 9.7-12.24.22-4.3-3.15-7.82-8.63-8.1Z" fill="#FF5353" fill-opacity=".8"/>',robocop:(e,t)=>'<rect x="7" y="16" width="91" height="16" rx="4" fill="#000" fill-opacity=".8"/><mask id="eyesRobocop-a" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="7" y="16" width="91" height="16"><rect x="7" y="16" width="91" height="16" rx="4" fill="#fff"/></mask><g mask="url(#eyesRobocop-a)" fill-rule="evenodd" clip-rule="evenodd" fill="#fff" fill-opacity=".8"><path d="M76 7h18L82 37H64L76 7ZM52 7h9L49 37h-9L52 7Z"/></g>',round:(e,t)=>'<g fill="#fff"><circle cx="24" cy="30" r="6"/><circle cx="80" cy="30" r="6"/></g>',roundFrame01:(e,t)=>'<rect y="12" width="104" height="32" rx="16" fill="#000" fill-opacity=".8"/><rect x="24" y="22" width="10" height="12" rx="2" fill="#F4F4F4"/><rect x="70" y="22" width="10" height="12" rx="2" fill="#F4F4F4"/>',roundFrame02:(e,t)=>'<rect y="11" width="104" height="34" rx="17" fill="#000" fill-opacity=".8"/><circle cx="29" cy="28" r="13" fill="#F1EEDA"/><circle cx="75" cy="28" r="13" fill="#F1EEDA"/><rect x="24" y="23" width="10" height="10" rx="2" fill="#000" fill-opacity=".8"/><rect x="70" y="23" width="10" height="10" rx="2" fill="#000" fill-opacity=".8"/>',sensor:(e,t)=>'<path d="M28 44a20 20 0 0 0 19.9-18h41.52a5 5 0 1 0 0-4H47.9A20 20 0 1 0 28 44Z" fill="#000" fill-opacity=".2"/><circle cx="94" cy="24" r="2" fill="#fff"/><circle cx="28" cy="24" r="16" fill="#000" fill-opacity=".6"/><circle cx="34" cy="16" r="3" fill="#fff"/>',shade01:(e,t)=>'<path d="M96 2H8c-4.5 0-8 3.5-8 8.03V28c0 4.5 3.5 8 8 8h13c8 0 11 8 18 8h27c7 0 9-8 17-8h13c4.5 0 8-3.5 8-8V10c0-4.5-3.5-8-8-8Z" fill="#000" fill-opacity=".8"/><path d="M87 14H17c-3.5 0-5 3-5 5v2c0 2 1.5 5 5 5h12c6 0 11.62 8 17 8h14c5.38 0 9-8 15-8h12c3.5 0 5-3 5-5v-2c0-2-1.5-5-5-5Z" fill="#FF3D3D"/><path d="M22.44 36.09 37.26 2h11L31.4 40.78l-.76-.58c-2.38-1.82-4.83-3.69-8.2-4.11ZM11.48 36 26.26 2h4L15.48 36h-4Z" fill="#fff" fill-opacity=".2"/>'},"mouth",0,{bite:(e,t)=>'<rect x="4" y="5" width="68" height="22" rx="5" fill="#000" fill-opacity=".2"/><rect x="8" y="9" width="60" height="14" rx="2" fill="#000" fill-opacity=".6"/><path fill-rule="evenodd" clip-rule="evenodd" d="m20 17 6-8H14l6 8ZM32 17l6-8H26l6 8ZM44 17l6-8H38l6 8ZM56 17l6-8H50l6 8Z" fill="#E1E6E8"/>',diagram:(e,t)=>'<rect x="4" y="4" width="68" height="24" rx="5" fill="#000" fill-opacity=".2"/><rect x="8" y="8" width="60" height="16" rx="2" fill="#000" fill-opacity=".8"/><path d="M9 17h11l2-4 3 7 4-8 2 9 3-11 3 10 3-3h15l3-4 2 7 3-3h4" stroke="#4EFAC9" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>',grill01:(e,t)=>'<g fill="#000" fill-opacity=".6"><rect x="12" y="12" width="4" height="8" rx="2"/><rect x="36" y="12" width="4" height="8" rx="2"/><rect x="24" y="12" width="4" height="8" rx="2"/><rect x="48" y="12" width="4" height="8" rx="2"/><rect x="60" y="12" width="4" height="8" rx="2"/></g>',grill02:(e,t)=>'<g fill="#000" fill-opacity=".6"><rect x="28" y="10" width="6" height="14" rx="2"/><rect x="14" y="10" width="6" height="14" rx="2"/><rect x="42" y="10" width="6" height="14" rx="2"/><rect x="56" y="10" width="6" height="14" rx="2"/></g>',grill03:(e,t)=>'<rect x="4" y="5" width="68" height="22" rx="5" fill="#000" fill-opacity=".2"/><rect x="8" y="9" width="60" height="14" rx="2" fill="#fff"/><path fill="#000" fill-opacity=".1" d="M18 9h4v14h-4zM42 9h4v14h-4zM30 9h4v14h-4zM54 9h4v14h-4z"/>',smile01:(e,t)=>'<path d="M27.05 8.44a2 2 0 1 1 3.9-.88C31.72 10.96 34.4 13 38 13c3.6 0 6.28-2.04 7.05-5.44a2 2 0 1 1 3.9.88C47.75 13.7 43.43 17 38 17s-9.76-3.3-10.95-8.56Z" fill="#000" fill-opacity=".6"/>',smile02:(e,t)=>'<path fill-rule="evenodd" clip-rule="evenodd" d="M18 10.22C18 21.78 24.47 28 38 28c13.52 0 20-6.34 20-17.78C58 9.5 57.17 8 55 8H21c-2.05 0-3 1.38-3 2.22Z" fill="#000" fill-opacity=".8"/><mask id="mouthSmile02-a" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="18" y="8" width="40" height="20"><path fill-rule="evenodd" clip-rule="evenodd" d="M18 10.22C18 21.78 24.47 28 38 28c13.52 0 20-6.34 20-17.78C58 9.5 57.17 8 55 8H21c-2.05 0-3 1.38-3 2.22Z" fill="#fff"/></mask><g mask="url(#mouthSmile02-a)"><rect x="30" y="2" width="16" height="14" rx="2" fill="#fff"/></g>',square01:(e,t)=>'<rect x="24" y="6" width="27" height="8" rx="4" fill="#000" fill-opacity=".8"/>',square02:(e,t)=>'<rect x="16" y="8" width="44" height="4" rx="2" fill="#000" fill-opacity=".8"/>'}],42495);var s=e.i(42495);function c({prng:e,group:t,values:r=[]}){let i=e.pick(r);return i&&s[t][i]?{name:i,value:s[t][i]}:void 0}let d={title:"Bottts",creator:"Pablo Stanley",source:"https://bottts.com/",homepage:"https://twitter.com/pablostanley",license:{name:"Free for personal and commercial use",url:"https://bottts.com/"}},u=({prng:e,options:t})=>{var r,i,l,a;let n=function({prng:e,options:t}){return{mouth:c({prng:e,group:"mouth",values:t.mouth}),eyes:c({prng:e,group:"eyes",values:t.eyes})}}({prng:e,options:t}),o=function({prng:e,options:t}){return{}}({prng:e,options:t});return{attributes:{viewBox:"0 0 120 120",fill:"none","shape-rendering":"auto"},body:`<g transform="translate(22 68)">${null!=(i=null==(r=n.mouth)?void 0:r.value(n,o))?i:""}</g><g transform="translate(8 20)">${null!=(a=null==(l=n.eyes)?void 0:l.value(n,o))?a:""}</g>`,extra:()=>({...Object.entries(n).reduce((e,[t,r])=>(e[t]=null==r?void 0:r.name,e),{}),...Object.entries(o).reduce((e,[t,r])=>(e[`${t}Color`]=r,e),{})})}};e.s(["create",0,u,"meta",0,d],98027),e.i(98027),e.s(["create",0,u,"meta",0,d,"schema",0,{$schema:"http://json-schema.org/draft-07/schema#",properties:{backgroundColor:{type:"array",items:{type:"string",pattern:"^(transparent|[a-fA-F0-9]{6})$"},default:["ffb300","1e88e5","546e7a","6d4c41","00acc1","f4511e","5e35b1","43a047","757575","3949ab","039be5","7cb342","c0ca33","fb8c00","d81b60","8e24aa","e53935","00897b","fdd835"]},eyes:{type:"array",items:{type:"string",enum:["bulging","dizzy","eva","frame1","frame2","glow","happy","hearts","robocop","round","roundFrame01","roundFrame02","sensor","shade01"]},default:["bulging","dizzy","eva","frame1","frame2","glow","happy","hearts","robocop","round","roundFrame01","roundFrame02","sensor","shade01"]},mouth:{type:"array",items:{type:"string",enum:["bite","diagram","grill01","grill02","grill03","smile01","smile02","square01","square02"]},default:["bite","diagram","grill01","grill02","grill03","smile01","smile02","square01","square02"]}}}],44297);var h=e.i(44297),h=h;e.s(["generateAvatar",0,function(e,r){return r||(e?(function(e,r={}){var s,c,d,u,h,f,m,p,g,y,x,v,b,w,k,j,E,$,N,S,C,M,P,L,A,U,F,z,O,T,D,I,R,Z;let B,_,H,X,q,W,J,K,V,G,Y,Q,ee,et,er,ei,el;f=r;let ea=i((r=JSON.parse(JSON.stringify({...n(a),...n(null!=(m=e.schema)?m:{}),...f}))).seed),en=e.create({prng:ea,options:r}),eo=ea.pick(null!=(s=r.backgroundType)?s:[],"solid"),{primary:es,secondary:ec}=(p=null!=(c=r.backgroundColor)?c:[],(B=ea.shuffle(p)).length<=1||2==p.length&&"gradientLinear"==eo?(B=p,ea.next()):B=ea.shuffle(p),0===B.length&&(B=["transparent"]),_=B[0],H=null!=(g=B[1])?g:B[0],{primary:o(_),secondary:o(H)}),ed=ea.integer((null==(d=r.backgroundRotation)?void 0:d.length)?Math.min(...r.backgroundRotation):0,(null==(u=r.backgroundRotation)?void 0:u.length)?Math.max(...r.backgroundRotation):0);r.size&&(en.attributes.width=r.size.toString(),en.attributes.height=r.size.toString()),void 0!==r.scale&&100!==r.scale&&(en.body=function(e,t){let{width:r,height:i,x:a,y:n}=l(e),o=t?(t-100)/100:0;return`<g transform="translate(${-((r/2+a)*o*1)} ${-((i/2+n)*o*1)}) scale(${t/100})">${e.body}</g>`}(en,r.scale)),r.flip&&(en.body=function(e){let{width:t,x:r}=l(e);return`<g transform="scale(-1 1) translate(${-1*t-2*r} 0)">${e.body}</g>`}(en)),r.rotate&&(en.body=function(e,t){let{width:r,height:i,x:a,y:n}=l(e);return`<g transform="rotate(${t}, ${r/2+a}, ${i/2+n})">${e.body}</g>`}(en,r.rotate)),(r.translateX||r.translateY)&&(y=r.translateX,x=r.translateY,q=((X=l(en)).width+2*X.x)*((null!=y?y:0)/100),W=(X.height+2*X.y)*((null!=x?x:0)/100),en.body=`<g transform="translate(${q} ${W})">${en.body}</g>`),"transparent"!==es&&"transparent"!==ec&&(en.body=function(e,r,i,a,n){let{width:o,height:s,x:c,y:d}=l(e),u=`<rect fill="${t(r)}" width="${o}" height="${s}" x="${c}" y="${d}" />`;switch(a){case"solid":return u+e.body;case"gradientLinear":return`<rect fill="url(#backgroundLinear)" width="${o}" height="${s}" x="${c}" y="${d}" /><defs><linearGradient id="backgroundLinear" gradientTransform="rotate(${n} 0.5 0.5)"><stop stop-color="${t(r)}"/><stop offset="1" stop-color="${t(i)}"/></linearGradient></defs>`+e.body}}(en,es,ec,eo,ed)),(r.radius||r.clip)&&(en.body=function(e,t){let{width:r,height:i,x:a,y:n}=l(e);return`<mask id="viewboxMask"><rect width="${r}" height="${i}" rx="${t?r*t/100:0}" ry="${t?i*t/100:0}" x="${a}" y="${n}" fill="#fff" /></mask><g mask="url(#viewboxMask)">${e.body}</g>`}(en,null!=(h=r.radius)?h:0)),r.randomizeIds&&(J=i(Math.random().toString()),K={},en.body=en.body.replace(/(id="|url\(#)([a-z0-9-_]+)([")])/gi,(e,t,r,i)=>(K[r]=K[r]||J.string(8),`${t}${K[r]}${i}`)));let eu=Object.keys(V={xmlns:"http://www.w3.org/2000/svg",...en.attributes}).map(e=>`${t(e)}="${t(V[e])}"`).join(" "),eh=(G=null==(v=e.meta)?void 0:v.title,Y=null==(b=e.meta)?void 0:b.creator,Q=null==(w=e.meta)?void 0:w.source,ee=null==(j=null==(k=e.meta)?void 0:k.license)?void 0:j.url,er=(null==(S=(N=e).meta)?void 0:S.title)?`„${null==(C=N.meta)?void 0:C.title}”`:"Design",ei=`„${null!=(P=null==(M=N.meta)?void 0:M.creator)?P:"Unknown"}”`,(null==(L=N.meta)?void 0:L.source)&&(er+=` (${N.meta.source})`),el="",(null==(U=null==(A=N.meta)?void 0:A.license)?void 0:U.name)!=="MIT"&&(null==(F=N.meta)?void 0:F.creator)!=="DiceBear"&&(null==(z=N.meta)?void 0:z.title)&&(el+="Remix of "),el+=`${er} by ${ei}`,(null==(T=null==(O=N.meta)?void 0:O.license)?void 0:T.name)&&(el+=`, licensed under „${null==(I=null==(D=N.meta)?void 0:D.license)?void 0:I.name}”`,(null==(Z=null==(R=N.meta)?void 0:R.license)?void 0:Z.url)&&(el+=` (${N.meta.license.url})`)),et=el,G||Y||Q||ee||et?'<metadata xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/"><rdf:RDF><rdf:Description>'+(G?`<dc:title>${t(G)}</dc:title>`:"")+(Y?`<dc:creator>${t(Y)}</dc:creator>`:"")+(Q?`<dc:source xsi:type="dcterms:URI">${t(null!=($=null==(E=e.meta)?void 0:E.source)?$:"")}</dc:source>`:"")+(ee?`<dcterms:license xsi:type="dcterms:URI">${t(ee)}</dcterms:license>`:"")+(et?`<dc:rights>${t(et)}</dc:rights>`:"")+"</rdf:Description></rdf:RDF></metadata>":""),ef=`<svg ${eu}>${eh}${en.body}</svg>`;return{toString:()=>ef,toJson:()=>{var e;return{svg:ef,extra:{primaryBackgroundColor:es,secondaryBackgroundColor:ec,backgroundType:eo,backgroundRotation:ed,...null==(e=en.extra)?void 0:e.call(en)}}},toDataUri:()=>`data:image/svg+xml;utf8,${encodeURIComponent(ef)}`}})(h,{seed:"most.box@"+e,flip:!0,backgroundType:["gradientLinear"]}).toDataUri():"/avatar.png")}],93957)},72382,e=>{"use strict";let t=(0,e.i(56420).default)("eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);e.s(["Eye",0,t],72382)},57667,80809,e=>{"use strict";var t=e.i(18050),r=e.i(71645);let i={" ":"space",ArrowLeft:"arrowleft",ArrowRight:"arrowright",ArrowUp:"arrowup",ArrowDown:"arrowdown",Escape:"escape",Esc:"escape",esc:"escape",Enter:"enter",Tab:"tab",Backspace:"backspace",Delete:"delete",Insert:"insert",Home:"home",End:"end",PageUp:"pageup",PageDown:"pagedown","+":"plus","-":"minus","*":"asterisk","/":"slash"};function l(e){let t=e.replace("Key","").toLowerCase();return i[e]||t}e.s(["ModalOverlay",0,function({children:e,onClose:i,closeOnOverlayClick:a=!1}){return!function(e,t=["INPUT","TEXTAREA","SELECT"],i=!1){let a=(0,r.useEffectEvent)(r=>{e.forEach(([e,a,n={preventDefault:!0,usePhysicalKeys:!1}])=>{var o;(o=n.usePhysicalKeys,t=>{let r,i,a,n;return function(e,t,r){let{alt:i,ctrl:a,meta:n,mod:o,shift:s,key:c}=e,{altKey:d,ctrlKey:u,metaKey:h,shiftKey:f,key:m,code:p}=t;if(i!==d)return!1;if(o){if(!u&&!h)return!1}else if(a!==u||n!==h)return!1;return s===f&&!!c&&(r?l(p)===l(c):l(m??p)===l(c))}((i={alt:(r=e.toLowerCase().split("+").map(e=>e.trim())).includes("alt"),ctrl:r.includes("ctrl"),meta:r.includes("meta"),mod:r.includes("mod"),shift:r.includes("shift")},a=["alt","ctrl","meta","shift","mod"],n=r.find(e=>!a.includes(e)),{...i,key:"[plus]"===n?"+":n}),t,o)})(r)&&function(e,t,r=!1){return!(e.target instanceof HTMLElement)||(r?!t.includes(e.target.tagName):!e.target.isContentEditable&&!t.includes(e.target.tagName))}(r,t,i)&&(n.preventDefault&&r.preventDefault(),a(r))})});(0,r.useEffect)(()=>(document.documentElement.addEventListener("keydown",a),()=>document.documentElement.removeEventListener("keydown",a)),[])}(i?[["Escape",i]]:[]),(0,r.useEffect)(()=>{let e=window.visualViewport;if(!e)return;let t=()=>{document.documentElement.style.setProperty("--modal-visual-height",`${e.height}px`),document.documentElement.style.setProperty("--modal-visual-top",`${e.offsetTop}px`)};return t(),e.addEventListener("resize",t),e.addEventListener("scroll",t),()=>{e.removeEventListener("resize",t),e.removeEventListener("scroll",t),document.documentElement.style.removeProperty("--modal-visual-height"),document.documentElement.style.removeProperty("--modal-visual-top")}},[]),(0,t.jsxs)("div",{className:"modal-overlay",onClick:e=>{a&&e.target===e.currentTarget&&i?.()},children:[(0,t.jsx)("div",{className:"modal-overlay-backdrop"}),(0,t.jsx)("div",{className:"modal-glass",children:e})]})}],57667),e.s(["Toast",0,function({message:e,type:i,onDone:l,index:a}){(0,r.useEffect)(()=>{let e=setTimeout(l,3e3);return()=>clearTimeout(e)},[]);let n=Math.min(Math.max(a,0),5);return(0,t.jsx)("div",{className:`toast ${i} toast-stack-${n}`,children:e})}],80809)},63676,e=>{"use strict";let t=(0,e.i(56420).default)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);e.s(["X",0,t],63676)},4121,88361,47910,e=>{"use strict";var t=e.i(57667);e.i(80809);var r=e.i(18050),i=e.i(63676);e.s(["ConfirmModal",0,function({title:e,message:l,confirmText:a,onConfirm:n,onClose:o,danger:s,closeOnOverlayClick:c}){return(0,r.jsx)(t.ModalOverlay,{onClose:o,closeOnOverlayClick:c,children:(0,r.jsxs)("div",{className:"confirm-modal",onClick:e=>e.stopPropagation(),children:[(0,r.jsxs)("div",{className:"modal-header",children:[(0,r.jsx)("h3",{children:e}),(0,r.jsx)("button",{onClick:o,className:"btn btn-icon",children:(0,r.jsx)(i.X,{size:18})})]}),(0,r.jsx)("p",{children:l}),(0,r.jsxs)("div",{className:"modal-actions",children:[(0,r.jsx)("button",{onClick:o,className:"btn btn-secondary",children:"取消"}),(0,r.jsx)("button",{onClick:n,className:`btn ${s?"btn-danger":"btn-primary"}`,children:a})]})]})})}],88361);var l=e.i(71645);e.s(["InputModal",0,function({title:e,placeholder:a,defaultValue:n,confirmText:o,onConfirm:s,onClose:c,isLoading:d,loadingText:u,validate:h}){let[f,m]=(0,l.useState)(n||""),p=f.trim(),g=p&&h?h(p):"",y=!!p&&!g&&!d;function x(){y&&s(p)}return(0,r.jsx)(t.ModalOverlay,{onClose:c,children:(0,r.jsxs)("div",{className:"input-modal",onClick:e=>e.stopPropagation(),children:[(0,r.jsxs)("div",{className:"modal-header",children:[(0,r.jsx)("h3",{children:e}),(0,r.jsx)("button",{onClick:c,className:"btn btn-icon",children:(0,r.jsx)(i.X,{size:18})})]}),(0,r.jsx)("input",{type:"text",value:f,onChange:e=>m(e.target.value),placeholder:a,autoFocus:!0,onKeyDown:e=>{"Enter"===e.key&&x()},className:"input input-compact","aria-invalid":!!g,"aria-describedby":g?"input-modal-error":void 0}),g&&(0,r.jsx)("p",{className:"input-modal-error",id:"input-modal-error",children:g}),(0,r.jsxs)("div",{className:"modal-actions",children:[(0,r.jsx)("button",{onClick:c,disabled:d,className:"btn btn-secondary",children:"取消"}),(0,r.jsx)("button",{onClick:x,disabled:!y,className:`btn btn-primary ${d?"btn-loading":""}`,children:d?u||"处理中...":o})]})]})})}],47910),e.s([],4121)},80860,e=>{"use strict";let t=(0,e.i(56420).default)("eye-off",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);e.s(["EyeOff",0,t],80860)},79952,e=>{"use strict";var t=e.i(18050),r=e.i(74080),i=e.i(72382),l=e.i(80860),a=e.i(63676),n=e.i(71192),o=e.i(3593);e.i(4121);var s=e.i(57667),c=e.i(93957);e.s(["default",0,function(){let e=(0,o.useAppStore)(e=>e.addToast),d=(0,n.useUserStore)(e=>e.showLoginModal),u=(0,n.useUserStore)(e=>e.closeLoginModal),h=(0,n.useUserStore)(e=>e.loginUsername),f=(0,n.useUserStore)(e=>e.loginPassword),m=(0,n.useUserStore)(e=>e.showPassword),p=(0,n.useUserStore)(e=>e.loginPreviewAddress),g=(0,n.useUserStore)(e=>e.hasPreviewedAvatar),y=(0,n.useUserStore)(e=>e.loginLoading),x=(0,n.useUserStore)(e=>e.loginError),v=(0,n.useUserStore)(e=>e.setLoginUsername),b=(0,n.useUserStore)(e=>e.setLoginPassword),w=(0,n.useUserStore)(e=>e.togglePassword),k=(0,n.useUserStore)(e=>e.previewLoginIdentity),j=(0,n.useUserStore)(e=>e.loginUser);if(!d)return null;let E=p?`${p.slice(0,6)}...${p.slice(-4)}`:"Most People",$=(0,t.jsx)(s.ModalOverlay,{onClose:u,closeOnOverlayClick:!0,children:(0,t.jsxs)("form",{className:"login-modal",onSubmit:t=>{let r;t.preventDefault(),(r=j())&&e(`已登录 ${r.username}`,"success")},children:[(0,t.jsxs)("div",{className:"login-modal-header",children:[(0,t.jsx)("h3",{children:"登录"}),(0,t.jsx)("button",{className:"login-modal-close",onClick:u,type:"button",children:(0,t.jsx)(a.X,{size:18})})]}),(0,t.jsxs)("div",{className:"login-modal-body",children:[(0,t.jsx)("img",{className:"login-avatar-preview",src:p?(0,c.generateAvatar)(p):"/avatar.png",alt:"avatar"}),(0,t.jsx)("p",{className:"login-tip",children:E}),x&&(0,t.jsx)("p",{className:"login-error",children:x}),(0,t.jsx)("input",{type:"text",className:"input input-compact",placeholder:"用户名",value:h,onChange:e=>v(e.target.value),autoFocus:!0}),(0,t.jsxs)("div",{className:"login-password-wrapper",children:[(0,t.jsx)("input",{type:m?"text":"password",className:"input input-compact",placeholder:"密码",value:f,onChange:e=>b(e.target.value)}),(0,t.jsx)("button",{className:"login-password-toggle",type:"button",onClick:w,children:m?(0,t.jsx)(l.EyeOff,{size:16}):(0,t.jsx)(i.Eye,{size:16})})]}),(0,t.jsxs)("div",{className:"login-buttons-row",children:[(0,t.jsx)("button",{className:"btn btn-secondary",onClick:k,disabled:g||y,type:"button",children:g?"检查地址":"登录"}),(0,t.jsx)("button",{className:"btn btn-primary",disabled:!g||y,type:"submit",children:y?"登录中":"确认"})]})]})]})});return(0,r.createPortal)($,document.body)}])},19767,e=>{"use strict";var t=e.i(18050),r=e.i(74080),i=e.i(63676),l=e.i(3593);e.i(4121);var a=e.i(57667),n=e.i(71645),o=e.i(41220);let s=(0,e.i(56420).default)("unplug",[["path",{d:"m19 5 3-3",key:"yk6iyv"}],["path",{d:"m2 22 3-3",key:"19mgm9"}],["path",{d:"M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z",key:"goz73y"}],["path",{d:"M7.5 13.5 10 11",key:"7xgeeb"}],["path",{d:"M10.5 16.5 13 14",key:"10btkg"}],["path",{d:"m12 6 6 6 2.3-2.3a2.4 2.4 0 0 0 0-3.4l-2.6-2.6a2.4 2.4 0 0 0-3.4 0Z",key:"1snsnr"}]]);var c=e.i(26913);function d({variant:e="page"}){let r=(0,l.useAppStore)(e=>e.checkBackend),i=(0,l.useAppStore)(e=>e.addToast),a=(0,c.getRemoteBackendUrlExport)(),[u,h]=(0,n.useState)(a),[f,m]=(0,n.useState)((0,c.getBackendInviteExport)()),[p,g]=(0,n.useState)(!1),y=a?"修改远程节点":"连接远程节点",x="输入别人部署好的 MostBox 节点地址和邀请码,无需安装客户端即可使用文件分享和聊天。",v="page"===e;async function b(){let e=u.trim().replace(/\/+$/,"");if(!function(e){try{let t=new URL(e);return"http:"===t.protocol||"https:"===t.protocol}catch{return!1}}(e))return void i("请输入有效的 http(s) 节点地址","warning");g(!0);try{let{ok:t,reason:r}=await (0,c.checkBackendConnectionTarget)({url:e,invite:f});if(!t)return void("http"===r?i("远程节点 HTTP 不可达,请检查地址","error"):"ws"===r?i("远程节点 WebSocket 不可达,请检查地址或代理配置","error"):i("远程节点连接失败,请检查地址和邀请码","error"));(0,c.configureBackend)({url:e,invite:f}),h(e),(0,c.setBackendUrl)(e),l.useAppStore.setState({hasBackend:!0}),i("远程节点已连接","success")}catch{i("远程节点连接失败","error")}finally{g(!1)}}async function w(){(0,c.clearBackendConnection)(),h(""),m(""),await r(),i("已清除远程节点,优先使用本地节点","success")}return(0,t.jsxs)("div",{className:`remote-node-connect remote-node-connect-${e}`,children:[v?(0,t.jsxs)("div",{className:"remote-node-connect-heading",children:[(0,t.jsx)(o.Server,{size:20}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h2",{children:y}),(0,t.jsx)("p",{children:x})]})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("label",{className:"drawer-label",children:[(0,t.jsx)(o.Server,{size:14,className:"icon-inline"}),y]}),(0,t.jsx)("p",{className:"drawer-hint drawer-hint-spaced",children:x})]}),(0,t.jsxs)("div",{className:"remote-node-form",children:[(0,t.jsx)("input",{className:"input input-compact",placeholder:"https://node.example.com",value:u,onChange:e=>h(e.target.value)}),(0,t.jsx)("input",{className:"input input-compact",placeholder:"邀请码",value:f,onChange:e=>m(e.target.value)}),(0,t.jsxs)("button",{className:"btn btn-primary btn-full",onClick:b,disabled:p||!u.trim(),children:[(0,t.jsx)(o.Server,{size:16}),p?"连接中...":a?"更新连接":"连接节点"]}),a&&(0,t.jsxs)("button",{className:"btn btn-secondary btn-full",onClick:w,disabled:p,children:[(0,t.jsx)(s,{size:16}),"断开连接"]})]}),a&&(0,t.jsxs)("p",{className:v?"remote-node-status":"drawer-status",children:["当前远程节点:",a]})]})}e.s(["default",0,function(){let e=(0,l.useAppStore)(e=>e.showConnectModal),n=(0,l.useAppStore)(e=>e.closeConnectModal);if(!e)return null;let o=(0,t.jsx)(a.ModalOverlay,{onClose:n,closeOnOverlayClick:!0,children:(0,t.jsxs)("div",{className:"connect-modal",children:[(0,t.jsxs)("div",{className:"connect-modal-header",children:[(0,t.jsx)("h3",{children:"连接节点"}),(0,t.jsx)("button",{className:"connect-modal-close",onClick:n,type:"button",children:(0,t.jsx)(i.X,{size:18})})]}),(0,t.jsx)("div",{className:"connect-modal-body",children:(0,t.jsx)(d,{variant:"drawer"})})]})});return(0,r.createPortal)(o,document.body)}],19767)},14232,e=>{"use strict";var t=e.i(18050),r=e.i(71645);class i extends r.default.Component{constructor(e){super(e),this.state={hasError:!1,error:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,t){console.error("[ErrorBoundary]",e,t)}handleReload=()=>{window.location.reload()};render(){return this.state.hasError?(0,t.jsxs)("div",{className:"error-boundary-page",children:[(0,t.jsx)("h1",{className:"error-boundary-title",children:"出错了"}),(0,t.jsx)("p",{className:"error-boundary-desc",children:"发生了意外错误,请尝试重新加载页面"}),(0,t.jsx)("button",{onClick:this.handleReload,className:"error-boundary-btn",children:"重新加载"})]}):this.props.children}}e.s(["ErrorBoundary",0,i])},52925,e=>{"use strict";var t=e.i(18050),r=e.i(71645),i=e.i(18566),l=e.i(3593),a=e.i(71192);e.i(4121);var n=e.i(80809),o=e.i(79952),s=e.i(19767);e.s(["default",0,function(){let e=(0,i.usePathname)(),c="/demo"===e||e.startsWith("/demo/"),d=(0,l.useAppStore)(e=>e.checkBackend),u=(0,l.useAppStore)(e=>e.initializeLocalData),h=(0,a.useUserStore)(e=>e.initializeUser),f=(0,a.useUserStore)(e=>e.identity),m=(0,l.useAppStore)(e=>e.loadUserNotes),p=(0,l.useAppStore)(e=>e.resetAppState),g=(0,l.useAppStore)(e=>e.toasts),y=(0,l.useAppStore)(e=>e.removeToast);return((0,r.useEffect)(()=>{c||(u(),h(),d())},[d,u,h,c]),(0,r.useEffect)(()=>{c||(f?m(f.address):p())},[f?.address,c,m,p]),c)?null:(0,t.jsxs)(t.Fragment,{children:[g.map((e,r)=>(0,t.jsx)(n.Toast,{message:e.message,type:e.type,onDone:()=>y(e.id),index:r},e.id)),(0,t.jsx)(o.default,{}),(0,t.jsx)(s.default,{})]})}])}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,62368,e=>{"use strict";let t=(0,e.i(56420).default)("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]);e.s(["Download",0,t],62368)},89664,e=>{"use strict";let t=(0,e.i(56420).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["Check",0,t],89664)},11241,e=>{"use strict";let t=(0,e.i(56420).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);e.s(["ArrowLeft",0,t],11241)},35965,e=>{"use strict";let t=(0,e.i(56420).default)("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);e.s(["Sun",0,t],35965)},96699,e=>{"use strict";let t=(0,e.i(56420).default)("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]);e.s(["Moon",0,t],96699)},59665,5142,e=>{"use strict";var t=e.i(18050),n=e.i(71645);let r=(0,e.i(56420).default)("menu",[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]]);function a(e=!1,t={}){let[r,s]=(0,n.useState)(e),i=(0,n.useCallback)(()=>{s(e=>e||(t.onOpen?.(),!0))},[t.onOpen]),c=(0,n.useCallback)(()=>{s(e=>e?(t.onClose?.(),!1):e)},[t.onClose]);return[r,{open:i,close:c,toggle:(0,n.useCallback)(()=>{r?c():i()},[c,i,r]),set:s}]}e.s(["useDisclosure",0,a],5142);let s=(0,n.createContext)(null);e.s(["default",0,function({sidebar:e,headerTitle:i,headerRight:c,children:u}){let[o,l]=a(!1),[d,h]=(0,n.useState)(!1),f=function(e,{getInitialValueInEffect:t}={getInitialValueInEffect:!0}){let[r,a]=(0,n.useState)(t?void 0:!!("u">typeof window&&"matchMedia"in window)&&window.matchMedia(e).matches);return(0,n.useEffect)(()=>{try{if("matchMedia"in window){let t=window.matchMedia(e);a(t.matches);let n=e=>a(e.matches);return t.addEventListener("change",n),()=>{t.removeEventListener("change",n)}}}catch(e){return}},[e]),r||!1}("(max-width: 768px)"),y=()=>{f?l.open():h(!1)};return(0,t.jsx)(s.Provider,{value:{closeSidebar:l.close,openSidebar:y,isSidebarVisible:f?o:!d},children:(0,t.jsxs)("div",{className:"app-layout",children:[(0,t.jsx)("div",{className:`sidebar-overlay ${o?"visible":""}`,onClick:()=>l.close()}),(0,t.jsx)("div",{className:`sidebar ${o?"open":""} ${d?"collapsed":""}`,children:e({closeSidebar:l.close,openSidebar:y})}),(0,t.jsxs)("div",{className:"main-content",children:[(0,t.jsxs)("header",{className:"app-header",children:[(0,t.jsxs)("div",{className:"header-left",children:[(0,t.jsx)("button",{onClick:()=>{f?l.toggle():h(!d)},className:"btn btn-icon sidebar-toggle-btn","aria-label":f?"打开菜单":d?"展开侧边栏":"收起侧边栏",children:(0,t.jsx)(r,{size:16})}),i]}),(0,t.jsx)("div",{className:"header-right",children:c})]}),u]})]})})},"useAppShell",0,function(){let e=(0,n.useContext)(s);if(!e)throw Error("useAppShell must be used within AppShell");return e}],59665)},8734,e=>{"use strict";let t=(0,e.i(56420).default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);e.s(["Copy",0,t],8734)},58925,e=>{"use strict";let t=(0,e.i(56420).default)("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"}]]);e.s(["KeyRound",0,t],58925)},82022,e=>{"use strict";let t=(0,e.i(56420).default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);e.s(["ExternalLink",0,t],82022)},70904,e=>{"use strict";let t=(0,e.i(56420).default)("wallet",[["path",{d:"M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1",key:"18etb6"}],["path",{d:"M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4",key:"xoc0q4"}]]);e.s(["Wallet",0,t],70904)},16306,23165,24851,64830,16546,e=>{"use strict";let t=(0,e.i(56420).default)("shield-alert",[["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:"M12 8v4",key:"1got3b"}],["path",{d:"M12 16h.01",key:"1drbdi"}]]);e.s(["ShieldAlert",0,t],16306);var n=e.i(18050),r=e.i(71645),a=e.i(89664),s=e.i(8734);function i({text:e,label:t,copiedLabel:c="已复制",className:u="btn btn-icon",iconSize:o=14}){let[l,d]=(0,r.useState)(!1);async function h(){try{await navigator.clipboard.writeText(e),d(!0),setTimeout(()=>d(!1),1500)}catch{}}return(0,n.jsxs)("button",{type:"button",className:u,onClick:h,title:l?c:t||"复制",children:[l?(0,n.jsx)(a.Check,{size:o}):(0,n.jsx)(s.Copy,{size:o}),t?l?c:t:null]})}e.s(["CopyButton",0,i],23165),e.s(["EmptyState",0,function({icon:e,message:t,className:r="empty-state glass"}){return(0,n.jsxs)("div",{className:r,children:[(0,n.jsx)("div",{className:"empty-state-icon",children:e}),(0,n.jsx)("p",{children:t})]})}],24851),e.s(["KeyCard",0,function({title:e,icon:t,children:r,accent:a=!1}){return(0,n.jsxs)("div",{className:`web3-key-card ${a?"accent":""}`,children:[(0,n.jsxs)("div",{className:"web3-key-card-header",children:[(0,n.jsx)("span",{className:"web3-key-card-icon",children:t}),(0,n.jsx)("span",{className:"web3-key-card-title",children:e})]}),(0,n.jsx)("div",{className:"web3-key-card-body",children:r})]})}],64830);var c=e.i(62368);e.s(["PemBlock",0,function({label:e,pem:t,filename:r}){return(0,n.jsxs)("div",{className:"web3-pem-block",children:[(0,n.jsxs)("div",{className:"web3-pem-header",children:[(0,n.jsx)("span",{className:"web3-pem-label",children:e}),(0,n.jsxs)("div",{className:"web3-pem-actions",children:[(0,n.jsx)(i,{text:t,label:"复制",className:"btn btn-sm",iconSize:14}),(0,n.jsxs)("button",{type:"button",className:"btn btn-sm btn-primary",onClick:function(){let e=new Blob([t],{type:"text/plain"}),n=URL.createObjectURL(e),a=document.createElement("a");a.href=n,a.download=r,a.click(),URL.revokeObjectURL(n)},title:"下载",children:[(0,n.jsx)(c.Download,{size:14}),"下载"]})]})]}),(0,n.jsx)("textarea",{className:"textarea mono",value:t,readOnly:!0,rows:6})]})}],16546)},22315,(e,t,n)=>{e.e,t.exports=function(){"use strict";var e="millisecond",t="second",n="minute",r="hour",a="week",s="month",i="quarter",c="year",u="date",o="Invalid Date",l=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,d=/\[([^\]]+)]|YYYY|YY|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,h=function(e,t,n){var r=String(e);return!r||r.length>=t?e:""+Array(t+1-r.length).join(n)+e},f="en",y={};y[f]={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"}};var m="$isDayjsObject",p=function(e){return e instanceof k||!(!e||!e[m])},v=function e(t,n,r){var a;if(!t)return f;if("string"==typeof t){var s=t.toLowerCase();y[s]&&(a=s),n&&(y[s]=n,a=s);var i=t.split("-");if(!a&&i.length>1)return e(i[0])}else{var c=t.name;y[c]=t,a=c}return!r&&a&&(f=a),a||!r&&f},$=function(e,t){if(p(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new k(n)},b={s:h,z:function(e){var t=-e.utcOffset(),n=Math.abs(t);return(t<=0?"+":"-")+h(Math.floor(n/60),2,"0")+":"+h(n%60,2,"0")},m:function e(t,n){if(t.date()<n.date())return-e(n,t);var r=12*(n.year()-t.year())+(n.month()-t.month()),a=t.clone().add(r,s),i=n-a<0,c=t.clone().add(r+(i?-1:1),s);return+(-(r+(n-a)/(i?a-c:c-a))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(o){return({M:s,y:c,w:a,d:"day",D:u,h:r,m:n,s:t,ms:e,Q:i})[o]||String(o||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}};b.l=v,b.i=p,b.w=function(e,t){return $(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var k=function(){function h(e){this.$L=v(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[m]=!0}var f=h.prototype;return f.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(b.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var r=t.match(l);if(r){var a=r[2]-1||0,s=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],a,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],a,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(t)}(e),this.init()},f.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},f.$utils=function(){return b},f.isValid=function(){return this.$d.toString()!==o},f.isSame=function(e,t){var n=$(e);return this.startOf(t)<=n&&n<=this.endOf(t)},f.isAfter=function(e,t){return $(e)<this.startOf(t)},f.isBefore=function(e,t){return this.endOf(t)<$(e)},f.$g=function(e,t,n){return b.u(e)?this[t]:this.set(n,e)},f.unix=function(){return Math.floor(this.valueOf()/1e3)},f.valueOf=function(){return this.$d.getTime()},f.startOf=function(e,i){var o=this,l=!!b.u(i)||i,d=b.p(e),h=function(e,t){var n=b.w(o.$u?Date.UTC(o.$y,t,e):new Date(o.$y,t,e),o);return l?n:n.endOf("day")},f=function(e,t){return b.w(o.toDate()[e].apply(o.toDate("s"),(l?[0,0,0,0]:[23,59,59,999]).slice(t)),o)},y=this.$W,m=this.$M,p=this.$D,v="set"+(this.$u?"UTC":"");switch(d){case c:return l?h(1,0):h(31,11);case s:return l?h(1,m):h(0,m+1);case a:var $=this.$locale().weekStart||0,k=(y<$?y+7:y)-$;return h(l?p-k:p+(6-k),m);case"day":case u:return f(v+"Hours",0);case r:return f(v+"Minutes",1);case n:return f(v+"Seconds",2);case t:return f(v+"Milliseconds",3);default:return this.clone()}},f.endOf=function(e){return this.startOf(e,!1)},f.$set=function(a,i){var o,l=b.p(a),d="set"+(this.$u?"UTC":""),h=((o={}).day=d+"Date",o[u]=d+"Date",o[s]=d+"Month",o[c]=d+"FullYear",o[r]=d+"Hours",o[n]=d+"Minutes",o[t]=d+"Seconds",o[e]=d+"Milliseconds",o)[l],f="day"===l?this.$D+(i-this.$W):i;if(l===s||l===c){var y=this.clone().set(u,1);y.$d[h](f),y.init(),this.$d=y.set(u,Math.min(this.$D,y.daysInMonth())).$d}else h&&this.$d[h](f);return this.init(),this},f.set=function(e,t){return this.clone().$set(e,t)},f.get=function(e){return this[b.p(e)]()},f.add=function(e,i){var u,o=this;e=Number(e);var l=b.p(i),d=function(t){var n=$(o);return b.w(n.date(n.date()+Math.round(t*e)),o)};if(l===s)return this.set(s,this.$M+e);if(l===c)return this.set(c,this.$y+e);if("day"===l)return d(1);if(l===a)return d(7);var h=((u={})[n]=6e4,u[r]=36e5,u[t]=1e3,u)[l]||1,f=this.$d.getTime()+e*h;return b.w(f,this)},f.subtract=function(e,t){return this.add(-1*e,t)},f.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return n.invalidDate||o;var r=e||"YYYY-MM-DDTHH:mm:ssZ",a=b.z(this),s=this.$H,i=this.$m,c=this.$M,u=n.weekdays,l=n.months,h=n.meridiem,f=function(e,n,a,s){return e&&(e[n]||e(t,r))||a[n].slice(0,s)},y=function(e){return b.s(s%12||12,e,"0")},m=h||function(e,t,n){var r=e<12?"AM":"PM";return n?r.toLowerCase():r};return r.replace(d,function(e,r){return r||function(e){switch(e){case"YY":return String(t.$y).slice(-2);case"YYYY":return b.s(t.$y,4,"0");case"M":return c+1;case"MM":return b.s(c+1,2,"0");case"MMM":return f(n.monthsShort,c,l,3);case"MMMM":return f(l,c);case"D":return t.$D;case"DD":return b.s(t.$D,2,"0");case"d":return String(t.$W);case"dd":return f(n.weekdaysMin,t.$W,u,2);case"ddd":return f(n.weekdaysShort,t.$W,u,3);case"dddd":return u[t.$W];case"H":return String(s);case"HH":return b.s(s,2,"0");case"h":return y(1);case"hh":return y(2);case"a":return m(s,i,!0);case"A":return m(s,i,!1);case"m":return String(i);case"mm":return b.s(i,2,"0");case"s":return String(t.$s);case"ss":return b.s(t.$s,2,"0");case"SSS":return b.s(t.$ms,3,"0");case"Z":return a}return null}(e)||a.replace(":","")})},f.utcOffset=function(){return-(15*Math.round(this.$d.getTimezoneOffset()/15))},f.diff=function(e,u,o){var l,d=this,h=b.p(u),f=$(e),y=(f.utcOffset()-this.utcOffset())*6e4,m=this-f,p=function(){return b.m(d,f)};switch(h){case c:l=p()/12;break;case s:l=p();break;case i:l=p()/3;break;case a:l=(m-y)/6048e5;break;case"day":l=(m-y)/864e5;break;case r:l=m/36e5;break;case n:l=m/6e4;break;case t:l=m/1e3;break;default:l=m}return o?l:b.a(l)},f.daysInMonth=function(){return this.endOf(s).$D},f.$locale=function(){return y[this.$L]},f.locale=function(e,t){if(!e)return this.$L;var n=this.clone(),r=v(e,t,!0);return r&&(n.$L=r),n},f.clone=function(){return b.w(this.$d,this)},f.toDate=function(){return new Date(this.valueOf())},f.toJSON=function(){return this.isValid()?this.toISOString():null},f.toISOString=function(){return this.$d.toISOString()},f.toString=function(){return this.$d.toUTCString()},h}(),w=k.prototype;return $.prototype=w,[["$ms",e],["$s",t],["$m",n],["$H",r],["$W","day"],["$M",s],["$y",c],["$D",u]].forEach(function(e){w[e[1]]=function(t){return this.$g(t,e[0],e[1])}}),$.extend=function(e,t){return e.$i||(e(t,k,$),e.$i=!0),$},$.locale=v,$.isDayjs=p,$.unix=function(e){return $(1e3*e)},$.en=y[f],$.Ls=y,$.p={},$}()},16327,e=>{"use strict";let t=(0,e.i(56420).default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);e.s(["ChevronDown",0,t],16327)},6537,77816,e=>{"use strict";let t=(0,e.i(56420).default)("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"}]]);e.s(["Lock",0,t],6537);var n=e.i(22315);function r(e){let t;if(!e)return"";let r=(0,n.default)(Number(e)),a=r.hour();return t=a>=0&&a<3?"凌晨":a>=3&&a<6?"拂晓":a>=6&&a<9?"早晨":a>=9&&a<12?"上午":a>=12&&a<15?"下午":a>=15&&a<18?"傍晚":a>=18&&a<21?"晚上":"深夜",r.format(`YYYY年M月D日 ${t}h:m`)}e.s(["formatDate",0,r,"formatTime",0,r],77816)}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,95057,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a={formatUrl:function(){return i},formatWithValidation:function(){return u},urlObjectKeys:function(){return o}};for(var r in a)Object.defineProperty(n,r,{enumerable:!0,get:a[r]});let s=e.r(90809)._(e.r(98183)),l=/https?|ftp|gopher|file/;function i(e){let{auth:t,hostname:n}=e,a=e.protocol||"",r=e.pathname||"",i=e.hash||"",o=e.query||"",u=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?u=t+e.host:n&&(u=t+(~n.indexOf(":")?`[${n}]`:n),e.port&&(u+=":"+e.port)),o&&"object"==typeof o&&(o=String(s.urlQueryToSearchParams(o)));let d=e.search||o&&`?${o}`||"";return a&&!a.endsWith(":")&&(a+=":"),e.slashes||(!a||l.test(a))&&!1!==u?(u="//"+(u||""),r&&"/"!==r[0]&&(r="/"+r)):u||(u=""),i&&"#"!==i[0]&&(i="#"+i),d&&"?"!==d[0]&&(d="?"+d),r=r.replace(/[?#]/g,encodeURIComponent),d=d.replace("#","%23"),`${a}${u}${r}${d}${i}`}let o=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function u(e){return i(e)}},18581,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"useMergedRef",{enumerable:!0,get:function(){return r}});let a=e.r(71645);function r(e,t){let n=(0,a.useRef)(null),r=(0,a.useRef)(null);return(0,a.useCallback)(a=>{if(null===a){let e=n.current;e&&(n.current=null,e());let t=r.current;t&&(r.current=null,t())}else e&&(n.current=s(e,a)),t&&(r.current=s(t,a))},[e,t])}function s(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let n=e(t);return"function"==typeof n?n:()=>e(null)}}("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},73668,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"isLocalURL",{enumerable:!0,get:function(){return s}});let a=e.r(18967),r=e.r(52817);function s(e){if(!(0,a.isAbsoluteUrl)(e))return!0;try{let t=(0,a.getLocationOrigin)(),n=new URL(e,t);return n.origin===t&&(0,r.hasBasePath)(n.pathname)}catch(e){return!1}}},84508,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"errorOnce",{enumerable:!0,get:function(){return a}});let a=e=>{}},22016,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a={default:function(){return b},useLinkStatus:function(){return v}};for(var r in a)Object.defineProperty(n,r,{enumerable:!0,get:a[r]});let s=e.r(90809),l=e.r(18050),i=s._(e.r(71645)),o=e.r(95057),u=e.r(8372),d=e.r(18581),c=e.r(18967),p=e.r(5550);e.r(33525);let f=e.r(88540),h=e.r(91949),m=e.r(73668),g=e.r(9396);function b(t){var n,a;let r,s,b,[v,S]=(0,i.useOptimistic)(h.IDLE_LINK_STATUS),_=(0,i.useRef)(null),{href:j,as:x,children:C,prefetch:k=null,passHref:w,replace:N,shallow:R,scroll:A,onClick:M,onMouseEnter:$,onTouchStart:O,legacyBehavior:G=!1,onNavigate:P,transitionTypes:E,ref:I,unstable_dynamicOnHover:H,...B}=t;r=C,G&&("string"==typeof r||"number"==typeof r)&&(r=(0,l.jsx)("a",{children:r}));let L=i.default.useContext(u.AppRouterContext),U=!1!==k,T=!1!==k?null===(a=k)||"auto"===a?g.FetchStrategy.PPR:g.FetchStrategy.Full:g.FetchStrategy.PPR,W="string"==typeof(n=x||j)?n:(0,o.formatUrl)(n);if(G){if(r?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});s=i.default.Children.only(r)}let z=G?s&&"object"==typeof s&&s.ref:I,J=i.default.useCallback(e=>(null!==L&&(_.current=(0,h.mountLinkInstance)(e,W,L,T,U,S)),()=>{_.current&&((0,h.unmountLinkForCurrentNavigation)(_.current),_.current=null),(0,h.unmountPrefetchableInstance)(e)}),[U,W,L,T,S]),D={ref:(0,d.useMergedRef)(J,z),onClick(t){G||"function"!=typeof M||M(t),G&&s.props&&"function"==typeof s.props.onClick&&s.props.onClick(t),!L||t.defaultPrevented||function(t,n,a,r,s,l,o){if("u">typeof window){let u,{nodeName:d}=t.currentTarget;if("A"===d.toUpperCase()&&((u=t.currentTarget.getAttribute("target"))&&"_self"!==u||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,m.isLocalURL)(n)){r&&(t.preventDefault(),location.replace(n));return}if(t.preventDefault(),l){let e=!1;if(l({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:c}=e.r(99781);i.default.startTransition(()=>{c(n,r?"replace":"push",!1===s?f.ScrollBehavior.NoScroll:f.ScrollBehavior.Default,a.current,o)})}}(t,W,_,N,A,P,E)},onMouseEnter(e){G||"function"!=typeof $||$(e),G&&s.props&&"function"==typeof s.props.onMouseEnter&&s.props.onMouseEnter(e),L&&U&&(0,h.onNavigationIntent)(e.currentTarget,!0===H)},onTouchStart:function(e){G||"function"!=typeof O||O(e),G&&s.props&&"function"==typeof s.props.onTouchStart&&s.props.onTouchStart(e),L&&U&&(0,h.onNavigationIntent)(e.currentTarget,!0===H)}};return(0,c.isAbsoluteUrl)(W)?D.href=W:G&&!w&&("a"!==s.type||"href"in s.props)||(D.href=(0,p.addBasePath)(W)),b=G?i.default.cloneElement(s,D):(0,l.jsx)("a",{...B,...D,children:r}),(0,l.jsx)(y.Provider,{value:v,children:b})}e.r(84508);let y=(0,i.createContext)(h.IDLE_LINK_STATUS),v=()=>(0,i.useContext)(y);("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},8734,e=>{"use strict";let t=(0,e.i(56420).default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);e.s(["Copy",0,t],8734)},30274,e=>{"use strict";let t=(0,e.i(56420).default)("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"}]]);e.s(["Send",0,t],30274)},11241,e=>{"use strict";let t=(0,e.i(56420).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);e.s(["ArrowLeft",0,t],11241)},96699,e=>{"use strict";let t=(0,e.i(56420).default)("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]);e.s(["Moon",0,t],96699)},35965,e=>{"use strict";let t=(0,e.i(56420).default)("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);e.s(["Sun",0,t],35965)},59665,5142,e=>{"use strict";var t=e.i(18050),n=e.i(71645);let a=(0,e.i(56420).default)("menu",[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]]);function r(e=!1,t={}){let[a,s]=(0,n.useState)(e),l=(0,n.useCallback)(()=>{s(e=>e||(t.onOpen?.(),!0))},[t.onOpen]),i=(0,n.useCallback)(()=>{s(e=>e?(t.onClose?.(),!1):e)},[t.onClose]);return[a,{open:l,close:i,toggle:(0,n.useCallback)(()=>{a?i():l()},[i,l,a]),set:s}]}e.s(["useDisclosure",0,r],5142);let s=(0,n.createContext)(null);e.s(["default",0,function({sidebar:e,headerTitle:l,headerRight:i,children:o}){let[u,d]=r(!1),[c,p]=(0,n.useState)(!1),f=function(e,{getInitialValueInEffect:t}={getInitialValueInEffect:!0}){let[a,r]=(0,n.useState)(t?void 0:!!("u">typeof window&&"matchMedia"in window)&&window.matchMedia(e).matches);return(0,n.useEffect)(()=>{try{if("matchMedia"in window){let t=window.matchMedia(e);r(t.matches);let n=e=>r(e.matches);return t.addEventListener("change",n),()=>{t.removeEventListener("change",n)}}}catch(e){return}},[e]),a||!1}("(max-width: 768px)"),h=()=>{f?d.open():p(!1)};return(0,t.jsx)(s.Provider,{value:{closeSidebar:d.close,openSidebar:h,isSidebarVisible:f?u:!c},children:(0,t.jsxs)("div",{className:"app-layout",children:[(0,t.jsx)("div",{className:`sidebar-overlay ${u?"visible":""}`,onClick:()=>d.close()}),(0,t.jsx)("div",{className:`sidebar ${u?"open":""} ${c?"collapsed":""}`,children:e({closeSidebar:d.close,openSidebar:h})}),(0,t.jsxs)("div",{className:"main-content",children:[(0,t.jsxs)("header",{className:"app-header",children:[(0,t.jsxs)("div",{className:"header-left",children:[(0,t.jsx)("button",{onClick:()=>{f?d.toggle():p(!c)},className:"btn btn-icon sidebar-toggle-btn","aria-label":f?"打开菜单":c?"展开侧边栏":"收起侧边栏",children:(0,t.jsx)(a,{size:16})}),l]}),(0,t.jsx)("div",{className:"header-right",children:i})]}),o]})]})})},"useAppShell",0,function(){let e=(0,n.useContext)(s);if(!e)throw Error("useAppShell must be used within AppShell");return e}],59665)},27648,e=>{"use strict";var t=e.i(18050),n=e.i(93957),a=e.i(71192);e.s(["default",0,function({className:e=""}){let r=(0,a.useUserStore)(e=>e.identity),s=(0,a.useUserStore)(e=>e.openLoginModal),l=(0,a.useUserStore)(e=>e.logoutUser);return(0,t.jsxs)("div",{className:`chat-sidebar-footer sidebar-account ${e}`,children:[(0,t.jsxs)("div",{className:"user-info",children:[(0,t.jsx)("img",{className:"user-avatar-img",src:(0,n.generateAvatar)(r?.address,r?.avatar),alt:"avatar"}),(0,t.jsx)("span",{className:"user-name",title:r?.address,children:r?.displayName||"未登录"})]}),r?(0,t.jsx)("button",{className:"btn btn-ghost logout-btn",onClick:l,children:"退出"}):(0,t.jsx)("button",{className:"btn btn-primary login-btn",onClick:s,children:"登录"})]})}])},87884,e=>{"use strict";var t=e.i(26913);e.s(["channelApi",0,{getChannels(e={}){let n=new URLSearchParams;e.type&&n.set("type",e.type),e.excludeType&&n.set("excludeType",e.excludeType);let a=n.toString();return t.api.get(a?`/api/channels?${a}`:"/api/channels").json()},createChannel:(e,n="personal",a={})=>t.api.post("/api/channels",{json:{name:e,type:n,...a}}).json(),leaveChannel:e=>t.api.delete(`/api/channels/${encodeURIComponent(e)}`).json(),getChannelMessages:(e,n=100,a=0)=>t.api.get(`/api/channels/${encodeURIComponent(e)}/messages?limit=${n}&offset=${a}`).json(),sendChannelMessage:({channelName:e,content:n,author:a,authorName:r,avatar:s,attachment:l})=>t.api.post(`/api/channels/${encodeURIComponent(e)}/messages`,{json:l?{content:n,author:a,authorName:r,avatar:s,attachment:l}:{content:n,author:a,authorName:r,avatar:s}}).json(),getChannelMembers:e=>t.api.get(`/api/channels/${encodeURIComponent(e)}/members`).json(),getChannelPeers:e=>t.api.get(`/api/channels/${encodeURIComponent(e)}/peers`).json(),setChannelRemark:(e,n)=>t.api.put(`/api/channels/${encodeURIComponent(e)}/remark`,{json:{remark:n}}).json(),getFileDownloadUrl:e=>(0,t.getApiUrl)(`/api/files/${e}/download`)}])},23952,e=>{"use strict";var t=e.i(71645),n=e.i(87884),a=e.i(26913);function r(e){return String(e.id||`${e.author||""}-${e.timestamp||""}-${e.content||""}`)}e.s(["useChannelMessages",0,function({isReady:e,enabled:s=!0,channelName:l="",peerId:i="",waitForPeerId:o=!1,limit:u=100,reconnectBaseDelay:d=2500,acceptMessage:c,getMessageKey:p=r,onSyncError:f,onSocketEvent:h}){let[m,g]=(0,t.useState)([]),[b,y]=(0,t.useState)(!1),v=(0,t.useRef)(null),S=(0,t.useRef)(l),_=(0,t.useRef)(null),j=(0,t.useRef)(0),x=(0,t.useRef)(c),C=(0,t.useRef)(p),k=(0,t.useRef)(h),w=(0,t.useRef)(f),N=(0,t.useRef)(i);(0,t.useEffect)(()=>{x.current=c},[c]),(0,t.useEffect)(()=>{C.current=p},[p]),(0,t.useEffect)(()=>{k.current=h},[h]),(0,t.useEffect)(()=>{w.current=f},[f]);let R=(0,t.useCallback)(e=>{let t=x.current;return t?e.filter(t):e},[]),A=(0,t.useCallback)((e,t,n=!0)=>{let a=[...e];for(let e of R(t)){let t=C.current(e);if(n){let n=a.findIndex(t=>t.pending&&t.author?.toLowerCase()===e.author?.toLowerCase()&&t.content===e.content);if(-1!==n){a[n]={...e,id:e.id||t};continue}}a.some(e=>C.current(e)===t)||a.push({...e,id:e.id||t})}return a},[R]),M=(0,t.useCallback)((e,t)=>{v.current?.readyState===WebSocket.OPEN&&v.current.send(JSON.stringify({event:e,data:t}))},[]),$=(0,t.useCallback)(e=>{e&&M("channel:subscribe",{channel:e})},[M]),O=(0,t.useCallback)(e=>{e&&M("channel:unsubscribe",{channel:e})},[M]),G=(0,t.useCallback)(async(t=S.current,a={})=>{if(!t||!e)return[];try{let e=R(await n.channelApi.getChannelMessages(t,u));return g(t=>a.replace?e:A(t,e,!1)),e}catch(e){return a.replace&&g([]),await w.current?.(e),[]}},[R,e,u,A]);(0,t.useEffect)(()=>{N.current=i,i&&(M("register",{peerId:i}),o&&S.current&&($(S.current),G(S.current,{replace:!0})))},[i,$,G,o,M]);let P=(0,t.useCallback)(()=>{g([])},[]),E=(0,t.useCallback)(async({channelName:e=S.current,content:t,author:a,authorName:r,avatar:s,attachment:l,optimisticId:i})=>{let o=t.trim();if(!e||!o)return null;let u={id:i||`${a}-${Date.now()}-${Math.random().toString(36).slice(2)}`,author:a,authorName:r,content:o,timestamp:Date.now(),pending:!0,attachment:l};g(e=>[...e,u]);try{let t=await n.channelApi.sendChannelMessage({channelName:e,content:o,author:a,authorName:r,avatar:s,attachment:l});return g(e=>e.map(e=>e.id===u.id?{...t.message,id:t.message.id||C.current(t.message)}:e)),t.message}catch(e){throw g(e=>e.filter(e=>e.id!==u.id)),e}},[]);return(0,t.useEffect)(()=>{let t=S.current;if(S.current=l,t&&t!==l&&O(t),l&&e&&s)return G(l,{replace:!0}),(!o||N.current)&&$(l),()=>O(l)},[l,s,e,$,G,O,o]),(0,t.useEffect)(()=>{if(!e||!s)return void y(!1);let t=!1;async function n(){let e=new WebSocket(await (0,a.getAuthenticatedWebSocketUrl)("/ws"));t?e.close():(e.onopen=()=>{y(!0),j.current=0,N.current&&e.send(JSON.stringify({event:"register",data:{peerId:N.current}})),S.current&&(!o||N.current)&&($(S.current),G(S.current,{replace:!0}))},e.onmessage=e=>{try{let t=JSON.parse(e.data);k.current?.(t.event,t.data),"channel:message"===t.event&&t.data?.channel===S.current&&t.data?.message&&g(e=>A(e,[t.data.message]))}catch{}},e.onclose=()=>{if(y(!1),t)return;let e=j.current;if(e>=20)return;let a=Math.min(d*Math.pow(2,e),3e4);j.current=e+1,_.current=setTimeout(n,a)},e.onerror=()=>e.close(),v.current=e)}return j.current=0,n(),()=>{t=!0,_.current&&clearTimeout(_.current),v.current?.close(),v.current=null}},[s,e,A,d,$,G,o]),{clearMessages:P,connected:b,messages:m,sendMessage:E,setMessages:g,syncMessages:G}}])},21357,e=>{"use strict";let t=(0,e.i(56420).default)("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"}]]);e.s(["Play",0,t],21357)},53881,53751,99591,34471,e=>{"use strict";var t=e.i(18050),n=e.i(22016),a=e.i(11241),r=e.i(56420);let s=(0,r.default)("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"}]]);e.s(["Spade",0,s],53751);let l=(0,r.default)("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"}]]);var i=e.i(27648);let o=[{id:"gandengyan",label:"干瞪眼",href:"/game/gandengyan/",icon:(0,t.jsx)(l,{size:16})},{id:"zhajinhua",label:"炸金花",href:"/game/zhajinhua/",icon:(0,t.jsx)(s,{size:16})}];e.s(["default",0,function({activeGame:e,closeSidebar:r}){return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(n.default,{href:"/",className:"sidebar-header sidebar-header-link",children:[(0,t.jsx)(a.ArrowLeft,{size:18}),(0,t.jsx)("h1",{children:"MOST PEOPLE"})]}),(0,t.jsx)("nav",{className:"sidebar-nav",children:o.map(a=>(0,t.jsxs)(n.default,{href:a.href,className:`sidebar-nav-btn ${e===a.id?"active":""}`,onClick:r,children:[a.icon,(0,t.jsx)("span",{children:a.label})]},a.id))}),(0,t.jsx)(i.default,{})]})}],53881);var u=e.i(71645);let d="game",c="mostbox.game.event",p=["gandengyan","zhajinhua"],f="ABCDEFGHJKLMNPQRSTUVWXYZ23456789";function h(e){let t=String(e||"").trim().toLowerCase();return p.includes(t)?t:""}function m(e){return String(e||"").trim().toUpperCase().replace(/[^A-Z0-9]/g,"").slice(0,8)}function g(e){return/^[A-Z0-9]{4,8}$/.test(String(e||""))}function b(){let e="";for(let t=0;t<6;t++)e+=f[function(e){if(globalThis.crypto?.getRandomValues){let t=new Uint32Array(1);return globalThis.crypto.getRandomValues(t),t[0]%e}return Math.floor(Math.random()*e)}(f.length)];return e}function y(e,t){let n=h(e),a=m(t);return n&&g(a)?`game-${n}-${a.toLowerCase()}`:""}function v({gameId:e,roomCode:t,event:n,payload:a}){var r;let s=h(e);return{kind:c,version:1,gameId:s,roomCode:m(t),event:String(n||""),eventId:(r=s||"game",`${r}_${Date.now()}_${function(){let e=new Uint8Array(4);if(globalThis.crypto?.getRandomValues)globalThis.crypto.getRandomValues(e);else for(let t=0;t<e.length;t++)e[t]=Math.floor(256*Math.random());return[...e].map(e=>e.toString(16).padStart(2,"0")).join("")}()}`),payload:a||{}}}function S(e,t={}){try{let n=JSON.parse(String(e||""));if(!n||n.kind!==c||1!==n.version||"string"!=typeof n.event||"string"!=typeof n.eventId)return null;let a=h(n.gameId),r=m(n.roomCode);if(!a||!g(r)||t.gameId&&a!==h(t.gameId)||t.roomCode&&r!==m(t.roomCode))return null;return{...n,gameId:a,roomCode:r,payload:n.payload&&"object"==typeof n.payload?n.payload:{}}}catch{return null}}function _(e,t){var n;if(!e||"object"!=typeof e)return null;let a=j(e.address||t);if(!a||j(t)!==a)return null;let r=String(e.name||"").trim().slice(0,50)||((n=a)?`${n.slice(0,6)}...${n.slice(-4)}`:"");return{address:a,name:r,publicKey:String(e.publicKey||"").trim(),joinedAt:Number(e.joinedAt||Date.now())}}function j(e){let t=String(e||"").trim();return/^0x[a-fA-F0-9]{40}$/.test(t)?t.toLowerCase():""}function x(e,t,n){let a=t.get(n.address);a?Object.assign(a,n):(e.push(n),t.set(n.address,n))}function C(e){return[...e].sort((e,t)=>Number(e.timestamp||0)-Number(t.timestamp||0))}e.s(["GAME_CHANNEL_TYPE",0,d,"createGameEvent",0,v,"createGameRoomCode",0,b,"deriveGameRoomLobby",0,function(e=[],t={}){let n=[],a=new Map,r="";for(let s of C(e)){let e=S(s.content,t);if(e){if("room:create"===e.event){let t=_(e.payload?.player,s.author);if(!t)continue;r||(r=t.address),x(n,a,t);continue}if("player:join"===e.event){let t=_(e.payload?.player,s.author);t&&x(n,a,t)}}}return{gameId:h(t.gameId),roomCode:m(t.roomCode),hostAddress:r,players:n}},"gameRoomCodeToChannelName",0,y,"getLatestGameState",0,function(e=[],t={}){let n=null;for(let a of C(e)){let e=S(a.content,t);if(!e||"room:state"!==e.event)continue;let r=Number(e.payload?.seq||0);(!n||r>=Number(n.payload?.seq||0))&&(n=e)}return n},"normalizeGameRoomCode",0,m,"parseGameEvent",0,S],99591);var k=e.i(87884),w=e.i(23952),N=e.i(26913),R=e.i(3593),A=e.i(71192);async function M(e,t,n,a,r,s){let l=v({gameId:n,roomCode:a,event:r,payload:s});await k.channelApi.sendChannelMessage({channelName:e,content:JSON.stringify(l),author:t.address,authorName:$(t)})}function $(e){return e.displayName||e.username}e.s(["useGameRoom",0,function({gameId:e,onError:t,getPlayerPayload:n}){let a=(0,R.useAppStore)(e=>e.hasBackend),r=(0,R.useAppStore)(e=>e.checkBackend),s=(0,R.useAppStore)(e=>e.openConnectModal),l=(0,A.useUserStore)(e=>e.identity),i=(0,A.useUserStore)(e=>e.openLoginModal),[o,c]=(0,u.useState)(""),[p,f]=(0,u.useState)(""),[h,g]=(0,u.useState)(!1),_=!0===a,j=(0,u.useCallback)(async(e,n)=>{let a=await (0,N.getApiErrorMessage)(e,n);t&&t(a)},[t]),x=(0,u.useCallback)(t=>!!S(t.content,{gameId:e,roomCode:o}),[e,o]),C=(0,u.useCallback)(t=>{let n=S(t.content,{gameId:e,roomCode:o});return n?`${t.author}-${n.eventId}`:`${t.author}-${t.timestamp}-${t.content}`},[e,o]),{clearMessages:O,connected:G,messages:P,sendMessage:E,syncMessages:I}=(0,w.useChannelMessages)({isReady:_,enabled:!!l,channelName:p,limit:500,acceptMessage:x,getMessageKey:C,onSyncError:e=>j(e,"无法读取房间记录")}),H=(0,u.useMemo)(()=>P.map(t=>({message:t,event:S(t.content,{gameId:e,roomCode:o})})).filter(e=>e.event),[e,P,o]),B=(0,u.useCallback)(()=>l?!!_||(s(),!1):(i(),!1),[_,s,i,l]);(0,u.useEffect)(()=>{null===a&&r()},[r,a]);let L=(0,u.useCallback)(async(a,r=!1)=>{if(!B()||!l)return!1;let s=r?b():m(a),i=y(e,s);if(!i)return t&&t("请输入 4-8 位房间码"),!1;g(!0);try{var o;return await k.channelApi.createChannel(i,d),await M(i,l,e,s,r?"room:create":"player:join",{player:n?n(l):{address:(o=l).address,name:$(o),publicKey:"",joinedAt:Date.now()}}),c(s),f(i),O(),!0}catch(e){return await j(e,r?"创建房间失败":"进入房间失败"),!1}finally{g(!1)}},[B,e,n,t,j,O,l]),U=(0,u.useCallback)(()=>L("",!0),[L]),T=(0,u.useCallback)(e=>L(e),[L]),W=(0,u.useCallback)(async(t,n={})=>{if(!B()||!l||!p||!o)return!1;let a=v({gameId:e,roomCode:o,event:t,payload:n}),r=JSON.stringify(a);try{return await E({channelName:p,content:r,author:l.address,authorName:$(l),optimisticId:`${l.address}-${a.eventId}`}),!0}catch(e){return await j(e,"发送房间事件失败"),!1}},[p,B,e,j,o,E,l]);return{channelName:p,connected:G,createRoom:U,ensureReady:B,isBackendReady:_,joinRoom:T,joining:h,messages:P,roomCode:o,roomEvents:H,sendRoomEvent:W,setRoomCode:c,syncMessages:I,userIdentity:l}}],34471)},45309,e=>{e.v({accountLine:"page-module__bH9uOG__accountLine",actions:"page-module__bH9uOG__actions",active:"page-module__bH9uOG__active",avatar:"page-module__bH9uOG__avatar",badges:"page-module__bH9uOG__badges",black:"page-module__bH9uOG__black",card:"page-module__bH9uOG__card",cardButton:"page-module__bH9uOG__cardButton",cardMark:"page-module__bH9uOG__cardMark",centerTable:"page-module__bH9uOG__centerTable",dangerBadge:"page-module__bH9uOG__dangerBadge",deckBox:"page-module__bH9uOG__deckBox",entry:"page-module__bH9uOG__entry",entryBrand:"page-module__bH9uOG__entryBrand",entryPanel:"page-module__bH9uOG__entryPanel",gameGrid:"page-module__bH9uOG__gameGrid",hand:"page-module__bH9uOG__hand",handPanel:"page-module__bH9uOG__handPanel",headerActions:"page-module__bH9uOG__headerActions",joinForm:"page-module__bH9uOG__joinForm",logPanel:"page-module__bH9uOG__logPanel",notice:"page-module__bH9uOG__notice",page:"page-module__bH9uOG__page",panel:"page-module__bH9uOG__panel",picked:"page-module__bH9uOG__picked",playedBox:"page-module__bH9uOG__playedBox",playedCards:"page-module__bH9uOG__playedCards",player:"page-module__bH9uOG__player",preview:"page-module__bH9uOG__preview",red:"page-module__bH9uOG__red",resultDetail:"page-module__bH9uOG__resultDetail",roomBar:"page-module__bH9uOG__roomBar",scoreMeta:"page-module__bH9uOG__scoreMeta",scoreRow:"page-module__bH9uOG__scoreRow",seats:"page-module__bH9uOG__seats",sidePanel:"page-module__bH9uOG__sidePanel",small:"page-module__bH9uOG__small",status:"page-module__bH9uOG__status",tablePanel:"page-module__bH9uOG__tablePanel",valid:"page-module__bH9uOG__valid",winner:"page-module__bH9uOG__winner"})},31678,e=>{"use strict";var t=e.i(18050),n=e.i(71645),a=e.i(8734),r=e.i(96699),s=e.i(21357);let l=(0,e.i(56420).default)("rotate-ccw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]);var i=e.i(30274),o=e.i(35965),u=e.i(59665),d=e.i(53881),c=e.i(34471),p=e.i(3593),f=e.i(71192);let h=["S","H","C","D"],m=["3","4","5","6","7","8","9","10","J","Q","K","A","2"],g=m.filter(e=>"2"!==e),b=new Map(m.map((e,t)=>[e,t+3]));function y(e){return e?{id:e.id,ownerAddress:e.ownerAddress,status:e.status,seq:Number(e.seq||1),deck:Array.isArray(e.deck)?e.deck.map(I):[],deckCount:e.deck?.length||Number(e.deckCount||0),discard:Array.isArray(e.discard)?e.discard.map(I):[],discardCount:e.discard?.length||Number(e.discardCount||0),currentSeat:Number(e.currentSeat||0),lastWinnerSeat:null===e.lastWinnerSeat||void 0===e.lastWinnerSeat?null:Number(e.lastWinnerSeat),previousWinnerSeat:null===e.previousWinnerSeat||void 0===e.previousWinnerSeat?null:Number(e.previousWinnerSeat),baseScore:Number(e.baseScore||1),bombCount:Number(e.bombCount||0),diceRolls:Array.isArray(e.diceRolls)?e.diceRolls:[],roundResult:e.roundResult||null,table:e.table?{...e.table,cards:e.table.cards.map(I)}:null,passSeats:Array.isArray(e.passSeats)?e.passSeats:[],winnerSeat:null===e.winnerSeat||void 0===e.winnerSeat?null:Number(e.winnerSeat),log:Array.isArray(e.log)?e.log.slice(0,18):[],players:R(e).map(e=>({address:e.address,name:e.name,seat:e.seat,handCount:e.hand?.length??e.handCount??0,score:Number(e.score??1e3),playedCards:Number(e.playedCards||0),hand:Array.isArray(e.hand)?e.hand.map(I):[]}))}:null}function v(e){return e&&"object"==typeof e?{id:String(e.id||"").toUpperCase(),ownerAddress:T(e.ownerAddress),status:"playing"===e.status||"finished"===e.status?e.status:"lobby",seq:Number(e.seq||1),players:Array.isArray(e.players)?e.players.map(x).filter(Boolean):[],deck:Array.isArray(e.deck)?e.deck.map(E).filter(Boolean):[],discard:Array.isArray(e.discard)?e.discard.map(C).filter(Boolean):[],table:e.table&&"object"==typeof e.table?{...e.table,cards:Array.isArray(e.table.cards)?e.table.cards.map(C).filter(Boolean):[]}:null,currentSeat:Number(e.currentSeat||0),lastWinnerSeat:null===e.lastWinnerSeat||void 0===e.lastWinnerSeat?null:Number(e.lastWinnerSeat),previousWinnerSeat:null===e.previousWinnerSeat||void 0===e.previousWinnerSeat?null:Number(e.previousWinnerSeat),passSeats:Array.isArray(e.passSeats)?e.passSeats.map(Number):[],baseScore:Number(e.baseScore||1),bombCount:Number(e.bombCount||0),diceRolls:Array.isArray(e.diceRolls)?e.diceRolls:[],roundResult:e.roundResult||null,log:Array.isArray(e.log)?e.log.map(String):[],winnerSeat:null===e.winnerSeat||void 0===e.winnerSeat?null:Number(e.winnerSeat)}:null}function S(e){if(!e?.length)return null;let t=(e=[...e].sort($)).filter(G).length,n=e.filter(e=>!G(e));if(0===n.length)return null;let a=function(e,t,n){if(e.length<3||!M(t,n))return null;let a=function(e){return O(e[0])}(t);return _("bomb",a,e.length,Array(e.length).fill(a),0===n)}(e,n,t);if(a)return a;if(1===e.length&&0===t)return _("single",O(e[0]),1,[O(e[0])]);if(2===e.length&&M(n,t)){let e=O(n[0]);return _("pair",e,2,[e,e])}return function(e){if(e.length<3)return null;let t=e.filter(G).length,n=e.filter(e=>!G(e));for(let a=0;a<=g.length-e.length;a+=1){let r=g.slice(a,a+e.length).map(e=>b.get(e)),s=[...r],l=0;for(let e of n){let t=s.indexOf(O(e));-1!==t&&(s.splice(t,1),l+=1)}if(l+t===e.length&&s.length===t)return _("straight",r.at(-1),e.length,r)}return null}(e)||function(e){if(e.length<4||e.length%2!=0)return null;let t=e.length/2,n=e.filter(G).length,a=e.filter(e=>!G(e));for(let r=0;r<=g.length-t;r+=1){let s=g.slice(r,r+t).map(e=>b.get(e)),l=s.flatMap(e=>[e,e]),i=0;for(let e of a){let t=l.indexOf(O(e));-1!==t&&(l.splice(t,1),i+=1)}if(i+n===e.length&&l.length===n){let t=s.flatMap(e=>[e,e]);return _("pairStraight",s.at(-1),e.length,t)}}return null}(e)}function _(e,t,n,a,r=!0){var s;let l;return{type:e,value:t,length:n,resolvedValues:a,pure:r,label:(s={type:e,value:t,length:n,resolvedValues:a,pure:r},l=s.resolvedValues?.length?`(${s.resolvedValues.map(L).join(" ")})`:"",`${({single:"单张",pair:"对子",straight:"顺子",pairStraight:"连对",bomb:s.pure?"纯炸弹":"带王炸弹"})[s.type]}${l}`)}}function j(e){let t=new Set;return e.map(e=>({address:T(e.address),name:W(e.name),publicKey:String(e.publicKey||"")})).filter(e=>!(!e.address||t.has(e.address))&&(t.add(e.address),!0))}function x(e){let t=T(e.address);return t?{address:t,name:W(e.name),seat:Number(e.seat||0),hand:Array.isArray(e.hand)?e.hand.map(C).filter(Boolean):[],handCount:Number(e.handCount||0),score:Number(e.score??1e3),playedCards:Number(e.playedCards||0)}:null}function C(e){if(!e||"object"!=typeof e)return null;let t=String(e.rank||""),n=String(e.suit||"");return(b.has(t)||"SJ"===t||"BJ"===t)&&(h.includes(n)||"Joker"===n)?{id:String(e.id||`${n}-${t}`),suit:n,rank:t,label:e.label||H({suit:n,rank:t}),color:e.color||B({suit:n,rank:t})}:null}function k(e,t){return e.deck.splice(0,t)}function w(e){return e.players.find(t=>t.seat===e.currentSeat)}function N(e){return R(e).filter(e=>e.hand.length>0)}function R(e){return[...e?.players||[]].sort((e,t)=>e.seat-t.seat)}function A(e){let t=N(e).map(e=>e.seat),n=t.indexOf(e.currentSeat);e.currentSeat=t[(n+1)%t.length]}function M(e,t=0){if(0===e.length)return!1;let n=e[0].rank;return e.every(e=>e.rank===n)&&e.length+t>=2}function $(e,t){return O(e)-O(t)||P(e.suit)-P(t.suit)}function O(e){return b.get(e.rank)||99}function G(e){return"SJ"===e.rank||"BJ"===e.rank}function P(e){return({D:0,C:1,H:2,S:3,Joker:4})[e]||0}function E(e){if("string"==typeof e){let[t,n]=e.split("-");return C({id:e,suit:t,rank:n})}return C(e)}function I(e){return{id:e.id,suit:e.suit,rank:e.rank,label:H(e),color:B(e)}}function H(e){return"SJ"===e.rank?"小王":"BJ"===e.rank?"大王":`${({S:"♠",H:"♥",C:"♣",D:"♦"})[e.suit]||""}${e.rank}`}function B(e){return"H"===e.suit||"D"===e.suit||"BJ"===e.rank?"red":"black"}function L(e){return m.find(t=>b.get(t)===e)||String(e)}function U(e){let t=m.findIndex(t=>b.get(t)===e);return -1===t||t>=m.length-1?null:b.get(m[t+1])}function T(e){let t=String(e||"").trim();return/^0x[a-fA-F0-9]{40}$/.test(t)?t.toLowerCase():""}function W(e){return String(e||"玩家").trim().slice(0,16)||"玩家"}var z=e.i(99591),J=e.i(45309);let D="gandengyan";function q(...e){return e.filter(Boolean).join(" ")}function K(e,t){return String(e||"").toLowerCase()===String(t||"").toLowerCase()}function F(e){if(!("speechSynthesis"in window)||!e)return;window.speechSynthesis.cancel();let t=new SpeechSynthesisUtterance(e);t.lang="zh-CN",t.rate=1.1,window.speechSynthesis.speak(t)}function V(e){return"J"===e?"勾":"Q"===e?"圈":"A"===e?"坚":"10"===e?"十":e}function Q({player:e,active:n,winner:a,relation:r=""}){return e?(0,t.jsxs)("div",{className:q(J.default.player,n&&J.default.active,a&&J.default.winner),children:[(0,t.jsx)("div",{className:J.default.avatar,children:e.name.slice(0,1)}),(0,t.jsxs)("div",{children:[(0,t.jsx)("strong",{children:e.name}),(0,t.jsxs)("span",{children:[r,r?" · ":"",e.handCount," 张"]})]})]}):null}function X({card:e,small:n=!1}){return(0,t.jsxs)("div",{className:q(J.default.card,J.default[e.color],n&&J.default.small),children:[(0,t.jsx)("span",{children:e.label}),(0,t.jsx)("i",{children:"Joker"===e.suit?"*":e.label.slice(0,1)})]})}e.s(["default",0,function(){let e=(0,p.useAppStore)(e=>e.isDarkMode),g=(0,p.useAppStore)(e=>e.setIsDarkMode),_=(0,p.useAppStore)(e=>e.addToast),x=(0,f.useUserStore)(e=>e.initializeUser),[C,M]=(0,n.useState)(""),[O,G]=(0,n.useState)([]),[P,E]=(0,n.useState)(!1),B=(0,n.useRef)(""),L=(0,n.useRef)(!1),Z=(0,c.useGameRoom)({gameId:D,onError:e=>_(e,"error")});(0,n.useEffect)(()=>{x()},[x]),(0,n.useEffect)(()=>{let e=new URLSearchParams(window.location.search).get("room")?.toUpperCase();e&&(M(e),B.current=e)},[]),(0,n.useEffect)(()=>{let e=B.current;!e||L.current||Z.isBackendReady&&Z.userIdentity&&(L.current=!0,B.current="",Z.joinRoom(e).then(e=>{e&&_("已进入房间","success")}))},[Z.isBackendReady,Z.userIdentity,Z.joinRoom,_]),(0,n.useEffect)(()=>{if(!Z.roomCode)return;let e=`/game/gandengyan?room=${Z.roomCode}`;`${window.location.pathname}${window.location.search}`!==e&&window.history.replaceState(null,"",e)},[Z.roomCode]);let Y=(0,n.useMemo)(()=>(0,z.deriveGameRoomLobby)(Z.messages,Z.roomCode?{gameId:D,roomCode:Z.roomCode}:{gameId:D}),[Z.messages,Z.roomCode]),ee=(0,n.useMemo)(()=>(0,z.getLatestGameState)(Z.messages,{gameId:D,roomCode:Z.roomCode}),[Z.messages,Z.roomCode]),et=ee?.payload?.state,en=et?.players.find(e=>K(e.address,Z.userIdentity?.address)),ea=K(et?.ownerAddress||Y.hostAddress,Z.userIdentity?.address),er=et?.status==="playing"&&et.currentSeat===en?.seat,es=(0,n.useMemo)(()=>O.map(e=>en?.hand.find(t=>t.id===e)).filter(Boolean),[O,en]),el=(0,n.useMemo)(()=>S(es),[es]),ei=Z.roomCode&&1?`${window.location.origin}/game/gandengyan?room=${Z.roomCode}`:"",eo=!!(et&&"playing"===et.status&&et.deckCount<3),eu=(0,n.useRef)(-1),ed=(0,n.useRef)(""),ec=(0,n.useRef)(!1);async function ep(){await Z.createRoom()&&_("房间已创建","success")}async function ef(e){e.preventDefault(),await Z.joinRoom(C)&&_("已进入房间","success")}async function eh(){ei&&(await navigator.clipboard.writeText(ei),E(!0),setTimeout(()=>E(!1),1400))}async function em(e){await Z.sendRoomEvent("room:state",{state:e,seq:e.seq})}async function eg(){if(et&&ea)try{await em(function(e,t=Math.random){let n=v(e);if(!n||n.players.length<2)throw Error("至少需要 2 名玩家");for(let e of(n.deck=function(e,t){let n=[...e];for(let e=n.length-1;e>0;e-=1){let a=Math.floor(t()*(e+1));[n[e],n[a]]=[n[a],n[e]]}return n}(function(){let e=[];for(let t of h)for(let n of m)e.push({id:`${t}-${n}`,suit:t,rank:n});return e.push({id:"SJ",suit:"Joker",rank:"SJ"}),e.push({id:"BJ",suit:"Joker",rank:"BJ"}),e.map(I)}(),t),n.discard=[],n.table=null,n.passSeats=[],n.winnerSeat=null,n.roundResult=null,n.baseScore=1,n.bombCount=0,n.status="playing",R(n)))e.hand=k(n,5),e.handCount=e.hand.length,e.playedCards=0,e.hand.sort($);let a=function(e,t){if(null!==e.previousWinnerSeat)return e.diceRolls=[],R(e).find(t=>t.seat===e.previousWinnerSeat)||R(e)[0];let n=R(e),a=[];for(;n.length>1;){let r=Math.max(...(a=n.map(e=>{var n;return{seat:e.seat,name:e.name,value:(n=t,Math.floor(6*n())+1)}})).map(e=>e.value)),s=a.filter(e=>e.value===r);if(1===s.length)return e.diceRolls=a,n.find(e=>e.seat===s[0].seat);n=n.filter(e=>s.some(t=>t.seat===e.seat))}return e.diceRolls=a,n[0]}(n,t);return n.currentSeat=a.seat,n.lastWinnerSeat=null,n.log=[`新一局开始,${a.name} 先出牌`],n.diceRolls.length>0&&n.log.unshift(`骰子结果:${n.diceRolls.map(e=>`${e.name} ${e.value}`).join(",")}`),n.seq+=1,y(n)}(et))}catch(e){_(e instanceof Error?e.message:"开局失败","error")}}async function eb(){await eg()}async function ey(){if(!et||!Z.userIdentity)return;let e=function(e,t,n){var a,r;let s=v(e),l=w(s),i=T(t);if(!l||l.address!==i)return{ok:!1,error:"还没轮到你",state:y(s)};let o=n.map(e=>l.hand.find(t=>t.id===e));if(0===o.length||o.some(e=>!e))return{ok:!1,error:"手牌不存在",state:y(s)};let u=S(o);return u?(a=u,r=s.table?.combo,a&&(!r||"bomb"===a.type&&"bomb"!==r.type||a.type===r.type&&("bomb"===a.type?a.length!==r.length?a.length>r.length:a.value!==r.value?a.value>r.value:a.pure&&!r.pure:a.length===r.length&&("single"===a.type||"pair"===a.type?a.value===U(r.value)||a.value===b.get("2")&&r.value!==b.get("2"):a.value===U(r.value)))))?(o.sort($),l.hand=l.hand.filter(e=>!n.includes(e.id)),l.handCount=l.hand.length,l.playedCards+=o.length,s.discard.push(...o),s.table={seat:l.seat,playerName:l.name,cards:o,combo:u},s.passSeats=[],s.lastWinnerSeat=l.seat,"bomb"===u.type&&(s.bombCount+=1,s.baseScore*=2),s.log.unshift(`${l.name} 出 ${u.label} ${o.map(H).join(" ")}${"bomb"===u.type?`,底分 ${s.baseScore}`:""}`),0===l.hand.length?function(e,t){e.status="finished",e.winnerSeat=t.seat,e.previousWinnerSeat=t.seat;let n=[],a=0;for(let r of R(e)){if(r.seat===t.seat)continue;let s=0===r.playedCards,l=s?20:r.hand.length*e.baseScore*.5;r.score-=l,a+=l,n.push({seat:r.seat,name:r.name,loss:l,sealed:s,cardsLeft:r.hand.length})}t.score+=a,e.roundResult={winnerSeat:t.seat,winnerName:t.name,winnerGain:a,baseScore:e.baseScore,bombCount:e.bombCount,losers:n},e.log.unshift(`${t.name} 获胜,赢 ${a} 分`)}(s,l):A(s),s.seq+=1,{ok:!0,state:y(s)}):{ok:!1,error:"出的牌压不过上一手",state:y(s)}:{ok:!1,error:"这个牌型不合法",state:y(s)}}(et,Z.userIdentity.address,O);e.ok?await em(e.state):_(e.error||"出牌失败","error")}async function ev(){var e;let t,n,a;if(!et||!Z.userIdentity)return;let r=(e=Z.userIdentity.address,n=w(t=v(et)),a=T(e),n&&n.address===a?t.table?(t.passSeats.includes(n.seat)||t.passSeats.push(n.seat),t.log.unshift(`${n.name} 不要`),N(t).map(e=>e.seat).filter(e=>e!==t.lastWinnerSeat).every(e=>t.passSeats.includes(e))?(function(e){for(let t of N(e)){if(0===e.deck.length)break;t.hand.push(...k(e,1)),t.handCount=t.hand.length,t.hand.sort($)}}(t),t.currentSeat=t.lastWinnerSeat,t.table=null,t.passSeats=[],t.log.unshift("本轮结束,所有玩家各补 1 张,重新领出")):A(t),t.seq+=1,{ok:!0,state:y(t)}):{ok:!1,error:"领出时不能不要",state:y(t)}:{ok:!1,error:"还没轮到你",state:y(t)});r.ok?await em(r.state):_(r.error||"操作失败","error")}return(0,n.useEffect)(()=>{G([])},[et?.seq]),(0,n.useEffect)(()=>{if(!et)return;let e=et.seq;if(eu.current<0){eu.current=e;return}if(e===eu.current)return;if(eu.current=e,"finished"!==et.status&&(ec.current=!1),"finished"===et.status&&null!==et.winnerSeat){ec.current||(ec.current=!0,F("游戏结束"));return}let t=et.log[0]||"";if(t&&t!==ed.current){ed.current=t;let e=function(e){if(!e)return"";if(/不要/.test(e)||/本轮结束/.test(e))return"不要";if(/新一局开始/.test(e))return"新一局开始";if(/获胜/.test(e))return"游戏结束";let t=e.match(/出\s+(\S+?)(?:(([^)]+)))?\s+(?:[♠♥♣♦]|小王|大王)/);if(!t)return"";let n=t[1],a=t[2];if(!a)return n;let r=a.split(/\s+/).map(V);if("对子"===n)return`对${r[0]}`;if("单张"===n)return r[0];if(/炸弹/.test(n))return`${r[0]}炸`;if("顺子"===n)return r.join(" ");if("连对"===n){let e=[];for(let t=0;t<r.length;t+=2)e.push(r[t]);return e.map(e=>e+e).join("")}return n}(t);e&&F(e)}},[et?.seq]),(0,n.useEffect)(()=>{if(!ea||!Z.roomCode||!Z.userIdentity||ee||0===Y.players.length)return;let e=function({roomCode:e,ownerAddress:t,ownerName:n,players:a=[],random:r=Math.random}){let s=j(a);return s.some(e=>e.address===T(t))||s.unshift({address:T(t),name:W(n)}),y({id:String(e||"").toUpperCase(),ownerAddress:T(t),status:"lobby",seq:1,players:s.slice(0,6).map((e,t)=>({address:e.address,name:W(e.name),seat:t,hand:[],handCount:0,score:1e3,playedCards:0})),deck:[],discard:[],table:null,currentSeat:0,lastWinnerSeat:null,previousWinnerSeat:null,passSeats:[],baseScore:1,bombCount:0,diceRolls:[],roundResult:null,log:["房间已创建"],winnerSeat:null,random:r})}({roomCode:Z.roomCode,ownerAddress:Z.userIdentity.address,ownerName:Z.userIdentity.displayName||Z.userIdentity.username,players:Y.players});Z.sendRoomEvent("room:state",{state:e,seq:e.seq})},[Z,ea,ee,Y.players]),(0,n.useEffect)(()=>{if(!et||!ea||"lobby"!==et.status)return;let e=function(e,t=[]){let n=v(e);if(!n||"lobby"!==n.status)return n;let a=new Map(n.players.map(e=>[e.address,e.score]));return n.players=j(t).slice(0,6).map((e,t)=>({address:e.address,name:W(e.name),seat:t,hand:[],handCount:0,score:a.get(e.address)??1e3,playedCards:0})),n.seq+=1,y(n)}(et,Y.players);e&&e.players.length!==et.players.length&&Z.sendRoomEvent("room:state",{state:e,seq:e.seq})},[Z,ea,Y.players,et]),(0,t.jsx)(u.default,{sidebar:({closeSidebar:e})=>(0,t.jsx)(d.default,{activeGame:"gandengyan",closeSidebar:e}),headerTitle:(0,t.jsx)("h2",{className:"header-title",children:"游戏 · 干瞪眼"}),headerRight:(0,t.jsxs)("div",{className:J.default.headerActions,children:[et&&(0,t.jsxs)("button",{className:"btn btn-sm",onClick:eh,children:[(0,t.jsx)(a.Copy,{size:14}),P?"已复制":"分享房间"]}),(0,t.jsx)("button",{className:"btn btn-icon",onClick:()=>g(!e),title:"切换主题",children:e?(0,t.jsx)(o.Sun,{size:16}):(0,t.jsx)(r.Moon,{size:16})})]}),children:(0,t.jsx)("main",{className:J.default.page,children:et?(0,t.jsxs)("section",{className:J.default.gameGrid,children:[(0,t.jsxs)("div",{className:J.default.tablePanel,children:[(0,t.jsxs)("div",{className:J.default.roomBar,children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("strong",{children:["房间 ",et.id]}),(0,t.jsx)("span",{children:"lobby"===et.status?"等待开局":"finished"===et.status?"本局结束":"进行中"})]}),(0,t.jsxs)("div",{className:J.default.badges,children:[eo&&(0,t.jsx)("span",{className:J.default.dangerBadge,children:"牌堆不足 3 张"}),(0,t.jsx)("span",{children:Z.connected?"在线":"离线"})]})]}),(0,t.jsx)("div",{className:J.default.seats,children:et.players.map(e=>(0,t.jsx)(Q,{player:e,active:et.currentSeat===e.seat,winner:et.winnerSeat===e.seat,relation:function(e,t,n){if(!e)return`座位 ${t.seat+1}`;let a=(t.seat-e.seat+n)%n;return 0===a?"我":2===n?"对手位":3===n?1===a?"下家/对手位":"上家/对手位":4===n?1===a?"下家/对手位":2===a?"对家/队友位":"上家/对手位":a%2==0?`座位 ${t.seat+1}/队友位`:`座位 ${t.seat+1}/对手位`}(en,e,et.players.length)},e.seat))}),(0,t.jsxs)("div",{className:J.default.centerTable,children:[(0,t.jsxs)("div",{className:J.default.deckBox,children:[(0,t.jsx)("span",{children:"牌堆"}),(0,t.jsx)("strong",{children:et.deckCount})]}),(0,t.jsx)("div",{className:J.default.playedBox,children:et.table?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("strong",{children:[et.table.playerName," 出 ",et.table.combo?.label||"牌"]}),(0,t.jsx)("div",{className:J.default.playedCards,children:et.table.cards.map(e=>(0,t.jsx)(X,{card:e,small:!0},e.id))})]}):(0,t.jsx)("span",{children:"等待领出"})}),(0,t.jsxs)("div",{className:J.default.deckBox,children:[(0,t.jsx)("span",{children:"底分"}),(0,t.jsx)("strong",{children:et.baseScore})]})]}),(0,t.jsx)("div",{className:J.default.notice,children:"finished"===et.status?et.roundResult?(0,t.jsxs)("div",{className:J.default.resultDetail,children:[(0,t.jsxs)("p",{children:[(0,t.jsx)("strong",{children:et.roundResult.winnerName})," 获胜,赢"," ",et.roundResult.winnerGain," 分",et.roundResult.bombCount>0&&`(${et.roundResult.bombCount} 个炸弹)`]}),et.roundResult.losers.map(e=>(0,t.jsxs)("p",{children:[e.name,e.sealed?"(封牌)扣 20 分":`剩 ${e.cardsLeft} 张,扣 ${e.loss} 分`]},e.seat))]}):`${et.players.find(e=>e.seat===et.winnerSeat)?.name} 获胜`:er?"轮到你出牌":`等待 ${et.players.find(e=>e.seat===et.currentSeat)?.name||"玩家"}`})]}),(0,t.jsxs)("aside",{className:J.default.sidePanel,children:[(0,t.jsxs)("section",{className:J.default.panel,children:[(0,t.jsx)("h3",{children:"牌局"}),ea&&"lobby"===et.status&&(0,t.jsxs)("button",{className:"btn btn-primary",disabled:et.players.length<2,onClick:eg,children:[(0,t.jsx)(s.Play,{size:16}),"开始游戏"]}),ea&&"finished"===et.status&&(0,t.jsxs)("button",{className:"btn btn-primary",onClick:eb,children:[(0,t.jsx)(l,{size:16}),"再来一局"]}),!ea&&(0,t.jsx)("p",{className:J.default.status,children:"等待房主操作。"})]}),(0,t.jsxs)("section",{className:J.default.panel,children:[(0,t.jsx)("h3",{children:"分数"}),(0,t.jsxs)("div",{className:J.default.scoreMeta,children:[(0,t.jsxs)("span",{children:["炸弹 ",et.bombCount," 次"]}),(0,t.jsxs)("span",{children:["弃牌 ",et.discardCount," 张"]})]}),et.players.map(e=>(0,t.jsxs)("div",{className:J.default.scoreRow,children:[(0,t.jsx)("span",{children:e.name}),(0,t.jsx)("strong",{children:e.score})]},e.seat))]}),(0,t.jsxs)("section",{className:q(J.default.panel,J.default.logPanel),children:[(0,t.jsx)("h3",{children:"牌局记录"}),et.log.map((e,n)=>(0,t.jsx)("p",{children:e},`${e}-${n}`))]})]}),(0,t.jsxs)("div",{className:J.default.handPanel,children:[(0,t.jsx)(Q,{player:en,active:er,winner:et.winnerSeat===en?.seat}),(0,t.jsx)("div",{className:J.default.hand,children:en?.hand.map(e=>(0,t.jsx)("button",{className:q(J.default.cardButton,O.includes(e.id)&&J.default.picked),onClick:()=>{var t;return t=e.id,void G(e=>e.includes(t)?e.filter(e=>e!==t):[...e,t])},children:(0,t.jsx)(X,{card:e})},e.id))}),(0,t.jsxs)("div",{className:J.default.actions,children:[(0,t.jsxs)("div",{className:q(J.default.preview,el&&J.default.valid),children:[(0,t.jsx)("strong",{children:el?el.label:O.length?"牌型不合法":"先选牌"}),(0,t.jsx)("span",{children:es.map(e=>e.label).join(" ")||"按选择顺序解释大小王"})]}),(0,t.jsxs)("button",{className:"btn btn-primary",disabled:!er||0===O.length||!el,onClick:ey,children:[(0,t.jsx)(i.Send,{size:16}),"出牌"]}),(0,t.jsx)("button",{className:"btn",disabled:!er||!et.table,onClick:ev,children:"不要"})]})]})]}):(0,t.jsxs)("section",{className:J.default.entry,children:[(0,t.jsxs)("div",{className:J.default.entryBrand,children:[(0,t.jsx)("div",{className:J.default.cardMark,children:"干"}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h1",{children:"干瞪眼牌桌"}),(0,t.jsx)("p",{children:"创建房间码邀请朋友加入,房间状态通过 MostBox P2P 频道同步。"})]})]}),(0,t.jsxs)("div",{className:J.default.entryPanel,children:[(0,t.jsxs)("div",{className:J.default.accountLine,children:[(0,t.jsx)("span",{children:"当前账号"}),(0,t.jsx)("strong",{children:Z.userIdentity?.displayName||"未登录"})]}),(0,t.jsxs)("button",{className:"btn btn-primary",disabled:Z.joining,onClick:ep,children:[(0,t.jsx)(s.Play,{size:16}),"创建房间"]}),(0,t.jsxs)("form",{onSubmit:ef,className:J.default.joinForm,children:[(0,t.jsxs)("label",{children:["房间号",(0,t.jsx)("input",{value:C,maxLength:8,onChange:e=>M(e.target.value.toUpperCase()),placeholder:"输入房间号"})]}),(0,t.jsx)("button",{className:"btn",disabled:Z.joining||!C,children:"加入房间"})]}),(0,t.jsx)("p",{className:J.default.status,children:Z.isBackendReady?"节点已连接":"正在连接节点..."})]})]})})})}],31678)}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,95057,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={formatUrl:function(){return o},formatWithValidation:function(){return c},urlObjectKeys:function(){return l}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let s=e.r(90809)._(e.r(98183)),i=/https?|ftp|gopher|file/;function o(e){let{auth:t,hostname:r}=e,n=e.protocol||"",a=e.pathname||"",o=e.hash||"",l=e.query||"",c=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?c=t+e.host:r&&(c=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(c+=":"+e.port)),l&&"object"==typeof l&&(l=String(s.urlQueryToSearchParams(l)));let u=e.search||l&&`?${l}`||"";return n&&!n.endsWith(":")&&(n+=":"),e.slashes||(!n||i.test(n))&&!1!==c?(c="//"+(c||""),a&&"/"!==a[0]&&(a="/"+a)):c||(c=""),o&&"#"!==o[0]&&(o="#"+o),u&&"?"!==u[0]&&(u="?"+u),a=a.replace(/[?#]/g,encodeURIComponent),u=u.replace("#","%23"),`${n}${c}${a}${u}${o}`}let l=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function c(e){return o(e)}},18581,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return a}});let n=e.r(71645);function a(e,t){let r=(0,n.useRef)(null),a=(0,n.useRef)(null);return(0,n.useCallback)(n=>{if(null===n){let e=r.current;e&&(r.current=null,e());let t=a.current;t&&(a.current=null,t())}else e&&(r.current=s(e,n)),t&&(a.current=s(t,n))},[e,t])}function s(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},73668,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return s}});let n=e.r(18967),a=e.r(52817);function s(e){if(!(0,n.isAbsoluteUrl)(e))return!0;try{let t=(0,n.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,a.hasBasePath)(r.pathname)}catch(e){return!1}}},84508,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},22016,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={default:function(){return g},useLinkStatus:function(){return j}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let s=e.r(90809),i=e.r(18050),o=s._(e.r(71645)),l=e.r(95057),c=e.r(8372),u=e.r(18581),d=e.r(18967),h=e.r(5550);e.r(33525);let p=e.r(88540),f=e.r(91949),m=e.r(73668),y=e.r(9396);function g(t){var r,n;let a,s,g,[j,v]=(0,o.useOptimistic)(f.IDLE_LINK_STATUS),x=(0,o.useRef)(null),{href:k,as:w,children:C,prefetch:S=null,passHref:N,replace:M,shallow:A,scroll:I,onClick:$,onMouseEnter:E,onTouchStart:z,legacyBehavior:R=!1,onNavigate:P,transitionTypes:L,ref:U,unstable_dynamicOnHover:_,...O}=t;a=C,R&&("string"==typeof a||"number"==typeof a)&&(a=(0,i.jsx)("a",{children:a}));let T=o.default.useContext(c.AppRouterContext),D=!1!==S,K=!1!==S?null===(n=S)||"auto"===n?y.FetchStrategy.PPR:y.FetchStrategy.Full:y.FetchStrategy.PPR,B="string"==typeof(r=w||k)?r:(0,l.formatUrl)(r);if(R){if(a?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});s=o.default.Children.only(a)}let V=R?s&&"object"==typeof s&&s.ref:U,q=o.default.useCallback(e=>(null!==T&&(x.current=(0,f.mountLinkInstance)(e,B,T,K,D,v)),()=>{x.current&&((0,f.unmountLinkForCurrentNavigation)(x.current),x.current=null),(0,f.unmountPrefetchableInstance)(e)}),[D,B,T,K,v]),G={ref:(0,u.useMergedRef)(q,V),onClick(t){R||"function"!=typeof $||$(t),R&&s.props&&"function"==typeof s.props.onClick&&s.props.onClick(t),!T||t.defaultPrevented||function(t,r,n,a,s,i,l){if("u">typeof window){let c,{nodeName:u}=t.currentTarget;if("A"===u.toUpperCase()&&((c=t.currentTarget.getAttribute("target"))&&"_self"!==c||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,m.isLocalURL)(r)){a&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),i){let e=!1;if(i({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:d}=e.r(99781);o.default.startTransition(()=>{d(r,a?"replace":"push",!1===s?p.ScrollBehavior.NoScroll:p.ScrollBehavior.Default,n.current,l)})}}(t,B,x,M,I,P,L)},onMouseEnter(e){R||"function"!=typeof E||E(e),R&&s.props&&"function"==typeof s.props.onMouseEnter&&s.props.onMouseEnter(e),T&&D&&(0,f.onNavigationIntent)(e.currentTarget,!0===_)},onTouchStart:function(e){R||"function"!=typeof z||z(e),R&&s.props&&"function"==typeof s.props.onTouchStart&&s.props.onTouchStart(e),T&&D&&(0,f.onNavigationIntent)(e.currentTarget,!0===_)}};return(0,d.isAbsoluteUrl)(B)?G.href=B:R&&!N&&("a"!==s.type||"href"in s.props)||(G.href=(0,h.addBasePath)(B)),g=R?o.default.cloneElement(s,G):(0,i.jsx)("a",{...O,...G,children:a}),(0,i.jsx)(b.Provider,{value:j,children:g})}e.r(84508);let b=(0,o.createContext)(f.IDLE_LINK_STATUS),j=()=>(0,o.useContext)(b);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},8734,e=>{"use strict";let t=(0,e.i(56420).default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);e.s(["Copy",0,t],8734)},11241,e=>{"use strict";let t=(0,e.i(56420).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);e.s(["ArrowLeft",0,t],11241)},96699,e=>{"use strict";let t=(0,e.i(56420).default)("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]);e.s(["Moon",0,t],96699)},35965,e=>{"use strict";let t=(0,e.i(56420).default)("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);e.s(["Sun",0,t],35965)},59665,5142,e=>{"use strict";var t=e.i(18050),r=e.i(71645);let n=(0,e.i(56420).default)("menu",[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]]);function a(e=!1,t={}){let[n,s]=(0,r.useState)(e),i=(0,r.useCallback)(()=>{s(e=>e||(t.onOpen?.(),!0))},[t.onOpen]),o=(0,r.useCallback)(()=>{s(e=>e?(t.onClose?.(),!1):e)},[t.onClose]);return[n,{open:i,close:o,toggle:(0,r.useCallback)(()=>{n?o():i()},[o,i,n]),set:s}]}e.s(["useDisclosure",0,a],5142);let s=(0,r.createContext)(null);e.s(["default",0,function({sidebar:e,headerTitle:i,headerRight:o,children:l}){let[c,u]=a(!1),[d,h]=(0,r.useState)(!1),p=function(e,{getInitialValueInEffect:t}={getInitialValueInEffect:!0}){let[n,a]=(0,r.useState)(t?void 0:!!("u">typeof window&&"matchMedia"in window)&&window.matchMedia(e).matches);return(0,r.useEffect)(()=>{try{if("matchMedia"in window){let t=window.matchMedia(e);a(t.matches);let r=e=>a(e.matches);return t.addEventListener("change",r),()=>{t.removeEventListener("change",r)}}}catch(e){return}},[e]),n||!1}("(max-width: 768px)"),f=()=>{p?u.open():h(!1)};return(0,t.jsx)(s.Provider,{value:{closeSidebar:u.close,openSidebar:f,isSidebarVisible:p?c:!d},children:(0,t.jsxs)("div",{className:"app-layout",children:[(0,t.jsx)("div",{className:`sidebar-overlay ${c?"visible":""}`,onClick:()=>u.close()}),(0,t.jsx)("div",{className:`sidebar ${c?"open":""} ${d?"collapsed":""}`,children:e({closeSidebar:u.close,openSidebar:f})}),(0,t.jsxs)("div",{className:"main-content",children:[(0,t.jsxs)("header",{className:"app-header",children:[(0,t.jsxs)("div",{className:"header-left",children:[(0,t.jsx)("button",{onClick:()=>{p?u.toggle():h(!d)},className:"btn btn-icon sidebar-toggle-btn","aria-label":p?"打开菜单":d?"展开侧边栏":"收起侧边栏",children:(0,t.jsx)(n,{size:16})}),i]}),(0,t.jsx)("div",{className:"header-right",children:o})]}),l]})]})})},"useAppShell",0,function(){let e=(0,r.useContext)(s);if(!e)throw Error("useAppShell must be used within AppShell");return e}],59665)},27648,e=>{"use strict";var t=e.i(18050),r=e.i(93957),n=e.i(71192);e.s(["default",0,function({className:e=""}){let a=(0,n.useUserStore)(e=>e.identity),s=(0,n.useUserStore)(e=>e.openLoginModal),i=(0,n.useUserStore)(e=>e.logoutUser);return(0,t.jsxs)("div",{className:`chat-sidebar-footer sidebar-account ${e}`,children:[(0,t.jsxs)("div",{className:"user-info",children:[(0,t.jsx)("img",{className:"user-avatar-img",src:(0,r.generateAvatar)(a?.address,a?.avatar),alt:"avatar"}),(0,t.jsx)("span",{className:"user-name",title:a?.address,children:a?.displayName||"未登录"})]}),a?(0,t.jsx)("button",{className:"btn btn-ghost logout-btn",onClick:i,children:"退出"}):(0,t.jsx)("button",{className:"btn btn-primary login-btn",onClick:s,children:"登录"})]})}])},87884,e=>{"use strict";var t=e.i(26913);e.s(["channelApi",0,{getChannels(e={}){let r=new URLSearchParams;e.type&&r.set("type",e.type),e.excludeType&&r.set("excludeType",e.excludeType);let n=r.toString();return t.api.get(n?`/api/channels?${n}`:"/api/channels").json()},createChannel:(e,r="personal",n={})=>t.api.post("/api/channels",{json:{name:e,type:r,...n}}).json(),leaveChannel:e=>t.api.delete(`/api/channels/${encodeURIComponent(e)}`).json(),getChannelMessages:(e,r=100,n=0)=>t.api.get(`/api/channels/${encodeURIComponent(e)}/messages?limit=${r}&offset=${n}`).json(),sendChannelMessage:({channelName:e,content:r,author:n,authorName:a,avatar:s,attachment:i})=>t.api.post(`/api/channels/${encodeURIComponent(e)}/messages`,{json:i?{content:r,author:n,authorName:a,avatar:s,attachment:i}:{content:r,author:n,authorName:a,avatar:s}}).json(),getChannelMembers:e=>t.api.get(`/api/channels/${encodeURIComponent(e)}/members`).json(),getChannelPeers:e=>t.api.get(`/api/channels/${encodeURIComponent(e)}/peers`).json(),setChannelRemark:(e,r)=>t.api.put(`/api/channels/${encodeURIComponent(e)}/remark`,{json:{remark:r}}).json(),getFileDownloadUrl:e=>(0,t.getApiUrl)(`/api/files/${e}/download`)}])},23952,e=>{"use strict";var t=e.i(71645),r=e.i(87884),n=e.i(26913);function a(e){return String(e.id||`${e.author||""}-${e.timestamp||""}-${e.content||""}`)}e.s(["useChannelMessages",0,function({isReady:e,enabled:s=!0,channelName:i="",peerId:o="",waitForPeerId:l=!1,limit:c=100,reconnectBaseDelay:u=2500,acceptMessage:d,getMessageKey:h=a,onSyncError:p,onSocketEvent:f}){let[m,y]=(0,t.useState)([]),[g,b]=(0,t.useState)(!1),j=(0,t.useRef)(null),v=(0,t.useRef)(i),x=(0,t.useRef)(null),k=(0,t.useRef)(0),w=(0,t.useRef)(d),C=(0,t.useRef)(h),S=(0,t.useRef)(f),N=(0,t.useRef)(p),M=(0,t.useRef)(o);(0,t.useEffect)(()=>{w.current=d},[d]),(0,t.useEffect)(()=>{C.current=h},[h]),(0,t.useEffect)(()=>{S.current=f},[f]),(0,t.useEffect)(()=>{N.current=p},[p]);let A=(0,t.useCallback)(e=>{let t=w.current;return t?e.filter(t):e},[]),I=(0,t.useCallback)((e,t,r=!0)=>{let n=[...e];for(let e of A(t)){let t=C.current(e);if(r){let r=n.findIndex(t=>t.pending&&t.author?.toLowerCase()===e.author?.toLowerCase()&&t.content===e.content);if(-1!==r){n[r]={...e,id:e.id||t};continue}}n.some(e=>C.current(e)===t)||n.push({...e,id:e.id||t})}return n},[A]),$=(0,t.useCallback)((e,t)=>{j.current?.readyState===WebSocket.OPEN&&j.current.send(JSON.stringify({event:e,data:t}))},[]),E=(0,t.useCallback)(e=>{e&&$("channel:subscribe",{channel:e})},[$]),z=(0,t.useCallback)(e=>{e&&$("channel:unsubscribe",{channel:e})},[$]),R=(0,t.useCallback)(async(t=v.current,n={})=>{if(!t||!e)return[];try{let e=A(await r.channelApi.getChannelMessages(t,c));return y(t=>n.replace?e:I(t,e,!1)),e}catch(e){return n.replace&&y([]),await N.current?.(e),[]}},[A,e,c,I]);(0,t.useEffect)(()=>{M.current=o,o&&($("register",{peerId:o}),l&&v.current&&(E(v.current),R(v.current,{replace:!0})))},[o,E,R,l,$]);let P=(0,t.useCallback)(()=>{y([])},[]),L=(0,t.useCallback)(async({channelName:e=v.current,content:t,author:n,authorName:a,avatar:s,attachment:i,optimisticId:o})=>{let l=t.trim();if(!e||!l)return null;let c={id:o||`${n}-${Date.now()}-${Math.random().toString(36).slice(2)}`,author:n,authorName:a,content:l,timestamp:Date.now(),pending:!0,attachment:i};y(e=>[...e,c]);try{let t=await r.channelApi.sendChannelMessage({channelName:e,content:l,author:n,authorName:a,avatar:s,attachment:i});return y(e=>e.map(e=>e.id===c.id?{...t.message,id:t.message.id||C.current(t.message)}:e)),t.message}catch(e){throw y(e=>e.filter(e=>e.id!==c.id)),e}},[]);return(0,t.useEffect)(()=>{let t=v.current;if(v.current=i,t&&t!==i&&z(t),i&&e&&s)return R(i,{replace:!0}),(!l||M.current)&&E(i),()=>z(i)},[i,s,e,E,R,z,l]),(0,t.useEffect)(()=>{if(!e||!s)return void b(!1);let t=!1;async function r(){let e=new WebSocket(await (0,n.getAuthenticatedWebSocketUrl)("/ws"));t?e.close():(e.onopen=()=>{b(!0),k.current=0,M.current&&e.send(JSON.stringify({event:"register",data:{peerId:M.current}})),v.current&&(!l||M.current)&&(E(v.current),R(v.current,{replace:!0}))},e.onmessage=e=>{try{let t=JSON.parse(e.data);S.current?.(t.event,t.data),"channel:message"===t.event&&t.data?.channel===v.current&&t.data?.message&&y(e=>I(e,[t.data.message]))}catch{}},e.onclose=()=>{if(b(!1),t)return;let e=k.current;if(e>=20)return;let n=Math.min(u*Math.pow(2,e),3e4);k.current=e+1,x.current=setTimeout(r,n)},e.onerror=()=>e.close(),j.current=e)}return k.current=0,r(),()=>{t=!0,x.current&&clearTimeout(x.current),j.current?.close(),j.current=null}},[s,e,I,u,E,R,l]),{clearMessages:P,connected:g,messages:m,sendMessage:L,setMessages:y,syncMessages:R}}])},21357,e=>{"use strict";let t=(0,e.i(56420).default)("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"}]]);e.s(["Play",0,t],21357)},53881,53751,99591,34471,e=>{"use strict";var t=e.i(18050),r=e.i(22016),n=e.i(11241),a=e.i(56420);let s=(0,a.default)("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"}]]);e.s(["Spade",0,s],53751);let i=(0,a.default)("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"}]]);var o=e.i(27648);let l=[{id:"gandengyan",label:"干瞪眼",href:"/game/gandengyan/",icon:(0,t.jsx)(i,{size:16})},{id:"zhajinhua",label:"炸金花",href:"/game/zhajinhua/",icon:(0,t.jsx)(s,{size:16})}];e.s(["default",0,function({activeGame:e,closeSidebar:a}){return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.default,{href:"/",className:"sidebar-header sidebar-header-link",children:[(0,t.jsx)(n.ArrowLeft,{size:18}),(0,t.jsx)("h1",{children:"MOST PEOPLE"})]}),(0,t.jsx)("nav",{className:"sidebar-nav",children:l.map(n=>(0,t.jsxs)(r.default,{href:n.href,className:`sidebar-nav-btn ${e===n.id?"active":""}`,onClick:a,children:[n.icon,(0,t.jsx)("span",{children:n.label})]},n.id))}),(0,t.jsx)(o.default,{})]})}],53881);var c=e.i(71645);let u="game",d="mostbox.game.event",h=["gandengyan","zhajinhua"],p="ABCDEFGHJKLMNPQRSTUVWXYZ23456789";function f(e){let t=String(e||"").trim().toLowerCase();return h.includes(t)?t:""}function m(e){return String(e||"").trim().toUpperCase().replace(/[^A-Z0-9]/g,"").slice(0,8)}function y(e){return/^[A-Z0-9]{4,8}$/.test(String(e||""))}function g(){let e="";for(let t=0;t<6;t++)e+=p[function(e){if(globalThis.crypto?.getRandomValues){let t=new Uint32Array(1);return globalThis.crypto.getRandomValues(t),t[0]%e}return Math.floor(Math.random()*e)}(p.length)];return e}function b(e,t){let r=f(e),n=m(t);return r&&y(n)?`game-${r}-${n.toLowerCase()}`:""}function j({gameId:e,roomCode:t,event:r,payload:n}){var a;let s=f(e);return{kind:d,version:1,gameId:s,roomCode:m(t),event:String(r||""),eventId:(a=s||"game",`${a}_${Date.now()}_${function(){let e=new Uint8Array(4);if(globalThis.crypto?.getRandomValues)globalThis.crypto.getRandomValues(e);else for(let t=0;t<e.length;t++)e[t]=Math.floor(256*Math.random());return[...e].map(e=>e.toString(16).padStart(2,"0")).join("")}()}`),payload:n||{}}}function v(e,t={}){try{let r=JSON.parse(String(e||""));if(!r||r.kind!==d||1!==r.version||"string"!=typeof r.event||"string"!=typeof r.eventId)return null;let n=f(r.gameId),a=m(r.roomCode);if(!n||!y(a)||t.gameId&&n!==f(t.gameId)||t.roomCode&&a!==m(t.roomCode))return null;return{...r,gameId:n,roomCode:a,payload:r.payload&&"object"==typeof r.payload?r.payload:{}}}catch{return null}}function x(e,t){var r;if(!e||"object"!=typeof e)return null;let n=k(e.address||t);if(!n||k(t)!==n)return null;let a=String(e.name||"").trim().slice(0,50)||((r=n)?`${r.slice(0,6)}...${r.slice(-4)}`:"");return{address:n,name:a,publicKey:String(e.publicKey||"").trim(),joinedAt:Number(e.joinedAt||Date.now())}}function k(e){let t=String(e||"").trim();return/^0x[a-fA-F0-9]{40}$/.test(t)?t.toLowerCase():""}function w(e,t,r){let n=t.get(r.address);n?Object.assign(n,r):(e.push(r),t.set(r.address,r))}function C(e){return[...e].sort((e,t)=>Number(e.timestamp||0)-Number(t.timestamp||0))}e.s(["GAME_CHANNEL_TYPE",0,u,"createGameEvent",0,j,"createGameRoomCode",0,g,"deriveGameRoomLobby",0,function(e=[],t={}){let r=[],n=new Map,a="";for(let s of C(e)){let e=v(s.content,t);if(e){if("room:create"===e.event){let t=x(e.payload?.player,s.author);if(!t)continue;a||(a=t.address),w(r,n,t);continue}if("player:join"===e.event){let t=x(e.payload?.player,s.author);t&&w(r,n,t)}}}return{gameId:f(t.gameId),roomCode:m(t.roomCode),hostAddress:a,players:r}},"gameRoomCodeToChannelName",0,b,"getLatestGameState",0,function(e=[],t={}){let r=null;for(let n of C(e)){let e=v(n.content,t);if(!e||"room:state"!==e.event)continue;let a=Number(e.payload?.seq||0);(!r||a>=Number(r.payload?.seq||0))&&(r=e)}return r},"normalizeGameRoomCode",0,m,"parseGameEvent",0,v],99591);var S=e.i(87884),N=e.i(23952),M=e.i(26913),A=e.i(3593),I=e.i(71192);async function $(e,t,r,n,a,s){let i=j({gameId:r,roomCode:n,event:a,payload:s});await S.channelApi.sendChannelMessage({channelName:e,content:JSON.stringify(i),author:t.address,authorName:E(t)})}function E(e){return e.displayName||e.username}e.s(["useGameRoom",0,function({gameId:e,onError:t,getPlayerPayload:r}){let n=(0,A.useAppStore)(e=>e.hasBackend),a=(0,A.useAppStore)(e=>e.checkBackend),s=(0,A.useAppStore)(e=>e.openConnectModal),i=(0,I.useUserStore)(e=>e.identity),o=(0,I.useUserStore)(e=>e.openLoginModal),[l,d]=(0,c.useState)(""),[h,p]=(0,c.useState)(""),[f,y]=(0,c.useState)(!1),x=!0===n,k=(0,c.useCallback)(async(e,r)=>{let n=await (0,M.getApiErrorMessage)(e,r);t&&t(n)},[t]),w=(0,c.useCallback)(t=>!!v(t.content,{gameId:e,roomCode:l}),[e,l]),C=(0,c.useCallback)(t=>{let r=v(t.content,{gameId:e,roomCode:l});return r?`${t.author}-${r.eventId}`:`${t.author}-${t.timestamp}-${t.content}`},[e,l]),{clearMessages:z,connected:R,messages:P,sendMessage:L,syncMessages:U}=(0,N.useChannelMessages)({isReady:x,enabled:!!i,channelName:h,limit:500,acceptMessage:w,getMessageKey:C,onSyncError:e=>k(e,"无法读取房间记录")}),_=(0,c.useMemo)(()=>P.map(t=>({message:t,event:v(t.content,{gameId:e,roomCode:l})})).filter(e=>e.event),[e,P,l]),O=(0,c.useCallback)(()=>i?!!x||(s(),!1):(o(),!1),[x,s,o,i]);(0,c.useEffect)(()=>{null===n&&a()},[a,n]);let T=(0,c.useCallback)(async(n,a=!1)=>{if(!O()||!i)return!1;let s=a?g():m(n),o=b(e,s);if(!o)return t&&t("请输入 4-8 位房间码"),!1;y(!0);try{var l;return await S.channelApi.createChannel(o,u),await $(o,i,e,s,a?"room:create":"player:join",{player:r?r(i):{address:(l=i).address,name:E(l),publicKey:"",joinedAt:Date.now()}}),d(s),p(o),z(),!0}catch(e){return await k(e,a?"创建房间失败":"进入房间失败"),!1}finally{y(!1)}},[O,e,r,t,k,z,i]),D=(0,c.useCallback)(()=>T("",!0),[T]),K=(0,c.useCallback)(e=>T(e),[T]),B=(0,c.useCallback)(async(t,r={})=>{if(!O()||!i||!h||!l)return!1;let n=j({gameId:e,roomCode:l,event:t,payload:r}),a=JSON.stringify(n);try{return await L({channelName:h,content:a,author:i.address,authorName:E(i),optimisticId:`${i.address}-${n.eventId}`}),!0}catch(e){return await k(e,"发送房间事件失败"),!1}},[h,O,e,k,l,L,i]);return{channelName:h,connected:R,createRoom:D,ensureReady:O,isBackendReady:x,joinRoom:K,joining:f,messages:P,roomCode:l,roomEvents:_,sendRoomEvent:B,setRoomCode:d,syncMessages:U,userIdentity:i}}],34471)},39307,e=>{"use strict";var t=e.i(18050),r=e.i(71645),n=e.i(8734),a=e.i(72382),s=e.i(96699),i=e.i(21357);let o=(0,e.i(56420).default)("refresh-ccw",[["path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"14sxne"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16",key:"1hlbsb"}],["path",{d:"M16 16h5v5",key:"ccwih5"}]]);var l=e.i(53751),c=e.i(35965),u=e.i(59665),d=e.i(53881),h=e.i(34471),p=e.i(3593),f=e.i(71192);let m=[10,20,50,100],y=["2","3","4","5","6","7","8","9","10","J","Q","K","A"],g=["D","C","H","S"],b=new Map(y.map((e,t)=>[e,t+2])),j=new Map(g.map((e,t)=>[e,t+1])),v={1:"散牌",2:"对子",3:"顺子",4:"金花",5:"顺金",6:"豹子"};function x(e){return String(e||"").trim().toUpperCase().replace(/[^A-Z0-9]/g,"").slice(0,8)}function k(e="zhajinhua"){return`${e}_${Date.now()}_${function(){let e=new Uint8Array(4);if(globalThis.crypto?.getRandomValues)globalThis.crypto.getRandomValues(e);else for(let t=0;t<e.length;t++)e[t]=Math.floor(256*Math.random());return[...e].map(e=>e.toString(16).padStart(2,"0")).join("")}()}`}function w(){let e=[];for(let t of g)for(let r of y)e.push(`${r}${t}`);return e}function C(e){let t=String(e||"").trim().toUpperCase(),r=t.slice(-1),n=t.slice(0,-1);if(!b.has(n)||!j.has(r))throw Error(`Invalid card: ${e}`);return{id:`${n}${r}`,rank:n,suit:r,rankValue:b.get(n),suitValue:j.get(r)}}function S(e){let t;if(!Array.isArray(e)||3!==e.length)throw Error("炸金花手牌必须是 3 张牌");let r=e.map(C),n=r.map(e=>e.rankValue),a=new Map;for(let e of n)a.set(e,(a.get(e)||0)+1);let s=1===new Set(r.map(e=>e.suit)).size,i=3!==(t=[...new Set(n)].sort((e,t)=>e-t)).length?0:2===t[0]&&3===t[1]&&14===t[2]?3:t[0]+1===t[1]&&t[1]+1===t[2]?t[2]:0,o=[...n].sort((e,t)=>t-e),l=Math.max(...r.map(e=>e.suitValue)),c=1,u=o;return 1===a.size?(c=6,u=[o[0]]):i&&s?(c=5,u=[i]):s?(c=4,u=o):i?(c=3,u=[i]):2===a.size&&(c=2,u=[[...a.entries()].find(([,e])=>2===e)[0],[...a.entries()].find(([,e])=>1===e)[0]]),{category:c,label:v[c],tiebreakers:u,tieSuit:l,cards:r.map(e=>e.id)}}function N(e){return e&&"object"==typeof e&&e.roundId&&Array.isArray(e.players)?{roomCode:x(e.roomCode),roundId:String(e.roundId),status:"finished"===e.status?"finished":"playing",host:R(e.host),seq:Number(e.seq)||1,startedAt:Number(e.startedAt)||Date.now(),ante:Number(e.ante)||10,pot:Math.max(0,Number(e.pot)||0),currentBet:Math.max(0,Number(e.currentBet)||10),turnAddress:R(e.turnAddress),players:e.players.map(z).filter(Boolean),lastAction:String(e.lastAction||""),winner:e.winner?R(e.winner):null,showdown:e.showdown&&"object"==typeof e.showdown?P(e.showdown):null,appliedEventIds:Array.isArray(e.appliedEventIds)?e.appliedEventIds.map(String):[]}:null}function M(e,t,r){let n=N(e);if(!n||"playing"!==n.status)return{ok:!1,error:"当前没有进行中的牌局"};let a=R(r),s=n.players.find(e=>e.address===a);if(!s||"active"!==s.status)return{ok:!1,error:"玩家不在本轮牌局中"};if(n.turnAddress!==a)return{ok:!1,error:"还没有轮到你操作"};let i=t?.action;if(!["look","call","raise","compare","fold"].includes(i))return{ok:!1,error:"未知操作"};if("look"===i)return s.looked?{ok:!1,error:"已经看过牌"}:{ok:!0};if("call"===i){let e=Math.max(0,n.currentBet-s.bet);return s.chips>=e?{ok:!0}:{ok:!1,error:"筹码不足,不能跟注"}}if("raise"===i){let e=Number(t.amount);if(!m.includes(e))return{ok:!1,error:"加注档位无效"};let r=n.currentBet+e-s.bet;return s.chips>=r?{ok:!0}:{ok:!1,error:"筹码不足,不能加注"}}if("compare"===i){let e=R(t.target),r=n.players.find(t=>t.address===e);if(!e||e===a||!r||"active"!==r.status)return{ok:!1,error:"请选择有效的比牌对象"};let i=Math.max(0,n.currentBet-s.bet);return s.chips>=i?{ok:!0}:{ok:!1,error:"筹码不足,不能比牌"}}return{ok:!0}}function A(e){return(e?.players||[]).filter(e=>"active"===e.status)}function I(e,t){let r=Math.max(0,e.currentBet-t.bet);t.chips-=r,t.bet+=r,e.pot+=r}function $(e,t){var r,n;let a,s=A(e);return 1===s.length?(r=e,n=s[0].address,(a=r.players.find(e=>e.address===n))&&(a.chips+=r.pot),r.status="finished",r.winner=n,r.turnAddress="",r.showdown=r.hands?P(r.hands):null,r.lastAction=a?`${a.name} 赢得 ${r.pot} 筹码`:"本局结束",r.pot=0,E(r)):(e.turnAddress=function(e,t){let r=e.players,n=Math.max(0,r.findIndex(e=>e.address===R(t)));for(let e=1;e<=r.length;e++){let t=r[(n+e)%r.length];if("active"===t.status)return t.address}return""}(e,t),E(e))}function E(e){return e.seq=Number(e.seq||0)+1,{ok:!0,state:e}}function z(e){var t;if(!e||"object"!=typeof e)return null;let r=R(e.address);return r?{address:r,name:String(e.name||((t=r)?`${t.slice(0,6)}...${t.slice(-4)}`:"")).slice(0,50),publicKey:String(e.publicKey||""),chips:Math.max(0,Number(e.chips)||0),status:"folded"===e.status?"folded":"active",looked:!0===e.looked,bet:Math.max(0,Number(e.bet)||0)}:null}function R(e){let t=String(e||"").trim();return/^0x[a-fA-F0-9]{40}$/.test(t)?t.toLowerCase():""}function P(e){return JSON.parse(JSON.stringify(e))}var L=e.i(99591),U=e.i(66112),_=e.i(93957);let O="zhajinhua";function T(e,t){return String(e||"").toLowerCase()===String(t||"").toLowerCase()}function D(e=""){return e?`${e.slice(0,6)}...${e.slice(-4)}`:""}e.s(["default",0,function(){var e,y;let g,b=(0,p.useAppStore)(e=>e.isDarkMode),j=(0,p.useAppStore)(e=>e.setIsDarkMode),v=(0,p.useAppStore)(e=>e.addToast),C=(0,f.useUserStore)(e=>e.initializeUser),[z,K]=(0,r.useState)(""),[B,V]=(0,r.useState)(!1),q=(0,r.useRef)(""),G=(0,r.useRef)(!1),[J,F]=(0,r.useState)(20),[H,W]=(0,r.useState)(""),[Z,Q]=(0,r.useState)({}),X=(0,r.useRef)(null),Y=(0,r.useRef)(new Set),ee=(0,h.useGameRoom)({gameId:O,onError:e=>v(e,"error"),getPlayerPayload:e=>{let t=(0,U.most25519)(e.danger);return{address:e.address,name:e.displayName||e.username,publicKey:t.public_key,joinedAt:Date.now()}}}),et=(0,r.useMemo)(()=>ee.userIdentity?.danger?(0,U.most25519)(ee.userIdentity.danger):null,[ee.userIdentity?.danger]);(0,r.useEffect)(()=>{C()},[C]),(0,r.useEffect)(()=>{let e=new URLSearchParams(window.location.search).get("room")?.toUpperCase();e&&(K(e),q.current=e)},[]),(0,r.useEffect)(()=>{let e=q.current;!e||G.current||ee.isBackendReady&&ee.userIdentity&&(G.current=!0,q.current="",ee.joinRoom(e).then(e=>{e&&v("已进入房间","success")}))},[ee.isBackendReady,ee.userIdentity,ee.joinRoom,v]),(0,r.useEffect)(()=>{if(!ee.roomCode)return;let e=`/game/zhajinhua?room=${ee.roomCode}`;`${window.location.pathname}${window.location.search}`!==e&&window.history.replaceState(null,"",e)},[ee.roomCode]);let er=(0,r.useMemo)(()=>(0,L.deriveGameRoomLobby)(ee.messages,{gameId:O,roomCode:ee.roomCode}),[ee.messages,ee.roomCode]),en=(0,r.useMemo)(()=>(0,L.getLatestGameState)(ee.messages,{gameId:O,roomCode:ee.roomCode}),[ee.messages,ee.roomCode]),ea=en?.payload?.round||null,es=ea?.host||er.hostAddress,ei=T(es,ee.userIdentity?.address),eo=ee.userIdentity?.address?.toLowerCase()||"",el=ea?.players.find(e=>T(e.address,eo)),ec=el||er.players.find(e=>T(e.address,eo)),eu=Z[ea?.roundId||""]||null,ed=(ea?.showdown&&eo?ea.showdown[eo]:null)||(el?.looked?eu:null),eh=function(e,t){let r=(e?.players||[]).find(e=>e.address===R(t));if(!e||"playing"!==e.status||!r||"active"!==r.status||e.turnAddress!==r.address)return[];let n=[];return r.looked||n.push("look"),M(e,{action:"call"},r.address).ok&&n.push("call"),m.some(t=>M(e,{action:"raise",amount:t},r.address).ok)&&n.push("raise"),A(e).length>1&&n.push("compare"),n.push("fold"),n}(ea,eo),ep=A(ea),ef=ei&&function(e=[]){let t=e.filter(e=>Number(e.chips)>=10);return t.length>=2&&t.length<=5}(er.players.map(e=>({...e,chips:ea?.players.find(t=>T(t.address,e.address))?.chips??1e3}))),em=ee.roomCode&&1?`${window.location.origin}/game/zhajinhua?room=${ee.roomCode}`:"";async function ey(){await ee.createRoom()&&v("房间已创建","success")}async function eg(e){e.preventDefault(),await ee.joinRoom(z)&&v("已进入房间","success")}async function eb(){em&&(await navigator.clipboard.writeText(em),V(!0),setTimeout(()=>V(!1),1400))}async function ej(e){return ee.sendRoomEvent("room:state",{round:function(e){if(!e)return null;let t={...e};return delete t.hands,P(t)}(e),seq:e.seq})}async function ev(){if(!ee.userIdentity||!et||!ef)return void v("至少需要 2 名有足够筹码的玩家","error");try{let e=er.players.map(e=>({...e,chips:ea?.players.find(t=>T(t.address,e.address))?.chips??1e3})),t=function({roomCode:e,players:t,hostAddress:r,roundId:n=k("round"),random:a=Math.random}){let s=t.filter(e=>Number(e.chips)>=10).slice(0,5);if(s.length<2)throw Error("至少需要 2 名有足够筹码的玩家");let i=function(e=w(),t=Math.random){let r=[...e];for(let e=r.length-1;e>0;e--){let n=Math.floor(t()*(e+1));[r[e],r[n]]=[r[n],r[e]]}return r}(w(),a),o={},l=s.map((e,t)=>{let r=i.slice(3*t,3*t+3);return o[e.address]=r,{address:e.address,name:e.name,publicKey:e.publicKey,chips:Number(e.chips)-10,status:"active",looked:!1,bet:10}}),c=Math.max(0,l.findIndex(e=>e.address===R(r))),u=l[(c+1)%l.length].address;return{roomCode:x(e),roundId:n,status:"playing",host:R(r),seq:1,startedAt:Date.now(),ante:10,pot:10*l.length,currentBet:10,turnAddress:u,players:l,lastAction:"本局开始",winner:null,showdown:null,appliedEventIds:[],hands:o}}({roomCode:ee.roomCode,players:e,hostAddress:ee.userIdentity.address});for(let e of(X.current=t.hands,Y.current.clear(),await ej(t),t.players)){let r=(0,U.mostBoxEncrypt)(JSON.stringify(t.hands[e.address]),{senderPrivateKey:et.private_key,recipientPublicKey:e.publicKey});await ee.sendRoomEvent("deal:private",{roundId:t.roundId,recipient:e.address,senderPublicKey:et.public_key,encrypted:r})}Q(e=>({...e,[t.roundId]:t.hands[ee.userIdentity.address.toLowerCase()]})),v("新一局已开始","success")}catch(e){v(e instanceof Error?e.message:"开局失败","error")}}async function ex(e,t={}){if(!ea||!ee.userIdentity)return;let r=function({roundId:e,action:t,amount:r,target:n}){return{roundId:e,eventId:k("action"),action:t,amount:r,target:n}}({roundId:ea.roundId,action:e,amount:t.amount,target:t.target});await ee.sendRoomEvent("player:action",{actionEvent:r})}(0,r.useEffect)(()=>{if(ea&&ee.userIdentity&&et&&es)for(let e of ee.roomEvents){let t=e.event;if(!t||"deal:private"!==t.event)continue;let r=t.payload;if(r.roundId!==ea.roundId||!T(r.recipient,ee.userIdentity.address))continue;let n=(0,U.mostBoxDecrypt)(r.encrypted||"",{senderPublicKey:r.senderPublicKey||"",recipientPrivateKey:et.private_key});if(n)try{let e=JSON.parse(n);Array.isArray(e)&&Q(t=>({...t,[ea.roundId]:e.map(String)}))}catch{}}},[ea?.roundId,ee.roomEvents,ee.userIdentity,es,et?.private_key]),(0,r.useEffect)(()=>{if(!ei||!ea||"playing"!==ea.status)return;let e=X.current;if(!e)return;let t=ee.roomEvents.filter(e=>{let t=e.event;if(!t||"player:action"!==t.event)return!1;let r=t.payload.actionEvent;return!(!r||r.roundId!==ea.roundId||Y.current.has(r.eventId)||ea.appliedEventIds?.includes(r.eventId))});if(0===t.length)return;let r=!1;return async function(){let n,a=(n=N(ea))&&e&&"object"==typeof e?{...n,hands:P(e)}:null;if(a)for(let e of t){if(r)return;let t=(e.event?.payload).actionEvent,n=function(e,t,r){let n=M(e,t,r);if(!n.ok)return{ok:!1,error:n.error,state:e};let a=P(e),s=R(r),i=a.players.find(e=>e.address===s),o=String(t.eventId);if(a.appliedEventIds?.includes(o))return{ok:!0,state:a,duplicate:!0};if(Array.isArray(a.appliedEventIds)||(a.appliedEventIds=[]),a.appliedEventIds.push(o),"look"===t.action)return i.looked=!0,a.lastAction=`${i.name} 看牌`,E(a);if("fold"===t.action)return i.status="folded",a.lastAction=`${i.name} 弃牌`,$(a,s);if("call"===t.action)return I(a,i),a.lastAction=`${i.name} 跟注`,$(a,s);if("raise"===t.action){let e=Number(t.amount);return a.currentBet+=e,I(a,i),a.lastAction=`${i.name} 加注 ${e}`,$(a,s)}if("compare"===t.action){I(a,i);let e=R(t.target),r=a.players.find(t=>t.address===e),n=function(e,t){let r=S(e),n=S(t);if(r.category!==n.category)return r.category-n.category;let a=function(e,t){let r=Math.max(e.length,t.length);for(let n=0;n<r;n++){let r=e[n]||0,a=t[n]||0;if(r!==a)return r-a}return 0}(r.tiebreakers,n.tiebreakers);return 0!==a?a:r.tieSuit-n.tieSuit}(a.hands?.[s]||[],a.hands?.[e]||[])>=0?r:i;return n.status="folded",a.lastAction=`${i.name} 与 ${r.name} 比牌,${n.name} 出局`,$(a,s)}return{ok:!1,error:"未知操作",state:e}}(a,t,e.message.author);if(n.ok&&(a=n.state,X.current=n.state.hands,await ej(n.state)&&Y.current.add(t.eventId),"finished"===n.state.status))break}}(),()=>{r=!0}},[ea?.roundId,ea?.seq,ea?.status,ee.roomEvents,ei]);let ek=ea?.status==="playing"?T(ea.turnAddress,eo)?"轮到你操作":ea.turnAddress?`等待 ${e=ea.turnAddress,y=er.players,g=e.toLowerCase(),y.find(e=>e.address===g)?.name||D(e)}`:"进行中":ea?.status==="finished"?"本局结束":"等待开局",ew=ep.filter(e=>!T(e.address,eo));return(0,t.jsx)(u.default,{sidebar:({closeSidebar:e})=>(0,t.jsx)(d.default,{activeGame:"zhajinhua",closeSidebar:e}),headerTitle:(0,t.jsxs)("div",{className:"zjh-header-title",children:[(0,t.jsx)("h2",{className:"header-title",children:"游戏 · 炸金花"}),ee.roomCode&&(0,t.jsxs)("span",{className:"header-badge",children:["房间 ",ee.roomCode]})]}),headerRight:(0,t.jsxs)("div",{className:"header-right-actions",children:[ee.roomCode&&(0,t.jsxs)("button",{className:"btn btn-secondary",onClick:eb,children:[(0,t.jsx)(n.Copy,{size:16}),B?"已复制":"分享房间"]}),(0,t.jsx)("button",{className:"btn btn-icon",onClick:()=>j(!b),title:"切换主题",children:b?(0,t.jsx)(c.Sun,{size:16}):(0,t.jsx)(s.Moon,{size:16})})]}),children:(0,t.jsx)("main",{className:"zjh-page",children:ee.roomCode?(0,t.jsxs)("div",{className:"zjh-board",children:[(0,t.jsxs)("section",{className:"zjh-table",children:[(0,t.jsxs)("div",{className:"zjh-table-center",children:[(0,t.jsx)("span",{children:"底池"}),(0,t.jsx)("strong",{children:ea?.pot||0}),(0,t.jsxs)("small",{children:["当前注 ",ea?.currentBet||0]})]}),(0,t.jsx)("div",{className:"zjh-seats",children:er.players.map(e=>{let r=ea?.players.find(t=>T(t.address,e.address)),n=ea?.turnAddress===e.address,a=ea?.winner===e.address;return(0,t.jsxs)("div",{className:`zjh-seat ${n?"turn":""} ${a?"winner":""}`,children:[(0,t.jsx)("img",{className:"zjh-seat-avatar",src:(0,_.generateAvatar)(e.address),alt:"avatar"}),(0,t.jsxs)("div",{className:"zjh-seat-main",children:[(0,t.jsx)("strong",{children:e.name}),(0,t.jsx)("span",{children:D(e.address)})]}),(0,t.jsxs)("div",{className:"zjh-seat-meta",children:[(0,t.jsxs)("span",{children:[r?.chips??1e3," 筹码"]}),(0,t.jsx)("span",{children:r?.status==="folded"?"已弃牌":r?.looked?"已看牌":ea?"在局中":"等待开局"})]})]},e.address)})})]}),(0,t.jsxs)("aside",{className:"zjh-panel",children:[(0,t.jsxs)("div",{className:"zjh-panel-section",children:[(0,t.jsxs)("div",{className:"zjh-panel-title",children:[(0,t.jsx)(l.Spade,{size:16}),(0,t.jsx)("span",{children:"我的手牌"})]}),(0,t.jsx)("div",{className:"zjh-hand",children:ed?ed.map(e=>{let r,n,a=(n=(r=String(e||"")).slice(-1),{rank:r.slice(0,-1),suit:({S:"S",H:"H",C:"C",D:"D"})[n]||n,color:"H"===n||"D"===n?"red":"black"});return(0,t.jsxs)("div",{className:`zjh-card ${a.color}`,children:[(0,t.jsx)("span",{children:a.rank}),(0,t.jsx)("strong",{children:a.suit})]},e)}):[0,1,2].map(e=>(0,t.jsx)("div",{className:"zjh-card back",children:(0,t.jsx)(l.Spade,{size:18})},e))}),(0,t.jsx)("p",{className:"zjh-hand-label",children:ed?S(ed).label:eu?"未看牌":"等待房主发牌"})]}),(0,t.jsxs)("div",{className:"zjh-panel-section",children:[(0,t.jsxs)("div",{className:"zjh-panel-title",children:[(0,t.jsx)(i.Play,{size:16}),(0,t.jsx)("span",{children:"操作"})]}),ei?(0,t.jsxs)("button",{className:"btn btn-primary btn-full",onClick:ev,disabled:!ef||ea?.status==="playing",children:[(0,t.jsx)(o,{size:16}),"开始本局"]}):(0,t.jsx)("p",{className:"zjh-muted",children:"等待房主开始或继续牌局。"}),(0,t.jsxs)("div",{className:"zjh-actions",children:[(0,t.jsxs)("button",{className:"btn btn-secondary",disabled:!eh.includes("look"),onClick:()=>ex("look"),children:[(0,t.jsx)(a.Eye,{size:16}),"看牌"]}),(0,t.jsx)("button",{className:"btn btn-secondary",disabled:!eh.includes("call"),onClick:()=>ex("call"),children:"跟注"}),(0,t.jsx)("button",{className:"btn btn-secondary",disabled:!eh.includes("fold"),onClick:()=>ex("fold"),children:"弃牌"})]}),(0,t.jsxs)("div",{className:"zjh-raise-row",children:[(0,t.jsx)("select",{className:"input input-compact",value:J,onChange:e=>F(Number(e.target.value)),children:m.map(e=>(0,t.jsxs)("option",{value:e,children:["加 ",e]},e))}),(0,t.jsx)("button",{className:"btn btn-secondary",disabled:!eh.includes("raise"),onClick:()=>ex("raise",{amount:J}),children:"加注"})]}),(0,t.jsxs)("div",{className:"zjh-raise-row",children:[(0,t.jsxs)("select",{className:"input input-compact",value:H,onChange:e=>W(e.target.value),children:[(0,t.jsx)("option",{value:"",children:"选择比牌对象"}),ew.map(e=>(0,t.jsx)("option",{value:e.address,children:e.name},e.address))]}),(0,t.jsx)("button",{className:"btn btn-secondary",disabled:!eh.includes("compare")||!H,onClick:()=>ex("compare",{target:H}),children:"比牌"})]})]}),(0,t.jsxs)("div",{className:"zjh-panel-section",children:[(0,t.jsx)("div",{className:"zjh-panel-title",children:"状态"}),(0,t.jsxs)("div",{className:"zjh-status-grid",children:[(0,t.jsx)("span",{children:"房主"}),(0,t.jsx)("strong",{children:es?D(es):"-"}),(0,t.jsx)("span",{children:"我的筹码"}),(0,t.jsx)("strong",{children:ec?.chips??1e3}),(0,t.jsx)("span",{children:"本轮"}),(0,t.jsx)("strong",{children:ek}),(0,t.jsx)("span",{children:"提示"}),(0,t.jsx)("strong",{children:ea?.lastAction||"等待玩家加入"})]})]})]})]}):(0,t.jsxs)("section",{className:"zjh-welcome",children:[(0,t.jsx)("div",{className:"zjh-welcome-icon",children:(0,t.jsx)(l.Spade,{size:36})}),(0,t.jsx)("h2",{children:"P2P 炸金花"}),(0,t.jsx)("p",{children:"创建房间邀请朋友,房主在线开始牌局并推进状态。"}),(0,t.jsxs)("div",{className:"zjh-welcome-actions",children:[(0,t.jsxs)("button",{className:"btn btn-primary",disabled:ee.joining,onClick:ey,children:[(0,t.jsx)(i.Play,{size:16}),"创建房间"]}),(0,t.jsxs)("form",{className:"zjh-room-input-row",onSubmit:eg,children:[(0,t.jsx)("input",{className:"input input-compact",value:z,onChange:e=>K(e.target.value.toUpperCase()),placeholder:"输入房间码",maxLength:8}),(0,t.jsx)("button",{className:"btn btn-icon",disabled:ee.joining||!z,children:(0,t.jsx)(i.Play,{size:16})})]})]})]})})})}],39307)}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,68590,e=>{"use strict";let a=(0,e.i(56420).default)("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"}]]);e.s(["MessageSquare",0,a],68590)},30274,e=>{"use strict";let a=(0,e.i(56420).default)("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"}]]);e.s(["Send",0,a],30274)},87884,e=>{"use strict";var a=e.i(26913);e.s(["channelApi",0,{getChannels(e={}){let t=new URLSearchParams;e.type&&t.set("type",e.type),e.excludeType&&t.set("excludeType",e.excludeType);let s=t.toString();return a.api.get(s?`/api/channels?${s}`:"/api/channels").json()},createChannel:(e,t="personal",s={})=>a.api.post("/api/channels",{json:{name:e,type:t,...s}}).json(),leaveChannel:e=>a.api.delete(`/api/channels/${encodeURIComponent(e)}`).json(),getChannelMessages:(e,t=100,s=0)=>a.api.get(`/api/channels/${encodeURIComponent(e)}/messages?limit=${t}&offset=${s}`).json(),sendChannelMessage:({channelName:e,content:t,author:s,authorName:n,avatar:i,attachment:r})=>a.api.post(`/api/channels/${encodeURIComponent(e)}/messages`,{json:r?{content:t,author:s,authorName:n,avatar:i,attachment:r}:{content:t,author:s,authorName:n,avatar:i}}).json(),getChannelMembers:e=>a.api.get(`/api/channels/${encodeURIComponent(e)}/members`).json(),getChannelPeers:e=>a.api.get(`/api/channels/${encodeURIComponent(e)}/peers`).json(),setChannelRemark:(e,t)=>a.api.put(`/api/channels/${encodeURIComponent(e)}/remark`,{json:{remark:t}}).json(),getFileDownloadUrl:e=>(0,a.getApiUrl)(`/api/files/${e}/download`)}])},23952,e=>{"use strict";var a=e.i(71645),t=e.i(87884),s=e.i(26913);function n(e){return String(e.id||`${e.author||""}-${e.timestamp||""}-${e.content||""}`)}e.s(["useChannelMessages",0,function({isReady:e,enabled:i=!0,channelName:r="",peerId:l="",waitForPeerId:c=!1,limit:d=100,reconnectBaseDelay:o=2500,acceptMessage:u,getMessageKey:h=n,onSyncError:m,onSocketEvent:p}){let[f,x]=(0,a.useState)([]),[y,g]=(0,a.useState)(!1),v=(0,a.useRef)(null),j=(0,a.useRef)(r),b=(0,a.useRef)(null),k=(0,a.useRef)(0),w=(0,a.useRef)(u),N=(0,a.useRef)(h),C=(0,a.useRef)(p),S=(0,a.useRef)(m),M=(0,a.useRef)(l);(0,a.useEffect)(()=>{w.current=u},[u]),(0,a.useEffect)(()=>{N.current=h},[h]),(0,a.useEffect)(()=>{C.current=p},[p]),(0,a.useEffect)(()=>{S.current=m},[m]);let I=(0,a.useCallback)(e=>{let a=w.current;return a?e.filter(a):e},[]),A=(0,a.useCallback)((e,a,t=!0)=>{let s=[...e];for(let e of I(a)){let a=N.current(e);if(t){let t=s.findIndex(a=>a.pending&&a.author?.toLowerCase()===e.author?.toLowerCase()&&a.content===e.content);if(-1!==t){s[t]={...e,id:e.id||a};continue}}s.some(e=>N.current(e)===a)||s.push({...e,id:e.id||a})}return s},[I]),z=(0,a.useCallback)((e,a)=>{v.current?.readyState===WebSocket.OPEN&&v.current.send(JSON.stringify({event:e,data:a}))},[]),$=(0,a.useCallback)(e=>{e&&z("channel:subscribe",{channel:e})},[z]),E=(0,a.useCallback)(e=>{e&&z("channel:unsubscribe",{channel:e})},[z]),R=(0,a.useCallback)(async(a=j.current,s={})=>{if(!a||!e)return[];try{let e=I(await t.channelApi.getChannelMessages(a,d));return x(a=>s.replace?e:A(a,e,!1)),e}catch(e){return s.replace&&x([]),await S.current?.(e),[]}},[I,e,d,A]);(0,a.useEffect)(()=>{M.current=l,l&&(z("register",{peerId:l}),c&&j.current&&($(j.current),R(j.current,{replace:!0})))},[l,$,R,c,z]);let D=(0,a.useCallback)(()=>{x([])},[]),L=(0,a.useCallback)(async({channelName:e=j.current,content:a,author:s,authorName:n,avatar:i,attachment:r,optimisticId:l})=>{let c=a.trim();if(!e||!c)return null;let d={id:l||`${s}-${Date.now()}-${Math.random().toString(36).slice(2)}`,author:s,authorName:n,content:c,timestamp:Date.now(),pending:!0,attachment:r};x(e=>[...e,d]);try{let a=await t.channelApi.sendChannelMessage({channelName:e,content:c,author:s,authorName:n,avatar:i,attachment:r});return x(e=>e.map(e=>e.id===d.id?{...a.message,id:a.message.id||N.current(a.message)}:e)),a.message}catch(e){throw x(e=>e.filter(e=>e.id!==d.id)),e}},[]);return(0,a.useEffect)(()=>{let a=j.current;if(j.current=r,a&&a!==r&&E(a),r&&e&&i)return R(r,{replace:!0}),(!c||M.current)&&$(r),()=>E(r)},[r,i,e,$,R,E,c]),(0,a.useEffect)(()=>{if(!e||!i)return void g(!1);let a=!1;async function t(){let e=new WebSocket(await (0,s.getAuthenticatedWebSocketUrl)("/ws"));a?e.close():(e.onopen=()=>{g(!0),k.current=0,M.current&&e.send(JSON.stringify({event:"register",data:{peerId:M.current}})),j.current&&(!c||M.current)&&($(j.current),R(j.current,{replace:!0}))},e.onmessage=e=>{try{let a=JSON.parse(e.data);C.current?.(a.event,a.data),"channel:message"===a.event&&a.data?.channel===j.current&&a.data?.message&&x(e=>A(e,[a.data.message]))}catch{}},e.onclose=()=>{if(g(!1),a)return;let e=k.current;if(e>=20)return;let s=Math.min(o*Math.pow(2,e),3e4);k.current=e+1,b.current=setTimeout(t,s)},e.onerror=()=>e.close(),v.current=e)}return k.current=0,t(),()=>{a=!0,b.current&&clearTimeout(b.current),v.current?.close(),v.current=null}},[i,e,A,o,$,R,c]),{clearMessages:D,connected:y,messages:f,sendMessage:L,setMessages:x,syncMessages:R}}])},62368,e=>{"use strict";let a=(0,e.i(56420).default)("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]);e.s(["Download",0,a],62368)},66595,e=>{"use strict";let a=(0,e.i(56420).default)("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);e.s(["Search",0,a],66595)},51921,e=>{"use strict";let a=(0,e.i(56420).default)("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"}]]);e.s(["Music",0,a],51921)},15170,e=>{"use strict";let a=(0,e.i(56420).default)("image",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]]);e.s(["Image",0,a],15170)},80796,e=>{"use strict";let a=(0,e.i(56420).default)("film",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M7 3v18",key:"bbkbws"}],["path",{d:"M3 7.5h4",key:"zfgn84"}],["path",{d:"M3 12h18",key:"1i2n21"}],["path",{d:"M3 16.5h4",key:"1230mu"}],["path",{d:"M17 3v18",key:"in4fa5"}],["path",{d:"M17 7.5h4",key:"myr1c1"}],["path",{d:"M17 16.5h4",key:"go4c1d"}]]);e.s(["Film",0,a],80796)},12796,e=>{"use strict";let a=(0,e.i(56420).default)("loader",[["path",{d:"M12 2v4",key:"3427ic"}],["path",{d:"m16.2 7.8 2.9-2.9",key:"r700ao"}],["path",{d:"M18 12h4",key:"wj9ykh"}],["path",{d:"m16.2 16.2 2.9 2.9",key:"1bxg5t"}],["path",{d:"M12 18v4",key:"jadmvz"}],["path",{d:"m4.9 19.1 2.9-2.9",key:"bwix9q"}],["path",{d:"M2 12h4",key:"j09sii"}],["path",{d:"m4.9 4.9 2.9 2.9",key:"giyufr"}]]);e.s(["Loader",0,a],12796)},6933,e=>{"use strict";e.s(["getFileSubtype",0,function(e){let a=String(e||"").split(".").pop()?.toLowerCase()||"";return["jpg","jpeg","png","gif","webp","svg","bmp","ico","tiff","heic","heif"].includes(a)?"image":["mp4","webm","mov","avi","mkv","flv","wmv","m4v","mpeg","3gp"].includes(a)?"video":["mp3","wav","ogg","flac","aac","m4a","wma","opus"].includes(a)?"audio":["txt","md","js","ts","jsx","tsx","css","scss","less","json","xml","html","htm","yaml","yml","toml","ini","cfg","conf","log","sh","bash","py","rb","go","rs","java","c","cpp","h","hpp","cs","php","sql","graphql","env","gitignore","dockerfile","readme"].includes(a)?"text":"file"}])},26091,e=>{"use strict";let a=(0,e.i(56420).default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);e.s(["FileText",0,a],26091)},77071,e=>{"use strict";let a=(0,e.i(56420).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);e.s(["Plus",0,a],77071)},99847,e=>{"use strict";let a=(0,e.i(56420).default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);e.s(["AlertCircle",0,a],99847)},77685,e=>{"use strict";var a=e.i(18050),t=e.i(99847),s=e.i(62368),n=e.i(72382),i=e.i(26091),r=e.i(80796),l=e.i(15170),c=e.i(12796),d=e.i(51921);function o(e){let a=String(e||"").split("/");return a[a.length-1]||e}e.s(["ChatAttachmentCard",0,function({attachment:e,status:u="idle",pending:h=!1,onOpen:m}){var p,f;let x="checking"===u,y=["ui-file-action","chat-attachment-action","error"===u?"error":"","available"===u?"available":""].filter(Boolean).join(" "),g=((p=e.size)&&!(p<=0)?p<1024?`${p} B`:p<1048576?`${(p/1024).toFixed(1)} KB`:p<0x40000000?`${(p/1048576).toFixed(1)} MB`:`${(p/0x40000000).toFixed(2)} GB`:"")||"MostBox 文件";return(0,a.jsxs)("button",{type:"button",className:"ui-file-card chat-attachment-card",onClick:()=>m?.(e),disabled:h||x,title:e.link,children:[(0,a.jsx)("span",{className:`ui-file-icon chat-attachment-icon ${e.kind}`,children:x?(0,a.jsx)(c.Loader,{size:20,className:"ui-spinner chat-attachment-spinner"}):"image"===(f=e.kind)?(0,a.jsx)(l.Image,{size:20}):"video"===f?(0,a.jsx)(r.Film,{size:20}):"audio"===f?(0,a.jsx)(d.Music,{size:20}):(0,a.jsx)(i.FileText,{size:20})}),(0,a.jsxs)("span",{className:"ui-file-info chat-attachment-info",children:[(0,a.jsx)("span",{className:"ui-file-name chat-attachment-name",children:o(e.fileName)}),(0,a.jsx)("span",{className:"ui-file-meta chat-attachment-meta",children:h?"发送中...":g})]}),(0,a.jsx)("span",{className:y,children:x?"检测中":"available"===u?(0,a.jsx)(n.Eye,{size:16}):"error"===u?(0,a.jsx)(t.AlertCircle,{size:17}):(0,a.jsx)(s.Download,{size:16})})]})},"getAttachmentBaseFileName",0,o])},11241,e=>{"use strict";let a=(0,e.i(56420).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);e.s(["ArrowLeft",0,a],11241)},35965,e=>{"use strict";let a=(0,e.i(56420).default)("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);e.s(["Sun",0,a],35965)},96699,e=>{"use strict";let a=(0,e.i(56420).default)("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]);e.s(["Moon",0,a],96699)},59665,5142,e=>{"use strict";var a=e.i(18050),t=e.i(71645);let s=(0,e.i(56420).default)("menu",[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]]);function n(e=!1,a={}){let[s,i]=(0,t.useState)(e),r=(0,t.useCallback)(()=>{i(e=>e||(a.onOpen?.(),!0))},[a.onOpen]),l=(0,t.useCallback)(()=>{i(e=>e?(a.onClose?.(),!1):e)},[a.onClose]);return[s,{open:r,close:l,toggle:(0,t.useCallback)(()=>{s?l():r()},[l,r,s]),set:i}]}e.s(["useDisclosure",0,n],5142);let i=(0,t.createContext)(null);e.s(["default",0,function({sidebar:e,headerTitle:r,headerRight:l,children:c}){let[d,o]=n(!1),[u,h]=(0,t.useState)(!1),m=function(e,{getInitialValueInEffect:a}={getInitialValueInEffect:!0}){let[s,n]=(0,t.useState)(a?void 0:!!("u">typeof window&&"matchMedia"in window)&&window.matchMedia(e).matches);return(0,t.useEffect)(()=>{try{if("matchMedia"in window){let a=window.matchMedia(e);n(a.matches);let t=e=>n(e.matches);return a.addEventListener("change",t),()=>{a.removeEventListener("change",t)}}}catch(e){return}},[e]),s||!1}("(max-width: 768px)"),p=()=>{m?o.open():h(!1)};return(0,a.jsx)(i.Provider,{value:{closeSidebar:o.close,openSidebar:p,isSidebarVisible:m?d:!u},children:(0,a.jsxs)("div",{className:"app-layout",children:[(0,a.jsx)("div",{className:`sidebar-overlay ${d?"visible":""}`,onClick:()=>o.close()}),(0,a.jsx)("div",{className:`sidebar ${d?"open":""} ${u?"collapsed":""}`,children:e({closeSidebar:o.close,openSidebar:p})}),(0,a.jsxs)("div",{className:"main-content",children:[(0,a.jsxs)("header",{className:"app-header",children:[(0,a.jsxs)("div",{className:"header-left",children:[(0,a.jsx)("button",{onClick:()=>{m?o.toggle():h(!u)},className:"btn btn-icon sidebar-toggle-btn","aria-label":m?"打开菜单":u?"展开侧边栏":"收起侧边栏",children:(0,a.jsx)(s,{size:16})}),r]}),(0,a.jsx)("div",{className:"header-right",children:l})]}),c]})]})})},"useAppShell",0,function(){let e=(0,t.useContext)(i);if(!e)throw Error("useAppShell must be used within AppShell");return e}],59665)},27648,e=>{"use strict";var a=e.i(18050),t=e.i(93957),s=e.i(71192);e.s(["default",0,function({className:e=""}){let n=(0,s.useUserStore)(e=>e.identity),i=(0,s.useUserStore)(e=>e.openLoginModal),r=(0,s.useUserStore)(e=>e.logoutUser);return(0,a.jsxs)("div",{className:`chat-sidebar-footer sidebar-account ${e}`,children:[(0,a.jsxs)("div",{className:"user-info",children:[(0,a.jsx)("img",{className:"user-avatar-img",src:(0,t.generateAvatar)(n?.address,n?.avatar),alt:"avatar"}),(0,a.jsx)("span",{className:"user-name",title:n?.address,children:n?.displayName||"未登录"})]}),n?(0,a.jsx)("button",{className:"btn btn-ghost logout-btn",onClick:r,children:"退出"}):(0,a.jsx)("button",{className:"btn btn-primary login-btn",onClick:i,children:"登录"})]})}])},39626,e=>{"use strict";var a=e.i(18050);let t=(0,e.i(56420).default)("panel-left-open",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m14 9 3 3-3 3",key:"8010ee"}]]);var s=e.i(59665);e.s(["default",0,function({label:e="打开侧边栏",className:n="",variant:i="primary"}){let{isSidebarVisible:r,openSidebar:l}=(0,s.useAppShell)();return r?null:(0,a.jsxs)("button",{type:"button",className:`btn ${"primary"===i?"btn-primary":""} sidebar-open-hint ${n}`.trim(),onClick:l,children:[(0,a.jsx)(t,{size:16}),e]})}],39626)},79490,11028,27668,e=>{"use strict";let a=(0,e.i(56420).default)("pen",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]]);e.s(["Edit2",0,a],79490);var t=e.i(18050),s=e.i(71645),n=e.i(26091),i=e.i(12796),r=e.i(51921),l=e.i(63676),c=e.i(26913);e.s(["default",0,function({item:e,isBackendReady:a,getFileDownloadUrl:d,onClose:o}){let[u,h]=(0,s.useState)(""),[m,p]=(0,s.useState)(!1),[f,x]=(0,s.useState)(""),[y,g]=(0,s.useState)("");return(0,s.useEffect)(()=>{if("text"!==e.subtype)return;let t=!1;return(h(""),g(""),a)?(p(!0),(async()=>{try{let a=await fetch(d(e.cid),{headers:{...await (0,c.getApiRequestHeaders)("GET",`/api/files/${e.cid}/download`),Range:"bytes=0-9999"}});if(!a.ok)throw Error("加载失败");let s=await a.text();t||h(s||"(文件为空)")}catch{t||h("加载失败")}finally{t||p(!1)}})(),()=>{t=!0}):void h("加载失败")},[d,a,e.cid,e.subtype]),(0,s.useEffect)(()=>{var t;if("image"!==(t=e.subtype)&&"video"!==t&&"audio"!==t)return void x("");if(x(""),g(""),!a)return void g("加载失败");let s="",n=!1;return(async()=>{try{let a=await fetch(d(e.cid),{headers:await (0,c.getApiRequestHeaders)("GET",`/api/files/${e.cid}/download`)});if(!a.ok)throw Error("加载失败");let t=URL.createObjectURL(await a.blob());s=t,n||x(t)}catch{n||g("加载失败")}})(),()=>{n=!0,s&&URL.revokeObjectURL(s)}},[d,a,e.cid,e.subtype]),(0,t.jsxs)("div",{className:"preview-overlay",onClick:o,children:[(0,t.jsx)("button",{type:"button",className:"preview-close",onClick:o,"aria-label":"关闭预览",children:(0,t.jsx)(l.X,{size:20})}),(0,t.jsxs)("div",{onClick:e=>e.stopPropagation(),children:["image"===e.subtype&&(0,t.jsx)("div",{className:"preview-media-wrapper",children:f?(0,t.jsx)("img",{src:f,alt:e.fileName}):y?(0,t.jsxs)("div",{className:"preview-unsupported",children:[(0,t.jsx)(n.FileText,{size:48,className:"preview-file-icon"}),(0,t.jsx)("p",{children:e.fileName}),(0,t.jsx)("p",{className:"preview-unsupported-hint",children:y})]}):(0,t.jsx)("div",{className:"preview-loading",children:(0,t.jsx)("div",{className:"preview-loading-spinner"})})}),"video"===e.subtype&&(0,t.jsx)("div",{className:"preview-media-wrapper",children:f?(0,t.jsx)("video",{src:f,controls:!0}):y?(0,t.jsxs)("div",{className:"preview-unsupported",children:[(0,t.jsx)(n.FileText,{size:48,className:"preview-file-icon"}),(0,t.jsx)("p",{children:e.fileName}),(0,t.jsx)("p",{className:"preview-unsupported-hint",children:y})]}):(0,t.jsx)("div",{className:"preview-loading",children:(0,t.jsx)("div",{className:"preview-loading-spinner"})})}),"audio"===e.subtype&&(0,t.jsxs)("div",{className:"preview-audio",children:[(0,t.jsx)("div",{className:"preview-audio-icon",children:(0,t.jsx)(r.Music,{size:36,color:"var(--accent)"})}),(0,t.jsx)("p",{className:"preview-audio-filename",children:e.fileName}),f?(0,t.jsx)("audio",{className:"preview-audio-player",src:f,controls:!0}):(0,t.jsx)("div",{className:"preview-text-loading",children:y?(0,t.jsx)("p",{children:y}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.Loader,{size:24,className:"preview-text-spinner"}),(0,t.jsx)("p",{children:"正在加载音频预览..."})]})})]}),"file"===e.subtype&&(0,t.jsxs)("div",{className:"preview-unsupported",children:[(0,t.jsx)(n.FileText,{size:48,className:"preview-file-icon"}),(0,t.jsx)("p",{children:e.fileName}),(0,t.jsx)("p",{className:"preview-unsupported-hint",children:"无法预览"})]}),"text"===e.subtype&&(0,t.jsxs)("div",{className:"preview-text-container",children:[(0,t.jsx)("div",{className:"preview-text-header",children:(0,t.jsx)("span",{children:e.fileName})}),m?(0,t.jsxs)("div",{className:"preview-text-loading",children:[(0,t.jsx)(i.Loader,{size:24,className:"preview-text-spinner"}),(0,t.jsx)("p",{children:"正在加载文本预览..."}),(0,t.jsx)("p",{className:"preview-text-loading-hint",children:"如果是初次预览,可能需要等待 P2P 网络同步"})]}):(0,t.jsx)("pre",{className:"preview-text",children:u||"(文件为空)"})]})]})]})}],11028);var d=e.i(64621);let o="链接格式不正确,请粘贴完整的 most://<cid>?filename=... 分享链接。",u="暂时没有发现在线种子。请确认分享者或其他下载者仍在线做种,稍后再检测。",h={"Link must be a valid most:// URL":"链接无法解析,请粘贴完整的 most://<cid>?filename=... 分享链接。","Link must use most:// protocol":"链接协议不正确,应以 most:// 开头。","Link path is not supported":"链接里不应包含路径,请使用 most://<cid>?filename=... 格式。","Invalid CID format":"CID 无效,请确认 most:// 后面的内容没有缺失或被截断。","Invalid CID format: CID v1 required":"CID 格式不符合 MostBox 要求,请确认分享链接完整。","CID digest must be 32 bytes":"CID 格式不符合 MostBox 要求,请确认分享链接完整。","filename is required":"链接缺少 filename 参数,请复制完整分享链接后再检测。"};e.s(["getDownloadCheckErrorMessageFromPayload",0,function(e={},a=""){if("TimeoutError"===a)return"检测等待超时,暂时没有等到在线种子响应。请确认分享者或其他下载者仍在线做种,稍后再检测。";if(!e.status)return"无法连接本地节点,请确认 MostBox 后端正在运行后再检测。";if(404===e.status)return"当前后端还没有检测接口,请重启 MostBox 后端后再试。";switch(e.code){case"VALIDATION_ERROR":return o;case"CONFLICT":return e.error?`${e.error},请先处理同名文件后再下载。`:"下载目录已有同名文件,请先重命名或移走后再检测。";case"PEER_NOT_FOUND":return u;case"PERMISSION_ERROR":return e.error?`下载目录不可写:${e.error}`:"下载目录不可写,请检查目录权限后再检测。";case"ENGINE_NOT_INITIALIZED":return"本地节点还没有启动完成,请稍等几秒后重新检测。"}return 503===e.status?u:e.status>=500?"本地节点检测时出错,请稍后重试或查看节点日志。":e.error?`检测未通过:${e.error}`:"检测未通过,请确认链接完整、发布者在线且本机网络正常。"},"getDownloadLinkValidationMessage",0,function(e=""){let a=String(e||"").trim();if(!a)return"请先粘贴 most:// 分享链接。";let t=function(e){let a;if(!e||"string"!=typeof e)return{cid:"",error:"Link must be a non-empty string"};try{a=new URL(e)}catch{return{cid:"",error:"Link must be a valid most:// URL"}}if("most:"!==a.protocol)return{cid:"",error:"Link must use most:// protocol"};if(a.pathname&&"/"!==a.pathname)return{cid:"",error:"Link path is not supported"};let t=a.hostname,s=a.searchParams.get("filename"),n=[...a.searchParams.keys()].find(e=>"filename"!==e),i=function(e){let a;if(!e||"string"!=typeof e)return{valid:!1,error:"CID must be a non-empty string"};try{a=d.CID.parse(e)}catch{return{valid:!1,error:"Invalid CID format"}}return 1!==a.version?{valid:!1,error:"Invalid CID format: CID v1 required"}:32!==a.multihash.digest.length?{valid:!1,error:"CID digest must be 32 bytes"}:{valid:!0}}(t);return i.valid?s&&s.trim()?n?{cid:"",error:`Unsupported query parameter: ${n}`}:{cid:t,fileName:s}:{cid:"",error:"filename is required"}:{cid:"",error:i.error}}(a);if(!t.error)return t.fileName?.trim()?null:h["filename is required"];if(t.error.startsWith("Unsupported query parameter: ")){let e=t.error.slice(29);return`链接包含暂不支持的参数 ${e},请只保留 filename。`}return h[t.error]||o}],27668)},41222,e=>{"use strict";var a=e.i(18050),t=e.i(71645),s=e.i(68590),n=e.i(30274),i=e.i(77071),r=e.i(35965),l=e.i(96699),c=e.i(63676),d=e.i(11241),o=e.i(79490),u=e.i(56420);let h=(0,u.default)("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"}]]),m=(0,u.default)("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"}]]),p=(0,u.default)("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"}]]);var f=e.i(15170),x=e.i(80796),y=e.i(12796);let g=(0,u.default)("paperclip",[["path",{d:"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551",key:"1miecu"}]]);var v=e.i(66595),j=e.i(59665),b=e.i(77685),k=e.i(11028);e.i(4121);var w=e.i(47910),N=e.i(88361),C=e.i(57667),S=e.i(39626),M=e.i(26913),I=e.i(27668),A=e.i(93957),z=e.i(3593),$=e.i(71192),E=e.i(5142),R=e.i(23952),D=e.i(27648),L=e.i(87884),F=e.i(6933);let U=/^[a-zA-Z0-9_-]+$/,T={async publishFile(e,a){let t=new FormData;t.append("file",e,a);let s=await M.api.post("/api/publish",{body:t});if(!s.ok)throw Error((await s.json().catch(()=>({error:s.statusText}))).error||"Request failed");return s.json()},downloadFile:e=>M.api.post("/api/download",{json:{link:e}}).json(),checkDownload:e=>M.api.post("/api/download/check",{json:{link:e,timeout:1e4},timeout:12e3}).json(),getFileDownloadUrl:e=>(0,M.getApiUrl)(`/api/files/${e}/download`)};async function P(e){let a=await (0,M.getApiErrorPayload)(e),t=e&&"object"==typeof e&&"name"in e?String(e.name):"";return(0,I.getDownloadCheckErrorMessageFromPayload)(a,t)}e.s(["default",0,function(){let e=(0,z.useAppStore)(e=>e.isDarkMode),u=(0,z.useAppStore)(e=>e.setIsDarkMode),O=(0,z.useAppStore)(e=>e.hasBackend),q=(0,z.useAppStore)(e=>e.addToast),B=(0,z.useAppStore)(e=>e.openConnectModal),K=(0,$.useUserStore)(e=>e.identity),V=(0,$.useUserStore)(e=>e.openLoginModal),[H,W]=(0,t.useState)([]),[_,G]=(0,t.useState)(null),[X,J]=(0,t.useState)(""),[Z,Q]=(0,t.useState)(""),[Y,ee]=(0,E.useDisclosure)(!1),[ea,et]=(0,t.useState)(""),[es,en]=(0,t.useState)(!1),[ei,er]=(0,t.useState)(!1),[el,ec]=(0,E.useDisclosure)(!1),[ed,eo]=(0,t.useState)(null),[eu,eh]=(0,t.useState)(!1),[em,ep]=(0,t.useState)(""),[ef,ex]=(0,t.useState)(null),[ey,eg]=(0,t.useState)(!1),[ev,ej]=(0,t.useState)({}),[eb,ek]=(0,t.useState)(null),[ew,eN]=(0,t.useState)([]),[eC,eS]=(0,t.useState)(!1),[eM,eI]=(0,t.useState)(!1),eA=(0,t.useRef)(null),ez=(0,t.useRef)(null),e$=(0,t.useRef)(null),eE=(0,t.useRef)(null),eR=(0,t.useRef)(new Map),eD=(0,t.useRef)(new Set),eL=!0===O,eF=(0,t.useCallback)(async(e,a)=>{q(await (0,M.getApiErrorMessage)(e,a),"error")},[q]),eU=(0,t.useCallback)(()=>({displayName:K?.displayName||K?.username||"",avatar:K?.avatar}),[K?.avatar,K?.displayName,K?.username]),eT=(0,t.useCallback)(async(e=_?.name)=>{if(!e||!eL||!K)return void eN([]);eS(!0);try{eN(await L.channelApi.getChannelMembers(e))}catch(e){eN([]),await eF(e,"无法读取频道成员")}finally{eS(!1)}},[_?.name,eL,eF,K]),{clearMessages:eP,messages:eO,sendMessage:eq,syncMessages:eB}=(0,R.useChannelMessages)({isReady:eL,enabled:!!K,channelName:_?.name||"",peerId:ea,waitForPeerId:!0,onSyncError:e=>eF(e,"无法读取频道消息"),onSocketEvent:function(e,a){switch(e){case"channel:peer:online":case"channel:peer:offline":_&&L.channelApi.getChannelPeers(_.name).catch(e=>{console.warn("[Chat] Failed to fetch peers on event:",e.message)});break;case"channel:joined":case"channel:left":eW(),eT();break;case"download:success":{let e=eR.current.get(a.taskId);e&&(eR.current.delete(a.taskId),eD.current.delete(e.cid),ej(a=>({...a,[e.cid]:{status:"available"}})),q(`${a.fileName||(0,b.getAttachmentBaseFileName)(e.fileName)} 下载完成`,"success"),e_(e,a.fileName||e.fileName));break}case"download:error":case"download:cancelled":{let t=eR.current.get(a.taskId);t&&(eR.current.delete(a.taskId),eD.current.delete(t.cid),ej(s=>({...s,[t.cid]:{status:"error",message:"download:cancelled"===e?"附件下载已取消":a.error||"附件下载失败"}})),q("download:cancelled"===e?"附件下载已取消":a.error||"附件下载失败","error"))}}}});function eK(){return!!eL||(B(),!1)}function eV(){return!!K||(V(),!1)}function eH(e){return e.length<3?"频道名至少 3 个字符":e.length>30?"频道名最多 30 个字符":U.test(e)?"":"频道名只能包含字母、数字、下划线和连字符"}async function eW(){if(eL)try{let e=await L.channelApi.getChannels({excludeType:"game"});W(e)}catch(e){W([]),await eF(e,"无法读取频道列表")}}function e_(e,a=e.fileName){let t=(0,F.getFileSubtype)(a);ex({cid:e.cid,fileName:a,subtype:"file"===t?e.kind:t})}async function eG(e){let a=(0,I.getDownloadLinkValidationMessage)(e.link);if(a)return ej(t=>({...t,[e.cid]:{status:"error",message:a}})),!1;try{ej(a=>({...a,[e.cid]:{status:"checking"}}));let a=await T.checkDownload(e.link);return ej(t=>({...t,[e.cid]:{status:"available",message:a.alreadyExists?"本机已有":"可预览"}})),!0}catch(t){let a=await P(t);return ej(t=>({...t,[e.cid]:{status:"error",message:a}})),!1}}async function eX(e){ek(null),await eG(e)&&await eJ(e)}async function eJ(e){if(!eD.current.has(e.cid)){eD.current.add(e.cid),ej(a=>({...a,[e.cid]:{status:"available"}}));try{let a=await T.downloadFile(e.link);if(a.alreadyExists||a.fileName){eD.current.delete(e.cid),ej(a=>({...a,[e.cid]:{status:"available"}})),e_({...e,fileName:a.fileName||e.fileName},a.fileName||e.fileName);return}a.taskId&&(eR.current.set(a.taskId,e),q("开始下载附件","success"))}catch(t){let a=await P(t);eD.current.delete(e.cid),ej(t=>({...t,[e.cid]:{status:"error",message:a}}))}}}async function eZ(e){!eV()||eK()&&(G(e),window.history.pushState({},"",`?channel=${encodeURIComponent(e.name)}`))}async function eQ(e,a){if((a&&a.stopPropagation(),eV()&&eK())&&!ei){er(!0);try{if(await L.channelApi.leaveChannel(e),_?.name===e){G(null),eP();let e=new URL(window.location.href);e.searchParams.delete("channel"),window.history.pushState({},"",e.pathname)}eW(),ec.close(),eo(null)}catch(e){await eF(e,"退出频道失败")}finally{er(!1)}}}async function eY(e){let a=e.trim();if(!a||es)return;let t=eH(a);if(t)return void q(t,"error");if(eV()&&eK()){en(!0);try{let e=await L.channelApi.createChannel(a,"public",eU()),t=H.find(e=>e.name===a),s={...t,name:e.name||a,type:e.type||t?.type||"public",createdAt:e.createdAt||t?.createdAt,coreKey:e.coreKey||e.key||t?.coreKey,remark:t?.remark};W(e=>e.some(e=>e.name===a)?e.map(e=>e.name===a?{...e,...s}:e):[...e,s]),ee.close(),await eZ(s),eT(a),eW()}catch(e){await eF(e,"加入频道失败")}finally{en(!1)}}}async function e0(e,a){if(!e.trim()||!_||!eV()||!eK())return!1;let t=e.trim();try{return await eq({channelName:_.name,content:t,author:K.address,authorName:K.displayName||K.username,avatar:K.avatar,attachment:a}),eT(_.name),!0}catch(e){return await eF(e,"发送失败"),!1}}async function e1(){if(!Z.trim())return;let e=Z.trim();Q(""),await e0(e)}async function e2(e){if(e&&0!==e.length&&_&&eV()&&eK()&&!ey){eg(!0);try{for(let s of Array.from(e)){var a,t;let e=(a=_.name,t=s.name,`chat-file/${a}/${t}`),n=await T.publishFile(s,e),i=n.fileName||e,r=n.link||`most://${n.cid}?filename=${encodeURIComponent(i)}`,l={kind:s.type.startsWith("image/")?"image":s.type.startsWith("video/")?"video":s.type.startsWith("audio/")?"audio":s.type.startsWith("text/")?"text":(0,F.getFileSubtype)(i),cid:n.cid,fileName:i,link:r,mimeType:s.type||void 0,size:s.size};await e0(r,l)&&q(`${(0,b.getAttachmentBaseFileName)(i)} 已发布`,"success")}}catch(e){await eF(e,"附件发送失败")}finally{eg(!1)}}}async function e4(e){if(!eV()||!eK())return;let a=ev[e.cid];if(a?.status!=="checking"){if(a?.status==="error")return void ek(e);if(a?.status!=="available"){await eG(e)&&await eJ(e);return}await eJ(e)}}async function e6(){if(_&&eV()&&eK())try{let e=await L.channelApi.setChannelRemark(_.name,em);W(a=>a.map(a=>a.name===_.name?{...a,remark:e.remark}:a)),G(a=>a?{...a,remark:e.remark}:null)}catch(e){await eF(e,"设置备注失败")}}function e3(e,a){let t=String(e||"").trim();return t?eM?/#[a-fA-F0-9]{4}$/.test(String(t||"").trim())?t:a?`${t}#${a.slice(-4).toUpperCase()}`:t:t.replace(/#[a-fA-F0-9]{4}$/,""):a?`${a.slice(0,6)}...${a.slice(-4)}`:"Unknown"}(0,t.useEffect)(()=>{eA.current?.scrollIntoView({behavior:"smooth"})},[eO]),(0,t.useEffect)(()=>{eL?M.api.get("/api/node-id").json().then(e=>et(e.id)).catch(e=>{console.warn("[Chat] Failed to fetch node ID:",e.message),eF(e,"无法读取节点 ID")}):et("")},[eL,eF]),(0,t.useEffect)(()=>{eL&&K&&eW()},[O,eL,K?.address]),(0,t.useEffect)(()=>{_&&eL&&(eB(_.name,{replace:!0}),L.channelApi.getChannelPeers(_.name).catch(()=>{}),eT(_.name))},[_,O,eL,eT,eB]),(0,t.useEffect)(()=>{eu&&_&&eT(_.name)},[_,eT,eu]),(0,t.useEffect)(()=>{let e=new URLSearchParams(window.location.search).get("channel");if(e&&H.length>0){let a=H.find(a=>a.name===e);a&&(!_||_.name!==a.name)?eZ(a):a&&_&&_.name===a.name&&(_.createdAt!==a.createdAt||_.coreKey!==a.coreKey||_.remark!==a.remark||_.type!==a.type)&&G(a)}},[H,_]),(0,t.useEffect)(()=>{K||(W([]),G(null),eP(),Q(""),et(""),eh(!1),ex(null),eN([]),ej({}),eD.current.clear(),eR.current.clear())},[eP,K?.address]);let e9=_?(0,a.jsx)("h2",{className:"header-title",children:_.remark||_.name}):(0,a.jsx)("h2",{className:"header-title",children:"聊天"}),e8=X.trim().toLowerCase(),e5=e8?H.filter(e=>[e.remark||e.name,e.name].some(e=>e.toLowerCase().includes(e8))):H;return(0,a.jsxs)(j.default,{sidebar:({closeSidebar:e})=>(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"sidebar-header sidebar-header-link",onClick:()=>window.location.href="/",children:[(0,a.jsx)(d.ArrowLeft,{size:18}),(0,a.jsx)("h1",{children:"MOST PEOPLE"})]}),(0,a.jsx)("div",{className:"chat-channel-search",children:(0,a.jsxs)("div",{className:"ui-input-control",children:[(0,a.jsx)(v.Search,{className:"ui-input-icon",size:15}),(0,a.jsx)("input",{type:"search",className:"input input-compact",placeholder:"搜索频道",value:X,onChange:e=>J(e.target.value),"aria-label":"搜索频道"})]})}),(0,a.jsx)("nav",{className:"sidebar-nav",children:0===H.length?(0,a.jsx)("div",{className:"sidebar-empty-state",children:(0,a.jsx)("p",{children:"暂无频道"})}):0===e5.length?(0,a.jsx)("div",{className:"sidebar-empty-state",children:(0,a.jsx)("p",{children:"未找到频道"})}):e5.map(t=>(0,a.jsxs)("div",{className:`sidebar-nav-btn ${_?.name===t.name?"active":""}`,onClick:()=>{eZ(t),e()},role:"button",tabIndex:0,onKeyDown:a=>{"Enter"===a.key&&(eZ(t),e())},children:[(0,a.jsx)(s.MessageSquare,{size:16}),(0,a.jsx)("span",{children:t.remark||t.name}),(0,a.jsx)("button",{className:"leave-channel-btn",onClick:e=>{e.stopPropagation(),eo(t),ec.open()},title:"退出频道",children:(0,a.jsx)(c.X,{size:14})})]},t.name))}),(0,a.jsxs)("button",{className:"ui-action-dashed create-channel-btn",onClick:()=>{eV()&&eK()&&ee.open()},children:[(0,a.jsx)(i.Plus,{size:16}),"加入频道"]}),(0,a.jsx)(D.default,{})]}),headerTitle:e9,headerRight:(0,a.jsxs)("div",{className:"header-right-actions",children:[(0,a.jsx)("button",{className:"btn btn-icon",onClick:()=>u(!e),title:"切换主题",children:e?(0,a.jsx)(r.Sun,{size:16}):(0,a.jsx)(l.Moon,{size:16})}),_&&(0,a.jsx)("button",{className:"btn btn-icon",onClick:()=>eh(!0),title:"频道设置",children:(0,a.jsx)(p,{size:16})})]}),children:[_?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"chat-messages",children:[0===eO.length?(0,a.jsxs)("div",{className:"ui-empty-state chat-messages-empty",children:[(0,a.jsx)("div",{className:"ui-empty-icon empty-icon",children:(0,a.jsx)(s.MessageSquare,{size:28})}),(0,a.jsx)("p",{children:"暂无消息,开始聊天吧!"})]}):eO.map(e=>(0,a.jsxs)("div",{className:`chat-message ${e.author===K?.address?"self":"other"} ${e.pending?"pending":""}`,children:[(0,a.jsx)("img",{className:"msg-avatar",src:(0,A.generateAvatar)(e.author,e.author===K?.address?K.avatar:void 0),alt:"avatar"}),(0,a.jsxs)("div",{className:"msg-content",children:[(0,a.jsx)("span",{className:"message-author",children:e3(e.authorName,e.author)}),function(e){if(!e.attachment)return(0,a.jsx)("div",{className:"message-bubble",children:e.content});let t=e.attachment,s=ev[t.cid],n=s?.status;return(0,a.jsx)("div",{className:"message-bubble has-attachment",children:(0,a.jsx)(b.ChatAttachmentCard,{attachment:t,status:n,pending:e.pending,onOpen:e4})})}(e),(0,a.jsx)("span",{className:"message-time",children:new Date(e.timestamp).toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"})})]})]},e.id||`${e.author}-${e.timestamp}`)),(0,a.jsx)("div",{ref:eA})]}),(0,a.jsxs)("div",{className:"chat-input-area",children:[(0,a.jsx)("input",{ref:ez,type:"file",accept:"image/*",className:"chat-file-input",onChange:e=>{e2(e.target.files),e.currentTarget.value=""}}),(0,a.jsx)("input",{ref:e$,type:"file",accept:"video/*",className:"chat-file-input",onChange:e=>{e2(e.target.files),e.currentTarget.value=""}}),(0,a.jsx)("input",{ref:eE,type:"file",className:"chat-file-input",onChange:e=>{e2(e.target.files),e.currentTarget.value=""}}),(0,a.jsx)("button",{type:"button",className:"btn btn-circle chat-tool-btn",onClick:()=>ez.current?.click(),disabled:!K||ey,title:"发送图片",children:(0,a.jsx)(f.Image,{size:18})}),(0,a.jsx)("button",{type:"button",className:"btn btn-circle chat-tool-btn",onClick:()=>e$.current?.click(),disabled:!K||ey,title:"发送视频",children:(0,a.jsx)(x.Film,{size:18})}),(0,a.jsx)("button",{type:"button",className:"btn btn-circle chat-tool-btn",onClick:()=>eE.current?.click(),disabled:!K||ey,title:"发送文件",children:ey?(0,a.jsx)(y.Loader,{size:18,className:"ui-spinner chat-attachment-spinner"}):(0,a.jsx)(g,{size:18})}),(0,a.jsx)("input",{type:"text",className:"input input-pill",placeholder:K?"输入消息...":"请先登录后发言",value:Z,disabled:!K,onChange:e=>Q(e.target.value),onKeyDown:e=>{"Enter"===e.key&&Z.trim()&&e1()}}),(0,a.jsx)("button",{className:"btn btn-circle btn-primary send-btn",onClick:e1,disabled:!K||!Z.trim(),children:(0,a.jsx)(n.Send,{size:18})})]})]}):(0,a.jsx)(a.Fragment,{children:(0,a.jsxs)("div",{className:"ui-empty-state chat-welcome",children:[(0,a.jsx)("div",{className:"ui-empty-icon ui-empty-icon-lg welcome-icon",children:(0,a.jsx)(s.MessageSquare,{size:36})}),(0,a.jsx)("h2",{className:"ui-empty-title",children:"选择频道"}),(0,a.jsx)("p",{className:"ui-empty-desc",children:"从左侧边栏选择一个频道开始聊天,或创建一个新频道"}),(0,a.jsx)(S.default,{label:"打开频道列表"})]})}),Y&&(0,a.jsx)(w.InputModal,{title:"加入频道",placeholder:"频道ID:3-20 位字母、数字、_ 或 -",confirmText:"加入",validate:eH,onConfirm:eY,onClose:()=>ee.close(),isLoading:es,loadingText:"加入中..."}),el&&ed&&(0,a.jsx)(N.ConfirmModal,{title:"退出频道",message:`确定要退出频道 "${ed.name}" 吗?`,confirmText:ei?"退出中...":"退出",onConfirm:()=>eQ(ed.name,void 0),onClose:()=>{ec.close(),eo(null)},danger:!0}),eb&&(0,a.jsx)(C.ModalOverlay,{onClose:()=>ek(null),closeOnOverlayClick:!0,children:(0,a.jsxs)("div",{className:"confirm-modal",onClick:e=>e.stopPropagation(),children:[(0,a.jsxs)("div",{className:"modal-header",children:[(0,a.jsx)("h3",{children:"暂时没有在线种子"}),(0,a.jsx)("button",{type:"button",className:"btn btn-icon",onClick:()=>ek(null),"aria-label":"关闭",children:(0,a.jsx)(c.X,{size:18})})]}),(0,a.jsx)("p",{children:ev[eb.cid]?.message||"暂时没有发现在线种子。请确认分享者或其他下载者仍在线做种。"}),(0,a.jsxs)("div",{className:"modal-actions",children:[(0,a.jsx)("button",{type:"button",className:"btn btn-secondary",onClick:()=>ek(null),children:"取消"}),(0,a.jsx)("button",{type:"button",className:"btn btn-primary",onClick:()=>eX(eb),disabled:ev[eb.cid]?.status==="checking",children:ev[eb.cid]?.status==="checking"?"检测中...":"再次检测"})]})]})}),ef&&(0,a.jsx)(k.default,{item:ef,isBackendReady:eL,getFileDownloadUrl:T.getFileDownloadUrl,onClose:()=>ex(null)}),eu&&_&&(0,a.jsx)("div",{className:"channel-detail-overlay",onClick:()=>eh(!1),children:(0,a.jsxs)("div",{className:"channel-detail-drawer",onClick:e=>e.stopPropagation(),children:[(0,a.jsxs)("div",{className:"channel-detail-header",children:[(0,a.jsx)("h3",{children:"频道详情"}),(0,a.jsx)("button",{className:"btn btn-icon",onClick:()=>eh(!1),children:(0,a.jsx)(c.X,{size:18})})]}),(0,a.jsxs)("div",{className:"channel-detail-body",children:[(0,a.jsxs)("div",{className:"channel-detail-section channel-members-section",children:[(0,a.jsx)("div",{className:"channel-detail-label",children:(0,a.jsxs)("span",{children:["群成员 (",ew.length,")"]})}),eC&&0===ew.length?(0,a.jsx)("div",{className:"ui-empty-inline channel-members-empty",children:"正在读取成员..."}):0===ew.length?(0,a.jsx)("div",{className:"ui-empty-inline channel-members-empty",children:"暂无成员"}):(0,a.jsx)("div",{className:"channel-members-grid",children:ew.map(e=>(0,a.jsxs)("div",{className:"channel-member",children:[(0,a.jsx)("img",{className:"channel-member-avatar",src:(0,A.generateAvatar)(e.address,e.avatar),alt:"avatar"}),(0,a.jsx)("span",{className:"channel-member-name",children:e3(e.displayName,e.address)})]},e.address))})]}),(0,a.jsx)("div",{className:"channel-detail-section",children:(0,a.jsxs)("label",{className:"setting-switch",children:[(0,a.jsx)("span",{children:"显示 #地址后四位"}),(0,a.jsx)("input",{type:"checkbox",checked:eM,onChange:e=>eI(e.target.checked)})]})}),(0,a.jsxs)("div",{className:"channel-detail-section",children:[(0,a.jsxs)("div",{className:"channel-detail-label",children:[(0,a.jsx)(m,{size:14}),(0,a.jsx)("span",{children:"频道 ID"})]}),(0,a.jsx)("div",{className:"ui-meta-box channel-detail-value channel-detail-mono",children:_.name})]}),(0,a.jsxs)("div",{className:"channel-detail-section",children:[(0,a.jsxs)("div",{className:"channel-detail-label",children:[(0,a.jsx)(o.Edit2,{size:14}),(0,a.jsx)("span",{children:"备注名称"})]}),(0,a.jsx)("input",{type:"text",className:"input input-compact",placeholder:"输入备注名称",value:em,onChange:e=>ep(e.target.value),onFocus:()=>ep(_.remark||""),onBlur:()=>e6(),onKeyDown:e=>{"Enter"===e.key&&e.currentTarget.blur()},maxLength:50})]}),(0,a.jsxs)("div",{className:"channel-detail-section",children:[(0,a.jsxs)("div",{className:"channel-detail-label",children:[(0,a.jsx)(h,{size:14}),(0,a.jsx)("span",{children:"创建时间"})]}),(0,a.jsx)("div",{className:"ui-meta-box channel-detail-value",children:_.createdAt?new Date(_.createdAt).toLocaleDateString("zh-CN"):"-"})]})]}),(0,a.jsx)("div",{className:"channel-detail-footer",children:(0,a.jsx)("button",{className:"btn btn-danger btn-block",onClick:()=>{eh(!1),eo(_),ec.open()},children:"退出频道"})})]})})]})}],41222)}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.mkt-layout{flex-direction:column;min-height:100dvh;display:flex}.mkt-layout-main{flex:1}.mkt-container{width:100%;max-width:960px;padding-inline:var(--space-6);margin-inline:auto}@media (max-width:768px){.mkt-container{padding-inline:var(--space-4)}}.mkt-nav{z-index:100;border-bottom:1px solid var(--glass-border);background:var(--glass-bg-heavy);height:64px;-webkit-backdrop-filter:var(--blur-xl);align-items:center;display:flex;position:sticky;top:0}.mkt-nav-inner{width:100%;max-width:960px;padding-inline:var(--space-6);justify-content:space-between;align-items:center;margin-inline:auto;display:flex}.mkt-nav-logo{align-items:center;gap:var(--space-2);font-size:var(--font-size-lg,1.125rem);color:var(--text-primary);font-weight:700;text-decoration:none;display:flex}.mkt-nav-logo:hover{color:var(--text-primary)}.mkt-nav-cta{align-items:center;gap:var(--space-3);flex-wrap:wrap;justify-content:flex-end;display:flex}.mkt-nav-preview{color:var(--text-secondary)}.mkt-theme-toggle{border-radius:var(--radius-sm,8px);width:32px;height:32px;color:var(--text-secondary);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;transition:all .15s;display:flex}.mkt-theme-toggle:hover{color:var(--text-primary);background:var(--glass-bg-subtle)}.mkt-footer{border-top:1px solid var(--glass-border);padding-block:var(--space-8);background:var(--glass-bg-subtle)}.mkt-footer-inner{justify-content:center;align-items:center;gap:var(--space-4);flex-wrap:wrap;display:flex}.mkt-footer-links{gap:var(--space-6);display:flex}.mkt-footer-links a{font-size:var(--font-size-xs,.75rem);color:var(--text-muted)}.mkt-footer-links a:hover{color:var(--text-primary)}.mkt-footer-copy{font-size:var(--font-size-xs,.75rem);color:var(--text-muted)}@media (max-width:768px){.mkt-nav-inner{padding-inline:var(--space-4)}.mkt-nav-logo{font-size:14px}.mkt-nav-cta{gap:var(--space-2)}.mkt-nav-preview{display:none}.mkt-footer-inner{flex-direction:column;align-items:flex-start}}.mkt-landing{font-family:var(--font-sans)}.mkt-hero{text-align:center;padding:80px 24px 48px}.mkt-hero-badge{border-radius:var(--radius-full);background:var(--glass-bg-subtle);color:var(--text-secondary);border:1px solid var(--glass-border);margin-bottom:24px;padding:4px 12px;font-size:12px;font-weight:500;display:inline-block}.mkt-hero-title{letter-spacing:0;background:linear-gradient(135deg, var(--text-primary), var(--accent));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin-bottom:16px;font-size:60px;font-weight:700;line-height:1.05}.mkt-hero-desc{color:var(--text-secondary);max-width:36ch;margin:0 auto 32px;font-size:18px;line-height:1.6}.mkt-hero-cta{justify-content:center;gap:12px;margin-top:24px;display:flex}.mkt-screenshot-placeholder{background:var(--glass-bg-subtle);border:1px dashed var(--glass-border);border-radius:var(--radius-lg);aspect-ratio:16/9;color:var(--text-muted);justify-content:center;align-items:center;margin-bottom:48px;font-size:13px;display:flex}.mkt-section-desc{color:var(--text-secondary);max-width:65ch;margin-bottom:32px;font-size:18px;line-height:1.7}.mkt-features{flex-direction:column;gap:20px;display:flex}.mkt-feature{align-items:flex-start;gap:12px;display:flex}.mkt-feature .mkt-feature-icon{color:var(--accent);flex-shrink:0;margin-top:2px}.mkt-feature strong{color:var(--text-primary);font-weight:600;display:block}.mkt-feature span{color:var(--text-secondary);font-size:13px}.mkt-link{color:var(--accent);margin-top:32px;font-size:13px;text-decoration:none;display:inline-block}.mkt-link:hover{text-decoration:underline}.mkt-section-alt{background:var(--glass-bg-subtle);border-top:1px solid var(--glass-border);border-bottom:1px solid var(--glass-border)}.mkt-steps{flex-direction:column;gap:24px;margin-bottom:32px;display:flex}.mkt-step{align-items:flex-start;gap:16px;display:flex}.mkt-step-num{border-radius:var(--radius-full);background:var(--accent);color:#fff;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:13px;font-weight:700;display:flex}.mkt-step-content{flex:1}.mkt-step-content h4{color:var(--text-primary);margin-bottom:8px;font-size:15px;font-weight:600}.mkt-step-content p{color:var(--text-secondary);font-size:13px}.mkt-code{background:var(--glass-bg-subtle);border:1px solid var(--glass-border);border-radius:var(--radius-sm);font-size:13px;font-family:var(--font-mono);color:var(--text-primary);margin-top:8px;padding:12px 16px;display:block}.mkt-step-link{margin-top:8px}.mkt-step-link a{color:var(--accent);font-size:13px}.mkt-remote-grid{grid-template-columns:repeat(2,1fr);gap:16px;margin-bottom:24px;display:grid}.mkt-remote-card{background:var(--glass-bg-subtle);-webkit-backdrop-filter:var(--blur-sm);border:1px solid var(--glass-border);border-radius:var(--radius-lg);transition:all var(--transition);padding:20px}.mkt-remote-card:hover{background:var(--glass-bg);box-shadow:var(--glass-shadow);transform:translateY(-2px)}.mkt-remote-card h4{color:var(--text-primary);margin-bottom:4px;font-size:15px;font-weight:600}.mkt-remote-card p{color:var(--text-secondary);font-size:13px;line-height:1.5}.mkt-tag{color:var(--accent);background:var(--accent-soft);border-radius:var(--radius-sm);margin-top:8px;padding:4px 8px;font-size:11px;font-weight:500;display:inline-block}.mkt-cta{text-align:center}.mkt-cta-desc{color:var(--text-secondary);max-width:40ch;margin:0 auto 32px;font-size:18px;line-height:1.6}.mkt-cta-install{max-width:520px;margin:0 auto}@media (max-width:768px){.mkt-hero-title{font-size:40px}.mkt-hero-desc{font-size:16px}.mkt-remote-grid{grid-template-columns:1fr}.mkt-hero-cta{flex-direction:column;align-items:center}}.page-loading{flex-direction:column;justify-content:center;align-items:center;min-height:calc(100dvh - 144px);display:flex}.page-loading-logo{opacity:.5;background:linear-gradient(135deg, var(--accent) 25%, transparent 25%) 0 0 / 50% 50% no-repeat, linear-gradient(135deg, var(--accent) 25%, transparent 25%) 50% 0 / 50% 50% no-repeat, linear-gradient(135deg, var(--accent) 25%, transparent 25%) 0 50% / 50% 50% no-repeat, linear-gradient(135deg, var(--accent) 25%, transparent 25%) 50% 50% / 50% 50% no-repeat;background-color:var(--accent);border-radius:4px;width:48px;height:48px;animation:1.5s ease-in-out infinite pulse;-webkit-mask:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='2' y='2' width='8' height='8' rx='2' fill='black' opacity='0.4'/%3E%3Crect x='14' y='2' width='8' height='8' rx='2' fill='black' opacity='0.7'/%3E%3Crect x='2' y='14' width='8' height='8' rx='2' fill='black' opacity='0.7'/%3E%3Crect x='14' y='14' width='8' height='8' rx='2' fill='black'/%3E%3C/svg%3E") 50%/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='2' y='2' width='8' height='8' rx='2' fill='black' opacity='0.4'/%3E%3Crect x='14' y='2' width='8' height='8' rx='2' fill='black' opacity='0.7'/%3E%3Crect x='2' y='14' width='8' height='8' rx='2' fill='black' opacity='0.7'/%3E%3Crect x='14' y='14' width='8' height='8' rx='2' fill='black'/%3E%3C/svg%3E") 50%/contain no-repeat}@keyframes pulse{0%,to{opacity:.3;transform:scale(.95)}50%{opacity:.7;transform:scale(1)}}.mkt-nav-settings-btn{border-radius:var(--radius-sm,8px);width:32px;height:32px;color:var(--text-secondary);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;transition:all .15s;display:flex}.mkt-nav-settings-btn:hover{color:var(--text-primary);background:var(--glass-bg-subtle)}.mkt-settings-overlay{z-index:200;-webkit-backdrop-filter:var(--blur-xl);background:#0006;justify-content:center;align-items:center;animation:.2s ease-out fadeIn;display:flex;position:fixed;inset:0}.mkt-settings-modal{background:var(--glass-bg-heavy);-webkit-backdrop-filter:var(--blur-2xl);border:1px solid var(--glass-border);border-radius:var(--radius-xl);padding:var(--space-8);width:90%;max-width:420px;box-shadow:var(--glass-shadow-lg);animation:.25s ease-out scaleIn}.mkt-settings-modal h3{margin-bottom:var(--space-2);font-size:18px;font-weight:600}.mkt-settings-desc{color:var(--text-secondary);margin-bottom:var(--space-5);font-size:13px;line-height:1.5}.mkt-settings-actions{gap:var(--space-3);display:flex}.mkt-settings-status{margin-top:var(--space-3);text-align:center;font-size:13px}.mkt-settings-status.success{color:var(--success)}.mkt-settings-status.error{color:var(--danger)}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,89664,e=>{"use strict";let a=(0,e.i(56420).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["Check",0,a],89664)},11241,e=>{"use strict";let a=(0,e.i(56420).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);e.s(["ArrowLeft",0,a],11241)},35965,e=>{"use strict";let a=(0,e.i(56420).default)("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);e.s(["Sun",0,a],35965)},96699,e=>{"use strict";let a=(0,e.i(56420).default)("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]);e.s(["Moon",0,a],96699)},59665,5142,e=>{"use strict";var a=e.i(18050),n=e.i(71645);let t=(0,e.i(56420).default)("menu",[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]]);function i(e=!1,a={}){let[t,s]=(0,n.useState)(e),l=(0,n.useCallback)(()=>{s(e=>e||(a.onOpen?.(),!0))},[a.onOpen]),r=(0,n.useCallback)(()=>{s(e=>e?(a.onClose?.(),!1):e)},[a.onClose]);return[t,{open:l,close:r,toggle:(0,n.useCallback)(()=>{t?r():l()},[r,l,t]),set:s}]}e.s(["useDisclosure",0,i],5142);let s=(0,n.createContext)(null);e.s(["default",0,function({sidebar:e,headerTitle:l,headerRight:r,children:c}){let[d,o]=i(!1),[h,u]=(0,n.useState)(!1),p=function(e,{getInitialValueInEffect:a}={getInitialValueInEffect:!0}){let[t,i]=(0,n.useState)(a?void 0:!!("u">typeof window&&"matchMedia"in window)&&window.matchMedia(e).matches);return(0,n.useEffect)(()=>{try{if("matchMedia"in window){let a=window.matchMedia(e);i(a.matches);let n=e=>i(e.matches);return a.addEventListener("change",n),()=>{a.removeEventListener("change",n)}}}catch(e){return}},[e]),t||!1}("(max-width: 768px)"),m=()=>{p?o.open():u(!1)};return(0,a.jsx)(s.Provider,{value:{closeSidebar:o.close,openSidebar:m,isSidebarVisible:p?d:!h},children:(0,a.jsxs)("div",{className:"app-layout",children:[(0,a.jsx)("div",{className:`sidebar-overlay ${d?"visible":""}`,onClick:()=>o.close()}),(0,a.jsx)("div",{className:`sidebar ${d?"open":""} ${h?"collapsed":""}`,children:e({closeSidebar:o.close,openSidebar:m})}),(0,a.jsxs)("div",{className:"main-content",children:[(0,a.jsxs)("header",{className:"app-header",children:[(0,a.jsxs)("div",{className:"header-left",children:[(0,a.jsx)("button",{onClick:()=>{p?o.toggle():u(!h)},className:"btn btn-icon sidebar-toggle-btn","aria-label":p?"打开菜单":h?"展开侧边栏":"收起侧边栏",children:(0,a.jsx)(t,{size:16})}),l]}),(0,a.jsx)("div",{className:"header-right",children:r})]}),c]})]})})},"useAppShell",0,function(){let e=(0,n.useContext)(s);if(!e)throw Error("useAppShell must be used within AppShell");return e}],59665)},87884,e=>{"use strict";var a=e.i(26913);e.s(["channelApi",0,{getChannels(e={}){let n=new URLSearchParams;e.type&&n.set("type",e.type),e.excludeType&&n.set("excludeType",e.excludeType);let t=n.toString();return a.api.get(t?`/api/channels?${t}`:"/api/channels").json()},createChannel:(e,n="personal",t={})=>a.api.post("/api/channels",{json:{name:e,type:n,...t}}).json(),leaveChannel:e=>a.api.delete(`/api/channels/${encodeURIComponent(e)}`).json(),getChannelMessages:(e,n=100,t=0)=>a.api.get(`/api/channels/${encodeURIComponent(e)}/messages?limit=${n}&offset=${t}`).json(),sendChannelMessage:({channelName:e,content:n,author:t,authorName:i,avatar:s,attachment:l})=>a.api.post(`/api/channels/${encodeURIComponent(e)}/messages`,{json:l?{content:n,author:t,authorName:i,avatar:s,attachment:l}:{content:n,author:t,authorName:i,avatar:s}}).json(),getChannelMembers:e=>a.api.get(`/api/channels/${encodeURIComponent(e)}/members`).json(),getChannelPeers:e=>a.api.get(`/api/channels/${encodeURIComponent(e)}/peers`).json(),setChannelRemark:(e,n)=>a.api.put(`/api/channels/${encodeURIComponent(e)}/remark`,{json:{remark:n}}).json(),getFileDownloadUrl:e=>(0,a.getApiUrl)(`/api/files/${e}/download`)}])},99847,e=>{"use strict";let a=(0,e.i(56420).default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);e.s(["AlertCircle",0,a],99847)},58925,e=>{"use strict";let a=(0,e.i(56420).default)("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"}]]);e.s(["KeyRound",0,a],58925)},90165,e=>{"use strict";var a=e.i(47167),n=e.i(18050),t=e.i(71645),i=e.i(18566),s=e.i(58925),l=e.i(89664),r=e.i(99847),c=e.i(35965),d=e.i(96699),o=e.i(11241),h=e.i(59665),u=e.i(3593),p=e.i(71192),m=e.i(11470),j=e.i(26913),f=e.i(87884);let y=[{name:"node_url",required:!1,description:"Web 端未连接后端时,用于连接远程节点。"},{name:"node_invite",required:!1,description:"配合 node_url 作为远程节点邀请码。"},{name:"uid",required:!0,description:"作为用户名,密码为空,用于生成账户并自动登录。"},{name:"avatar",required:!1,description:"覆盖默认头像。"},{name:"name",required:!1,description:"覆盖默认昵称。"},{name:"locale",required:!1,description:"预留给多语言切换,当前暂不执行。"},{name:"channels[].id",required:!0,description:"频道 ID,用于自动加入频道。"},{name:"channels[].name",required:!1,description:"频道备注,不作为频道 ID。"}],x=a.default.env.NEXT_PUBLIC_CHAT_JOIN_API_BASE||"https://api.most.box";function v(e){try{return JSON.parse(e)}catch{return null}}function k(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}function b(e){return"string"==typeof e?e.trim():""}function g(){let e=(0,i.useSearchParams)(),a=(0,u.useAppStore)(e=>e.isDarkMode),g=(0,u.useAppStore)(e=>e.setIsDarkMode),C=(0,u.useAppStore)(e=>e.hasBackend),N=(0,p.useUserStore)(e=>e.setUserIdentity),[w,S]=(0,t.useState)(""),[A,M]=(0,t.useState)(""),[_,R]=(0,t.useState)(!0),[$,I]=(0,t.useState)(""),U=(0,t.useRef)("");return(0,t.useEffect)(()=>{let a=e.get("token"),n=e.get("pub");if(!a){M("缺少 token 参数"),R(!1);return}if(!n){M("缺少 pub 参数"),R(!1);return}if(null===C)return void I("正在检测后端连接...");let t=`${a}:${n}`;async function i(e){var a;if(!C&&e.node_url){if(I("正在连接远程节点..."),!(await (0,j.checkBackendConnectionTarget)({url:e.node_url,invite:e.node_invite||""})).ok)throw Error("远程节点连接失败");(0,j.configureBackend)({url:e.node_url,invite:e.node_invite||""}),u.useAppStore.setState({hasBackend:!0})}else if(!C)throw Error("未连接后端,邀请中也没有 node_url");I("正在登录邀请账号...");let n=(0,m.createLoginIdentity)(e.uid,"");for(let a of(N({...n,displayName:e.name||n.displayName,avatar:e.avatar}),I("正在加入频道..."),e.channels)){await f.channelApi.createChannel(a.id,"public",{displayName:e.name||n.displayName,avatar:e.avatar});let t=String(a.name||"").trim().slice(0,50);t&&await f.channelApi.setChannelRemark(a.id,t)}let t=e.channels[0];I("加入成功,正在打开频道..."),window.location.href=(a=t.id,`/chat?channel=${encodeURIComponent(a)}`)}async function s(){try{I("正在解密邀请...");let e=await fetch(`${x}/api/chat.join.decrypt`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:a,pub:n})}),t=await e.text(),s=v(t);if(e.ok){S(null===s?t:JSON.stringify(s,null,2));let e=function(e){let a="string"!=typeof e?e:v(e);if(!k(a))return null;let n=b(a.uid),t=(Array.isArray(a.channels)?a.channels:[]).filter(k).map(e=>({id:b(e.id),name:b(e.name)||void 0})).filter(e=>e.id);return n&&0!==t.length?{node_url:b(a.node_url)||void 0,node_invite:b(a.node_invite)||void 0,locale:b(a.locale)||void 0,uid:n,avatar:b(a.avatar)||void 0,name:b(a.name)||void 0,channels:t}:null}(s);if(!e)return void M("邀请内容缺少 uid 或 channels[].id");await i(e)}else M(function(e,a){if(a&&"object"==typeof a&&"error"in a){let e=a.error;if("string"==typeof e)return e}return e||"解密失败"}(t,s))}catch(e){M(`请求出错: ${e instanceof Error?e.message:String(e)}`)}finally{R(!1)}}U.current!==t&&(U.current=t,s())},[C,e,N]),(0,n.jsx)(h.default,{sidebar:()=>(0,n.jsxs)("div",{className:"sidebar-header sidebar-header-link",onClick:()=>window.location.href="/chat",children:[(0,n.jsx)(o.ArrowLeft,{size:18}),(0,n.jsx)("h1",{children:"MOST PEOPLE"})]}),headerTitle:(0,n.jsx)("h2",{className:"header-title",children:"加入频道"}),headerRight:(0,n.jsx)("button",{className:"btn btn-icon",onClick:()=>g(!a),title:"切换主题",children:a?(0,n.jsx)(c.Sun,{size:16}):(0,n.jsx)(d.Moon,{size:16})}),children:(0,n.jsx)("div",{className:"chat-join-container",children:(0,n.jsxs)("div",{className:"chat-join-panel",children:[_?(0,n.jsxs)("div",{className:"chat-join-loading",children:[(0,n.jsx)(s.KeyRound,{size:32}),(0,n.jsx)("p",{children:$||"正在解密..."})]}):A?(0,n.jsxs)("div",{className:"chat-join-error",children:[(0,n.jsx)(r.AlertCircle,{size:32}),(0,n.jsx)("p",{children:A}),$&&(0,n.jsx)("p",{className:"chat-join-status",children:$}),w&&(0,n.jsx)("pre",{className:"chat-join-result",children:w})]}):(0,n.jsxs)("div",{className:"chat-join-success",children:[(0,n.jsx)(l.Check,{size:32}),(0,n.jsx)("p",{children:$||"解密成功"}),(0,n.jsx)("pre",{className:"chat-join-result",children:w})]}),(0,n.jsxs)("section",{className:"chat-join-spec","aria-labelledby":"chat-join-spec-title",children:[(0,n.jsxs)("div",{className:"chat-join-helper-title",children:[(0,n.jsx)(s.KeyRound,{size:18}),(0,n.jsx)("h3",{id:"chat-join-spec-title",children:"支持字段"})]}),(0,n.jsx)("div",{className:"chat-join-field-list",children:y.map(e=>(0,n.jsxs)("div",{className:"chat-join-field",children:[(0,n.jsxs)("div",{className:"chat-join-field-meta",children:[(0,n.jsx)("code",{className:"chat-join-field-name",children:e.name}),(0,n.jsx)("span",{children:e.required?"必填":"可选"})]}),(0,n.jsx)("p",{children:e.description})]},e.name))})]}),(0,n.jsxs)("section",{className:"chat-join-helper","aria-labelledby":"ea-test-title",children:[(0,n.jsxs)("div",{className:"chat-join-helper-title",children:[(0,n.jsx)(s.KeyRound,{size:18}),(0,n.jsx)("h3",{id:"ea-test-title",children:"测试公钥"})]}),(0,n.jsx)("code",{className:"ui-code-box chat-join-public-key",children:"0x955fe80bdb8312165471fcacd6a8f83df88a770dda6f38657ca4e62ec28d5b54"}),(0,n.jsx)("a",{className:"btn",href:"/web3/#EA",target:"_blank",children:"前往 Web3 工具箱"})]})]})})})}e.s(["default",0,function(){return(0,n.jsx)(t.Suspense,{children:(0,n.jsx)(g,{})})}],90165)}]);
|