most-box 0.2.1 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/README.md +66 -6
  2. package/electron/deepLink.js +29 -0
  3. package/electron/main.js +87 -20
  4. package/out/admin/index.html +0 -0
  5. package/out/app/index.html +0 -0
  6. package/out/assets/AppShell-B1U4lDqV.js +1 -0
  7. package/out/assets/FilePreviewOverlay-Cme4vUhr.js +1 -0
  8. package/out/assets/LanguageToggle-CBpXWdO9.js +1 -0
  9. package/out/assets/MarketingHeader-CkcBATx2.js +1 -0
  10. package/out/assets/MarketingLayout-mQV6ciYc.js +1 -0
  11. package/out/assets/{MarketingThemeToggle-qlwCZU1o.js → MarketingThemeToggle-DHVvLtms.js} +1 -1
  12. package/out/assets/{MilkdownEditor-_TGlDyA_.js → MilkdownEditor-WdGJyEa8.js} +1 -1
  13. package/out/assets/OpenSidebarButton-CtsDYSq0.js +1 -0
  14. package/out/assets/SidebarAccount-4NFTcAF7.js +1 -0
  15. package/out/assets/arrow-right-RldN7Rwi.js +1 -0
  16. package/out/assets/circle-alert-BQoSDxUe.js +1 -0
  17. package/out/assets/cloud-DHoTMeZY.js +1 -0
  18. package/out/assets/copy-BtJHJnqH.js +1 -0
  19. package/out/assets/download-Bg-OdoxM.js +1 -0
  20. package/out/assets/downloadValidation-DS9_BV-n.js +1 -0
  21. package/out/assets/external-link-m8ZIQe4p.js +1 -0
  22. package/out/assets/file-text-DG1orIkZ.js +1 -0
  23. package/out/assets/game-s6irY8hS.js +1 -0
  24. package/out/assets/hard-drive-BB-sllXA.js +1 -0
  25. package/out/assets/index-3OD3Chi9.css +1 -0
  26. package/out/assets/index-BJ7E8LJN.js +31 -0
  27. package/out/assets/index-BSOvFG3o.css +1 -0
  28. package/out/assets/index-C0xqKeu-.css +1 -0
  29. package/out/assets/index.lazy-B5hOQuoO.js +2 -0
  30. package/out/assets/index.lazy-B9ligvAg.js +1 -0
  31. package/out/assets/index.lazy-BZ7nMBcY.js +3 -0
  32. package/out/assets/index.lazy-C-2BI6Ew.js +1 -0
  33. package/out/assets/index.lazy-C3z-lGsL.js +1 -0
  34. package/out/assets/index.lazy-Cda9sU_h.js +1 -0
  35. package/out/assets/index.lazy-D5ybxeOu.js +1 -0
  36. package/out/assets/index.lazy-DMZi3gid.js +1 -0
  37. package/out/assets/index.lazy-DSjaivix.js +1 -0
  38. package/out/assets/index.lazy-Dvgt53xN.js +1 -0
  39. package/out/assets/index.lazy-Dvo4Ncqe.js +2 -0
  40. package/out/assets/index.lazy-DwKnzBXo.js +1 -0
  41. package/out/assets/index.lazy-GQILyi6o.js +1 -0
  42. package/out/assets/key-round-DIQ3Xt5F.js +1 -0
  43. package/out/assets/lock-tf1t2yuy.js +1 -0
  44. package/out/assets/message-square-DaQH7q-P.js +1 -0
  45. package/out/assets/mp-DYPYks13.js +1 -0
  46. package/out/assets/music-DaFvU2DL.js +1 -0
  47. package/out/assets/notebook-pen-CqEFOHKx.js +1 -0
  48. package/out/assets/play-B7q6F75-.js +1 -0
  49. package/out/assets/plus-H2i2mspM.js +1 -0
  50. package/out/assets/refresh-cw-roxAhABl.js +1 -0
  51. package/out/assets/save-DR0O9ReR.js +1 -0
  52. package/out/assets/search-ncblG-zw.js +1 -0
  53. package/out/assets/send-m1XCcuPn.js +1 -0
  54. package/out/assets/shield-check-BwcvTU4U.js +1 -0
  55. package/out/assets/trash-2-CNpsqYc1.js +1 -0
  56. package/out/assets/triangle-alert-DP9EP7IM.js +1 -0
  57. package/out/assets/upload-V--8p13l.js +1 -0
  58. package/out/assets/useChannelMessages-qJTlBnzX.js +3 -0
  59. package/out/assets/useGameRoom-C9hu7Cez.js +1 -0
  60. package/out/assets/useNavigate-DWlBD_-b.js +1 -0
  61. package/out/assets/userStore-C4vdYsQp.js +4 -0
  62. package/out/assets/wallet-CozFU6yK.js +1 -0
  63. package/out/assets/wifi-DIR3g_8A.js +1 -0
  64. package/out/chat/index.html +0 -0
  65. package/out/chat/join/index.html +0 -0
  66. package/out/download/index.html +2 -2
  67. package/out/game/gandengyan/index.html +0 -0
  68. package/out/game/index.html +0 -0
  69. package/out/game/zhajinhua/index.html +0 -0
  70. package/out/index.html +2 -2
  71. package/out/note/index.html +0 -0
  72. package/out/ping/index.html +2 -2
  73. package/out/profile/index.html +0 -0
  74. package/out/web3/index.html +0 -0
  75. package/package.json +9 -1
  76. package/server/index.js +36 -7
  77. package/server/src/core/channelIdentity.js +6 -0
  78. package/server/src/core/gameRoom.js +15 -5
  79. package/server/src/core/mostLink.js +8 -7
  80. package/server/src/core/zhajinhua.js +6 -0
  81. package/server/src/games/gandengyan.js +10 -0
  82. package/server/src/http/access.js +63 -12
  83. package/server/src/http/app.js +34 -838
  84. package/server/src/http/nodeStatus.js +101 -9
  85. package/server/src/http/routePolicy.js +2 -0
  86. package/server/src/http/routes/channelRoutes.js +163 -0
  87. package/server/src/http/routes/fileRoutes.js +345 -0
  88. package/server/src/http/routes/nodeRoutes.js +323 -0
  89. package/server/src/http/routes/seedRoutes.js +58 -0
  90. package/server/src/index.js +197 -16
  91. package/server/src/node/config.js +2 -6
  92. package/server/src/utils/api.js +27 -1
  93. package/server/src/utils/avatar.js +30 -15
  94. package/server/src/utils/downloadMessages.js +0 -2
  95. package/out/assets/AppShell-OiOEqXPr.js +0 -1
  96. package/out/assets/ChatUi-Cif5LRF3.js +0 -1
  97. package/out/assets/CopyButton-Dm7krgbq.js +0 -1
  98. package/out/assets/LanguageToggle-B4ZNuBCV.js +0 -1
  99. package/out/assets/MarketingHeader-yIZuQP7m.js +0 -1
  100. package/out/assets/MarketingLayout-DVH0Nx7S.js +0 -1
  101. package/out/assets/MoveModal-BVr4Q7-b.js +0 -1
  102. package/out/assets/Nav-5xeettNJ.js +0 -1
  103. package/out/assets/NoteSidebar-DpniUKmy.js +0 -1
  104. package/out/assets/OpenSidebarButton-BfgG2HIT.js +0 -1
  105. package/out/assets/PemBlock-CxwIepth.js +0 -1
  106. package/out/assets/SidebarAccount-Zg5DZblE.js +0 -1
  107. package/out/assets/arrow-right-CL9YSDVS.js +0 -1
  108. package/out/assets/channelApi-DNdJfsJ-.js +0 -1
  109. package/out/assets/chevron-down-CnLh_-aO.js +0 -1
  110. package/out/assets/circle-alert-oiiRDvhx.js +0 -1
  111. package/out/assets/cloud-BEe2N89j.js +0 -1
  112. package/out/assets/code-9LB8QqxL.js +0 -1
  113. package/out/assets/copy-giX4rmFJ.js +0 -1
  114. package/out/assets/download-D0oMEYQZ.js +0 -1
  115. package/out/assets/downloadValidation-Bk1VsBBo.js +0 -1
  116. package/out/assets/external-link-Cm2WCUxv.js +0 -1
  117. package/out/assets/filePreview-BZ50vZZf.js +0 -1
  118. package/out/assets/game-Bvz4dspe.js +0 -1
  119. package/out/assets/hard-drive-B3CQbcp2.js +0 -1
  120. package/out/assets/index-8eWJAjpY.css +0 -1
  121. package/out/assets/index-BZc4blbW.css +0 -1
  122. package/out/assets/index-BkZvz4WA.css +0 -1
  123. package/out/assets/index-WCK14Vja.js +0 -34
  124. package/out/assets/index.lazy-5Q6GuMNT.js +0 -1
  125. package/out/assets/index.lazy-5jq6EFXa.js +0 -3
  126. package/out/assets/index.lazy-7n1Q-NrA.js +0 -3
  127. package/out/assets/index.lazy-BFnOyQFj.js +0 -1
  128. package/out/assets/index.lazy-B_oPp6qK.js +0 -1
  129. package/out/assets/index.lazy-BvY50KVz.js +0 -1
  130. package/out/assets/index.lazy-C0Kn_amZ.js +0 -1
  131. package/out/assets/index.lazy-C3cek3Gn.js +0 -1
  132. package/out/assets/index.lazy-CLpPkdy1.js +0 -1
  133. package/out/assets/index.lazy-Cpr1kApf.js +0 -2
  134. package/out/assets/index.lazy-CuwLZiUK.js +0 -1
  135. package/out/assets/index.lazy-DDc3Ylgf.js +0 -2
  136. package/out/assets/index.lazy-Dg3aqOss.js +0 -1
  137. package/out/assets/key-round-CzuljhND.js +0 -1
  138. package/out/assets/lock-D2NhNoJW.js +0 -1
  139. package/out/assets/message-square-DwBq_Go5.js +0 -1
  140. package/out/assets/mp-Bln2MB9G.js +0 -1
  141. package/out/assets/music-CB73K5Gz.js +0 -1
  142. package/out/assets/notebook-pen-Up7r5zoI.js +0 -1
  143. package/out/assets/play-OszVgROb.js +0 -1
  144. package/out/assets/plus-BbxQG_Ai.js +0 -1
  145. package/out/assets/save-CiqyiifY.js +0 -1
  146. package/out/assets/search-gqAPOsgS.js +0 -1
  147. package/out/assets/send-vwCWsZGP.js +0 -1
  148. package/out/assets/shield-check-CxWxsNLc.js +0 -1
  149. package/out/assets/trash-2-DNGr8IgF.js +0 -1
  150. package/out/assets/triangle-alert-B_1BlX1b.js +0 -1
  151. package/out/assets/upload-Dxl7GUzb.js +0 -1
  152. package/out/assets/useChannelMessages-7bYKXU_R.js +0 -3
  153. package/out/assets/useGameRoom-DqA1mkfk.js +0 -1
  154. package/out/assets/wallet-DlkawdPJ.js +0 -1
  155. package/out/assets/wifi-sBOKcPFM.js +0 -1
  156. package/out/demo/index.html +0 -0
  157. /package/out/avatars/default/{ocean.svg → dolphin.svg} +0 -0
  158. /package/out/avatars/default/{violet.svg → owl.svg} +0 -0
  159. /package/out/avatars/default/{mint.svg → panda.svg} +0 -0
  160. /package/out/avatars/default/{dusk.svg → snow-mountain.svg} +0 -0
  161. /package/out/avatars/default/{ember.svg → tiger.svg} +0 -0
  162. /package/out/avatars/default/{sage.svg → turtle.svg} +0 -0
  163. /package/public/avatars/default/{ocean.svg → dolphin.svg} +0 -0
  164. /package/public/avatars/default/{violet.svg → owl.svg} +0 -0
  165. /package/public/avatars/default/{mint.svg → panda.svg} +0 -0
  166. /package/public/avatars/default/{dusk.svg → snow-mountain.svg} +0 -0
  167. /package/public/avatars/default/{ember.svg → tiger.svg} +0 -0
  168. /package/public/avatars/default/{sage.svg → turtle.svg} +0 -0
