sa2kit 3.1.0 → 3.2.0

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 (712) hide show
  1. package/README.md +5 -5
  2. package/dist/AliyunOSSProvider-7IOT5U6M.js +15 -0
  3. package/dist/{AliyunOSSProvider-4GRL2FJB.js.map → AliyunOSSProvider-7IOT5U6M.js.map} +1 -1
  4. package/dist/AliyunOSSProvider-ZXZM7OQA.mjs +6 -0
  5. package/dist/{AliyunOSSProvider-QNVFIZ7Q.mjs.map → AliyunOSSProvider-ZXZM7OQA.mjs.map} +1 -1
  6. package/dist/LocalStorageProvider-KJKRCKBS.js +15 -0
  7. package/dist/{LocalStorageProvider-PFA2DMIJ.js.map → LocalStorageProvider-KJKRCKBS.js.map} +1 -1
  8. package/dist/LocalStorageProvider-O22465NY.mjs +6 -0
  9. package/dist/{LocalStorageProvider-J5RHV37G.mjs.map → LocalStorageProvider-O22465NY.mjs.map} +1 -1
  10. package/dist/{chunk-SLKOEYFH.js → chunk-2234T4A6.js} +5 -5
  11. package/dist/chunk-2234T4A6.js.map +1 -0
  12. package/dist/{chunk-HQLKOXG7.js → chunk-36KGNXKW.js} +3 -3
  13. package/dist/{chunk-HQLKOXG7.js.map → chunk-36KGNXKW.js.map} +1 -1
  14. package/dist/{chunk-BCE6RUZV.js → chunk-375C7WL7.js} +19 -19
  15. package/dist/chunk-375C7WL7.js.map +1 -0
  16. package/dist/{chunk-VMTEDX5H.js → chunk-3J24Z4MB.js} +34 -318
  17. package/dist/chunk-3J24Z4MB.js.map +1 -0
  18. package/dist/{chunk-PBI7FKMB.js → chunk-3QCATFQV.js} +3 -3
  19. package/dist/chunk-3QCATFQV.js.map +1 -0
  20. package/dist/{chunk-FXQOXLDE.js → chunk-3R6JHA6D.js} +4 -4
  21. package/dist/chunk-3R6JHA6D.js.map +1 -0
  22. package/dist/{chunk-ZRAW3HXA.js → chunk-4OXKHV7J.js} +3 -3
  23. package/dist/chunk-4OXKHV7J.js.map +1 -0
  24. package/dist/chunk-4PJM4752.js +4 -0
  25. package/dist/{chunk-5USIS3UM.js.map → chunk-4PJM4752.js.map} +1 -1
  26. package/dist/{chunk-3Z43XGA4.mjs → chunk-65JRVC3F.mjs} +4 -4
  27. package/dist/{chunk-3Z43XGA4.mjs.map → chunk-65JRVC3F.mjs.map} +1 -1
  28. package/dist/{chunk-Q5EDCKQA.js → chunk-6HL54I2B.js} +16 -16
  29. package/dist/chunk-6HL54I2B.js.map +1 -0
  30. package/dist/chunk-6V2MIQPF.mjs +77 -0
  31. package/dist/chunk-6V2MIQPF.mjs.map +1 -0
  32. package/dist/{chunk-C6KV7VTZ.mjs → chunk-7CRU2Y5X.mjs} +5 -5
  33. package/dist/chunk-7CRU2Y5X.mjs.map +1 -0
  34. package/dist/chunk-7PMT4L4I.js +324 -0
  35. package/dist/chunk-7PMT4L4I.js.map +1 -0
  36. package/dist/{chunk-XJ7ZAGC5.js → chunk-7VVZHFEM.js} +3 -3
  37. package/dist/chunk-7VVZHFEM.js.map +1 -0
  38. package/dist/chunk-AWHGIKTQ.js +56 -0
  39. package/dist/{chunk-FHLTPXAR.js.map → chunk-AWHGIKTQ.js.map} +1 -1
  40. package/dist/chunk-B3GYF6TY.js +37 -0
  41. package/dist/{chunk-2Y7BKFKZ.js.map → chunk-B3GYF6TY.js.map} +1 -1
  42. package/dist/{chunk-5FUAQLGC.mjs → chunk-BDBJFOXM.mjs} +3 -3
  43. package/dist/{chunk-5FUAQLGC.mjs.map → chunk-BDBJFOXM.mjs.map} +1 -1
  44. package/dist/{chunk-ZGVB35L2.mjs → chunk-BTW3SWQN.mjs} +3 -3
  45. package/dist/chunk-BTW3SWQN.mjs.map +1 -0
  46. package/dist/{chunk-I5ZPEDNR.mjs → chunk-CHYSSZ4E.mjs} +10 -10
  47. package/dist/chunk-CHYSSZ4E.mjs.map +1 -0
  48. package/dist/{chunk-FIUBFREP.mjs → chunk-DO6QYAZV.mjs} +5 -5
  49. package/dist/chunk-DO6QYAZV.mjs.map +1 -0
  50. package/dist/{chunk-MBANGIG3.mjs → chunk-DTR53LQO.mjs} +6 -6
  51. package/dist/chunk-DTR53LQO.mjs.map +1 -0
  52. package/dist/{chunk-EQXPL7TN.mjs → chunk-EI2S4XDG.mjs} +16 -5
  53. package/dist/chunk-EI2S4XDG.mjs.map +1 -0
  54. package/dist/{chunk-GSNGCENJ.js → chunk-EOZHUI46.js} +16 -4
  55. package/dist/chunk-EOZHUI46.js.map +1 -0
  56. package/dist/{chunk-25OFOKNF.js → chunk-F2BZIU67.js} +18 -5
  57. package/dist/chunk-F2BZIU67.js.map +1 -0
  58. package/dist/{chunk-AQPU2AXH.js → chunk-F2TEJSCP.js} +10 -10
  59. package/dist/chunk-F2TEJSCP.js.map +1 -0
  60. package/dist/{chunk-UCOE6SET.js → chunk-FCLS5R24.js} +3 -3
  61. package/dist/chunk-FCLS5R24.js.map +1 -0
  62. package/dist/{chunk-3NHAT7D4.mjs → chunk-FUA6ZGMI.mjs} +27 -12
  63. package/dist/chunk-FUA6ZGMI.mjs.map +1 -0
  64. package/dist/chunk-FY2X3LYR.mjs +3 -0
  65. package/dist/{chunk-VRN76M56.mjs.map → chunk-FY2X3LYR.mjs.map} +1 -1
  66. package/dist/{chunk-V7EVKD5G.mjs → chunk-GS4SAW25.mjs} +4 -4
  67. package/dist/chunk-GS4SAW25.mjs.map +1 -0
  68. package/dist/chunk-H56ICWUO.js +321 -0
  69. package/dist/chunk-H56ICWUO.js.map +1 -0
  70. package/dist/{chunk-HDMIOOZY.mjs → chunk-HG34SGMN.mjs} +4 -4
  71. package/dist/chunk-HG34SGMN.mjs.map +1 -0
  72. package/dist/chunk-HL4H2HF6.js +279 -0
  73. package/dist/chunk-HL4H2HF6.js.map +1 -0
  74. package/dist/chunk-IJIQUMAK.mjs +272 -0
  75. package/dist/chunk-IJIQUMAK.mjs.map +1 -0
  76. package/dist/{imageCrop/index.mjs → chunk-KEZFTDZT.mjs} +24 -6
  77. package/dist/chunk-KEZFTDZT.mjs.map +1 -0
  78. package/dist/{chunk-KQ643L7Z.js → chunk-KHOVC2KL.js} +3 -3
  79. package/dist/chunk-KHOVC2KL.js.map +1 -0
  80. package/dist/{chunk-6PMXAK7F.js → chunk-KRBSTLKC.js} +57 -57
  81. package/dist/chunk-KRBSTLKC.js.map +1 -0
  82. package/dist/chunk-KVYHCGRY.js +2011 -0
  83. package/dist/chunk-KVYHCGRY.js.map +1 -0
  84. package/dist/{chunk-G7UBMCUT.mjs → chunk-LZ5YTMMP.mjs} +3 -3
  85. package/dist/chunk-LZ5YTMMP.mjs.map +1 -0
  86. package/dist/{chunk-WW4GE6CZ.js → chunk-MJ6XJGAL.js} +23 -119
  87. package/dist/chunk-MJ6XJGAL.js.map +1 -0
  88. package/dist/{chunk-NCRP2YHY.mjs → chunk-MKLXCV4Z.mjs} +8 -96
  89. package/dist/chunk-MKLXCV4Z.mjs.map +1 -0
  90. package/dist/chunk-MMDSZIXD.mjs +286 -0
  91. package/dist/chunk-MMDSZIXD.mjs.map +1 -0
  92. package/dist/{chunk-TC5YU6A4.mjs → chunk-N2O3OX5Y.mjs} +3 -3
  93. package/dist/chunk-N2O3OX5Y.mjs.map +1 -0
  94. package/dist/{chunk-3FRAIS4T.mjs → chunk-O6NNSPWD.mjs} +5 -5
  95. package/dist/{chunk-3FRAIS4T.mjs.map → chunk-O6NNSPWD.mjs.map} +1 -1
  96. package/dist/chunk-OIRZXSYM.js +80 -0
  97. package/dist/chunk-OIRZXSYM.js.map +1 -0
  98. package/dist/{chunk-Q5VFBPMG.mjs → chunk-P7JQRNBJ.mjs} +3 -3
  99. package/dist/chunk-P7JQRNBJ.mjs.map +1 -0
  100. package/dist/{chunk-BIHYZA67.mjs → chunk-PLIG5257.mjs} +18 -18
  101. package/dist/chunk-PLIG5257.mjs.map +1 -0
  102. package/dist/chunk-QIF4MG5V.mjs +283 -0
  103. package/dist/chunk-QIF4MG5V.mjs.map +1 -0
  104. package/dist/{chunk-4OOANEJV.mjs → chunk-RHECN4E2.mjs} +21 -21
  105. package/dist/chunk-RHECN4E2.mjs.map +1 -0
  106. package/dist/{chunk-YOTQG4NP.mjs → chunk-RHHTZTIN.mjs} +4 -4
  107. package/dist/chunk-RHHTZTIN.mjs.map +1 -0
  108. package/dist/{chunk-G6NSKJMH.js → chunk-RRQ2X26Z.js} +4 -4
  109. package/dist/chunk-RRQ2X26Z.js.map +1 -0
  110. package/dist/{chunk-4WBCWJSN.js → chunk-RST2T54Y.js} +7 -7
  111. package/dist/chunk-RST2T54Y.js.map +1 -0
  112. package/dist/{chunk-R2DXTE2L.js → chunk-RVNQI6BI.js} +4 -4
  113. package/dist/chunk-RVNQI6BI.js.map +1 -0
  114. package/dist/{chunk-SKFEJPMJ.mjs → chunk-S3K4LTRI.mjs} +6 -6
  115. package/dist/chunk-S3K4LTRI.mjs.map +1 -0
  116. package/dist/{chunk-ZM2SZJTZ.js → chunk-SWZ5XNF6.js} +9 -9
  117. package/dist/chunk-SWZ5XNF6.js.map +1 -0
  118. package/dist/{chunk-QSKLQX6H.js → chunk-U7HNBCBS.js} +16 -16
  119. package/dist/chunk-U7HNBCBS.js.map +1 -0
  120. package/dist/{chunk-CIVO4R6N.mjs → chunk-UJS3YSD3.mjs} +3 -3
  121. package/dist/chunk-UJS3YSD3.mjs.map +1 -0
  122. package/dist/{chunk-G6HXNQ2U.mjs → chunk-UJUWDF7M.mjs} +8 -8
  123. package/dist/chunk-UJUWDF7M.mjs.map +1 -0
  124. package/dist/{chunk-CAYOQDBR.js → chunk-UR5NENGE.js} +3 -3
  125. package/dist/chunk-UR5NENGE.js.map +1 -0
  126. package/dist/{chunk-QXAOXBVB.mjs → chunk-V7HGBDCB.mjs} +3 -3
  127. package/dist/chunk-V7HGBDCB.mjs.map +1 -0
  128. package/dist/{chunk-ATUCZXJY.js → chunk-V7RLIZMN.js} +14 -4
  129. package/dist/chunk-V7RLIZMN.js.map +1 -0
  130. package/dist/{chunk-ACUFEDVQ.js → chunk-VCKXK6V5.js} +9 -9
  131. package/dist/chunk-VCKXK6V5.js.map +1 -0
  132. package/dist/{chunk-XUS5ACKR.mjs → chunk-VIEXDTNF.mjs} +3 -3
  133. package/dist/chunk-VIEXDTNF.mjs.map +1 -0
  134. package/dist/{imageCrop/index.js → chunk-VN2DULIA.js} +24 -5
  135. package/dist/chunk-VN2DULIA.js.map +1 -0
  136. package/dist/{chunk-S6YSGVWD.js → chunk-VNWMRUY6.js} +31 -87
  137. package/dist/chunk-VNWMRUY6.js.map +1 -0
  138. package/dist/{chunk-3DXPQ4YV.mjs → chunk-VYK4M2D6.mjs} +18 -6
  139. package/dist/chunk-VYK4M2D6.mjs.map +1 -0
  140. package/dist/{chunk-WEEXCPSE.mjs → chunk-WB4H6ZUW.mjs} +3 -3
  141. package/dist/chunk-WB4H6ZUW.mjs.map +1 -0
  142. package/dist/{chunk-GWNBVGDT.mjs → chunk-WM3AEJ2E.mjs} +6 -257
  143. package/dist/chunk-WM3AEJ2E.mjs.map +1 -0
  144. package/dist/{chunk-CX2GHCAI.mjs → chunk-X5GINUGI.mjs} +26 -81
  145. package/dist/chunk-X5GINUGI.mjs.map +1 -0
  146. package/dist/{chunk-DIF5VRL3.mjs → chunk-XB7GUEHZ.mjs} +14 -5
  147. package/dist/chunk-XB7GUEHZ.mjs.map +1 -0
  148. package/dist/{chunk-ZLYPALF3.js → chunk-XE5RGZ3B.js} +11 -11
  149. package/dist/chunk-XE5RGZ3B.js.map +1 -0
  150. package/dist/{chunk-WJ7IMUEJ.mjs → chunk-XNTIMVSL.mjs} +7 -7
  151. package/dist/chunk-XNTIMVSL.mjs.map +1 -0
  152. package/dist/{chunk-ZWQJSZEY.js → chunk-Y7WHUKJF.js} +28 -12
  153. package/dist/chunk-Y7WHUKJF.js.map +1 -0
  154. package/dist/{components/index.mjs → chunk-YIRPPMCN.mjs} +305 -785
  155. package/dist/chunk-YIRPPMCN.mjs.map +1 -0
  156. package/dist/{chunk-KH6RQ4J5.js → chunk-Z2SNB5LJ.js} +3 -3
  157. package/dist/chunk-Z2SNB5LJ.js.map +1 -0
  158. package/dist/{chunk-HJ6MH7J7.js → chunk-ZOP7YIVX.js} +17 -17
  159. package/dist/chunk-ZOP7YIVX.js.map +1 -0
  160. package/dist/{chunk-HJZHQW5R.mjs → chunk-ZUZLWHH5.mjs} +3 -3
  161. package/dist/chunk-ZUZLWHH5.mjs.map +1 -0
  162. package/dist/{ai → common/ai}/llm/core/index.d.mts +3 -3
  163. package/dist/{ai → common/ai}/llm/core/index.d.ts +3 -3
  164. package/dist/{ai/llm → common/ai/llm/core}/index.js +14 -14
  165. package/dist/{ai/llm → common/ai/llm/core}/index.mjs +3 -3
  166. package/dist/{ai → common/ai}/llm/electron/index.d.mts +3 -3
  167. package/dist/{ai/llm/web → common/ai/llm/electron}/index.d.ts +3 -3
  168. package/dist/common/ai/llm/electron/index.js +67 -0
  169. package/dist/common/ai/llm/electron/index.mjs +10 -0
  170. package/dist/{ai → common/ai}/llm/index.d.mts +2 -2
  171. package/dist/{ai → common/ai}/llm/index.d.ts +2 -2
  172. package/dist/{ai/llm/core → common/ai/llm}/index.js +13 -13
  173. package/dist/{ai/llm/core → common/ai/llm}/index.mjs +2 -2
  174. package/dist/{ai → common/ai}/llm/miniapp/index.d.mts +3 -3
  175. package/dist/{ai → common/ai}/llm/miniapp/index.d.ts +3 -3
  176. package/dist/{ai/llm/rn → common/ai/llm/miniapp}/index.js +16 -16
  177. package/dist/{ai/llm/rn → common/ai/llm/miniapp}/index.mjs +4 -4
  178. package/dist/{ai → common/ai}/llm/rn/index.d.mts +3 -3
  179. package/dist/{ai → common/ai}/llm/rn/index.d.ts +3 -3
  180. package/dist/{ai/llm/miniapp → common/ai/llm/rn}/index.js +16 -16
  181. package/dist/{ai/llm/miniapp → common/ai/llm/rn}/index.mjs +4 -4
  182. package/dist/common/ai/llm/ui/electron/index.d.mts +5 -0
  183. package/dist/common/ai/llm/ui/electron/index.d.ts +5 -0
  184. package/dist/common/ai/llm/ui/electron/index.js +22 -0
  185. package/dist/common/ai/llm/ui/electron/index.mjs +9 -0
  186. package/dist/common/ai/llm/ui/miniapp/index.d.mts +9 -0
  187. package/dist/common/ai/llm/ui/miniapp/index.d.ts +9 -0
  188. package/dist/common/ai/llm/ui/miniapp/index.js +14 -0
  189. package/dist/common/ai/llm/ui/miniapp/index.mjs +5 -0
  190. package/dist/common/ai/llm/ui/rn/index.d.mts +9 -0
  191. package/dist/common/ai/llm/ui/rn/index.d.ts +9 -0
  192. package/dist/common/ai/llm/ui/rn/index.js +14 -0
  193. package/dist/common/ai/llm/ui/rn/index.mjs +5 -0
  194. package/dist/{ai → common/ai}/llm/ui/web/index.d.mts +7 -7
  195. package/dist/{ai → common/ai}/llm/ui/web/index.d.ts +7 -7
  196. package/dist/common/ai/llm/ui/web/index.js +21 -0
  197. package/dist/common/ai/llm/ui/web/index.mjs +8 -0
  198. package/dist/{ai → common/ai}/llm/web/index.d.mts +3 -3
  199. package/dist/{ai/llm/electron → common/ai/llm/web}/index.d.ts +3 -3
  200. package/dist/common/ai/llm/web/index.js +66 -0
  201. package/dist/common/ai/llm/web/index.mjs +9 -0
  202. package/dist/{analytics → common/analytics}/index.d.mts +1 -1
  203. package/dist/{analytics → common/analytics}/index.d.ts +1 -1
  204. package/dist/{analytics → common/analytics}/index.js +79 -79
  205. package/dist/{analytics → common/analytics}/index.mjs +3 -3
  206. package/dist/{analytics → common/analytics}/server/index.js +2 -2
  207. package/dist/common/analytics/server/index.js.map +1 -0
  208. package/dist/{analytics → common/analytics}/server/index.mjs +2 -2
  209. package/dist/common/analytics/server/index.mjs.map +1 -0
  210. package/dist/{api → common/api}/index.d.mts +3 -3
  211. package/dist/{api → common/api}/index.d.ts +3 -3
  212. package/dist/common/api/index.js +21 -0
  213. package/dist/common/api/index.mjs +4 -0
  214. package/dist/common/auth/components/index.d.mts +9 -9
  215. package/dist/common/auth/components/index.d.ts +9 -9
  216. package/dist/common/auth/index.js +6 -6
  217. package/dist/common/auth/index.mjs +2 -2
  218. package/dist/common/auth/react/index.d.mts +3 -3
  219. package/dist/common/auth/react/index.d.ts +3 -3
  220. package/dist/common/auth/rn/index.d.mts +2 -2
  221. package/dist/common/auth/rn/index.d.ts +2 -2
  222. package/dist/common/auth/rn/index.js +2 -2
  223. package/dist/common/auth/rn/index.js.map +1 -1
  224. package/dist/common/auth/rn/index.mjs +1 -1
  225. package/dist/common/auth/rn/index.mjs.map +1 -1
  226. package/dist/common/components/index.d.mts +4 -0
  227. package/dist/common/components/index.d.ts +4 -0
  228. package/dist/common/components/index.js +414 -0
  229. package/dist/common/components/index.mjs +9 -0
  230. package/dist/{config → common/config}/index.d.mts +1 -1
  231. package/dist/{config → common/config}/index.d.ts +1 -1
  232. package/dist/common/config/index.js +21 -0
  233. package/dist/common/config/index.mjs +4 -0
  234. package/dist/{config → common/config}/server/index.js +5 -5
  235. package/dist/common/config/server/index.js.map +1 -0
  236. package/dist/{config → common/config}/server/index.mjs +5 -5
  237. package/dist/common/config/server/index.mjs.map +1 -0
  238. package/dist/common/export/index.d.mts +2 -2
  239. package/dist/common/export/index.d.ts +2 -2
  240. package/dist/common/export/index.js +67 -67
  241. package/dist/common/export/index.mjs +3 -3
  242. package/dist/common/export/server/index.d.mts +2 -2
  243. package/dist/common/export/server/index.d.ts +2 -2
  244. package/dist/common/export/server/index.js +76 -48
  245. package/dist/common/export/server/index.mjs +3 -3
  246. package/dist/common/file/index.d.mts +2 -2
  247. package/dist/common/file/index.d.ts +2 -2
  248. package/dist/common/file/index.js +27 -27
  249. package/dist/common/file/index.mjs +5 -5
  250. package/dist/common/file/server/index.d.mts +2 -2
  251. package/dist/common/file/server/index.d.ts +2 -2
  252. package/dist/common/file/server/index.js +58 -50
  253. package/dist/common/file/server/index.mjs +8 -8
  254. package/dist/{i18n → common/i18n}/index.d.mts +1 -1
  255. package/dist/{i18n → common/i18n}/index.d.ts +1 -1
  256. package/dist/{i18n → common/i18n}/index.js +18 -18
  257. package/dist/{i18n → common/i18n}/index.mjs +2 -2
  258. package/dist/common/imageCrop/index.d.mts +2 -0
  259. package/dist/common/imageCrop/index.d.ts +2 -0
  260. package/dist/common/imageCrop/index.js +61 -0
  261. package/dist/common/imageCrop/index.mjs +4 -0
  262. package/dist/common/index.d.mts +16 -16
  263. package/dist/common/index.d.ts +16 -16
  264. package/dist/common/index.js +75 -67
  265. package/dist/common/index.mjs +26 -26
  266. package/dist/common/logger/index.d.mts +1 -1
  267. package/dist/common/logger/index.d.ts +1 -1
  268. package/dist/common/logger/index.js +6 -7
  269. package/dist/common/logger/index.mjs +1 -2
  270. package/dist/{ossFile → common/ossFile}/index.d.mts +6 -6
  271. package/dist/{ossFile → common/ossFile}/index.d.ts +6 -6
  272. package/dist/{ossFile → common/ossFile}/index.js +26 -26
  273. package/dist/{ossFile → common/ossFile}/index.mjs +5 -5
  274. package/dist/{ossFile/server/index.d.ts → common/ossFile/server/index.d.mts} +7 -7
  275. package/dist/{ossFile/server/index.d.mts → common/ossFile/server/index.d.ts} +7 -7
  276. package/dist/{ossFile → common/ossFile}/server/index.js +60 -52
  277. package/dist/{ossFile → common/ossFile}/server/index.mjs +10 -10
  278. package/dist/common/platform/index.js +8 -8
  279. package/dist/common/platform/index.mjs +4 -4
  280. package/dist/common/request/index.d.mts +1 -1
  281. package/dist/common/request/index.d.ts +1 -1
  282. package/dist/common/request/index.js +5 -6
  283. package/dist/common/request/index.mjs +2 -3
  284. package/dist/common/storage/index.d.mts +1 -1
  285. package/dist/common/storage/index.d.ts +1 -1
  286. package/dist/common/storage/index.js +17 -17
  287. package/dist/common/storage/index.mjs +5 -5
  288. package/dist/{universalExport → common/universalExport}/index.d.mts +6 -86
  289. package/dist/{universalExport → common/universalExport}/index.d.ts +6 -86
  290. package/dist/{universalExport → common/universalExport}/index.js +67 -67
  291. package/dist/common/universalExport/index.mjs +5 -0
  292. package/dist/{universalExport → common/universalExport}/server/index.d.mts +3 -84
  293. package/dist/{universalExport → common/universalExport}/server/index.d.ts +3 -84
  294. package/dist/common/universalExport/server/index.js +151 -0
  295. package/dist/common/universalExport/server/index.mjs +6 -0
  296. package/dist/{universalFile/index.d.ts → common/universalFile/index.d.mts} +9 -9
  297. package/dist/{universalFile/index.d.mts → common/universalFile/index.d.ts} +9 -9
  298. package/dist/{universalFile → common/universalFile}/index.js +63 -63
  299. package/dist/common/universalFile/index.js.map +1 -0
  300. package/dist/{universalFile → common/universalFile}/index.mjs +4 -4
  301. package/dist/common/universalFile/index.mjs.map +1 -0
  302. package/dist/{universalFile → common/universalFile}/server/index.d.mts +5 -5
  303. package/dist/{universalFile → common/universalFile}/server/index.d.ts +5 -5
  304. package/dist/{universalFile → common/universalFile}/server/index.js +68 -68
  305. package/dist/{universalFile → common/universalFile}/server/index.mjs +8 -8
  306. package/dist/common/utils/index.d.mts +1 -1
  307. package/dist/common/utils/index.d.ts +1 -1
  308. package/dist/common/utils/index.js +11 -12
  309. package/dist/common/utils/index.mjs +2 -3
  310. package/dist/{index-WrR57hKT.d.ts → index-BRLygK4h.d.ts} +2 -2
  311. package/dist/{request/index.d.mts → index-BWNK5mH2.d.ts} +19 -2
  312. package/dist/{utils/index.d.mts → index-BiCK6gg6.d.mts} +19 -1
  313. package/dist/{utils/index.d.ts → index-BiCK6gg6.d.ts} +19 -1
  314. package/dist/{index-DoUo8IrU.d.mts → index-BxZauNN_.d.mts} +8 -8
  315. package/dist/{index-DoUo8IrU.d.ts → index-BxZauNN_.d.ts} +8 -8
  316. package/dist/{request/index.d.ts → index-C-P2yBTH.d.mts} +19 -2
  317. package/dist/{index-D0cqaQEH.d.mts → index-CLB80GCP.d.mts} +5 -5
  318. package/dist/{index-D0cqaQEH.d.ts → index-CLB80GCP.d.ts} +5 -5
  319. package/dist/{index-2G9Dxjvt.d.ts → index-CT4K2z-O.d.ts} +2 -2
  320. package/dist/{index-qcOvRVuN.d.mts → index-D6RJTGce.d.mts} +2 -2
  321. package/dist/{storage/index.d.ts → index-DA7L9JlE.d.mts} +26 -3
  322. package/dist/{imageCrop/index.d.mts → index-DXVph21C.d.mts} +40 -4
  323. package/dist/{imageCrop/index.d.ts → index-DXVph21C.d.ts} +40 -4
  324. package/dist/{index-CYuUB8aF.d.mts → index-DzyK789B.d.mts} +2 -2
  325. package/dist/{logger/index.d.mts → index-FVJZCEtm.d.mts} +21 -1
  326. package/dist/{logger/index.d.ts → index-FVJZCEtm.d.ts} +21 -1
  327. package/dist/{storage/index.d.mts → index-nD9vPCZT.d.ts} +26 -3
  328. package/dist/{components/index.d.mts → index-nOmIv2BG.d.mts} +159 -5
  329. package/dist/{components/index.d.ts → index-nOmIv2BG.d.ts} +159 -5
  330. package/dist/{path-qjVnH8qU.d.ts → path-Bzc7hj1N.d.ts} +5 -1
  331. package/dist/{path-DkaHQSyW.d.mts → path-DN_65vhO.d.mts} +5 -1
  332. package/dist/{types-3ujSNAXb.d.mts → utils-Dm3O1rAa.d.mts} +81 -1
  333. package/dist/{types-3ujSNAXb.d.ts → utils-Dm3O1rAa.d.ts} +81 -1
  334. package/package.json +292 -312
  335. package/dist/AliyunOSSProvider-4GRL2FJB.js +0 -15
  336. package/dist/AliyunOSSProvider-QNVFIZ7Q.mjs +0 -6
  337. package/dist/CollisionBalls-BpHufX3H.d.mts +0 -41
  338. package/dist/CollisionBalls-BpHufX3H.d.ts +0 -41
  339. package/dist/ConfigService-BxK06xP6.d.mts +0 -262
  340. package/dist/ConfigService-BxK06xP6.d.ts +0 -262
  341. package/dist/LocalStorageProvider-J5RHV37G.mjs +0 -6
  342. package/dist/LocalStorageProvider-PFA2DMIJ.js +0 -15
  343. package/dist/UniversalFileService-CC4d3wkc.d.ts +0 -139
  344. package/dist/UniversalFileService-CzAE_G4V.d.mts +0 -139
  345. package/dist/ai/llm/electron/index.js +0 -66
  346. package/dist/ai/llm/electron/index.mjs +0 -9
  347. package/dist/ai/llm/ui/electron/index.d.mts +0 -5
  348. package/dist/ai/llm/ui/electron/index.d.ts +0 -5
  349. package/dist/ai/llm/ui/electron/index.js +0 -21
  350. package/dist/ai/llm/ui/electron/index.mjs +0 -8
  351. package/dist/ai/llm/ui/miniapp/index.d.mts +0 -9
  352. package/dist/ai/llm/ui/miniapp/index.d.ts +0 -9
  353. package/dist/ai/llm/ui/miniapp/index.js +0 -14
  354. package/dist/ai/llm/ui/miniapp/index.mjs +0 -5
  355. package/dist/ai/llm/ui/rn/index.d.mts +0 -9
  356. package/dist/ai/llm/ui/rn/index.d.ts +0 -9
  357. package/dist/ai/llm/ui/rn/index.js +0 -14
  358. package/dist/ai/llm/ui/rn/index.mjs +0 -5
  359. package/dist/ai/llm/ui/web/index.js +0 -20
  360. package/dist/ai/llm/ui/web/index.mjs +0 -7
  361. package/dist/ai/llm/web/index.js +0 -65
  362. package/dist/ai/llm/web/index.mjs +0 -8
  363. package/dist/analytics/server/index.js.map +0 -1
  364. package/dist/analytics/server/index.mjs.map +0 -1
  365. package/dist/api/index.js +0 -21
  366. package/dist/api/index.mjs +0 -4
  367. package/dist/audioDetection/index.d.mts +0 -449
  368. package/dist/audioDetection/index.d.ts +0 -449
  369. package/dist/audioDetection/index.js +0 -1244
  370. package/dist/audioDetection/index.js.map +0 -1
  371. package/dist/audioDetection/index.mjs +0 -1227
  372. package/dist/audioDetection/index.mjs.map +0 -1
  373. package/dist/boothVaultService-Cn4WPhjg.d.mts +0 -83
  374. package/dist/boothVaultService-Cn4WPhjg.d.ts +0 -83
  375. package/dist/business/index.d.mts +0 -2
  376. package/dist/business/index.d.ts +0 -2
  377. package/dist/business/index.js +0 -581
  378. package/dist/business/index.js.map +0 -1
  379. package/dist/business/index.mjs +0 -575
  380. package/dist/business/index.mjs.map +0 -1
  381. package/dist/calendar/index.d.mts +0 -1325
  382. package/dist/calendar/index.d.ts +0 -1325
  383. package/dist/calendar/index.js +0 -5964
  384. package/dist/calendar/index.js.map +0 -1
  385. package/dist/calendar/index.mjs +0 -5878
  386. package/dist/calendar/index.mjs.map +0 -1
  387. package/dist/calendar/routes/index.d.mts +0 -191
  388. package/dist/calendar/routes/index.d.ts +0 -191
  389. package/dist/calendar/routes/index.js +0 -844
  390. package/dist/calendar/routes/index.js.map +0 -1
  391. package/dist/calendar/routes/index.mjs +0 -826
  392. package/dist/calendar/routes/index.mjs.map +0 -1
  393. package/dist/chunk-25OFOKNF.js.map +0 -1
  394. package/dist/chunk-2Y7BKFKZ.js +0 -37
  395. package/dist/chunk-3CSCIRQY.js +0 -17
  396. package/dist/chunk-3CSCIRQY.js.map +0 -1
  397. package/dist/chunk-3DXPQ4YV.mjs.map +0 -1
  398. package/dist/chunk-3NHAT7D4.mjs.map +0 -1
  399. package/dist/chunk-4FDUURSD.js +0 -22
  400. package/dist/chunk-4FDUURSD.js.map +0 -1
  401. package/dist/chunk-4OOANEJV.mjs.map +0 -1
  402. package/dist/chunk-4WBCWJSN.js.map +0 -1
  403. package/dist/chunk-5GBDDXYL.mjs +0 -23
  404. package/dist/chunk-5GBDDXYL.mjs.map +0 -1
  405. package/dist/chunk-5USIS3UM.js +0 -4
  406. package/dist/chunk-6PMXAK7F.js.map +0 -1
  407. package/dist/chunk-7B5SI4OF.mjs +0 -15
  408. package/dist/chunk-7B5SI4OF.mjs.map +0 -1
  409. package/dist/chunk-ACUFEDVQ.js.map +0 -1
  410. package/dist/chunk-AQPU2AXH.js.map +0 -1
  411. package/dist/chunk-ATUCZXJY.js.map +0 -1
  412. package/dist/chunk-BCE6RUZV.js.map +0 -1
  413. package/dist/chunk-BIHYZA67.mjs.map +0 -1
  414. package/dist/chunk-C6KV7VTZ.mjs.map +0 -1
  415. package/dist/chunk-CAYOQDBR.js.map +0 -1
  416. package/dist/chunk-CIVO4R6N.mjs.map +0 -1
  417. package/dist/chunk-CX2GHCAI.mjs.map +0 -1
  418. package/dist/chunk-DIF5VRL3.mjs.map +0 -1
  419. package/dist/chunk-EQXPL7TN.mjs.map +0 -1
  420. package/dist/chunk-FCEBAWN6.js +0 -18
  421. package/dist/chunk-FCEBAWN6.js.map +0 -1
  422. package/dist/chunk-FHIE5MTC.mjs +0 -541
  423. package/dist/chunk-FHIE5MTC.mjs.map +0 -1
  424. package/dist/chunk-FHLTPXAR.js +0 -56
  425. package/dist/chunk-FIUBFREP.mjs.map +0 -1
  426. package/dist/chunk-FXQOXLDE.js.map +0 -1
  427. package/dist/chunk-G6HXNQ2U.mjs.map +0 -1
  428. package/dist/chunk-G6NSKJMH.js.map +0 -1
  429. package/dist/chunk-G7UBMCUT.mjs.map +0 -1
  430. package/dist/chunk-GSNGCENJ.js.map +0 -1
  431. package/dist/chunk-GWNBVGDT.mjs.map +0 -1
  432. package/dist/chunk-HDMIOOZY.mjs.map +0 -1
  433. package/dist/chunk-HJ6MH7J7.js.map +0 -1
  434. package/dist/chunk-HJZHQW5R.mjs.map +0 -1
  435. package/dist/chunk-I5ZPEDNR.mjs.map +0 -1
  436. package/dist/chunk-KH6RQ4J5.js.map +0 -1
  437. package/dist/chunk-KQ643L7Z.js.map +0 -1
  438. package/dist/chunk-LFB5EIIM.mjs +0 -31
  439. package/dist/chunk-LFB5EIIM.mjs.map +0 -1
  440. package/dist/chunk-MBANGIG3.mjs.map +0 -1
  441. package/dist/chunk-NCRP2YHY.mjs.map +0 -1
  442. package/dist/chunk-NDGHXVGS.js +0 -25
  443. package/dist/chunk-NDGHXVGS.js.map +0 -1
  444. package/dist/chunk-NDPO5OMC.js +0 -563
  445. package/dist/chunk-NDPO5OMC.js.map +0 -1
  446. package/dist/chunk-PBI7FKMB.js.map +0 -1
  447. package/dist/chunk-Q5EDCKQA.js.map +0 -1
  448. package/dist/chunk-Q5VFBPMG.mjs.map +0 -1
  449. package/dist/chunk-QSKLQX6H.js.map +0 -1
  450. package/dist/chunk-QXAOXBVB.mjs.map +0 -1
  451. package/dist/chunk-R2DXTE2L.js.map +0 -1
  452. package/dist/chunk-RTD2WHQQ.mjs +0 -16
  453. package/dist/chunk-RTD2WHQQ.mjs.map +0 -1
  454. package/dist/chunk-S6YSGVWD.js.map +0 -1
  455. package/dist/chunk-SKFEJPMJ.mjs.map +0 -1
  456. package/dist/chunk-SLKOEYFH.js.map +0 -1
  457. package/dist/chunk-TC5YU6A4.mjs.map +0 -1
  458. package/dist/chunk-UCOE6SET.js.map +0 -1
  459. package/dist/chunk-UIYKZ73N.js +0 -36
  460. package/dist/chunk-UIYKZ73N.js.map +0 -1
  461. package/dist/chunk-V7EVKD5G.mjs.map +0 -1
  462. package/dist/chunk-VMTEDX5H.js.map +0 -1
  463. package/dist/chunk-VRN76M56.mjs +0 -3
  464. package/dist/chunk-VXFUXZN5.mjs +0 -20
  465. package/dist/chunk-VXFUXZN5.mjs.map +0 -1
  466. package/dist/chunk-WEEXCPSE.mjs.map +0 -1
  467. package/dist/chunk-WJ7IMUEJ.mjs.map +0 -1
  468. package/dist/chunk-WW4GE6CZ.js.map +0 -1
  469. package/dist/chunk-XJ7ZAGC5.js.map +0 -1
  470. package/dist/chunk-XUS5ACKR.mjs.map +0 -1
  471. package/dist/chunk-YOTQG4NP.mjs.map +0 -1
  472. package/dist/chunk-ZGVB35L2.mjs.map +0 -1
  473. package/dist/chunk-ZLYPALF3.js.map +0 -1
  474. package/dist/chunk-ZM2SZJTZ.js.map +0 -1
  475. package/dist/chunk-ZRAW3HXA.js.map +0 -1
  476. package/dist/chunk-ZWQJSZEY.js.map +0 -1
  477. package/dist/components/index.js +0 -2516
  478. package/dist/components/index.js.map +0 -1
  479. package/dist/components/index.mjs.map +0 -1
  480. package/dist/config/index.js +0 -21
  481. package/dist/config/index.mjs +0 -4
  482. package/dist/config/server/index.js.map +0 -1
  483. package/dist/config/server/index.mjs.map +0 -1
  484. package/dist/drizzle-schema-BNhqj2AZ.d.mts +0 -1114
  485. package/dist/drizzle-schema-BNhqj2AZ.d.ts +0 -1114
  486. package/dist/festivalCard/index.d.mts +0 -76
  487. package/dist/festivalCard/index.d.ts +0 -76
  488. package/dist/festivalCard/index.js +0 -1492
  489. package/dist/festivalCard/index.js.map +0 -1
  490. package/dist/festivalCard/index.mjs +0 -1475
  491. package/dist/festivalCard/index.mjs.map +0 -1
  492. package/dist/festivalCard/routes/index.d.mts +0 -42
  493. package/dist/festivalCard/routes/index.d.ts +0 -42
  494. package/dist/festivalCard/routes/index.js +0 -361
  495. package/dist/festivalCard/routes/index.js.map +0 -1
  496. package/dist/festivalCard/routes/index.mjs +0 -356
  497. package/dist/festivalCard/routes/index.mjs.map +0 -1
  498. package/dist/festivalCard/server/index.d.mts +0 -120
  499. package/dist/festivalCard/server/index.d.ts +0 -120
  500. package/dist/festivalCard/server/index.js +0 -272
  501. package/dist/festivalCard/server/index.js.map +0 -1
  502. package/dist/festivalCard/server/index.mjs +0 -265
  503. package/dist/festivalCard/server/index.mjs.map +0 -1
  504. package/dist/festivalCardService-B3GsnNpV.d.ts +0 -13
  505. package/dist/festivalCardService-CWhrLNE9.d.mts +0 -13
  506. package/dist/imageCrop/index.js.map +0 -1
  507. package/dist/imageCrop/index.mjs.map +0 -1
  508. package/dist/index-Bjem5rWn.d.mts +0 -17
  509. package/dist/index-C5U-2hJq.d.ts +0 -23
  510. package/dist/index-CifSBBP2.d.ts +0 -17
  511. package/dist/index-D0K4ehme.d.mts +0 -20
  512. package/dist/index-DLnfKN-a.d.mts +0 -23
  513. package/dist/index-DSel44Ke.d.mts +0 -93
  514. package/dist/index-DSel44Ke.d.ts +0 -93
  515. package/dist/index-DZ5iJtNO.d.mts +0 -102
  516. package/dist/index-DZ5iJtNO.d.ts +0 -102
  517. package/dist/index-Da7qdkgW.d.ts +0 -20
  518. package/dist/index-DrPcMJPc.d.mts +0 -250
  519. package/dist/index-DrPcMJPc.d.ts +0 -250
  520. package/dist/index-oLUvfqT8.d.ts +0 -20
  521. package/dist/index-pe38RDgC.d.mts +0 -20
  522. package/dist/index.d.mts +0 -11611
  523. package/dist/index.d.ts +0 -11611
  524. package/dist/index.js +0 -17230
  525. package/dist/index.js.map +0 -1
  526. package/dist/index.mjs +0 -16954
  527. package/dist/index.mjs.map +0 -1
  528. package/dist/logger/index.js +0 -29
  529. package/dist/logger/index.mjs +0 -4
  530. package/dist/mikuContest/ui/web/index.d.mts +0 -2
  531. package/dist/mikuContest/ui/web/index.d.ts +0 -2
  532. package/dist/mikuContest/ui/web/index.js +0 -353
  533. package/dist/mikuContest/ui/web/index.js.map +0 -1
  534. package/dist/mikuContest/ui/web/index.mjs +0 -343
  535. package/dist/mikuContest/ui/web/index.mjs.map +0 -1
  536. package/dist/mikuFireworks3D/index.d.mts +0 -268
  537. package/dist/mikuFireworks3D/index.d.ts +0 -268
  538. package/dist/mikuFireworks3D/index.js +0 -1267
  539. package/dist/mikuFireworks3D/index.js.map +0 -1
  540. package/dist/mikuFireworks3D/index.mjs +0 -1228
  541. package/dist/mikuFireworks3D/index.mjs.map +0 -1
  542. package/dist/mikuFusionGame/index.d.mts +0 -117
  543. package/dist/mikuFusionGame/index.d.ts +0 -117
  544. package/dist/mikuFusionGame/index.js +0 -1208
  545. package/dist/mikuFusionGame/index.js.map +0 -1
  546. package/dist/mikuFusionGame/index.mjs +0 -1195
  547. package/dist/mikuFusionGame/index.mjs.map +0 -1
  548. package/dist/mmd/admin/index.d.mts +0 -487
  549. package/dist/mmd/admin/index.d.ts +0 -487
  550. package/dist/mmd/admin/index.js +0 -1058
  551. package/dist/mmd/admin/index.js.map +0 -1
  552. package/dist/mmd/admin/index.mjs +0 -1027
  553. package/dist/mmd/admin/index.mjs.map +0 -1
  554. package/dist/mmd/index.d.mts +0 -2467
  555. package/dist/mmd/index.d.ts +0 -2467
  556. package/dist/mmd/index.js +0 -10119
  557. package/dist/mmd/index.js.map +0 -1
  558. package/dist/mmd/index.mjs +0 -10028
  559. package/dist/mmd/index.mjs.map +0 -1
  560. package/dist/mmd/server/index.d.mts +0 -139
  561. package/dist/mmd/server/index.d.ts +0 -139
  562. package/dist/mmd/server/index.js +0 -424
  563. package/dist/mmd/server/index.js.map +0 -1
  564. package/dist/mmd/server/index.mjs +0 -404
  565. package/dist/mmd/server/index.mjs.map +0 -1
  566. package/dist/music/index.d.mts +0 -74
  567. package/dist/music/index.d.ts +0 -74
  568. package/dist/music/index.js +0 -830
  569. package/dist/music/index.js.map +0 -1
  570. package/dist/music/index.mjs +0 -809
  571. package/dist/music/index.mjs.map +0 -1
  572. package/dist/music/server/index.d.mts +0 -1
  573. package/dist/music/server/index.d.ts +0 -1
  574. package/dist/music/server/index.js +0 -194
  575. package/dist/music/server/index.js.map +0 -1
  576. package/dist/music/server/index.mjs +0 -182
  577. package/dist/music/server/index.mjs.map +0 -1
  578. package/dist/navigation/index.d.mts +0 -93
  579. package/dist/navigation/index.d.ts +0 -93
  580. package/dist/navigation/index.js +0 -453
  581. package/dist/navigation/index.js.map +0 -1
  582. package/dist/navigation/index.mjs +0 -443
  583. package/dist/navigation/index.mjs.map +0 -1
  584. package/dist/portfolio/index.d.mts +0 -66
  585. package/dist/portfolio/index.d.ts +0 -66
  586. package/dist/portfolio/index.js +0 -736
  587. package/dist/portfolio/index.js.map +0 -1
  588. package/dist/portfolio/index.mjs +0 -724
  589. package/dist/portfolio/index.mjs.map +0 -1
  590. package/dist/qqbot/server/index.d.mts +0 -216
  591. package/dist/qqbot/server/index.d.ts +0 -216
  592. package/dist/qqbot/server/index.js +0 -394
  593. package/dist/qqbot/server/index.js.map +0 -1
  594. package/dist/qqbot/server/index.mjs +0 -385
  595. package/dist/qqbot/server/index.mjs.map +0 -1
  596. package/dist/qqbot/ui/web/index.d.mts +0 -10
  597. package/dist/qqbot/ui/web/index.d.ts +0 -10
  598. package/dist/qqbot/ui/web/index.js +0 -105
  599. package/dist/qqbot/ui/web/index.js.map +0 -1
  600. package/dist/qqbot/ui/web/index.mjs +0 -99
  601. package/dist/qqbot/ui/web/index.mjs.map +0 -1
  602. package/dist/request/index.js +0 -22
  603. package/dist/request/index.mjs +0 -5
  604. package/dist/screenReceiver/index.d.mts +0 -86
  605. package/dist/screenReceiver/index.d.ts +0 -86
  606. package/dist/screenReceiver/index.js +0 -281
  607. package/dist/screenReceiver/index.js.map +0 -1
  608. package/dist/screenReceiver/index.mjs +0 -273
  609. package/dist/screenReceiver/index.mjs.map +0 -1
  610. package/dist/storage/index.js +0 -48
  611. package/dist/storage/index.mjs +0 -7
  612. package/dist/testYourself/admin/index.d.mts +0 -58
  613. package/dist/testYourself/admin/index.d.ts +0 -58
  614. package/dist/testYourself/admin/index.js +0 -1009
  615. package/dist/testYourself/admin/index.js.map +0 -1
  616. package/dist/testYourself/admin/index.mjs +0 -1002
  617. package/dist/testYourself/admin/index.mjs.map +0 -1
  618. package/dist/testYourself/index.d.mts +0 -53
  619. package/dist/testYourself/index.d.ts +0 -53
  620. package/dist/testYourself/index.js +0 -2551
  621. package/dist/testYourself/index.js.map +0 -1
  622. package/dist/testYourself/index.mjs +0 -2531
  623. package/dist/testYourself/index.mjs.map +0 -1
  624. package/dist/testYourself/server/index.d.mts +0 -1029
  625. package/dist/testYourself/server/index.d.ts +0 -1029
  626. package/dist/testYourself/server/index.js +0 -825
  627. package/dist/testYourself/server/index.js.map +0 -1
  628. package/dist/testYourself/server/index.mjs +0 -816
  629. package/dist/testYourself/server/index.mjs.map +0 -1
  630. package/dist/types-B6B210gX.d.mts +0 -270
  631. package/dist/types-B6B210gX.d.ts +0 -270
  632. package/dist/types-Bdnte5EN.d.mts +0 -292
  633. package/dist/types-Cs0CLvrH.d.mts +0 -70
  634. package/dist/types-Cs0CLvrH.d.ts +0 -70
  635. package/dist/types-HorDyIRv.d.mts +0 -303
  636. package/dist/types-HorDyIRv.d.ts +0 -303
  637. package/dist/types-_rFX1atk.d.ts +0 -292
  638. package/dist/universalExport/index.mjs +0 -5
  639. package/dist/universalExport/server/index.js +0 -123
  640. package/dist/universalExport/server/index.mjs +0 -6
  641. package/dist/universalFile/index.js.map +0 -1
  642. package/dist/universalFile/index.mjs.map +0 -1
  643. package/dist/universalFile/server/index.js.map +0 -1
  644. package/dist/universalFile/server/index.mjs.map +0 -1
  645. package/dist/utils/index.js +0 -46
  646. package/dist/utils/index.js.map +0 -1
  647. package/dist/utils/index.mjs +0 -5
  648. package/dist/utils/index.mjs.map +0 -1
  649. package/dist/vocaloidBooth/index.d.mts +0 -64
  650. package/dist/vocaloidBooth/index.d.ts +0 -64
  651. package/dist/vocaloidBooth/index.js +0 -376
  652. package/dist/vocaloidBooth/index.js.map +0 -1
  653. package/dist/vocaloidBooth/index.mjs +0 -362
  654. package/dist/vocaloidBooth/index.mjs.map +0 -1
  655. package/dist/vocaloidBooth/server/index.d.mts +0 -111
  656. package/dist/vocaloidBooth/server/index.d.ts +0 -111
  657. package/dist/vocaloidBooth/server/index.js +0 -247
  658. package/dist/vocaloidBooth/server/index.js.map +0 -1
  659. package/dist/vocaloidBooth/server/index.mjs +0 -237
  660. package/dist/vocaloidBooth/server/index.mjs.map +0 -1
  661. package/dist/vocaloidBooth/web/index.d.mts +0 -3
  662. package/dist/vocaloidBooth/web/index.d.ts +0 -3
  663. package/dist/vocaloidBooth/web/index.js +0 -376
  664. package/dist/vocaloidBooth/web/index.js.map +0 -1
  665. package/dist/vocaloidBooth/web/index.mjs +0 -362
  666. package/dist/vocaloidBooth/web/index.mjs.map +0 -1
  667. /package/dist/{ai → common/ai}/llm/core/index.js.map +0 -0
  668. /package/dist/{ai → common/ai}/llm/core/index.mjs.map +0 -0
  669. /package/dist/{ai → common/ai}/llm/electron/index.js.map +0 -0
  670. /package/dist/{ai → common/ai}/llm/electron/index.mjs.map +0 -0
  671. /package/dist/{ai → common/ai}/llm/index.js.map +0 -0
  672. /package/dist/{ai → common/ai}/llm/index.mjs.map +0 -0
  673. /package/dist/{ai → common/ai}/llm/miniapp/index.js.map +0 -0
  674. /package/dist/{ai → common/ai}/llm/miniapp/index.mjs.map +0 -0
  675. /package/dist/{ai → common/ai}/llm/rn/index.js.map +0 -0
  676. /package/dist/{ai → common/ai}/llm/rn/index.mjs.map +0 -0
  677. /package/dist/{ai → common/ai}/llm/ui/electron/index.js.map +0 -0
  678. /package/dist/{ai → common/ai}/llm/ui/electron/index.mjs.map +0 -0
  679. /package/dist/{ai → common/ai}/llm/ui/miniapp/index.js.map +0 -0
  680. /package/dist/{ai → common/ai}/llm/ui/miniapp/index.mjs.map +0 -0
  681. /package/dist/{ai → common/ai}/llm/ui/rn/index.js.map +0 -0
  682. /package/dist/{ai → common/ai}/llm/ui/rn/index.mjs.map +0 -0
  683. /package/dist/{ai → common/ai}/llm/ui/web/index.js.map +0 -0
  684. /package/dist/{ai → common/ai}/llm/ui/web/index.mjs.map +0 -0
  685. /package/dist/{ai → common/ai}/llm/web/index.js.map +0 -0
  686. /package/dist/{ai → common/ai}/llm/web/index.mjs.map +0 -0
  687. /package/dist/{analytics → common/analytics}/index.js.map +0 -0
  688. /package/dist/{analytics → common/analytics}/index.mjs.map +0 -0
  689. /package/dist/{analytics → common/analytics}/server/index.d.mts +0 -0
  690. /package/dist/{analytics → common/analytics}/server/index.d.ts +0 -0
  691. /package/dist/{api → common/api}/index.js.map +0 -0
  692. /package/dist/{api → common/api}/index.mjs.map +0 -0
  693. /package/dist/{config → common/components}/index.js.map +0 -0
  694. /package/dist/{config → common/components}/index.mjs.map +0 -0
  695. /package/dist/{i18n → common/config}/index.js.map +0 -0
  696. /package/dist/{i18n → common/config}/index.mjs.map +0 -0
  697. /package/dist/{config → common/config}/server/index.d.mts +0 -0
  698. /package/dist/{config → common/config}/server/index.d.ts +0 -0
  699. /package/dist/{logger → common/i18n}/index.js.map +0 -0
  700. /package/dist/{logger → common/i18n}/index.mjs.map +0 -0
  701. /package/dist/{ossFile → common/imageCrop}/index.js.map +0 -0
  702. /package/dist/{ossFile → common/imageCrop}/index.mjs.map +0 -0
  703. /package/dist/{ossFile/server → common/ossFile}/index.js.map +0 -0
  704. /package/dist/{ossFile/server → common/ossFile}/index.mjs.map +0 -0
  705. /package/dist/{request → common/ossFile/server}/index.js.map +0 -0
  706. /package/dist/{request → common/ossFile/server}/index.mjs.map +0 -0
  707. /package/dist/{storage → common/universalExport}/index.js.map +0 -0
  708. /package/dist/{storage → common/universalExport}/index.mjs.map +0 -0
  709. /package/dist/{universalExport → common/universalExport/server}/index.js.map +0 -0
  710. /package/dist/{universalExport → common/universalExport/server}/index.mjs.map +0 -0
  711. /package/dist/{universalExport → common/universalFile}/server/index.js.map +0 -0
  712. /package/dist/{universalExport → common/universalFile}/server/index.mjs.map +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/storage/hooks/useStorage.ts","../../src/storage/adapters/web-adapter.ts","../../src/storage/hooks/useLocalStorage.ts","../../src/logger/console-adapter.ts","../../src/logger/Logger.ts","../../src/utils/cn.ts","../../src/components/ImageMappingPanel.tsx","../../src/components/LocalImageMappingPanel.tsx","../../src/mikuFusionGame/constants.ts","../../src/mikuFusionGame/engine/collision.ts","../../src/mikuFusionGame/engine/scoring.ts","../../src/mikuFusionGame/engine/physics.ts","../../src/mikuFusionGame/engine/merge.ts","../../src/mikuFusionGame/engine/stateMachine.ts","../../src/mikuFusionGame/hooks/useMikuFusionGame.ts","../../src/mikuFusionGame/hooks/useResponsiveCanvas.ts","../../src/mikuFusionGame/components/GameCanvas.tsx","../../src/mikuFusionGame/components/GameControls.tsx","../../src/mikuFusionGame/components/GameHUD.tsx","../../src/mikuFusionGame/components/GameResultModal.tsx","../../src/mikuFusionGame/components/MikuFusionGame.tsx","../../src/mikuFusionGame/content/index.ts"],"names":["useState","useEffect","useCallback","twMerge","clsx","React","useRef","container","useMemo"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * 通用存储 Hook\n * 支持多平台:Web、React Native、小程序\n *\n * 优点:\n * 1. 异步读取,不阻塞渲染\n * 2. 统一的错误处理\n * 3. 类型安全\n * 4. 跨平台支持\n * 5. 自动同步(支持的平台)\n */\n\nimport { useState, useEffect, useCallback } from 'react';\nimport type { StorageAdapter } from '../types';\n\nexport function useStorage<T>(\n storage: StorageAdapter,\n key: string,\n defaultValue: T\n): [T, (value: T) => void, () => void, boolean] {\n const [value, setValue] = useState<T>(defaultValue);\n const [loading, setLoading] = useState(true);\n\n // 初始化时从存储读取\n useEffect(() => {\n const loadValue = async () => {\n try {\n const stored = await storage.getItem(key);\n if (stored !== null) {\n setValue(JSON.parse(stored));\n }\n } catch (error) {\n console.error('Error reading storage key \"' + (key) + '\":', error);\n } finally {\n setLoading(false);\n }\n };\n\n void loadValue();\n }, [storage, key]);\n\n // 更新值并同步到存储\n const updateValue = useCallback(\n async (newValue: T) => {\n try {\n setValue(newValue);\n await storage.setItem(key, JSON.stringify(newValue));\n\n // 如果是 Web 适配器,触发自定义事件\n if ('dispatchChange' in storage && typeof storage.dispatchChange === 'function') {\n (storage as any).dispatchChange(key, JSON.stringify(newValue));\n }\n } catch (error) {\n console.error('Error setting storage key \"' + (key) + '\":', error);\n }\n },\n [storage, key]\n );\n\n // 删除值\n const removeValue = useCallback(async () => {\n try {\n setValue(defaultValue);\n await storage.removeItem(key);\n\n // 如果是 Web 适配器,触发自定义事件\n if ('dispatchChange' in storage && typeof storage.dispatchChange === 'function') {\n (storage as any).dispatchChange(key, null);\n }\n } catch (error) {\n console.error('Error removing storage key \"' + (key) + '\":', error);\n }\n }, [storage, key, defaultValue]);\n\n // 监听存储变化\n useEffect(() => {\n if (!storage.addChangeListener) {\n return;\n }\n\n const cleanup = storage.addChangeListener((changedKey: string, newValue: string | null) => {\n if (changedKey === key) {\n try {\n if (newValue === null) {\n setValue(defaultValue);\n } else {\n setValue(JSON.parse(newValue));\n }\n } catch (error) {\n console.error('Error parsing storage change event:', error);\n }\n }\n });\n\n return cleanup;\n }, [storage, key, defaultValue]);\n\n return [value, updateValue, removeValue, loading];\n}\n\n","/**\n * Web 平台存储适配器 (localStorage)\n */\n\nimport type { StorageAdapter } from '../types';\n\n/**\n * 检查是否在浏览器环境中\n */\nconst isBrowser = typeof window !== 'undefined' && typeof window.localStorage !== 'undefined';\n\nexport class WebStorageAdapter implements StorageAdapter {\n async getItem(key: string): Promise<string | null> {\n // SSR 环境下返回 null\n if (!isBrowser) {\n return null;\n }\n\n try {\n return localStorage.getItem(key);\n } catch (error) {\n console.error('[WebStorage] Error getting item \"' + (key) + '\":', error);\n return null;\n }\n }\n\n async setItem(key: string, value: string): Promise<void> {\n // SSR 环境下静默忽略\n if (!isBrowser) {\n return;\n }\n\n try {\n localStorage.setItem(key, value);\n } catch (error) {\n console.error('[WebStorage] Error setting item \"' + (key) + '\":', error);\n throw error;\n }\n }\n\n async removeItem(key: string): Promise<void> {\n // SSR 环境下静默忽略\n if (!isBrowser) {\n return;\n }\n\n try {\n localStorage.removeItem(key);\n } catch (error) {\n console.error('[WebStorage] Error removing item \"' + (key) + '\":', error);\n throw error;\n }\n }\n\n async clear(): Promise<void> {\n // SSR 环境下静默忽略\n if (!isBrowser) {\n return;\n }\n\n try {\n localStorage.clear();\n } catch (error) {\n console.error('[WebStorage] Error clearing storage:', error);\n throw error;\n }\n }\n\n addChangeListener(callback: (key: string, value: string | null) => void): () => void {\n // SSR 环境下返回空函数\n if (!isBrowser) {\n return () => {};\n }\n\n // 监听 storage 事件(跨标签页)\n const handleStorageEvent = (e: StorageEvent) => {\n if (e.key) {\n callback(e.key, e.newValue);\n }\n };\n\n // 监听自定义事件(同标签页)\n const handleCustomEvent = (e: Event) => {\n const customEvent = e as CustomEvent;\n callback(customEvent.detail.key, customEvent.detail.value);\n };\n\n window.addEventListener('storage', handleStorageEvent);\n window.addEventListener('local-storage-change', handleCustomEvent);\n\n // 返回清理函数\n return () => {\n window.removeEventListener('storage', handleStorageEvent);\n window.removeEventListener('local-storage-change', handleCustomEvent);\n };\n }\n\n /**\n * 触发自定义事件,通知同标签页的其他组件\n */\n dispatchChange(key: string, value: string | null): void {\n // SSR 环境下静默忽略\n if (!isBrowser) {\n return;\n }\n\n window.dispatchEvent(\n new CustomEvent('local-storage-change', {\n detail: { key, value },\n })\n );\n }\n}\n\n","/**\n * Web 平台 localStorage Hook\n * 基于通用 useStorage 的便捷封装\n */\n\nimport { useStorage } from './useStorage';\nimport { WebStorageAdapter } from '../adapters/web-adapter';\n\n// 创建单例适配器\nconst webStorage = new WebStorageAdapter();\n\n/**\n * Web 平台的 localStorage Hook\n *\n * @param key - 存储键名\n * @param defaultValue - 默认值\n * @returns [value, setValue, removeValue, isLoading]\n */\nexport function useLocalStorage<T>(\n key: string,\n defaultValue: T\n): [T, (value: T) => void, () => void, boolean] {\n return useStorage(webStorage, key, defaultValue);\n}\n\n","import type { LoggerAdapter, LogEntry, LogLevel } from './types';\n\n/**\n * 控制台日志适配器\n * 使用 console.info/warn/error 输出日志\n */\nexport class ConsoleLoggerAdapter implements LoggerAdapter {\n private readonly colors = {\n DEBUG: '\\x1b[36m', // Cyan\n INFO: '\\x1b[32m', // Green\n WARN: '\\x1b[33m', // Yellow\n ERROR: '\\x1b[31m', // Red\n RESET: '\\x1b[0m',\n };\n\n log(entry: LogEntry): void {\n const { level, message, timestamp, data, context, error } = entry;\n\n // 构建日志消息\n let logMessage = '';\n\n // 添加时间戳\n if (timestamp) {\n logMessage += '[' + (this.formatTimestamp(timestamp)) + '] ';\n }\n\n // 添加日志级别\n const levelName = this.getLevelName(level);\n logMessage += (levelName) + ': ';\n\n // 添加上下文\n if (context) {\n logMessage += '[' + (context) + '] ';\n }\n\n // 添加消息\n logMessage += message;\n\n // 根据日志级别选择输出方式\n switch (level) {\n case 0: // DEBUG\n console.debug(this.colorize(logMessage, 'DEBUG'), data || '');\n break;\n case 1: // INFO\n console.info(this.colorize(logMessage, 'INFO'), data || '');\n break;\n case 2: // WARN\n console.warn(this.colorize(logMessage, 'WARN'), data || '');\n break;\n case 3: // ERROR\n console.error(this.colorize(logMessage, 'ERROR'), data || '');\n if (error) {\n console.error(error);\n }\n break;\n }\n }\n\n private formatTimestamp(date: Date): string {\n return date.toISOString();\n }\n\n private getLevelName(level: LogLevel): string {\n const names = ['DEBUG', 'INFO', 'WARN', 'ERROR', 'NONE'];\n return names[level] || 'UNKNOWN';\n }\n\n private colorize(message: string, level: keyof typeof this.colors): string {\n // 只在支持颜色的环境中使用颜色\n if (typeof process !== 'undefined' && process.stdout?.isTTY) {\n return (this.colors[level]) + (message) + (this.colors.RESET);\n }\n return message;\n }\n}\n\n","import type { LogLevel, LogEntry, LoggerConfig, LoggerAdapter } from './types';\nimport { ConsoleLoggerAdapter } from './console-adapter';\n\n/**\n * 统一日志管理类\n */\nexport class Logger {\n private config: Required<LoggerConfig>;\n private adapter: LoggerAdapter;\n private context?: string;\n\n constructor(config?: Partial<LoggerConfig>, context?: string) {\n const isProduction =\n typeof process !== 'undefined' ? process.env.NODE_ENV === 'production' : false;\n\n this.config = {\n minLevel: config?.minLevel ?? (isProduction ? 1 : 0), // INFO in prod, DEBUG in dev\n enableTimestamp: config?.enableTimestamp ?? true,\n enableContext: config?.enableContext ?? true,\n environment: config?.environment ?? (isProduction ? 'production' : 'development'),\n adapter: config?.adapter ?? new ConsoleLoggerAdapter(),\n };\n this.adapter = this.config.adapter;\n this.context = context;\n }\n\n /**\n * 创建带上下文的子 Logger\n */\n createChild(context: string): Logger {\n return new Logger(this.config, context);\n }\n\n /**\n * 调试日志\n */\n debug(message: string, data?: any): void {\n this.log(0, message, data); // LogLevel.DEBUG\n }\n\n /**\n * 信息日志\n */\n info(message: string, data?: any): void {\n this.log(1, message, data); // LogLevel.INFO\n }\n\n /**\n * 警告日志\n */\n warn(message: string, data?: any): void {\n this.log(2, message, data); // LogLevel.WARN\n }\n\n /**\n * 错误日志\n */\n error(message: string, error?: Error | any): void {\n this.log(\n 3, // LogLevel.ERROR\n message,\n error instanceof Error ? undefined : error,\n error instanceof Error ? error : undefined\n );\n }\n\n /**\n * 核心日志方法\n */\n private log(level: LogLevel, message: string, data?: any, error?: Error): void {\n // 检查日志级别\n if (level < this.config.minLevel) {\n return;\n }\n\n // 检查动态调试配置(仅在浏览器环境)\n if (typeof window !== 'undefined' && typeof localStorage !== 'undefined') {\n const loggerDebug = localStorage.getItem('logger-debug');\n // 如果明确设置为 false,则不输出(但 Error 级别始终输出)\n if (loggerDebug === 'false' && level < 3) {\n // level < ERROR\n return;\n }\n }\n\n const entry: LogEntry = {\n level,\n message,\n timestamp: this.config.enableTimestamp ? new Date() : (undefined as any),\n data,\n context: this.config.enableContext ? this.context : undefined,\n error,\n };\n\n this.adapter.log(entry);\n }\n\n /**\n * 设置日志级别\n */\n setLevel(level: LogLevel): void {\n this.config.minLevel = level;\n }\n\n /**\n * 获取当前日志级别\n */\n getLevel(): LogLevel {\n return this.config.minLevel;\n }\n}\n\n/**\n * 默认全局 Logger 实例\n */\nexport const logger = new Logger();\n\n/**\n * 创建带上下文的 Logger\n */\nexport function createLogger(context: string, config?: Partial<LoggerConfig>): Logger {\n return new Logger(config, context);\n}\n\n","import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n\n","import React from 'react';\nimport { cn } from '../utils';\n\nexport interface ImageMappingItem {\n id: string;\n label: string;\n}\n\nexport type ImageMappingValue = Record<string, string>;\n\nexport interface ImageMappingPanelProps {\n title: string;\n items: ImageMappingItem[];\n value: ImageMappingValue;\n onChange: (next: ImageMappingValue) => void;\n className?: string;\n uploadLabel?: string;\n clearLabel?: string;\n}\n\nexport function ImageMappingPanel({\n title,\n items,\n value,\n onChange,\n className,\n uploadLabel = '上传图片',\n clearLabel = '清除',\n}: ImageMappingPanelProps) {\n const handleFileChange = (id: string, file?: File) => {\n if (!file) {\n return;\n }\n\n const reader = new FileReader();\n reader.onload = () => {\n const base64 = typeof reader.result === 'string' ? reader.result : '';\n if (!base64) {\n return;\n }\n onChange({\n ...value,\n [id]: base64,\n });\n };\n reader.readAsDataURL(file);\n };\n\n const handleRemove = (id: string) => {\n const next = { ...value };\n delete next[id];\n onChange(next);\n };\n\n return (\n <details className={cn('rounded-lg border border-slate-200 bg-white/80 p-3', className)}>\n <summary className=\"cursor-pointer text-sm font-semibold text-slate-700\">{title}</summary>\n <div className=\"mt-3 grid grid-cols-1 gap-2 sm:grid-cols-2\">\n {items.map((item) => {\n const image = value[item.id];\n return (\n <div\n key={item.id}\n className=\"flex items-center gap-2 rounded-md border border-slate-200 bg-white p-2\"\n >\n <div className=\"w-16 text-xs font-semibold text-slate-600\">{item.label}</div>\n <label className=\"flex-1 cursor-pointer rounded-md bg-cyan-600 px-2 py-1 text-center text-xs font-medium text-white\">\n {uploadLabel}\n <input\n type=\"file\"\n accept=\"image/*\"\n className=\"hidden\"\n onChange={(event) => {\n handleFileChange(item.id, event.target.files?.[0]);\n event.currentTarget.value = '';\n }}\n />\n </label>\n {image ? (\n <>\n <img\n src={image}\n alt={item.label}\n className=\"h-8 w-8 rounded-full border border-slate-200 object-cover\"\n />\n <button\n type=\"button\"\n className=\"rounded-md border border-red-200 px-2 py-1 text-xs text-red-600\"\n onClick={() => handleRemove(item.id)}\n >\n {clearLabel}\n </button>\n </>\n ) : null}\n </div>\n );\n })}\n </div>\n </details>\n );\n}\n\n","import React from 'react';\nimport { useLocalStorage } from '../storage/hooks/useLocalStorage';\nimport {\n ImageMappingPanel,\n type ImageMappingItem,\n type ImageMappingPanelProps,\n type ImageMappingValue,\n} from './ImageMappingPanel';\n\nexport interface LocalImageMappingPanelProps\n extends Omit<ImageMappingPanelProps, 'value' | 'onChange'> {\n storageKey: string;\n defaultValue?: ImageMappingValue;\n onValueChange?: (next: ImageMappingValue) => void;\n}\n\nexport function LocalImageMappingPanel({\n storageKey,\n defaultValue = {},\n onValueChange,\n ...panelProps\n}: LocalImageMappingPanelProps) {\n const [value, setValue] = useLocalStorage<ImageMappingValue>(storageKey, defaultValue);\n\n return (\n <ImageMappingPanel\n {...panelProps}\n value={value}\n onChange={(next) => {\n setValue(next);\n onValueChange?.(next);\n }}\n />\n );\n}\n\nexport type { ImageMappingItem };\n\n","import type { MikuFusionGameConfig } from './types';\n\nexport const BASE_RADIUS = 22;\nexport const RADIUS_STEP = 4;\n\nexport const LEVEL_LABEL_PREFIX = 'M';\n\nexport const DEFAULT_MIKU_FUSION_CONFIG: MikuFusionGameConfig = {\n width: 390,\n height: 700,\n gravity: 1450,\n damping: 0.995,\n collisionDamping: 0.92,\n spawnY: 82,\n lossLineY: 132,\n maxLevel: 10,\n maxOrbs: 90,\n maxMergesPerTick: 6,\n gameOverAgeThreshold: 1.1,\n spawnWeights: [0.62, 0.28, 0.1],\n theme: {\n backgroundTop: '#dafaff',\n backgroundBottom: '#86e5ef',\n aimLine: '#14b8a6',\n lossLine: '#ef4444',\n orbColors: [\n '#67e8f9',\n '#22d3ee',\n '#2dd4bf',\n '#5eead4',\n '#34d399',\n '#a7f3d0',\n '#99f6e4',\n '#0ea5e9',\n '#06b6d4',\n '#14b8a6',\n ],\n },\n};\n\n","import type { FusionOrb, MikuFusionGameConfig } from '../types';\n\nexport function resolveCircleCollisions(\n orbs: FusionOrb[],\n config: MikuFusionGameConfig\n): FusionOrb[] {\n const next = orbs.map((orb) => ({ ...orb }));\n\n for (let i = 0; i < next.length; i += 1) {\n for (let j = i + 1; j < next.length; j += 1) {\n const a = next[i];\n const b = next[j];\n\n const dx = b.x - a.x;\n const dy = b.y - a.y;\n const distance = Math.sqrt(dx * dx + dy * dy) || 0.0001;\n const minDistance = a.radius + b.radius;\n\n if (distance >= minDistance) {\n continue;\n }\n\n const nx = dx / distance;\n const ny = dy / distance;\n const overlap = minDistance - distance;\n\n a.x -= nx * overlap * 0.5;\n a.y -= ny * overlap * 0.5;\n b.x += nx * overlap * 0.5;\n b.y += ny * overlap * 0.5;\n\n const rvx = b.vx - a.vx;\n const rvy = b.vy - a.vy;\n const velocityAlongNormal = rvx * nx + rvy * ny;\n\n if (velocityAlongNormal > 0) {\n continue;\n }\n\n const restitution = config.collisionDamping;\n const impulse = (-(1 + restitution) * velocityAlongNormal) / 2;\n const impulseX = impulse * nx;\n const impulseY = impulse * ny;\n\n a.vx -= impulseX;\n a.vy -= impulseY;\n b.vx += impulseX;\n b.vy += impulseY;\n }\n }\n\n return next;\n}\n\n","export function getMergeScore(newLevel: number, chainIndex: number): number {\n const base = 10 * Math.max(1, newLevel) * Math.max(1, newLevel);\n const chainMultiplier = 1 + Math.max(0, chainIndex - 1) * 0.15;\n return Math.round(base * chainMultiplier);\n}\n\n","import { BASE_RADIUS, RADIUS_STEP } from '../constants';\nimport type { FusionOrb, MikuFusionGameConfig } from '../types';\n\nexport function getRadiusByLevel(level: number): number {\n return BASE_RADIUS + (Math.max(1, level) - 1) * RADIUS_STEP;\n}\n\nexport function stepPhysics(\n orbs: FusionOrb[],\n config: MikuFusionGameConfig,\n dt: number\n): FusionOrb[] {\n return orbs.map((orb) => {\n const next = { ...orb };\n\n next.vy += config.gravity * dt;\n next.vx *= config.damping;\n next.vy *= config.damping;\n\n next.x += next.vx * dt;\n next.y += next.vy * dt;\n next.age += dt;\n\n if (next.x - next.radius < 0) {\n next.x = next.radius;\n next.vx = Math.abs(next.vx) * config.collisionDamping;\n } else if (next.x + next.radius > config.width) {\n next.x = config.width - next.radius;\n next.vx = -Math.abs(next.vx) * config.collisionDamping;\n }\n\n if (next.y + next.radius > config.height) {\n next.y = config.height - next.radius;\n next.vy = -Math.abs(next.vy) * config.collisionDamping;\n }\n\n return next;\n });\n}\n\n","import type { FusionOrb, MergeResult, MikuFusionGameConfig } from '../types';\nimport { getMergeScore } from './scoring';\nimport { getRadiusByLevel } from './physics';\n\nfunction canMerge(a: FusionOrb, b: FusionOrb, config: MikuFusionGameConfig): boolean {\n if (a.level !== b.level) {\n return false;\n }\n\n if (a.level >= config.maxLevel) {\n return false;\n }\n\n const dx = b.x - a.x;\n const dy = b.y - a.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n // Collision resolution keeps circles around exact touching distance.\n // Use a small epsilon so touching same-level orbs can merge reliably.\n const threshold = a.radius + b.radius + 0.75;\n\n return distance <= threshold;\n}\n\nexport function mergeSameLevelOrbs(\n orbs: FusionOrb[],\n config: MikuFusionGameConfig\n): MergeResult {\n const mergedIds = new Set<string>();\n const spawned: FusionOrb[] = [];\n let scoreGain = 0;\n let chainIndex = 0;\n\n for (let i = 0; i < orbs.length; i += 1) {\n if (mergedIds.has(orbs[i].id)) {\n continue;\n }\n\n for (let j = i + 1; j < orbs.length; j += 1) {\n if (mergedIds.has(orbs[j].id)) {\n continue;\n }\n\n const a = orbs[i];\n const b = orbs[j];\n\n if (!canMerge(a, b, config)) {\n continue;\n }\n\n mergedIds.add(a.id);\n mergedIds.add(b.id);\n chainIndex += 1;\n\n const nextLevel = Math.min(config.maxLevel, a.level + 1);\n const mergedOrb: FusionOrb = {\n id: `orb-${a.id}-${b.id}-${chainIndex}`,\n x: (a.x + b.x) / 2,\n y: (a.y + b.y) / 2,\n vx: (a.vx + b.vx) / 2 * 0.4,\n vy: (a.vy + b.vy) / 2 * 0.4,\n radius: getRadiusByLevel(nextLevel),\n level: nextLevel,\n age: Math.min(a.age, b.age),\n };\n\n spawned.push(mergedOrb);\n scoreGain += getMergeScore(nextLevel, chainIndex);\n\n if (chainIndex >= config.maxMergesPerTick) {\n break;\n }\n }\n\n if (chainIndex >= config.maxMergesPerTick) {\n break;\n }\n }\n\n if (mergedIds.size === 0) {\n return {\n orbs,\n scoreGain: 0,\n mergeCount: 0,\n };\n }\n\n const survivors = orbs.filter((orb) => !mergedIds.has(orb.id));\n const mergedOrbs = survivors.concat(spawned);\n\n return {\n orbs: mergedOrbs,\n scoreGain,\n mergeCount: chainIndex,\n };\n}\n","import type { MikuFusionGameStatus } from '../types';\n\nconst ALLOWED_TRANSITIONS: Record<MikuFusionGameStatus, MikuFusionGameStatus[]> = {\n ready: ['playing'],\n playing: ['paused', 'gameOver', 'ready'],\n paused: ['playing', 'ready'],\n gameOver: ['ready', 'playing'],\n};\n\nexport function canTransition(\n from: MikuFusionGameStatus,\n to: MikuFusionGameStatus\n): boolean {\n return ALLOWED_TRANSITIONS[from].includes(to);\n}\n\n","'use client';\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport type { RefObject } from 'react';\nimport { useLocalStorage } from '../../storage/hooks/useLocalStorage';\nimport { DEFAULT_MIKU_FUSION_CONFIG, LEVEL_LABEL_PREFIX } from '../constants';\nimport { resolveCircleCollisions } from '../engine/collision';\nimport { mergeSameLevelOrbs } from '../engine/merge';\nimport { getRadiusByLevel, stepPhysics } from '../engine/physics';\nimport { canTransition } from '../engine/stateMachine';\nimport type {\n FusionOrb,\n MikuFusionGameCallbacks,\n MikuFusionGameConfig,\n MikuFusionGameStatus,\n OrbImageMapping,\n} from '../types';\n\nexport interface UseMikuFusionGameOptions extends Partial<MikuFusionGameConfig>, MikuFusionGameCallbacks {\n storageKey?: string;\n orbImageMapping?: OrbImageMapping;\n}\n\nexport interface UseMikuFusionGameResult {\n canvasRef: RefObject<HTMLCanvasElement>;\n status: MikuFusionGameStatus;\n score: number;\n bestScore: number;\n nextLevel: number;\n config: MikuFusionGameConfig;\n setAimFromClientX: (clientX: number, rect: DOMRect) => void;\n handleDrop: (clientX: number, rect: DOMRect) => void;\n togglePause: () => void;\n restart: () => void;\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value));\n}\n\nfunction nextOrbLevel(weights: number[]): number {\n const random = Math.random();\n let cumulative = 0;\n\n for (let i = 0; i < weights.length; i += 1) {\n cumulative += weights[i] ?? 0;\n if (random <= cumulative) {\n return i + 1;\n }\n }\n\n return Math.max(1, weights.length);\n}\n\nfunction getOrbColor(level: number, config: MikuFusionGameConfig): string {\n const index = Math.max(0, Math.min(config.theme.orbColors.length - 1, level - 1));\n return config.theme.orbColors[index] || '#22d3ee';\n}\n\nfunction drawScene(\n context: CanvasRenderingContext2D,\n width: number,\n height: number,\n config: MikuFusionGameConfig,\n orbs: FusionOrb[],\n aimX: number,\n nextLevel: number,\n status: MikuFusionGameStatus,\n imageCache: Record<number, HTMLImageElement>\n): void {\n const gradient = context.createLinearGradient(0, 0, 0, height);\n gradient.addColorStop(0, config.theme.backgroundTop);\n gradient.addColorStop(1, config.theme.backgroundBottom);\n context.fillStyle = gradient;\n context.fillRect(0, 0, width, height);\n\n context.lineWidth = 2;\n context.strokeStyle = config.theme.lossLine;\n context.setLineDash([6, 6]);\n context.beginPath();\n context.moveTo(0, config.lossLineY);\n context.lineTo(width, config.lossLineY);\n context.stroke();\n context.setLineDash([]);\n\n context.strokeStyle = config.theme.aimLine;\n context.lineWidth = 1.5;\n context.beginPath();\n context.moveTo(aimX, 0);\n context.lineTo(aimX, config.spawnY);\n context.stroke();\n\n const previewRadius = getRadiusByLevel(nextLevel);\n const previewY = config.spawnY - previewRadius - 4;\n const previewImage = imageCache[nextLevel];\n context.beginPath();\n context.arc(aimX, previewY, previewRadius, 0, Math.PI * 2);\n context.closePath();\n if (previewImage && previewImage.complete && previewImage.naturalWidth > 0) {\n context.save();\n context.clip();\n context.drawImage(\n previewImage,\n aimX - previewRadius,\n previewY - previewRadius,\n previewRadius * 2,\n previewRadius * 2\n );\n context.restore();\n } else {\n context.fillStyle = getOrbColor(nextLevel, config);\n context.fill();\n }\n\n orbs.forEach((orb) => {\n context.beginPath();\n context.arc(orb.x, orb.y, orb.radius, 0, Math.PI * 2);\n context.closePath();\n\n const orbImage = imageCache[orb.level];\n if (orbImage && orbImage.complete && orbImage.naturalWidth > 0) {\n context.save();\n context.clip();\n context.drawImage(\n orbImage,\n orb.x - orb.radius,\n orb.y - orb.radius,\n orb.radius * 2,\n orb.radius * 2\n );\n context.restore();\n context.beginPath();\n context.strokeStyle = 'rgba(15, 23, 42, 0.15)';\n context.lineWidth = 1;\n context.arc(orb.x, orb.y, orb.radius, 0, Math.PI * 2);\n context.stroke();\n } else {\n context.fillStyle = getOrbColor(orb.level, config);\n context.fill();\n }\n\n context.fillStyle = '#0f172a';\n context.font = 'bold 12px system-ui';\n context.textAlign = 'center';\n context.textBaseline = 'middle';\n context.fillText(`${LEVEL_LABEL_PREFIX}${orb.level}`, orb.x, orb.y);\n });\n\n if (status === 'paused') {\n context.fillStyle = 'rgba(15, 23, 42, 0.5)';\n context.fillRect(0, 0, width, height);\n context.fillStyle = '#ffffff';\n context.font = 'bold 30px system-ui';\n context.textAlign = 'center';\n context.fillText('Paused', width / 2, height / 2);\n }\n}\n\nfunction normalizeConfig(config?: Partial<MikuFusionGameConfig>): MikuFusionGameConfig {\n const mergedTheme = {\n ...DEFAULT_MIKU_FUSION_CONFIG.theme,\n ...(config?.theme ?? {}),\n };\n\n const merged = {\n ...DEFAULT_MIKU_FUSION_CONFIG,\n ...(config ?? {}),\n theme: mergedTheme,\n };\n\n const totalWeight = merged.spawnWeights.reduce((sum, current) => sum + current, 0);\n if (totalWeight <= 0) {\n merged.spawnWeights = [...DEFAULT_MIKU_FUSION_CONFIG.spawnWeights];\n } else if (Math.abs(totalWeight - 1) > 0.001) {\n merged.spawnWeights = merged.spawnWeights.map((weight) => weight / totalWeight);\n }\n\n return merged;\n}\n\nexport function useMikuFusionGame(options: UseMikuFusionGameOptions = {}): UseMikuFusionGameResult {\n const configRef = useRef<MikuFusionGameConfig>(normalizeConfig(options));\n const config = configRef.current;\n const onScoreChangeRef = useRef(options.onScoreChange);\n const onGameOverRef = useRef(options.onGameOver);\n const orbImageMappingRef = useRef<OrbImageMapping>(options.orbImageMapping ?? {});\n const imageCacheRef = useRef<Record<number, HTMLImageElement>>({});\n\n useEffect(() => {\n onScoreChangeRef.current = options.onScoreChange;\n onGameOverRef.current = options.onGameOver;\n }, [options.onGameOver, options.onScoreChange]);\n\n useEffect(() => {\n orbImageMappingRef.current = options.orbImageMapping ?? {};\n const nextCache: Record<number, HTMLImageElement> = {};\n Object.entries(orbImageMappingRef.current).forEach(([levelText, src]) => {\n const level = Number(levelText);\n if (!src || Number.isNaN(level)) {\n return;\n }\n const image = new window.Image();\n image.src = src;\n nextCache[level] = image;\n });\n imageCacheRef.current = nextCache;\n }, [options.orbImageMapping]);\n\n const [bestScore, setBestScore] = useLocalStorage<number>(\n options.storageKey || 'sa2kit:mikuFusionGame:bestScore',\n 0\n );\n\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const rafRef = useRef<number | null>(null);\n const lastTsRef = useRef<number>(0);\n const idRef = useRef<number>(0);\n const orbsRef = useRef<FusionOrb[]>([]);\n const aimXRef = useRef<number>(config.width / 2);\n const scoreRef = useRef<number>(0);\n\n const [status, setStatus] = useState<MikuFusionGameStatus>('ready');\n const [score, setScore] = useState(0);\n const [nextLevel, setNextLevel] = useState(() => nextOrbLevel(config.spawnWeights));\n\n const draw = useCallback(\n (nextStatus: MikuFusionGameStatus = status) => {\n const canvas = canvasRef.current;\n if (!canvas) {\n return;\n }\n\n const context = canvas.getContext('2d');\n if (!context) {\n return;\n }\n\n drawScene(\n context,\n config.width,\n config.height,\n config,\n orbsRef.current,\n aimXRef.current,\n nextLevel,\n nextStatus,\n imageCacheRef.current\n );\n },\n [config, nextLevel, status]\n );\n\n const transitionStatus = useCallback((nextStatus: MikuFusionGameStatus) => {\n setStatus((previous) => (canTransition(previous, nextStatus) ? nextStatus : previous));\n }, []);\n\n const spawnOrb = useCallback(() => {\n if (status === 'paused' || status === 'gameOver') {\n return;\n }\n\n if (status === 'ready') {\n transitionStatus('playing');\n }\n\n idRef.current += 1;\n const radius = getRadiusByLevel(nextLevel);\n const x = clamp(aimXRef.current, radius, config.width - radius);\n const created: FusionOrb = {\n id: `${idRef.current}`,\n x,\n y: config.spawnY,\n vx: 0,\n vy: 0,\n radius,\n level: nextLevel,\n age: 0,\n };\n\n const nextOrbs = orbsRef.current.concat(created);\n orbsRef.current = nextOrbs.slice(-config.maxOrbs);\n\n setNextLevel(nextOrbLevel(config.spawnWeights));\n }, [config, nextLevel, status, transitionStatus]);\n\n const restart = useCallback(() => {\n orbsRef.current = [];\n scoreRef.current = 0;\n setScore(0);\n setNextLevel(nextOrbLevel(config.spawnWeights));\n transitionStatus('ready');\n draw('ready');\n }, [config.spawnWeights, draw, transitionStatus]);\n\n const togglePause = useCallback(() => {\n setStatus((previous) => {\n if (previous === 'playing' && canTransition(previous, 'paused')) {\n return 'paused';\n }\n if (previous === 'paused' && canTransition(previous, 'playing')) {\n return 'playing';\n }\n return previous;\n });\n }, []);\n\n const setAimFromClientX = useCallback((clientX: number, rect: DOMRect) => {\n const ratio = config.width / rect.width;\n const x = (clientX - rect.left) * ratio;\n aimXRef.current = clamp(x, 0, config.width);\n }, [config.width]);\n\n const handleDrop = useCallback(\n (clientX: number, rect: DOMRect) => {\n setAimFromClientX(clientX, rect);\n spawnOrb();\n },\n [setAimFromClientX, spawnOrb]\n );\n\n useEffect(() => {\n draw(status);\n }, [draw, status]);\n\n useEffect(() => {\n if (status !== 'playing') {\n if (rafRef.current) {\n window.cancelAnimationFrame(rafRef.current);\n }\n lastTsRef.current = 0;\n draw(status);\n return;\n }\n\n const frame = (timestamp: number) => {\n if (lastTsRef.current === 0) {\n lastTsRef.current = timestamp;\n }\n\n const dt = Math.min((timestamp - lastTsRef.current) / 1000, 0.033);\n lastTsRef.current = timestamp;\n\n let orbs = stepPhysics(orbsRef.current, config, dt);\n orbs = resolveCircleCollisions(orbs, config);\n\n const merged = mergeSameLevelOrbs(orbs, config);\n orbs = merged.orbs;\n orbsRef.current = orbs.slice(-config.maxOrbs);\n\n if (merged.scoreGain > 0) {\n scoreRef.current += merged.scoreGain;\n setScore(scoreRef.current);\n onScoreChangeRef.current?.(scoreRef.current);\n }\n\n const gameOver = orbs.some(\n (orb) =>\n orb.age > config.gameOverAgeThreshold &&\n orb.y - orb.radius <= config.lossLineY &&\n Math.abs(orb.vy) < 90\n );\n\n if (gameOver) {\n transitionStatus('gameOver');\n const latestBest = Math.max(bestScore, scoreRef.current);\n if (latestBest !== bestScore) {\n setBestScore(latestBest);\n }\n onGameOverRef.current?.(scoreRef.current, latestBest);\n draw('gameOver');\n return;\n }\n\n draw('playing');\n rafRef.current = window.requestAnimationFrame(frame);\n };\n\n rafRef.current = window.requestAnimationFrame(frame);\n\n return () => {\n if (rafRef.current) {\n window.cancelAnimationFrame(rafRef.current);\n }\n };\n }, [\n bestScore,\n config,\n draw,\n setBestScore,\n status,\n transitionStatus,\n ]);\n\n useEffect(() => {\n if (score > bestScore) {\n setBestScore(score);\n }\n }, [bestScore, score, setBestScore]);\n\n return {\n canvasRef,\n status,\n score,\n bestScore: Math.max(bestScore, score),\n nextLevel,\n config,\n setAimFromClientX,\n handleDrop,\n togglePause,\n restart,\n };\n}\n","'use client';\n\nimport { useEffect, useState } from 'react';\nimport type { RefObject } from 'react';\n\ninterface ResponsiveSize {\n displayWidth: number;\n displayHeight: number;\n scale: number;\n}\n\nexport function useResponsiveCanvas(\n logicalWidth: number,\n logicalHeight: number,\n containerRef: RefObject<HTMLElement>\n): ResponsiveSize {\n const [size, setSize] = useState<ResponsiveSize>({\n displayWidth: logicalWidth,\n displayHeight: logicalHeight,\n scale: 1,\n });\n\n useEffect(() => {\n const updateSize = () => {\n const container = containerRef.current;\n if (!container || typeof window === 'undefined') {\n return;\n }\n\n const rect = container.getBoundingClientRect();\n const maxWidth = Math.max(280, rect.width);\n const maxHeight = Math.max(420, Math.floor(window.innerHeight * 0.78));\n const scale = Math.min(maxWidth / logicalWidth, maxHeight / logicalHeight, 1);\n\n setSize({\n displayWidth: Math.floor(logicalWidth * scale),\n displayHeight: Math.floor(logicalHeight * scale),\n scale,\n });\n };\n\n updateSize();\n\n const container = containerRef.current;\n const observer =\n typeof ResizeObserver !== 'undefined' ? new ResizeObserver(updateSize) : null;\n if (container && observer) {\n observer.observe(container);\n }\n\n window.addEventListener('resize', updateSize);\n\n return () => {\n observer?.disconnect();\n window.removeEventListener('resize', updateSize);\n };\n }, [containerRef, logicalWidth, logicalHeight]);\n\n return size;\n}\n","import React from 'react';\nimport type { PointerEvent, RefObject } from 'react';\n\ninterface GameCanvasProps {\n canvasRef: RefObject<HTMLCanvasElement>;\n width: number;\n height: number;\n displayWidth: number;\n displayHeight: number;\n onPointerMove: (event: PointerEvent<HTMLCanvasElement>) => void;\n onPointerDown: (event: PointerEvent<HTMLCanvasElement>) => void;\n onPointerUp: (event: PointerEvent<HTMLCanvasElement>) => void;\n}\n\nexport function GameCanvas({\n canvasRef,\n width,\n height,\n displayWidth,\n displayHeight,\n onPointerMove,\n onPointerDown,\n onPointerUp,\n}: GameCanvasProps) {\n return (\n <canvas\n ref={canvasRef}\n width={width}\n height={height}\n className=\"rounded-xl border border-cyan-200 bg-cyan-50 shadow-sm\"\n style={{\n width: `${displayWidth}px`,\n height: `${displayHeight}px`,\n maxWidth: '100%',\n touchAction: 'none',\n }}\n onPointerMove={onPointerMove}\n onPointerDown={onPointerDown}\n onPointerUp={onPointerUp}\n onContextMenu={(event) => event.preventDefault()}\n />\n );\n}\n","import React from 'react';\n\ninterface GameControlsProps {\n isPaused: boolean;\n isPlaying: boolean;\n onTogglePause: () => void;\n onRestart: () => void;\n}\n\nexport function GameControls({ isPaused, isPlaying, onTogglePause, onRestart }: GameControlsProps) {\n return (\n <div className=\"grid grid-cols-2 gap-2\">\n <button\n type=\"button\"\n className=\"rounded-lg bg-cyan-600 px-4 py-3 text-sm font-semibold text-white disabled:cursor-not-allowed disabled:opacity-50\"\n onClick={onTogglePause}\n disabled={!isPlaying}\n >\n {isPaused ? '继续' : '暂停'}\n </button>\n <button\n type=\"button\"\n className=\"rounded-lg bg-emerald-600 px-4 py-3 text-sm font-semibold text-white\"\n onClick={onRestart}\n >\n 重开\n </button>\n </div>\n );\n}\n\n","import React from 'react';\n\ninterface GameHUDProps {\n score: number;\n bestScore: number;\n nextLevel: number;\n statusText: string;\n}\n\nexport function GameHUD({ score, bestScore, nextLevel, statusText }: GameHUDProps) {\n return (\n <div className=\"flex items-center justify-between gap-2 rounded-lg border border-cyan-200 bg-white/80 p-3\">\n <div className=\"min-w-0\">\n <div className=\"text-xs text-slate-500\">当前分数</div>\n <div className=\"text-xl font-bold text-cyan-700\">{score}</div>\n <div className=\"text-xs text-slate-500\">最高分 {bestScore}</div>\n </div>\n <div className=\"text-right\">\n <div className=\"text-xs text-slate-500\">下一个</div>\n <div className=\"text-base font-semibold text-emerald-700\">M{nextLevel}</div>\n <div className=\"text-xs font-medium text-slate-600\">{statusText}</div>\n </div>\n </div>\n );\n}\n\n","import React from 'react';\n\ninterface GameResultModalProps {\n open: boolean;\n score: number;\n bestScore: number;\n onRestart: () => void;\n}\n\nexport function GameResultModal({ open, score, bestScore, onRestart }: GameResultModalProps) {\n if (!open) {\n return null;\n }\n\n return (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center bg-slate-900/50 p-4\">\n <div className=\"pointer-events-auto w-full max-w-xs rounded-xl bg-white p-5 shadow-2xl\">\n <h3 className=\"text-lg font-semibold text-slate-900\">游戏结束</h3>\n <p className=\"mt-2 text-sm text-slate-600\">当前分数:{score}</p>\n <p className=\"text-sm text-slate-600\">最高分:{bestScore}</p>\n <button\n type=\"button\"\n className=\"mt-4 w-full rounded-lg bg-cyan-600 px-4 py-2 text-sm font-semibold text-white\"\n onClick={onRestart}\n >\n 再来一局\n </button>\n </div>\n </div>\n );\n}\n\n","'use client';\n\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { LocalImageMappingPanel } from '../../components/LocalImageMappingPanel';\nimport type { MikuFusionGameCallbacks, MikuFusionGameConfig, OrbImageMapping } from '../types';\nimport { useMikuFusionGame } from '../hooks/useMikuFusionGame';\nimport { useResponsiveCanvas } from '../hooks/useResponsiveCanvas';\nimport { GameCanvas } from './GameCanvas';\nimport { GameControls } from './GameControls';\nimport { GameHUD } from './GameHUD';\nimport { GameResultModal } from './GameResultModal';\n\nexport interface MikuFusionGameProps extends Partial<MikuFusionGameConfig>, MikuFusionGameCallbacks {\n className?: string;\n storageKey?: string;\n orbImageStorageKey?: string;\n enableImageConfigPanel?: boolean;\n presetOrbImageMapping?: OrbImageMapping;\n}\n\nexport function MikuFusionGame({\n className,\n storageKey,\n orbImageStorageKey = 'sa2kit:mikuFusionGame:orbImages',\n enableImageConfigPanel = true,\n presetOrbImageMapping = {},\n ...options\n}: MikuFusionGameProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const [orbImageMapping, setOrbImageMapping] = useState<OrbImageMapping>({});\n const [isUserDefineMode] = useState(() => {\n if (typeof window === 'undefined') {\n return false;\n }\n const value = new URLSearchParams(window.location.search).get('userDefine');\n return value === 'true';\n });\n\n const activeOrbImageMapping = isUserDefineMode ? orbImageMapping : presetOrbImageMapping;\n const {\n canvasRef,\n status,\n score,\n bestScore,\n nextLevel,\n config,\n setAimFromClientX,\n handleDrop,\n togglePause,\n restart,\n } = useMikuFusionGame({ ...options, storageKey, orbImageMapping: activeOrbImageMapping });\n\n const panelItems = useMemo(\n () =>\n Array.from({ length: config.maxLevel }, (_, index) => ({\n id: String(index + 1),\n label: `M${index + 1}`,\n })),\n [config.maxLevel]\n );\n\n const panelValue = useMemo<Record<string, string>>(\n () =>\n Object.entries(orbImageMapping).reduce<Record<string, string>>((acc, [key, value]) => {\n if (value) {\n acc[String(key)] = value;\n }\n return acc;\n }, {}),\n [orbImageMapping]\n );\n\n useEffect(() => {\n if (typeof window === 'undefined') {\n return;\n }\n try {\n const raw = window.localStorage.getItem(orbImageStorageKey);\n if (!raw) {\n setOrbImageMapping({});\n return;\n }\n const parsed = JSON.parse(raw) as Record<string, string>;\n const normalized: OrbImageMapping = {};\n Object.entries(parsed).forEach(([key, value]) => {\n const level = Number(key);\n if (!Number.isNaN(level) && typeof value === 'string' && value) {\n normalized[level] = value;\n }\n });\n setOrbImageMapping(normalized);\n } catch {\n setOrbImageMapping({});\n }\n }, [orbImageStorageKey]);\n\n const { displayWidth, displayHeight } = useResponsiveCanvas(\n config.width,\n config.height,\n containerRef\n );\n\n const statusText = useMemo(() => {\n if (status === 'ready') {\n return '待开始';\n }\n if (status === 'playing') {\n return '进行中';\n }\n if (status === 'paused') {\n return '已暂停';\n }\n return '已结束';\n }, [status]);\n\n const handlePointerMove = (event: React.PointerEvent<HTMLCanvasElement>) => {\n const rect = event.currentTarget.getBoundingClientRect();\n setAimFromClientX(event.clientX, rect);\n };\n\n const handlePointerDown = (event: React.PointerEvent<HTMLCanvasElement>) => {\n event.currentTarget.setPointerCapture(event.pointerId);\n const rect = event.currentTarget.getBoundingClientRect();\n setAimFromClientX(event.clientX, rect);\n };\n\n const handlePointerUp = (event: React.PointerEvent<HTMLCanvasElement>) => {\n const rect = event.currentTarget.getBoundingClientRect();\n handleDrop(event.clientX, rect);\n event.currentTarget.releasePointerCapture(event.pointerId);\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key.toLowerCase() === 'r') {\n restart();\n }\n if (event.key.toLowerCase() === 'p') {\n togglePause();\n }\n };\n\n const handlePanelValueChange = (next: Record<string, string>) => {\n const normalized: OrbImageMapping = {};\n Object.entries(next).forEach(([key, value]) => {\n const level = Number(key);\n if (!Number.isNaN(level) && value) {\n normalized[level] = value;\n }\n });\n setOrbImageMapping(normalized);\n };\n\n return (\n <div\n ref={containerRef}\n tabIndex={0}\n onKeyDown={handleKeyDown}\n className={`relative mx-auto flex w-full max-w-xl flex-col gap-3 p-3 md:p-4 ${className || ''}`}\n style={{\n paddingBottom: 'max(0.75rem, env(safe-area-inset-bottom))',\n }}\n >\n <GameHUD score={score} bestScore={bestScore} nextLevel={nextLevel} statusText={statusText} />\n\n <div className=\"relative mx-auto\">\n <GameCanvas\n canvasRef={canvasRef}\n width={config.width}\n height={config.height}\n displayWidth={displayWidth}\n displayHeight={displayHeight}\n onPointerMove={handlePointerMove}\n onPointerDown={handlePointerDown}\n onPointerUp={handlePointerUp}\n />\n <GameResultModal open={status === 'gameOver'} score={score} bestScore={bestScore} onRestart={restart} />\n </div>\n\n <GameControls\n isPaused={status === 'paused'}\n isPlaying={status === 'playing' || status === 'paused'}\n onTogglePause={togglePause}\n onRestart={restart}\n />\n\n {enableImageConfigPanel && isUserDefineMode ? (\n <LocalImageMappingPanel\n storageKey={orbImageStorageKey}\n title=\"球体图片配置(保存到本地)\"\n items={panelItems}\n defaultValue={panelValue}\n onValueChange={handlePanelValueChange}\n />\n ) : null}\n </div>\n );\n}\n","import type { MikuFusionContentRegistry } from './types';\n\nexport type * from './types';\n\n/**\n * 仅作为未来内容包化扩展占位。\n * 当前基础玩法不会消费这些数据。\n */\nexport const defaultContentRegistry: MikuFusionContentRegistry = {\n producers: [],\n songs: [],\n themes: [],\n};\n\n"]}