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,1227 +0,0 @@
1
- import React, { useState, useRef, useEffect, useCallback, useMemo } from 'react';
2
- import { clsx } from 'clsx';
3
-
4
- // src/audioDetection/core/AudioInputService.ts
5
- var AudioInputService = class {
6
- constructor(config = {}) {
7
- this.audioContext = null;
8
- this.mediaStream = null;
9
- this.sourceNode = null;
10
- this.analyserNode = null;
11
- this.state = "idle";
12
- this.config = {
13
- sampleRate: config.sampleRate ?? 44100,
14
- fftSize: config.fftSize ?? 4096,
15
- minVolume: config.minVolume ?? 1e-3,
16
- // 降低默认阈值,使其更敏感
17
- minConfidence: config.minConfidence ?? 0.5,
18
- // 降低默认置信度,更容易检测
19
- smoothing: config.smoothing ?? 0.8,
20
- frequencyRange: config.frequencyRange ?? { min: 27.5, max: 4186 }
21
- // A0 到 C8
22
- };
23
- }
24
- /**
25
- * 初始化音频输入
26
- * Initialize audio input
27
- */
28
- async initialize() {
29
- if (this.state === "active") {
30
- console.warn("AudioInputService \u5DF2\u7ECF\u5904\u4E8E\u6D3B\u52A8\u72B6\u6001");
31
- return;
32
- }
33
- try {
34
- this.setState("initializing");
35
- this.mediaStream = await navigator.mediaDevices.getUserMedia({
36
- audio: {
37
- echoCancellation: false,
38
- noiseSuppression: false,
39
- autoGainControl: false,
40
- sampleRate: this.config.sampleRate
41
- }
42
- });
43
- this.audioContext = new AudioContext({
44
- sampleRate: this.config.sampleRate
45
- });
46
- this.sourceNode = this.audioContext.createMediaStreamSource(this.mediaStream);
47
- this.analyserNode = this.audioContext.createAnalyser();
48
- this.analyserNode.fftSize = this.config.fftSize;
49
- this.analyserNode.smoothingTimeConstant = this.config.smoothing;
50
- this.sourceNode.connect(this.analyserNode);
51
- this.setState("active");
52
- console.log("AudioInputService \u521D\u59CB\u5316\u6210\u529F");
53
- } catch (error) {
54
- this.setState("error");
55
- console.error("AudioInputService \u521D\u59CB\u5316\u5931\u8D25:", error);
56
- throw new Error("\u9EA6\u514B\u98CE\u521D\u59CB\u5316\u5931\u8D25: " + (error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"));
57
- }
58
- }
59
- /**
60
- * 获取时域数据
61
- * Get time domain data
62
- */
63
- getTimeDomainData() {
64
- if (!this.analyserNode) {
65
- throw new Error("AnalyserNode \u672A\u521D\u59CB\u5316");
66
- }
67
- const bufferLength = this.analyserNode.fftSize;
68
- const dataArray = new Float32Array(bufferLength);
69
- this.analyserNode.getFloatTimeDomainData(dataArray);
70
- return dataArray;
71
- }
72
- /**
73
- * 获取频域数据
74
- * Get frequency domain data
75
- */
76
- getFrequencyData() {
77
- if (!this.analyserNode) {
78
- throw new Error("AnalyserNode \u672A\u521D\u59CB\u5316");
79
- }
80
- const bufferLength = this.analyserNode.frequencyBinCount;
81
- const dataArray = new Float32Array(bufferLength);
82
- this.analyserNode.getFloatFrequencyData(dataArray);
83
- return dataArray;
84
- }
85
- /**
86
- * 获取当前音量
87
- * Get current volume
88
- */
89
- getCurrentVolume() {
90
- const timeDomainData = this.getTimeDomainData();
91
- let sum = 0;
92
- for (let i = 0; i < timeDomainData.length; i++) {
93
- const val = timeDomainData[i];
94
- if (val !== void 0) {
95
- sum += val * val;
96
- }
97
- }
98
- return Math.sqrt(sum / timeDomainData.length);
99
- }
100
- /**
101
- * 停止音频输入
102
- * Stop audio input
103
- */
104
- stop() {
105
- if (this.mediaStream) {
106
- this.mediaStream.getTracks().forEach((track) => track.stop());
107
- this.mediaStream = null;
108
- }
109
- if (this.sourceNode) {
110
- this.sourceNode.disconnect();
111
- this.sourceNode = null;
112
- }
113
- if (this.analyserNode) {
114
- this.analyserNode.disconnect();
115
- this.analyserNode = null;
116
- }
117
- if (this.audioContext) {
118
- this.audioContext.close();
119
- this.audioContext = null;
120
- }
121
- this.setState("stopped");
122
- console.log("AudioInputService \u5DF2\u505C\u6B62");
123
- }
124
- /**
125
- * 获取当前状态
126
- * Get current state
127
- */
128
- getState() {
129
- return this.state;
130
- }
131
- /**
132
- * 获取配置
133
- * Get configuration
134
- */
135
- getConfig() {
136
- return { ...this.config };
137
- }
138
- /**
139
- * 获取音频上下文
140
- * Get audio context
141
- */
142
- getAudioContext() {
143
- return this.audioContext;
144
- }
145
- /**
146
- * 获取分析器节点
147
- * Get analyser node
148
- */
149
- getAnalyserNode() {
150
- return this.analyserNode;
151
- }
152
- /**
153
- * 设置状态
154
- * Set state
155
- */
156
- setState(state) {
157
- this.state = state;
158
- }
159
- /**
160
- * 检查是否正在运行
161
- * Check if running
162
- */
163
- isRunning() {
164
- return this.state === "active";
165
- }
166
- };
167
-
168
- // src/audioDetection/core/PitchDetector.ts
169
- var _PitchDetector = class _PitchDetector {
170
- constructor(sampleRate = 44100, minFrequency = 27.5, maxFrequency = 4186) {
171
- this.sampleRate = sampleRate;
172
- this.minFrequency = minFrequency;
173
- this.maxFrequency = maxFrequency;
174
- }
175
- /**
176
- * 检测音高
177
- * Detect pitch using autocorrelation
178
- */
179
- detectPitch(audioBuffer, minVolume = 0.01) {
180
- const volume = this.calculateRMS(audioBuffer);
181
- if (volume < minVolume) {
182
- return null;
183
- }
184
- const frequency = this.autoCorrelate(audioBuffer);
185
- if (frequency === -1 || frequency < this.minFrequency || frequency > this.maxFrequency) {
186
- return null;
187
- }
188
- return frequency;
189
- }
190
- /**
191
- * 自相关算法
192
- * Autocorrelation algorithm
193
- */
194
- autoCorrelate(buffer) {
195
- const SIZE = buffer.length;
196
- const MAX_SAMPLES = Math.floor(SIZE / 2);
197
- let best_offset = -1;
198
- let best_correlation = 0;
199
- let rms = 0;
200
- for (let i = 0; i < SIZE; i++) {
201
- const val = buffer[i];
202
- if (val !== void 0) {
203
- rms += val * val;
204
- }
205
- }
206
- rms = Math.sqrt(rms / SIZE);
207
- if (rms < 0.01) {
208
- return -1;
209
- }
210
- let lastCorrelation = 1;
211
- for (let offset = 0; offset < MAX_SAMPLES; offset++) {
212
- let correlation = 0;
213
- for (let i = 0; i < MAX_SAMPLES; i++) {
214
- const val1 = buffer[i];
215
- const val2 = buffer[i + offset];
216
- if (val1 !== void 0 && val2 !== void 0) {
217
- correlation += Math.abs(val1 - val2);
218
- }
219
- }
220
- correlation = 1 - correlation / MAX_SAMPLES;
221
- if (correlation > 0.9 && correlation > lastCorrelation) {
222
- const foundGoodCorrelation = correlation > best_correlation;
223
- if (foundGoodCorrelation) {
224
- best_correlation = correlation;
225
- best_offset = offset;
226
- }
227
- }
228
- lastCorrelation = correlation;
229
- }
230
- if (best_correlation > 0.01 && best_offset !== -1) {
231
- const frequency = this.sampleRate / best_offset;
232
- return frequency;
233
- }
234
- return -1;
235
- }
236
- /**
237
- * 计算RMS音量
238
- * Calculate RMS volume
239
- */
240
- calculateRMS(buffer) {
241
- let sum = 0;
242
- for (let i = 0; i < buffer.length; i++) {
243
- const val = buffer[i];
244
- if (val !== void 0) {
245
- sum += val * val;
246
- }
247
- }
248
- return Math.sqrt(sum / buffer.length);
249
- }
250
- /**
251
- * 将频率转换为音符信息
252
- * Convert frequency to note information
253
- */
254
- frequencyToNote(frequency, volume = 1) {
255
- if (frequency <= 0) {
256
- return null;
257
- }
258
- const midi = Math.round(12 * Math.log2(frequency / 440) + 69);
259
- if (midi < 0 || midi > 127) {
260
- return null;
261
- }
262
- const noteIndex = midi % 12;
263
- const octave = Math.floor(midi / 12) - 1;
264
- const noteName = _PitchDetector.NOTE_NAMES[noteIndex] || "C";
265
- const name = noteName + octave;
266
- const standardFrequency = 440 * Math.pow(2, (midi - 69) / 12);
267
- const cents = 1200 * Math.log2(frequency / standardFrequency);
268
- const confidence = Math.max(0, 1 - Math.abs(cents) / 50);
269
- return {
270
- name,
271
- frequency,
272
- noteName,
273
- octave,
274
- midi,
275
- volume,
276
- confidence
277
- };
278
- }
279
- /**
280
- * 使用FFT检测主频率
281
- * Detect dominant frequency using FFT
282
- */
283
- detectDominantFrequency(frequencyData, minVolume = -60) {
284
- const nyquist = this.sampleRate / 2;
285
- const binWidth = nyquist / frequencyData.length;
286
- let maxIndex = -1;
287
- let maxValue = -Infinity;
288
- const minBin = Math.floor(this.minFrequency / binWidth);
289
- const maxBin = Math.ceil(this.maxFrequency / binWidth);
290
- for (let i = minBin; i < Math.min(maxBin, frequencyData.length); i++) {
291
- const value = frequencyData[i];
292
- if (value !== void 0 && value > maxValue && value > minVolume) {
293
- maxValue = value;
294
- maxIndex = i;
295
- }
296
- }
297
- if (maxIndex === -1) {
298
- return null;
299
- }
300
- const frequency = this.parabolicInterpolation(frequencyData, maxIndex, binWidth);
301
- return frequency;
302
- }
303
- /**
304
- * 抛物线插值
305
- * Parabolic interpolation for better frequency estimation
306
- */
307
- parabolicInterpolation(data, index, binWidth) {
308
- if (index <= 0 || index >= data.length - 1) {
309
- return index * binWidth;
310
- }
311
- const y1 = data[index - 1];
312
- const y2 = data[index];
313
- const y3 = data[index + 1];
314
- if (y1 === void 0 || y2 === void 0 || y3 === void 0) {
315
- return index * binWidth;
316
- }
317
- const delta = 0.5 * (y3 - y1) / (2 * y2 - y1 - y3);
318
- const interpolatedIndex = index + delta;
319
- return interpolatedIndex * binWidth;
320
- }
321
- /**
322
- * 检测多个音高(和弦)
323
- * Detect multiple pitches (chords)
324
- */
325
- detectMultiplePitches(frequencyData, minVolume = -60) {
326
- const notes = [];
327
- const nyquist = this.sampleRate / 2;
328
- const binWidth = nyquist / frequencyData.length;
329
- const peaks = [];
330
- for (let i = 1; i < frequencyData.length - 1; i++) {
331
- const freq = i * binWidth;
332
- if (freq < this.minFrequency || freq > this.maxFrequency) {
333
- continue;
334
- }
335
- const value = frequencyData[i];
336
- if (value !== void 0 && value > minVolume && value > (frequencyData[i - 1] ?? -Infinity) && value > (frequencyData[i + 1] ?? -Infinity)) {
337
- peaks.push({ index: i, value });
338
- }
339
- }
340
- peaks.sort((a, b) => b.value - a.value);
341
- const topPeaks = peaks.slice(0, 5);
342
- for (const peak of topPeaks) {
343
- const frequency = this.parabolicInterpolation(frequencyData, peak.index, binWidth);
344
- const volume = Math.pow(10, peak.value / 20);
345
- const note = this.frequencyToNote(frequency, volume);
346
- if (note) {
347
- notes.push(note);
348
- }
349
- }
350
- return notes;
351
- }
352
- };
353
- // 音符名称映射
354
- _PitchDetector.NOTE_NAMES = ["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"];
355
- var PitchDetector = _PitchDetector;
356
-
357
- // src/audioDetection/core/ChordRecognizer.ts
358
- var _ChordRecognizer = class _ChordRecognizer {
359
- /**
360
- * 识别和弦
361
- * Recognize chord from notes
362
- */
363
- recognizeChord(notes) {
364
- if (notes.length < 2) {
365
- return null;
366
- }
367
- const sortedNotes = [...notes].sort((a, b) => a.midi - b.midi);
368
- const uniqueNoteClasses = this.getUniqueNoteClasses(sortedNotes);
369
- if (uniqueNoteClasses.length < 2) {
370
- return null;
371
- }
372
- let bestMatch = null;
373
- for (let i = 0; i < uniqueNoteClasses.length; i++) {
374
- const root = uniqueNoteClasses[i];
375
- if (!root) continue;
376
- const intervals = this.calculateIntervals(root, uniqueNoteClasses);
377
- for (const pattern of _ChordRecognizer.CHORD_PATTERNS) {
378
- const confidence = this.matchPattern(intervals, pattern.intervals);
379
- if (confidence > 0.8 && (!bestMatch || confidence > bestMatch.confidence)) {
380
- bestMatch = { root, pattern, confidence };
381
- }
382
- }
383
- }
384
- if (!bestMatch) {
385
- return null;
386
- }
387
- const chordName = bestMatch.root + this.getChordSuffix(bestMatch.pattern);
388
- return {
389
- name: chordName,
390
- root: bestMatch.root,
391
- type: bestMatch.pattern.name,
392
- notes: sortedNotes,
393
- confidence: bestMatch.confidence
394
- };
395
- }
396
- /**
397
- * 获取唯一的音符类别(不考虑八度)
398
- * Get unique note classes (ignoring octave)
399
- */
400
- getUniqueNoteClasses(notes) {
401
- const noteSet = /* @__PURE__ */ new Set();
402
- for (const note of notes) {
403
- noteSet.add(note.noteName);
404
- }
405
- return Array.from(noteSet);
406
- }
407
- /**
408
- * 计算音程
409
- * Calculate intervals from root
410
- */
411
- calculateIntervals(root, noteClasses) {
412
- const rootIndex = _ChordRecognizer.NOTE_NAMES.indexOf(root);
413
- const intervals = [];
414
- for (const noteClass of noteClasses) {
415
- const noteIndex = _ChordRecognizer.NOTE_NAMES.indexOf(noteClass);
416
- let interval = (noteIndex - rootIndex + 12) % 12;
417
- intervals.push(interval);
418
- }
419
- return intervals.sort((a, b) => a - b);
420
- }
421
- /**
422
- * 匹配和弦模式
423
- * Match chord pattern
424
- */
425
- matchPattern(intervals, pattern) {
426
- if (intervals.length < pattern.length) {
427
- return 0;
428
- }
429
- let matches = 0;
430
- for (const patternInterval of pattern) {
431
- if (intervals.includes(patternInterval)) {
432
- matches++;
433
- }
434
- }
435
- const precision = matches / pattern.length;
436
- const recall = matches / intervals.length;
437
- if (precision + recall === 0) {
438
- return 0;
439
- }
440
- return 2 * precision * recall / (precision + recall);
441
- }
442
- /**
443
- * 获取和弦后缀
444
- * Get chord suffix for display
445
- */
446
- getChordSuffix(pattern) {
447
- if (pattern.aliases && pattern.aliases.length > 0) {
448
- return pattern.aliases[0] || "";
449
- }
450
- const suffixMap = {
451
- "major": "",
452
- "minor": "m",
453
- "diminished": "dim",
454
- "augmented": "aug",
455
- "dominant7": "7"
456
- };
457
- return suffixMap[pattern.name] ?? pattern.name;
458
- }
459
- /**
460
- * 识别八度内的音程(用于简单的音程识别)
461
- * Recognize interval within an octave
462
- */
463
- recognizeInterval(note1, note2) {
464
- const semitones = Math.abs(note1.midi - note2.midi) % 12;
465
- const intervalNames = {
466
- 0: "\u7EAF\u4E00\u5EA6 (Unison)",
467
- 1: "\u5C0F\u4E8C\u5EA6 (Minor 2nd)",
468
- 2: "\u5927\u4E8C\u5EA6 (Major 2nd)",
469
- 3: "\u5C0F\u4E09\u5EA6 (Minor 3rd)",
470
- 4: "\u5927\u4E09\u5EA6 (Major 3rd)",
471
- 5: "\u7EAF\u56DB\u5EA6 (Perfect 4th)",
472
- 6: "\u589E\u56DB\u5EA6/\u51CF\u4E94\u5EA6 (Tritone)",
473
- 7: "\u7EAF\u4E94\u5EA6 (Perfect 5th)",
474
- 8: "\u5C0F\u516D\u5EA6 (Minor 6th)",
475
- 9: "\u5927\u516D\u5EA6 (Major 6th)",
476
- 10: "\u5C0F\u4E03\u5EA6 (Minor 7th)",
477
- 11: "\u5927\u4E03\u5EA6 (Major 7th)"
478
- };
479
- return intervalNames[semitones] || "\u672A\u77E5\u97F3\u7A0B";
480
- }
481
- /**
482
- * 分析和弦质量
483
- * Analyze chord quality
484
- */
485
- analyzeChordQuality(chord) {
486
- const qualities = [];
487
- if (chord.type.includes("major")) {
488
- qualities.push("\u5927\u8C03");
489
- } else if (chord.type.includes("minor")) {
490
- qualities.push("\u5C0F\u8C03");
491
- }
492
- if (chord.type.includes("diminished")) {
493
- qualities.push("\u51CF");
494
- } else if (chord.type.includes("augmented")) {
495
- qualities.push("\u589E");
496
- }
497
- if (chord.type.includes("7")) {
498
- qualities.push("\u4E03\u548C\u5F26");
499
- } else if (chord.type.includes("9")) {
500
- qualities.push("\u4E5D\u548C\u5F26");
501
- }
502
- if (chord.type.includes("sus")) {
503
- qualities.push("\u6302\u7559");
504
- }
505
- return qualities.join(" ") || "\u57FA\u7840\u548C\u5F26";
506
- }
507
- };
508
- // 和弦模式定义
509
- _ChordRecognizer.CHORD_PATTERNS = [
510
- // 三和弦
511
- { name: "major", intervals: [0, 4, 7], aliases: ["maj", "M"] },
512
- { name: "minor", intervals: [0, 3, 7], aliases: ["min", "m"] },
513
- { name: "diminished", intervals: [0, 3, 6], aliases: ["dim", "\xB0"] },
514
- { name: "augmented", intervals: [0, 4, 8], aliases: ["aug", "+"] },
515
- { name: "sus2", intervals: [0, 2, 7] },
516
- { name: "sus4", intervals: [0, 5, 7] },
517
- // 七和弦
518
- { name: "major7", intervals: [0, 4, 7, 11], aliases: ["maj7", "M7"] },
519
- { name: "minor7", intervals: [0, 3, 7, 10], aliases: ["min7", "m7"] },
520
- { name: "dominant7", intervals: [0, 4, 7, 10], aliases: ["7"] },
521
- { name: "diminished7", intervals: [0, 3, 6, 9], aliases: ["dim7", "\xB07"] },
522
- { name: "half-diminished7", intervals: [0, 3, 6, 10], aliases: ["m7b5", "\xF87"] },
523
- { name: "minor-major7", intervals: [0, 3, 7, 11], aliases: ["mM7", "m(maj7)"] },
524
- { name: "augmented7", intervals: [0, 4, 8, 10], aliases: ["aug7", "+7"] },
525
- // 扩展和弦
526
- { name: "major9", intervals: [0, 4, 7, 11, 14], aliases: ["maj9", "M9"] },
527
- { name: "minor9", intervals: [0, 3, 7, 10, 14], aliases: ["min9", "m9"] },
528
- { name: "dominant9", intervals: [0, 4, 7, 10, 14], aliases: ["9"] },
529
- { name: "add9", intervals: [0, 4, 7, 14] },
530
- { name: "madd9", intervals: [0, 3, 7, 14], aliases: ["m(add9)"] }
531
- ];
532
- _ChordRecognizer.NOTE_NAMES = ["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"];
533
- var ChordRecognizer = _ChordRecognizer;
534
-
535
- // src/audioDetection/core/AudioDetector.ts
536
- var AudioDetector = class {
537
- constructor(config = {}, events = {}) {
538
- this.isDetecting = false;
539
- this.animationFrameId = null;
540
- this.lastResult = null;
541
- /**
542
- * 检测循环
543
- * Detection loop
544
- */
545
- this.detectLoop = () => {
546
- if (!this.isDetecting) {
547
- return;
548
- }
549
- try {
550
- const result = this.detect();
551
- if (result) {
552
- this.lastResult = result;
553
- this.events.onDetection?.(result);
554
- }
555
- } catch (error) {
556
- console.error("\u68C0\u6D4B\u8FC7\u7A0B\u4E2D\u51FA\u9519:", error);
557
- this.events.onError?.(error instanceof Error ? error : new Error(String(error)));
558
- }
559
- this.animationFrameId = requestAnimationFrame(this.detectLoop);
560
- };
561
- this.audioInput = new AudioInputService(config);
562
- const audioConfig = this.audioInput.getConfig();
563
- this.pitchDetector = new PitchDetector(
564
- audioConfig.sampleRate,
565
- audioConfig.frequencyRange.min,
566
- audioConfig.frequencyRange.max
567
- );
568
- this.chordRecognizer = new ChordRecognizer();
569
- this.events = events;
570
- }
571
- /**
572
- * 启动音频检测
573
- * Start audio detection
574
- */
575
- async start() {
576
- if (this.isDetecting) {
577
- console.warn("AudioDetector \u5DF2\u7ECF\u5728\u8FD0\u884C");
578
- return;
579
- }
580
- try {
581
- await this.audioInput.initialize();
582
- this.events.onStateChange?.("active");
583
- this.isDetecting = true;
584
- this.detectLoop();
585
- console.log("AudioDetector \u5DF2\u542F\u52A8");
586
- } catch (error) {
587
- this.events.onStateChange?.("error");
588
- this.events.onError?.(error instanceof Error ? error : new Error(String(error)));
589
- throw error;
590
- }
591
- }
592
- /**
593
- * 停止音频检测
594
- * Stop audio detection
595
- */
596
- stop() {
597
- if (!this.isDetecting) {
598
- return;
599
- }
600
- this.isDetecting = false;
601
- if (this.animationFrameId !== null) {
602
- cancelAnimationFrame(this.animationFrameId);
603
- this.animationFrameId = null;
604
- }
605
- this.audioInput.stop();
606
- this.events.onStateChange?.("stopped");
607
- console.log("AudioDetector \u5DF2\u505C\u6B62");
608
- }
609
- /**
610
- * 执行一次检测
611
- * Perform single detection
612
- */
613
- detect() {
614
- const config = this.audioInput.getConfig();
615
- const timeDomainData = this.audioInput.getTimeDomainData();
616
- const frequencyData = this.audioInput.getFrequencyData();
617
- const volume = this.audioInput.getCurrentVolume();
618
- if (Date.now() % 2e3 < 100) {
619
- console.log("[AudioDetector] \u5F53\u524D\u97F3\u91CF: " + volume.toFixed(6) + ", \u9608\u503C: " + config.minVolume + ", \u72B6\u6001: " + (volume >= config.minVolume ? "\u2705 \u6709\u58F0\u97F3" : "\u274C \u97F3\u91CF\u592A\u4F4E"));
620
- }
621
- if (volume < config.minVolume) {
622
- return {
623
- notes: [],
624
- timestamp: Date.now(),
625
- isDetecting: false
626
- };
627
- }
628
- const dominantFrequency = this.pitchDetector.detectPitch(timeDomainData, config.minVolume);
629
- const detectedNotes = this.pitchDetector.detectMultiplePitches(frequencyData, -60);
630
- if (dominantFrequency && dominantFrequency > 0) {
631
- const dominantNote = this.pitchDetector.frequencyToNote(dominantFrequency, volume);
632
- if (dominantNote) {
633
- const exists = detectedNotes.some((n) => Math.abs(n.midi - dominantNote.midi) < 1);
634
- if (!exists) {
635
- detectedNotes.unshift(dominantNote);
636
- }
637
- }
638
- }
639
- const filteredNotes = detectedNotes.filter((note) => note.confidence >= config.minConfidence);
640
- let chord;
641
- if (filteredNotes.length >= 2) {
642
- chord = this.chordRecognizer.recognizeChord(filteredNotes) ?? void 0;
643
- }
644
- return {
645
- notes: filteredNotes,
646
- chord,
647
- timestamp: Date.now(),
648
- isDetecting: filteredNotes.length > 0
649
- };
650
- }
651
- /**
652
- * 获取当前状态
653
- * Get current state
654
- */
655
- getState() {
656
- return this.audioInput.getState();
657
- }
658
- /**
659
- * 获取最后的检测结果
660
- * Get last detection result
661
- */
662
- getLastResult() {
663
- return this.lastResult;
664
- }
665
- /**
666
- * 检查是否正在运行
667
- * Check if running
668
- */
669
- isRunning() {
670
- return this.isDetecting && this.audioInput.isRunning();
671
- }
672
- /**
673
- * 获取音频输入服务
674
- * Get audio input service
675
- */
676
- getAudioInput() {
677
- return this.audioInput;
678
- }
679
- };
680
-
681
- // src/audioDetection/core/AudioDetectorDebugger.ts
682
- var AudioDetectorDebugger = class {
683
- constructor(config = {}) {
684
- this.debugInterval = null;
685
- this.detector = new AudioDetector(config, {
686
- onDetection: (result) => {
687
- if (result.isDetecting) {
688
- console.log("\u{1F3B5} \u68C0\u6D4B\u5230\u97F3\u7B26:", result.notes.map((n) => n.name + "(" + n.frequency.toFixed(1) + "Hz)").join(", "));
689
- if (result.chord) {
690
- console.log("\u{1F3B9} \u68C0\u6D4B\u5230\u548C\u5F26:", result.chord.name);
691
- }
692
- }
693
- },
694
- onStateChange: (state) => {
695
- console.log("\u{1F4CA} \u72B6\u6001\u53D8\u5316:", state);
696
- },
697
- onError: (error) => {
698
- console.error("\u274C \u9519\u8BEF:", error);
699
- }
700
- });
701
- }
702
- async start() {
703
- await this.detector.start();
704
- this.debugInterval = window.setInterval(() => {
705
- const audioInput = this.detector.getAudioInput();
706
- const volume = audioInput.getCurrentVolume();
707
- const config = audioInput.getConfig();
708
- const analyser = audioInput.getAnalyserNode();
709
- if (analyser) {
710
- const freqData = new Float32Array(analyser.frequencyBinCount);
711
- analyser.getFloatFrequencyData(freqData);
712
- let maxFreqValue = -Infinity;
713
- for (let i = 0; i < freqData.length; i++) {
714
- const val = freqData[i];
715
- if (val !== void 0 && val > maxFreqValue) {
716
- maxFreqValue = val;
717
- }
718
- }
719
- console.log(`
720
- \u{1F3A4} \u97F3\u9891\u8C03\u8BD5\u4FE1\u606F:
721
- - \u97F3\u91CF (RMS): ${volume.toFixed(6)}
722
- - \u97F3\u91CF\u9608\u503C: ${config.minVolume}
723
- - \u97F3\u91CF\u72B6\u6001: ${volume >= config.minVolume ? "\u2705 \u8D85\u8FC7\u9608\u503C" : "\u274C \u4F4E\u4E8E\u9608\u503C"}
724
- - \u6700\u5927\u9891\u7387\u5F3A\u5EA6: ${maxFreqValue.toFixed(2)} dB
725
- - \u91C7\u6837\u7387: ${config.sampleRate} Hz
726
- - FFT\u5927\u5C0F: ${config.fftSize}
727
- - \u5E73\u6ED1\u7CFB\u6570: ${config.smoothing}
728
- `);
729
- }
730
- }, 2e3);
731
- }
732
- stop() {
733
- if (this.debugInterval !== null) {
734
- clearInterval(this.debugInterval);
735
- this.debugInterval = null;
736
- }
737
- this.detector.stop();
738
- }
739
- getDetector() {
740
- return this.detector;
741
- }
742
- /**
743
- * 测试麦克风是否正常工作
744
- */
745
- async testMicrophone() {
746
- console.log("\u{1F50D} \u5F00\u59CB\u6D4B\u8BD5\u9EA6\u514B\u98CE...");
747
- await this.detector.start();
748
- const volumes = [];
749
- const audioInput = this.detector.getAudioInput();
750
- return new Promise((resolve) => {
751
- const sampleInterval = setInterval(() => {
752
- volumes.push(audioInput.getCurrentVolume());
753
- }, 100);
754
- setTimeout(() => {
755
- clearInterval(sampleInterval);
756
- const averageVolume = volumes.reduce((a, b) => a + b, 0) / volumes.length;
757
- const peakVolume = Math.max(...volumes);
758
- const isReceivingAudio = peakVolume > 1e-4;
759
- console.log(`
760
- \u2705 \u9EA6\u514B\u98CE\u6D4B\u8BD5\u5B8C\u6210:
761
- - \u6743\u9650\u72B6\u6001: \u2705 \u5DF2\u6388\u6743
762
- - \u63A5\u6536\u97F3\u9891: ${isReceivingAudio ? "\u2705 \u662F" : "\u274C \u5426"}
763
- - \u5E73\u5747\u97F3\u91CF: ${averageVolume.toFixed(6)}
764
- - \u5CF0\u503C\u97F3\u91CF: ${peakVolume.toFixed(6)}
765
- - \u5EFA\u8BAE\u9608\u503C: ${(peakVolume * 0.1).toFixed(6)}
766
- `);
767
- resolve({
768
- hasPermission: true,
769
- isReceivingAudio,
770
- averageVolume,
771
- peakVolume
772
- });
773
- }, 5e3);
774
- });
775
- }
776
- };
777
- async function debugAudioDetection(config) {
778
- const dbg = new AudioDetectorDebugger(config);
779
- await dbg.start();
780
- return dbg;
781
- }
782
- async function testMicrophone() {
783
- const dbg = new AudioDetectorDebugger();
784
- await dbg.testMicrophone();
785
- dbg.stop();
786
- }
787
- function useAudioDetection(options = {}) {
788
- const { autoStart = false, updateInterval = 100, ...config } = options;
789
- const [result, setResult] = useState(null);
790
- const [state, setState] = useState("idle");
791
- const [error, setError] = useState(null);
792
- const [isDetecting, setIsDetecting] = useState(false);
793
- const detectorRef = useRef(null);
794
- const lastUpdateRef = useRef(0);
795
- useEffect(() => {
796
- const detector = new AudioDetector(config, {
797
- onDetection: (detectionResult) => {
798
- const now = Date.now();
799
- if (now - lastUpdateRef.current >= updateInterval) {
800
- setResult(detectionResult);
801
- lastUpdateRef.current = now;
802
- }
803
- },
804
- onStateChange: (newState) => {
805
- setState(newState);
806
- },
807
- onError: (err) => {
808
- setError(err);
809
- setIsDetecting(false);
810
- }
811
- });
812
- detectorRef.current = detector;
813
- if (autoStart) {
814
- detector.start().catch((err) => {
815
- setError(err);
816
- });
817
- setIsDetecting(true);
818
- }
819
- return () => {
820
- if (detector.isRunning()) {
821
- detector.stop();
822
- }
823
- };
824
- }, []);
825
- const start = useCallback(async () => {
826
- if (!detectorRef.current) {
827
- const err = new Error("\u68C0\u6D4B\u5668\u672A\u521D\u59CB\u5316");
828
- setError(err);
829
- throw err;
830
- }
831
- try {
832
- setError(null);
833
- await detectorRef.current.start();
834
- setIsDetecting(true);
835
- } catch (err) {
836
- const error2 = err instanceof Error ? err : new Error(String(err));
837
- setError(error2);
838
- setIsDetecting(false);
839
- throw error2;
840
- }
841
- }, []);
842
- const stop = useCallback(() => {
843
- if (detectorRef.current) {
844
- detectorRef.current.stop();
845
- setIsDetecting(false);
846
- setResult(null);
847
- }
848
- }, []);
849
- const getDetector = useCallback(() => {
850
- return detectorRef.current;
851
- }, []);
852
- return {
853
- result,
854
- state,
855
- isDetecting,
856
- error,
857
- start,
858
- stop,
859
- getDetector
860
- };
861
- }
862
- var AudioDetectionDisplay = ({
863
- className = "",
864
- showDebugInfo = false,
865
- renderNote,
866
- renderChord,
867
- startButtonText = "\u5F00\u59CB\u68C0\u6D4B",
868
- stopButtonText = "\u505C\u6B62\u68C0\u6D4B",
869
- ...options
870
- }) => {
871
- const { result, state, isDetecting, error, start, stop } = useAudioDetection(options);
872
- const handleToggle = async () => {
873
- if (isDetecting) {
874
- stop();
875
- } else {
876
- try {
877
- await start();
878
- } catch (err) {
879
- console.error("\u542F\u52A8\u5931\u8D25:", err);
880
- }
881
- }
882
- };
883
- return /* @__PURE__ */ React.createElement("div", { className: clsx("audio-detection-display", className) }, /* @__PURE__ */ React.createElement("div", { className: "audio-detection-controls" }, /* @__PURE__ */ React.createElement(
884
- "button",
885
- {
886
- onClick: handleToggle,
887
- disabled: state === "initializing",
888
- className: clsx("audio-detection-button", isDetecting ? "active" : "")
889
- },
890
- state === "initializing" ? "\u521D\u59CB\u5316\u4E2D..." : isDetecting ? stopButtonText : startButtonText
891
- ), /* @__PURE__ */ React.createElement("div", { className: clsx("audio-detection-status status-", state) }, "\u72B6\u6001: ", getStateLabel(state))), error && /* @__PURE__ */ React.createElement("div", { className: "audio-detection-error" }, /* @__PURE__ */ React.createElement("strong", null, "\u9519\u8BEF:"), " ", error.message), result && result.isDetecting && /* @__PURE__ */ React.createElement("div", { className: "audio-detection-result" }, result.notes.length > 0 && /* @__PURE__ */ React.createElement("div", { className: "audio-detection-notes" }, /* @__PURE__ */ React.createElement("h3", null, "\u68C0\u6D4B\u5230\u7684\u97F3\u7B26:"), /* @__PURE__ */ React.createElement("div", { className: "notes-grid" }, result.notes.map((note, index) => /* @__PURE__ */ React.createElement("div", { key: index, className: "note-item" }, renderNote ? renderNote(note) : /* @__PURE__ */ React.createElement(DefaultNoteDisplay, { note }))))), result.chord && /* @__PURE__ */ React.createElement("div", { className: "audio-detection-chord" }, /* @__PURE__ */ React.createElement("h3", null, "\u8BC6\u522B\u7684\u548C\u5F26:"), renderChord ? renderChord(result.chord) : /* @__PURE__ */ React.createElement(DefaultChordDisplay, { chord: result.chord })), showDebugInfo && /* @__PURE__ */ React.createElement("div", { className: "audio-detection-debug" }, /* @__PURE__ */ React.createElement("h4", null, "\u8C03\u8BD5\u4FE1\u606F:"), /* @__PURE__ */ React.createElement("pre", null, JSON.stringify(result, null, 2)))), isDetecting && (!result || !result.isDetecting) && /* @__PURE__ */ React.createElement("div", { className: "audio-detection-waiting" }, "\u6B63\u5728\u76D1\u542C... \u8BF7\u5F39\u594F\u7535\u5B50\u7434"));
892
- };
893
- var DefaultNoteDisplay = ({ note }) => /* @__PURE__ */ React.createElement("div", { className: "default-note-display" }, /* @__PURE__ */ React.createElement("div", { className: "note-name" }, note.name), /* @__PURE__ */ React.createElement("div", { className: "note-frequency" }, note.frequency.toFixed(2), " Hz"), /* @__PURE__ */ React.createElement("div", { className: "note-confidence" }, "\u7F6E\u4FE1\u5EA6: ", (note.confidence * 100).toFixed(0), "%"));
894
- var DefaultChordDisplay = ({ chord }) => /* @__PURE__ */ React.createElement("div", { className: "default-chord-display" }, /* @__PURE__ */ React.createElement("div", { className: "chord-name" }, chord.name), /* @__PURE__ */ React.createElement("div", { className: "chord-type" }, "\u7C7B\u578B: ", chord.type), /* @__PURE__ */ React.createElement("div", { className: "chord-notes" }, "\u97F3\u7B26: ", chord.notes.map((n) => n.name).join(", ")), /* @__PURE__ */ React.createElement("div", { className: "chord-confidence" }, "\u7F6E\u4FE1\u5EA6: ", (chord.confidence * 100).toFixed(0), "%"));
895
- function getStateLabel(state) {
896
- const labels = {
897
- idle: "\u7A7A\u95F2",
898
- initializing: "\u521D\u59CB\u5316\u4E2D",
899
- active: "\u8FD0\u884C\u4E2D",
900
- error: "\u9519\u8BEF",
901
- stopped: "\u5DF2\u505C\u6B62"
902
- };
903
- return labels[state] || state;
904
- }
905
- var audioDetectionStyles = `
906
- .audio-detection-display {
907
- padding: 20px;
908
- border: 1px solid #ddd;
909
- border-radius: 8px;
910
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
911
- }
912
-
913
- .audio-detection-controls {
914
- display: flex;
915
- gap: 12px;
916
- align-items: center;
917
- margin-bottom: 20px;
918
- }
919
-
920
- .audio-detection-button {
921
- padding: 10px 20px;
922
- font-size: 16px;
923
- border: none;
924
- border-radius: 6px;
925
- background-color: #007bff;
926
- color: white;
927
- cursor: pointer;
928
- transition: background-color 0.3s;
929
- }
930
-
931
- .audio-detection-button:hover {
932
- background-color: #0056b3;
933
- }
934
-
935
- .audio-detection-button:disabled {
936
- background-color: #ccc;
937
- cursor: not-allowed;
938
- }
939
-
940
- .audio-detection-button.active {
941
- background-color: #dc3545;
942
- }
943
-
944
- .audio-detection-button.active:hover {
945
- background-color: #c82333;
946
- }
947
-
948
- .audio-detection-status {
949
- padding: 8px 16px;
950
- border-radius: 4px;
951
- font-size: 14px;
952
- }
953
-
954
- .status-idle { background-color: #e7f3ff; color: #004085; }
955
- .status-initializing { background-color: #fff3cd; color: #856404; }
956
- .status-active { background-color: #d4edda; color: #155724; }
957
- .status-error { background-color: #f8d7da; color: #721c24; }
958
- .status-stopped { background-color: #e2e3e5; color: #383d41; }
959
-
960
- .audio-detection-error {
961
- padding: 12px;
962
- background-color: #f8d7da;
963
- border: 1px solid #f5c6cb;
964
- border-radius: 4px;
965
- color: #721c24;
966
- margin-bottom: 16px;
967
- }
968
-
969
- .audio-detection-result {
970
- margin-top: 20px;
971
- }
972
-
973
- .audio-detection-notes h3,
974
- .audio-detection-chord h3 {
975
- margin-bottom: 12px;
976
- font-size: 18px;
977
- }
978
-
979
- .notes-grid {
980
- display: grid;
981
- grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
982
- gap: 12px;
983
- }
984
-
985
- .note-item {
986
- padding: 12px;
987
- border: 2px solid #007bff;
988
- border-radius: 6px;
989
- background-color: #f8f9fa;
990
- }
991
-
992
- .default-note-display {
993
- text-align: center;
994
- }
995
-
996
- .note-name {
997
- font-size: 24px;
998
- font-weight: bold;
999
- color: #007bff;
1000
- margin-bottom: 4px;
1001
- }
1002
-
1003
- .note-frequency {
1004
- font-size: 14px;
1005
- color: #666;
1006
- margin-bottom: 4px;
1007
- }
1008
-
1009
- .note-confidence {
1010
- font-size: 12px;
1011
- color: #999;
1012
- }
1013
-
1014
- .audio-detection-chord {
1015
- margin-top: 20px;
1016
- padding: 16px;
1017
- border: 2px solid #28a745;
1018
- border-radius: 8px;
1019
- background-color: #f8f9fa;
1020
- }
1021
-
1022
- .default-chord-display {
1023
- text-align: center;
1024
- }
1025
-
1026
- .chord-name {
1027
- font-size: 32px;
1028
- font-weight: bold;
1029
- color: #28a745;
1030
- margin-bottom: 8px;
1031
- }
1032
-
1033
- .chord-type,
1034
- .chord-notes,
1035
- .chord-confidence {
1036
- margin-bottom: 4px;
1037
- color: #666;
1038
- }
1039
-
1040
- .audio-detection-waiting {
1041
- text-align: center;
1042
- padding: 40px;
1043
- color: #666;
1044
- font-size: 18px;
1045
- }
1046
-
1047
- .audio-detection-debug {
1048
- margin-top: 20px;
1049
- padding: 12px;
1050
- background-color: #f4f4f4;
1051
- border-radius: 4px;
1052
- }
1053
-
1054
- .audio-detection-debug pre {
1055
- margin: 8px 0 0 0;
1056
- font-size: 12px;
1057
- overflow-x: auto;
1058
- }
1059
- `;
1060
- var PianoKeyboard = ({
1061
- activeNotes = [],
1062
- startOctave = 2,
1063
- endOctave = 6,
1064
- className = "",
1065
- showNoteNames = true
1066
- }) => {
1067
- const keys = useMemo(() => {
1068
- const noteNames = ["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"];
1069
- const blackKeys2 = /* @__PURE__ */ new Set(["C#", "D#", "F#", "G#", "A#"]);
1070
- const allKeys = [];
1071
- for (let octave = startOctave; octave <= endOctave; octave++) {
1072
- for (const noteName of noteNames) {
1073
- const midi = (octave + 1) * 12 + noteNames.indexOf(noteName);
1074
- const isActive = activeNotes.some((note) => note.midi === midi);
1075
- allKeys.push({
1076
- noteName,
1077
- octave,
1078
- midi,
1079
- isBlack: blackKeys2.has(noteName),
1080
- isActive
1081
- });
1082
- }
1083
- }
1084
- return allKeys;
1085
- }, [startOctave, endOctave, activeNotes]);
1086
- const whiteKeys = keys.filter((k) => !k.isBlack);
1087
- const blackKeys = keys.filter((k) => k.isBlack);
1088
- return /* @__PURE__ */ React.createElement("div", { className: clsx("piano-keyboard", className) }, /* @__PURE__ */ React.createElement("div", { className: "piano-keys-container" }, /* @__PURE__ */ React.createElement("div", { className: "white-keys" }, whiteKeys.map((key, index) => /* @__PURE__ */ React.createElement(
1089
- "div",
1090
- {
1091
- key: "white-" + key.midi,
1092
- className: clsx("piano-key white-key", key.isActive ? "active" : ""),
1093
- title: key.noteName + key.octave
1094
- },
1095
- showNoteNames && /* @__PURE__ */ React.createElement("span", { className: "key-label" }, key.noteName, key.octave)
1096
- ))), /* @__PURE__ */ React.createElement("div", { className: "black-keys" }, blackKeys.map((key) => {
1097
- const whiteKeyIndex = getWhiteKeyIndexBeforeBlack(key.noteName);
1098
- const octaveOffset = (key.octave - startOctave) * 7;
1099
- const position = whiteKeyIndex + octaveOffset;
1100
- return /* @__PURE__ */ React.createElement(
1101
- "div",
1102
- {
1103
- key: "black-" + key.midi,
1104
- className: clsx("piano-key black-key", key.isActive ? "active" : ""),
1105
- style: { left: (position + 0.7) * (100 / whiteKeys.length) + "%" },
1106
- title: key.noteName + key.octave
1107
- },
1108
- showNoteNames && /* @__PURE__ */ React.createElement("span", { className: "key-label" }, key.noteName, key.octave)
1109
- );
1110
- }))));
1111
- };
1112
- function getWhiteKeyIndexBeforeBlack(noteName) {
1113
- const map = {
1114
- "C#": 0,
1115
- "D#": 1,
1116
- "F#": 3,
1117
- "G#": 4,
1118
- "A#": 5
1119
- };
1120
- return map[noteName] || 0;
1121
- }
1122
- var pianoKeyboardStyles = `
1123
- .piano-keyboard {
1124
- width: 100%;
1125
- padding: 20px;
1126
- background-color: #2c3e50;
1127
- border-radius: 8px;
1128
- box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);
1129
- }
1130
-
1131
- .piano-keys-container {
1132
- position: relative;
1133
- width: 100%;
1134
- height: 200px;
1135
- }
1136
-
1137
- .white-keys {
1138
- display: flex;
1139
- height: 100%;
1140
- gap: 2px;
1141
- }
1142
-
1143
- .piano-key {
1144
- position: relative;
1145
- border: 1px solid #000;
1146
- cursor: pointer;
1147
- transition: all 0.15s ease;
1148
- }
1149
-
1150
- .white-key {
1151
- flex: 1;
1152
- background: linear-gradient(to bottom, #ffffff 0%, #f0f0f0 100%);
1153
- border-radius: 0 0 4px 4px;
1154
- display: flex;
1155
- align-items: flex-end;
1156
- justify-content: center;
1157
- padding-bottom: 8px;
1158
- }
1159
-
1160
- .white-key:hover {
1161
- background: linear-gradient(to bottom, #f8f8f8 0%, #e8e8e8 100%);
1162
- }
1163
-
1164
- .white-key.active {
1165
- background: linear-gradient(to bottom, #4CAF50 0%, #45a049 100%) !important;
1166
- box-shadow: 0 0 20px rgba(76, 175, 80, 0.8);
1167
- }
1168
-
1169
- .black-keys {
1170
- position: absolute;
1171
- top: 0;
1172
- left: 0;
1173
- width: 100%;
1174
- height: 60%;
1175
- pointer-events: none;
1176
- }
1177
-
1178
- .black-key {
1179
- position: absolute;
1180
- width: calc(100% / 52 * 0.6); /* \u5047\u8BBE\u670952\u4E2A\u767D\u952E\u7684\u5BBD\u5EA6 */
1181
- height: 100%;
1182
- background: linear-gradient(to bottom, #2c3e50 0%, #1a252f 100%);
1183
- border-radius: 0 0 3px 3px;
1184
- pointer-events: all;
1185
- transform: translateX(-50%);
1186
- display: flex;
1187
- align-items: flex-end;
1188
- justify-content: center;
1189
- padding-bottom: 6px;
1190
- z-index: 10;
1191
- }
1192
-
1193
- .black-key:hover {
1194
- background: linear-gradient(to bottom, #34495e 0%, #2c3e50 100%);
1195
- }
1196
-
1197
- .black-key.active {
1198
- background: linear-gradient(to bottom, #4CAF50 0%, #388E3C 100%) !important;
1199
- box-shadow: 0 0 20px rgba(76, 175, 80, 0.8);
1200
- }
1201
-
1202
- .key-label {
1203
- font-size: 11px;
1204
- font-weight: bold;
1205
- user-select: none;
1206
- }
1207
-
1208
- .white-key .key-label {
1209
- color: #666;
1210
- }
1211
-
1212
- .white-key.active .key-label {
1213
- color: white;
1214
- }
1215
-
1216
- .black-key .key-label {
1217
- color: #ddd;
1218
- }
1219
-
1220
- .black-key.active .key-label {
1221
- color: white;
1222
- }
1223
- `;
1224
-
1225
- export { AudioDetectionDisplay, AudioDetector, AudioDetectorDebugger, AudioInputService, ChordRecognizer, PianoKeyboard, PitchDetector, audioDetectionStyles, debugAudioDetection, pianoKeyboardStyles, testMicrophone, useAudioDetection };
1226
- //# sourceMappingURL=index.mjs.map
1227
- //# sourceMappingURL=index.mjs.map