@@ -0,0 +1 @@
1
+ import{n as e,o as t,t as n}from"./jsx-runtime-Bt-cYkS5.js";import{a as r,i,r as a,t as o,x as s,y as c}from"./userStore-C4vdYsQp.js";import{n as l,r as u}from"./LanguageToggle-CBpXWdO9.js";import{t as d}from"./copy-BtJHJnqH.js";import{t as f}from"./AppShell-B1U4lDqV.js";import{t as p}from"./play-B7q6F75-.js";import{a as m,i as h,n as g,r as ee,t as te}from"./useGameRoom-C9hu7Cez.js";import{B as ne,F as re,_,c as ie}from"./index-BJ7E8LJN.js";var ae=c(`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`}]]),v=t(e(),1),oe=[10,20,50,100],y=[`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`,`10`,`J`,`Q`,`K`,`A`],b=[`D`,`C`,`H`,`S`],x=new Map(y.map((e,t)=>[e,t+2])),S=new Map(b.map((e,t)=>[e,t+1])),C={high:1,pair:2,straight:3,flush:4,straightFlush:5,triple:6},w={[C.high]:`散牌`,[C.pair]:`对子`,[C.straight]:`顺子`,[C.flush]:`金花`,[C.straightFlush]:`顺金`,[C.triple]:`豹子`};function T(e){return String(e||``).trim().toUpperCase().replace(/[^A-Z0-9]/g,``).slice(0,8)}function E(e=`zhajinhua`){return`${e}_${Date.now()}_${ve(4)}`}function D(){return E(`round`)}function O(){let e=[];for(let t of b)for(let n of y)e.push(`${n}${t}`);return e}function se(e=O(),t=Math.random){let n=[...e];for(let e=n.length-1;e>0;e--){let r=Math.floor(t()*(e+1));[n[e],n[r]]=[n[r],n[e]]}return n}function k(e){let t=String(e||``).trim().toUpperCase(),n=t.slice(-1),r=t.slice(0,-1);if(!x.has(r)||!S.has(n))throw Error(`Invalid card: ${e}`);return{id:`${r}${n}`,rank:r,suit:n,rankValue:x.get(r),suitValue:S.get(n)}}function ce(e,t){let n=Math.max(e.length,t.length);for(let r=0;r<n;r++){let n=e[r]||0,i=t[r]||0;if(n!==i)return n-i}return 0}function le(e){let t=[...new Set(e)].sort((e,t)=>e-t);return t.length===3?t[0]===2&&t[1]===3&&t[2]===14?3:t[0]+1===t[1]&&t[1]+1===t[2]?t[2]:0:0}function A(e){if(!Array.isArray(e)||e.length!==3)throw Error(`炸金花手牌必须是 3 张牌`);let t=e.map(k),n=t.map(e=>e.rankValue),r=new Map;for(let e of n)r.set(e,(r.get(e)||0)+1);let i=new Set(t.map(e=>e.suit)).size===1,a=le(n),o=[...n].sort((e,t)=>t-e),s=Math.max(...t.map(e=>e.suitValue)),c=C.high,l=o;return r.size===1?(c=C.triple,l=[o[0]]):a&&i?(c=C.straightFlush,l=[a]):i?(c=C.flush,l=o):a?(c=C.straight,l=[a]):r.size===2&&(c=C.pair,l=[[...r.entries()].find(([,e])=>e===2)[0],[...r.entries()].find(([,e])=>e===1)[0]]),{category:c,label:w[c],tiebreakers:l,tieSuit:s,cards:t.map(e=>e.id)}}function j(e,t){let n=A(e),r=A(t);if(n.category!==r.category)return n.category-r.category;let i=ce(n.tiebreakers,r.tiebreakers);return i===0?n.tieSuit-r.tieSuit:i}function ue(e){return A(e).label}function de({roundId:e,action:t,amount:n,target:r}){return{roundId:e,eventId:E(`action`),action:t,amount:n,target:r}}function fe(e=[]){let t=e.filter(e=>Number(e.chips)>=10);return t.length>=2&&t.length<=5}function pe({roomCode:e,players:t,hostAddress:n,previousSeq:r=0,previousWinner:i=``,roundId:a=D(),random:o=Math.random}){let s=t.filter(e=>Number(e.chips)>=10).slice(0,5);if(s.length<2)throw Error(`至少需要 2 名有足够筹码的玩家`);let c=se(O(),o),l={},u=s.map((e,t)=>{let n=c.slice(t*3,t*3+3);return l[e.address]=n,{address:e.address,name:e.name,avatar:W(e.avatar),publicKey:e.publicKey,chips:Number(e.chips)-10,status:`active`,looked:!1,bet:10}}),d,f=U(i),p=f?u.findIndex(e=>U(e.address)===f):-1;return d=p>=0?u[p].address:u[Math.floor(o()*u.length)].address,{roomCode:T(e),roundId:a,status:`playing`,host:U(n),seq:r+1,startedAt:Date.now(),ante:10,pot:10*u.length,currentBet:10,turnAddress:d,players:u,lastAction:`本局开始`,winner:null,showdown:null,appliedEventIds:[],hands:l,actionCounts:{},compareReveal:{}}}function me(e){if(!e)return null;let t={...e};return delete t.hands,G(t)}function he(e,t){let n=M(e);return!n||!t||typeof t!=`object`?null:{...n,hands:G(t)}}function M(e){return!e||typeof e!=`object`||!e.roundId||!Array.isArray(e.players)?null:{roomCode:T(e.roomCode),roundId:String(e.roundId),status:e.status===`finished`?`finished`:`playing`,host:U(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:U(e.turnAddress),players:e.players.map(H).filter(Boolean),lastAction:String(e.lastAction||``),winner:e.winner?U(e.winner):null,showdown:e.showdown&&typeof e.showdown==`object`?G(e.showdown):null,appliedEventIds:Array.isArray(e.appliedEventIds)?e.appliedEventIds.map(String):[],actionCounts:e.actionCounts&&typeof e.actionCounts==`object`?G(e.actionCounts):{},compareReveal:e.compareReveal&&typeof e.compareReveal==`object`?G(e.compareReveal):{},lastCompare:e.lastCompare&&typeof e.lastCompare==`object`?G(e.lastCompare):null,finishedAt:e.finishedAt?Number(e.finishedAt):null}}function N(e,t,n){let r=M(e);if(!r||r.status!==`playing`)return{ok:!1,error:`当前没有进行中的牌局`};let i=U(n),a=r.players.find(e=>e.address===i);if(!a||a.status!==`active`)return{ok:!1,error:`玩家不在本轮牌局中`};if(r.turnAddress!==i)return{ok:!1,error:`还没有轮到你操作`};let o=t?.action;if(![`look`,`call`,`raise`,`compare`,`fold`].includes(o))return{ok:!1,error:`未知操作`};if(o===`look`)return a.looked?{ok:!1,error:`已经看过牌`}:{ok:!0};if(o===`call`)return a.chips>=10?{ok:!0}:{ok:!1,error:`筹码不足,不能跟注`};if(o===`raise`){let e=Number(t.amount);if(!oe.includes(e))return{ok:!1,error:`加注档位无效`};let n=r.currentBet+e-a.bet;return a.chips>=n?{ok:!0}:{ok:!1,error:`筹码不足,不能加注`}}if(o===`compare`){let e=U(t.target),n=r.players.find(t=>t.address===e);if(!e||e===i||!n||n.status!==`active`)return{ok:!1,error:`请选择有效的比牌对象`};if(!r.players.filter(e=>e.status===`active`).every(e=>(r.actionCounts?.[e.address]||0)>=1))return{ok:!1,error:`第一轮不能比牌,请先跟注或加注`};let o=Math.max(0,r.currentBet-a.bet);return a.chips>=o?{ok:!0}:{ok:!1,error:`筹码不足,不能比牌`}}return{ok:!0}}function P(e,t,n){let r=N(e,t,n);if(!r.ok)return{ok:!1,error:r.error,state:e};let i=G(e),a=U(n),o=i.players.find(e=>e.address===a),s=String(t.eventId);if(i.appliedEventIds?.includes(s))return{ok:!0,state:i,duplicate:!0};if(Array.isArray(i.appliedEventIds)||(i.appliedEventIds=[]),i.appliedEventIds.push(s),t.action===`look`)return o.looked=!0,i.lastAction=`${o.name} 看牌`,V(i);if(t.action===`fold`)return o.status=`folded`,i.lastAction=`${o.name} 弃牌`,L(i,a),R(i,a);if(t.action===`call`)return o.chips-=10,o.bet+=10,i.pot+=10,i.lastAction=`${o.name} 跟注`,L(i,a),R(i,a);if(t.action===`raise`){let e=Number(t.amount);return i.currentBet+=e,I(i,o),i.lastAction=`${o.name} 加注 ${e}`,L(i,a),R(i,a)}if(t.action===`compare`){I(i,o);let e=U(t.target),n=i.players.find(t=>t.address===e),r=o.looked,s=n.looked,c=j(i.hands?.[a]||[],i.hands?.[e]||[]),l=c>=0?o:n,u=c>=0?n:o;u.status=`folded`,u.looked=!0,i.compareReveal||={};let d=r&&s,f=!r&&!s;if(d)i.compareReveal[a]=i.hands?.[e]||[],i.compareReveal[e]=i.hands?.[a]||[];else if(f)i.compareReveal[u.address]=i.hands?.[l.address]||[];else{let e=r?o:n,t=r?n:o;i.compareReveal[e.address]=i.hands?.[t.address]||[],i.compareReveal[u.address]=i.hands?.[l.address]||[]}return i.lastCompare={initiator:a,target:e,winner:l.address,loser:u.address,initiatorLooked:r,targetLooked:s,timestamp:Date.now()},i.lastAction=`${o.name} 与 ${n.name} 比牌,${u.name} 出局`,L(i,a),R(i,a)}return{ok:!1,error:`未知操作`,state:e}}function F(e){return(e?.players||[]).filter(e=>e.status===`active`)}function ge(e,t){let n=(e?.players||[]).find(e=>e.address===U(t));if(!e||e.status!==`playing`||!n||n.status!==`active`||e.turnAddress!==n.address)return[];let r=[];return n.looked||r.push(`look`),N(e,{action:`call`},n.address).ok&&r.push(`call`),oe.some(t=>N(e,{action:`raise`,amount:t},n.address).ok)&&r.push(`raise`),F(e).length>1&&e.players.filter(e=>e.status===`active`).every(t=>(e.actionCounts?.[t.address]||0)>=1)&&r.push(`compare`),r.push(`fold`),r}function I(e,t){let n=Math.max(0,e.currentBet-t.bet);t.chips-=n,t.bet+=n,e.pot+=n}function L(e,t){e.actionCounts||={},e.actionCounts[t]=(e.actionCounts[t]||0)+1}function R(e,t){let n=F(e);return n.length===1?z(e,n[0].address):(e.turnAddress=B(e,t),V(e))}function z(e,t){let n=e.players.find(e=>e.address===t),r=e.pot;return n&&(n.chips+=e.pot),e.status=`finished`,e.winner=t,e.winAmount=r,e.turnAddress=``,e.showdown=e.hands?G(e.hands):null,e.lastAction=n?`${n.name} 赢得 ${r} 筹码`:`本局结束`,e.pot=0,e.finishedAt=Date.now(),V(e)}function B(e,t){let n=e.players,r=Math.max(0,n.findIndex(e=>e.address===U(t)));for(let e=1;e<=n.length;e++){let t=n[(r+e)%n.length];if(t.status===`active`)return t.address}return``}function V(e){return e.seq=Number(e.seq||0)+1,{ok:!0,state:e}}function H(e){if(!e||typeof e!=`object`)return null;let t=U(e.address);return t?{address:t,name:String(e.name||_e(t)).slice(0,50),avatar:W(e.avatar),publicKey:String(e.publicKey||``),chips:Math.max(0,Number(e.chips)||0),status:e.status===`folded`?`folded`:`active`,looked:e.looked===!0,bet:Math.max(0,Number(e.bet)||0)}:null}function U(e){let t=String(e||``).trim();return/^0x[a-fA-F0-9]{40}$/.test(t)?t.toLowerCase():``}function _e(e){return e?`${e.slice(0,6)}...${e.slice(-4)}`:``}function W(e){return String(e||``).trim().slice(0,4096)}function G(e){return JSON.parse(JSON.stringify(e))}function ve(e){let t=new Uint8Array(e);if(globalThis.crypto?.getRandomValues)globalThis.crypto.getRandomValues(t);else for(let e=0;e<t.length;e++)t[e]=Math.floor(Math.random()*256);return[...t].map(e=>e.toString(16).padStart(2,`0`)).join(``)}var K={page:`_page_1yyew_1`,headerActions:`_headerActions_1yyew_12`,entry:`_entry_1yyew_18`,entryBrand:`_entryBrand_1yyew_28`,cardMark:`_cardMark_1yyew_34`,entryPanel:`_entryPanel_1yyew_62`,accountLine:`_accountLine_1yyew_72`,joinForm:`_joinForm_1yyew_89`,status:`_status_1yyew_110`,board:`_board_1yyew_116`,table:`_table_1yyew_123`,tableCenter:`_tableCenter_1yyew_144`,finishBanner:`_finishBanner_1yyew_173`,finishBannerIcon:`_finishBannerIcon_1yyew_192`,seats:`_seats_1yyew_196`,seat:`_seat_1yyew_196`,seatTurn:`_seatTurn_1yyew_218`,seatWinner:`_seatWinner_1yyew_223`,seatFolded:`_seatFolded_1yyew_228`,seatAvatar:`_seatAvatar_1yyew_232`,seatMain:`_seatMain_1yyew_251`,seatMeta:`_seatMeta_1yyew_252`,panel:`_panel_1yyew_283`,panelSection:`_panelSection_1yyew_290`,panelTitle:`_panelTitle_1yyew_300`,hand:`_hand_1yyew_310`,card:`_card_1yyew_34`,red:`_red_1yyew_344`,black:`_black_1yyew_348`,cardBack:`_cardBack_1yyew_352`,handLabel:`_handLabel_1yyew_373`,actionGrid:`_actionGrid_1yyew_380`,raiseRow:`_raiseRow_1yyew_381`,statusGrid:`_statusGrid_1yyew_392`,muted:`_muted_1yyew_410`,compareOverlay:`_compareOverlay_1yyew_417`,compareBox:`_compareBox_1yyew_429`,compareTitle:`_compareTitle_1yyew_443`,comparePlayers:`_comparePlayers_1yyew_449`,compareSide:`_compareSide_1yyew_456`,compareWinner:`_compareWinner_1yyew_468`,compareName:`_compareName_1yyew_473`,compareCards:`_compareCards_1yyew_484`,compareLabel:`_compareLabel_1yyew_509`,compareVs:`_compareVs_1yyew_515`,compareResult:`_compareResult_1yyew_522`},q=n(),ye=`zhajinhua`;function J(...e){return e.filter(Boolean).join(` `)}function Y(e,t){return String(e||``).toLowerCase()===String(t||``).toLowerCase()}function be(e=``){return e?`${e.slice(0,6)}...${e.slice(-4)}`:``}function xe(e){return e.displayName||e.username}function Se(e){let t=String(e||``),n=t.slice(-1);return{rank:t.slice(0,-1),suit:{S:`♠`,H:`♥`,C:`♣`,D:`♦`}[n]||n,color:n===`H`||n===`D`?`red`:`black`}}function X(){let{t:e}=ne(),t=_(e=>e.isDarkMode),n=_(e=>e.setIsDarkMode),s=_(e=>e.addToast),c=o(e=>e.initializeUser),[y,b]=(0,v.useState)(``),[x,S]=(0,v.useState)(!1),C=(0,v.useRef)(``),w=(0,v.useRef)(!1),[T,E]=(0,v.useState)(20),[D,O]=(0,v.useState)(``),[se,k]=(0,v.useState)({}),[ce,le]=(0,v.useState)(!0),[A,j]=(0,v.useState)(!1),M=(0,v.useRef)(null),N=(0,v.useRef)(new Set),I=te({gameId:ye,onError:e=>s(e,`error`),getPlayerPayload:e=>{let t=a(e.danger);return{address:e.address,name:xe(e),avatar:e.avatar||``,publicKey:t.public_key,joinedAt:Date.now()}}}),L=(0,v.useMemo)(()=>I.userIdentity?.danger?a(I.userIdentity.danger):null,[I.userIdentity?.danger]);(0,v.useEffect)(()=>{c()},[c]),(0,v.useEffect)(()=>{let e=new URLSearchParams(window.location.search).get(`room`)?.toUpperCase();e&&(b(e),C.current=e)},[]),(0,v.useEffect)(()=>{let t=C.current;!t||w.current||!I.isBackendReady||!I.userIdentity||(w.current=!0,C.current=``,I.joinRoom(t).then(t=>{t&&s(e(`game.toast.joinedRoom`),`success`)}))},[I.isBackendReady,I.userIdentity,I.joinRoom,s,e]),(0,v.useEffect)(()=>{if(!I.roomCode)return;let e=`/game/zhajinhua?room=${I.roomCode}`;`${window.location.pathname}${window.location.search}`!==e&&window.history.replaceState(null,``,e)},[I.roomCode]);let R=(0,v.useMemo)(()=>g(I.messages,{gameId:ye,roomCode:I.roomCode}),[I.messages,I.roomCode]),z=(0,v.useMemo)(()=>ee(I.messages,{gameId:ye,roomCode:I.roomCode}),[I.messages,I.roomCode])?.payload?.round||null,B=z?.host||R.hostAddress,V=Y(B,I.userIdentity?.address),H=I.userIdentity?.address?.toLowerCase()||``,U=z?.players.find(e=>Y(e.address,H)),_e=U||R.players.find(e=>Y(e.address,H)),W=se[z?.roundId||``]||null,G=z?.showdown&&H?z.showdown[H]:null,ve=z?.compareReveal&&H?z.compareReveal[H]:null,X=G||ve||(U?.looked?W:null),Q=ge(z,H),we=F(z),Te=V&&fe(R.players.map(e=>({...e,chips:z?.players.find(t=>Y(t.address,e.address))?.chips??1e3}))),Ee=I.roomCode&&typeof window<`u`?`${window.location.origin}/game/zhajinhua?room=${I.roomCode}`:``;(0,v.useEffect)(()=>{if(!(!z||!I.userIdentity||!L||!B))for(let e of I.roomEvents){let t=e.event;if(!t||t.event!==`deal:private`)continue;let n=t.payload;if(n.roundId!==z.roundId||!Y(n.recipient,I.userIdentity.address))continue;let r=i(n.encrypted||``,{senderPublicKey:n.senderPublicKey||``,recipientPrivateKey:L.private_key});if(r)try{let e=JSON.parse(r);Array.isArray(e)&&k(t=>({...t,[z.roundId]:e.map(String)}))}catch{}}},[z?.roundId,I.roomEvents,I.userIdentity,B,L?.private_key]),(0,v.useEffect)(()=>{if(z?.status===`finished`&&z.winner){le(!0);let e=setTimeout(()=>le(!1),5e3);return()=>clearTimeout(e)}},[z?.finishedAt,z?.status,z?.winner]),(0,v.useEffect)(()=>{if(z?.lastCompare?.timestamp){j(!0);let e=setTimeout(()=>j(!1),5e3);return()=>clearTimeout(e)}else j(!1)},[z?.lastCompare?.timestamp,z?.roundId]),(0,v.useEffect)(()=>{if(!V||!z||z.status!==`playing`)return;let e=M.current;if(!e)return;let t=I.roomEvents.filter(e=>{let t=e.event;if(!t||t.event!==`player:action`)return!1;let n=t.payload.actionEvent;return!(!n||n.roundId!==z.roundId||N.current.has(n.eventId)||z.appliedEventIds?.includes(n.eventId))});if(t.length===0)return;let n=!1;async function r(){let r=he(z,e);if(r)for(let e of t){if(n)return;let t=(e.event?.payload).actionEvent,i=P(r,t,e.message.author);if(!i.ok){let n=e.message.author;if(!Y(n,I.userIdentity?.address)&&r.status===`playing`&&Y(r.turnAddress,n)){let e=P(r,de({roundId:r.roundId,action:`call`,amount:void 0,target:void 0}),n);if(e.ok)i=e;else{let e=P(r,de({roundId:r.roundId,action:`fold`,amount:void 0,target:void 0}),n);e.ok&&(i=e)}}if(!i.ok){N.current.add(t.eventId);continue}}if(r=i.state,M.current=i.state.hands,await Ae(i.state)&&N.current.add(t.eventId),i.state.status===`finished`)break}}return r(),()=>{n=!0}},[z?.roundId,z?.seq,z?.status,I.roomEvents,V]);async function De(){await I.createRoom()&&s(e(`game.toast.roomCreated`),`success`)}async function Oe(t){t.preventDefault(),await I.joinRoom(y)&&s(e(`game.toast.joinedRoom`),`success`)}async function ke(){Ee&&(await navigator.clipboard.writeText(Ee),S(!0),setTimeout(()=>S(!1),1400))}async function Ae(e){return I.sendRoomEvent(`room:state`,{round:me(e),seq:e.seq})}async function je(){if(!I.userIdentity||!L||!Te){s(e(`game.zhajinhua.error.notEnoughPlayers`),`error`);return}try{let t=R.players.map(e=>({...e,chips:z?.players.find(t=>Y(t.address,e.address))?.chips??1e3})),n=pe({roomCode:I.roomCode,players:t,hostAddress:I.userIdentity.address,previousSeq:z?.seq||0,previousWinner:z?.winner||``});M.current=n.hands,N.current.clear(),await Ae(n);for(let e of n.players){let t=r(JSON.stringify(n.hands[e.address]),{senderPrivateKey:L.private_key,recipientPublicKey:e.publicKey});await I.sendRoomEvent(`deal:private`,{roundId:n.roundId,recipient:e.address,senderPublicKey:L.public_key,encrypted:t})}k(e=>({...e,[n.roundId]:n.hands[I.userIdentity.address.toLowerCase()]})),s(e(`game.zhajinhua.toast.roundStarted`),`success`)}catch(t){s(t instanceof Error?t.message:e(`game.zhajinhua.error.startFailed`),`error`)}}async function $(e,t={}){if(!z||!I.userIdentity)return;let n=de({roundId:z.roundId,action:e,amount:t.amount,target:t.target});await I.sendRoomEvent(`player:action`,{actionEvent:n})}let Me=z?.status===`playing`?Y(z.turnAddress,H)?e(`game.zhajinhua.status.yourTurn`):z.turnAddress?e(`game.zhajinhua.status.waitingPlayer`,{player:Z(z.turnAddress,R.players)}):e(`game.status.playing`):z?.status===`finished`?e(`game.status.finished`):e(`game.status.waitingStart`),Ne=we.filter(e=>!Y(e.address,H));return(0,q.jsx)(f,{sidebar:({closeSidebar:e})=>(0,q.jsx)(h,{activeGame:`zhajinhua`,closeSidebar:e}),headerTitle:(0,q.jsx)(`h2`,{className:`header-title`,children:e(`game.zhajinhua.title`)}),headerRight:(0,q.jsxs)(`div`,{className:K.headerActions,children:[I.roomCode&&(0,q.jsxs)(`button`,{className:`btn btn-sm`,onClick:ke,children:[(0,q.jsx)(d,{size:14}),e(x?`common.copied`:`game.action.shareRoom`)]}),(0,q.jsx)(`button`,{className:`btn btn-icon`,onClick:()=>n(!t),title:e(`common.theme.toggle`),children:t?(0,q.jsx)(l,{size:16}):(0,q.jsx)(u,{size:16})})]}),children:(0,q.jsx)(`main`,{className:K.page,children:I.roomCode?(0,q.jsxs)(`div`,{className:K.board,children:[(0,q.jsxs)(`section`,{className:K.table,children:[z?.status===`finished`&&z.winner&&ce&&(0,q.jsxs)(`div`,{className:K.finishBanner,children:[(0,q.jsx)(`span`,{className:K.finishBannerIcon,children:`🏆`}),(0,q.jsx)(`span`,{children:e(`game.zhajinhua.result.winChips`,{player:Z(z.winner,R.players),amount:z.winAmount??0})})]}),z?.lastCompare&&A&&(0,q.jsx)(Ce,{lastCompare:z.lastCompare,compareReveal:z.compareReveal||{},myAddress:H,myDealtHand:W,lobbyPlayers:R.players,onClose:()=>j(!1)}),(0,q.jsxs)(`div`,{className:K.tableCenter,children:[(0,q.jsx)(`span`,{children:e(`game.zhajinhua.pot`)}),(0,q.jsx)(`strong`,{children:z?.pot||0}),(0,q.jsx)(`small`,{children:e(`game.zhajinhua.currentBet`,{amount:z?.currentBet||0})})]}),(0,q.jsx)(`div`,{className:K.seats,children:R.players.map(t=>{let n=z?.players.find(e=>Y(e.address,t.address)),r=z?.turnAddress===t.address,i=z?.winner===t.address,a=n?.status===`folded`;return(0,q.jsxs)(`div`,{className:J(K.seat,r&&K.seatTurn,i&&K.seatWinner,a&&K.seatFolded),children:[(0,q.jsx)(`div`,{className:K.seatAvatar,children:(0,q.jsx)(`img`,{src:ie(t.address,t.avatar),alt:``})}),(0,q.jsxs)(`div`,{className:K.seatMain,children:[(0,q.jsx)(`strong`,{translate:`no`,children:t.name}),(0,q.jsx)(`span`,{translate:`no`,children:be(t.address)})]}),(0,q.jsxs)(`div`,{className:K.seatMeta,children:[(0,q.jsx)(`span`,{children:e(`game.zhajinhua.chips`,{amount:n?.chips??1e3})}),(0,q.jsx)(`span`,{children:n?.status===`folded`?e(`game.zhajinhua.player.folded`):n?.looked?e(`game.zhajinhua.player.looked`):e(z?`game.zhajinhua.player.inRound`:`game.status.waitingStart`)})]})]},t.address)})})]}),(0,q.jsxs)(`aside`,{className:K.panel,children:[(0,q.jsxs)(`div`,{className:K.panelSection,children:[(0,q.jsxs)(`div`,{className:K.panelTitle,children:[(0,q.jsx)(m,{size:16}),(0,q.jsx)(`span`,{children:e(`game.zhajinhua.myHand`)})]}),(0,q.jsx)(`div`,{className:K.hand,children:X?X.map(e=>{let t=Se(e),n=`${t.suit}${t.rank}`;return(0,q.jsxs)(`div`,{className:J(K.card,K[t.color]),children:[(0,q.jsx)(`span`,{children:n}),(0,q.jsx)(`i`,{children:t.suit})]},e)}):[0,1,2].map(e=>(0,q.jsx)(`div`,{className:K.cardBack,children:(0,q.jsx)(m,{size:18})},e))}),(0,q.jsx)(`p`,{className:K.handLabel,children:X?ue(X):e(W?`game.zhajinhua.hand.unlooked`:`game.zhajinhua.hand.waitingDeal`)})]}),(0,q.jsxs)(`div`,{className:K.panelSection,children:[(0,q.jsxs)(`div`,{className:K.panelTitle,children:[(0,q.jsx)(p,{size:16}),(0,q.jsx)(`span`,{children:e(`game.actions`)})]}),V?(0,q.jsxs)(`button`,{className:`btn btn-primary btn-full`,onClick:je,disabled:!Te||z?.status===`playing`,children:[(0,q.jsx)(ae,{size:16}),z?.status===`finished`?e(`game.action.nextRound`):e(`game.action.startRound`)]}):(0,q.jsx)(`p`,{className:K.muted,children:e(`game.waitingHost`)}),V&&z?.status===`finished`&&!Te&&(0,q.jsx)(`p`,{className:K.muted,children:e(`game.zhajinhua.error.tooManyLowChips`)}),(0,q.jsxs)(`div`,{className:K.actionGrid,children:[(0,q.jsxs)(`button`,{className:`btn btn-secondary`,disabled:!Q.includes(`look`),onClick:()=>$(`look`),children:[(0,q.jsx)(re,{size:16}),e(`game.zhajinhua.action.look`)]}),(0,q.jsx)(`button`,{className:`btn btn-secondary`,disabled:!Q.includes(`call`),onClick:()=>$(`call`),children:e(`game.zhajinhua.action.call`)}),(0,q.jsx)(`button`,{className:`btn btn-secondary`,disabled:!Q.includes(`fold`),onClick:()=>$(`fold`),children:e(`game.zhajinhua.action.fold`)})]}),(0,q.jsxs)(`div`,{className:K.raiseRow,children:[(0,q.jsx)(`select`,{className:`input input-compact`,value:T,onChange:e=>E(Number(e.target.value)),children:oe.map(t=>(0,q.jsx)(`option`,{value:t,children:e(`game.zhajinhua.action.raiseOption`,{amount:t})},t))}),(0,q.jsx)(`button`,{className:`btn btn-secondary`,disabled:!Q.includes(`raise`),onClick:()=>$(`raise`,{amount:T}),children:e(`game.zhajinhua.action.raise`)})]}),(0,q.jsxs)(`div`,{className:K.raiseRow,children:[(0,q.jsxs)(`select`,{className:`input input-compact`,value:D,onChange:e=>O(e.target.value),children:[(0,q.jsx)(`option`,{value:``,children:e(`game.zhajinhua.action.comparePlaceholder`)}),Ne.map(e=>(0,q.jsx)(`option`,{value:e.address,children:e.name},e.address))]}),(0,q.jsx)(`button`,{className:`btn btn-secondary`,disabled:!Q.includes(`compare`)||!D,onClick:()=>$(`compare`,{target:D}),children:e(`game.zhajinhua.action.compare`)})]})]}),(0,q.jsxs)(`div`,{className:K.panelSection,children:[(0,q.jsx)(`div`,{className:K.panelTitle,children:e(`game.status.title`)}),(0,q.jsxs)(`div`,{className:K.statusGrid,children:[(0,q.jsx)(`span`,{children:e(`game.host`)}),(0,q.jsx)(`strong`,{children:B?be(B):`-`}),(0,q.jsx)(`span`,{children:e(`game.zhajinhua.myChips`)}),(0,q.jsx)(`strong`,{children:_e?.chips??1e3}),(0,q.jsx)(`span`,{children:e(`game.round`)}),(0,q.jsx)(`strong`,{children:Me}),(0,q.jsx)(`span`,{children:e(`game.hint`)}),(0,q.jsx)(`strong`,{children:z?.lastAction||e(`game.waitingPlayers`)})]})]})]})]}):(0,q.jsxs)(`section`,{className:K.entry,children:[(0,q.jsxs)(`div`,{className:K.entryBrand,children:[(0,q.jsx)(`div`,{className:K.cardMark,children:(0,q.jsx)(m,{size:48})}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`h1`,{children:e(`game.zhajinhua.hero.title`)}),(0,q.jsx)(`p`,{children:e(`game.hero.desc`)})]})]}),(0,q.jsxs)(`div`,{className:K.entryPanel,children:[(0,q.jsxs)(`div`,{className:K.accountLine,children:[(0,q.jsx)(`span`,{children:e(`game.currentAccount`)}),(0,q.jsx)(`strong`,{translate:`no`,children:I.userIdentity?.displayName||e(`web3.notSignedIn`)})]}),(0,q.jsxs)(`button`,{className:`btn btn-primary`,disabled:I.joining,onClick:De,children:[(0,q.jsx)(p,{size:16}),e(`game.action.createRoom`)]}),(0,q.jsxs)(`form`,{onSubmit:Oe,className:K.joinForm,children:[(0,q.jsxs)(`label`,{children:[e(`game.roomCode`),(0,q.jsx)(`input`,{value:y,maxLength:8,onChange:e=>b(e.target.value.toUpperCase()),placeholder:e(`game.roomCode.placeholder`)})]}),(0,q.jsx)(`button`,{className:`btn`,disabled:I.joining||!y,children:e(`game.action.joinRoom`)})]}),(0,q.jsx)(`p`,{className:K.status,children:I.isBackendReady?e(`game.status.nodeConnected`):e(`game.status.nodeConnecting`)})]})]})})})}function Ce({lastCompare:e,compareReveal:t,myAddress:n,myDealtHand:r,lobbyPlayers:i,onClose:a}){let{t:o}=ne(),s=Z(e.initiator,i),c=Z(e.target,i),l=Z(e.winner,i),u=Y(n,e.initiator),d=Y(n,e.target),f=u||d;function p(e,i){return t[e]||(f&&Y(e,n)&&i&&r?r:null)}let h=p(e.initiator,e.initiatorLooked),g=p(e.target,e.targetLooked);return(0,q.jsx)(`div`,{className:K.compareOverlay,onClick:a,children:(0,q.jsxs)(`div`,{className:K.compareBox,onClick:e=>e.stopPropagation(),children:[(0,q.jsx)(`div`,{className:K.compareTitle,children:o(`game.zhajinhua.compareResult`)}),(0,q.jsxs)(`div`,{className:K.comparePlayers,children:[(0,q.jsxs)(`div`,{className:J(K.compareSide,Y(e.winner,e.initiator)&&K.compareWinner),children:[(0,q.jsx)(`div`,{className:K.compareName,children:s}),(0,q.jsx)(`div`,{className:K.compareCards,children:h?h.map(e=>{let t=Se(e);return(0,q.jsxs)(`div`,{className:J(K.card,K[t.color]),children:[(0,q.jsx)(`span`,{children:t.rank}),(0,q.jsx)(`i`,{children:t.suit})]},e)}):[0,1,2].map(e=>(0,q.jsx)(`div`,{className:K.cardBack,children:(0,q.jsx)(m,{size:18})},e))}),h&&(0,q.jsx)(`div`,{className:K.compareLabel,children:ue(h)})]}),(0,q.jsx)(`div`,{className:K.compareVs,children:`VS`}),(0,q.jsxs)(`div`,{className:J(K.compareSide,Y(e.winner,e.target)&&K.compareWinner),children:[(0,q.jsx)(`div`,{className:K.compareName,children:c}),(0,q.jsx)(`div`,{className:K.compareCards,children:g?g.map(e=>{let t=Se(e);return(0,q.jsxs)(`div`,{className:J(K.card,K[t.color]),children:[(0,q.jsx)(`span`,{children:t.rank}),(0,q.jsx)(`i`,{children:t.suit})]},e)}):[0,1,2].map(e=>(0,q.jsx)(`div`,{className:K.cardBack,children:(0,q.jsx)(m,{size:18})},e))}),g&&(0,q.jsx)(`div`,{className:K.compareLabel,children:ue(g)})]})]}),(0,q.jsx)(`div`,{className:K.compareResult,children:o(`game.zhajinhua.result.winner`,{player:l})}),(0,q.jsx)(`button`,{className:`btn btn-sm`,onClick:a,children:o(`common.close`)})]})})}function Z(e,t){let n=e.toLowerCase();return t.find(e=>e.address===n)?.name||be(e)}var Q=s(`/game/zhajinhua/`)({component:X});export{Q as Route};
@@ -0,0 +1 @@
1
+ import{y as e}from"./userStore-C4vdYsQp.js";var t=e(`key-round`,[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{y as e}from"./userStore-C4vdYsQp.js";var t=e(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),n=e(`lock`,[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`,key:`1w4ew1`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`,key:`fwvmzm`}]]);export{t as n,n as t};
@@ -0,0 +1 @@
1
+ import{y as e}from"./userStore-C4vdYsQp.js";var t=e(`message-square`,[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{n as e,o as t,t as n}from"./jsx-runtime-Bt-cYkS5.js";import{_ as r,f as i,y as a}from"./userStore-C4vdYsQp.js";import{i as o}from"./LanguageToggle-CBpXWdO9.js";import{t as s}from"./copy-BtJHJnqH.js";import{B as c}from"./index-BJ7E8LJN.js";import{t as l}from"./dayjs.min-Dcc0B6Je.js";var u=a(`fingerprint-pattern`,[[`path`,{d:`M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4`,key:`1nerag`}],[`path`,{d:`M14 13.12c0 2.38 0 6.38-1 8.88`,key:`o46ks0`}],[`path`,{d:`M17.29 21.02c.12-.6.43-2.3.5-3.02`,key:`ptglia`}],[`path`,{d:`M2 12a10 10 0 0 1 18-6`,key:`ydlgp0`}],[`path`,{d:`M2 16h.01`,key:`1gqxmh`}],[`path`,{d:`M21.8 16c.2-2 .131-5.354 0-6`,key:`drycrb`}],[`path`,{d:`M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2`,key:`1tidbn`}],[`path`,{d:`M8.65 22c.21-.66.45-1.32.57-2`,key:`13wd9y`}],[`path`,{d:`M9 6.8a6 6 0 0 1 9 5.2v2`,key:`1fr1j5`}]]),d=a(`user`,[[`path`,{d:`M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2`,key:`975kel`}],[`circle`,{cx:`12`,cy:`7`,r:`4`,key:`17ys0d`}]]),f=t(e(),1),p=n();function m({text:e,label:t,copiedLabel:n,className:r=`btn btn-icon`,iconSize:i=14}){let{t:a}=c(),[l,u]=(0,f.useState)(!1),d=n||a(`common.copied`),m=t||a(`common.copy`);async function h(){try{await navigator.clipboard.writeText(e),u(!0),setTimeout(()=>u(!1),1500)}catch{}}return(0,p.jsxs)(`button`,{type:`button`,className:r,onClick:h,title:l?d:m,children:[l?(0,p.jsx)(o,{size:i}):(0,p.jsx)(s,{size:i}),t?l?d:t:null]})}var h=t(i(),1);l();var g=`0123456789abcdefghijklmnopqrstuvwxyz`,_=e=>{let t=[];for(;e>=128;)t.push(e&127|128),e>>=7;return t.push(e),t},v=e=>{let t=new Uint8Array([8,1,18,..._(e.length)]),n=new Uint8Array(t.length+e.length);return n.set(t,0),n.set(e,t.length),n},y=(e,t)=>{if(e.length===0)return``;let n=t.length,r=0;for(;r<e.length&&e[r]===0;)r++;let i=[0];for(let t=r;t<e.length;t++){let r=e[t];for(let e=0;e<i.length;e++){let t=i[e]*256+r;i[e]=t%n,r=Math.floor(t/n)}for(;r>0;)i.push(r%n),r=Math.floor(r/n)}let a=``;for(let e=0;e<r;e++)a+=t[0];for(let e=i.length-1;e>=0;e--)a+=t[i[e]];return a},b=(e,t)=>{let n=t.slice(2),i=new Uint8Array(r(e+n));return h.default.sign.keyPair.fromSecretKey(i)},x=(e,t)=>{let n=v(b(e,t).publicKey),r=new Uint8Array(2+n.length);r[0]=0,r[1]=36,r.set(n,2);let i=new Uint8Array([1,114]),a=new Uint8Array(i.length+r.length);return a.set(i,0),a.set(r,i.length),`k`+y(a,g)};export{u as a,d as i,x as n,m as r,b as t};
@@ -0,0 +1 @@
1
+ import{y as e}from"./userStore-C4vdYsQp.js";var t=e(`music`,[[`path`,{d:`M9 18V5l12-2v13`,key:`1jmyc2`}],[`circle`,{cx:`6`,cy:`18`,r:`3`,key:`fqmcym`}],[`circle`,{cx:`18`,cy:`16`,r:`3`,key:`1hluhg`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{y as e}from"./userStore-C4vdYsQp.js";var t=e(`notebook-pen`,[[`path`,{d:`M13.4 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-7.4`,key:`re6nr2`}],[`path`,{d:`M2 6h4`,key:`aawbzj`}],[`path`,{d:`M2 10h4`,key:`l0bgd4`}],[`path`,{d:`M2 14h4`,key:`1gsvsf`}],[`path`,{d:`M2 18h4`,key:`1bu2t1`}],[`path`,{d:`M21.378 5.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z`,key:`pqwjuv`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{y as e}from"./userStore-C4vdYsQp.js";var t=e(`play`,[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{y as e}from"./userStore-C4vdYsQp.js";var t=e(`ellipsis`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`19`,cy:`12`,r:`1`,key:`1wjl8i`}],[`circle`,{cx:`5`,cy:`12`,r:`1`,key:`1pcz8c`}]]),n=e(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]);export{t as n,n as t};
@@ -0,0 +1 @@
1
+ import{y as e}from"./userStore-C4vdYsQp.js";var t=e(`refresh-cw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{y as e}from"./userStore-C4vdYsQp.js";var t=e(`save`,[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`,key:`1c8476`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`,key:`1ydtos`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`,key:`t51u73`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{y as e}from"./userStore-C4vdYsQp.js";var t=e(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{y as e}from"./userStore-C4vdYsQp.js";var t=e(`send`,[[`path`,{d:`M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z`,key:`1ffxy3`}],[`path`,{d:`m21.854 2.147-10.94 10.939`,key:`12cjpa`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{y as e}from"./userStore-C4vdYsQp.js";var t=e(`shield-check`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{y as e}from"./userStore-C4vdYsQp.js";var t=e(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{y as e}from"./userStore-C4vdYsQp.js";var t=e(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),n=e(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]);export{t as n,n as t};
@@ -0,0 +1 @@
1
+ import{y as e}from"./userStore-C4vdYsQp.js";var t=e(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),n=e(`folder`,[[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`,key:`1kt360`}]]),r=e(`upload`,[[`path`,{d:`M12 3v12`,key:`1x0j5s`}],[`path`,{d:`m17 8-5-5-5 5`,key:`7q97r8`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}]]);export{n,t as r,r as t};
@@ -0,0 +1,3 @@
1
+ import{n as e,o as t}from"./jsx-runtime-Bt-cYkS5.js";import{t as n}from"./userStore-C4vdYsQp.js";import{T as r,i,o as a}from"./index-BJ7E8LJN.js";var o=t(e(),1);function s(e=``,t=[]){let n=[e,...t];return[...new Set(n.filter(Boolean))]}function c(e=[]){return s(``,e).join(`
2
+ `)}function l(e,t){let n=new Set(e),r=new Set(t);return{subscribe:[...r].filter(e=>!n.has(e)),unsubscribe:[...n].filter(e=>!r.has(e))}}function u(e){return String(e.id||`${e.author||``}-${e.timestamp||``}-${e.content||``}`)}function d(e){let t=Number(e.timestamp);return Number.isFinite(t)?t:0}function f(e){return e.map((e,t)=>({message:e,index:t})).sort((e,t)=>{let n=d(e.message)-d(t.message);return n===0?e.index-t.index:n}).map(e=>e.message)}function p({isReady:e,enabled:t=!0,channelName:d=``,extraSubscribedChannelNames:p=[],peerId:m=``,waitForPeerId:h=!1,limit:g=100,reconnectBaseDelay:_=2500,acceptMessage:v,getMessageKey:y=u,onSyncError:b,onSocketEvent:x,onReconnect:S}){let C=n(e=>e.identity),[w,T]=(0,o.useState)([]),[E,D]=(0,o.useState)(!1),O=(0,o.useMemo)(()=>c(p),[p]),k=(0,o.useRef)(null),A=(0,o.useRef)(d),j=(0,o.useRef)(p),M=(0,o.useRef)(null),N=(0,o.useRef)(0),P=(0,o.useRef)(v),F=(0,o.useRef)(y),I=(0,o.useRef)(x),L=(0,o.useRef)(b),R=(0,o.useRef)(S),z=(0,o.useRef)(m),B=(0,o.useRef)(new Set);(0,o.useEffect)(()=>{j.current=O?O.split(`
3
+ `):[]},[O]),(0,o.useEffect)(()=>{P.current=v},[v]),(0,o.useEffect)(()=>{F.current=y},[y]),(0,o.useEffect)(()=>{I.current=x},[x]),(0,o.useEffect)(()=>{L.current=b},[b]),(0,o.useEffect)(()=>{R.current=S},[S]);let V=(0,o.useCallback)(e=>{let t=P.current;return t?e.filter(t):e},[]),H=(0,o.useCallback)((e,t,n=!0)=>{let r=[...e];for(let e of V(t)){let t=F.current(e);if(n){let n=r.findIndex(t=>t.pending&&t.author?.toLowerCase()===e.author?.toLowerCase()&&t.content===e.content);if(n!==-1){r[n]={...e,id:e.id||t};continue}}r.some(e=>F.current(e)===t)||r.push({...e,id:e.id||t})}return f(r)},[V]),U=(0,o.useCallback)((e,t)=>{k.current?.readyState===WebSocket.OPEN&&k.current.send(JSON.stringify({event:e,data:t}))},[]),W=(0,o.useCallback)(e=>{let t=new Set(e.filter(Boolean)),n=l(B.current,t);for(let e of n.unsubscribe)U(`channel:unsubscribe`,{channel:e});for(let e of n.subscribe)U(`channel:subscribe`,{channel:e});B.current=t},[U]),G=(0,o.useCallback)(()=>s(A.current,j.current),[]),K=(0,o.useCallback)(async(t=A.current,n={})=>{if(!t||!e)return[];try{let e=V(await a.getChannelMessages(t,g));return T(t=>n.replace?f(e):H(t,e,!1)),e}catch(e){return n.replace&&T([]),await L.current?.(e),[]}},[V,e,g,H]);(0,o.useEffect)(()=>{z.current=m,m&&(U(`register`,{peerId:m}),h&&(W(G()),A.current&&K(A.current,{replace:!0})))},[G,m,W,K,h,U]);let q=(0,o.useCallback)(()=>{T([])},[]),J=(0,o.useCallback)(async({channelName:e=A.current,content:t,attachment:n,optimisticId:r})=>{let o=t.trim();if(!e||!o||!C)return null;let s=i(C),c={id:r||`${s.author}-${Date.now()}-${Math.random().toString(36).slice(2)}`,...s,content:o,timestamp:Date.now(),pending:!0,attachment:n};T(e=>f([...e,c]));try{let t=await a.sendChannelMessage({channelName:e,content:o,...s,attachment:n});return T(e=>f(e.map(e=>e.id===c.id?{...t.message,id:t.message.id||F.current(t.message)}:e))),t.message}catch(e){throw T(e=>e.filter(e=>e.id!==c.id)),e}},[C]);return(0,o.useEffect)(()=>{A.current=d,!(!e||!t)&&(d&&K(d,{replace:!0}),(!h||z.current)&&W(G()))},[d,t,O,G,e,W,K,h]),(0,o.useEffect)(()=>{!e||!t||h&&!z.current||W(G())},[t,G,e,W,h]),(0,o.useEffect)(()=>{if(!e||!t){D(!1);return}let n=!1;N.current=0;async function i(){let e=new WebSocket(await r(`/ws`));if(n){e.close();return}e.onopen=()=>{D(!0),N.current=0,z.current&&e.send(JSON.stringify({event:`register`,data:{peerId:z.current}})),(!h||z.current)&&(B.current.clear(),W(G()),A.current&&K(A.current,{replace:!0}),R.current?.())},e.onmessage=e=>{try{let t=JSON.parse(e.data);I.current?.(t.event,t.data),t.event===`channel:message`&&t.data?.channel===A.current&&t.data?.message&&T(e=>H(e,[t.data.message])),t.event===`user:metadata:updated`&&t.data?.scope===`channels`&&A.current&&K(A.current,{replace:!0})}catch{}},e.onclose=()=>{if(D(!1),n)return;let e=N.current;if(e>=20)return;let t=Math.min(_*2**e,3e4);N.current=e+1,M.current=setTimeout(i,t)},e.onerror=()=>e.close(),k.current=e}return i(),()=>{n=!0,M.current&&clearTimeout(M.current),k.current?.close(),k.current=null,B.current.clear()}},[t,G,e,H,_,W,K,h]),{clearMessages:q,connected:E,messages:w,sendMessage:J,setMessages:T,syncMessages:K}}export{p as t};
@@ -0,0 +1 @@
1
+ import{n as e,o as t,t as n}from"./jsx-runtime-Bt-cYkS5.js";import{C as r,t as i,y as a}from"./userStore-C4vdYsQp.js";import{B as o,L as s,M as c,_ as l,i as u,n as d,o as f,r as p,x as m}from"./index-BJ7E8LJN.js";import{t as h}from"./SidebarAccount-4NFTcAF7.js";import{t as g}from"./useChannelMessages-qJTlBnzX.js";var _=a(`spade`,[[`path`,{d:`M12 18v4`,key:`jadmvz`}],[`path`,{d:`M2 14.499a5.5 5.5 0 0 0 9.591 3.675.6.6 0 0 1 .818.001A5.5 5.5 0 0 0 22 14.5c0-2.29-1.5-4-3-5.5l-5.492-5.312a2 2 0 0 0-3-.02L5 8.999c-1.5 1.5-3 3.2-3 5.5`,key:`1aw2pz`}]]),v=a(`swords`,[[`polyline`,{points:`14.5 17.5 3 6 3 3 6 3 17.5 14.5`,key:`1hfsw2`}],[`line`,{x1:`13`,x2:`19`,y1:`19`,y2:`13`,key:`1vrmhu`}],[`line`,{x1:`16`,x2:`20`,y1:`16`,y2:`20`,key:`1bron3`}],[`line`,{x1:`19`,x2:`21`,y1:`21`,y2:`19`,key:`13pww6`}],[`polyline`,{points:`14.5 6.5 18 3 21 3 21 6 17.5 9.5`,key:`hbey2j`}],[`line`,{x1:`5`,x2:`9`,y1:`14`,y2:`18`,key:`1hf58s`}],[`line`,{x1:`7`,x2:`4`,y1:`17`,y2:`20`,key:`pidxm4`}],[`line`,{x1:`3`,x2:`5`,y1:`19`,y2:`21`,key:`1pehsh`}]]),y=n(),b=[{id:`gandengyan`,labelKey:`game.gandengyan.title`,href:`/game/gandengyan/`,icon:(0,y.jsx)(v,{size:16})},{id:`zhajinhua`,labelKey:`game.zhajinhua.title`,href:`/game/zhajinhua/`,icon:(0,y.jsx)(_,{size:16})}];function x({activeGame:e,closeSidebar:t}){let{t:n}=o();return(0,y.jsxs)(y.Fragment,{children:[(0,y.jsxs)(`button`,{type:`button`,className:`sidebar-header sidebar-header-link`,onClick:c(),children:[(0,y.jsx)(s,{size:18}),(0,y.jsx)(`h1`,{children:`MOST PEOPLE`})]}),(0,y.jsx)(`nav`,{className:`sidebar-nav`,children:b.map(i=>(0,y.jsxs)(r,{to:i.href,className:`sidebar-nav-btn ${e===i.id?`active`:``}`,onClick:t,children:[i.icon,(0,y.jsx)(`span`,{children:n(i.labelKey)})]},i.id))}),(0,y.jsx)(h,{})]})}var S=t(e(),1),C=`game`,w=`mostbox.game.event`,T=[`gandengyan`,`zhajinhua`],E=`ABCDEFGHJKLMNPQRSTUVWXYZ23456789`;function D(e){let t=String(e||``).trim().toLowerCase();return T.includes(t)?t:``}function O(e){return String(e||``).trim().toUpperCase().replace(/[^A-Z0-9]/g,``).slice(0,8)}function k(e){return/^[A-Z0-9]{4,8}$/.test(String(e||``))}function A(){let e=``;for(let t=0;t<6;t++)e+=E[V(32)];return e}function j(e,t){let n=D(e),r=O(t);return!n||!k(r)?``:`game.${n}.${r.toLowerCase()}`}function M({gameId:e,roomCode:t,event:n,payload:r}){let i=D(e);return{kind:w,version:1,gameId:i,roomCode:O(t),event:String(n||``),eventId:B(i||`game`),payload:r||{}}}function N(e,t={}){try{let n=JSON.parse(String(e||``));if(!n||n.kind!==`mostbox.game.event`||n.version!==1||typeof n.event!=`string`||typeof n.eventId!=`string`)return null;let r=D(n.gameId),i=O(n.roomCode);return!r||!k(i)||t.gameId&&r!==D(t.gameId)||t.roomCode&&i!==O(t.roomCode)?null:{...n,gameId:r,roomCode:i,payload:n.payload&&typeof n.payload==`object`?n.payload:{}}}catch{return null}}function P(e=[],t={}){let n=[],r=new Map,i=``;for(let a of z(e)){let e=N(a.content,t);if(e){if(e.event===`room:create`){let t=I(e.payload?.player,a);if(!t)continue;i||=t.address,R(n,r,t);continue}if(e.event===`player:join`){let t=I(e.payload?.player,a);t&&R(n,r,t);continue}if(e.event===`player:leave`){let t=L(e.payload?.player?.address||a.author);if(t){let e=n.findIndex(e=>e.address===t);e!==-1&&(n.splice(e,1),r.delete(t))}}}}return{gameId:D(t.gameId),roomCode:O(t.roomCode),hostAddress:i,players:n}}function F(e=[],t={}){let n=null;for(let r of z(e)){let e=N(r.content,t);if(!e||e.event!==`room:state`)continue;let i=Number(e.payload?.seq||0);(!n||i>=Number(n.payload?.seq||0))&&(n=e)}return n}function I(e,t){if(!e||typeof e!=`object`)return null;let n=t&&typeof t==`object`?t:{author:t},r=n.author,i=L(e.address||r);if(!i||L(r)!==i)return null;let a=String(n.authorName||e.name||``).trim().slice(0,50)||U(i),o=String(n.avatar||e.avatar||``).trim(),s={address:i,name:a,publicKey:String(e.publicKey||``).trim(),joinedAt:Number(e.joinedAt||Date.now())};return o&&(s.avatar=o.slice(0,4096)),s}function L(e){let t=String(e||``).trim();return/^0x[a-fA-F0-9]{40}$/.test(t)?t.toLowerCase():``}function R(e,t,n){let r=t.get(n.address);if(r){Object.assign(r,n);return}e.push(n),t.set(n.address,n)}function z(e){return[...e].sort((e,t)=>Number(e.timestamp||0)-Number(t.timestamp||0))}function B(e){return`${e}_${Date.now()}_${H(4)}`}function V(e){if(globalThis.crypto?.getRandomValues){let t=new Uint32Array(1);return globalThis.crypto.getRandomValues(t),t[0]%e}return Math.floor(Math.random()*e)}function H(e){let t=new Uint8Array(e);if(globalThis.crypto?.getRandomValues)globalThis.crypto.getRandomValues(t);else for(let e=0;e<t.length;e++)t[e]=Math.floor(Math.random()*256);return[...t].map(e=>e.toString(16).padStart(2,`0`)).join(``)}function U(e){return e?`${e.slice(0,6)}...${e.slice(-4)}`:``}function W({gameId:e,onError:t,getPlayerPayload:n}){let{t:r}=o(),a=l(e=>e.hasBackend),s=l(e=>e.checkBackend),c=l(e=>e.openConnectModal),u=i(e=>e.identity),p=i(e=>e.openLoginModal),[h,_]=(0,S.useState)(``),[v,y]=(0,S.useState)(``),[b,x]=(0,S.useState)(!1),w=a===!0,T=(0,S.useCallback)(async(e,n)=>{let r=await m(e,n);t&&t(r)},[t]),E=(0,S.useCallback)(t=>!!N(t.content,{gameId:e,roomCode:h}),[e,h]),D=(0,S.useCallback)(t=>{let n=N(t.content,{gameId:e,roomCode:h});return n?`${t.author}-${n.eventId}`:`${t.author}-${t.timestamp}-${t.content}`},[e,h]),{clearMessages:k,connected:P,messages:F,sendMessage:I,syncMessages:L}=g({isReady:w,enabled:!!u,channelName:v,limit:500,acceptMessage:E,getMessageKey:D,onSyncError:e=>T(e,r(`game.room.error.readLog`))}),R=(0,S.useMemo)(()=>F.map(t=>({message:t,event:N(t.content,{gameId:e,roomCode:h})})).filter(e=>e.event),[e,F,h]),z=(0,S.useCallback)(()=>u?w?!0:(c(),!1):(p(),!1),[w,c,p,u]);(0,S.useEffect)(()=>{a===null&&s()},[s,a]);let B=(0,S.useCallback)(async(i,a=!1)=>{if(!z()||!u)return!1;let o=a?A():O(i),s=j(e,o);if(!s)return t&&t(r(`game.room.error.invalidCode`)),!1;x(!0);try{let t=await f.createChannel(s,C,d(u)),r=t.channelKey||t.key||s;return await G(r,u,e,o,a?`room:create`:`player:join`,{player:q(u,n?.(u))}),_(o),y(r),k(),!0}catch(e){return await T(e,r(a?`game.room.error.createFailed`:`game.room.error.joinFailed`)),!1}finally{x(!1)}},[z,e,n,t,T,k,r,u]);return{channelName:v,connected:P,createRoom:(0,S.useCallback)(()=>B(``,!0),[B]),ensureReady:z,isBackendReady:w,joinRoom:(0,S.useCallback)(e=>B(e),[B]),joining:b,messages:F,roomCode:h,roomEvents:R,sendRoomEvent:(0,S.useCallback)(async(t,n={})=>{if(!z()||!u||!v||!h)return!1;let i=M({gameId:e,roomCode:h,event:t,payload:n}),a=JSON.stringify(i);try{return await I({channelName:v,content:a,optimisticId:`${u.address}-${i.eventId}`}),!0}catch(e){return await T(e,r(`game.room.error.sendEventFailed`)),!1}},[v,z,e,T,h,I,r,u]),setRoomCode:_,syncMessages:L,userIdentity:u}}async function G(e,t,n,r,i,a){let o=M({gameId:n,roomCode:r,event:i,payload:a});await f.sendChannelMessage({channelName:e,content:JSON.stringify(o),...u(t)})}function K(e){return{address:e.address,name:p(e),avatar:e.avatar||``,publicKey:``,joinedAt:Date.now()}}function q(e,t={}){let n=K(e),r={...n,...t};return Object.prototype.hasOwnProperty.call(t,`avatar`)||(r.avatar=n.avatar),r}export{_ as a,x as i,P as n,F as r,W as t};
@@ -0,0 +1 @@
1
+ import{n as e,o as t}from"./jsx-runtime-Bt-cYkS5.js";var n=t(e(),1),r=n.use,i=typeof window<`u`?n.useLayoutEffect:n.useEffect;function a(e){let t=n.useRef({value:e,prev:null}),r=t.current.value;return e!==r&&(t.current={value:e,prev:r}),t.current.prev}function o(e,t,r={},i={}){n.useEffect(()=>{if(!e.current||i.disabled||typeof IntersectionObserver!=`function`)return;let n=new IntersectionObserver(([e])=>{t(e)},r);return n.observe(e.current),()=>{n.disconnect()}},[t,r,i.disabled,e])}function s(e){let t=n.useRef(null);return n.useImperativeHandle(e,()=>t.current,[]),t}var c=n.createContext(null);function l(e){return n.useContext(c)}function u(e){let t=l();return n.useCallback(n=>t.navigate({...n,from:n.from??e?.from}),[e?.from,t])}function d(e){let t=l(),r=u(),a=n.useRef(null);return i(()=>{a.current!==e&&(r(e),a.current=e)},[t,e,r]),null}export{r as a,i as c,c as i,a as l,u as n,s as o,l as r,o as s,d as t};