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 +1 @@
|
|
|
1
|
-
.portal-page{min-height:calc(100dvh - 144px)}.portal-hero{text-align:center;padding:64px 24px 32px}.portal-hero-title{letter-spacing:-.03em;background:linear-gradient(135deg, var(--text-primary), var(--accent));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin-bottom:8px;font-size:48px;font-weight:700;line-height:1.1}.portal-hero-subtitle{color:var(--text-secondary);font-size:18px}.portal-desktop-callout{text-align:left;background:var(--glass-bg-heavy);border-radius:var(--radius-lg);width:min(100%,720px);box-shadow:var(--glass-shadow);border:1px solid #ff950059;justify-content:space-between;align-items:center;gap:18px;margin:28px auto 0;padding:18px 20px;display:flex}.portal-desktop-callout div{flex-direction:column;gap:4px;min-width:0;display:flex}.portal-desktop-callout strong{color:var(--text-primary);font-size:16px;font-weight:700}.portal-desktop-callout span{color:var(--text-secondary);font-size:14px;line-height:1.6}.portal-desktop-callout .btn{flex-shrink:0}@media (max-width:768px){.portal-hero{padding:40px 24px 24px}.portal-hero-title{font-size:36px}.portal-hero-subtitle{font-size:16px}.portal-desktop-callout{flex-direction:column;align-items:stretch;padding:16px}.portal-desktop-callout .btn{width:100%}}.portal-cards-section{padding-bottom:32px}.portal-cards{grid-template-columns:repeat(5,minmax(0,1fr));gap:16px;display:grid}@media (max-width:1100px){.portal-cards{grid-template-columns:repeat(3,1fr)}}@media (max-width:768px){.portal-cards{grid-template-columns:1fr}}.portal-card{text-align:center;background:var(--glass-bg-subtle);-webkit-backdrop-filter:var(--blur-sm);border:1px solid var(--glass-border);border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition);border:2px solid #0000;flex-direction:column;align-items:center;gap:6px;padding:28px 20px;display:flex;position:relative}.portal-card:hover{background:var(--glass-bg);box-shadow:var(--glass-shadow);transform:translateY(-2px)}.portal-card.active{background:var(--glass-bg);border-color:var(--accent);box-shadow:0 4px 24px #5e6ad226}.portal-card-open-btn{opacity:.5;position:absolute;top:12px;right:12px}.portal-card:hover .portal-card-open-btn,.portal-card.active .portal-card-open-btn{opacity:1}.portal-card-icon{color:var(--accent);margin-bottom:4px}.portal-card-title{color:var(--text-primary);font-size:17px;font-weight:600}.portal-card-subtitle{color:var(--text-secondary);font-size:13px}.portal-node-actions{flex-wrap:wrap;justify-content:center;gap:12px;margin-top:18px;display:flex}.portal-node-actions .btn{min-width:128px}.portal-card-status{gap:5px;min-height:auto;margin-top:6px;
|
|
1
|
+
.portal-page{min-height:calc(100dvh - 144px)}.portal-hero{text-align:center;padding:64px 24px 32px}.portal-hero-title{letter-spacing:-.03em;background:linear-gradient(135deg, var(--text-primary), var(--accent));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin-bottom:8px;font-size:48px;font-weight:700;line-height:1.1}.portal-hero-subtitle{color:var(--text-secondary);font-size:18px}.portal-desktop-callout{text-align:left;background:var(--glass-bg-heavy);border-radius:var(--radius-lg);width:min(100%,720px);box-shadow:var(--glass-shadow);border:1px solid #ff950059;justify-content:space-between;align-items:center;gap:18px;margin:28px auto 0;padding:18px 20px;display:flex}.portal-desktop-callout div{flex-direction:column;gap:4px;min-width:0;display:flex}.portal-desktop-callout strong{color:var(--text-primary);font-size:16px;font-weight:700}.portal-desktop-callout span{color:var(--text-secondary);font-size:14px;line-height:1.6}.portal-desktop-callout .btn{flex-shrink:0}@media (max-width:768px){.portal-hero{padding:40px 24px 24px}.portal-hero-title{font-size:36px}.portal-hero-subtitle{font-size:16px}.portal-desktop-callout{flex-direction:column;align-items:stretch;padding:16px}.portal-desktop-callout .btn{width:100%}}.portal-cards-section{padding-bottom:32px}.portal-cards{grid-template-columns:repeat(5,minmax(0,1fr));gap:16px;display:grid}@media (max-width:1100px){.portal-cards{grid-template-columns:repeat(3,1fr)}}@media (max-width:768px){.portal-cards{grid-template-columns:1fr}}.portal-card{text-align:center;background:var(--glass-bg-subtle);-webkit-backdrop-filter:var(--blur-sm);border:1px solid var(--glass-border);border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition);border:2px solid #0000;flex-direction:column;align-items:center;gap:6px;padding:28px 20px;display:flex;position:relative}.portal-card:hover{background:var(--glass-bg);box-shadow:var(--glass-shadow);transform:translateY(-2px)}.portal-card.active{background:var(--glass-bg);border-color:var(--accent);box-shadow:0 4px 24px #5e6ad226}.portal-card-open-btn{opacity:.5;position:absolute;top:12px;right:12px}.portal-card:hover .portal-card-open-btn,.portal-card.active .portal-card-open-btn{opacity:1}.portal-card-icon{color:var(--accent);margin-bottom:4px}.portal-card-title{color:var(--text-primary);font-size:17px;font-weight:600}.portal-card-subtitle{color:var(--text-secondary);font-size:13px}.portal-node-actions{flex-wrap:wrap;justify-content:center;gap:12px;margin-top:18px;display:flex}.portal-node-actions .btn{min-width:128px}.portal-card-status{gap:5px;min-height:auto;margin-top:6px;font-size:11px}.portal-marketing{padding-bottom:64px}.portal-marketing-inner{background:var(--glass-bg-subtle);-webkit-backdrop-filter:var(--blur-sm);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:40px;animation:.3s ease-out fadeInUp}@media (max-width:768px){.portal-marketing-inner{padding:24px}}.portal-marketing-header h2{margin-bottom:12px;font-size:28px;font-weight:600}.portal-marketing-header p{color:var(--text-secondary);max-width:60ch;font-size:16px;line-height:1.7}@media (max-width:768px){.portal-marketing-header h2{font-size:22px}.portal-marketing-header p{font-size:14px}}.portal-marketing-features{grid-template-columns:repeat(2,1fr);gap:12px;margin-top:28px;display:grid}@media (max-width:768px){.portal-marketing-features{grid-template-columns:1fr}}.portal-feature-item{color:var(--text-secondary);align-items:flex-start;gap:10px;font-size:14px;line-height:1.5;display:flex}.portal-feature-icon{color:var(--accent);flex-shrink:0;margin-top:1px}.portal-marketing-steps{border-top:1px solid var(--glass-border);flex-direction:column;gap:16px;margin-top:32px;padding-top:32px;display:flex}.portal-step{align-items:flex-start;gap:14px;display:flex}.portal-step-num{background:var(--accent);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:13px;font-weight:700;display:flex}.portal-step-content strong{color:var(--text-primary);font-size:15px;font-weight:600}.portal-step-content p{color:var(--text-secondary);margin-top:2px;font-size:13px}.portal-step-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:10px 14px;display:block}.portal-step-link{margin-top:6px}.portal-step-link a{color:var(--accent);align-items:center;gap:4px;font-size:13px;display:inline-flex}.portal-actions{border-top:1px solid var(--glass-border);flex-wrap:wrap;gap:12px;margin-top:32px;padding-top:32px;display:flex}.portal-actions .mkt-btn-primary,.portal-actions .mkt-btn-secondary{align-items:center;gap:6px;display:inline-flex}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,95057,(e,t,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0});var r={formatUrl:function(){return i},formatWithValidation:function(){return o},urlObjectKeys:function(){return c}};for(var s in r)Object.defineProperty(a,s,{enumerable:!0,get:r[s]});let n=e.r(90809)._(e.r(98183)),l=/https?|ftp|gopher|file/;function i(e){let{auth:t,hostname:a}=e,r=e.protocol||"",s=e.pathname||"",i=e.hash||"",c=e.query||"",o=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?o=t+e.host:a&&(o=t+(~a.indexOf(":")?`[${a}]`:a),e.port&&(o+=":"+e.port)),c&&"object"==typeof c&&(c=String(n.urlQueryToSearchParams(c)));let d=e.search||c&&`?${c}`||"";return r&&!r.endsWith(":")&&(r+=":"),e.slashes||(!r||l.test(r))&&!1!==o?(o="//"+(o||""),s&&"/"!==s[0]&&(s="/"+s)):o||(o=""),i&&"#"!==i[0]&&(i="#"+i),d&&"?"!==d[0]&&(d="?"+d),s=s.replace(/[?#]/g,encodeURIComponent),d=d.replace("#","%23"),`${r}${o}${s}${d}${i}`}let c=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function o(e){return i(e)}},18581,(e,t,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),Object.defineProperty(a,"useMergedRef",{enumerable:!0,get:function(){return s}});let r=e.r(71645);function s(e,t){let a=(0,r.useRef)(null),s=(0,r.useRef)(null);return(0,r.useCallback)(r=>{if(null===r){let e=a.current;e&&(a.current=null,e());let t=s.current;t&&(s.current=null,t())}else e&&(a.current=n(e,r)),t&&(s.current=n(t,r))},[e,t])}function n(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let a=e(t);return"function"==typeof a?a:()=>e(null)}}("function"==typeof a.default||"object"==typeof a.default&&null!==a.default)&&void 0===a.default.__esModule&&(Object.defineProperty(a.default,"__esModule",{value:!0}),Object.assign(a.default,a),t.exports=a.default)},73668,(e,t,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),Object.defineProperty(a,"isLocalURL",{enumerable:!0,get:function(){return n}});let r=e.r(18967),s=e.r(52817);function n(e){if(!(0,r.isAbsoluteUrl)(e))return!0;try{let t=(0,r.getLocationOrigin)(),a=new URL(e,t);return a.origin===t&&(0,s.hasBasePath)(a.pathname)}catch(e){return!1}}},84508,(e,t,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),Object.defineProperty(a,"errorOnce",{enumerable:!0,get:function(){return r}});let r=e=>{}},22016,(e,t,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0});var r={default:function(){return y},useLinkStatus:function(){return j}};for(var s in r)Object.defineProperty(a,s,{enumerable:!0,get:r[s]});let n=e.r(90809),l=e.r(18050),i=n._(e.r(71645)),c=e.r(95057),o=e.r(8372),d=e.r(18581),u=e.r(18967),h=e.r(5550);e.r(33525);let p=e.r(88540),f=e.r(91949),m=e.r(73668),x=e.r(9396);function y(t){var a,r;let s,n,y,[j,v]=(0,i.useOptimistic)(f.IDLE_LINK_STATUS),b=(0,i.useRef)(null),{href:g,as:M,children:N,prefetch:P=null,passHref:w,replace:S,shallow:E,scroll:O,onClick:_,onMouseEnter:C,onTouchStart:z,legacyBehavior:L=!1,onNavigate:T,transitionTypes:B,ref:q,unstable_dynamicOnHover:I,...A}=t;s=N,L&&("string"==typeof s||"number"==typeof s)&&(s=(0,l.jsx)("a",{children:s}));let R=i.default.useContext(o.AppRouterContext),W=!1!==P,H=!1!==P?null===(r=P)||"auto"===r?x.FetchStrategy.PPR:x.FetchStrategy.Full:x.FetchStrategy.PPR,D="string"==typeof(a=M||g)?a:(0,c.formatUrl)(a);if(L){if(s?.$$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});n=i.default.Children.only(s)}let F=L?n&&"object"==typeof n&&n.ref:q,U=i.default.useCallback(e=>(null!==R&&(b.current=(0,f.mountLinkInstance)(e,D,R,H,W,v)),()=>{b.current&&((0,f.unmountLinkForCurrentNavigation)(b.current),b.current=null),(0,f.unmountPrefetchableInstance)(e)}),[W,D,R,H,v]),$={ref:(0,d.useMergedRef)(U,F),onClick(t){L||"function"!=typeof _||_(t),L&&n.props&&"function"==typeof n.props.onClick&&n.props.onClick(t),!R||t.defaultPrevented||function(t,a,r,s,n,l,c){if("u">typeof window){let o,{nodeName:d}=t.currentTarget;if("A"===d.toUpperCase()&&((o=t.currentTarget.getAttribute("target"))&&"_self"!==o||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,m.isLocalURL)(a)){s&&(t.preventDefault(),location.replace(a));return}if(t.preventDefault(),l){let e=!1;if(l({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:u}=e.r(99781);i.default.startTransition(()=>{u(a,s?"replace":"push",!1===n?p.ScrollBehavior.NoScroll:p.ScrollBehavior.Default,r.current,c)})}}(t,D,b,S,O,T,B)},onMouseEnter(e){L||"function"!=typeof C||C(e),L&&n.props&&"function"==typeof n.props.onMouseEnter&&n.props.onMouseEnter(e),R&&W&&(0,f.onNavigationIntent)(e.currentTarget,!0===I)},onTouchStart:function(e){L||"function"!=typeof z||z(e),L&&n.props&&"function"==typeof n.props.onTouchStart&&n.props.onTouchStart(e),R&&W&&(0,f.onNavigationIntent)(e.currentTarget,!0===I)}};return(0,u.isAbsoluteUrl)(D)?$.href=D:L&&!w&&("a"!==n.type||"href"in n.props)||($.href=(0,h.addBasePath)(D)),y=L?i.default.cloneElement(n,$):(0,l.jsx)("a",{...A,...$,children:s}),(0,l.jsx)(k.Provider,{value:j,children:y})}e.r(84508);let k=(0,i.createContext)(f.IDLE_LINK_STATUS),j=()=>(0,i.useContext)(k);("function"==typeof a.default||"object"==typeof a.default&&null!==a.default)&&void 0===a.default.__esModule&&(Object.defineProperty(a.default,"__esModule",{value:!0}),Object.assign(a.default,a),t.exports=a.default)},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)},50285,e=>{"use strict";let t=(0,e.i(56420).default)("hard-drive",[["path",{d:"M10 16h.01",key:"1bzywj"}],["path",{d:"M2.212 11.577a2 2 0 0 0-.212.896V18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5.527a2 2 0 0 0-.212-.896L18.55 5.11A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"18tbho"}],["path",{d:"M21.946 12.013H2.054",key:"zqlbp7"}],["path",{d:"M6 16h.01",key:"1pmjb7"}]]);e.s(["HardDrive",0,t],50285)},10566,e=>{"use strict";let t=(0,e.i(56420).default)("notebook-pen",[["path",{d:"M13.4 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-7.4",key:"re6nr2"}],["path",{d:"M2 6h4",key:"aawbzj"}],["path",{d:"M2 10h4",key:"l0bgd4"}],["path",{d:"M2 14h4",key:"1gsvsf"}],["path",{d:"M2 18h4",key:"1bu2t1"}],["path",{d:"M21.378 5.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z",key:"pqwjuv"}]]);e.s(["NotebookPen",0,t],10566)},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)},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)},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)},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)},68590,58501,e=>{"use strict";let t=(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,t],68590);var a=e.i(18050);e.s(["LogoIcon",0,function({size:e=24}){return(0,a.jsxs)("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,a.jsx)("rect",{x:"2",y:"2",width:"8",height:"8",rx:"2",fill:"var(--accent)",opacity:"0.4"}),(0,a.jsx)("rect",{x:"14",y:"2",width:"8",height:"8",rx:"2",fill:"var(--accent)",opacity:"0.7"}),(0,a.jsx)("rect",{x:"2",y:"14",width:"8",height:"8",rx:"2",fill:"var(--accent)",opacity:"0.7"}),(0,a.jsx)("rect",{x:"14",y:"14",width:"8",height:"8",rx:"2",fill:"var(--accent)"})]})}],58501)},42724,e=>{"use strict";var t=e.i(18050),a=e.i(71645),r=e.i(22016),s=e.i(62368),n=e.i(96699),l=e.i(35965),i=e.i(58501);e.s(["Nav",0,function(){let[e,c]=(0,a.useState)(!1);return(0,a.useEffect)(()=>{let e=localStorage.getItem("theme"),t=window.matchMedia("(prefers-color-scheme: dark)").matches;("dark"===e||!e&&t)&&c(!0)},[]),(0,a.useEffect)(()=>{document.documentElement.setAttribute("data-theme",e?"dark":"light"),localStorage.setItem("theme",e?"dark":"light")},[e]),(0,t.jsx)(t.Fragment,{children:(0,t.jsx)("nav",{className:"mkt-nav",children:(0,t.jsxs)("div",{className:"mkt-nav-inner",children:[(0,t.jsxs)(r.default,{href:"/",className:"mkt-nav-logo",children:[(0,t.jsx)(i.LogoIcon,{}),"MOST PEOPLE"]}),(0,t.jsxs)("div",{className:"mkt-nav-cta",children:[(0,t.jsx)("button",{className:"mkt-theme-toggle",onClick:()=>c(!e),"aria-label":"切换主题",children:e?(0,t.jsx)(l.Sun,{size:16}):(0,t.jsx)(n.Moon,{size:16})}),(0,t.jsxs)(r.default,{href:"/download/",className:"btn btn-primary mkt-nav-preview",children:[(0,t.jsx)(s.Download,{size:16}),"下载客户端"]}),(0,t.jsx)(r.default,{href:"/app/",className:"btn btn-secondary",children:"打开 Web"})]})]})})})}])},56691,e=>{"use strict";var t=e.i(18050),a=e.i(22016);let r=[{href:"/",label:"关于"},{href:"/ping/",label:"网络"},{href:"https://github.com/most-people/most",label:"GitHub",external:!0}];e.s(["Footer",0,function(){return(0,t.jsx)("footer",{className:"mkt-footer",children:(0,t.jsx)("div",{className:"mkt-container",children:(0,t.jsxs)("div",{className:"mkt-footer-inner",children:[(0,t.jsx)("div",{className:"mkt-footer-links",children:r.map(e=>(0,t.jsx)(a.default,{href:e.href,...e.external?{target:"_blank",rel:"noopener noreferrer"}:{},children:e.label},e.href))}),(0,t.jsxs)("span",{className:"mkt-footer-copy",children:["© ",new Date().getFullYear()," MOST PEOPLE · MIT License"]})]})})})}])},40983,e=>{"use strict";var t=e.i(18050),a=e.i(42724),r=e.i(56691);e.s(["MarketingLayout",0,function({children:e}){return(0,t.jsxs)("div",{className:"mkt-layout",children:[(0,t.jsx)(a.Nav,{}),(0,t.jsx)("main",{className:"mkt-layout-main",children:e}),(0,t.jsx)(r.Footer,{})]})}])},31713,e=>{"use strict";var t=e.i(18050),a=e.i(71645),r=e.i(22016),s=e.i(56420);let n=(0,s.default)("folder-open",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);var l=e.i(68590),i=e.i(10566),c=e.i(70904);let o=(0,s.default)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]),d=(0,s.default)("arrow-up-right",[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]]);var u=e.i(89664),h=e.i(82022),p=e.i(62368),f=e.i(41220),m=e.i(50285);let x=(0,s.default)("gamepad-2",[["line",{x1:"6",x2:"10",y1:"11",y2:"11",key:"1gktln"}],["line",{x1:"8",x2:"8",y1:"9",y2:"13",key:"qnk9ow"}],["line",{x1:"15",x2:"15.01",y1:"12",y2:"12",key:"krot7o"}],["line",{x1:"18",x2:"18.01",y1:"10",y2:"10",key:"1lcuu1"}],["path",{d:"M17.32 5H6.68a4 4 0 0 0-3.978 3.59c-.006.052-.01.101-.017.152C2.604 9.416 2 14.456 2 16a3 3 0 0 0 3 3c1 0 1.5-.5 2-1l1.414-1.414A2 2 0 0 1 9.828 16h4.344a2 2 0 0 1 1.414.586L17 18c.5.5 1 1 2 1a3 3 0 0 0 3-3c0-1.545-.604-6.584-.685-7.258-.007-.05-.011-.1-.017-.151A4 4 0 0 0 17.32 5z",key:"mfqc10"}]]);var y=e.i(3593);let k=[{id:"app",title:"MostBox",subtitle:"P2P 文件分享",icon:(0,t.jsx)(n,{size:28}),path:"/app/",requiresBackend:!0,hero:"P2P 文件分享,无需注册",desc:"基于 Hyperswarm 的去中心化文件传输,让文件分享回归点对点。MostBox 不是云盘;链接来自 CID,可用性来自当前在线种子。当前 MVP 优先使用桌面客户端。",features:["无需云端账号,使用本地身份隔离数据","Hyperswarm P2P 直连传输","GB 级大文件流式处理","相同文件 = 相同 CID,链接可反复校验","下载完成后默认继续做种","相比微信、QQ 或网盘,不依赖中心化账号和云端托管","Web 端只连接已有节点,桌面端提供完整 P2P 能力","MIT 开源,自托管,数据完全自主掌控"],steps:[{num:"1",title:"下载客户端",desc:"支持 Windows、macOS 和 Linux,桌面端提供完整的 P2P 能力。",link:"/download",linkText:"前往下载页"},{num:"2",title:"安装并运行",desc:"安装后打开应用,无需单独安装 Node.js。"},{num:"3",title:"开始分享",desc:"发布文件生成 most:// 链接,朋友下载校验通过后也会成为新的种子。"}]},{id:"chat",title:"P2P 聊天",subtitle:"频道加密通讯",icon:(0,t.jsx)(l.MessageSquare,{size:28}),path:"/chat/",requiresBackend:!0,hero:"去中心化频道聊天",desc:"基于 Hypercore 的 P2P 加密即时通讯。创建频道,邀请朋友,端到端加密,无需服务器中转。",features:["P2P 加密频道消息","本地登录身份保护消息署名","消息通过 Hyperswarm 网络同步","离线消息自动同步","无需中心化账号注册"],steps:[{num:"1",title:"下载客户端",desc:"支持 Windows、macOS 和 Linux。",link:"/download",linkText:"前往下载页"},{num:"2",title:"创建频道",desc:"输入任意频道名即可加入或创建。"},{num:"3",title:"开始聊天",desc:"发送消息,P2P 网络自动同步给所有在线节点。"}]},{id:"note",title:"笔记",subtitle:"加密云备份",icon:(0,t.jsx)(i.NotebookPen,{size:28}),path:"/note/",requiresBackend:!1,hero:"Web3 加密笔记",desc:"使用本地 Web3 密钥加密 Markdown 笔记,可在浏览器本地保存并按需同步到云端备份。",features:["Markdown 块编辑器","公开 / 私密笔记切换","文件夹、搜索和移动","Web3 登录态加密","云端备份与恢复","独立于 P2P 文件分享"],steps:[{num:"1",title:"生成 Web3 账号",desc:"用用户名和密码派生本地密钥。"},{num:"2",title:"创建笔记",desc:"写 Markdown,按需切换为私密内容。"},{num:"3",title:"备份恢复",desc:"登录后可把加密笔记同步到云端。"}]},{id:"gandengyan",title:"游戏",subtitle:"P2P 牌桌",icon:(0,t.jsx)(x,{size:28}),path:"/game/gandengyan/",requiresBackend:!0,hero:"常驻节点里的在线牌桌",desc:"把干瞪眼作为 MostBox 的独立页面接入,复用现有频道消息、Web3 登录身份和桌面端常驻入口。",features:["使用 MostBox 本地账号进入房间","复用 /chat/ 的频道后端,不新增游戏后端接口","房间链接可直接分享到群组","支持 1-2 副牌、2-6 人和人机陪测","游戏规则、频道事件和页面样式拆分维护"],steps:[{num:"1",title:"登录账号",desc:"使用现有 MostBox Web3 本地账号作为牌桌身份。"},{num:"2",title:"创建房间",desc:"创建房间后复制链接,发给朋友加入。"},{num:"3",title:"开始调试",desc:"可先用人机补位测试出牌、计分和房间同步。"}]},{id:"web3",title:"Web3",subtitle:"账户工具箱",icon:(0,t.jsx)(c.Wallet,{size:28}),path:"/web3/",requiresBackend:!1,hero:"确定性密钥派生工具箱",desc:"纯前端运行的 Web3 账户工具。输入用户名和密码,即可生成 Ed25519 / x25519 密钥对、助记词、以太坊地址,支持 PEM 导出和地址派生。",features:["纯前端运行,无需后端","Ed25519 / x25519 密钥对生成","BIP-39 助记词派生","以太坊地址与私钥导出","PEM 格式密钥导出","二维码展示地址与助记词"],steps:[{num:"1",title:"输入用户名",desc:"用户名 + 密码(可选)作为种子。"},{num:"2",title:"查看密钥",desc:"即时生成 Ed25519、x25519 公钥与 IPNS ID。"},{num:"3",title:"导出使用",desc:"复制地址、导出 PEM、派生子地址。"}]}];function j(){let e=(0,y.useAppStore)(e=>e.hasBackend),s=(0,y.useAppStore)(e=>e.openConnectModal),[n,l]=(0,a.useState)("app"),i=k.find(e=>e.id===n)||k[0];return(0,t.jsxs)("div",{className:"portal-page",children:[(0,t.jsx)("section",{className:"portal-hero",children:(0,t.jsxs)("div",{className:"mkt-container",children:[(0,t.jsx)("h1",{className:"portal-hero-title",children:"MOST PEOPLE"}),(0,t.jsx)("p",{className:"portal-hero-subtitle",children:"去中心化 P2P 工具箱"})]})}),(0,t.jsx)("section",{className:"portal-cards-section",children:(0,t.jsxs)("div",{className:"mkt-container",children:[(0,t.jsx)("div",{className:"portal-cards",children:k.map(a=>{let s=n===a.id,i=a.requiresBackend,c=i?!0===e?"connected":!1===e?"disconnected":"checking":"none";return(0,t.jsxs)("button",{className:`portal-card ${s?"active":""}`,onClick:()=>l(a.id),children:[(0,t.jsx)(r.default,{href:a.path,className:"btn btn-icon portal-card-open-btn",onClick:e=>e.stopPropagation(),title:`打开${a.title}`,children:(0,t.jsx)(d,{size:16})}),(0,t.jsx)("div",{className:"portal-card-icon",children:a.icon}),(0,t.jsx)("div",{className:"portal-card-title",children:a.title}),(0,t.jsx)("div",{className:"portal-card-subtitle",children:a.subtitle}),i?(0,t.jsxs)("div",{className:`ui-badge portal-card-status ${c}`,children:["checking"===c&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"status-dot checking"}),"检测中"]}),"connected"===c&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"status-dot connected"}),"已连接"]}),"disconnected"===c&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"status-dot disconnected"}),"需连接"]})]}):(0,t.jsxs)("div",{className:"ui-badge portal-card-status ready",children:[(0,t.jsx)("span",{className:"status-dot ready"}),"已就绪"]})]},a.id)})}),(0,t.jsxs)("div",{className:"portal-node-actions","aria-label":"节点入口",children:[(0,t.jsxs)("button",{onClick:s,className:"btn btn-secondary",children:[(0,t.jsx)(f.Server,{size:16}),"Web 连接节点"]}),(0,t.jsxs)(r.default,{href:"/admin",className:"btn btn-secondary",children:[(0,t.jsx)(m.HardDrive,{size:16}),"节点管理"]})]})]})}),(0,t.jsx)("section",{className:"portal-marketing",children:(0,t.jsx)("div",{className:"mkt-container",children:(0,t.jsx)("div",{className:"portal-marketing-inner",children:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"portal-marketing-header",children:[(0,t.jsx)("h2",{children:i.hero}),(0,t.jsx)("p",{children:i.desc})]}),(0,t.jsx)("div",{className:"portal-marketing-features",children:i.features.map((e,a)=>(0,t.jsxs)("div",{className:"portal-feature-item",children:[(0,t.jsx)("span",{className:"portal-feature-icon",children:(0,t.jsx)(u.Check,{size:14,strokeWidth:3})}),(0,t.jsx)("span",{children:e})]},a))}),(0,t.jsx)("div",{className:"portal-marketing-steps",children:i.steps.map(e=>(0,t.jsxs)("div",{className:"portal-step",children:[(0,t.jsx)("span",{className:"portal-step-num",children:e.num}),(0,t.jsxs)("div",{className:"portal-step-content",children:[(0,t.jsx)("strong",{children:e.title}),(0,t.jsx)("p",{children:e.desc}),e.code&&(0,t.jsx)("code",{className:"portal-step-code",children:e.code}),e.link&&(0,t.jsx)("p",{className:"portal-step-link",children:(0,t.jsxs)("a",{href:e.link,target:"_blank",rel:"noopener noreferrer",children:[e.linkText," ",(0,t.jsx)(h.ExternalLink,{size:12})]})})]})]},e.num))}),(0,t.jsxs)("div",{className:"portal-actions",children:[(0,t.jsxs)(r.default,{href:i.path,className:"btn btn-primary",children:["进入 ",i.title,(0,t.jsx)(o,{size:16})]}),i.requiresBackend&&!1===e&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("button",{onClick:s,className:"btn btn-secondary",children:[(0,t.jsx)(f.Server,{size:16}),"Web 连接节点"]}),(0,t.jsxs)(r.default,{href:"/download",className:"btn btn-secondary",children:[(0,t.jsx)(p.Download,{size:16}),"下载客户端"]})]})]})]})})})})]})}var v=e.i(40983);e.s(["default",0,function(){return(0,t.jsx)(v.MarketingLayout,{children:(0,t.jsx)(j,{})})}],31713)}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,2305,e=>{e.v({accountLine:"page-module__ergy6W__accountLine",actionGrid:"page-module__ergy6W__actionGrid",black:"page-module__ergy6W__black",board:"page-module__ergy6W__board",card:"page-module__ergy6W__card",cardBack:"page-module__ergy6W__cardBack",cardMark:"page-module__ergy6W__cardMark",compareBox:"page-module__ergy6W__compareBox",compareCards:"page-module__ergy6W__compareCards",compareLabel:"page-module__ergy6W__compareLabel",compareName:"page-module__ergy6W__compareName",compareOverlay:"page-module__ergy6W__compareOverlay",comparePlayers:"page-module__ergy6W__comparePlayers",compareResult:"page-module__ergy6W__compareResult",compareSide:"page-module__ergy6W__compareSide",compareTitle:"page-module__ergy6W__compareTitle",compareVs:"page-module__ergy6W__compareVs",compareWinner:"page-module__ergy6W__compareWinner",entry:"page-module__ergy6W__entry",entryBrand:"page-module__ergy6W__entryBrand",entryPanel:"page-module__ergy6W__entryPanel",finishBanner:"page-module__ergy6W__finishBanner",finishBannerIcon:"page-module__ergy6W__finishBannerIcon",hand:"page-module__ergy6W__hand",handLabel:"page-module__ergy6W__handLabel",headerActions:"page-module__ergy6W__headerActions",joinForm:"page-module__ergy6W__joinForm",muted:"page-module__ergy6W__muted",page:"page-module__ergy6W__page",panel:"page-module__ergy6W__panel",panelSection:"page-module__ergy6W__panelSection",panelTitle:"page-module__ergy6W__panelTitle",raiseRow:"page-module__ergy6W__raiseRow",red:"page-module__ergy6W__red",seat:"page-module__ergy6W__seat",seatAvatar:"page-module__ergy6W__seatAvatar",seatFolded:"page-module__ergy6W__seatFolded",seatMain:"page-module__ergy6W__seatMain",seatMeta:"page-module__ergy6W__seatMeta",seatTurn:"page-module__ergy6W__seatTurn",seatWinner:"page-module__ergy6W__seatWinner",seats:"page-module__ergy6W__seats",status:"page-module__ergy6W__status",statusGrid:"page-module__ergy6W__statusGrid",table:"page-module__ergy6W__table",tableCenter:"page-module__ergy6W__tableCenter"})},39307,e=>{"use strict";var a=e.i(18050),t=e.i(71645),r=e.i(8734),s=e.i(72382),n=e.i(96699),d=e.i(21357);let l=(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 i=e.i(53751),o=e.i(35965),c=e.i(59665),u=e.i(53881),m=e.i(34471),p=e.i(3593),f=e.i(71192);let h=[10,20,50,100],y=["2","3","4","5","6","7","8","9","10","J","Q","K","A"],g=["D","C","H","S"],_=new Map(y.map((e,a)=>[e,a+2])),v=new Map(g.map((e,a)=>[e,a+1])),j={1:"散牌",2:"对子",3:"顺子",4:"金花",5:"顺金",6:"豹子"};function x(e){return String(e||"").trim().toUpperCase().replace(/[^A-Z0-9]/g,"").slice(0,8)}function b(e="zhajinhua"){return`${e}_${Date.now()}_${function(){let e=new Uint8Array(4);if(globalThis.crypto?.getRandomValues)globalThis.crypto.getRandomValues(e);else for(let a=0;a<e.length;a++)e[a]=Math.floor(256*Math.random());return[...e].map(e=>e.toString(16).padStart(2,"0")).join("")}()}`}function k(){let e=[];for(let a of g)for(let t of y)e.push(`${t}${a}`);return e}function N(e){let a=String(e||"").trim().toUpperCase(),t=a.slice(-1),r=a.slice(0,-1);if(!_.has(r)||!v.has(t))throw Error(`Invalid card: ${e}`);return{id:`${r}${t}`,rank:r,suit:t,rankValue:_.get(r),suitValue:v.get(t)}}function w(e){let a;if(!Array.isArray(e)||3!==e.length)throw Error("炸金花手牌必须是 3 张牌");let t=e.map(N),r=t.map(e=>e.rankValue),s=new Map;for(let e of r)s.set(e,(s.get(e)||0)+1);let n=1===new Set(t.map(e=>e.suit)).size,d=3!==(a=[...new Set(r)].sort((e,a)=>e-a)).length?0:2===a[0]&&3===a[1]&&14===a[2]?3:a[0]+1===a[1]&&a[1]+1===a[2]?a[2]:0,l=[...r].sort((e,a)=>a-e),i=Math.max(...t.map(e=>e.suitValue)),o=1,c=l;return 1===s.size?(o=6,c=[l[0]]):d&&n?(o=5,c=[d]):n?(o=4,c=l):d?(o=3,c=[d]):2===s.size&&(o=2,c=[[...s.entries()].find(([,e])=>2===e)[0],[...s.entries()].find(([,e])=>1===e)[0]]),{category:o,label:j[o],tiebreakers:c,tieSuit:i,cards:t.map(e=>e.id)}}function C(e){return w(e).label}function I({roundId:e,action:a,amount:t,target:r}){return{roundId:e,eventId:b("action"),action:a,amount:t,target:r}}function A(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:T(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:T(e.turnAddress),players:e.players.map(L).filter(Boolean),lastAction:String(e.lastAction||""),winner:e.winner?T(e.winner):null,showdown:e.showdown&&"object"==typeof e.showdown?P(e.showdown):null,appliedEventIds:Array.isArray(e.appliedEventIds)?e.appliedEventIds.map(String):[],actionCounts:e.actionCounts&&"object"==typeof e.actionCounts?P(e.actionCounts):{},compareReveal:e.compareReveal&&"object"==typeof e.compareReveal?P(e.compareReveal):{},lastCompare:e.lastCompare&&"object"==typeof e.lastCompare?P(e.lastCompare):null,finishedAt:e.finishedAt?Number(e.finishedAt):null}:null}function S(e,a,t){let r=A(e);if(!r||"playing"!==r.status)return{ok:!1,error:"当前没有进行中的牌局"};let s=T(t),n=r.players.find(e=>e.address===s);if(!n||"active"!==n.status)return{ok:!1,error:"玩家不在本轮牌局中"};if(r.turnAddress!==s)return{ok:!1,error:"还没有轮到你操作"};let d=a?.action;if(!["look","call","raise","compare","fold"].includes(d))return{ok:!1,error:"未知操作"};if("look"===d)return n.looked?{ok:!1,error:"已经看过牌"}:{ok:!0};if("call"===d)return n.chips>=10?{ok:!0}:{ok:!1,error:"筹码不足,不能跟注"};if("raise"===d){let e=Number(a.amount);if(!h.includes(e))return{ok:!1,error:"加注档位无效"};let t=r.currentBet+e-n.bet;return n.chips>=t?{ok:!0}:{ok:!1,error:"筹码不足,不能加注"}}if("compare"===d){let e=T(a.target),t=r.players.find(a=>a.address===e);if(!e||e===s||!t||"active"!==t.status)return{ok:!1,error:"请选择有效的比牌对象"};if(!r.players.filter(e=>"active"===e.status).every(e=>(r.actionCounts?.[e.address]||0)>=1))return{ok:!1,error:"第一轮不能比牌,请先跟注或加注"};let d=Math.max(0,r.currentBet-n.bet);return n.chips>=d?{ok:!0}:{ok:!1,error:"筹码不足,不能比牌"}}return{ok:!0}}function W(e,a,t){let r=S(e,a,t);if(!r.ok)return{ok:!1,error:r.error,state:e};let s=P(e),n=T(t),d=s.players.find(e=>e.address===n),l=String(a.eventId);if(s.appliedEventIds?.includes(l))return{ok:!0,state:s,duplicate:!0};if(Array.isArray(s.appliedEventIds)||(s.appliedEventIds=[]),s.appliedEventIds.push(l),"look"===a.action)return d.looked=!0,s.lastAction=`${d.name} 看牌`,$(s);if("fold"===a.action)return d.status="folded",s.lastAction=`${d.name} 弃牌`,B(s,n),E(s,n);if("call"===a.action)return d.chips-=10,d.bet+=10,s.pot+=10,s.lastAction=`${d.name} 跟注`,B(s,n),E(s,n);if("raise"===a.action){let e=Number(a.amount);return s.currentBet+=e,M(s,d),s.lastAction=`${d.name} 加注 ${e}`,B(s,n),E(s,n)}if("compare"===a.action){M(s,d);let e=T(a.target),t=s.players.find(a=>a.address===e),r=d.looked,l=t.looked,i=function(e,a){let t=w(e),r=w(a);if(t.category!==r.category)return t.category-r.category;let s=function(e,a){let t=Math.max(e.length,a.length);for(let r=0;r<t;r++){let t=e[r]||0,s=a[r]||0;if(t!==s)return t-s}return 0}(t.tiebreakers,r.tiebreakers);return 0!==s?s:t.tieSuit-r.tieSuit}(s.hands?.[n]||[],s.hands?.[e]||[]),o=i>=0?d:t,c=i>=0?t:d;c.status="folded",c.looked=!0,s.compareReveal||(s.compareReveal={});let u=r&&l,m=!r&&!l;if(u)s.compareReveal[n]=s.hands?.[e]||[],s.compareReveal[e]=s.hands?.[n]||[];else if(m)s.compareReveal[c.address]=s.hands?.[o.address]||[];else{let e=r?d:t,a=r?t:d;s.compareReveal[e.address]=s.hands?.[a.address]||[],s.compareReveal[c.address]=s.hands?.[o.address]||[]}return s.lastCompare={initiator:n,target:e,winner:o.address,loser:c.address,initiatorLooked:r,targetLooked:l,timestamp:Date.now()},s.lastAction=`${d.name} 与 ${t.name} 比牌,${c.name} 出局`,B(s,n),E(s,n)}return{ok:!1,error:"未知操作",state:e}}function R(e){return(e?.players||[]).filter(e=>"active"===e.status)}function M(e,a){let t=Math.max(0,e.currentBet-a.bet);a.chips-=t,a.bet+=t,e.pot+=t}function B(e,a){e.actionCounts||(e.actionCounts={}),e.actionCounts[a]=(e.actionCounts[a]||0)+1}function E(e,a){var t,r;let s,n,d=R(e);return 1===d.length?(t=e,r=d[0].address,s=t.players.find(e=>e.address===r),n=t.pot,s&&(s.chips+=t.pot),t.status="finished",t.winner=r,t.winAmount=n,t.turnAddress="",t.showdown=t.hands?P(t.hands):null,t.lastAction=s?`${s.name} 赢得 ${n} 筹码`:"本局结束",t.pot=0,t.finishedAt=Date.now(),$(t)):(e.turnAddress=function(e,a){let t=e.players,r=Math.max(0,t.findIndex(e=>e.address===T(a)));for(let e=1;e<=t.length;e++){let a=t[(r+e)%t.length];if("active"===a.status)return a.address}return""}(e,a),$(e))}function $(e){return e.seq=Number(e.seq||0)+1,{ok:!0,state:e}}function L(e){var a;if(!e||"object"!=typeof e)return null;let t=T(e.address);return t?{address:t,name:String(e.name||((a=t)?`${a.slice(0,6)}...${a.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 T(e){let a=String(e||"").trim();return/^0x[a-fA-F0-9]{40}$/.test(a)?a.toLowerCase():""}function P(e){return JSON.parse(JSON.stringify(e))}var z=e.i(99591),K=e.i(66112),D=e.i(2305);let q="zhajinhua";function G(...e){return e.filter(Boolean).join(" ")}function U(e,a){return String(e||"").toLowerCase()===String(a||"").toLowerCase()}function V(e=""){return e?`${e.slice(0,6)}...${e.slice(-4)}`:""}function O(e){let a=String(e||""),t=a.slice(-1);return{rank:a.slice(0,-1),suit:({S:"♠",H:"♥",C:"♣",D:"♦"})[t]||t,color:"H"===t||"D"===t?"red":"black"}}function F({lastCompare:e,compareReveal:t,myAddress:r,myDealtHand:s,lobbyPlayers:n,onClose:d}){let l=J(e.initiator,n),o=J(e.target,n),c=J(e.winner,n),u=U(r,e.initiator),m=U(r,e.target),p=u||m;function f(e,a){let n=t[e];return n||(p&&U(e,r)&&a&&s?s:null)}let h=f(e.initiator,e.initiatorLooked),y=f(e.target,e.targetLooked);return(0,a.jsx)("div",{className:D.default.compareOverlay,onClick:d,children:(0,a.jsxs)("div",{className:D.default.compareBox,onClick:e=>e.stopPropagation(),children:[(0,a.jsx)("div",{className:D.default.compareTitle,children:"比牌结果"}),(0,a.jsxs)("div",{className:D.default.comparePlayers,children:[(0,a.jsxs)("div",{className:G(D.default.compareSide,U(e.winner,e.initiator)&&D.default.compareWinner),children:[(0,a.jsx)("div",{className:D.default.compareName,children:l}),(0,a.jsx)("div",{className:D.default.compareCards,children:h?h.map(e=>{let t=O(e);return(0,a.jsxs)("div",{className:G(D.default.card,D.default[t.color]),children:[(0,a.jsx)("span",{children:t.rank}),(0,a.jsx)("i",{children:t.suit})]},e)}):[0,1,2].map(e=>(0,a.jsx)("div",{className:D.default.cardBack,children:(0,a.jsx)(i.Spade,{size:18})},e))}),h&&(0,a.jsx)("div",{className:D.default.compareLabel,children:C(h)})]}),(0,a.jsx)("div",{className:D.default.compareVs,children:"VS"}),(0,a.jsxs)("div",{className:G(D.default.compareSide,U(e.winner,e.target)&&D.default.compareWinner),children:[(0,a.jsx)("div",{className:D.default.compareName,children:o}),(0,a.jsx)("div",{className:D.default.compareCards,children:y?y.map(e=>{let t=O(e);return(0,a.jsxs)("div",{className:G(D.default.card,D.default[t.color]),children:[(0,a.jsx)("span",{children:t.rank}),(0,a.jsx)("i",{children:t.suit})]},e)}):[0,1,2].map(e=>(0,a.jsx)("div",{className:D.default.cardBack,children:(0,a.jsx)(i.Spade,{size:18})},e))}),y&&(0,a.jsx)("div",{className:D.default.compareLabel,children:C(y)})]})]}),(0,a.jsxs)("div",{className:D.default.compareResult,children:[c," 胜出"]}),(0,a.jsx)("button",{className:"btn btn-sm",onClick:d,children:"关闭"})]})})}function J(e,a){let t=e.toLowerCase();return a.find(e=>e.address===t)?.name||V(e)}e.s(["default",0,function(){let e=(0,p.useAppStore)(e=>e.isDarkMode),y=(0,p.useAppStore)(e=>e.setIsDarkMode),g=(0,p.useAppStore)(e=>e.addToast),_=(0,f.useUserStore)(e=>e.initializeUser),[v,j]=(0,t.useState)(""),[N,w]=(0,t.useState)(!1),M=(0,t.useRef)(""),B=(0,t.useRef)(!1),[E,$]=(0,t.useState)(20),[L,H]=(0,t.useState)(""),[Q,Z]=(0,t.useState)({}),[X,Y]=(0,t.useState)(!0),[ee,ea]=(0,t.useState)(!1),et=(0,t.useRef)(null),er=(0,t.useRef)(new Set),es=(0,m.useGameRoom)({gameId:q,onError:e=>g(e,"error"),getPlayerPayload:e=>{let a=(0,K.most25519)(e.danger);return{address:e.address,name:e.displayName||e.username,publicKey:a.public_key,joinedAt:Date.now()}}}),en=(0,t.useMemo)(()=>es.userIdentity?.danger?(0,K.most25519)(es.userIdentity.danger):null,[es.userIdentity?.danger]);(0,t.useEffect)(()=>{_()},[_]),(0,t.useEffect)(()=>{let e=new URLSearchParams(window.location.search).get("room")?.toUpperCase();e&&(j(e),M.current=e)},[]),(0,t.useEffect)(()=>{let e=M.current;!e||B.current||es.isBackendReady&&es.userIdentity&&(B.current=!0,M.current="",es.joinRoom(e).then(e=>{e&&g("已进入房间","success")}))},[es.isBackendReady,es.userIdentity,es.joinRoom,g]),(0,t.useEffect)(()=>{if(!es.roomCode)return;let e=`/game/zhajinhua?room=${es.roomCode}`;`${window.location.pathname}${window.location.search}`!==e&&window.history.replaceState(null,"",e)},[es.roomCode]);let ed=(0,t.useMemo)(()=>(0,z.deriveGameRoomLobby)(es.messages,{gameId:q,roomCode:es.roomCode}),[es.messages,es.roomCode]),el=(0,t.useMemo)(()=>(0,z.getLatestGameState)(es.messages,{gameId:q,roomCode:es.roomCode}),[es.messages,es.roomCode]),ei=el?.payload?.round||null,eo=ei?.host||ed.hostAddress,ec=U(eo,es.userIdentity?.address),eu=es.userIdentity?.address?.toLowerCase()||"",em=ei?.players.find(e=>U(e.address,eu)),ep=em||ed.players.find(e=>U(e.address,eu)),ef=Q[ei?.roundId||""]||null,eh=ei?.showdown&&eu?ei.showdown[eu]:null,ey=ei?.compareReveal&&eu?ei.compareReveal[eu]:null,eg=eh||ey||(em?.looked?ef:null),e_=function(e,a){let t=(e?.players||[]).find(e=>e.address===T(a));if(!e||"playing"!==e.status||!t||"active"!==t.status||e.turnAddress!==t.address)return[];let r=[];return t.looked||r.push("look"),S(e,{action:"call"},t.address).ok&&r.push("call"),h.some(a=>S(e,{action:"raise",amount:a},t.address).ok)&&r.push("raise"),R(e).length>1&&e.players.filter(e=>"active"===e.status).every(a=>(e.actionCounts?.[a.address]||0)>=1)&&r.push("compare"),r.push("fold"),r}(ei,eu),ev=R(ei),ej=ec&&function(e=[]){let a=e.filter(e=>Number(e.chips)>=10);return a.length>=2&&a.length<=5}(ed.players.map(e=>({...e,chips:ei?.players.find(a=>U(a.address,e.address))?.chips??1e3}))),ex=es.roomCode&&1?`${window.location.origin}/game/zhajinhua?room=${es.roomCode}`:"";async function eb(){await es.createRoom()&&g("房间已创建","success")}async function ek(e){e.preventDefault(),await es.joinRoom(v)&&g("已进入房间","success")}async function eN(){ex&&(await navigator.clipboard.writeText(ex),w(!0),setTimeout(()=>w(!1),1400))}async function ew(e){return es.sendRoomEvent("room:state",{round:function(e){if(!e)return null;let a={...e};return delete a.hands,P(a)}(e),seq:e.seq})}async function eC(){if(!es.userIdentity||!en||!ej)return void g("至少需要 2 名有足够筹码的玩家","error");try{let e=ed.players.map(e=>({...e,chips:ei?.players.find(a=>U(a.address,e.address))?.chips??1e3})),a=function({roomCode:e,players:a,hostAddress:t,previousSeq:r=0,previousWinner:s="",roundId:n=b("round"),random:d=Math.random}){let l,i=a.filter(e=>Number(e.chips)>=10).slice(0,5);if(i.length<2)throw Error("至少需要 2 名有足够筹码的玩家");let o=function(e=k(),a=Math.random){let t=[...e];for(let e=t.length-1;e>0;e--){let r=Math.floor(a()*(e+1));[t[e],t[r]]=[t[r],t[e]]}return t}(k(),d),c={},u=i.map((e,a)=>{let t=o.slice(3*a,3*a+3);return c[e.address]=t,{address:e.address,name:e.name,publicKey:e.publicKey,chips:Number(e.chips)-10,status:"active",looked:!1,bet:10}}),m=T(s),p=m?u.findIndex(e=>T(e.address)===m):-1;if(p>=0)l=u[p].address;else{let e=Math.floor(d()*u.length);l=u[e].address}return{roomCode:x(e),roundId:n,status:"playing",host:T(t),seq:r+1,startedAt:Date.now(),ante:10,pot:10*u.length,currentBet:10,turnAddress:l,players:u,lastAction:"本局开始",winner:null,showdown:null,appliedEventIds:[],hands:c,actionCounts:{},compareReveal:{}}}({roomCode:es.roomCode,players:e,hostAddress:es.userIdentity.address,previousSeq:ei?.seq||0,previousWinner:ei?.winner||""});for(let e of(et.current=a.hands,er.current.clear(),await ew(a),a.players)){let t=(0,K.mostBoxEncrypt)(JSON.stringify(a.hands[e.address]),{senderPrivateKey:en.private_key,recipientPublicKey:e.publicKey});await es.sendRoomEvent("deal:private",{roundId:a.roundId,recipient:e.address,senderPublicKey:en.public_key,encrypted:t})}Z(e=>({...e,[a.roundId]:a.hands[es.userIdentity.address.toLowerCase()]})),g("新一局已开始","success")}catch(e){g(e instanceof Error?e.message:"开局失败","error")}}async function eI(e,a={}){if(!ei||!es.userIdentity)return;let t=I({roundId:ei.roundId,action:e,amount:a.amount,target:a.target});await es.sendRoomEvent("player:action",{actionEvent:t})}(0,t.useEffect)(()=>{if(ei&&es.userIdentity&&en&&eo)for(let e of es.roomEvents){let a=e.event;if(!a||"deal:private"!==a.event)continue;let t=a.payload;if(t.roundId!==ei.roundId||!U(t.recipient,es.userIdentity.address))continue;let r=(0,K.mostBoxDecrypt)(t.encrypted||"",{senderPublicKey:t.senderPublicKey||"",recipientPrivateKey:en.private_key});if(r)try{let e=JSON.parse(r);Array.isArray(e)&&Z(a=>({...a,[ei.roundId]:e.map(String)}))}catch{}}},[ei?.roundId,es.roomEvents,es.userIdentity,eo,en?.private_key]),(0,t.useEffect)(()=>{if(ei?.status==="finished"&&ei.winner){Y(!0);let e=setTimeout(()=>Y(!1),5e3);return()=>clearTimeout(e)}},[ei?.finishedAt,ei?.status,ei?.winner]),(0,t.useEffect)(()=>{if(ei?.lastCompare?.timestamp){ea(!0);let e=setTimeout(()=>ea(!1),5e3);return()=>clearTimeout(e)}ea(!1)},[ei?.lastCompare?.timestamp,ei?.roundId]),(0,t.useEffect)(()=>{if(!ec||!ei||"playing"!==ei.status)return;let e=et.current;if(!e)return;let a=es.roomEvents.filter(e=>{let a=e.event;if(!a||"player:action"!==a.event)return!1;let t=a.payload.actionEvent;return!(!t||t.roundId!==ei.roundId||er.current.has(t.eventId)||ei.appliedEventIds?.includes(t.eventId))});if(0===a.length)return;let t=!1;return async function(){let r,s=(r=A(ei))&&e&&"object"==typeof e?{...r,hands:P(e)}:null;if(s)for(let e of a){if(t)return;let a=(e.event?.payload).actionEvent,r=W(s,a,e.message.author);if(!r.ok){let t=e.message.author;if(!U(t,es.userIdentity?.address)&&"playing"===s.status&&U(s.turnAddress,t)){let e=W(s,I({roundId:s.roundId,action:"call",amount:void 0,target:void 0}),t);if(e.ok)r=e;else{let e=W(s,I({roundId:s.roundId,action:"fold",amount:void 0,target:void 0}),t);e.ok&&(r=e)}}if(!r.ok){er.current.add(a.eventId);continue}}if(s=r.state,et.current=r.state.hands,await ew(r.state)&&er.current.add(a.eventId),"finished"===r.state.status)break}}(),()=>{t=!0}},[ei?.roundId,ei?.seq,ei?.status,es.roomEvents,ec]);let eA=ei?.status==="playing"?U(ei.turnAddress,eu)?"轮到你操作":ei.turnAddress?`等待 ${J(ei.turnAddress,ed.players)}`:"进行中":ei?.status==="finished"?"本局结束":"等待开局",eS=ev.filter(e=>!U(e.address,eu));return(0,a.jsx)(c.default,{sidebar:({closeSidebar:e})=>(0,a.jsx)(u.default,{activeGame:"zhajinhua",closeSidebar:e}),headerTitle:(0,a.jsx)("h2",{className:"header-title",children:"炸金花"}),headerRight:(0,a.jsxs)("div",{className:D.default.headerActions,children:[es.roomCode&&(0,a.jsxs)("button",{className:"btn btn-sm",onClick:eN,children:[(0,a.jsx)(r.Copy,{size:14}),N?"已复制":"分享房间"]}),(0,a.jsx)("button",{className:"btn btn-icon",onClick:()=>y(!e),title:"切换主题",children:e?(0,a.jsx)(o.Sun,{size:16}):(0,a.jsx)(n.Moon,{size:16})})]}),children:(0,a.jsx)("main",{className:D.default.page,children:es.roomCode?(0,a.jsxs)("div",{className:D.default.board,children:[(0,a.jsxs)("section",{className:D.default.table,children:[ei?.status==="finished"&&ei.winner&&X&&(0,a.jsxs)("div",{className:D.default.finishBanner,children:[(0,a.jsx)("span",{className:D.default.finishBannerIcon,children:"🏆"}),(0,a.jsxs)("span",{children:[J(ei.winner,ed.players)," 赢得"," ",ei.winAmount??0," 筹码"]})]}),ei?.lastCompare&&ee&&(0,a.jsx)(F,{lastCompare:ei.lastCompare,compareReveal:ei.compareReveal||{},myAddress:eu,myDealtHand:ef,lobbyPlayers:ed.players,onClose:()=>ea(!1)}),(0,a.jsxs)("div",{className:D.default.tableCenter,children:[(0,a.jsx)("span",{children:"底池"}),(0,a.jsx)("strong",{children:ei?.pot||0}),(0,a.jsxs)("small",{children:["当前注 ",ei?.currentBet||0]})]}),(0,a.jsx)("div",{className:D.default.seats,children:ed.players.map(e=>{let t=ei?.players.find(a=>U(a.address,e.address)),r=ei?.turnAddress===e.address,s=ei?.winner===e.address,n=t?.status==="folded";return(0,a.jsxs)("div",{className:G(D.default.seat,r&&D.default.seatTurn,s&&D.default.seatWinner,n&&D.default.seatFolded),children:[(0,a.jsx)("div",{className:D.default.seatAvatar,children:e.name.slice(0,1)}),(0,a.jsxs)("div",{className:D.default.seatMain,children:[(0,a.jsx)("strong",{children:e.name}),(0,a.jsx)("span",{children:V(e.address)})]}),(0,a.jsxs)("div",{className:D.default.seatMeta,children:[(0,a.jsxs)("span",{children:[t?.chips??1e3," 筹码"]}),(0,a.jsx)("span",{children:t?.status==="folded"?"已弃牌":t?.looked?"已看牌":ei?"在局中":"等待开局"})]})]},e.address)})})]}),(0,a.jsxs)("aside",{className:D.default.panel,children:[(0,a.jsxs)("div",{className:D.default.panelSection,children:[(0,a.jsxs)("div",{className:D.default.panelTitle,children:[(0,a.jsx)(i.Spade,{size:16}),(0,a.jsx)("span",{children:"我的手牌"})]}),(0,a.jsx)("div",{className:D.default.hand,children:eg?eg.map(e=>{let t=O(e),r=`${t.suit}${t.rank}`;return(0,a.jsxs)("div",{className:G(D.default.card,D.default[t.color]),children:[(0,a.jsx)("span",{children:r}),(0,a.jsx)("i",{children:t.suit})]},e)}):[0,1,2].map(e=>(0,a.jsx)("div",{className:D.default.cardBack,children:(0,a.jsx)(i.Spade,{size:18})},e))}),(0,a.jsx)("p",{className:D.default.handLabel,children:eg?C(eg):ef?"未看牌":"等待房主发牌"})]}),(0,a.jsxs)("div",{className:D.default.panelSection,children:[(0,a.jsxs)("div",{className:D.default.panelTitle,children:[(0,a.jsx)(d.Play,{size:16}),(0,a.jsx)("span",{children:"操作"})]}),ec?(0,a.jsxs)("button",{className:"btn btn-primary btn-full",onClick:eC,disabled:!ej||ei?.status==="playing",children:[(0,a.jsx)(l,{size:16}),ei?.status==="finished"?"再来一局":"开始本局"]}):(0,a.jsx)("p",{className:D.default.muted,children:"等待房主开始或继续牌局。"}),ec&&ei?.status==="finished"&&!ej&&(0,a.jsx)("p",{className:D.default.muted,children:"筹码不足的玩家太多,无法开局"}),(0,a.jsxs)("div",{className:D.default.actionGrid,children:[(0,a.jsxs)("button",{className:"btn btn-secondary",disabled:!e_.includes("look"),onClick:()=>eI("look"),children:[(0,a.jsx)(s.Eye,{size:16}),"看牌"]}),(0,a.jsx)("button",{className:"btn btn-secondary",disabled:!e_.includes("call"),onClick:()=>eI("call"),children:"跟注"}),(0,a.jsx)("button",{className:"btn btn-secondary",disabled:!e_.includes("fold"),onClick:()=>eI("fold"),children:"弃牌"})]}),(0,a.jsxs)("div",{className:D.default.raiseRow,children:[(0,a.jsx)("select",{className:"input input-compact",value:E,onChange:e=>$(Number(e.target.value)),children:h.map(e=>(0,a.jsxs)("option",{value:e,children:["加 ",e]},e))}),(0,a.jsx)("button",{className:"btn btn-secondary",disabled:!e_.includes("raise"),onClick:()=>eI("raise",{amount:E}),children:"加注"})]}),(0,a.jsxs)("div",{className:D.default.raiseRow,children:[(0,a.jsxs)("select",{className:"input input-compact",value:L,onChange:e=>H(e.target.value),children:[(0,a.jsx)("option",{value:"",children:"选择比牌对象"}),eS.map(e=>(0,a.jsx)("option",{value:e.address,children:e.name},e.address))]}),(0,a.jsx)("button",{className:"btn btn-secondary",disabled:!e_.includes("compare")||!L,onClick:()=>eI("compare",{target:L}),children:"比牌"})]})]}),(0,a.jsxs)("div",{className:D.default.panelSection,children:[(0,a.jsx)("div",{className:D.default.panelTitle,children:"状态"}),(0,a.jsxs)("div",{className:D.default.statusGrid,children:[(0,a.jsx)("span",{children:"房主"}),(0,a.jsx)("strong",{children:eo?V(eo):"-"}),(0,a.jsx)("span",{children:"我的筹码"}),(0,a.jsx)("strong",{children:ep?.chips??1e3}),(0,a.jsx)("span",{children:"本轮"}),(0,a.jsx)("strong",{children:eA}),(0,a.jsx)("span",{children:"提示"}),(0,a.jsx)("strong",{children:ei?.lastAction||"等待玩家加入"})]})]})]})]}):(0,a.jsxs)("section",{className:D.default.entry,children:[(0,a.jsxs)("div",{className:D.default.entryBrand,children:[(0,a.jsx)("div",{className:D.default.cardMark,children:(0,a.jsx)(i.Spade,{size:48})}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h1",{children:"炸金花牌桌"}),(0,a.jsx)("p",{children:"创建房间码邀请朋友加入,房间状态通过 MostBox P2P 频道同步。"})]})]}),(0,a.jsxs)("div",{className:D.default.entryPanel,children:[(0,a.jsxs)("div",{className:D.default.accountLine,children:[(0,a.jsx)("span",{children:"当前账号"}),(0,a.jsx)("strong",{children:es.userIdentity?.displayName||"未登录"})]}),(0,a.jsxs)("button",{className:"btn btn-primary",disabled:es.joining,onClick:eb,children:[(0,a.jsx)(d.Play,{size:16}),"创建房间"]}),(0,a.jsxs)("form",{onSubmit:ek,className:D.default.joinForm,children:[(0,a.jsxs)("label",{children:["房间号",(0,a.jsx)("input",{value:v,maxLength:8,onChange:e=>j(e.target.value.toUpperCase()),placeholder:"输入房间号"})]}),(0,a.jsx)("button",{className:"btn",disabled:es.joining||!v,children:"加入房间"})]}),(0,a.jsx)("p",{className:D.default.status,children:es.isBackendReady?"节点已连接":"正在连接节点..."})]})]})})})}],39307)}]);
|
|
@@ -0,0 +1 @@
|
|
|
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 y},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),f=e.r(5550);e.r(33525);let p=e.r(88540),h=e.r(91949),m=e.r(73668),g=e.r(9396);function y(t){var n,a;let r,s,y,[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:E=!1,onNavigate:G,transitionTypes:P,ref:I,unstable_dynamicOnHover:L,...H}=t;r=C,E&&("string"==typeof r||"number"==typeof r)&&(r=(0,l.jsx)("a",{children:r}));let B=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(E){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=E?s&&"object"==typeof s&&s.ref:I,J=i.default.useCallback(e=>(null!==B&&(_.current=(0,h.mountLinkInstance)(e,W,B,T,U,S)),()=>{_.current&&((0,h.unmountLinkForCurrentNavigation)(_.current),_.current=null),(0,h.unmountPrefetchableInstance)(e)}),[U,W,B,T,S]),q={ref:(0,d.useMergedRef)(J,z),onClick(t){E||"function"!=typeof M||M(t),E&&s.props&&"function"==typeof s.props.onClick&&s.props.onClick(t),!B||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?p.ScrollBehavior.NoScroll:p.ScrollBehavior.Default,a.current,o)})}}(t,W,_,N,A,G,P)},onMouseEnter(e){E||"function"!=typeof $||$(e),E&&s.props&&"function"==typeof s.props.onMouseEnter&&s.props.onMouseEnter(e),B&&U&&(0,h.onNavigationIntent)(e.currentTarget,!0===L)},onTouchStart:function(e){E||"function"!=typeof O||O(e),E&&s.props&&"function"==typeof s.props.onTouchStart&&s.props.onTouchStart(e),B&&U&&(0,h.onNavigationIntent)(e.currentTarget,!0===L)}};return(0,c.isAbsoluteUrl)(W)?q.href=W:E&&!w&&("a"!==s.type||"href"in s.props)||(q.href=(0,f.addBasePath)(W)),y=E?i.default.cloneElement(s,q):(0,l.jsx)("a",{...H,...q,children:r}),(0,l.jsx)(b.Provider,{value:v,children:y})}e.r(84508);let b=(0,i.createContext)(h.IDLE_LINK_STATUS),v=()=>(0,i.useContext)(b);("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,sidebarToggleReplacement:o,defaultHide:u=!1,children:d}){let[c,f]=r(!1),[p,h]=(0,n.useState)(u),m=(0,n.useRef)(u),g=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)"),y=(0,n.useCallback)((e={})=>{f.close(),e.collapse&&h(!0)},[f]);(0,n.useEffect)(()=>{u!==m.current&&(u?y({collapse:!0}):h(!1),m.current=u)},[u,y]);let b=()=>{g?f.open():h(!1)};return(0,t.jsx)(s.Provider,{value:{closeSidebar:y,openSidebar:b,isSidebarVisible:g?c:!p},children:(0,t.jsxs)("div",{className:"app-layout",children:[(0,t.jsx)("div",{className:`sidebar-overlay ${c?"visible":""}`,onClick:()=>y()}),(0,t.jsx)("div",{className:`sidebar ${c?"open":""} ${p?"collapsed":""}`,children:e({closeSidebar:y,openSidebar:b})}),(0,t.jsxs)("div",{className:"main-content",children:[(0,t.jsxs)("header",{className:"app-header",children:[(0,t.jsxs)("div",{className:"header-left",children:[o??(0,t.jsx)("button",{onClick:()=>{g?f.toggle():h(!p)},className:"btn btn-icon sidebar-toggle-btn","aria-label":g?"打开菜单":p?"展开侧边栏":"收起侧边栏",children:(0,t.jsx)(a,{size:16})}),l]}),(0,t.jsx)("div",{className:"header-right",children:i})]}),d]})]})})},"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:f=r,onSyncError:p,onSocketEvent:h}){let[m,g]=(0,t.useState)([]),[y,b]=(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)(f),k=(0,t.useRef)(h),w=(0,t.useRef)(p),N=(0,t.useRef)(i);(0,t.useEffect)(()=>{x.current=c},[c]),(0,t.useEffect)(()=>{C.current=f},[f]),(0,t.useEffect)(()=>{k.current=h},[h]),(0,t.useEffect)(()=>{w.current=p},[p]);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]),E=(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),E(S.current,{replace:!0})))},[i,$,E,o,M]);let G=(0,t.useCallback)(()=>{g([])},[]),P=(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 E(l,{replace:!0}),(!o||N.current)&&$(l),()=>O(l)},[l,s,e,$,E,O,o]),(0,t.useEffect)(()=>{if(!e||!s)return void b(!1);let t=!1;async function n(){let e=new WebSocket(await (0,a.getAuthenticatedWebSocketUrl)("/ws"));t?e.close():(e.onopen=()=>{b(!0),j.current=0,N.current&&e.send(JSON.stringify({event:"register",data:{peerId:N.current}})),S.current&&(!o||N.current)&&($(S.current),E(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(b(!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,$,E,o]),{clearMessages:G,connected:y,messages:m,sendMessage:P,setMessages:g,syncMessages:E}}])},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",f=["gandengyan","zhajinhua"],p="ABCDEFGHJKLMNPQRSTUVWXYZ23456789";function h(e){let t=String(e||"").trim().toLowerCase();return f.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 y(){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 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,y,"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);continue}if("player:leave"===e.event){let t=j(e.payload?.player?.address||s.author);if(t){let e=n.findIndex(e=>e.address===t);-1!==e&&(n.splice(e,1),a.delete(t))}}}}return{gameId:h(t.gameId),roomCode:m(t.roomCode),hostAddress:r,players:n}},"gameRoomCodeToChannelName",0,b,"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)(""),[f,p]=(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:E,messages:G,sendMessage:P,syncMessages:I}=(0,w.useChannelMessages)({isReady:_,enabled:!!l,channelName:f,limit:500,acceptMessage:x,getMessageKey:C,onSyncError:e=>j(e,"无法读取房间记录")}),L=(0,u.useMemo)(()=>G.map(t=>({message:t,event:S(t.content,{gameId:e,roomCode:o})})).filter(e=>e.event),[e,G,o]),H=(0,u.useCallback)(()=>l?!!_||(s(),!1):(i(),!1),[_,s,i,l]);(0,u.useEffect)(()=>{null===a&&r()},[r,a]);let B=(0,u.useCallback)(async(a,r=!1)=>{if(!H()||!l)return!1;let s=r?y():m(a),i=b(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),p(i),O(),!0}catch(e){return await j(e,r?"创建房间失败":"进入房间失败"),!1}finally{g(!1)}},[H,e,n,t,j,O,l]),U=(0,u.useCallback)(()=>B("",!0),[B]),T=(0,u.useCallback)(e=>B(e),[B]),W=(0,u.useCallback)(async(t,n={})=>{if(!H()||!l||!f||!o)return!1;let a=v({gameId:e,roomCode:o,event:t,payload:n}),r=JSON.stringify(a);try{return await P({channelName:f,content:r,author:l.address,authorName:$(l),optimisticId:`${l.address}-${a.eventId}`}),!0}catch(e){return await j(e,"发送房间事件失败"),!1}},[f,H,e,j,o,P,l]);return{channelName:f,connected:E,createRoom:U,ensureReady:H,isBackendReady:_,joinRoom:T,joining:h,messages:G,roomCode:o,roomEvents:L,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",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),f=e.i(3593),p=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),y=new Map(m.map((e,t)=>[e,t+3]));function b(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(L):[],deckCount:e.deck?.length||Number(e.deckCount||0),discard:Array.isArray(e.discard)?e.discard.map(L):[],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(L)}: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:A(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(L):[]}))}:null}function v(e){return e&&"object"==typeof e?{id:String(e.id||"").toUpperCase(),ownerAddress:W(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(I).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(O)).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||!$(t,n))return null;let a=function(e){return E(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",E(e[0]),1,[E(e[0])]);if(2===e.length&&$(n,t)){let e=E(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=>y.get(e)),s=[...r],l=0;for(let e of n){let t=s.indexOf(E(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=>y.get(e)),l=s.flatMap(e=>[e,e]),i=0;for(let e of a){let t=l.indexOf(E(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(U).join(" ")})`:"",`${({single:"单张",pair:"对子",straight:"顺子",pairStraight:"连对",bomb:s.pure?"纯炸弹":"带王炸弹"})[s.type]}${l}`)}}function j(e){let t=new Set;return e.map(e=>({address:W(e.address),name:z(e.name),publicKey:String(e.publicKey||"")})).filter(e=>!(!e.address||t.has(e.address))&&(t.add(e.address),!0))}function x(e){let t=W(e.address);return t?{address:t,name:z(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(y.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){e.status="finished",e.winnerSeat=t.seat,e.previousWinnerSeat=t.seat;let n=[],a=0;for(let r of A(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} 分`)}function w(e,t){return e.deck.splice(0,t)}function N(e){return e.players.find(t=>t.seat===e.currentSeat)}function R(e){return A(e).filter(e=>e.hand.length>0)}function A(e){return[...e?.players||[]].sort((e,t)=>e.seat-t.seat)}function M(e){let t=R(e).map(e=>e.seat),n=t.indexOf(e.currentSeat);e.currentSeat=t[(n+1)%t.length]}function $(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 O(e,t){return E(e)-E(t)||P(e.suit)-P(t.suit)}function E(e){return y.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 I(e){if("string"==typeof e){let[t,n]=e.split("-");return C({id:e,suit:t,rank:n})}return C(e)}function L(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 U(e){return m.find(t=>y.get(t)===e)||String(e)}function T(e){let t=m.findIndex(t=>y.get(t)===e);return -1===t||t>=m.length-1?null:y.get(m[t+1])}function W(e){let t=String(e||"").trim();return/^0x[a-fA-F0-9]{40}$/.test(t)?t.toLowerCase():""}function z(e){return String(e||"玩家").trim().slice(0,16)||"玩家"}var J=e.i(99591),q=e.i(45309);let D="gandengyan";function K(...e){return e.filter(Boolean).join(" ")}function F(e,t){return String(e||"").toLowerCase()===String(t||"").toLowerCase()}function V(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 Q(e){return"J"===e?"勾":"Q"===e?"圈":"A"===e?"坚":"10"===e?"十":e}function X({player:e,active:n,winner:a,relation:r=""}){return e?(0,t.jsxs)("div",{className:K(q.default.player,n&&q.default.active,a&&q.default.winner),children:[(0,t.jsx)("div",{className:q.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 Z({card:e,small:n=!1}){return(0,t.jsxs)("div",{className:K(q.default.card,q.default[e.color],n&&q.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,f.useAppStore)(e=>e.isDarkMode),g=(0,f.useAppStore)(e=>e.setIsDarkMode),_=(0,f.useAppStore)(e=>e.addToast),x=(0,p.useUserStore)(e=>e.initializeUser),[C,$]=(0,n.useState)(""),[E,G]=(0,n.useState)([]),[P,I]=(0,n.useState)(!1),B=(0,n.useRef)(""),U=(0,n.useRef)(!1),Y=(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&&($(e),B.current=e)},[]),(0,n.useEffect)(()=>{let e=B.current;!e||U.current||Y.isBackendReady&&Y.userIdentity&&(U.current=!0,B.current="",Y.joinRoom(e).then(e=>{e&&_("已进入房间","success")}))},[Y.isBackendReady,Y.userIdentity,Y.joinRoom,_]),(0,n.useEffect)(()=>{if(!Y.roomCode)return;let e=`/game/gandengyan?room=${Y.roomCode}`;`${window.location.pathname}${window.location.search}`!==e&&window.history.replaceState(null,"",e)},[Y.roomCode]);let ee=(0,n.useMemo)(()=>(0,J.deriveGameRoomLobby)(Y.messages,Y.roomCode?{gameId:D,roomCode:Y.roomCode}:{gameId:D}),[Y.messages,Y.roomCode]),et=(0,n.useMemo)(()=>(0,J.getLatestGameState)(Y.messages,{gameId:D,roomCode:Y.roomCode}),[Y.messages,Y.roomCode]),en=et?.payload?.state,ea=en?.players.find(e=>F(e.address,Y.userIdentity?.address)),er=F(en?.ownerAddress||ee.hostAddress,Y.userIdentity?.address),es=en?.status==="playing"&&en.currentSeat===ea?.seat,el=(0,n.useMemo)(()=>E.map(e=>ea?.hand.find(t=>t.id===e)).filter(Boolean),[E,ea]),ei=(0,n.useMemo)(()=>S(el),[el]),eo=Y.roomCode&&1?`${window.location.origin}/game/gandengyan?room=${Y.roomCode}`:"",eu=(0,n.useRef)(-1),ed=(0,n.useRef)(""),ec=(0,n.useRef)(!1);(0,n.useEffect)(()=>{G([])},[en?.seq]),(0,n.useEffect)(()=>{if(!en)return;let e=en.seq;if(eu.current<0){eu.current=e;return}if(e===eu.current)return;if(eu.current=e,"finished"!==en.status&&(ec.current=!1),"finished"===en.status&&null!==en.winnerSeat){ec.current||(ec.current=!0,V("游戏结束"));return}let t=en.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(Q);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.flatMap(e=>[e,e]).join(" ")}return n}(t);e&&V(e)}},[en?.seq]),(0,n.useEffect)(()=>{if(!er||!Y.roomCode||!Y.userIdentity||et||0===ee.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===W(t))||s.unshift({address:W(t),name:z(n)}),b({id:String(e||"").toUpperCase(),ownerAddress:W(t),status:"lobby",seq:1,players:s.slice(0,6).map((e,t)=>({address:e.address,name:z(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:Y.roomCode,ownerAddress:Y.userIdentity.address,ownerName:Y.userIdentity.displayName||Y.userIdentity.username,players:ee.players});Y.sendRoomEvent("room:state",{state:e,seq:e.seq})},[Y,er,et,ee.players]),(0,n.useEffect)(()=>{if(!en||!er||"lobby"!==en.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:z(e.name),seat:t,hand:[],handCount:0,score:a.get(e.address)??1e3,playedCards:0})),n.seq+=1,b(n)}(en,ee.players);e&&e.players.length!==en.players.length&&Y.sendRoomEvent("room:state",{state:e,seq:e.seq})},[Y,er,ee.players,en]);let ef=(0,n.useRef)(0),ep=(0,n.useMemo)(()=>Y.roomEvents.filter(e=>e.event?.event==="player:leave"),[Y.roomEvents]);async function eh(){await Y.createRoom()&&_("房间已创建","success")}async function em(e){e.preventDefault(),await Y.joinRoom(C)&&_("已进入房间","success")}async function eg(){eo&&(await navigator.clipboard.writeText(eo),I(!0),setTimeout(()=>I(!1),1400))}async function ey(e){await Y.sendRoomEvent("room:state",{state:e,seq:e.seq})}async function eb(){if(en&&er)try{await ey(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(L)}(),t),n.discard=[],n.table=null,n.passSeats=[],n.winnerSeat=null,n.roundResult=null,n.baseScore=1,n.bombCount=0,n.status="playing",A(n)))e.hand=w(n,5),e.handCount=e.hand.length,e.playedCards=0,e.hand.sort(O);let a=function(e,t){if(null!==e.previousWinnerSeat)return e.diceRolls=[],A(e).find(t=>t.seat===e.previousWinnerSeat)||A(e)[0];let n=A(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,b(n)}(en))}catch(e){_(e instanceof Error?e.message:"开局失败","error")}}async function ev(){await eb()}async function eS(){if(!en||!Y.userIdentity)return;let e=function(e,t,n){var a,r;let s=v(e),l=N(s),i=W(t);if(!l||l.address!==i)return{ok:!1,error:"还没轮到你",state:b(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:b(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===T(r.value)||a.value===y.get("2")&&r.value!==y.get("2"):a.value===T(r.value)))))?(o.sort(O),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?k(s,l):M(s),s.seq+=1,{ok:!0,state:b(s)}):{ok:!1,error:"出的牌压不过上一手",state:b(s)}:{ok:!1,error:"这个牌型不合法",state:b(s)}}(en,Y.userIdentity.address,E);e.ok?await ey(e.state):_(e.error||"出牌失败","error")}async function e_(){var e;let t,n,a;if(!en||!Y.userIdentity)return;let r=(e=Y.userIdentity.address,n=N(t=v(en)),a=W(e),n&&n.address===a?t.table?(t.passSeats.includes(n.seat)||t.passSeats.push(n.seat),t.log.unshift(`${n.name} 不要`),R(t).map(e=>e.seat).filter(e=>e!==t.lastWinnerSeat).every(e=>t.passSeats.includes(e))?(function(e){for(let t of R(e)){if(0===e.deck.length)break;t.hand.push(...w(e,1)),t.handCount=t.hand.length,t.hand.sort(O)}}(t),t.currentSeat=t.lastWinnerSeat,t.table=null,t.passSeats=[],t.log.unshift("本轮结束,所有玩家各补 1 张,重新领出")):M(t),t.seq+=1,{ok:!0,state:b(t)}):{ok:!1,error:"领出时不能不要",state:b(t)}:{ok:!1,error:"还没轮到你",state:b(t)});r.ok?await ey(r.state):_(r.error||"操作失败","error")}return(0,n.useEffect)(()=>{if(ep.length<=ef.current)return;let e=ep.slice(ef.current);for(let t of(ef.current=ep.length,e)){let e=t.event?.payload?.player?.name||"玩家";_(`${e} 已退出房间`,"info")}},[ep,_]),(0,n.useEffect)(()=>{if(!en||!er||"playing"!==en.status)return;let e=new Set(ee.players.map(e=>e.address.toLowerCase())),t=en.players.find(t=>!e.has(t.address.toLowerCase()));if(!t)return;let n=function(e,t){let n=v(e);if(!n)return null;let a=W(t),r=n.players.findIndex(e=>e.address===a);if(-1===r)return b(n);let s=n.players[r],l=n.currentSeat===s.seat,i=n.lastWinnerSeat===s.seat;n.players.splice(r,1),n.passSeats=n.passSeats.filter(e=>e!==s.seat),n.log.unshift(`${s.name} 已退出房间`);let o=A(n);if("playing"===n.status)if(o.length<=1)1===o.length?k(n,o[0]):(n.status="finished",n.log.unshift("玩家不足,本局结束"));else{if(l){let e=R(n);if(e.length>0){let t=e.findIndex(e=>e.seat>s.seat);n.currentSeat=e[t>=0?t:0].seat}}i&&n.table&&(n.table=null,n.passSeats=[])}return n.seq+=1,b(n)}(en,t.address);n&&ey(n)},[Y,er,ee.players,en]),(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:q.default.headerActions,children:[en&&(0,t.jsxs)("button",{className:"btn btn-sm",onClick:eg,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:q.default.page,children:en?(0,t.jsxs)("section",{className:q.default.gameGrid,children:[(0,t.jsxs)("div",{className:q.default.tablePanel,children:[(0,t.jsxs)("div",{className:q.default.roomBar,children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("strong",{children:["房间 ",en.id]}),(0,t.jsx)("span",{children:"lobby"===en.status?"等待开局":"finished"===en.status?"本局结束":"进行中"})]}),(0,t.jsx)("div",{className:q.default.badges,children:(0,t.jsx)("span",{children:Y.connected?"在线":"离线"})})]}),(0,t.jsx)("div",{className:q.default.seats,children:en.players.map(e=>(0,t.jsx)(X,{player:e,active:en.currentSeat===e.seat,winner:en.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}/对手位`}(ea,e,en.players.length)},e.seat))}),(0,t.jsxs)("div",{className:q.default.centerTable,children:[(0,t.jsxs)("div",{className:q.default.deckBox,children:[(0,t.jsx)("span",{children:"牌堆"}),(0,t.jsx)("strong",{children:en.deckCount})]}),(0,t.jsx)("div",{className:q.default.playedBox,children:en.table?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("strong",{children:[en.table.playerName," 出"," ",en.table.combo?.label||"牌"]}),(0,t.jsx)("div",{className:q.default.playedCards,children:en.table.cards.map(e=>(0,t.jsx)(Z,{card:e,small:!0},e.id))})]}):(0,t.jsx)("span",{children:"等待领出"})}),(0,t.jsxs)("div",{className:q.default.deckBox,children:[(0,t.jsx)("span",{children:"底分"}),(0,t.jsx)("strong",{children:en.baseScore})]})]}),(0,t.jsx)("div",{className:q.default.notice,children:"finished"===en.status?en.roundResult?(0,t.jsxs)("div",{className:q.default.resultDetail,children:[(0,t.jsxs)("p",{children:[(0,t.jsx)("strong",{children:en.roundResult.winnerName})," 获胜,赢"," ",en.roundResult.winnerGain," 分",en.roundResult.bombCount>0&&`(${en.roundResult.bombCount} 个炸弹)`]}),en.roundResult.losers.map(e=>(0,t.jsxs)("p",{children:[e.name,e.sealed?"(封牌)扣 20 分":`剩 ${e.cardsLeft} 张,扣 ${e.loss} 分`]},e.seat))]}):`${en.players.find(e=>e.seat===en.winnerSeat)?.name} 获胜`:es?"轮到你出牌":`等待 ${en.players.find(e=>e.seat===en.currentSeat)?.name||"玩家"}`})]}),(0,t.jsxs)("aside",{className:q.default.sidePanel,children:[(0,t.jsxs)("section",{className:q.default.panel,children:[(0,t.jsx)("h3",{children:"牌局"}),er&&"lobby"===en.status&&(0,t.jsxs)("button",{className:"btn btn-primary",disabled:en.players.length<2,onClick:eb,children:[(0,t.jsx)(s.Play,{size:16}),"开始游戏"]}),er&&"finished"===en.status&&(0,t.jsxs)("button",{className:"btn btn-primary",onClick:ev,children:[(0,t.jsx)(l,{size:16}),"再来一局"]}),!er&&(0,t.jsx)("p",{className:q.default.status,children:"等待房主操作。"})]}),(0,t.jsxs)("section",{className:q.default.panel,children:[(0,t.jsx)("h3",{children:"分数"}),(0,t.jsxs)("div",{className:q.default.scoreMeta,children:[(0,t.jsxs)("span",{children:["炸弹 ",en.bombCount," 次"]}),(0,t.jsxs)("span",{children:["弃牌 ",en.discardCount," 张"]})]}),en.players.map(e=>(0,t.jsxs)("div",{className:q.default.scoreRow,children:[(0,t.jsx)("span",{children:e.name}),(0,t.jsx)("strong",{children:e.score})]},e.seat))]}),(0,t.jsxs)("section",{className:K(q.default.panel,q.default.logPanel),children:[(0,t.jsx)("h3",{children:"牌局记录"}),en.log.map((e,n)=>(0,t.jsx)("p",{children:e},`${e}-${n}`))]})]}),(0,t.jsxs)("div",{className:q.default.handPanel,children:[(0,t.jsx)(X,{player:ea,active:es,winner:en.winnerSeat===ea?.seat}),(0,t.jsx)("div",{className:q.default.hand,children:ea?.hand.map(e=>(0,t.jsx)("button",{className:K(q.default.cardButton,E.includes(e.id)&&q.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)(Z,{card:e})},e.id))}),(0,t.jsxs)("div",{className:q.default.actions,children:[(0,t.jsxs)("div",{className:K(q.default.preview,ei&&q.default.valid),children:[(0,t.jsx)("strong",{children:ei?ei.label:E.length?"牌型不合法":"先选牌"}),(0,t.jsx)("span",{children:el.map(e=>e.label).join(" ")||"按选择顺序解释大小王"})]}),(0,t.jsxs)("button",{className:"btn btn-primary",disabled:!es||0===E.length||!ei,onClick:eS,children:[(0,t.jsx)(i.Send,{size:16}),"出牌"]}),(0,t.jsx)("button",{className:"btn",disabled:!es||!en.table,onClick:e_,children:"不要"})]})]})]}):(0,t.jsxs)("section",{className:q.default.entry,children:[(0,t.jsxs)("div",{className:q.default.entryBrand,children:[(0,t.jsx)("div",{className:q.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:q.default.entryPanel,children:[(0,t.jsxs)("div",{className:q.default.accountLine,children:[(0,t.jsx)("span",{children:"当前账号"}),(0,t.jsx)("strong",{children:Y.userIdentity?.displayName||"未登录"})]}),(0,t.jsxs)("button",{className:"btn btn-primary",disabled:Y.joining,onClick:eh,children:[(0,t.jsx)(s.Play,{size:16}),"创建房间"]}),(0,t.jsxs)("form",{onSubmit:em,className:q.default.joinForm,children:[(0,t.jsxs)("label",{children:["房间号",(0,t.jsx)("input",{value:C,maxLength:8,onChange:e=>$(e.target.value.toUpperCase()),placeholder:"输入房间号"})]}),(0,t.jsx)("button",{className:"btn",disabled:Y.joining||!C,children:"加入房间"})]}),(0,t.jsx)("p",{className:q.default.status,children:Y.isBackendReady?"节点已连接":"正在连接节点..."})]})]})})})}],31678)}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.page-module__bH9uOG__page{background:var(--bg-primary);min-height:calc(100vh - 64px);padding:18px}.page-module__bH9uOG__headerActions{align-items:center;gap:8px;display:flex}.page-module__bH9uOG__entry{grid-template-columns:minmax(0,1fr) 360px;align-items:center;gap:48px;max-width:1040px;min-height:calc(100vh - 116px);margin:0 auto;display:grid}.page-module__bH9uOG__entryBrand{align-items:center;gap:22px;display:flex}.page-module__bH9uOG__cardMark{width:112px;height:152px;box-shadow:var(--shadow-lg);color:#fff;background:#c93d32;border:8px solid #fff;border-radius:8px;flex:0 0 112px;place-items:center;font-size:70px;font-weight:900;display:grid}.page-module__bH9uOG__entryBrand h1{color:var(--text-primary);margin:0;font-size:64px;line-height:.95}.page-module__bH9uOG__entryBrand p{max-width:520px;color:var(--text-secondary);margin:18px 0 0;font-size:18px;line-height:1.7}.page-module__bH9uOG__entryPanel,.page-module__bH9uOG__panel,.page-module__bH9uOG__handPanel{border:1px solid var(--glass-border);background:var(--glass-bg);box-shadow:var(--glass-shadow);border-radius:8px}.page-module__bH9uOG__entryPanel{gap:16px;padding:22px;display:grid}.page-module__bH9uOG__accountLine,.page-module__bH9uOG__scoreMeta,.page-module__bH9uOG__roomBar,.page-module__bH9uOG__badges,.page-module__bH9uOG__actions{align-items:center;gap:10px;display:flex}.page-module__bH9uOG__accountLine{color:var(--text-secondary);justify-content:space-between;font-size:14px}.page-module__bH9uOG__accountLine strong{max-width:190px;color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.page-module__bH9uOG__joinForm,.page-module__bH9uOG__joinForm label{gap:8px;display:grid}.page-module__bH9uOG__joinForm label{color:var(--text-secondary);font-size:14px}.page-module__bH9uOG__joinForm input{border:1px solid var(--glass-border);background:var(--bg-primary);width:100%;min-height:40px;color:var(--text-primary);border-radius:8px;padding:0 12px}.page-module__bH9uOG__status{color:var(--text-secondary);margin:0;font-size:14px}.page-module__bH9uOG__gameGrid{grid-template:"table side"minmax(360px,1fr)"hand side"/minmax(0,1fr) 320px;gap:14px;min-height:calc(100vh - 104px);display:grid}.page-module__bH9uOG__tablePanel{color:#fff;background:radial-gradient(circle,#ffffff2e,#0000 46%),#247658;border-radius:8px;grid-area:table;grid-template-rows:auto auto 1fr auto;gap:14px;min-height:360px;padding:16px;display:grid}.page-module__bH9uOG__roomBar{justify-content:space-between}.page-module__bH9uOG__roomBar div:first-child{gap:2px;display:grid}.page-module__bH9uOG__roomBar span,.page-module__bH9uOG__badges span{color:#ffffffc7;font-size:13px}.page-module__bH9uOG__badges{flex-wrap:wrap;justify-content:flex-end}.page-module__bH9uOG__seats{grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:10px;display:grid}.page-module__bH9uOG__player{color:#17211b;background:#ffffffeb;border:1px solid #17211b1f;border-radius:8px;align-items:center;gap:10px;min-width:0;padding:8px;display:flex}.page-module__bH9uOG__tablePanel .page-module__bH9uOG__player{color:#fff;background:#ffffff2e}.page-module__bH9uOG__active{outline:3px solid #f3cf5a}.page-module__bH9uOG__winner{outline:3px solid #7be39e}.page-module__bH9uOG__avatar{color:#fff;background:#17211b;border-radius:50%;flex:0 0 40px;place-items:center;width:40px;height:40px;font-size:13px;font-weight:900;display:grid}.page-module__bH9uOG__player strong,.page-module__bH9uOG__player span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.page-module__bH9uOG__player span{opacity:.76;max-width:190px;font-size:12px}.page-module__bH9uOG__centerTable{grid-template-columns:120px minmax(0,1fr) 120px;align-items:center;gap:14px;display:grid}.page-module__bH9uOG__deckBox,.page-module__bH9uOG__playedBox{text-align:center;background:#0b221942;border-radius:8px}.page-module__bH9uOG__deckBox{gap:6px;padding:18px 8px;display:grid}.page-module__bH9uOG__deckBox span{opacity:.75;font-size:13px}.page-module__bH9uOG__deckBox strong{font-size:30px}.page-module__bH9uOG__playedBox{place-items:center;min-height:150px;padding:16px;display:grid}.page-module__bH9uOG__playedCards{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:10px;display:flex}.page-module__bH9uOG__notice{text-align:center;background:#0000002e;border-radius:8px;padding:10px 12px;font-weight:800}.page-module__bH9uOG__resultDetail{gap:4px;font-weight:600;display:grid}.page-module__bH9uOG__resultDetail p{margin:0;font-size:14px}.page-module__bH9uOG__sidePanel{grid-area:side;align-content:start;gap:12px;display:grid}.page-module__bH9uOG__panel{gap:12px;padding:14px;display:grid}.page-module__bH9uOG__panel h3{color:var(--text-primary);margin:0;font-size:15px}.page-module__bH9uOG__scoreMeta{color:var(--text-secondary);justify-content:space-between;font-size:13px}.page-module__bH9uOG__scoreRow{border-top:1px solid var(--glass-border);color:var(--text-primary);justify-content:space-between;padding-top:8px;display:flex}.page-module__bH9uOG__logPanel{max-height:280px;overflow:auto}.page-module__bH9uOG__logPanel p{color:var(--text-secondary);margin:0;font-size:13px;line-height:1.5}.page-module__bH9uOG__handPanel{grid-area:hand;gap:12px;padding:12px;display:grid}.page-module__bH9uOG__hand{gap:8px;min-height:118px;padding:4px 2px 10px;display:flex;overflow-x:auto}.page-module__bH9uOG__cardButton{background:0 0;border:0;border-radius:8px;flex:none;min-height:auto;padding:0;transition:transform .16s}.page-module__bH9uOG__picked{transform:translateY(-14px)}.page-module__bH9uOG__card{color:#17211b;text-align:left;background:#fff;border:1px solid #dbe1dc;border-radius:8px;grid-template-rows:auto 1fr;width:62px;height:92px;padding:7px;display:grid;box-shadow:0 8px 18px #0e16111f}.page-module__bH9uOG__card span{font-size:15px;font-weight:900}.page-module__bH9uOG__card i{place-self:end;font-size:22px;font-style:normal;font-weight:900}.page-module__bH9uOG__red{color:#c93d32}.page-module__bH9uOG__black{color:#17211b}.page-module__bH9uOG__small{width:46px;height:66px;padding:5px}.page-module__bH9uOG__small span{font-size:12px}.page-module__bH9uOG__small i{font-size:15px}.page-module__bH9uOG__actions{flex-wrap:wrap}.page-module__bH9uOG__preview{border:1px solid var(--glass-border);background:var(--bg-primary);min-height:46px;color:var(--text-secondary);border-radius:8px;flex:260px;padding:7px 10px;display:grid}.page-module__bH9uOG__preview strong{color:var(--text-primary);font-size:14px}.page-module__bH9uOG__preview span{text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.page-module__bH9uOG__valid{border-color:#176b4d70}@media (max-width:980px){.page-module__bH9uOG__entry{grid-template-columns:1fr;align-content:center}.page-module__bH9uOG__gameGrid{grid-template-columns:1fr;grid-template-areas:"table""hand""side"}}@media (max-width:640px){.page-module__bH9uOG__page{padding:10px}.page-module__bH9uOG__entryBrand{flex-direction:column;align-items:flex-start}.page-module__bH9uOG__entryBrand h1{font-size:42px}.page-module__bH9uOG__cardMark{border-width:6px;flex-basis:100px;width:74px;height:100px;font-size:46px}.page-module__bH9uOG__centerTable{grid-template-columns:1fr}.page-module__bH9uOG__actions>button{flex:110px}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.page-module__ergy6W__page{background:radial-gradient(circle at 35% 25%, #34c75924, transparent 32%), radial-gradient(circle at 78% 18%, #ff95001f, transparent 28%), var(--bg-primary);flex:1;min-height:0;padding:20px;overflow:auto}.page-module__ergy6W__headerActions{align-items:center;gap:8px;display:flex}.page-module__ergy6W__entry{grid-template-columns:minmax(0,1fr) 360px;align-items:center;gap:48px;max-width:1040px;min-height:calc(100vh - 116px);margin:0 auto;display:grid}.page-module__ergy6W__entryBrand{align-items:center;gap:22px;display:flex}.page-module__ergy6W__cardMark{width:112px;height:152px;box-shadow:var(--shadow-lg);color:#fff;background:linear-gradient(135deg,#1f8f5f,#284f7a);border:8px solid #fff;border-radius:8px;flex:0 0 112px;place-items:center;display:grid}.page-module__ergy6W__entryBrand h1{color:var(--text-primary);margin:0;font-size:64px;line-height:.95}.page-module__ergy6W__entryBrand p{max-width:520px;color:var(--text-secondary);margin:18px 0 0;font-size:18px;line-height:1.7}.page-module__ergy6W__entryPanel{border:1px solid var(--glass-border);background:var(--glass-bg);box-shadow:var(--glass-shadow);border-radius:8px;gap:16px;padding:22px;display:grid}.page-module__ergy6W__accountLine{color:var(--text-secondary);justify-content:space-between;align-items:center;gap:10px;font-size:14px;display:flex}.page-module__ergy6W__accountLine strong{max-width:190px;color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.page-module__ergy6W__joinForm,.page-module__ergy6W__joinForm label{gap:8px;display:grid}.page-module__ergy6W__joinForm label{color:var(--text-secondary);font-size:14px}.page-module__ergy6W__joinForm input{border:1px solid var(--glass-border);background:var(--bg-primary);width:100%;min-height:40px;color:var(--text-primary);border-radius:8px;padding:0 12px}.page-module__ergy6W__status{color:var(--text-secondary);margin:0;font-size:14px}.page-module__ergy6W__board{grid-template-columns:minmax(0,1fr) minmax(320px,380px);gap:18px;min-height:100%;display:grid}.page-module__ergy6W__table{background:linear-gradient(145deg, #0a533ee6, #163550eb), var(--glass-bg);min-height:560px;box-shadow:var(--shadow-lg);border:1px solid #ffffff2e;border-radius:8px;position:relative;overflow:hidden}.page-module__ergy6W__table:before{content:"";pointer-events:none;border:2px solid #ffffff2e;border-radius:8px;position:absolute;inset:24px}.page-module__ergy6W__tableCenter{color:#fff;background:#00000038;border:1px solid #ffffff38;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;gap:5px;width:150px;height:150px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 0 24px #00000029}.page-module__ergy6W__tableCenter span,.page-module__ergy6W__tableCenter small{opacity:.78;font-size:12px}.page-module__ergy6W__tableCenter strong{font-size:32px}.page-module__ergy6W__finishBanner{z-index:2;color:#fff;white-space:nowrap;background:linear-gradient(135deg,#30d158e6,#34c759e6);border-radius:20px;align-items:center;gap:8px;padding:10px 20px;font-size:15px;font-weight:700;display:flex;position:absolute;top:16px;left:50%;transform:translate(-50%);box-shadow:0 4px 16px #30d15866}.page-module__ergy6W__finishBannerIcon{font-size:20px}.page-module__ergy6W__seats{z-index:1;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:34px;display:grid;position:relative}.page-module__ergy6W__seat{color:#fff;background:#ffffff1a;border:1px solid #ffffff29;border-radius:8px;grid-template-columns:44px minmax(0,1fr);align-items:center;gap:10px;min-height:88px;padding:12px;display:grid}.page-module__ergy6W__seatTurn{border-color:#ffd666eb;box-shadow:0 0 0 2px #ffd6662e}.page-module__ergy6W__seatWinner{border-color:#30d158eb;box-shadow:0 0 0 2px #30d15833}.page-module__ergy6W__seatFolded{opacity:.5}.page-module__ergy6W__seatAvatar{color:#fff;background:#17211b;border-radius:8px;place-items:center;width:44px;height:44px;font-size:15px;font-weight:900;display:grid}.page-module__ergy6W__seatMain,.page-module__ergy6W__seatMeta{flex-direction:column;gap:4px;min-width:0;display:flex}.page-module__ergy6W__seatMain strong,.page-module__ergy6W__seatMain span,.page-module__ergy6W__seatMeta span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.page-module__ergy6W__seatMain strong{font-size:14px}.page-module__ergy6W__seatMain span,.page-module__ergy6W__seatMeta{opacity:.76;font-size:12px}.page-module__ergy6W__seatMeta{flex-direction:row;grid-column:1/-1;justify-content:space-between}.page-module__ergy6W__panel{flex-direction:column;gap:14px;min-width:0;display:flex}.page-module__ergy6W__panelSection{border:1px solid var(--glass-border);background:var(--glass-bg);-webkit-backdrop-filter:var(--blur-md);box-shadow:var(--glass-shadow);border-radius:8px;padding:16px}.page-module__ergy6W__panelTitle{color:var(--text-primary);align-items:center;gap:8px;margin-bottom:12px;font-size:14px;font-weight:600;display:flex}.page-module__ergy6W__hand{grid-template-columns:repeat(3,62px);justify-content:center;gap:10px;display:grid}.page-module__ergy6W__card{color:#17211b;text-align:left;background:#fff;border:1px solid #dbe1dc;border-radius:8px;grid-template-rows:auto 1fr;width:62px;height:92px;padding:7px;display:grid;box-shadow:0 8px 18px #0e16111f}.page-module__ergy6W__card span{font-size:15px;font-weight:900}.page-module__ergy6W__card i{place-self:end;font-size:22px;font-style:normal;font-weight:900}.page-module__ergy6W__red{color:#c93d32}.page-module__ergy6W__black{color:#17211b}.page-module__ergy6W__cardBack{color:#fff;background:repeating-linear-gradient(45deg,#ffffff1f 0 6px,#0000 6px 12px),linear-gradient(135deg,#243f7a,#752f4d);border:1px solid #dbe1dc;border-radius:8px;justify-content:center;align-items:center;width:62px;height:92px;display:flex;box-shadow:0 8px 18px #0e16111f}.page-module__ergy6W__handLabel{text-align:center;color:var(--text-secondary);margin-top:10px;font-size:13px}.page-module__ergy6W__actionGrid,.page-module__ergy6W__raiseRow{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px;display:grid}.page-module__ergy6W__raiseRow{grid-template-columns:minmax(0,1fr) 96px}.page-module__ergy6W__statusGrid{grid-template-columns:76px minmax(0,1fr);align-items:start;gap:8px 12px;font-size:13px;display:grid}.page-module__ergy6W__statusGrid span{color:var(--text-secondary)}.page-module__ergy6W__statusGrid strong{color:var(--text-primary);overflow-wrap:anywhere;font-weight:600}.page-module__ergy6W__muted{color:var(--text-secondary);margin:0;font-size:13px;line-height:1.6}.page-module__ergy6W__compareOverlay{z-index:100;-webkit-backdrop-filter:blur(4px);background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.page-module__ergy6W__compareBox{background:var(--glass-bg);border:1px solid var(--glass-border);box-shadow:var(--shadow-lg);border-radius:16px;flex-direction:column;align-items:center;gap:20px;width:90%;max-width:560px;padding:28px 36px;display:flex}.page-module__ergy6W__compareTitle{color:var(--text-primary);font-size:18px;font-weight:700}.page-module__ergy6W__comparePlayers{align-items:center;gap:20px;width:100%;display:flex}.page-module__ergy6W__compareSide{background:#ffffff0d;border:2px solid #0000;border-radius:12px;flex-direction:column;flex:1;align-items:center;gap:12px;padding:16px;display:flex}.page-module__ergy6W__compareWinner{background:#30d1581a;border-color:#30d158cc}.page-module__ergy6W__compareName{color:var(--text-primary);text-align:center;text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:14px;font-weight:600;overflow:hidden}.page-module__ergy6W__compareCards{justify-content:center;gap:8px;display:flex}.page-module__ergy6W__compareCards .page-module__ergy6W__card{width:52px;height:76px;padding:5px}.page-module__ergy6W__compareCards .page-module__ergy6W__card span{font-size:13px}.page-module__ergy6W__compareCards .page-module__ergy6W__card i{font-size:18px}.page-module__ergy6W__compareCards .page-module__ergy6W__cardBack{width:52px;height:76px}.page-module__ergy6W__compareLabel{color:var(--text-secondary);font-size:12px;font-weight:500}.page-module__ergy6W__compareVs{color:var(--text-secondary);opacity:.6;font-size:20px;font-weight:900}.page-module__ergy6W__compareResult{color:#30d158;font-size:16px;font-weight:700}@media (max-width:980px){.page-module__ergy6W__entry{grid-template-columns:1fr;align-content:center}.page-module__ergy6W__board{grid-template-columns:1fr}.page-module__ergy6W__table{min-height:420px}}@media (max-width:640px){.page-module__ergy6W__page{padding:12px}.page-module__ergy6W__entryBrand{flex-direction:column;align-items:flex-start}.page-module__ergy6W__entryBrand h1{font-size:42px}.page-module__ergy6W__cardMark{border-width:6px;flex-basis:100px;width:74px;height:100px}.page-module__ergy6W__seats{grid-template-columns:1fr;padding:22px}.page-module__ergy6W__tableCenter{margin:24px auto 0;position:static;transform:none}.page-module__ergy6W__table:before{inset:14px}.page-module__ergy6W__hand{grid-template-columns:repeat(3,minmax(58px,72px))}.page-module__ergy6W__actionGrid,.page-module__ergy6W__raiseRow{grid-template-columns:1fr}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,31214,e=>{"use strict";let t=(0,e.i(56420).default)("cloud",[["path",{d:"M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z",key:"p7xjir"}]]);e.s(["Cloud",0,t],31214)},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),i=(0,n.useCallback)(()=>{s(e=>e||(t.onOpen?.(),!0))},[t.onOpen]),l=(0,n.useCallback)(()=>{s(e=>e?(t.onClose?.(),!1):e)},[t.onClose]);return[a,{open:i,close:l,toggle:(0,n.useCallback)(()=>{a?l():i()},[l,i,a]),set:s}]}e.s(["useDisclosure",0,r],5142);let s=(0,n.createContext)(null);e.s(["default",0,function({sidebar:e,headerTitle:i,headerRight:l,sidebarToggleReplacement:o,defaultHide:c=!1,children:u}){let[d,h]=r(!1),[p,f]=(0,n.useState)(c),m=(0,n.useRef)(c),y=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)"),x=(0,n.useCallback)((e={})=>{h.close(),e.collapse&&f(!0)},[h]);(0,n.useEffect)(()=>{c!==m.current&&(c?x({collapse:!0}):f(!1),m.current=c)},[c,x]);let j=()=>{y?h.open():f(!1)};return(0,t.jsx)(s.Provider,{value:{closeSidebar:x,openSidebar:j,isSidebarVisible:y?d:!p},children:(0,t.jsxs)("div",{className:"app-layout",children:[(0,t.jsx)("div",{className:`sidebar-overlay ${d?"visible":""}`,onClick:()=>x()}),(0,t.jsx)("div",{className:`sidebar ${d?"open":""} ${p?"collapsed":""}`,children:e({closeSidebar:x,openSidebar:j})}),(0,t.jsxs)("div",{className:"main-content",children:[(0,t.jsxs)("header",{className:"app-header",children:[(0,t.jsxs)("div",{className:"header-left",children:[o??(0,t.jsx)("button",{onClick:()=>{y?h.toggle():f(!p)},className:"btn btn-icon sidebar-toggle-btn","aria-label":y?"打开菜单":p?"展开侧边栏":"收起侧边栏",children:(0,t.jsx)(a,{size:16})}),i]}),(0,t.jsx)("div",{className:"header-right",children:l})]}),u]})]})})},"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),i=(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:i,children:"退出"}):(0,t.jsx)("button",{className:"btn btn-primary login-btn",onClick:s,children:"登录"})]})}])},39626,e=>{"use strict";var t=e.i(18050);let n=(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 a=e.i(59665);e.s(["default",0,function({label:e="打开侧边栏",className:r="",variant:s="primary"}){let{isSidebarVisible:i,openSidebar:l}=(0,a.useAppShell)();return i?null:(0,t.jsxs)("button",{type:"button",className:`btn ${"primary"===s?"btn-primary":""} sidebar-open-hint ${r}`.trim(),onClick:l,children:[(0,t.jsx)(n,{size:16}),e]})}],39626)},10566,e=>{"use strict";let t=(0,e.i(56420).default)("notebook-pen",[["path",{d:"M13.4 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-7.4",key:"re6nr2"}],["path",{d:"M2 6h4",key:"aawbzj"}],["path",{d:"M2 10h4",key:"l0bgd4"}],["path",{d:"M2 14h4",key:"1gsvsf"}],["path",{d:"M2 18h4",key:"1bu2t1"}],["path",{d:"M21.378 5.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z",key:"pqwjuv"}]]);e.s(["NotebookPen",0,t],10566)},53138,51757,e=>{"use strict";var t=e.i(56420);let n=(0,t.default)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);e.s(["AlertTriangle",0,n],53138);let a=(0,t.default)("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);e.s(["CheckCircle2",0,a],51757)},73474,e=>{"use strict";let t=(0,e.i(56420).default)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);e.s(["Trash2",0,t],73474)},56522,e=>{"use strict";let t=(0,e.i(56420).default)("save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);e.s(["Save",0,t],56522)},22315,(e,t,n)=>{e.e,t.exports=function(){"use strict";var e="millisecond",t="second",n="minute",a="hour",r="week",s="month",i="quarter",l="year",o="date",c="Invalid Date",u=/^(\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 a=String(e);return!a||a.length>=t?e:""+Array(t+1-a.length).join(n)+e},p="en",f={};f[p]={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",y=function(e){return e instanceof v||!(!e||!e[m])},x=function e(t,n,a){var r;if(!t)return p;if("string"==typeof t){var s=t.toLowerCase();f[s]&&(r=s),n&&(f[s]=n,r=s);var i=t.split("-");if(!r&&i.length>1)return e(i[0])}else{var l=t.name;f[l]=t,r=l}return!a&&r&&(p=r),r||!a&&p},j=function(e,t){if(y(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new v(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 a=12*(n.year()-t.year())+(n.month()-t.month()),r=t.clone().add(a,s),i=n-r<0,l=t.clone().add(a+(i?-1:1),s);return+(-(a+(n-r)/(i?r-l:l-r))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(c){return({M:s,y:l,w:r,d:"day",D:o,h:a,m:n,s:t,ms:e,Q:i})[c]||String(c||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}};b.l=x,b.i=y,b.w=function(e,t){return j(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var v=function(){function h(e){this.$L=x(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[m]=!0}var p=h.prototype;return p.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 a=t.match(u);if(a){var r=a[2]-1||0,s=(a[7]||"0").substring(0,3);return n?new Date(Date.UTC(a[1],r,a[3]||1,a[4]||0,a[5]||0,a[6]||0,s)):new Date(a[1],r,a[3]||1,a[4]||0,a[5]||0,a[6]||0,s)}}return new Date(t)}(e),this.init()},p.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()},p.$utils=function(){return b},p.isValid=function(){return this.$d.toString()!==c},p.isSame=function(e,t){var n=j(e);return this.startOf(t)<=n&&n<=this.endOf(t)},p.isAfter=function(e,t){return j(e)<this.startOf(t)},p.isBefore=function(e,t){return this.endOf(t)<j(e)},p.$g=function(e,t,n){return b.u(e)?this[t]:this.set(n,e)},p.unix=function(){return Math.floor(this.valueOf()/1e3)},p.valueOf=function(){return this.$d.getTime()},p.startOf=function(e,i){var c=this,u=!!b.u(i)||i,d=b.p(e),h=function(e,t){var n=b.w(c.$u?Date.UTC(c.$y,t,e):new Date(c.$y,t,e),c);return u?n:n.endOf("day")},p=function(e,t){return b.w(c.toDate()[e].apply(c.toDate("s"),(u?[0,0,0,0]:[23,59,59,999]).slice(t)),c)},f=this.$W,m=this.$M,y=this.$D,x="set"+(this.$u?"UTC":"");switch(d){case l:return u?h(1,0):h(31,11);case s:return u?h(1,m):h(0,m+1);case r:var j=this.$locale().weekStart||0,v=(f<j?f+7:f)-j;return h(u?y-v:y+(6-v),m);case"day":case o:return p(x+"Hours",0);case a:return p(x+"Minutes",1);case n:return p(x+"Seconds",2);case t:return p(x+"Milliseconds",3);default:return this.clone()}},p.endOf=function(e){return this.startOf(e,!1)},p.$set=function(r,i){var c,u=b.p(r),d="set"+(this.$u?"UTC":""),h=((c={}).day=d+"Date",c[o]=d+"Date",c[s]=d+"Month",c[l]=d+"FullYear",c[a]=d+"Hours",c[n]=d+"Minutes",c[t]=d+"Seconds",c[e]=d+"Milliseconds",c)[u],p="day"===u?this.$D+(i-this.$W):i;if(u===s||u===l){var f=this.clone().set(o,1);f.$d[h](p),f.init(),this.$d=f.set(o,Math.min(this.$D,f.daysInMonth())).$d}else h&&this.$d[h](p);return this.init(),this},p.set=function(e,t){return this.clone().$set(e,t)},p.get=function(e){return this[b.p(e)]()},p.add=function(e,i){var o,c=this;e=Number(e);var u=b.p(i),d=function(t){var n=j(c);return b.w(n.date(n.date()+Math.round(t*e)),c)};if(u===s)return this.set(s,this.$M+e);if(u===l)return this.set(l,this.$y+e);if("day"===u)return d(1);if(u===r)return d(7);var h=((o={})[n]=6e4,o[a]=36e5,o[t]=1e3,o)[u]||1,p=this.$d.getTime()+e*h;return b.w(p,this)},p.subtract=function(e,t){return this.add(-1*e,t)},p.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return n.invalidDate||c;var a=e||"YYYY-MM-DDTHH:mm:ssZ",r=b.z(this),s=this.$H,i=this.$m,l=this.$M,o=n.weekdays,u=n.months,h=n.meridiem,p=function(e,n,r,s){return e&&(e[n]||e(t,a))||r[n].slice(0,s)},f=function(e){return b.s(s%12||12,e,"0")},m=h||function(e,t,n){var a=e<12?"AM":"PM";return n?a.toLowerCase():a};return a.replace(d,function(e,a){return a||function(e){switch(e){case"YY":return String(t.$y).slice(-2);case"YYYY":return b.s(t.$y,4,"0");case"M":return l+1;case"MM":return b.s(l+1,2,"0");case"MMM":return p(n.monthsShort,l,u,3);case"MMMM":return p(u,l);case"D":return t.$D;case"DD":return b.s(t.$D,2,"0");case"d":return String(t.$W);case"dd":return p(n.weekdaysMin,t.$W,o,2);case"ddd":return p(n.weekdaysShort,t.$W,o,3);case"dddd":return o[t.$W];case"H":return String(s);case"HH":return b.s(s,2,"0");case"h":return f(1);case"hh":return f(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 r}return null}(e)||r.replace(":","")})},p.utcOffset=function(){return-(15*Math.round(this.$d.getTimezoneOffset()/15))},p.diff=function(e,o,c){var u,d=this,h=b.p(o),p=j(e),f=(p.utcOffset()-this.utcOffset())*6e4,m=this-p,y=function(){return b.m(d,p)};switch(h){case l:u=y()/12;break;case s:u=y();break;case i:u=y()/3;break;case r:u=(m-f)/6048e5;break;case"day":u=(m-f)/864e5;break;case a:u=m/36e5;break;case n:u=m/6e4;break;case t:u=m/1e3;break;default:u=m}return c?u:b.a(u)},p.daysInMonth=function(){return this.endOf(s).$D},p.$locale=function(){return f[this.$L]},p.locale=function(e,t){if(!e)return this.$L;var n=this.clone(),a=x(e,t,!0);return a&&(n.$L=a),n},p.clone=function(){return b.w(this.$d,this)},p.toDate=function(){return new Date(this.valueOf())},p.toJSON=function(){return this.isValid()?this.toISOString():null},p.toISOString=function(){return this.$d.toISOString()},p.toString=function(){return this.$d.toUTCString()},h}(),g=v.prototype;return j.prototype=g,[["$ms",e],["$s",t],["$m",n],["$H",a],["$W","day"],["$M",s],["$y",l],["$D",o]].forEach(function(e){g[e[1]]=function(t){return this.$g(t,e[0],e[1])}}),j.extend=function(e,t){return e.$i||(e(t,v,j),e.$i=!0),j},j.locale=x,j.isDayjs=y,j.unix=function(e){return j(1e3*e)},j.en=f[p],j.Ls=f,j.p={},j}()},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 a(e){let t;if(!e)return"";let a=(0,n.default)(Number(e)),r=a.hour();return t=r>=0&&r<3?"凌晨":r>=3&&r<6?"拂晓":r>=6&&r<9?"早晨":r>=9&&r<12?"上午":r>=12&&r<15?"下午":r>=15&&r<18?"傍晚":r>=18&&r<21?"晚上":"深夜",a.format(`YYYY年M月D日 ${t}h:m`)}e.s(["formatDate",0,a,"formatTime",0,a],77816)},26091,e=>{"use strict";let t=(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,t],26091)},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)},66595,e=>{"use strict";let t=(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,t],66595)},77071,e=>{"use strict";let t=(0,e.i(56420).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);e.s(["Plus",0,t],77071)},26067,e=>{"use strict";let t=(0,e.i(56420).default)("folder",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]);e.s(["Folder",0,t],26067)},25981,67927,e=>{"use strict";var t=e.i(56420);let n=(0,t.default)("upload",[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]]);e.s(["Upload",0,n],25981);let a=(0,t.default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);e.s(["ChevronRight",0,a],67927)},32391,60923,86512,e=>{"use strict";var t=e.i(18050),n=e.i(71645),a=e.i(53138),r=e.i(51757),s=e.i(31214),i=e.i(62368);let l=(0,e.i(56420).default)("ellipsis",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]]);var o=e.i(25981),c=e.i(71192);e.s(["NoteMoreMenu",0,function({sync:e}){let u=(0,n.useRef)(null),[d,h]=(0,n.useState)(!1),p=(0,c.useUserStore)(e=>e.wallet),f=null!==e.action;async function m(e){h(!1),await e()}return(0,n.useEffect)(()=>{if(d)return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e);function e(e){u.current?.contains(e.target)||h(!1)}},[d]),(0,t.jsxs)("div",{className:"note-more",ref:u,children:[(0,t.jsx)("button",{className:"btn btn-icon note-more-trigger",onClick:()=>h(e=>!e),title:"更多","aria-label":"更多",children:(0,t.jsx)(l,{size:16})}),d&&(0,t.jsxs)("div",{className:"note-more-menu",children:[(0,t.jsxs)("div",{className:`ui-notice note-sync-status ${e.hasConflict?"warning conflict":""}`,children:[(0,t.jsx)("span",{className:`ui-icon-tile note-sync-status-icon ${e.hasConflict?"warning":""}`,children:e.hasConflict?(0,t.jsx)(a.AlertTriangle,{size:16}):"synced"===e.status?(0,t.jsx)(r.CheckCircle2,{size:16}):(0,t.jsx)(s.Cloud,{size:16})}),(0,t.jsxs)("span",{children:[(0,t.jsx)("strong",{children:"云同步"}),(0,t.jsx)("small",{children:e.statusLabel})]})]}),(0,t.jsxs)("button",{className:"note-more-item",onClick:()=>m(e.exportLocalBackup),disabled:!p||f,children:[(0,t.jsx)(o.Upload,{size:16}),"本地导出"]}),(0,t.jsxs)("button",{className:"note-more-item",onClick:()=>m(e.importLocalBackup),disabled:!p||f,children:[(0,t.jsx)(i.Download,{size:16}),"本地导入"]})]})]})}],32391);var u=e.i(16327),d=e.i(67927),h=e.i(26067),p=e.i(63676);e.i(4121);var f=e.i(57667),m=e.i(3789);e.s(["NoteMoveModal",0,function({target:e,directories:a,onMove:r,onClose:s}){let i=(0,m.normalizeNotePath)(e.path||""),l="directory"===e.type?(0,m.normalizeNotePath)(e.path?`${e.path}/${e.name}`:e.name):(0,m.getNoteFullPath)(e),o=a.filter(t=>"directory"!==e.type||t.path!==l&&!t.path.startsWith(`${l}/`)),[c,y]=(0,n.useState)(i),[x,j]=(0,n.useState)(""),[b,v]=(0,n.useState)(new Set),g=(0,m.normalizeNotePath)(x),k=x.trim()?g:c,w=(0,m.normalizeNotePath)(k)===i,N=new Map;for(let e of o){let t=N.get(e.parentPath)||[];t.push(e),N.set(e.parentPath,t)}let S=o.filter(e=>{if(!e.parentPath)return!0;let t=e.parentPath.split("/").filter(Boolean);return t.every((e,n)=>b.has(t.slice(0,n+1).join("/")))}),M=[{label:"全部笔记",path:""},...c.split("/").filter(Boolean).map((e,t,n)=>({label:e,path:n.slice(0,t+1).join("/")}))];function $(e){y((0,m.normalizeNotePath)(e)),j("")}return(0,t.jsx)(f.ModalOverlay,{onClose:s,children:(0,t.jsxs)("div",{className:"note-move-modal",onClick:e=>e.stopPropagation(),children:[(0,t.jsxs)("div",{className:"modal-header",children:[(0,t.jsx)("h3",{children:"移动笔记"}),(0,t.jsx)("button",{className:"btn btn-icon",onClick:s,children:(0,t.jsx)(p.X,{size:18})})]}),(0,t.jsxs)("div",{className:"note-move-target",children:[(0,t.jsx)("span",{children:"正在移动"}),(0,t.jsx)("strong",{children:e.name})]}),(0,t.jsx)("div",{className:"note-move-path",children:M.map((e,a)=>(0,t.jsxs)(n.default.Fragment,{children:[a>0&&(0,t.jsx)("span",{children:"/"}),(0,t.jsx)("button",{type:"button",onClick:()=>$(e.path),children:e.label})]},e.path||"root"))}),(0,t.jsxs)("div",{className:"note-move-folder-list",children:[(0,t.jsxs)("button",{type:"button",className:`note-move-folder-item ${""===c?"selected":""}`,onClick:()=>$(""),children:[(0,t.jsx)("span",{className:"note-move-folder-spacer"}),(0,t.jsx)(h.Folder,{className:"note-move-folder-icon",size:16}),(0,t.jsx)("span",{children:"全部笔记"})]}),0===o.length?(0,t.jsx)("p",{className:"note-move-empty",children:"还没有可选文件夹"}):S.map(e=>{let n=N.has(e.path),a=b.has(e.path);return(0,t.jsxs)("button",{type:"button",className:`note-move-folder-item note-move-depth-${Math.min(e.depth,4)} ${c===e.path?"selected":""}`,onClick:()=>{var t;$(t=e.path),N.has(t)&&v(e=>{let n=new Set(e);return n.has(t)?n.delete(t):n.add(t),n})},children:[n?a?(0,t.jsx)(u.ChevronDown,{className:"note-move-expander",size:14}):(0,t.jsx)(d.ChevronRight,{className:"note-move-expander",size:14}):(0,t.jsx)("span",{className:"note-move-folder-spacer"}),(0,t.jsx)(h.Folder,{className:"note-move-folder-icon",size:16}),(0,t.jsx)("span",{children:e.name}),e.parentPath&&(0,t.jsx)("small",{children:e.parentPath})]},e.path)})]}),(0,t.jsx)("input",{className:"input input-compact",value:x,onChange:e=>j(e.target.value),placeholder:"或输入新目录路径,如 文章/摘录"}),(0,t.jsxs)("div",{className:"note-move-destination",children:["目标位置:",k||"全部笔记"]}),(0,t.jsxs)("div",{className:"modal-actions",children:[(0,t.jsx)("button",{className:"btn btn-secondary",onClick:s,children:"取消"}),(0,t.jsx)("button",{className:"btn btn-primary",onClick:function(){w||r(k)},disabled:w,children:"移动"})]})]})})}],60923);var y=e.i(11241),x=e.i(27648);e.s(["NoteSidebar",0,function({children:e}){return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"sidebar-header sidebar-header-link",onClick:()=>{window.location.href="/"},children:[(0,t.jsx)(y.ArrowLeft,{size:18}),(0,t.jsx)("h1",{children:"MOST PEOPLE"})]}),e,(0,t.jsx)(x.default,{})]})}],86512)},67585,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"BailoutToCSR",{enumerable:!0,get:function(){return r}});let a=e.r(32061);function r({reason:e,children:t}){if("u"<typeof window)throw Object.defineProperty(new a.BailoutToCSRError(e),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return t}},9885,(e,t,n)=>{"use strict";function a(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"encodeURIPath",{enumerable:!0,get:function(){return a}})},52157,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"PreloadChunks",{enumerable:!0,get:function(){return o}});let a=e.r(18050),r=e.r(74080),s=e.r(63599),i=e.r(9885),l=e.r(43369);function o({moduleIds:e}){if("u">typeof window)return null;let t=s.workAsyncStorage.getStore();if(void 0===t)return null;let n=[];if(t.reactLoadableManifest&&e){let a=t.reactLoadableManifest;for(let t of e){if(!a[t])continue;let e=a[t].files;n.push(...e)}}if(0===n.length)return null;let c=(0,l.getAssetTokenQuery)();return(0,a.jsx)(a.Fragment,{children:n.map(e=>{let n=`${t.assetPrefix}/_next/${(0,i.encodeURIPath)(e)}${c}`;return e.endsWith(".css")?(0,a.jsx)("link",{precedence:"dynamic",href:n,rel:"stylesheet",as:"style",nonce:t.nonce},e):((0,r.preload)(n,{as:"script",fetchPriority:"low",nonce:t.nonce}),null)})})}},69093,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return c}});let a=e.r(18050),r=e.r(71645),s=e.r(67585),i=e.r(52157);function l(e){return{default:e&&"default"in e?e.default:e}}let o={loader:()=>Promise.resolve(l(()=>null)),loading:null,ssr:!0},c=function(e){let t={...o,...e},n=(0,r.lazy)(()=>t.loader().then(l)),c=t.loading;function u(e){let l=c?(0,a.jsx)(c,{isLoading:!0,pastDelay:!0,error:null}):null,o=!t.ssr||!!t.loading,u=o?r.Suspense:r.Fragment,d=t.ssr?(0,a.jsxs)(a.Fragment,{children:["u"<typeof window?(0,a.jsx)(i.PreloadChunks,{moduleIds:t.modules}):null,(0,a.jsx)(n,{...e})]}):(0,a.jsx)(s.BailoutToCSR,{reason:"next/dynamic",children:(0,a.jsx)(n,{...e})});return(0,a.jsx)(u,{...o?{fallback:l}:{},children:d})}return u.displayName="LoadableComponent",u}},70703,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return r}});let a=e.r(55682)._(e.r(69093));function r(e,t){let n={};"function"==typeof e&&(n.loader=e);let r={...n,...t};return(0,a.default)({...r,modules:r.loadableGenerated?.modules})}("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)},58559,e=>{"use strict";var t=e.i(18050),n=e.i(71645),a=e.i(70703),r=e.i(18566),s=e.i(56420);let i=(0,s.default)("pencil-ruler",[["path",{d:"M13 7 8.7 2.7a2.41 2.41 0 0 0-3.4 0L2.7 5.3a2.41 2.41 0 0 0 0 3.4L7 13",key:"orapub"}],["path",{d:"m8 6 2-2",key:"115y1s"}],["path",{d:"m18 16 2-2",key:"ee94s4"}],["path",{d:"m17 11 4.3 4.3c.94.94.94 2.46 0 3.4l-2.6 2.6c-.94.94-2.46.94-3.4 0L11 17",key:"cfq27r"}],["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"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);var l=e.i(72382),o=e.i(26091),c=e.i(26067);let u=(0,s.default)("move",[["path",{d:"M12 2v20",key:"t6zp3m"}],["path",{d:"m15 19-3 3-3-3",key:"11eu04"}],["path",{d:"m19 9 3 3-3 3",key:"1mg7y2"}],["path",{d:"M2 12h20",key:"9i4pu4"}],["path",{d:"m5 9-3 3 3 3",key:"j64kie"}],["path",{d:"m9 5 3-3 3 3",key:"l8vdw6"}]]);var d=e.i(6537),h=e.i(96699),p=e.i(10566),f=e.i(77071),m=e.i(56522),y=e.i(66595),x=e.i(35965),j=e.i(73474),b=e.i(63676),v=e.i(59665),g=e.i(39626);e.i(4121);var k=e.i(88361),w=e.i(47910),N=e.i(3593),S=e.i(71192),M=e.i(66112),$=e.i(77816),C=e.i(3789),z=e.i(32391),D=e.i(60923),P=e.i(86512);let O="https://api.most.box/auth/backup";async function A(e,t){let n=await e.clone().json().catch(()=>null);return n?.error||t}function T(e,t){return(0,M.mostEncode)(JSON.stringify({notes:e||[]}),t)}function _(e,t){if(!String(e||"").startsWith("mp://1"))throw Error("无效的备份数据格式");let n=(0,M.mostDecode)(e,t);if(!n)throw Error("解密失败,请确认当前 Web3 登录账号正确");let a=JSON.parse(n);if(!Array.isArray(a.notes))throw Error("备份数据缺少 notes");return a}async function L(e){return(0,C.calculateNoteCid)(JSON.stringify({notes:e||[]}))}async function E(e,t,n=O){let a=Date.now().toString(),r=new URL(n).pathname,s=`${a}:${String(t).toUpperCase()}:${r}`,{address:i,signature:l}=await (0,M.mostSignMessage)(e.danger,s);return{Authorization:`${i},${a},${l}`}}async function U(e,t){let n=JSON.stringify({notes:t||[]}),a=await (0,C.calculateNoteCid)(n);return{cid:a,body:T(t,e.danger),headers:{"Content-Type":"text/plain","x-backup-cid":a,...await E(e,"PUT",O)}}}async function R(e,t,n=O){let a=await U(e,t),r=await fetch(n,{method:"PUT",headers:a.headers,body:a.body});if(!r.ok)throw Error(await A(r,"云备份失败"));return{cid:a.cid}}async function H(e,t=O){let n=await fetch(t,{method:"GET",headers:await E(e,"GET",t)});if(404===n.status)return{found:!1,cid:"",time:0,notes:[]};if(!n.ok)throw Error(await A(n,"云端恢复失败"));let a=await n.text();if(!a)throw Error("云端无备份数据");let r=_(a,e.danger);return{found:!0,cid:n.headers.get("x-backup-cid")||"",time:Number(n.headers.get("x-backup-time")||0),notes:r.notes}}let F=!1,W="",Y="";function I(e,t){return e instanceof Error?e.message:t}let B=(0,a.default)(()=>e.A(71504).then(e=>e.MilkdownEditor),{loadableGenerated:{modules:[36975]},ssr:!1,loading:()=>(0,t.jsx)("div",{className:"note-editor-loading",children:"加载编辑器..."})});function V(e,t){return e instanceof Error?e.message:t}function q(){let e=(0,r.useRouter)(),a=(0,r.useSearchParams)(),s=(0,n.useRef)(null),O=function(){let e=(0,S.useUserStore)(e=>e.wallet),t=(0,S.useUserStore)(e=>e.openLoginModal),a=(0,N.useAppStore)(e=>e.addToast),r=(0,N.useAppStore)(e=>e.notes),s=(0,N.useAppStore)(e=>e.importNotes),i=(0,N.useAppStore)(e=>e.localDataReady),[l,o]=(0,n.useState)(null),[c,u]=(0,n.useState)(e?"idle":"disabled"),[d,h]=(0,n.useState)(F),[p,f]=(0,n.useState)(!1),m=(0,n.useRef)(0),y=(0,n.useCallback)(e=>{F=e,h(e)},[]),x=(0,n.useCallback)((e=!1)=>{let n=S.useUserStore.getState().wallet;return n||(e||t(),null)},[a,t]),j=(0,n.useCallback)(async(e={})=>{let{silent:t=!1,confirmConflict:n=!0}=e,r=x(t);if(!r)return u("disabled"),!1;if(F&&n&&!window.confirm("本地数据与云端不一致,本地修改将会覆盖云端数据,是否继续?"))return t||a("已取消同步","info"),u("conflict"),!1;o("save"),u("uploading");try{let e=N.useAppStore.getState().notes;return W=(await R(r,e)).cid,Y=r.address,y(!1),u("synced"),t||a("云端备份已更新","success"),!0}catch(e){return u("error"),t?console.info(I(e,"云备份失败")):a(I(e,"云备份失败"),"error"),!1}finally{o(null)}},[a,x,y]),b=(0,n.useCallback)(async(e={})=>{let{manual:t=!1,uploadWhenMissing:n=!1}=e,r=x(!t);if(!r)return u("disabled"),!1;o(t?"restore":"sync"),u(t?"restoring":"checking");try{let e=await H(r),i=N.useAppStore.getState().notes;if(!e.found){if(y(!1),Y=r.address,n&&i.length>0)return o(null),j({silent:!0,confirmConflict:!1});return u(i.length>0?"idle":"synced"),t&&a("云端暂无备份","info"),!1}let l=e.notes||[],c=await L(i),d=e.cid||await L(l);if(i.length>0&&c!==d&&!window.confirm("云端备份与本地笔记不一致。恢复会覆盖本地笔记,是否继续?"))return y(!0),u("conflict"),t&&a("已取消恢复","info"),!1;return c!==d&&s(l),W=d,Y=r.address,y(!1),u("synced"),t&&a("已从云端恢复","success"),!0}catch(e){return u("error"),t?a(I(e,"云端恢复失败"),"error"):console.info(I(e,"云端恢复失败")),!1}finally{o(null)}},[a,s,x,y,j]),v=(0,n.useCallback)(()=>{let e=x(!1);if(e)try{let t=N.useAppStore.getState().notes,n=T(t,e.danger),r=new Blob([n],{type:"text/plain"}),s=URL.createObjectURL(r),i=document.createElement("a");i.href=s,i.download=`${e.address.slice(-4)}-most-notes-${new Date().toISOString().slice(0,10)}.txt`,i.click(),URL.revokeObjectURL(s),a("笔记已导出到本地","success")}catch(e){a(I(e,"导出失败"),"error")}},[a,x]),g=(0,n.useCallback)(()=>{let e=x(!1);if(!e)return;let t=document.createElement("input");t.type="file",t.accept=".txt",t.onchange=t=>{let n=t.target.files?.[0];if(!n)return;let r=new FileReader;r.onload=async()=>{try{let t=r.result,n=_(t,e.danger);if(N.useAppStore.getState().notes.length>0&&!window.confirm("恢复将覆盖当前本地笔记,是否继续?"))return void a("已取消恢复","info");s(n.notes),a("已从本地恢复笔记","success"),await j({silent:!0})}catch(e){a(I(e,"导入失败"),"error")}},r.readAsText(n)},t.click()},[a,s,x,j]);(0,n.useEffect)(()=>{if(!i)return;if(!e){Y="",W="",f(!1),y(!1),u("disabled");return}if(Y===e.address){f(!0),u(F?"conflict":"synced");return}let t=!1;return f(!1),b({manual:!1,uploadWhenMissing:!0}).finally(()=>{t||f(!0)}),()=>{t=!0}},[i,b,y,e]),(0,n.useEffect)(()=>{if(!e||!i||!p||(m.current+=1,m.current<=1))return;let t=window.setTimeout(async()=>{let e=N.useAppStore.getState().notes;await L(e)!==W&&await j({silent:!0})},900);return()=>window.clearTimeout(t)},[p,i,r,j,e]);let k=(0,n.useMemo)(()=>(function(e){switch(e){case"disabled":return"未登录";case"checking":return"检查中";case"uploading":return"同步中";case"restoring":return"恢复中";case"synced":return"已同步";case"conflict":return"有冲突";case"error":return"同步失败";default:return"待同步"}})(c),[c]);return{action:l,status:c,statusLabel:k,hasConflict:d,uploadNow:j,restoreFromCloud:b,exportLocalBackup:v,importLocalBackup:g}}(),A=(0,N.useAppStore)(e=>e.addToast),E=(0,N.useAppStore)(e=>e.isDarkMode),U=(0,N.useAppStore)(e=>e.setIsDarkMode),q=(0,S.useUserStore)(e=>e.wallet),J=(0,S.useUserStore)(e=>e.openLoginModal),Z=(0,N.useAppStore)(e=>e.notes),G=(0,N.useAppStore)(e=>e.notesPath),K=(0,N.useAppStore)(e=>e.setNotesPath),X=(0,N.useAppStore)(e=>e.saveNote),Q=(0,N.useAppStore)(e=>e.deleteNote),ee=(0,N.useAppStore)(e=>e.renameNote),et=(0,N.useAppStore)(e=>e.localDataReady),en=a.get("cid")||"",ea=Z.find(e=>e.cid===en),er=!!en,es=er&&"edit"===a.get("mode"),[ei,el]=(0,n.useState)(""),[eo,ec]=(0,n.useState)(null),[eu,ed]=(0,n.useState)(null),[eh,ep]=(0,n.useState)(null),[ef,em]=(0,n.useState)(""),[ey,ex]=(0,n.useState)(""),[ej,eb]=(0,n.useState)(""),[ev,eg]=(0,n.useState)(""),[ek,ew]=(0,n.useState)(""),[eN,eS]=(0,n.useState)(""),[eM,e$]=(0,n.useState)(!1),[eC,ez]=(0,n.useState)(""),[eD,eP]=(0,n.useState)(!1);(0,n.useEffect)(()=>{if(!en){em(""),ex("");return}if(!ea){em(""),ex(et?"笔记不存在":"");return}if(ea.content.startsWith("mp://1")){if(!q){em(""),ex("请先登录 Web3 账号以解密此笔记");return}let e=(0,M.mostDecode)(ea.content,q.danger);if(!e){em(""),ex("无法解密,请确认当前 Web3 账号正确");return}em(e),ex("");return}em(ea.content||""),ex("")},[en,et,ea,q]),(0,n.useEffect)(()=>{if(!es)return void eP(!1);if(!en||!ea){eg(""),ew(""),eS(""),e$(!1),ez(et?"笔记不存在":"");return}if(eg(ea.name),ew(ea.path||""),e$(!0===ea.isSecret||ea.content.startsWith("mp://1")),ea.content.startsWith("mp://1")){if(!q){eS(""),ez("请先登录 Web3 账号以解密此笔记");return}let e=(0,M.mostDecode)(ea.content,q.danger);if(!e){eS(""),ez("无法解密,请确认当前 Web3 账号正确");return}eS(e),ez("");return}eS(ea.content||""),ez("")},[en,es,et,ea,q]),(0,n.useEffect)(()=>{eb(ea?.name||"")},[ea?.cid,ea?.name]);let eO=(0,n.useMemo)(()=>(0,C.filterNotesByPath)(Z,G,ei),[Z,G,ei]),eA=eO.filter(e=>"file"===e.type).length,eT=ea?.isSecret===!0||ea?.content.startsWith("mp://1")===!0,e_=(0,n.useMemo)(()=>{let e=G.split("/").filter(Boolean);return[{label:"全部笔记",path:""},...e.map((t,n)=>({label:t,path:e.slice(0,n+1).join("/")}))]},[G]),eL=(0,n.useMemo)(()=>(function(e){let t=new Set;for(let n of e){let e=(0,C.normalizeNotePath)(n.path).split("/").filter(Boolean);for(let n=0;n<e.length;n+=1)t.add(e.slice(0,n+1).join("/"))}return Array.from(t).sort((e,t)=>e.localeCompare(t,"zh-CN")).map(e=>{let t=e.split("/");return{path:e,name:t[t.length-1]||e,parentPath:t.slice(0,-1).join("/"),depth:Math.max(t.length-1,0)}})})(Z),[Z]);function eE(){return!!q||(J(),!1)}async function eU(){if(eE()){if(!ea)return void A("笔记不存在","error");if(!ev.trim())return void A("请输入笔记名称","warning");eP(!0);try{let t=s.current?.getMarkdown()??eN,n=eM?(0,M.mostEncode)(t,q.danger):t,a=await X({cid:ea.cid,name:ev,path:ek,content:n,isSecret:eM});eS(t),A("笔记已保存","success"),await O.uploadNow({silent:!0}),e.replace(`/note/?cid=${encodeURIComponent(a)}`)}catch(e){A(V(e,"保存失败"),"error")}finally{eP(!1)}}}async function eR(){if(!eE()||!ea)return;let e=ej.trim();if(!e){eb(ea.name),A("请输入笔记名称","warning");return}if(e!==ea.name)try{ee((0,C.getNoteFullPath)(ea),ea.path,e),A("已重命名","success"),await O.uploadNow({silent:!0})}catch(e){eb(ea.name),A(V(e,"重命名失败"),"error")}}async function eH(e){if(eh)try{ee("directory"===eh.type?(0,C.normalizeNotePath)(eh.path?`${eh.path}/${eh.name}`:eh.name):(0,C.getNoteFullPath)(eh),e,eh.name),ep(null),A("已移动","success"),await O.uploadNow({silent:!0})}catch(e){A(V(e,"移动失败"),"error")}}let eF=(0,t.jsxs)("div",{className:"note-header-title",children:[(0,t.jsx)("h2",{className:"header-title",children:"笔记"}),(0,t.jsxs)("span",{children:[Z.length," 篇"]})]}),eW=(0,t.jsxs)("div",{className:"note-theme-wrap",children:[(0,t.jsx)("button",{className:"btn btn-icon",onClick:()=>U(!E),title:"切换主题","aria-label":"切换主题",children:E?(0,t.jsx)(x.Sun,{size:16}):(0,t.jsx)(h.Moon,{size:16})}),(0,t.jsx)(z.NoteMoreMenu,{sync:O})]}),eY=(0,t.jsxs)("section",{className:"note-list-panel note-sidebar-list","aria-label":"笔记列表",children:[(0,t.jsxs)("div",{className:"note-list-header",children:[(0,t.jsx)("div",{className:"note-current-location",children:(0,t.jsx)("div",{className:"note-breadcrumbs",children:e_.map((e,a)=>(0,t.jsxs)(n.Fragment,{children:[a>0&&(0,t.jsx)("span",{children:"/"}),(0,t.jsx)("button",{onClick:()=>K(e.path),children:e.label})]},e.path||"root"))})}),(0,t.jsxs)("span",{className:"note-count",children:[eA," 篇"]})]}),(0,t.jsxs)("div",{className:"note-search",children:[(0,t.jsx)(y.Search,{size:16}),(0,t.jsx)("input",{className:"input input-flex",value:ei,onChange:e=>el(e.target.value),placeholder:"搜索笔记"})]}),0===eO.length?(0,t.jsxs)("div",{className:"ui-empty-state note-empty-state",children:[(0,t.jsx)(p.NotebookPen,{size:32}),(0,t.jsx)("p",{children:ei?"未找到笔记":"还没有笔记"})]}):(0,t.jsx)("div",{className:"note-list",children:eO.map(n=>(0,t.jsx)("article",{className:`ui-list-item note-list-item ${"file"===n.type&&n.cid===en?"active":""}`,children:(0,t.jsxs)("button",{className:`ui-list-item-main note-list-item-main ${"directory"===n.type?"folder":""}`,onClick:()=>{if("directory"===n.type)K((0,C.normalizeNotePath)(n.path?`${n.path}/${n.name}`:n.name));else e.push(`/note/?cid=${encodeURIComponent(n.cid)}`)},children:[(0,t.jsx)("span",{className:`ui-list-icon note-list-icon ${"directory"===n.type?"warning":""}`,children:"directory"===n.type?(0,t.jsx)(c.Folder,{size:18}):n.isSecret?(0,t.jsx)(d.Lock,{size:18}):(0,t.jsx)(o.FileText,{size:18})}),(0,t.jsxs)("span",{className:"ui-list-copy note-list-copy",children:[(0,t.jsx)("span",{className:"ui-list-title note-list-name",children:n.name}),"file"===n.type?(0,t.jsx)("span",{className:"ui-list-desc note-list-preview",children:n.isSecret||n.content.startsWith("mp://1")?"私密内容已加密":String(n.content||"").replace(/```[\s\S]*?```/g," ").replace(/!\[[^\]]*]\([^)]*\)/g," ").replace(/\[([^\]]+)]\([^)]*\)/g,"$1").replace(/[#>*_`~|-]/g," ").replace(/\s+/g," ").trim()||"空白笔记"}):(0,t.jsx)("span",{className:"ui-list-desc note-list-preview",children:"文件夹"})]}),"file"===n.type&&(0,t.jsx)("span",{className:"ui-list-meta note-list-date",children:(0,$.formatDate)(n.updated_at)})]})},`${n.cid}:${n.path}:${n.name}`))}),(0,t.jsx)("div",{className:"note-create-btn",children:(0,t.jsxs)("button",{className:"btn",onClick:function(){eE()&&ec({title:"新建笔记",placeholder:"笔记名称",confirmText:"创建",onConfirm:async t=>{if(eE())try{let n=await X({name:t,path:G,content:"",isSecret:!1});ec(null),A("笔记已创建","success"),await O.uploadNow({silent:!0}),e.push(`/note/?cid=${encodeURIComponent(n)}&mode=edit`)}catch(e){A(V(e,"创建失败"),"error")}}})},children:[(0,t.jsx)(f.Plus,{size:16}),"新笔记"]})})]});return(0,t.jsxs)(v.default,{sidebar:()=>(0,t.jsx)(P.NoteSidebar,{children:eY}),headerTitle:eF,headerRight:eW,children:[(0,t.jsx)("main",{className:`note-page note-browser-page ${er?"has-editor":""}`,children:(0,t.jsx)("section",{className:"note-workspace",children:(0,t.jsx)("section",{className:"note-editor-panel","aria-label":es?"笔记编辑器":"笔记阅读器",children:er?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"note-editor-panel-header",children:[(0,t.jsxs)("div",{className:"note-editor-title-area",children:[es?(0,t.jsx)("input",{className:"note-title-input",value:ev,onChange:e=>eg(e.target.value),placeholder:"笔记名称",disabled:!ea}):ea?(0,t.jsx)("input",{className:"note-title-input",value:ej,onBlur:eR,onChange:e=>eb(e.target.value),onKeyDown:e=>{"Enter"===e.key&&e.currentTarget.blur(),"Escape"===e.key&&(eb(ea.name),e.currentTarget.blur())},placeholder:"笔记名称",title:"重命名"}):(0,t.jsx)("h3",{children:"未命名笔记"}),ea&&(0,t.jsxs)("div",{className:"note-editor-info",children:[(0,t.jsx)("span",{children:es?"编辑模式":"阅读模式"}),(0,t.jsx)("span",{children:es?eM?"私密":"公开":eT?"私密":"公开"}),(0,t.jsx)("span",{children:(0,$.formatDate)(ea.updated_at)})]})]}),(0,t.jsxs)("div",{className:"note-editor-actions",children:[(0,t.jsx)("button",{type:"button",className:"btn btn-icon",onClick:es?function(){e.push(ea?`/note/?cid=${encodeURIComponent(ea.cid)}`:"/note/")}:()=>e.push("/note/"),title:es?"取消":"关闭","aria-label":es?"取消":"关闭",children:(0,t.jsx)(b.X,{size:16})}),es?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("button",{className:`btn btn-sm ${eM?"btn-warning":"btn-secondary"}`,onClick:()=>e$(!eM),disabled:!ea,children:[eM?(0,t.jsx)(d.Lock,{size:16}):(0,t.jsx)(l.Eye,{size:16}),eM?"私密":"公开"]}),(0,t.jsxs)("button",{className:"btn btn-sm btn-primary",onClick:eU,disabled:eD||!!eC||!ea,children:[(0,t.jsx)(m.Save,{size:16}),eD?"保存中":"保存"]})]}):ea&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{type:"button",className:"btn btn-icon",onClick:()=>{eE()&&ep(ea)},title:"移动","aria-label":"移动",children:(0,t.jsx)(u,{size:16})}),(0,t.jsx)("button",{type:"button",className:"btn btn-icon note-editor-action-danger",onClick:()=>(function(t){if(!eE())return;let n="directory"===t.type;ed({title:n?"删除文件夹":"删除笔记",message:`确定要删除「${t.name}」吗?此操作不可撤销。`,confirmText:"删除",onConfirm:async()=>{Q(n?void 0:t.cid,t.path,t.name),ed(null),A("已删除","success"),await O.uploadNow({silent:!0}),"file"===t.type&&t.cid===en&&e.push("/note/")}})})(ea),title:"删除","aria-label":"删除",children:(0,t.jsx)(j.Trash2,{size:16})}),(0,t.jsxs)("button",{type:"button",className:"btn btn-sm btn-primary",onClick:()=>{e.push(`/note/?cid=${encodeURIComponent(ea.cid)}&mode=edit`)},disabled:!!ey,title:"编辑","aria-label":"编辑",children:[(0,t.jsx)(i,{size:16}),"编辑"]})]})]})]}),es?eC?(0,t.jsxs)("div",{className:"note-empty-state editor-error",children:[(0,t.jsx)(d.Lock,{size:36}),(0,t.jsx)("p",{children:eC})]}):ea?(0,t.jsx)("div",{className:"note-editor-frame editing",children:(0,t.jsx)(B,{ref:s,content:eN,onChange:eS,className:"milkdown-editor"})}):(0,t.jsxs)("div",{className:"note-empty-state editor-error",children:[(0,t.jsx)(p.NotebookPen,{size:36}),(0,t.jsx)("p",{children:et?"笔记不存在":"加载中..."})]}):ey?(0,t.jsxs)("div",{className:"ui-empty-state note-empty-state editor-error",children:[(0,t.jsx)(d.Lock,{size:36}),(0,t.jsx)("p",{children:ey})]}):ea?(0,t.jsx)("div",{className:"note-editor-frame reading",children:(0,t.jsx)(B,{content:ef,readOnly:!0,className:"milkdown-editor"})}):(0,t.jsxs)("div",{className:"ui-empty-state note-empty-state editor-error",children:[(0,t.jsx)(p.NotebookPen,{size:36}),(0,t.jsx)("p",{children:et?"笔记不存在":"加载中..."})]})]}):(0,t.jsxs)("div",{className:"ui-empty-state note-editor-empty",children:[(0,t.jsx)("div",{className:"ui-empty-icon note-editor-empty-icon",children:(0,t.jsx)(p.NotebookPen,{size:32})}),(0,t.jsx)("h3",{className:"ui-empty-title",children:"没有打开的笔记"}),(0,t.jsx)("p",{className:"ui-empty-desc",children:Z.length>0?"选择一篇笔记继续":"创建第一篇笔记"}),(0,t.jsx)(g.default,{label:"打开笔记列表",variant:"default"})]})})})}),eo&&(0,t.jsx)(w.InputModal,{title:eo.title,placeholder:eo.placeholder,defaultValue:eo.defaultValue,confirmText:eo.confirmText,onConfirm:eo.onConfirm,onClose:()=>ec(null)}),eu&&(0,t.jsx)(k.ConfirmModal,{title:eu.title,message:eu.message,confirmText:eu.confirmText,danger:!0,onConfirm:eu.onConfirm,onClose:()=>ed(null)}),eh&&(0,t.jsx)(D.NoteMoveModal,{target:eh,directories:eL,onMove:eH,onClose:()=>ep(null)})]})}e.s(["default",0,function(){return(0,t.jsx)(n.Suspense,{fallback:(0,t.jsx)("div",{className:"note-editor-loading",children:"加载中..."}),children:(0,t.jsx)(q,{})})}],58559)},71504,e=>{e.v(t=>Promise.all(["static/chunks/3r5wf57k0gys9.js","static/chunks/0o-o9af-grvj8.js","static/chunks/2uget3ephe4e3.js","static/chunks/3fj0amtzqae6f.js"].map(t=>e.l(t))).then(()=>t(36975)))}]);
|