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/navigation/NavigationItem.tsx","../../src/navigation/Navigation.tsx","../../src/navigation/NavigationToggle.tsx","../../src/navigation/FloatingMenu.tsx","../../src/navigation/FloatingMenuExample.tsx"],"names":["React","clsx","useState","useRef","useEffect","createPortal"],"mappings":"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","file":"index.js","sourcesContent":[" 'use client';\n\nimport React from 'react';\nimport { NavigationItem, NavigationDirection } from './types';\nimport { clsx } from 'clsx';\n\ninterface NavigationItemProps {\n item: NavigationItem;\n direction: NavigationDirection;\n isActive?: boolean;\n onClick: (item: NavigationItem) => void;\n}\n\nconst NavigationItemComponent: React.FC<NavigationItemProps> = ({\n item,\n direction,\n isActive,\n onClick\n}) => {\n const handleClick = (e: React.MouseEvent) => {\n e.preventDefault();\n onClick(item);\n };\n\n const getItemClasses = () => {\n const baseClasses = `\n group relative flex items-center gap-3\n transition-all duration-300 ease-in-out\n focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-opacity-50\n rounded-lg\n `;\n\n const directionClasses = direction === 'vertical'\n ? 'px-4 py-3 w-full justify-start'\n : 'px-3 py-2 justify-center';\n\n const stateClasses = isActive\n ? 'bg-blue-500 text-white shadow-lg'\n : item.isExternal\n ? 'text-gray-700 hover:bg-purple-50 hover:text-purple-600 border border-purple-200'\n : 'text-gray-700 hover:bg-blue-50 hover:text-blue-600';\n\n return (baseClasses) + ' ' + (directionClasses) + ' ' + (stateClasses);\n };\n\n return (\n <a\n href={item.href}\n onClick={handleClick}\n target={item.target}\n rel={item.isExternal ? 'noopener noreferrer' : undefined}\n className={getItemClasses()}\n >\n {/* 图标 */}\n {item.icon && (\n <span className=\"flex-shrink-0\">\n {item.icon}\n </span>\n )}\n\n {/* 标签 */}\n <span className={clsx('font-medium', direction === 'vertical' ? 'text-sm' : 'text-xs')}>\n {item.label}\n </span>\n\n {/* 外链图标 */}\n {item.isExternal && (\n <svg\n className=\"w-3 h-3 opacity-60 group-hover:opacity-100 transition-opacity\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14\"\n />\n </svg>\n )}\n\n {/* 活动状态指示器 */}\n {direction === 'vertical' && isActive && (\n <div className=\"absolute left-1 top-1/2 transform -translate-y-1/2 w-1 h-6 bg-white rounded-full\" />\n )}\n </a>\n );\n};\n\nexport default NavigationItemComponent;"," 'use client';\n\nimport React from 'react';\nimport NavigationItem from './NavigationItem';\nimport { NavigationProps } from './types';\nimport { clsx } from 'clsx';\n\nconst Navigation: React.FC<NavigationProps> = ({\n config,\n isOpen,\n activeItemId,\n onItemClick,\n className = ''\n}) => {\n const { direction, position, items, avatar, logo } = config;\n\n // 获取导航栏位置和尺寸样式\n const getContainerClasses = () => {\n const baseClasses = `\n fixed z-[90]\n bg-white/95 backdrop-blur-lg\n border border-gray-200/50\n shadow-2xl\n transition-all duration-500 ease-in-out\n `;\n\n // 根据方向和位置确定样式\n if (direction === 'vertical') {\n const verticalClasses = 'h-screen w-64 flex flex-col';\n const positionClasses = position === 'left' \n ? 'left-0 top-0 ' + (isOpen ? 'translate-x-0' : '-translate-x-full')\n : 'right-0 top-0 ' + (isOpen ? 'translate-x-0' : 'translate-x-full');\n \n return (baseClasses) + ' ' + (verticalClasses) + ' ' + (positionClasses);\n } else {\n const horizontalClasses = 'w-full h-16 flex items-center';\n const positionClasses = position === 'top'\n ? 'top-0 left-0 right-0 ' + (isOpen ? 'translate-y-0' : '-translate-y-full')\n : 'bottom-0 left-0 right-0 ' + (isOpen ? 'translate-y-0' : 'translate-y-full');\n \n return (baseClasses) + ' ' + (horizontalClasses) + ' ' + (positionClasses);\n }\n };\n\n // 获取内容布局样式\n const getContentClasses = () => {\n if (direction === 'vertical') {\n return 'flex flex-col h-full p-4';\n } else {\n return 'flex items-center justify-between w-full px-6';\n }\n };\n\n // 获取导航项列表样式\n const getItemsListClasses = () => {\n if (direction === 'vertical') {\n return 'flex flex-col gap-2 flex-1 overflow-y-auto mt-4';\n } else {\n return 'flex items-center gap-4';\n }\n };\n\n const handleItemClick = (item: any) => {\n // 处理页面跳转\n if (item.isExternal) {\n // 外链跳转\n window.open(item.href, item.target || '_blank');\n } else if (item.href.startsWith('#')) {\n // 锚点跳转\n const element = document.getElementById(item.id);\n if (element) {\n element.scrollIntoView({ behavior: 'smooth' });\n }\n } else {\n // 内部页面跳转\n window.location.href = item.href;\n }\n\n // 触发回调\n onItemClick?.(item);\n };\n\n if (!isOpen) return null;\n\n return (\n <nav className={clsx(getContainerClasses(), className)}>\n <div className={getContentClasses()}>\n {/* Logo 区域 */}\n {logo && (\n <div className=\"flex items-center justify-center mb-4\">\n <img\n src={logo.src}\n alt={logo.alt || 'Logo'}\n className=\"h-8 w-auto\"\n />\n </div>\n )}\n\n {/* 顶部空间占位(为切换按钮预留) */}\n {direction === 'vertical' && (\n <div className=\"h-12 flex-shrink-0\" />\n )}\n\n {/* 导航项列表 */}\n <div className={getItemsListClasses()}>\n {items.map((item) => (\n <NavigationItem\n key={item.id}\n item={item}\n direction={direction}\n isActive={activeItemId === item.id}\n onClick={handleItemClick}\n />\n ))}\n </div>\n\n {/* 头像区域 */}\n {avatar && direction === 'vertical' && (\n <div className=\"flex items-center justify-center mt-auto pt-4\">\n <img\n src={avatar.src}\n alt={avatar.alt || 'Avatar'}\n className=\"w-10 h-10 rounded-full border-2 border-gray-200\"\n />\n </div>\n )}\n\n {/* 水平布局的头像 */}\n {avatar && direction === 'horizontal' && (\n <div className=\"flex items-center\">\n <img\n src={avatar.src}\n alt={avatar.alt || 'Avatar'}\n className=\"w-8 h-8 rounded-full border-2 border-gray-200\"\n />\n </div>\n )}\n </div>\n </nav>\n );\n};\n\nexport default Navigation;"," 'use client';\n\nimport React from 'react';\nimport { NavigationPosition } from './types';\nimport { clsx } from 'clsx';\n\ninterface NavigationToggleProps {\n isOpen: boolean;\n onClick: () => void;\n position: NavigationPosition;\n}\n\nconst NavigationToggle: React.FC<NavigationToggleProps> = ({\n isOpen,\n onClick,\n position\n}) => {\n const getPositionClasses = () => {\n switch (position) {\n case 'top':\n return 'top-4 left-4';\n case 'bottom':\n return 'bottom-4 left-4';\n case 'left':\n return 'top-4 left-4';\n case 'right':\n return 'top-4 right-4';\n default:\n return 'top-4 left-4';\n }\n };\n\n return (\n <button\n onClick={onClick}\n className={clsx(\n 'fixed',\n getPositionClasses(),\n 'z-[100] p-3 rounded-xl bg-white/90 backdrop-blur-md shadow-lg hover:shadow-xl border border-gray-200/50 transition-all duration-300 ease-in-out hover:scale-105 active:scale-95 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-opacity-50'\n )}\n aria-label={isOpen ? '关闭导航栏' : '打开导航栏'}\n >\n <div className=\"w-5 h-5 flex flex-col justify-center items-center\">\n <span\n className={clsx(\n 'block w-5 h-0.5 bg-gray-600 rounded-full transform transition-all duration-300 ease-in-out',\n isOpen ? 'rotate-45 translate-y-0.5' : ''\n )}\n />\n <span\n className={clsx(\n 'block w-5 h-0.5 bg-gray-600 rounded-full transform transition-all duration-300 ease-in-out mt-1',\n isOpen ? 'opacity-0 scale-0' : 'opacity-100 scale-100'\n )}\n />\n <span\n className={clsx(\n 'block w-5 h-0.5 bg-gray-600 rounded-full transform transition-all duration-300 ease-in-out mt-1',\n isOpen ? '-rotate-45 -translate-y-2.5' : ''\n )}\n />\n </div>\n </button>\n );\n};\n\nexport default NavigationToggle;","'use client';\n\nimport React, { useState, useRef, useEffect, ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\nimport { clsx } from 'clsx';\n\nexport interface FloatingMenuProps {\n /**\n * 触发按钮的内容\n */\n trigger: ReactNode;\n \n /**\n * 菜单内容\n */\n menu: ReactNode;\n \n /**\n * 初始位置\n */\n initialPosition?: { x: number; y: number };\n \n /**\n * 是否默认打开菜单\n */\n defaultOpen?: boolean;\n \n /**\n * 自定义类名\n */\n className?: string;\n \n /**\n * 菜单类名\n */\n menuClassName?: string;\n \n /**\n * 触发器类名\n */\n triggerClassName?: string;\n \n /**\n * z-index\n */\n zIndex?: number;\n}\n\nconst FloatingMenu: React.FC<FloatingMenuProps> = ({\n trigger,\n menu,\n initialPosition = { x: 20, y: 20 },\n defaultOpen = false,\n className = '',\n menuClassName = '',\n triggerClassName = '',\n zIndex = 1000,\n}) => {\n const [position, setPosition] = useState(initialPosition);\n const [isMenuOpen, setIsMenuOpen] = useState(defaultOpen);\n const [menuDirection, setMenuDirection] = useState<'left' | 'right'>('right');\n const [isDragging, setIsDragging] = useState(false);\n const [dragOffset, setDragOffset] = useState({ x: 0, y: 0 });\n const containerRef = useRef<HTMLDivElement>(null);\n const [mounted, setMounted] = useState(false);\n // 添加一个标志,用于跟踪是否发生了拖动\n const [hasDragged, setHasDragged] = useState(false);\n // 添加一个计时器引用,用于区分点击和拖动\n const dragTimerRef = useRef<number | null>(null);\n // 添加一个引用,记录鼠标按下的初始位置\n const mouseDownPosRef = useRef<{ x: number, y: number } | null>(null);\n\n // 客户端挂载检查\n useEffect(() => {\n setMounted(true);\n return () => setMounted(false);\n }, []);\n\n // 计算菜单方向\n useEffect(() => {\n if (!mounted || !containerRef.current) return;\n \n const updateMenuDirection = () => {\n const rect = containerRef.current?.getBoundingClientRect();\n if (!rect) return;\n \n const windowWidth = window.innerWidth;\n const middlePoint = windowWidth / 2;\n \n // 如果悬浮窗在屏幕左半部分,菜单向右展开;否则向左展开\n setMenuDirection(rect.left < middlePoint ? 'right' : 'left');\n };\n \n updateMenuDirection();\n \n // 监听窗口大小变化和滚动事件\n window.addEventListener('resize', updateMenuDirection);\n window.addEventListener('scroll', updateMenuDirection);\n \n return () => {\n window.removeEventListener('resize', updateMenuDirection);\n window.removeEventListener('scroll', updateMenuDirection);\n };\n }, [mounted]);\n\n // 处理拖动开始\n const handleMouseDown = (e: React.MouseEvent) => {\n if (!containerRef.current) return;\n \n // 防止触发菜单点击\n e.stopPropagation();\n \n // 记录鼠标按下的初始位置\n mouseDownPosRef.current = { x: e.clientX, y: e.clientY };\n \n const rect = containerRef.current.getBoundingClientRect();\n setDragOffset({\n x: e.clientX - rect.left,\n y: e.clientY - rect.top\n });\n \n // 重置拖动标志\n setHasDragged(false);\n \n // 设置拖动状态\n setIsDragging(true);\n };\n\n // 处理拖动过程\n useEffect(() => {\n if (!isDragging) return;\n \n const handleMouseMove = (e: MouseEvent) => {\n // 检查是否移动了足够的距离来认为是拖动\n if (mouseDownPosRef.current) {\n const dx = Math.abs(e.clientX - mouseDownPosRef.current.x);\n const dy = Math.abs(e.clientY - mouseDownPosRef.current.y);\n \n // 如果移动距离超过阈值,标记为拖动\n if (dx > 3 || dy > 3) {\n setHasDragged(true);\n }\n }\n \n // 计算新位置并应用边界检查\n const newX = e.clientX - dragOffset.x;\n const newY = e.clientY - dragOffset.y;\n \n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n \n setPosition({\n x: Math.min(Math.max(newX, 0), windowWidth - 50),\n y: Math.min(Math.max(newY, 0), windowHeight - 50)\n });\n };\n \n const handleMouseUp = () => {\n setIsDragging(false);\n \n // 重置鼠标按下位置\n mouseDownPosRef.current = null;\n \n // 设置一个短暂的延时,防止拖动后立即触发点击\n if (dragTimerRef.current) {\n window.clearTimeout(dragTimerRef.current);\n }\n \n dragTimerRef.current = window.setTimeout(() => {\n setHasDragged(false);\n }, 300); // 300ms 后重置拖动状态\n };\n \n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n \n return () => {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n }, [isDragging, dragOffset]);\n\n // 清理定时器\n useEffect(() => {\n return () => {\n if (dragTimerRef.current) {\n window.clearTimeout(dragTimerRef.current);\n }\n };\n }, []);\n\n // 切换菜单开关\n const toggleMenu = (e: React.MouseEvent) => {\n e.stopPropagation();\n \n // 如果刚刚拖动过,不触发菜单切换\n if (hasDragged) {\n return;\n }\n \n setIsMenuOpen(!isMenuOpen);\n };\n\n // 关闭菜单的点击外部处理\n useEffect(() => {\n if (!isMenuOpen) return;\n \n const handleClickOutside = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setIsMenuOpen(false);\n }\n };\n \n document.addEventListener('mousedown', handleClickOutside);\n \n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [isMenuOpen]);\n\n // 窗口大小变化时的边界检查\n useEffect(() => {\n if (!mounted) return;\n \n const checkBoundaries = () => {\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n \n // 确保悬浮窗不会被拖出屏幕\n setPosition(prev => {\n const newX = Math.min(Math.max(prev.x, 0), windowWidth - 50);\n const newY = Math.min(Math.max(prev.y, 0), windowHeight - 50);\n \n // 只有在实际需要调整时才更新位置\n if (newX !== prev.x || newY !== prev.y) {\n return { x: newX, y: newY };\n }\n return prev;\n });\n };\n \n // 只在窗口大小变化时检查边界\n window.addEventListener('resize', checkBoundaries);\n \n return () => {\n window.removeEventListener('resize', checkBoundaries);\n };\n }, [mounted]);\n\n if (!mounted) return null;\n\n return createPortal(\n <div\n ref={containerRef}\n className={clsx('fixed select-none box-border', className)}\n style={{\n left: (position.x) + 'px',\n top: (position.y) + 'px',\n zIndex,\n }}\n >\n {/* 触发器按钮 */}\n <div \n className={clsx(\n 'flex items-center justify-center w-12 h-12 md:w-12 md:h-12 bg-white rounded-full shadow-md hover:shadow-lg cursor-grab active:cursor-grabbing transition-all duration-200 hover:scale-105 active:scale-95',\n triggerClassName\n )}\n onMouseDown={handleMouseDown}\n onClick={toggleMenu}\n >\n {trigger}\n </div>\n \n {/* 菜单内容 */}\n {isMenuOpen && (\n <div \n className={clsx(\n 'absolute top-0 bg-white rounded-lg shadow-xl p-3 min-w-[200px] md:min-w-[200px] max-w-[300px] z-[1000] transition-all duration-200',\n isMenuOpen ? 'opacity-100 scale-100' : 'opacity-0 scale-95',\n menuDirection === 'left' ? 'right-[calc(100%+10px)]' : 'left-[calc(100%+10px)]',\n menuClassName\n )}\n onClick={(e) => e.stopPropagation()}\n onMouseDown={(e) => e.stopPropagation()}\n onMouseUp={(e) => e.stopPropagation()}\n onTouchStart={(e) => e.stopPropagation()}\n onTouchMove={(e) => e.stopPropagation()}\n onTouchEnd={(e) => e.stopPropagation()}\n onPointerDown={(e) => e.stopPropagation()}\n onPointerUp={(e) => e.stopPropagation()}\n >\n {menu}\n </div>\n )}\n </div>,\n document.body\n );\n};\n\nexport default FloatingMenu;","'use client';\n\nimport React, { useState, useEffect } from 'react';\nimport FloatingMenu from './FloatingMenu';\n\nexport const FloatingMenuExample: React.FC = () => {\n const [windowWidth, setWindowWidth] = useState(0);\n \n useEffect(() => {\n setWindowWidth(window.innerWidth);\n const handleResize = () => setWindowWidth(window.innerWidth);\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n const menuItems = [\n { id: 1, label: '首页', icon: '🏠' },\n { id: 2, label: '设置', icon: '⚙️' },\n { id: 3, label: '消息', icon: '📩' },\n { id: 4, label: '帮助', icon: '❓' },\n { id: 5, label: '退出', icon: '🚪' },\n ];\n \n const handleMenuItemClick = (id: number) => {\n console.log('点击了菜单项: ' + (id));\n };\n \n return (\n <div className=\"w-full h-screen bg-gray-100 relative p-8\">\n <div className=\"max-w-2xl mx-auto bg-white rounded-2xl shadow-sm p-8 mt-12\">\n <h1 className=\"text-3xl font-bold mb-4 text-gray-900\">悬浮菜单示例</h1>\n <p className=\"text-gray-600 leading-relaxed mb-6\">\n 这是一个可拖拽的悬浮菜单组件示例。你可以尝试拖动下方的 <span className=\"font-bold text-blue-600\">蓝色按钮</span> 到处移动。\n </p>\n <div className=\"bg-blue-50 border-l-4 border-blue-500 p-4 mb-6\">\n <p className=\"text-sm text-blue-700\">\n <strong>智能定位:</strong> 菜单会根据按钮在屏幕上的位置自动调整弹出方向(向左或向右)。\n </p>\n </div>\n </div>\n \n <FloatingMenu\n trigger={\n <div className=\"w-12 h-12 bg-blue-600 rounded-full flex items-center justify-center text-white shadow-lg cursor-pointer\">\n <span className=\"text-xl\">➕</span>\n </div>\n }\n menu={\n <div className=\"w-48 bg-white rounded-xl shadow-xl border border-gray-100 overflow-hidden\">\n <div className=\"px-4 py-3 border-b border-gray-100\">\n <h3 className=\"text-sm font-bold text-gray-900\">快捷菜单</h3>\n </div>\n <ul className=\"py-1\">\n {menuItems.map(item => (\n <li \n key={item.id} \n className=\"flex items-center gap-3 px-4 py-2.5 hover:bg-blue-50 text-gray-700 hover:text-blue-600 cursor-pointer transition-colors text-sm\"\n onClick={() => handleMenuItemClick(item.id)}\n >\n <span className=\"text-lg\">{item.icon}</span>\n <span className=\"font-medium\">{item.label}</span>\n </li>\n ))}\n </ul>\n </div>\n }\n initialPosition={{ x: 100, y: 100 }}\n />\n \n {windowWidth > 0 && (\n <FloatingMenu\n trigger={\n <div className=\"w-12 h-12 bg-purple-600 rounded-full flex items-center justify-center text-white shadow-lg cursor-pointer\">\n <span className=\"text-xl\">🔍</span>\n </div>\n }\n menu={\n <div className=\"w-64 bg-white rounded-xl shadow-xl border border-gray-100 p-4\">\n <h3 className=\"text-sm font-bold text-gray-900 mb-3\">快速搜索</h3>\n <div className=\"space-y-3\">\n <input \n type=\"text\" \n placeholder=\"输入关键字...\" \n className=\"w-full px-3 py-2 text-sm border border-gray-200 rounded-lg focus:ring-2 focus:ring-purple-500 focus:border-transparent outline-none\"\n />\n <button className=\"w-full bg-purple-600 text-white py-2 rounded-lg text-sm font-medium hover:bg-purple-700 transition-colors\">\n 搜索\n </button>\n </div>\n </div>\n }\n initialPosition={{ x: windowWidth - 100, y: 100 }}\n />\n )}\n </div>\n );\n};\n\nexport default FloatingMenuExample;\n\n"]}
@@ -1,443 +0,0 @@
1
- import React5, { useState, useRef, useEffect } from 'react';
2
- import { clsx } from 'clsx';
3
- import { createPortal } from 'react-dom';
4
-
5
- // src/navigation/Navigation.tsx
6
- var NavigationItemComponent = ({
7
- item,
8
- direction,
9
- isActive,
10
- onClick
11
- }) => {
12
- const handleClick = (e) => {
13
- e.preventDefault();
14
- onClick(item);
15
- };
16
- const getItemClasses = () => {
17
- const baseClasses = `
18
- group relative flex items-center gap-3
19
- transition-all duration-300 ease-in-out
20
- focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-opacity-50
21
- rounded-lg
22
- `;
23
- const directionClasses = direction === "vertical" ? "px-4 py-3 w-full justify-start" : "px-3 py-2 justify-center";
24
- const stateClasses = isActive ? "bg-blue-500 text-white shadow-lg" : item.isExternal ? "text-gray-700 hover:bg-purple-50 hover:text-purple-600 border border-purple-200" : "text-gray-700 hover:bg-blue-50 hover:text-blue-600";
25
- return baseClasses + " " + directionClasses + " " + stateClasses;
26
- };
27
- return /* @__PURE__ */ React5.createElement(
28
- "a",
29
- {
30
- href: item.href,
31
- onClick: handleClick,
32
- target: item.target,
33
- rel: item.isExternal ? "noopener noreferrer" : void 0,
34
- className: getItemClasses()
35
- },
36
- item.icon && /* @__PURE__ */ React5.createElement("span", { className: "flex-shrink-0" }, item.icon),
37
- /* @__PURE__ */ React5.createElement("span", { className: clsx("font-medium", direction === "vertical" ? "text-sm" : "text-xs") }, item.label),
38
- item.isExternal && /* @__PURE__ */ React5.createElement(
39
- "svg",
40
- {
41
- className: "w-3 h-3 opacity-60 group-hover:opacity-100 transition-opacity",
42
- fill: "none",
43
- stroke: "currentColor",
44
- viewBox: "0 0 24 24"
45
- },
46
- /* @__PURE__ */ React5.createElement(
47
- "path",
48
- {
49
- strokeLinecap: "round",
50
- strokeLinejoin: "round",
51
- strokeWidth: 2,
52
- d: "M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"
53
- }
54
- )
55
- ),
56
- direction === "vertical" && isActive && /* @__PURE__ */ React5.createElement("div", { className: "absolute left-1 top-1/2 transform -translate-y-1/2 w-1 h-6 bg-white rounded-full" })
57
- );
58
- };
59
- var NavigationItem_default = NavigationItemComponent;
60
- var Navigation = ({
61
- config,
62
- isOpen,
63
- activeItemId,
64
- onItemClick,
65
- className = ""
66
- }) => {
67
- const { direction, position, items, avatar, logo } = config;
68
- const getContainerClasses = () => {
69
- const baseClasses = `
70
- fixed z-[90]
71
- bg-white/95 backdrop-blur-lg
72
- border border-gray-200/50
73
- shadow-2xl
74
- transition-all duration-500 ease-in-out
75
- `;
76
- if (direction === "vertical") {
77
- const verticalClasses = "h-screen w-64 flex flex-col";
78
- const positionClasses = position === "left" ? "left-0 top-0 " + (isOpen ? "translate-x-0" : "-translate-x-full") : "right-0 top-0 " + (isOpen ? "translate-x-0" : "translate-x-full");
79
- return baseClasses + " " + verticalClasses + " " + positionClasses;
80
- } else {
81
- const horizontalClasses = "w-full h-16 flex items-center";
82
- const positionClasses = position === "top" ? "top-0 left-0 right-0 " + (isOpen ? "translate-y-0" : "-translate-y-full") : "bottom-0 left-0 right-0 " + (isOpen ? "translate-y-0" : "translate-y-full");
83
- return baseClasses + " " + horizontalClasses + " " + positionClasses;
84
- }
85
- };
86
- const getContentClasses = () => {
87
- if (direction === "vertical") {
88
- return "flex flex-col h-full p-4";
89
- } else {
90
- return "flex items-center justify-between w-full px-6";
91
- }
92
- };
93
- const getItemsListClasses = () => {
94
- if (direction === "vertical") {
95
- return "flex flex-col gap-2 flex-1 overflow-y-auto mt-4";
96
- } else {
97
- return "flex items-center gap-4";
98
- }
99
- };
100
- const handleItemClick = (item) => {
101
- if (item.isExternal) {
102
- window.open(item.href, item.target || "_blank");
103
- } else if (item.href.startsWith("#")) {
104
- const element = document.getElementById(item.id);
105
- if (element) {
106
- element.scrollIntoView({ behavior: "smooth" });
107
- }
108
- } else {
109
- window.location.href = item.href;
110
- }
111
- onItemClick?.(item);
112
- };
113
- if (!isOpen) return null;
114
- return /* @__PURE__ */ React5.createElement("nav", { className: clsx(getContainerClasses(), className) }, /* @__PURE__ */ React5.createElement("div", { className: getContentClasses() }, logo && /* @__PURE__ */ React5.createElement("div", { className: "flex items-center justify-center mb-4" }, /* @__PURE__ */ React5.createElement(
115
- "img",
116
- {
117
- src: logo.src,
118
- alt: logo.alt || "Logo",
119
- className: "h-8 w-auto"
120
- }
121
- )), direction === "vertical" && /* @__PURE__ */ React5.createElement("div", { className: "h-12 flex-shrink-0" }), /* @__PURE__ */ React5.createElement("div", { className: getItemsListClasses() }, items.map((item) => /* @__PURE__ */ React5.createElement(
122
- NavigationItem_default,
123
- {
124
- key: item.id,
125
- item,
126
- direction,
127
- isActive: activeItemId === item.id,
128
- onClick: handleItemClick
129
- }
130
- ))), avatar && direction === "vertical" && /* @__PURE__ */ React5.createElement("div", { className: "flex items-center justify-center mt-auto pt-4" }, /* @__PURE__ */ React5.createElement(
131
- "img",
132
- {
133
- src: avatar.src,
134
- alt: avatar.alt || "Avatar",
135
- className: "w-10 h-10 rounded-full border-2 border-gray-200"
136
- }
137
- )), avatar && direction === "horizontal" && /* @__PURE__ */ React5.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React5.createElement(
138
- "img",
139
- {
140
- src: avatar.src,
141
- alt: avatar.alt || "Avatar",
142
- className: "w-8 h-8 rounded-full border-2 border-gray-200"
143
- }
144
- ))));
145
- };
146
- var Navigation_default = Navigation;
147
- var NavigationToggle = ({
148
- isOpen,
149
- onClick,
150
- position
151
- }) => {
152
- const getPositionClasses = () => {
153
- switch (position) {
154
- case "top":
155
- return "top-4 left-4";
156
- case "bottom":
157
- return "bottom-4 left-4";
158
- case "left":
159
- return "top-4 left-4";
160
- case "right":
161
- return "top-4 right-4";
162
- default:
163
- return "top-4 left-4";
164
- }
165
- };
166
- return /* @__PURE__ */ React5.createElement(
167
- "button",
168
- {
169
- onClick,
170
- className: clsx(
171
- "fixed",
172
- getPositionClasses(),
173
- "z-[100] p-3 rounded-xl bg-white/90 backdrop-blur-md shadow-lg hover:shadow-xl border border-gray-200/50 transition-all duration-300 ease-in-out hover:scale-105 active:scale-95 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-opacity-50"
174
- ),
175
- "aria-label": isOpen ? "\u5173\u95ED\u5BFC\u822A\u680F" : "\u6253\u5F00\u5BFC\u822A\u680F"
176
- },
177
- /* @__PURE__ */ React5.createElement("div", { className: "w-5 h-5 flex flex-col justify-center items-center" }, /* @__PURE__ */ React5.createElement(
178
- "span",
179
- {
180
- className: clsx(
181
- "block w-5 h-0.5 bg-gray-600 rounded-full transform transition-all duration-300 ease-in-out",
182
- isOpen ? "rotate-45 translate-y-0.5" : ""
183
- )
184
- }
185
- ), /* @__PURE__ */ React5.createElement(
186
- "span",
187
- {
188
- className: clsx(
189
- "block w-5 h-0.5 bg-gray-600 rounded-full transform transition-all duration-300 ease-in-out mt-1",
190
- isOpen ? "opacity-0 scale-0" : "opacity-100 scale-100"
191
- )
192
- }
193
- ), /* @__PURE__ */ React5.createElement(
194
- "span",
195
- {
196
- className: clsx(
197
- "block w-5 h-0.5 bg-gray-600 rounded-full transform transition-all duration-300 ease-in-out mt-1",
198
- isOpen ? "-rotate-45 -translate-y-2.5" : ""
199
- )
200
- }
201
- ))
202
- );
203
- };
204
- var NavigationToggle_default = NavigationToggle;
205
- var FloatingMenu = ({
206
- trigger,
207
- menu,
208
- initialPosition = { x: 20, y: 20 },
209
- defaultOpen = false,
210
- className = "",
211
- menuClassName = "",
212
- triggerClassName = "",
213
- zIndex = 1e3
214
- }) => {
215
- const [position, setPosition] = useState(initialPosition);
216
- const [isMenuOpen, setIsMenuOpen] = useState(defaultOpen);
217
- const [menuDirection, setMenuDirection] = useState("right");
218
- const [isDragging, setIsDragging] = useState(false);
219
- const [dragOffset, setDragOffset] = useState({ x: 0, y: 0 });
220
- const containerRef = useRef(null);
221
- const [mounted, setMounted] = useState(false);
222
- const [hasDragged, setHasDragged] = useState(false);
223
- const dragTimerRef = useRef(null);
224
- const mouseDownPosRef = useRef(null);
225
- useEffect(() => {
226
- setMounted(true);
227
- return () => setMounted(false);
228
- }, []);
229
- useEffect(() => {
230
- if (!mounted || !containerRef.current) return;
231
- const updateMenuDirection = () => {
232
- const rect = containerRef.current?.getBoundingClientRect();
233
- if (!rect) return;
234
- const windowWidth = window.innerWidth;
235
- const middlePoint = windowWidth / 2;
236
- setMenuDirection(rect.left < middlePoint ? "right" : "left");
237
- };
238
- updateMenuDirection();
239
- window.addEventListener("resize", updateMenuDirection);
240
- window.addEventListener("scroll", updateMenuDirection);
241
- return () => {
242
- window.removeEventListener("resize", updateMenuDirection);
243
- window.removeEventListener("scroll", updateMenuDirection);
244
- };
245
- }, [mounted]);
246
- const handleMouseDown = (e) => {
247
- if (!containerRef.current) return;
248
- e.stopPropagation();
249
- mouseDownPosRef.current = { x: e.clientX, y: e.clientY };
250
- const rect = containerRef.current.getBoundingClientRect();
251
- setDragOffset({
252
- x: e.clientX - rect.left,
253
- y: e.clientY - rect.top
254
- });
255
- setHasDragged(false);
256
- setIsDragging(true);
257
- };
258
- useEffect(() => {
259
- if (!isDragging) return;
260
- const handleMouseMove = (e) => {
261
- if (mouseDownPosRef.current) {
262
- const dx = Math.abs(e.clientX - mouseDownPosRef.current.x);
263
- const dy = Math.abs(e.clientY - mouseDownPosRef.current.y);
264
- if (dx > 3 || dy > 3) {
265
- setHasDragged(true);
266
- }
267
- }
268
- const newX = e.clientX - dragOffset.x;
269
- const newY = e.clientY - dragOffset.y;
270
- const windowWidth = window.innerWidth;
271
- const windowHeight = window.innerHeight;
272
- setPosition({
273
- x: Math.min(Math.max(newX, 0), windowWidth - 50),
274
- y: Math.min(Math.max(newY, 0), windowHeight - 50)
275
- });
276
- };
277
- const handleMouseUp = () => {
278
- setIsDragging(false);
279
- mouseDownPosRef.current = null;
280
- if (dragTimerRef.current) {
281
- window.clearTimeout(dragTimerRef.current);
282
- }
283
- dragTimerRef.current = window.setTimeout(() => {
284
- setHasDragged(false);
285
- }, 300);
286
- };
287
- document.addEventListener("mousemove", handleMouseMove);
288
- document.addEventListener("mouseup", handleMouseUp);
289
- return () => {
290
- document.removeEventListener("mousemove", handleMouseMove);
291
- document.removeEventListener("mouseup", handleMouseUp);
292
- };
293
- }, [isDragging, dragOffset]);
294
- useEffect(() => {
295
- return () => {
296
- if (dragTimerRef.current) {
297
- window.clearTimeout(dragTimerRef.current);
298
- }
299
- };
300
- }, []);
301
- const toggleMenu = (e) => {
302
- e.stopPropagation();
303
- if (hasDragged) {
304
- return;
305
- }
306
- setIsMenuOpen(!isMenuOpen);
307
- };
308
- useEffect(() => {
309
- if (!isMenuOpen) return;
310
- const handleClickOutside = (e) => {
311
- if (containerRef.current && !containerRef.current.contains(e.target)) {
312
- setIsMenuOpen(false);
313
- }
314
- };
315
- document.addEventListener("mousedown", handleClickOutside);
316
- return () => {
317
- document.removeEventListener("mousedown", handleClickOutside);
318
- };
319
- }, [isMenuOpen]);
320
- useEffect(() => {
321
- if (!mounted) return;
322
- const checkBoundaries = () => {
323
- const windowWidth = window.innerWidth;
324
- const windowHeight = window.innerHeight;
325
- setPosition((prev) => {
326
- const newX = Math.min(Math.max(prev.x, 0), windowWidth - 50);
327
- const newY = Math.min(Math.max(prev.y, 0), windowHeight - 50);
328
- if (newX !== prev.x || newY !== prev.y) {
329
- return { x: newX, y: newY };
330
- }
331
- return prev;
332
- });
333
- };
334
- window.addEventListener("resize", checkBoundaries);
335
- return () => {
336
- window.removeEventListener("resize", checkBoundaries);
337
- };
338
- }, [mounted]);
339
- if (!mounted) return null;
340
- return createPortal(
341
- /* @__PURE__ */ React5.createElement(
342
- "div",
343
- {
344
- ref: containerRef,
345
- className: clsx("fixed select-none box-border", className),
346
- style: {
347
- left: position.x + "px",
348
- top: position.y + "px",
349
- zIndex
350
- }
351
- },
352
- /* @__PURE__ */ React5.createElement(
353
- "div",
354
- {
355
- className: clsx(
356
- "flex items-center justify-center w-12 h-12 md:w-12 md:h-12 bg-white rounded-full shadow-md hover:shadow-lg cursor-grab active:cursor-grabbing transition-all duration-200 hover:scale-105 active:scale-95",
357
- triggerClassName
358
- ),
359
- onMouseDown: handleMouseDown,
360
- onClick: toggleMenu
361
- },
362
- trigger
363
- ),
364
- isMenuOpen && /* @__PURE__ */ React5.createElement(
365
- "div",
366
- {
367
- className: clsx(
368
- "absolute top-0 bg-white rounded-lg shadow-xl p-3 min-w-[200px] md:min-w-[200px] max-w-[300px] z-[1000] transition-all duration-200",
369
- isMenuOpen ? "opacity-100 scale-100" : "opacity-0 scale-95",
370
- menuDirection === "left" ? "right-[calc(100%+10px)]" : "left-[calc(100%+10px)]",
371
- menuClassName
372
- ),
373
- onClick: (e) => e.stopPropagation(),
374
- onMouseDown: (e) => e.stopPropagation(),
375
- onMouseUp: (e) => e.stopPropagation(),
376
- onTouchStart: (e) => e.stopPropagation(),
377
- onTouchMove: (e) => e.stopPropagation(),
378
- onTouchEnd: (e) => e.stopPropagation(),
379
- onPointerDown: (e) => e.stopPropagation(),
380
- onPointerUp: (e) => e.stopPropagation()
381
- },
382
- menu
383
- )
384
- ),
385
- document.body
386
- );
387
- };
388
- var FloatingMenu_default = FloatingMenu;
389
- var FloatingMenuExample = () => {
390
- const [windowWidth, setWindowWidth] = useState(0);
391
- useEffect(() => {
392
- setWindowWidth(window.innerWidth);
393
- const handleResize = () => setWindowWidth(window.innerWidth);
394
- window.addEventListener("resize", handleResize);
395
- return () => window.removeEventListener("resize", handleResize);
396
- }, []);
397
- const menuItems = [
398
- { id: 1, label: "\u9996\u9875", icon: "\u{1F3E0}" },
399
- { id: 2, label: "\u8BBE\u7F6E", icon: "\u2699\uFE0F" },
400
- { id: 3, label: "\u6D88\u606F", icon: "\u{1F4E9}" },
401
- { id: 4, label: "\u5E2E\u52A9", icon: "\u2753" },
402
- { id: 5, label: "\u9000\u51FA", icon: "\u{1F6AA}" }
403
- ];
404
- const handleMenuItemClick = (id) => {
405
- console.log("\u70B9\u51FB\u4E86\u83DC\u5355\u9879: " + id);
406
- };
407
- return /* @__PURE__ */ React5.createElement("div", { className: "w-full h-screen bg-gray-100 relative p-8" }, /* @__PURE__ */ React5.createElement("div", { className: "max-w-2xl mx-auto bg-white rounded-2xl shadow-sm p-8 mt-12" }, /* @__PURE__ */ React5.createElement("h1", { className: "text-3xl font-bold mb-4 text-gray-900" }, "\u60AC\u6D6E\u83DC\u5355\u793A\u4F8B"), /* @__PURE__ */ React5.createElement("p", { className: "text-gray-600 leading-relaxed mb-6" }, "\u8FD9\u662F\u4E00\u4E2A\u53EF\u62D6\u62FD\u7684\u60AC\u6D6E\u83DC\u5355\u7EC4\u4EF6\u793A\u4F8B\u3002\u4F60\u53EF\u4EE5\u5C1D\u8BD5\u62D6\u52A8\u4E0B\u65B9\u7684 ", /* @__PURE__ */ React5.createElement("span", { className: "font-bold text-blue-600" }, "\u84DD\u8272\u6309\u94AE"), " \u5230\u5904\u79FB\u52A8\u3002"), /* @__PURE__ */ React5.createElement("div", { className: "bg-blue-50 border-l-4 border-blue-500 p-4 mb-6" }, /* @__PURE__ */ React5.createElement("p", { className: "text-sm text-blue-700" }, /* @__PURE__ */ React5.createElement("strong", null, "\u667A\u80FD\u5B9A\u4F4D\uFF1A"), " \u83DC\u5355\u4F1A\u6839\u636E\u6309\u94AE\u5728\u5C4F\u5E55\u4E0A\u7684\u4F4D\u7F6E\u81EA\u52A8\u8C03\u6574\u5F39\u51FA\u65B9\u5411\uFF08\u5411\u5DE6\u6216\u5411\u53F3\uFF09\u3002"))), /* @__PURE__ */ React5.createElement(
408
- FloatingMenu_default,
409
- {
410
- trigger: /* @__PURE__ */ React5.createElement("div", { className: "w-12 h-12 bg-blue-600 rounded-full flex items-center justify-center text-white shadow-lg cursor-pointer" }, /* @__PURE__ */ React5.createElement("span", { className: "text-xl" }, "\u2795")),
411
- menu: /* @__PURE__ */ React5.createElement("div", { className: "w-48 bg-white rounded-xl shadow-xl border border-gray-100 overflow-hidden" }, /* @__PURE__ */ React5.createElement("div", { className: "px-4 py-3 border-b border-gray-100" }, /* @__PURE__ */ React5.createElement("h3", { className: "text-sm font-bold text-gray-900" }, "\u5FEB\u6377\u83DC\u5355")), /* @__PURE__ */ React5.createElement("ul", { className: "py-1" }, menuItems.map((item) => /* @__PURE__ */ React5.createElement(
412
- "li",
413
- {
414
- key: item.id,
415
- className: "flex items-center gap-3 px-4 py-2.5 hover:bg-blue-50 text-gray-700 hover:text-blue-600 cursor-pointer transition-colors text-sm",
416
- onClick: () => handleMenuItemClick(item.id)
417
- },
418
- /* @__PURE__ */ React5.createElement("span", { className: "text-lg" }, item.icon),
419
- /* @__PURE__ */ React5.createElement("span", { className: "font-medium" }, item.label)
420
- )))),
421
- initialPosition: { x: 100, y: 100 }
422
- }
423
- ), windowWidth > 0 && /* @__PURE__ */ React5.createElement(
424
- FloatingMenu_default,
425
- {
426
- trigger: /* @__PURE__ */ React5.createElement("div", { className: "w-12 h-12 bg-purple-600 rounded-full flex items-center justify-center text-white shadow-lg cursor-pointer" }, /* @__PURE__ */ React5.createElement("span", { className: "text-xl" }, "\u{1F50D}")),
427
- menu: /* @__PURE__ */ React5.createElement("div", { className: "w-64 bg-white rounded-xl shadow-xl border border-gray-100 p-4" }, /* @__PURE__ */ React5.createElement("h3", { className: "text-sm font-bold text-gray-900 mb-3" }, "\u5FEB\u901F\u641C\u7D22"), /* @__PURE__ */ React5.createElement("div", { className: "space-y-3" }, /* @__PURE__ */ React5.createElement(
428
- "input",
429
- {
430
- type: "text",
431
- placeholder: "\u8F93\u5165\u5173\u952E\u5B57...",
432
- className: "w-full px-3 py-2 text-sm border border-gray-200 rounded-lg focus:ring-2 focus:ring-purple-500 focus:border-transparent outline-none"
433
- }
434
- ), /* @__PURE__ */ React5.createElement("button", { className: "w-full bg-purple-600 text-white py-2 rounded-lg text-sm font-medium hover:bg-purple-700 transition-colors" }, "\u641C\u7D22"))),
435
- initialPosition: { x: windowWidth - 100, y: 100 }
436
- }
437
- ));
438
- };
439
- var FloatingMenuExample_default = FloatingMenuExample;
440
-
441
- export { FloatingMenu_default as FloatingMenu, FloatingMenuExample_default as FloatingMenuExample, Navigation_default as Navigation, NavigationItem_default as NavigationItem, NavigationToggle_default as NavigationToggle };
442
- //# sourceMappingURL=index.mjs.map
443
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/navigation/NavigationItem.tsx","../../src/navigation/Navigation.tsx","../../src/navigation/NavigationToggle.tsx","../../src/navigation/FloatingMenu.tsx","../../src/navigation/FloatingMenuExample.tsx"],"names":["React","clsx","useState","useEffect"],"mappings":"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","file":"index.mjs","sourcesContent":[" 'use client';\n\nimport React from 'react';\nimport { NavigationItem, NavigationDirection } from './types';\nimport { clsx } from 'clsx';\n\ninterface NavigationItemProps {\n item: NavigationItem;\n direction: NavigationDirection;\n isActive?: boolean;\n onClick: (item: NavigationItem) => void;\n}\n\nconst NavigationItemComponent: React.FC<NavigationItemProps> = ({\n item,\n direction,\n isActive,\n onClick\n}) => {\n const handleClick = (e: React.MouseEvent) => {\n e.preventDefault();\n onClick(item);\n };\n\n const getItemClasses = () => {\n const baseClasses = `\n group relative flex items-center gap-3\n transition-all duration-300 ease-in-out\n focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-opacity-50\n rounded-lg\n `;\n\n const directionClasses = direction === 'vertical'\n ? 'px-4 py-3 w-full justify-start'\n : 'px-3 py-2 justify-center';\n\n const stateClasses = isActive\n ? 'bg-blue-500 text-white shadow-lg'\n : item.isExternal\n ? 'text-gray-700 hover:bg-purple-50 hover:text-purple-600 border border-purple-200'\n : 'text-gray-700 hover:bg-blue-50 hover:text-blue-600';\n\n return (baseClasses) + ' ' + (directionClasses) + ' ' + (stateClasses);\n };\n\n return (\n <a\n href={item.href}\n onClick={handleClick}\n target={item.target}\n rel={item.isExternal ? 'noopener noreferrer' : undefined}\n className={getItemClasses()}\n >\n {/* 图标 */}\n {item.icon && (\n <span className=\"flex-shrink-0\">\n {item.icon}\n </span>\n )}\n\n {/* 标签 */}\n <span className={clsx('font-medium', direction === 'vertical' ? 'text-sm' : 'text-xs')}>\n {item.label}\n </span>\n\n {/* 外链图标 */}\n {item.isExternal && (\n <svg\n className=\"w-3 h-3 opacity-60 group-hover:opacity-100 transition-opacity\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14\"\n />\n </svg>\n )}\n\n {/* 活动状态指示器 */}\n {direction === 'vertical' && isActive && (\n <div className=\"absolute left-1 top-1/2 transform -translate-y-1/2 w-1 h-6 bg-white rounded-full\" />\n )}\n </a>\n );\n};\n\nexport default NavigationItemComponent;"," 'use client';\n\nimport React from 'react';\nimport NavigationItem from './NavigationItem';\nimport { NavigationProps } from './types';\nimport { clsx } from 'clsx';\n\nconst Navigation: React.FC<NavigationProps> = ({\n config,\n isOpen,\n activeItemId,\n onItemClick,\n className = ''\n}) => {\n const { direction, position, items, avatar, logo } = config;\n\n // 获取导航栏位置和尺寸样式\n const getContainerClasses = () => {\n const baseClasses = `\n fixed z-[90]\n bg-white/95 backdrop-blur-lg\n border border-gray-200/50\n shadow-2xl\n transition-all duration-500 ease-in-out\n `;\n\n // 根据方向和位置确定样式\n if (direction === 'vertical') {\n const verticalClasses = 'h-screen w-64 flex flex-col';\n const positionClasses = position === 'left' \n ? 'left-0 top-0 ' + (isOpen ? 'translate-x-0' : '-translate-x-full')\n : 'right-0 top-0 ' + (isOpen ? 'translate-x-0' : 'translate-x-full');\n \n return (baseClasses) + ' ' + (verticalClasses) + ' ' + (positionClasses);\n } else {\n const horizontalClasses = 'w-full h-16 flex items-center';\n const positionClasses = position === 'top'\n ? 'top-0 left-0 right-0 ' + (isOpen ? 'translate-y-0' : '-translate-y-full')\n : 'bottom-0 left-0 right-0 ' + (isOpen ? 'translate-y-0' : 'translate-y-full');\n \n return (baseClasses) + ' ' + (horizontalClasses) + ' ' + (positionClasses);\n }\n };\n\n // 获取内容布局样式\n const getContentClasses = () => {\n if (direction === 'vertical') {\n return 'flex flex-col h-full p-4';\n } else {\n return 'flex items-center justify-between w-full px-6';\n }\n };\n\n // 获取导航项列表样式\n const getItemsListClasses = () => {\n if (direction === 'vertical') {\n return 'flex flex-col gap-2 flex-1 overflow-y-auto mt-4';\n } else {\n return 'flex items-center gap-4';\n }\n };\n\n const handleItemClick = (item: any) => {\n // 处理页面跳转\n if (item.isExternal) {\n // 外链跳转\n window.open(item.href, item.target || '_blank');\n } else if (item.href.startsWith('#')) {\n // 锚点跳转\n const element = document.getElementById(item.id);\n if (element) {\n element.scrollIntoView({ behavior: 'smooth' });\n }\n } else {\n // 内部页面跳转\n window.location.href = item.href;\n }\n\n // 触发回调\n onItemClick?.(item);\n };\n\n if (!isOpen) return null;\n\n return (\n <nav className={clsx(getContainerClasses(), className)}>\n <div className={getContentClasses()}>\n {/* Logo 区域 */}\n {logo && (\n <div className=\"flex items-center justify-center mb-4\">\n <img\n src={logo.src}\n alt={logo.alt || 'Logo'}\n className=\"h-8 w-auto\"\n />\n </div>\n )}\n\n {/* 顶部空间占位(为切换按钮预留) */}\n {direction === 'vertical' && (\n <div className=\"h-12 flex-shrink-0\" />\n )}\n\n {/* 导航项列表 */}\n <div className={getItemsListClasses()}>\n {items.map((item) => (\n <NavigationItem\n key={item.id}\n item={item}\n direction={direction}\n isActive={activeItemId === item.id}\n onClick={handleItemClick}\n />\n ))}\n </div>\n\n {/* 头像区域 */}\n {avatar && direction === 'vertical' && (\n <div className=\"flex items-center justify-center mt-auto pt-4\">\n <img\n src={avatar.src}\n alt={avatar.alt || 'Avatar'}\n className=\"w-10 h-10 rounded-full border-2 border-gray-200\"\n />\n </div>\n )}\n\n {/* 水平布局的头像 */}\n {avatar && direction === 'horizontal' && (\n <div className=\"flex items-center\">\n <img\n src={avatar.src}\n alt={avatar.alt || 'Avatar'}\n className=\"w-8 h-8 rounded-full border-2 border-gray-200\"\n />\n </div>\n )}\n </div>\n </nav>\n );\n};\n\nexport default Navigation;"," 'use client';\n\nimport React from 'react';\nimport { NavigationPosition } from './types';\nimport { clsx } from 'clsx';\n\ninterface NavigationToggleProps {\n isOpen: boolean;\n onClick: () => void;\n position: NavigationPosition;\n}\n\nconst NavigationToggle: React.FC<NavigationToggleProps> = ({\n isOpen,\n onClick,\n position\n}) => {\n const getPositionClasses = () => {\n switch (position) {\n case 'top':\n return 'top-4 left-4';\n case 'bottom':\n return 'bottom-4 left-4';\n case 'left':\n return 'top-4 left-4';\n case 'right':\n return 'top-4 right-4';\n default:\n return 'top-4 left-4';\n }\n };\n\n return (\n <button\n onClick={onClick}\n className={clsx(\n 'fixed',\n getPositionClasses(),\n 'z-[100] p-3 rounded-xl bg-white/90 backdrop-blur-md shadow-lg hover:shadow-xl border border-gray-200/50 transition-all duration-300 ease-in-out hover:scale-105 active:scale-95 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-opacity-50'\n )}\n aria-label={isOpen ? '关闭导航栏' : '打开导航栏'}\n >\n <div className=\"w-5 h-5 flex flex-col justify-center items-center\">\n <span\n className={clsx(\n 'block w-5 h-0.5 bg-gray-600 rounded-full transform transition-all duration-300 ease-in-out',\n isOpen ? 'rotate-45 translate-y-0.5' : ''\n )}\n />\n <span\n className={clsx(\n 'block w-5 h-0.5 bg-gray-600 rounded-full transform transition-all duration-300 ease-in-out mt-1',\n isOpen ? 'opacity-0 scale-0' : 'opacity-100 scale-100'\n )}\n />\n <span\n className={clsx(\n 'block w-5 h-0.5 bg-gray-600 rounded-full transform transition-all duration-300 ease-in-out mt-1',\n isOpen ? '-rotate-45 -translate-y-2.5' : ''\n )}\n />\n </div>\n </button>\n );\n};\n\nexport default NavigationToggle;","'use client';\n\nimport React, { useState, useRef, useEffect, ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\nimport { clsx } from 'clsx';\n\nexport interface FloatingMenuProps {\n /**\n * 触发按钮的内容\n */\n trigger: ReactNode;\n \n /**\n * 菜单内容\n */\n menu: ReactNode;\n \n /**\n * 初始位置\n */\n initialPosition?: { x: number; y: number };\n \n /**\n * 是否默认打开菜单\n */\n defaultOpen?: boolean;\n \n /**\n * 自定义类名\n */\n className?: string;\n \n /**\n * 菜单类名\n */\n menuClassName?: string;\n \n /**\n * 触发器类名\n */\n triggerClassName?: string;\n \n /**\n * z-index\n */\n zIndex?: number;\n}\n\nconst FloatingMenu: React.FC<FloatingMenuProps> = ({\n trigger,\n menu,\n initialPosition = { x: 20, y: 20 },\n defaultOpen = false,\n className = '',\n menuClassName = '',\n triggerClassName = '',\n zIndex = 1000,\n}) => {\n const [position, setPosition] = useState(initialPosition);\n const [isMenuOpen, setIsMenuOpen] = useState(defaultOpen);\n const [menuDirection, setMenuDirection] = useState<'left' | 'right'>('right');\n const [isDragging, setIsDragging] = useState(false);\n const [dragOffset, setDragOffset] = useState({ x: 0, y: 0 });\n const containerRef = useRef<HTMLDivElement>(null);\n const [mounted, setMounted] = useState(false);\n // 添加一个标志,用于跟踪是否发生了拖动\n const [hasDragged, setHasDragged] = useState(false);\n // 添加一个计时器引用,用于区分点击和拖动\n const dragTimerRef = useRef<number | null>(null);\n // 添加一个引用,记录鼠标按下的初始位置\n const mouseDownPosRef = useRef<{ x: number, y: number } | null>(null);\n\n // 客户端挂载检查\n useEffect(() => {\n setMounted(true);\n return () => setMounted(false);\n }, []);\n\n // 计算菜单方向\n useEffect(() => {\n if (!mounted || !containerRef.current) return;\n \n const updateMenuDirection = () => {\n const rect = containerRef.current?.getBoundingClientRect();\n if (!rect) return;\n \n const windowWidth = window.innerWidth;\n const middlePoint = windowWidth / 2;\n \n // 如果悬浮窗在屏幕左半部分,菜单向右展开;否则向左展开\n setMenuDirection(rect.left < middlePoint ? 'right' : 'left');\n };\n \n updateMenuDirection();\n \n // 监听窗口大小变化和滚动事件\n window.addEventListener('resize', updateMenuDirection);\n window.addEventListener('scroll', updateMenuDirection);\n \n return () => {\n window.removeEventListener('resize', updateMenuDirection);\n window.removeEventListener('scroll', updateMenuDirection);\n };\n }, [mounted]);\n\n // 处理拖动开始\n const handleMouseDown = (e: React.MouseEvent) => {\n if (!containerRef.current) return;\n \n // 防止触发菜单点击\n e.stopPropagation();\n \n // 记录鼠标按下的初始位置\n mouseDownPosRef.current = { x: e.clientX, y: e.clientY };\n \n const rect = containerRef.current.getBoundingClientRect();\n setDragOffset({\n x: e.clientX - rect.left,\n y: e.clientY - rect.top\n });\n \n // 重置拖动标志\n setHasDragged(false);\n \n // 设置拖动状态\n setIsDragging(true);\n };\n\n // 处理拖动过程\n useEffect(() => {\n if (!isDragging) return;\n \n const handleMouseMove = (e: MouseEvent) => {\n // 检查是否移动了足够的距离来认为是拖动\n if (mouseDownPosRef.current) {\n const dx = Math.abs(e.clientX - mouseDownPosRef.current.x);\n const dy = Math.abs(e.clientY - mouseDownPosRef.current.y);\n \n // 如果移动距离超过阈值,标记为拖动\n if (dx > 3 || dy > 3) {\n setHasDragged(true);\n }\n }\n \n // 计算新位置并应用边界检查\n const newX = e.clientX - dragOffset.x;\n const newY = e.clientY - dragOffset.y;\n \n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n \n setPosition({\n x: Math.min(Math.max(newX, 0), windowWidth - 50),\n y: Math.min(Math.max(newY, 0), windowHeight - 50)\n });\n };\n \n const handleMouseUp = () => {\n setIsDragging(false);\n \n // 重置鼠标按下位置\n mouseDownPosRef.current = null;\n \n // 设置一个短暂的延时,防止拖动后立即触发点击\n if (dragTimerRef.current) {\n window.clearTimeout(dragTimerRef.current);\n }\n \n dragTimerRef.current = window.setTimeout(() => {\n setHasDragged(false);\n }, 300); // 300ms 后重置拖动状态\n };\n \n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n \n return () => {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n }, [isDragging, dragOffset]);\n\n // 清理定时器\n useEffect(() => {\n return () => {\n if (dragTimerRef.current) {\n window.clearTimeout(dragTimerRef.current);\n }\n };\n }, []);\n\n // 切换菜单开关\n const toggleMenu = (e: React.MouseEvent) => {\n e.stopPropagation();\n \n // 如果刚刚拖动过,不触发菜单切换\n if (hasDragged) {\n return;\n }\n \n setIsMenuOpen(!isMenuOpen);\n };\n\n // 关闭菜单的点击外部处理\n useEffect(() => {\n if (!isMenuOpen) return;\n \n const handleClickOutside = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setIsMenuOpen(false);\n }\n };\n \n document.addEventListener('mousedown', handleClickOutside);\n \n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [isMenuOpen]);\n\n // 窗口大小变化时的边界检查\n useEffect(() => {\n if (!mounted) return;\n \n const checkBoundaries = () => {\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n \n // 确保悬浮窗不会被拖出屏幕\n setPosition(prev => {\n const newX = Math.min(Math.max(prev.x, 0), windowWidth - 50);\n const newY = Math.min(Math.max(prev.y, 0), windowHeight - 50);\n \n // 只有在实际需要调整时才更新位置\n if (newX !== prev.x || newY !== prev.y) {\n return { x: newX, y: newY };\n }\n return prev;\n });\n };\n \n // 只在窗口大小变化时检查边界\n window.addEventListener('resize', checkBoundaries);\n \n return () => {\n window.removeEventListener('resize', checkBoundaries);\n };\n }, [mounted]);\n\n if (!mounted) return null;\n\n return createPortal(\n <div\n ref={containerRef}\n className={clsx('fixed select-none box-border', className)}\n style={{\n left: (position.x) + 'px',\n top: (position.y) + 'px',\n zIndex,\n }}\n >\n {/* 触发器按钮 */}\n <div \n className={clsx(\n 'flex items-center justify-center w-12 h-12 md:w-12 md:h-12 bg-white rounded-full shadow-md hover:shadow-lg cursor-grab active:cursor-grabbing transition-all duration-200 hover:scale-105 active:scale-95',\n triggerClassName\n )}\n onMouseDown={handleMouseDown}\n onClick={toggleMenu}\n >\n {trigger}\n </div>\n \n {/* 菜单内容 */}\n {isMenuOpen && (\n <div \n className={clsx(\n 'absolute top-0 bg-white rounded-lg shadow-xl p-3 min-w-[200px] md:min-w-[200px] max-w-[300px] z-[1000] transition-all duration-200',\n isMenuOpen ? 'opacity-100 scale-100' : 'opacity-0 scale-95',\n menuDirection === 'left' ? 'right-[calc(100%+10px)]' : 'left-[calc(100%+10px)]',\n menuClassName\n )}\n onClick={(e) => e.stopPropagation()}\n onMouseDown={(e) => e.stopPropagation()}\n onMouseUp={(e) => e.stopPropagation()}\n onTouchStart={(e) => e.stopPropagation()}\n onTouchMove={(e) => e.stopPropagation()}\n onTouchEnd={(e) => e.stopPropagation()}\n onPointerDown={(e) => e.stopPropagation()}\n onPointerUp={(e) => e.stopPropagation()}\n >\n {menu}\n </div>\n )}\n </div>,\n document.body\n );\n};\n\nexport default FloatingMenu;","'use client';\n\nimport React, { useState, useEffect } from 'react';\nimport FloatingMenu from './FloatingMenu';\n\nexport const FloatingMenuExample: React.FC = () => {\n const [windowWidth, setWindowWidth] = useState(0);\n \n useEffect(() => {\n setWindowWidth(window.innerWidth);\n const handleResize = () => setWindowWidth(window.innerWidth);\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n const menuItems = [\n { id: 1, label: '首页', icon: '🏠' },\n { id: 2, label: '设置', icon: '⚙️' },\n { id: 3, label: '消息', icon: '📩' },\n { id: 4, label: '帮助', icon: '❓' },\n { id: 5, label: '退出', icon: '🚪' },\n ];\n \n const handleMenuItemClick = (id: number) => {\n console.log('点击了菜单项: ' + (id));\n };\n \n return (\n <div className=\"w-full h-screen bg-gray-100 relative p-8\">\n <div className=\"max-w-2xl mx-auto bg-white rounded-2xl shadow-sm p-8 mt-12\">\n <h1 className=\"text-3xl font-bold mb-4 text-gray-900\">悬浮菜单示例</h1>\n <p className=\"text-gray-600 leading-relaxed mb-6\">\n 这是一个可拖拽的悬浮菜单组件示例。你可以尝试拖动下方的 <span className=\"font-bold text-blue-600\">蓝色按钮</span> 到处移动。\n </p>\n <div className=\"bg-blue-50 border-l-4 border-blue-500 p-4 mb-6\">\n <p className=\"text-sm text-blue-700\">\n <strong>智能定位:</strong> 菜单会根据按钮在屏幕上的位置自动调整弹出方向(向左或向右)。\n </p>\n </div>\n </div>\n \n <FloatingMenu\n trigger={\n <div className=\"w-12 h-12 bg-blue-600 rounded-full flex items-center justify-center text-white shadow-lg cursor-pointer\">\n <span className=\"text-xl\">➕</span>\n </div>\n }\n menu={\n <div className=\"w-48 bg-white rounded-xl shadow-xl border border-gray-100 overflow-hidden\">\n <div className=\"px-4 py-3 border-b border-gray-100\">\n <h3 className=\"text-sm font-bold text-gray-900\">快捷菜单</h3>\n </div>\n <ul className=\"py-1\">\n {menuItems.map(item => (\n <li \n key={item.id} \n className=\"flex items-center gap-3 px-4 py-2.5 hover:bg-blue-50 text-gray-700 hover:text-blue-600 cursor-pointer transition-colors text-sm\"\n onClick={() => handleMenuItemClick(item.id)}\n >\n <span className=\"text-lg\">{item.icon}</span>\n <span className=\"font-medium\">{item.label}</span>\n </li>\n ))}\n </ul>\n </div>\n }\n initialPosition={{ x: 100, y: 100 }}\n />\n \n {windowWidth > 0 && (\n <FloatingMenu\n trigger={\n <div className=\"w-12 h-12 bg-purple-600 rounded-full flex items-center justify-center text-white shadow-lg cursor-pointer\">\n <span className=\"text-xl\">🔍</span>\n </div>\n }\n menu={\n <div className=\"w-64 bg-white rounded-xl shadow-xl border border-gray-100 p-4\">\n <h3 className=\"text-sm font-bold text-gray-900 mb-3\">快速搜索</h3>\n <div className=\"space-y-3\">\n <input \n type=\"text\" \n placeholder=\"输入关键字...\" \n className=\"w-full px-3 py-2 text-sm border border-gray-200 rounded-lg focus:ring-2 focus:ring-purple-500 focus:border-transparent outline-none\"\n />\n <button className=\"w-full bg-purple-600 text-white py-2 rounded-lg text-sm font-medium hover:bg-purple-700 transition-colors\">\n 搜索\n </button>\n </div>\n </div>\n }\n initialPosition={{ x: windowWidth - 100, y: 100 }}\n />\n )}\n </div>\n );\n};\n\nexport default FloatingMenuExample;\n\n"]}