react-public-components 1.2.2 → 1.2.4

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 (368) hide show
  1. package/dist/ActivityLog/index.cjs +2 -2
  2. package/dist/ActivityLog/index.js +1 -1
  3. package/dist/AudioPlayer/index.cjs +3 -3
  4. package/dist/AudioPlayer/index.js +2 -2
  5. package/dist/CascadeDrawer/index.cjs +2 -2
  6. package/dist/CascadeDrawer/index.d.ts +1 -1
  7. package/dist/CascadeDrawer/index.js +1 -1
  8. package/dist/CodeSnippet/index.cjs +3 -2
  9. package/dist/CodeSnippet/index.css +236 -11
  10. package/dist/CodeSnippet/index.css.map +1 -1
  11. package/dist/CodeSnippet/index.d.ts +49 -4
  12. package/dist/CodeSnippet/index.js +2 -1
  13. package/dist/CodeSnippet/sandbox.d.ts +26 -0
  14. package/dist/CollapseBox/index.cjs +3 -3
  15. package/dist/CollapseBox/index.js +2 -2
  16. package/dist/ColorPicker/index.cjs +5 -5
  17. package/dist/ColorPicker/index.js +2 -2
  18. package/dist/ContextMenu/index.cjs +3 -3
  19. package/dist/ContextMenu/index.js +2 -2
  20. package/dist/CopyButton/index.cjs +3 -3
  21. package/dist/CopyButton/index.js +2 -2
  22. package/dist/CountUp/index.cjs +2 -2
  23. package/dist/CountUp/index.js +1 -1
  24. package/dist/CronPicker/index.cjs +4 -4
  25. package/dist/CronPicker/index.js +3 -3
  26. package/dist/DebounceSelect/index.cjs +3 -3
  27. package/dist/DebounceSelect/index.d.ts +1 -1
  28. package/dist/DebounceSelect/index.js +2 -2
  29. package/dist/DiffViewer/index.cjs +2 -2
  30. package/dist/DiffViewer/index.js +1 -1
  31. package/dist/DisabledBox/index.cjs +3 -3
  32. package/dist/DisabledBox/index.d.ts +11 -3
  33. package/dist/DisabledBox/index.js +2 -2
  34. package/dist/DragSortList/index.cjs +3 -2
  35. package/dist/DragSortList/index.css +82 -13
  36. package/dist/DragSortList/index.css.map +1 -1
  37. package/dist/DragSortList/index.d.ts +8 -2
  38. package/dist/DragSortList/index.js +2 -1
  39. package/dist/EnvBadge/index.cjs +2 -2
  40. package/dist/EnvBadge/index.js +1 -1
  41. package/dist/FilePreviewer/index.cjs +4 -4
  42. package/dist/FilePreviewer/index.js +2 -2
  43. package/dist/Fullscreen/index.cjs +3 -3
  44. package/dist/Fullscreen/index.js +2 -2
  45. package/dist/GuidedTour/index.cjs +3 -3
  46. package/dist/GuidedTour/index.js +2 -2
  47. package/dist/ImageCropper/index.cjs +3 -3
  48. package/dist/ImageCropper/index.js +2 -2
  49. package/dist/InfiniteScrollList/index.cjs +3 -3
  50. package/dist/InfiniteScrollList/index.js +2 -2
  51. package/dist/JsonDiffViewer/index.cjs +2 -2
  52. package/dist/JsonDiffViewer/index.js +1 -1
  53. package/dist/JsonEditor/index.cjs +4 -4
  54. package/dist/JsonEditor/index.d.ts +1 -1
  55. package/dist/JsonEditor/index.js +3 -3
  56. package/dist/JsonTree/index.cjs +2 -2
  57. package/dist/JsonTree/index.d.ts +1 -1
  58. package/dist/JsonTree/index.js +1 -1
  59. package/dist/KanbanBoard/index.cjs +2 -2
  60. package/dist/KanbanBoard/index.js +1 -1
  61. package/dist/KeyValEditor/index.cjs +3 -3
  62. package/dist/KeyValEditor/index.js +2 -2
  63. package/dist/Marquee/index.cjs +2 -2
  64. package/dist/Marquee/index.js +1 -1
  65. package/dist/MetricCard/index.cjs +3 -3
  66. package/dist/MetricCard/index.js +2 -2
  67. package/dist/NumericRangeInput/index.cjs +2 -2
  68. package/dist/NumericRangeInput/index.js +1 -1
  69. package/dist/PasswordStrength/index.cjs +4 -4
  70. package/dist/PasswordStrength/index.js +2 -2
  71. package/dist/PdfViewer/index.cjs +3 -3
  72. package/dist/PdfViewer/index.js +2 -2
  73. package/dist/QrCodeCard/index.cjs +3 -3
  74. package/dist/QrCodeCard/index.css +122 -32
  75. package/dist/QrCodeCard/index.css.map +1 -1
  76. package/dist/QrCodeCard/index.d.ts +10 -2
  77. package/dist/QrCodeCard/index.js +2 -2
  78. package/dist/QuickDateRange/index.cjs +2 -2
  79. package/dist/QuickDateRange/index.js +1 -1
  80. package/dist/ScrollTracker/index.cjs +4 -4
  81. package/dist/ScrollTracker/index.js +1 -1
  82. package/dist/SegmentedProgress/index.cjs +2 -2
  83. package/dist/SegmentedProgress/index.js +1 -1
  84. package/dist/SensitiveMask/index.cjs +5 -5
  85. package/dist/SensitiveMask/index.js +3 -3
  86. package/dist/Splitter/index.cjs +3 -3
  87. package/dist/Splitter/index.js +2 -2
  88. package/dist/StatusTimeline/index.cjs +2 -2
  89. package/dist/StatusTimeline/index.js +1 -1
  90. package/dist/TagInput/index.cjs +3 -3
  91. package/dist/TagInput/index.js +2 -2
  92. package/dist/TextEllipsis/index.cjs +4 -4
  93. package/dist/TextEllipsis/index.js +3 -3
  94. package/dist/TreeFilterPanel/index.cjs +2 -2
  95. package/dist/TreeFilterPanel/index.js +1 -1
  96. package/dist/TreeTransfer/index.cjs +3 -3
  97. package/dist/TreeTransfer/index.js +2 -2
  98. package/dist/TrendIndicator/index.cjs +2 -2
  99. package/dist/TrendIndicator/index.js +1 -1
  100. package/dist/VideoPlayer/index.cjs +3 -3
  101. package/dist/VideoPlayer/index.js +2 -2
  102. package/dist/VirtualList/index.cjs +2 -2
  103. package/dist/VirtualList/index.js +1 -1
  104. package/dist/Watermark/index.cjs +2 -2
  105. package/dist/Watermark/index.js +1 -1
  106. package/dist/{chunk-L7ULSFW6.cjs → chunk-2EIAWXFA.cjs} +18 -8
  107. package/dist/chunk-2EIAWXFA.cjs.map +1 -0
  108. package/dist/{chunk-TGSKTHTV.js → chunk-2IDVNTKR.js} +119 -19
  109. package/dist/chunk-2IDVNTKR.js.map +1 -0
  110. package/dist/{chunk-DNRZCHZG.js → chunk-2INP6NM4.js} +4 -11
  111. package/dist/chunk-2INP6NM4.js.map +1 -0
  112. package/dist/{chunk-I3HBI52O.js → chunk-2O2A5XYF.js} +3 -11
  113. package/dist/chunk-2O2A5XYF.js.map +1 -0
  114. package/dist/{chunk-VTANPKPT.js → chunk-3R3NOO4K.js} +2 -2
  115. package/dist/chunk-3R3NOO4K.js.map +1 -0
  116. package/dist/chunk-4KMVABTM.js +419 -0
  117. package/dist/chunk-4KMVABTM.js.map +1 -0
  118. package/dist/{chunk-K5FWY6HB.cjs → chunk-4TMBGQQE.cjs} +5 -5
  119. package/dist/{chunk-K5FWY6HB.cjs.map → chunk-4TMBGQQE.cjs.map} +1 -1
  120. package/dist/{chunk-GZCNFM6C.js → chunk-56VELHCH.js} +8 -17
  121. package/dist/chunk-56VELHCH.js.map +1 -0
  122. package/dist/{chunk-PBPGBVQQ.cjs → chunk-5E36FGRP.cjs} +2 -2
  123. package/dist/chunk-5E36FGRP.cjs.map +1 -0
  124. package/dist/{chunk-PVKBGP6Q.js → chunk-5GLC2HU6.js} +2 -2
  125. package/dist/{chunk-PVKBGP6Q.js.map → chunk-5GLC2HU6.js.map} +1 -1
  126. package/dist/{chunk-QKSCFVN2.js → chunk-5HIRDMZH.js} +2 -2
  127. package/dist/chunk-5HIRDMZH.js.map +1 -0
  128. package/dist/{chunk-7AKHSOSZ.js → chunk-5R2YXBXM.js} +3 -11
  129. package/dist/chunk-5R2YXBXM.js.map +1 -0
  130. package/dist/{chunk-F42Z33L7.cjs → chunk-5V4UAS6I.cjs} +2 -2
  131. package/dist/chunk-5V4UAS6I.cjs.map +1 -0
  132. package/dist/{chunk-WWL4VEPH.js → chunk-6UTLBY6Y.js} +2 -2
  133. package/dist/chunk-6UTLBY6Y.js.map +1 -0
  134. package/dist/{chunk-QI7XQDFZ.cjs → chunk-77ANKL4K.cjs} +77 -85
  135. package/dist/chunk-77ANKL4K.cjs.map +1 -0
  136. package/dist/{chunk-4MRZVLM6.cjs → chunk-7SIUSULP.cjs} +2 -2
  137. package/dist/{chunk-4MRZVLM6.cjs.map → chunk-7SIUSULP.cjs.map} +1 -1
  138. package/dist/{chunk-DFHFXKR5.cjs → chunk-7ZBA4NHH.cjs} +5 -12
  139. package/dist/chunk-7ZBA4NHH.cjs.map +1 -0
  140. package/dist/{chunk-RTAQSOVE.cjs → chunk-AHTRLNYK.cjs} +5 -5
  141. package/dist/{chunk-RTAQSOVE.cjs.map → chunk-AHTRLNYK.cjs.map} +1 -1
  142. package/dist/{chunk-G564WB32.cjs → chunk-AMCCRVHG.cjs} +2 -2
  143. package/dist/chunk-AMCCRVHG.cjs.map +1 -0
  144. package/dist/{chunk-NFC2C2TD.js → chunk-ANTFNDH4.js} +65 -72
  145. package/dist/chunk-ANTFNDH4.js.map +1 -0
  146. package/dist/{chunk-LBEGRYTP.js → chunk-AXPVN2OO.js} +77 -85
  147. package/dist/chunk-AXPVN2OO.js.map +1 -0
  148. package/dist/{chunk-OYRX4AY6.js → chunk-BFQV5MYD.js} +2 -2
  149. package/dist/chunk-BFQV5MYD.js.map +1 -0
  150. package/dist/{chunk-AXHJC7FV.js → chunk-BRHXKRG6.js} +3 -11
  151. package/dist/chunk-BRHXKRG6.js.map +1 -0
  152. package/dist/{chunk-BXFP7EAW.cjs → chunk-CPQLXDBR.cjs} +2 -2
  153. package/dist/{chunk-BXFP7EAW.cjs.map → chunk-CPQLXDBR.cjs.map} +1 -1
  154. package/dist/{chunk-AIIXJB34.js → chunk-CURWX7OY.js} +3 -3
  155. package/dist/{chunk-AIIXJB34.js.map → chunk-CURWX7OY.js.map} +1 -1
  156. package/dist/{chunk-XMBTKO5I.cjs → chunk-DJQEBDEP.cjs} +3 -11
  157. package/dist/chunk-DJQEBDEP.cjs.map +1 -0
  158. package/dist/{chunk-ZQBEQK2I.cjs → chunk-ED3ZG2VX.cjs} +5 -5
  159. package/dist/{chunk-ZQBEQK2I.cjs.map → chunk-ED3ZG2VX.cjs.map} +1 -1
  160. package/dist/{chunk-IECISUOZ.js → chunk-EDNBPLUS.js} +61 -59
  161. package/dist/chunk-EDNBPLUS.js.map +1 -0
  162. package/dist/{chunk-5MQCVYVD.js → chunk-EJYTTSW6.js} +16 -6
  163. package/dist/chunk-EJYTTSW6.js.map +1 -0
  164. package/dist/{chunk-AVSFSS7S.cjs → chunk-EKDJPOA3.cjs} +63 -61
  165. package/dist/chunk-EKDJPOA3.cjs.map +1 -0
  166. package/dist/{chunk-5NI6HK5V.js → chunk-EMT4NUI5.js} +3 -3
  167. package/dist/{chunk-5NI6HK5V.js.map → chunk-EMT4NUI5.js.map} +1 -1
  168. package/dist/{chunk-5GCEQDBM.cjs → chunk-EPYD35KB.cjs} +2 -2
  169. package/dist/chunk-EPYD35KB.cjs.map +1 -0
  170. package/dist/{chunk-YPVRTMX6.js → chunk-ETFLLRTO.js} +4 -6
  171. package/dist/chunk-ETFLLRTO.js.map +1 -0
  172. package/dist/{chunk-ZSK74QFN.cjs → chunk-EUOBMHFF.cjs} +3 -7
  173. package/dist/chunk-EUOBMHFF.cjs.map +1 -0
  174. package/dist/chunk-FZH5FL7X.cjs +167 -0
  175. package/dist/chunk-FZH5FL7X.cjs.map +1 -0
  176. package/dist/{chunk-4IBF4R3H.cjs → chunk-GMZSBGSL.cjs} +2 -2
  177. package/dist/{chunk-4IBF4R3H.cjs.map → chunk-GMZSBGSL.cjs.map} +1 -1
  178. package/dist/{chunk-HTA5EG6X.cjs → chunk-HKALWFWZ.cjs} +5 -5
  179. package/dist/{chunk-HTA5EG6X.cjs.map → chunk-HKALWFWZ.cjs.map} +1 -1
  180. package/dist/{chunk-PMNTOEXC.js → chunk-HZERTFL6.js} +2 -2
  181. package/dist/chunk-HZERTFL6.js.map +1 -0
  182. package/dist/{chunk-DKTB6PKI.js → chunk-IBI6AT5Z.js} +3 -10
  183. package/dist/chunk-IBI6AT5Z.js.map +1 -0
  184. package/dist/{chunk-4VGH44DT.js → chunk-IBYFOFSS.js} +14 -4
  185. package/dist/chunk-IBYFOFSS.js.map +1 -0
  186. package/dist/{chunk-2ORGQ2IY.js → chunk-IF4XAUV3.js} +4 -10
  187. package/dist/chunk-IF4XAUV3.js.map +1 -0
  188. package/dist/{chunk-4GQ3X7MG.cjs → chunk-IPS7PC3M.cjs} +18 -27
  189. package/dist/chunk-IPS7PC3M.cjs.map +1 -0
  190. package/dist/{chunk-ELI3LL3K.cjs → chunk-JHVPDKBM.cjs} +14 -6
  191. package/dist/chunk-JHVPDKBM.cjs.map +1 -0
  192. package/dist/{chunk-5G3XVLJF.js → chunk-JNA5AQ2K.js} +3 -3
  193. package/dist/{chunk-5G3XVLJF.js.map → chunk-JNA5AQ2K.js.map} +1 -1
  194. package/dist/{chunk-W6BUNUQM.cjs → chunk-KGZNVN7P.cjs} +3 -10
  195. package/dist/chunk-KGZNVN7P.cjs.map +1 -0
  196. package/dist/{chunk-R7CRWOHG.js → chunk-L7X3RVEY.js} +2 -2
  197. package/dist/{chunk-R7CRWOHG.js.map → chunk-L7X3RVEY.js.map} +1 -1
  198. package/dist/{chunk-EIFN6XMU.cjs → chunk-LFGBZXQH.cjs} +11 -5
  199. package/dist/chunk-LFGBZXQH.cjs.map +1 -0
  200. package/dist/{chunk-XO6PBAAM.cjs → chunk-LFXMUCEO.cjs} +2 -2
  201. package/dist/chunk-LFXMUCEO.cjs.map +1 -0
  202. package/dist/{chunk-C5B5Y4S2.cjs → chunk-M3GQ7RCV.cjs} +4 -4
  203. package/dist/{chunk-C5B5Y4S2.cjs.map → chunk-M3GQ7RCV.cjs.map} +1 -1
  204. package/dist/{chunk-KBBLTGIU.js → chunk-M4FZJALR.js} +13 -5
  205. package/dist/chunk-M4FZJALR.js.map +1 -0
  206. package/dist/{chunk-N7IQ6LYD.cjs → chunk-MGYDOC76.cjs} +15 -5
  207. package/dist/chunk-MGYDOC76.cjs.map +1 -0
  208. package/dist/{chunk-WBN5SAY5.js → chunk-MLYM5LAX.js} +2 -2
  209. package/dist/{chunk-WBN5SAY5.js.map → chunk-MLYM5LAX.js.map} +1 -1
  210. package/dist/{chunk-62NPVN7T.js → chunk-MQJBUHDB.js} +3 -3
  211. package/dist/{chunk-62NPVN7T.js.map → chunk-MQJBUHDB.js.map} +1 -1
  212. package/dist/{chunk-X7EE5DXL.js → chunk-O2YTJPG4.js} +2 -2
  213. package/dist/{chunk-X7EE5DXL.js.map → chunk-O2YTJPG4.js.map} +1 -1
  214. package/dist/{chunk-OJEZ3TKT.js → chunk-OBK6XTUY.js} +2 -2
  215. package/dist/chunk-OBK6XTUY.js.map +1 -0
  216. package/dist/{chunk-6OKTK3AQ.cjs → chunk-ODNGFJVN.cjs} +3 -11
  217. package/dist/chunk-ODNGFJVN.cjs.map +1 -0
  218. package/dist/{chunk-Z5LFRNNJ.js → chunk-OLLVIQPL.js} +3 -3
  219. package/dist/{chunk-Z5LFRNNJ.js.map → chunk-OLLVIQPL.js.map} +1 -1
  220. package/dist/{chunk-FRGH3Q75.cjs → chunk-OONBZRPV.cjs} +4 -4
  221. package/dist/{chunk-FRGH3Q75.cjs.map → chunk-OONBZRPV.cjs.map} +1 -1
  222. package/dist/{chunk-UT5UXO44.js → chunk-P5CS7V4W.js} +3 -3
  223. package/dist/chunk-P5CS7V4W.js.map +1 -0
  224. package/dist/{chunk-HQ65GEM7.js → chunk-PTFKE67K.js} +3 -3
  225. package/dist/{chunk-HQ65GEM7.js.map → chunk-PTFKE67K.js.map} +1 -1
  226. package/dist/{chunk-U2TTRBES.js → chunk-PUMVD7CP.js} +3 -3
  227. package/dist/{chunk-U2TTRBES.js.map → chunk-PUMVD7CP.js.map} +1 -1
  228. package/dist/{chunk-4YPT2HUD.cjs → chunk-PYCSRJSF.cjs} +16 -7
  229. package/dist/chunk-PYCSRJSF.cjs.map +1 -0
  230. package/dist/{chunk-ZAHKA2V2.js → chunk-Q7OVUH5K.js} +3 -3
  231. package/dist/chunk-Q7OVUH5K.js.map +1 -0
  232. package/dist/{chunk-NMYXVZQP.cjs → chunk-QNSEJGF6.cjs} +2 -2
  233. package/dist/chunk-QNSEJGF6.cjs.map +1 -0
  234. package/dist/{chunk-KUW2ZR2A.cjs → chunk-QP3RKA4J.cjs} +65 -72
  235. package/dist/chunk-QP3RKA4J.cjs.map +1 -0
  236. package/dist/{chunk-IUR7SPDA.js → chunk-QRZ2GVVJ.js} +85 -92
  237. package/dist/chunk-QRZ2GVVJ.js.map +1 -0
  238. package/dist/{chunk-Q4QF6UYX.cjs → chunk-R4V3EJVP.cjs} +124 -18
  239. package/dist/chunk-R4V3EJVP.cjs.map +1 -0
  240. package/dist/{chunk-2ARM7X7A.js → chunk-RAF7I4A5.js} +2 -2
  241. package/dist/chunk-RAF7I4A5.js.map +1 -0
  242. package/dist/{chunk-7JLQOQJZ.cjs → chunk-RN5WU7KA.cjs} +7 -7
  243. package/dist/{chunk-7JLQOQJZ.cjs.map → chunk-RN5WU7KA.cjs.map} +1 -1
  244. package/dist/{chunk-FBOTWA6O.cjs → chunk-TNZ2OLGW.cjs} +5 -7
  245. package/dist/chunk-TNZ2OLGW.cjs.map +1 -0
  246. package/dist/chunk-TUDLE3RT.cjs +429 -0
  247. package/dist/chunk-TUDLE3RT.cjs.map +1 -0
  248. package/dist/{chunk-PIIJVF5D.cjs → chunk-TUEVILTA.cjs} +5 -5
  249. package/dist/chunk-TUEVILTA.cjs.map +1 -0
  250. package/dist/{chunk-RWZSTG6Q.cjs → chunk-U2EBNBGK.cjs} +4 -4
  251. package/dist/{chunk-RWZSTG6Q.cjs.map → chunk-U2EBNBGK.cjs.map} +1 -1
  252. package/dist/{chunk-5WHBZH44.cjs → chunk-UAUP5TJK.cjs} +5 -5
  253. package/dist/chunk-UAUP5TJK.cjs.map +1 -0
  254. package/dist/{chunk-SMVAHIBN.cjs → chunk-UCG7ZVK5.cjs} +2 -2
  255. package/dist/chunk-UCG7ZVK5.cjs.map +1 -0
  256. package/dist/{chunk-DATPWEQK.cjs → chunk-UZB7GOEI.cjs} +4 -4
  257. package/dist/{chunk-DATPWEQK.cjs.map → chunk-UZB7GOEI.cjs.map} +1 -1
  258. package/dist/{chunk-AJIIY2QT.cjs → chunk-VF5P7XMC.cjs} +2 -2
  259. package/dist/chunk-VF5P7XMC.cjs.map +1 -0
  260. package/dist/{chunk-R77VVMV5.cjs → chunk-VJOO2DG3.cjs} +87 -94
  261. package/dist/chunk-VJOO2DG3.cjs.map +1 -0
  262. package/dist/{chunk-XB3BT6BU.js → chunk-W5JA3YTT.js} +3 -3
  263. package/dist/{chunk-XB3BT6BU.js.map → chunk-W5JA3YTT.js.map} +1 -1
  264. package/dist/{chunk-ZGWBLJ6U.cjs → chunk-WDHU3BSM.cjs} +2 -2
  265. package/dist/{chunk-ZGWBLJ6U.cjs.map → chunk-WDHU3BSM.cjs.map} +1 -1
  266. package/dist/{chunk-NCNDJTOK.js → chunk-WEGDIRDB.js} +2 -2
  267. package/dist/chunk-WEGDIRDB.js.map +1 -0
  268. package/dist/{chunk-H5VPBP7U.js → chunk-WKF4C6TJ.js} +10 -4
  269. package/dist/chunk-WKF4C6TJ.js.map +1 -0
  270. package/dist/{chunk-EJNMH7ND.js → chunk-WN557PFJ.js} +2 -2
  271. package/dist/chunk-WN557PFJ.js.map +1 -0
  272. package/dist/{chunk-VPHHGQWP.js → chunk-XLOGMDAQ.js} +3 -3
  273. package/dist/{chunk-VPHHGQWP.js.map → chunk-XLOGMDAQ.js.map} +1 -1
  274. package/dist/chunk-XUAHWX6B.js +153 -0
  275. package/dist/chunk-XUAHWX6B.js.map +1 -0
  276. package/dist/chunk-Y54KVULF.js +161 -0
  277. package/dist/chunk-Y54KVULF.js.map +1 -0
  278. package/dist/{chunk-JD4TEUIV.js → chunk-YFHKH6HL.js} +3 -7
  279. package/dist/chunk-YFHKH6HL.js.map +1 -0
  280. package/dist/{chunk-XYJMP23P.cjs → chunk-YP4XTMK3.cjs} +4 -10
  281. package/dist/chunk-YP4XTMK3.cjs.map +1 -0
  282. package/dist/{chunk-7JRGQL63.js → chunk-ZCBT56AG.js} +13 -4
  283. package/dist/chunk-ZCBT56AG.js.map +1 -0
  284. package/dist/{chunk-GCMI5JGQ.cjs → chunk-ZKM664KC.cjs} +2 -2
  285. package/dist/chunk-ZKM664KC.cjs.map +1 -0
  286. package/dist/{chunk-24ND5WB7.cjs → chunk-ZVSN7ADO.cjs} +3 -11
  287. package/dist/chunk-ZVSN7ADO.cjs.map +1 -0
  288. package/dist/chunk-ZWKUHYTV.cjs +155 -0
  289. package/dist/chunk-ZWKUHYTV.cjs.map +1 -0
  290. package/dist/index.cjs +113 -97
  291. package/dist/index.css +440 -56
  292. package/dist/index.css.map +1 -1
  293. package/dist/index.js +46 -46
  294. package/dist/src/icons.d.ts +29 -11
  295. package/dist/src/index.d.ts +3 -1
  296. package/package.json +1 -1
  297. package/dist/chunk-24ND5WB7.cjs.map +0 -1
  298. package/dist/chunk-2ARM7X7A.js.map +0 -1
  299. package/dist/chunk-2ORGQ2IY.js.map +0 -1
  300. package/dist/chunk-4DUMEO5E.cjs +0 -107
  301. package/dist/chunk-4DUMEO5E.cjs.map +0 -1
  302. package/dist/chunk-4GQ3X7MG.cjs.map +0 -1
  303. package/dist/chunk-4VGH44DT.js.map +0 -1
  304. package/dist/chunk-4YPT2HUD.cjs.map +0 -1
  305. package/dist/chunk-5GCEQDBM.cjs.map +0 -1
  306. package/dist/chunk-5MQCVYVD.js.map +0 -1
  307. package/dist/chunk-5WHBZH44.cjs.map +0 -1
  308. package/dist/chunk-6OKTK3AQ.cjs.map +0 -1
  309. package/dist/chunk-7AKHSOSZ.js.map +0 -1
  310. package/dist/chunk-7JRGQL63.js.map +0 -1
  311. package/dist/chunk-AJIIY2QT.cjs.map +0 -1
  312. package/dist/chunk-AVSFSS7S.cjs.map +0 -1
  313. package/dist/chunk-AXHJC7FV.js.map +0 -1
  314. package/dist/chunk-DFHFXKR5.cjs.map +0 -1
  315. package/dist/chunk-DKTB6PKI.js.map +0 -1
  316. package/dist/chunk-DNRZCHZG.js.map +0 -1
  317. package/dist/chunk-EIFN6XMU.cjs.map +0 -1
  318. package/dist/chunk-EJNMH7ND.js.map +0 -1
  319. package/dist/chunk-ELI3LL3K.cjs.map +0 -1
  320. package/dist/chunk-EQ7S5SYM.js +0 -67
  321. package/dist/chunk-EQ7S5SYM.js.map +0 -1
  322. package/dist/chunk-F42Z33L7.cjs.map +0 -1
  323. package/dist/chunk-FBOTWA6O.cjs.map +0 -1
  324. package/dist/chunk-FWRVCH7T.js +0 -37
  325. package/dist/chunk-FWRVCH7T.js.map +0 -1
  326. package/dist/chunk-FYFL4PFD.cjs +0 -69
  327. package/dist/chunk-FYFL4PFD.cjs.map +0 -1
  328. package/dist/chunk-G564WB32.cjs.map +0 -1
  329. package/dist/chunk-GCMI5JGQ.cjs.map +0 -1
  330. package/dist/chunk-GZCNFM6C.js.map +0 -1
  331. package/dist/chunk-H5VPBP7U.js.map +0 -1
  332. package/dist/chunk-I3HBI52O.js.map +0 -1
  333. package/dist/chunk-IECISUOZ.js.map +0 -1
  334. package/dist/chunk-IUR7SPDA.js.map +0 -1
  335. package/dist/chunk-JD4TEUIV.js.map +0 -1
  336. package/dist/chunk-KBBLTGIU.js.map +0 -1
  337. package/dist/chunk-KUW2ZR2A.cjs.map +0 -1
  338. package/dist/chunk-L7ULSFW6.cjs.map +0 -1
  339. package/dist/chunk-LBEGRYTP.js.map +0 -1
  340. package/dist/chunk-N7IQ6LYD.cjs.map +0 -1
  341. package/dist/chunk-NCNDJTOK.js.map +0 -1
  342. package/dist/chunk-NFC2C2TD.js.map +0 -1
  343. package/dist/chunk-NMYXVZQP.cjs.map +0 -1
  344. package/dist/chunk-OJEZ3TKT.js.map +0 -1
  345. package/dist/chunk-OYRX4AY6.js.map +0 -1
  346. package/dist/chunk-PBPGBVQQ.cjs.map +0 -1
  347. package/dist/chunk-PIIJVF5D.cjs.map +0 -1
  348. package/dist/chunk-PMNTOEXC.js.map +0 -1
  349. package/dist/chunk-Q4QF6UYX.cjs.map +0 -1
  350. package/dist/chunk-QI7XQDFZ.cjs.map +0 -1
  351. package/dist/chunk-QKSCFVN2.js.map +0 -1
  352. package/dist/chunk-R77VVMV5.cjs.map +0 -1
  353. package/dist/chunk-SMVAHIBN.cjs.map +0 -1
  354. package/dist/chunk-TGSKTHTV.js.map +0 -1
  355. package/dist/chunk-UT5UXO44.js.map +0 -1
  356. package/dist/chunk-VTANPKPT.js.map +0 -1
  357. package/dist/chunk-W6BUNUQM.cjs.map +0 -1
  358. package/dist/chunk-WWL4VEPH.js.map +0 -1
  359. package/dist/chunk-X4MEHYWV.js +0 -105
  360. package/dist/chunk-X4MEHYWV.js.map +0 -1
  361. package/dist/chunk-XMBTKO5I.cjs.map +0 -1
  362. package/dist/chunk-XO6PBAAM.cjs.map +0 -1
  363. package/dist/chunk-XYJMP23P.cjs.map +0 -1
  364. package/dist/chunk-YJESCN4Y.cjs +0 -39
  365. package/dist/chunk-YJESCN4Y.cjs.map +0 -1
  366. package/dist/chunk-YPVRTMX6.js.map +0 -1
  367. package/dist/chunk-ZAHKA2V2.js.map +0 -1
  368. package/dist/chunk-ZSK74QFN.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../SegmentedProgress/index.tsx"],"names":[],"mappings":";;;;AAyBA,IAAM,oBAAsD,CAAC;AAAA,EAC5D,WAAW,EAAC;AAAA,EACZ,KAAA,EAAO,WAAA;AAAA,EACP,MAAA,GAAS,EAAA;AAAA,EACT,UAAA,GAAa,IAAA;AAAA,EACb,SAAA,GAAY,EAAA;AAAA,EACZ;AACD,CAAA,KAAM;AACL,EAAA,MAAM,QAAA,GAAW,QAAQ,MAAM;AAC9B,IAAA,OAAO,QAAA,CAAS,OAAO,CAAC,GAAA,EAAK,QAAQ,GAAA,IAAO,GAAA,CAAI,KAAA,IAAS,CAAA,CAAA,EAAI,CAAC,CAAA;AAAA,EAC/D,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,EAAA,MAAM,SAAA,GAAY,WAAA,KAAgB,MAAA,GAAY,WAAA,GAAe,QAAA,IAAY,CAAA;AAEzE,EAAA,4BACE,KAAA,EAAA,EAAI,SAAA,EAAW,CAAA,iBAAA,EAAoB,SAAS,IAAI,KAAA,EAEhD,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBAAA,EAAuB,KAAA,EAAO,EAAE,MAAA,EAAO,EACpD,QAAA,EAAA,QAAA,CAAS,GAAA,CAAI,CAAC,GAAA,EAAK,GAAA,KAAQ;AAC3B,MAAA,MAAM,OAAQ,GAAA,CAAI,KAAA,GAAQ,SAAA,GAAa,GAAA,EAAK,QAAQ,CAAC,CAAA;AAErD,MAAA,uBACC,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEA,SAAA,EAAU,0BAAA;AAAA,UACV,KAAA,EAAO;AAAA,YACN,KAAA,EAAO,GAAG,GAAG,CAAA,CAAA,CAAA;AAAA,YACb,iBAAiB,GAAA,CAAI;AAAA,WACtB;AAAA,UACA,KAAA,EAAO,CAAA,EAAG,GAAA,CAAI,KAAK,CAAA,EAAA,EAAK,GAAA,CAAI,KAAK,CAAA,EAAG,GAAA,CAAI,MAAA,IAAU,EAAE,CAAA,EAAA,EAAK,GAAG,CAAA,EAAA;AAAA,SAAA;AAAA,QANvD;AAAA,OAON;AAAA,IAEF,CAAC,CAAA,EACF,CAAA;AAAA,IAGC,UAAA,wBACC,KAAA,EAAA,EAAI,SAAA,EAAU,2BACb,QAAA,EAAA,QAAA,CAAS,GAAA,CAAI,CAAC,GAAA,EAAK,GAAA,KAAQ;AAC3B,MAAA,MAAM,OAAQ,GAAA,CAAI,KAAA,GAAQ,SAAA,GAAa,GAAA,EAAK,QAAQ,CAAC,CAAA;AAErD,MAAA,uBACC,IAAA,CAAC,KAAA,EAAA,EAAc,SAAA,EAAU,8BAAA,EACxB,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,WAAU,sBAAA,EAAuB,KAAA,EAAO,EAAE,eAAA,EAAiB,GAAA,CAAI,OAAM,EAAG,CAAA;AAAA,wBAC9E,GAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,GAAA,CAAI,KAAA,EAAM,CAAA;AAAA,6BAChB,GAAA,EAAA,EAAE,KAAA,EAAO,EAAE,KAAA,EAAO,WAAU,EAC3B,QAAA,EAAA;AAAA,UAAA,GAAA,CAAI,KAAA;AAAA,UAAO,IAAI,MAAA,IAAU,EAAA;AAAA,UAAG,IAAA;AAAA,UAAG,GAAA;AAAA,UAAI;AAAA,SAAA,EACrC;AAAA,OAAA,EAAA,EALS,GAMV,CAAA;AAAA,IAEF,CAAC,CAAA,EACF;AAAA,GAAA,EAEF,CAAA;AAEF,CAAA;AAEA,IAAO,yBAAA,GAAQ","file":"chunk-WBN5SAY5.js","sourcesContent":["import React, { useMemo, CSSProperties } from 'react';\nimport './index.less';\n\nexport interface ProgressSegment {\n\tlabel: string;\n\tvalue: number;\n\tcolor: string;\n\tsuffix?: string;\n}\n\nexport interface SegmentedProgressProps {\n\t/** 分段数据列表 */\n\tsegments: ProgressSegment[];\n\t/** 总量基准(不传则自动对各分段 value 求和) */\n\ttotal?: number;\n\t/** 进度条高度(像素),默认为 10 */\n\theight?: number;\n\t/** 是否显示底部图例 Legend,默认为 true */\n\tshowLegend?: boolean;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst SegmentedProgress: React.FC<SegmentedProgressProps> = ({\n\tsegments = [],\n\ttotal: customTotal,\n\theight = 10,\n\tshowLegend = true,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst sumValue = useMemo(() => {\n\t\treturn segments.reduce((acc, cur) => acc + (cur.value || 0), 0);\n\t}, [segments]);\n\n\tconst baseTotal = customTotal !== undefined ? customTotal : (sumValue || 1);\n\n\treturn (\n\t\t<div className={`rpc_seg_progress ${className}`} style={style}>\n\t\t\t{/* 分段进度条主体 */}\n\t\t\t<div className=\"rpc_seg_progress_bar\" style={{ height }}>\n\t\t\t\t{segments.map((seg, idx) => {\n\t\t\t\t\tconst pct = ((seg.value / baseTotal) * 100).toFixed(1);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={idx}\n\t\t\t\t\t\t\tclassName=\"rpc_seg_progress_segment\"\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\twidth: `${pct}%`,\n\t\t\t\t\t\t\t\tbackgroundColor: seg.color,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\ttitle={`${seg.label}: ${seg.value}${seg.suffix || ''} (${pct}%)`}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\n\t\t\t{/* 底部图例 */}\n\t\t\t{showLegend && (\n\t\t\t\t<div className=\"rpc_seg_progress_legend\">\n\t\t\t\t\t{segments.map((seg, idx) => {\n\t\t\t\t\t\tconst pct = ((seg.value / baseTotal) * 100).toFixed(1);\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div key={idx} className=\"rpc_seg_progress_legend_item\">\n\t\t\t\t\t\t\t\t<span className=\"rpc_seg_progress_dot\" style={{ backgroundColor: seg.color }} />\n\t\t\t\t\t\t\t\t<span>{seg.label}</span>\n\t\t\t\t\t\t\t\t<b style={{ color: '#262626' }}>\n\t\t\t\t\t\t\t\t\t{seg.value}{seg.suffix || ''} ({pct}%)\n\t\t\t\t\t\t\t\t</b>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default SegmentedProgress;\n"]}
1
+ {"version":3,"sources":["../SegmentedProgress/index.tsx"],"names":[],"mappings":";;;;AAyBA,IAAM,oBAAsD,CAAC;AAAA,EAC5D,WAAW,EAAC;AAAA,EACZ,KAAA,EAAO,WAAA;AAAA,EACP,MAAA,GAAS,EAAA;AAAA,EACT,UAAA,GAAa,IAAA;AAAA,EACb,SAAA,GAAY,EAAA;AAAA,EACZ;AACD,CAAA,KAAM;AACL,EAAA,MAAM,QAAA,GAAW,QAAQ,MAAM;AAC9B,IAAA,OAAO,QAAA,CAAS,OAAO,CAAC,GAAA,EAAK,QAAQ,GAAA,IAAO,GAAA,CAAI,KAAA,IAAS,CAAA,CAAA,EAAI,CAAC,CAAA;AAAA,EAC/D,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,EAAA,MAAM,SAAA,GAAY,WAAA,KAAgB,MAAA,GAAY,WAAA,GAAc,QAAA,IAAY,CAAA;AAExE,EAAA,4BACE,KAAA,EAAA,EAAI,SAAA,EAAW,CAAA,iBAAA,EAAoB,SAAS,IAAI,KAAA,EAEhD,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBAAA,EAAuB,KAAA,EAAO,EAAE,MAAA,EAAO,EACpD,QAAA,EAAA,QAAA,CAAS,GAAA,CAAI,CAAC,GAAA,EAAK,GAAA,KAAQ;AAC3B,MAAA,MAAM,OAAQ,GAAA,CAAI,KAAA,GAAQ,SAAA,GAAa,GAAA,EAAK,QAAQ,CAAC,CAAA;AAErD,MAAA,uBACC,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEA,SAAA,EAAU,0BAAA;AAAA,UACV,KAAA,EAAO;AAAA,YACN,KAAA,EAAO,GAAG,GAAG,CAAA,CAAA,CAAA;AAAA,YACb,iBAAiB,GAAA,CAAI;AAAA,WACtB;AAAA,UACA,KAAA,EAAO,CAAA,EAAG,GAAA,CAAI,KAAK,CAAA,EAAA,EAAK,GAAA,CAAI,KAAK,CAAA,EAAG,GAAA,CAAI,MAAA,IAAU,EAAE,CAAA,EAAA,EAAK,GAAG,CAAA,EAAA;AAAA,SAAA;AAAA,QANvD;AAAA,OAON;AAAA,IAEF,CAAC,CAAA,EACF,CAAA;AAAA,IAGC,UAAA,wBACC,KAAA,EAAA,EAAI,SAAA,EAAU,2BACb,QAAA,EAAA,QAAA,CAAS,GAAA,CAAI,CAAC,GAAA,EAAK,GAAA,KAAQ;AAC3B,MAAA,MAAM,OAAQ,GAAA,CAAI,KAAA,GAAQ,SAAA,GAAa,GAAA,EAAK,QAAQ,CAAC,CAAA;AAErD,MAAA,uBACC,IAAA,CAAC,KAAA,EAAA,EAAc,SAAA,EAAU,8BAAA,EACxB,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,WAAU,sBAAA,EAAuB,KAAA,EAAO,EAAE,eAAA,EAAiB,GAAA,CAAI,OAAM,EAAG,CAAA;AAAA,wBAC9E,GAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,GAAA,CAAI,KAAA,EAAM,CAAA;AAAA,6BAChB,GAAA,EAAA,EAAE,KAAA,EAAO,EAAE,KAAA,EAAO,WAAU,EAC3B,QAAA,EAAA;AAAA,UAAA,GAAA,CAAI,KAAA;AAAA,UACJ,IAAI,MAAA,IAAU,EAAA;AAAA,UAAG,IAAA;AAAA,UAAG,GAAA;AAAA,UAAI;AAAA,SAAA,EAC1B;AAAA,OAAA,EAAA,EANS,GAOV,CAAA;AAAA,IAEF,CAAC,CAAA,EACF;AAAA,GAAA,EAEF,CAAA;AAEF,CAAA;AAEA,IAAO,yBAAA,GAAQ","file":"chunk-MLYM5LAX.js","sourcesContent":["import React, { useMemo, CSSProperties } from 'react';\nimport './index.less';\n\nexport interface ProgressSegment {\n\tlabel: string;\n\tvalue: number;\n\tcolor: string;\n\tsuffix?: string;\n}\n\nexport interface SegmentedProgressProps {\n\t/** 分段数据列表 */\n\tsegments: ProgressSegment[];\n\t/** 总量基准(不传则自动对各分段 value 求和) */\n\ttotal?: number;\n\t/** 进度条高度(像素),默认为 10 */\n\theight?: number;\n\t/** 是否显示底部图例 Legend,默认为 true */\n\tshowLegend?: boolean;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst SegmentedProgress: React.FC<SegmentedProgressProps> = ({\n\tsegments = [],\n\ttotal: customTotal,\n\theight = 10,\n\tshowLegend = true,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst sumValue = useMemo(() => {\n\t\treturn segments.reduce((acc, cur) => acc + (cur.value || 0), 0);\n\t}, [segments]);\n\n\tconst baseTotal = customTotal !== undefined ? customTotal : sumValue || 1;\n\n\treturn (\n\t\t<div className={`rpc_seg_progress ${className}`} style={style}>\n\t\t\t{/* 分段进度条主体 */}\n\t\t\t<div className=\"rpc_seg_progress_bar\" style={{ height }}>\n\t\t\t\t{segments.map((seg, idx) => {\n\t\t\t\t\tconst pct = ((seg.value / baseTotal) * 100).toFixed(1);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={idx}\n\t\t\t\t\t\t\tclassName=\"rpc_seg_progress_segment\"\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\twidth: `${pct}%`,\n\t\t\t\t\t\t\t\tbackgroundColor: seg.color,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\ttitle={`${seg.label}: ${seg.value}${seg.suffix || ''} (${pct}%)`}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\n\t\t\t{/* 底部图例 */}\n\t\t\t{showLegend && (\n\t\t\t\t<div className=\"rpc_seg_progress_legend\">\n\t\t\t\t\t{segments.map((seg, idx) => {\n\t\t\t\t\t\tconst pct = ((seg.value / baseTotal) * 100).toFixed(1);\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div key={idx} className=\"rpc_seg_progress_legend_item\">\n\t\t\t\t\t\t\t\t<span className=\"rpc_seg_progress_dot\" style={{ backgroundColor: seg.color }} />\n\t\t\t\t\t\t\t\t<span>{seg.label}</span>\n\t\t\t\t\t\t\t\t<b style={{ color: '#262626' }}>\n\t\t\t\t\t\t\t\t\t{seg.value}\n\t\t\t\t\t\t\t\t\t{seg.suffix || ''} ({pct}%)\n\t\t\t\t\t\t\t\t</b>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default SegmentedProgress;\n"]}
@@ -1,4 +1,4 @@
1
- import { PauseCircleOutlined, PlayCircleOutlined, FullscreenExitOutlined, FullscreenOutlined } from './chunk-TGSKTHTV.js';
1
+ import { PauseCircleOutlined, PlayCircleOutlined, FullscreenExitOutlined, FullscreenOutlined } from './chunk-2IDVNTKR.js';
2
2
  import { useRef, useState } from 'react';
3
3
  import { jsxs, jsx } from 'react/jsx-runtime';
4
4
 
@@ -225,5 +225,5 @@ var VideoPlayer = ({
225
225
  var VideoPlayer_default = VideoPlayer;
226
226
 
227
227
  export { VideoPlayer_default };
228
- //# sourceMappingURL=chunk-62NPVN7T.js.map
229
- //# sourceMappingURL=chunk-62NPVN7T.js.map
228
+ //# sourceMappingURL=chunk-MQJBUHDB.js.map
229
+ //# sourceMappingURL=chunk-MQJBUHDB.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../VideoPlayer/index.tsx"],"names":[],"mappings":"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","file":"chunk-62NPVN7T.js","sourcesContent":["import React, { useState, useRef, useEffect, ReactNode, CSSProperties } from 'react';\nimport {\n\tPlayCircleOutlined,\n\tPauseCircleOutlined,\n\tFullscreenOutlined,\n\tFullscreenExitOutlined,\n\tSoundOutlined,\n} from '../src/icons';\nimport './index.less';\n\nexport interface VideoPlayerProps {\n\t/** 视频播放地址 */\n\tsrc: string;\n\t/** 视频封面图 */\n\tposter?: string;\n\t/** 是否自动播放,默认为 false */\n\tautoPlay?: boolean;\n\t/** 是否循环播放,默认为 false */\n\tloop?: boolean;\n\t/** 是否默认静音,默认为 false */\n\tmuted?: boolean;\n\t/** 宽度,默认为 640 */\n\twidth?: number | string;\n\t/** 高度,默认为 360 */\n\theight?: number | string;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nfunction formatVideoTime(seconds: number): string {\n\tif (isNaN(seconds) || seconds < 0) return '00:00';\n\tconst m = Math.floor(seconds / 60);\n\tconst s = Math.floor(seconds % 60);\n\treturn `${String(m).padStart(2, '0')}:${String(s).padStart(2, '0')}`;\n}\n\nconst speedList = [0.75, 1.0, 1.25, 1.5, 2.0];\n\nconst VideoPlayer: React.FC<VideoPlayerProps> = ({\n\tsrc,\n\tposter,\n\tautoPlay = false,\n\tloop = false,\n\tmuted = false,\n\twidth = 640,\n\theight = 360,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst videoRef = useRef<HTMLVideoElement>(null);\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\tconst progressRef = useRef<HTMLDivElement>(null);\n\n\tconst [isPlaying, setIsPlaying] = useState<boolean>(false);\n\tconst [currentTime, setCurrentTime] = useState<number>(0);\n\tconst [duration, setDuration] = useState<number>(0);\n\tconst [speedIndex, setSpeedIndex] = useState<number>(1); // 1.0x\n\tconst [isControlsVisible, setIsControlsVisible] = useState<boolean>(true);\n\tconst [isFullscreen, setIsFullscreen] = useState<boolean>(false);\n\n\tconst hideTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n\tconst currentSpeed = speedList[speedIndex] || 1.0;\n\n\tconst togglePlay = () => {\n\t\tconst video = videoRef.current;\n\t\tif (!video) return;\n\t\tif (isPlaying) {\n\t\t\tvideo.pause();\n\t\t\tsetIsPlaying(false);\n\t\t} else {\n\t\t\tvideo.play();\n\t\t\tsetIsPlaying(true);\n\t\t}\n\t};\n\n\tconst seekBy = (seconds: number) => {\n\t\tconst video = videoRef.current;\n\t\tif (!video) return;\n\t\tvideo.currentTime = Math.max(0, Math.min(duration, video.currentTime + seconds));\n\t};\n\n\tconst handleTimeUpdate = () => {\n\t\tif (videoRef.current) {\n\t\t\tsetCurrentTime(videoRef.current.currentTime);\n\t\t}\n\t};\n\n\tconst handleLoadedMetadata = () => {\n\t\tif (videoRef.current) {\n\t\t\tsetDuration(videoRef.current.duration);\n\t\t}\n\t};\n\n\tconst handleProgressClick = (e: React.MouseEvent<HTMLDivElement>) => {\n\t\tif (!progressRef.current || !videoRef.current || !duration) return;\n\t\tconst rect = progressRef.current.getBoundingClientRect();\n\t\tconst percent = Math.min(1, Math.max(0, (e.clientX - rect.left) / rect.width));\n\t\tconst target = percent * duration;\n\t\tvideoRef.current.currentTime = target;\n\t\tsetCurrentTime(target);\n\t};\n\n\tconst handleSpeedChange = () => {\n\t\tconst next = (speedIndex + 1) % speedList.length;\n\t\tsetSpeedIndex(next);\n\t\tif (videoRef.current) {\n\t\t\tvideoRef.current.playbackRate = speedList[next];\n\t\t}\n\t};\n\n\tconst toggleFullscreen = () => {\n\t\tconst container = containerRef.current;\n\t\tif (!container) return;\n\n\t\tif (!document.fullscreenElement) {\n\t\t\tcontainer.requestFullscreen?.();\n\t\t\tsetIsFullscreen(true);\n\t\t} else {\n\t\t\tdocument.exitFullscreen?.();\n\t\t\tsetIsFullscreen(false);\n\t\t}\n\t};\n\n\tconst togglePiP = async () => {\n\t\tconst video = videoRef.current;\n\t\tif (!video) return;\n\t\tif (document.pictureInPictureElement) {\n\t\t\tawait document.exitPictureInPicture();\n\t\t} else if (document.pictureInPictureEnabled) {\n\t\t\tawait video.requestPictureInPicture();\n\t\t}\n\t};\n\n\tconst showControls = () => {\n\t\tsetIsControlsVisible(true);\n\t\tif (hideTimerRef.current) clearTimeout(hideTimerRef.current);\n\t\thideTimerRef.current = setTimeout(() => {\n\t\t\tif (isPlaying) {\n\t\t\t\tsetIsControlsVisible(false);\n\t\t\t}\n\t\t}, 3000);\n\t};\n\n\tconst progressPercent = duration > 0 ? (currentTime / duration) * 100 : 0;\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tonMouseMove={showControls}\n\t\t\tonMouseEnter={showControls}\n\t\t\tonMouseLeave={() => isPlaying && setIsControlsVisible(false)}\n\t\t\tclassName={`rpc_video_player ${className}`}\n\t\t\tstyle={{ width, height, ...style }}\n\t\t>\n\t\t\t<video\n\t\t\t\tref={videoRef}\n\t\t\t\tsrc={src}\n\t\t\t\tposter={poster}\n\t\t\t\tautoPlay={autoPlay}\n\t\t\t\tloop={loop}\n\t\t\t\tmuted={muted}\n\t\t\t\tonClick={togglePlay}\n\t\t\t\tonTimeUpdate={handleTimeUpdate}\n\t\t\t\tonLoadedMetadata={handleLoadedMetadata}\n\t\t\t\tonEnded={() => setIsPlaying(false)}\n\t\t\t\tclassName=\"rpc_video_player_video\"\n\t\t\t/>\n\n\t\t\t{/* 中央大播放按钮(暂停时展示) */}\n\t\t\t{!isPlaying && (\n\t\t\t\t<div className=\"rpc_video_player_big_play_btn\" onClick={togglePlay}>\n\t\t\t\t\t▶\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* 底部控制条 */}\n\t\t\t<div\n\t\t\t\tclassName={`rpc_video_player_controls ${\n\t\t\t\t\t!isControlsVisible && isPlaying ? 'rpc_video_player_controls_hidden' : ''\n\t\t\t\t}`}\n\t\t\t>\n\t\t\t\t{/* 进度条 */}\n\t\t\t\t<div\n\t\t\t\t\tref={progressRef}\n\t\t\t\t\tclassName=\"rpc_video_player_progress_wrap\"\n\t\t\t\t\tonClick={handleProgressClick}\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"rpc_video_player_progress_fill\"\n\t\t\t\t\t\tstyle={{ width: `${progressPercent}%` }}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"rpc_video_player_bar_row\">\n\t\t\t\t\t<div className=\"rpc_video_player_left_btns\">\n\t\t\t\t\t\t<button type=\"button\" className=\"rpc_video_player_btn\" onClick={togglePlay}>\n\t\t\t\t\t\t\t{isPlaying ? <PauseCircleOutlined /> : <PlayCircleOutlined />}\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName=\"rpc_video_player_btn\"\n\t\t\t\t\t\t\tonClick={() => seekBy(-10)}\n\t\t\t\t\t\t\ttitle=\"快退 10 秒\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t⏪ 10s\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName=\"rpc_video_player_btn\"\n\t\t\t\t\t\t\tonClick={() => seekBy(10)}\n\t\t\t\t\t\t\ttitle=\"快进 10 秒\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t10s ⏩\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t<span className=\"rpc_video_player_time\">\n\t\t\t\t\t\t\t{formatVideoTime(currentTime)} / {formatVideoTime(duration)}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className=\"rpc_video_player_right_btns\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName=\"rpc_video_player_btn rpc_video_player_speed_btn\"\n\t\t\t\t\t\t\tonClick={handleSpeedChange}\n\t\t\t\t\t\t\ttitle=\"播放倍速\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{currentSpeed}x\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName=\"rpc_video_player_btn\"\n\t\t\t\t\t\t\tonClick={togglePiP}\n\t\t\t\t\t\t\ttitle=\"画中画模式\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t🪟\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName=\"rpc_video_player_btn\"\n\t\t\t\t\t\t\tonClick={toggleFullscreen}\n\t\t\t\t\t\t\ttitle=\"全屏切换\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{isFullscreen ? <FullscreenExitOutlined /> : <FullscreenOutlined />}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default VideoPlayer;\n"]}
1
+ {"version":3,"sources":["../VideoPlayer/index.tsx"],"names":[],"mappings":"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","file":"chunk-MQJBUHDB.js","sourcesContent":["import React, { useState, useRef, useEffect, ReactNode, CSSProperties } from 'react';\nimport {\n\tPlayCircleOutlined,\n\tPauseCircleOutlined,\n\tFullscreenOutlined,\n\tFullscreenExitOutlined,\n\tSoundOutlined,\n} from '../src/icons';\nimport './index.less';\n\nexport interface VideoPlayerProps {\n\t/** 视频播放地址 */\n\tsrc: string;\n\t/** 视频封面图 */\n\tposter?: string;\n\t/** 是否自动播放,默认为 false */\n\tautoPlay?: boolean;\n\t/** 是否循环播放,默认为 false */\n\tloop?: boolean;\n\t/** 是否默认静音,默认为 false */\n\tmuted?: boolean;\n\t/** 宽度,默认为 640 */\n\twidth?: number | string;\n\t/** 高度,默认为 360 */\n\theight?: number | string;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nfunction formatVideoTime(seconds: number): string {\n\tif (isNaN(seconds) || seconds < 0) return '00:00';\n\tconst m = Math.floor(seconds / 60);\n\tconst s = Math.floor(seconds % 60);\n\treturn `${String(m).padStart(2, '0')}:${String(s).padStart(2, '0')}`;\n}\n\nconst speedList = [0.75, 1.0, 1.25, 1.5, 2.0];\n\nconst VideoPlayer: React.FC<VideoPlayerProps> = ({\n\tsrc,\n\tposter,\n\tautoPlay = false,\n\tloop = false,\n\tmuted = false,\n\twidth = 640,\n\theight = 360,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst videoRef = useRef<HTMLVideoElement>(null);\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\tconst progressRef = useRef<HTMLDivElement>(null);\n\n\tconst [isPlaying, setIsPlaying] = useState<boolean>(false);\n\tconst [currentTime, setCurrentTime] = useState<number>(0);\n\tconst [duration, setDuration] = useState<number>(0);\n\tconst [speedIndex, setSpeedIndex] = useState<number>(1); // 1.0x\n\tconst [isControlsVisible, setIsControlsVisible] = useState<boolean>(true);\n\tconst [isFullscreen, setIsFullscreen] = useState<boolean>(false);\n\n\tconst hideTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n\tconst currentSpeed = speedList[speedIndex] || 1.0;\n\n\tconst togglePlay = () => {\n\t\tconst video = videoRef.current;\n\t\tif (!video) return;\n\t\tif (isPlaying) {\n\t\t\tvideo.pause();\n\t\t\tsetIsPlaying(false);\n\t\t} else {\n\t\t\tvideo.play();\n\t\t\tsetIsPlaying(true);\n\t\t}\n\t};\n\n\tconst seekBy = (seconds: number) => {\n\t\tconst video = videoRef.current;\n\t\tif (!video) return;\n\t\tvideo.currentTime = Math.max(0, Math.min(duration, video.currentTime + seconds));\n\t};\n\n\tconst handleTimeUpdate = () => {\n\t\tif (videoRef.current) {\n\t\t\tsetCurrentTime(videoRef.current.currentTime);\n\t\t}\n\t};\n\n\tconst handleLoadedMetadata = () => {\n\t\tif (videoRef.current) {\n\t\t\tsetDuration(videoRef.current.duration);\n\t\t}\n\t};\n\n\tconst handleProgressClick = (e: React.MouseEvent<HTMLDivElement>) => {\n\t\tif (!progressRef.current || !videoRef.current || !duration) return;\n\t\tconst rect = progressRef.current.getBoundingClientRect();\n\t\tconst percent = Math.min(1, Math.max(0, (e.clientX - rect.left) / rect.width));\n\t\tconst target = percent * duration;\n\t\tvideoRef.current.currentTime = target;\n\t\tsetCurrentTime(target);\n\t};\n\n\tconst handleSpeedChange = () => {\n\t\tconst next = (speedIndex + 1) % speedList.length;\n\t\tsetSpeedIndex(next);\n\t\tif (videoRef.current) {\n\t\t\tvideoRef.current.playbackRate = speedList[next];\n\t\t}\n\t};\n\n\tconst toggleFullscreen = () => {\n\t\tconst container = containerRef.current;\n\t\tif (!container) return;\n\n\t\tif (!document.fullscreenElement) {\n\t\t\tcontainer.requestFullscreen?.();\n\t\t\tsetIsFullscreen(true);\n\t\t} else {\n\t\t\tdocument.exitFullscreen?.();\n\t\t\tsetIsFullscreen(false);\n\t\t}\n\t};\n\n\tconst togglePiP = async () => {\n\t\tconst video = videoRef.current;\n\t\tif (!video) return;\n\t\tif (document.pictureInPictureElement) {\n\t\t\tawait document.exitPictureInPicture();\n\t\t} else if (document.pictureInPictureEnabled) {\n\t\t\tawait video.requestPictureInPicture();\n\t\t}\n\t};\n\n\tconst showControls = () => {\n\t\tsetIsControlsVisible(true);\n\t\tif (hideTimerRef.current) clearTimeout(hideTimerRef.current);\n\t\thideTimerRef.current = setTimeout(() => {\n\t\t\tif (isPlaying) {\n\t\t\t\tsetIsControlsVisible(false);\n\t\t\t}\n\t\t}, 3000);\n\t};\n\n\tconst progressPercent = duration > 0 ? (currentTime / duration) * 100 : 0;\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tonMouseMove={showControls}\n\t\t\tonMouseEnter={showControls}\n\t\t\tonMouseLeave={() => isPlaying && setIsControlsVisible(false)}\n\t\t\tclassName={`rpc_video_player ${className}`}\n\t\t\tstyle={{ width, height, ...style }}\n\t\t>\n\t\t\t<video\n\t\t\t\tref={videoRef}\n\t\t\t\tsrc={src}\n\t\t\t\tposter={poster}\n\t\t\t\tautoPlay={autoPlay}\n\t\t\t\tloop={loop}\n\t\t\t\tmuted={muted}\n\t\t\t\tonClick={togglePlay}\n\t\t\t\tonTimeUpdate={handleTimeUpdate}\n\t\t\t\tonLoadedMetadata={handleLoadedMetadata}\n\t\t\t\tonEnded={() => setIsPlaying(false)}\n\t\t\t\tclassName=\"rpc_video_player_video\"\n\t\t\t/>\n\n\t\t\t{/* 中央大播放按钮(暂停时展示) */}\n\t\t\t{!isPlaying && (\n\t\t\t\t<div className=\"rpc_video_player_big_play_btn\" onClick={togglePlay}>\n\t\t\t\t\t▶\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* 底部控制条 */}\n\t\t\t<div\n\t\t\t\tclassName={`rpc_video_player_controls ${\n\t\t\t\t\t!isControlsVisible && isPlaying ? 'rpc_video_player_controls_hidden' : ''\n\t\t\t\t}`}\n\t\t\t>\n\t\t\t\t{/* 进度条 */}\n\t\t\t\t<div\n\t\t\t\t\tref={progressRef}\n\t\t\t\t\tclassName=\"rpc_video_player_progress_wrap\"\n\t\t\t\t\tonClick={handleProgressClick}\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"rpc_video_player_progress_fill\"\n\t\t\t\t\t\tstyle={{ width: `${progressPercent}%` }}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"rpc_video_player_bar_row\">\n\t\t\t\t\t<div className=\"rpc_video_player_left_btns\">\n\t\t\t\t\t\t<button type=\"button\" className=\"rpc_video_player_btn\" onClick={togglePlay}>\n\t\t\t\t\t\t\t{isPlaying ? <PauseCircleOutlined /> : <PlayCircleOutlined />}\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName=\"rpc_video_player_btn\"\n\t\t\t\t\t\t\tonClick={() => seekBy(-10)}\n\t\t\t\t\t\t\ttitle=\"快退 10 秒\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t⏪ 10s\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName=\"rpc_video_player_btn\"\n\t\t\t\t\t\t\tonClick={() => seekBy(10)}\n\t\t\t\t\t\t\ttitle=\"快进 10 秒\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t10s ⏩\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t<span className=\"rpc_video_player_time\">\n\t\t\t\t\t\t\t{formatVideoTime(currentTime)} / {formatVideoTime(duration)}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className=\"rpc_video_player_right_btns\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName=\"rpc_video_player_btn rpc_video_player_speed_btn\"\n\t\t\t\t\t\t\tonClick={handleSpeedChange}\n\t\t\t\t\t\t\ttitle=\"播放倍速\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{currentSpeed}x\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName=\"rpc_video_player_btn\"\n\t\t\t\t\t\t\tonClick={togglePiP}\n\t\t\t\t\t\t\ttitle=\"画中画模式\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t🪟\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName=\"rpc_video_player_btn\"\n\t\t\t\t\t\t\tonClick={toggleFullscreen}\n\t\t\t\t\t\t\ttitle=\"全屏切换\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{isFullscreen ? <FullscreenExitOutlined /> : <FullscreenOutlined />}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default VideoPlayer;\n"]}
@@ -60,5 +60,5 @@ var JsonDiffViewer = ({
60
60
  var JsonDiffViewer_default = JsonDiffViewer;
61
61
 
62
62
  export { JsonDiffViewer_default };
63
- //# sourceMappingURL=chunk-X7EE5DXL.js.map
64
- //# sourceMappingURL=chunk-X7EE5DXL.js.map
63
+ //# sourceMappingURL=chunk-O2YTJPG4.js.map
64
+ //# sourceMappingURL=chunk-O2YTJPG4.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../JsonDiffViewer/index.tsx"],"names":[],"mappings":"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","file":"chunk-X7EE5DXL.js","sourcesContent":["import React, { useMemo, CSSProperties } from 'react';\nimport './index.less';\n\nexport interface JsonDiffViewerProps {\n\t/** 变更前原始 JSON 对象 */\n\tbefore: Record<string, any>;\n\t/** 变更后最新 JSON 对象 */\n\tafter: Record<string, any>;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\ntype DiffType = 'added' | 'removed' | 'modified' | 'unchanged';\n\ninterface DiffRow {\n\tkey: string;\n\ttype: DiffType;\n\toldVal?: any;\n\tnewVal?: any;\n}\n\nconst JsonDiffViewer: React.FC<JsonDiffViewerProps> = ({\n\tbefore = {},\n\tafter = {},\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst diffRows = useMemo(() => {\n\t\tconst rows: DiffRow[] = [];\n\t\tconst allKeys = Array.from(new Set([...Object.keys(before), ...Object.keys(after)]));\n\n\t\tallKeys.forEach((key) => {\n\t\t\tconst hasBefore = key in before;\n\t\t\tconst hasAfter = key in after;\n\n\t\t\tif (!hasBefore && hasAfter) {\n\t\t\t\trows.push({ key, type: 'added', newVal: after[key] });\n\t\t\t} else if (hasBefore && !hasAfter) {\n\t\t\t\trows.push({ key, type: 'removed', oldVal: before[key] });\n\t\t\t} else {\n\t\t\t\tconst bVal = JSON.stringify(before[key]);\n\t\t\t\tconst aVal = JSON.stringify(after[key]);\n\t\t\t\tif (bVal !== aVal) {\n\t\t\t\t\trows.push({ key, type: 'modified', oldVal: before[key], newVal: after[key] });\n\t\t\t\t} else {\n\t\t\t\t\trows.push({ key, type: 'unchanged', newVal: after[key] });\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn rows;\n\t}, [before, after]);\n\n\tconst formatVal = (v: any) => {\n\t\tif (typeof v === 'object') return JSON.stringify(v);\n\t\tif (typeof v === 'string') return `\"${v}\"`;\n\t\treturn String(v);\n\t};\n\n\treturn (\n\t\t<div className={`rpc_json_diff ${className}`} style={style}>\n\t\t\t<div style={{ color: '#858585', marginBottom: 6 }}>&#123;</div>\n\n\t\t\t{diffRows.map((row) => {\n\t\t\t\tconst sign =\n\t\t\t\t\trow.type === 'added'\n\t\t\t\t\t\t? '+'\n\t\t\t\t\t\t: row.type === 'removed'\n\t\t\t\t\t\t? '-'\n\t\t\t\t\t\t: row.type === 'modified'\n\t\t\t\t\t\t? '~'\n\t\t\t\t\t\t: ' ';\n\n\t\t\t\treturn (\n\t\t\t\t\t<div key={row.key} className={`rpc_json_diff_row rpc_json_diff_row_${row.type}`}>\n\t\t\t\t\t\t<span className=\"rpc_json_diff_sign\">{sign}</span>\n\t\t\t\t\t\t<span className=\"rpc_json_diff_key\">\"{row.key}\"</span>:\n\t\t\t\t\t\t{row.type === 'modified' ? (\n\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t<span style={{ textDecoration: 'line-through', opacity: 0.7 }}>\n\t\t\t\t\t\t\t\t\t{formatVal(row.oldVal)}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<span className=\"rpc_json_diff_arrow\">➔</span>\n\t\t\t\t\t\t\t\t<span>{formatVal(row.newVal)}</span>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t) : row.type === 'removed' ? (\n\t\t\t\t\t\t\t<span>{formatVal(row.oldVal)}</span>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<span>{formatVal(row.newVal)}</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\n\t\t\t<div style={{ color: '#858585', marginTop: 6 }}>&#125;</div>\n\t\t</div>\n\t);\n};\n\nexport default JsonDiffViewer;\n"]}
1
+ {"version":3,"sources":["../JsonDiffViewer/index.tsx"],"names":[],"mappings":"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","file":"chunk-O2YTJPG4.js","sourcesContent":["import React, { useMemo, CSSProperties } from 'react';\nimport './index.less';\n\nexport interface JsonDiffViewerProps {\n\t/** 变更前原始 JSON 对象 */\n\tbefore: Record<string, any>;\n\t/** 变更后最新 JSON 对象 */\n\tafter: Record<string, any>;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\ntype DiffType = 'added' | 'removed' | 'modified' | 'unchanged';\n\ninterface DiffRow {\n\tkey: string;\n\ttype: DiffType;\n\toldVal?: any;\n\tnewVal?: any;\n}\n\nconst JsonDiffViewer: React.FC<JsonDiffViewerProps> = ({\n\tbefore = {},\n\tafter = {},\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst diffRows = useMemo(() => {\n\t\tconst rows: DiffRow[] = [];\n\t\tconst allKeys = Array.from(new Set([...Object.keys(before), ...Object.keys(after)]));\n\n\t\tallKeys.forEach((key) => {\n\t\t\tconst hasBefore = key in before;\n\t\t\tconst hasAfter = key in after;\n\n\t\t\tif (!hasBefore && hasAfter) {\n\t\t\t\trows.push({ key, type: 'added', newVal: after[key] });\n\t\t\t} else if (hasBefore && !hasAfter) {\n\t\t\t\trows.push({ key, type: 'removed', oldVal: before[key] });\n\t\t\t} else {\n\t\t\t\tconst bVal = JSON.stringify(before[key]);\n\t\t\t\tconst aVal = JSON.stringify(after[key]);\n\t\t\t\tif (bVal !== aVal) {\n\t\t\t\t\trows.push({ key, type: 'modified', oldVal: before[key], newVal: after[key] });\n\t\t\t\t} else {\n\t\t\t\t\trows.push({ key, type: 'unchanged', newVal: after[key] });\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn rows;\n\t}, [before, after]);\n\n\tconst formatVal = (v: any) => {\n\t\tif (typeof v === 'object') return JSON.stringify(v);\n\t\tif (typeof v === 'string') return `\"${v}\"`;\n\t\treturn String(v);\n\t};\n\n\treturn (\n\t\t<div className={`rpc_json_diff ${className}`} style={style}>\n\t\t\t<div style={{ color: '#858585', marginBottom: 6 }}>&#123;</div>\n\n\t\t\t{diffRows.map((row) => {\n\t\t\t\tconst sign =\n\t\t\t\t\trow.type === 'added'\n\t\t\t\t\t\t? '+'\n\t\t\t\t\t\t: row.type === 'removed'\n\t\t\t\t\t\t\t? '-'\n\t\t\t\t\t\t\t: row.type === 'modified'\n\t\t\t\t\t\t\t\t? '~'\n\t\t\t\t\t\t\t\t: ' ';\n\n\t\t\t\treturn (\n\t\t\t\t\t<div key={row.key} className={`rpc_json_diff_row rpc_json_diff_row_${row.type}`}>\n\t\t\t\t\t\t<span className=\"rpc_json_diff_sign\">{sign}</span>\n\t\t\t\t\t\t<span className=\"rpc_json_diff_key\">\"{row.key}\"</span>:\n\t\t\t\t\t\t{row.type === 'modified' ? (\n\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t<span style={{ textDecoration: 'line-through', opacity: 0.7 }}>\n\t\t\t\t\t\t\t\t\t{formatVal(row.oldVal)}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<span className=\"rpc_json_diff_arrow\">➔</span>\n\t\t\t\t\t\t\t\t<span>{formatVal(row.newVal)}</span>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t) : row.type === 'removed' ? (\n\t\t\t\t\t\t\t<span>{formatVal(row.oldVal)}</span>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<span>{formatVal(row.newVal)}</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\n\t\t\t<div style={{ color: '#858585', marginTop: 6 }}>&#125;</div>\n\t\t</div>\n\t);\n};\n\nexport default JsonDiffViewer;\n"]}
@@ -115,5 +115,5 @@ CountUp.displayName = "CountUp";
115
115
  var CountUp_default = CountUp;
116
116
 
117
117
  export { CountUp_default };
118
- //# sourceMappingURL=chunk-OJEZ3TKT.js.map
119
- //# sourceMappingURL=chunk-OJEZ3TKT.js.map
118
+ //# sourceMappingURL=chunk-OBK6XTUY.js.map
119
+ //# sourceMappingURL=chunk-OBK6XTUY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../CountUp/index.tsx"],"names":[],"mappings":"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","file":"chunk-OBK6XTUY.js","sourcesContent":["import React, {\n\tuseState,\n\tuseRef,\n\tuseEffect,\n\tuseCallback,\n\tuseImperativeHandle,\n\tforwardRef,\n\tReactNode,\n\tCSSProperties,\n} from 'react';\nimport './index.less';\n\nexport interface CountUpProps {\n\t/** 起始数值,默认为 0 */\n\tstart?: number;\n\t/** 目标数值 */\n\tend: number;\n\t/** 动画持续时间(秒),默认为 2 */\n\tduration?: number;\n\t/** 保留小数位数,默认为 0 */\n\tdecimals?: number;\n\t/** 小数点符号,默认为 '.' */\n\tdecimal?: string;\n\t/** 千分位分隔符,默认为 ',',若不显示可传空字符串 */\n\tseparator?: string;\n\t/** 前缀字符或节点(如 '¥'、'$') */\n\tprefix?: ReactNode;\n\t/** 后缀字符或节点(如 '%'、'件') */\n\tsuffix?: ReactNode;\n\t/** 是否启用缓动过渡,默认为 true */\n\tuseEasing?: boolean;\n\t/** 是否自动开始动画,默认为 true */\n\tautoStart?: boolean;\n\t/** 动画完成回调 */\n\tonEnd?: () => void;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nexport interface CountUpRef {\n\t/** 开始/重新播放动画 */\n\tstart: () => void;\n\t/** 重置回起始值 */\n\treset: () => void;\n\t/** 更新目标值并平滑过渡 */\n\tupdate: (newEnd: number) => void;\n}\n\n// 默认 EaseOutExpo 缓动函数\nfunction easeOutExpo(t: number, b: number, c: number, d: number): number {\n\treturn t === d ? b + c : (c * (-Math.pow(2, (-10 * t) / d) + 1) * 1024) / 1023 + b;\n}\n\n// 格式化数字字符串\nfunction formatNumber(num: number, decimals: number, decimal: string, separator: string): string {\n\tconst fixed = Math.abs(num).toFixed(decimals);\n\tconst [intPart, decPart] = fixed.split('.');\n\n\tconst formattedInt = separator ? intPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, separator) : intPart;\n\n\tconst sign = num < 0 ? '-' : '';\n\treturn decPart !== undefined\n\t\t? `${sign}${formattedInt}${decimal}${decPart}`\n\t\t: `${sign}${formattedInt}`;\n}\n\nconst CountUp = forwardRef<CountUpRef, CountUpProps>(\n\t(\n\t\t{\n\t\t\tstart = 0,\n\t\t\tend,\n\t\t\tduration = 2,\n\t\t\tdecimals = 0,\n\t\t\tdecimal = '.',\n\t\t\tseparator = ',',\n\t\t\tprefix,\n\t\t\tsuffix,\n\t\t\tuseEasing = true,\n\t\t\tautoStart = true,\n\t\t\tonEnd,\n\t\t\tclassName = '',\n\t\t\tstyle,\n\t\t},\n\t\tref,\n\t) => {\n\t\tconst [displayValue, setDisplayValue] = useState<number>(start);\n\t\tconst startValRef = useRef<number>(start);\n\t\tconst endValRef = useRef<number>(end);\n\t\tconst startTimeRef = useRef<number | null>(null);\n\t\tconst rafIdRef = useRef<number | null>(null);\n\n\t\tconst stopAnimation = () => {\n\t\t\tif (rafIdRef.current) {\n\t\t\t\tcancelAnimationFrame(rafIdRef.current);\n\t\t\t\trafIdRef.current = null;\n\t\t\t}\n\t\t};\n\n\t\tconst animate = useCallback(\n\t\t\t(timestamp: number) => {\n\t\t\t\tif (!startTimeRef.current) startTimeRef.current = timestamp;\n\t\t\t\tconst progress = timestamp - startTimeRef.current;\n\t\t\t\tconst totalDuration = Math.max(duration * 1000, 1);\n\n\t\t\t\tlet currentVal: number;\n\t\t\t\tif (progress >= totalDuration) {\n\t\t\t\t\tcurrentVal = endValRef.current;\n\t\t\t\t\tsetDisplayValue(currentVal);\n\t\t\t\t\tstopAnimation();\n\t\t\t\t\tonEnd?.();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (useEasing) {\n\t\t\t\t\tcurrentVal = easeOutExpo(\n\t\t\t\t\t\tprogress,\n\t\t\t\t\t\tstartValRef.current,\n\t\t\t\t\t\tendValRef.current - startValRef.current,\n\t\t\t\t\t\ttotalDuration,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tcurrentVal =\n\t\t\t\t\t\tstartValRef.current +\n\t\t\t\t\t\t(endValRef.current - startValRef.current) * (progress / totalDuration);\n\t\t\t\t}\n\n\t\t\t\tsetDisplayValue(currentVal);\n\t\t\t\trafIdRef.current = requestAnimationFrame(animate);\n\t\t\t},\n\t\t\t[duration, useEasing, onEnd],\n\t\t);\n\n\t\tconst triggerStart = useCallback(() => {\n\t\t\tstopAnimation();\n\t\t\tstartTimeRef.current = null;\n\t\t\trafIdRef.current = requestAnimationFrame(animate);\n\t\t}, [animate]);\n\n\t\tconst reset = useCallback(() => {\n\t\t\tstopAnimation();\n\t\t\tsetDisplayValue(start);\n\t\t}, [start]);\n\n\t\tconst update = useCallback(\n\t\t\t(newEnd: number) => {\n\t\t\t\tstopAnimation();\n\t\t\t\tstartValRef.current = displayValue;\n\t\t\t\tendValRef.current = newEnd;\n\t\t\t\tstartTimeRef.current = null;\n\t\t\t\trafIdRef.current = requestAnimationFrame(animate);\n\t\t\t},\n\t\t\t[displayValue, animate],\n\t\t);\n\n\t\tuseImperativeHandle(\n\t\t\tref,\n\t\t\t() => ({\n\t\t\t\tstart: triggerStart,\n\t\t\t\treset,\n\t\t\t\tupdate,\n\t\t\t}),\n\t\t\t[triggerStart, reset, update],\n\t\t);\n\n\t\tuseEffect(() => {\n\t\t\tstartValRef.current = start;\n\t\t\tendValRef.current = end;\n\t\t\tif (autoStart) {\n\t\t\t\ttriggerStart();\n\t\t\t}\n\t\t\treturn () => stopAnimation();\n\t\t}, [start, end, autoStart, triggerStart]);\n\n\t\tconst formattedStr = formatNumber(displayValue, decimals, decimal, separator);\n\n\t\treturn (\n\t\t\t<span className={`rpc_count_up ${className}`} style={style}>\n\t\t\t\t{prefix && <span className=\"rpc_count_up_prefix\">{prefix}</span>}\n\t\t\t\t<span className=\"rpc_count_up_value\">{formattedStr}</span>\n\t\t\t\t{suffix && <span className=\"rpc_count_up_suffix\">{suffix}</span>}\n\t\t\t</span>\n\t\t);\n\t},\n);\n\nCountUp.displayName = 'CountUp';\n\nexport default CountUp;\n"]}
@@ -86,15 +86,7 @@ var EnvBadge = ({
86
86
  ] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { style: { color: "#8c8c8c", fontSize: 12, padding: "8px 0" }, children: "\u6682\u65E0\u8BE6\u7EC6\u6784\u5EFA\u5143\u6570\u636E" }),
87
87
  switchList && switchList.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rpc_env_badge_switch_wrap", children: [
88
88
  /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: 11, color: "#8c8c8c", width: "100%" }, children: "\u5207\u6362\u73AF\u5883\uFF1A" }),
89
- switchList.map((item, idx) => /* @__PURE__ */ jsxRuntime.jsx(
90
- "a",
91
- {
92
- href: item.url,
93
- className: "rpc_env_badge_switch_btn",
94
- children: item.label
95
- },
96
- idx
97
- ))
89
+ switchList.map((item, idx) => /* @__PURE__ */ jsxRuntime.jsx("a", { href: item.url, className: "rpc_env_badge_switch_btn", children: item.label }, idx))
98
90
  ] })
99
91
  ] })
100
92
  ]
@@ -104,5 +96,5 @@ var EnvBadge = ({
104
96
  var EnvBadge_default = EnvBadge;
105
97
 
106
98
  exports.EnvBadge_default = EnvBadge_default;
107
- //# sourceMappingURL=chunk-6OKTK3AQ.cjs.map
108
- //# sourceMappingURL=chunk-6OKTK3AQ.cjs.map
99
+ //# sourceMappingURL=chunk-ODNGFJVN.cjs.map
100
+ //# sourceMappingURL=chunk-ODNGFJVN.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../EnvBadge/index.tsx"],"names":["useState","useRef","useEffect","jsxs","jsx"],"mappings":";;;;;;AAuCA,IAAM,gBAAA,GAA4C;AAAA,EACjD,GAAA,EAAK,8BAAA;AAAA,EACL,IAAA,EAAM,+BAAA;AAAA,EACN,GAAA,EAAK,wBAAA;AAAA,EACL,OAAA,EAAS,sBAAA;AAAA,EACT,IAAA,EAAM;AACP,CAAA;AAEA,IAAM,WAAoC,CAAC;AAAA,EAC1C,GAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA,GAAY,WAAA;AAAA,EACZ,IAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA,GAAU,IAAA;AAAA,EACV,SAAA,GAAY,EAAA;AAAA,EACZ;AACD,CAAA,KAAM;AACL,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,eAAkB,KAAK,CAAA;AACnD,EAAA,MAAM,QAAA,GAAWC,aAAuB,IAAI,CAAA;AAE5C,EAAA,MAAM,OAAO,KAAA,IAAS,gBAAA,CAAiB,GAAG,CAAA,IAAK,IAAI,WAAA,EAAY;AAG/D,EAAAC,eAAA,CAAU,MAAM;AACf,IAAA,MAAM,kBAAA,GAAqB,CAAC,CAAA,KAAkB;AAC7C,MAAA,IAAI,QAAA,CAAS,WAAW,CAAC,QAAA,CAAS,QAAQ,QAAA,CAAS,CAAA,CAAE,MAAc,CAAA,EAAG;AACrE,QAAA,SAAA,CAAU,KAAK,CAAA;AAAA,MAChB;AAAA,IACD,CAAA;AAEA,IAAA,IAAI,MAAA,EAAQ;AACX,MAAA,QAAA,CAAS,gBAAA,CAAiB,aAAa,kBAAkB,CAAA;AAAA,IAC1D;AACA,IAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,WAAA,EAAa,kBAAkB,CAAA;AAAA,EAC1E,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,IAAI,CAAC,SAAS,OAAO,IAAA;AAErB,EAAA,uBACCC,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,GAAA,EAAK,QAAA;AAAA,MACL,SAAA,EAAW,+BAA+B,SAAA,CAAU,OAAA,CAAQ,KAAK,GAAG,CAAC,IAAI,SAAS,CAAA,CAAA;AAAA,MAClF,KAAA;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAA,eAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,SAAA,EAAW,uCAAuC,GAAG,CAAA,CAAA;AAAA,YACrD,OAAA,EAAS,MAAM,SAAA,CAAU,CAAC,MAAM,CAAA;AAAA,YAEhC,QAAA,EAAA;AAAA,8BAAAC,cAAA,CAAC,UAAK,QAAA,EAAA,QAAA,EAAC,CAAA;AAAA,8BACPA,cAAA,CAAC,UAAM,QAAA,EAAA,IAAA,EAAK;AAAA;AAAA;AAAA,SACb;AAAA,QAEC,MAAA,oBACAD,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACd,QAAA,EAAA;AAAA,0BAAAA,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,0BAAA,EACd,QAAA,EAAA;AAAA,4BAAAC,cAAA,CAAC,UAAK,QAAA,EAAA,sCAAA,EAAM,CAAA;AAAA,4BACZA,cAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,QAAA,EAAU,EAAA,EAAI,KAAA,EAAO,SAAA,EAAU,EAAI,QAAA,EAAA,GAAA,CAAI,WAAA,EAAY,EAAE;AAAA,WAAA,EACrE,CAAA;AAAA,UAEC,IAAA,mCACC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,YAAA,IAAA,CAAK,OAAA,oBACLD,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACd,QAAA,EAAA;AAAA,8BAAAC,cAAA,CAAC,UAAK,QAAA,EAAA,0BAAA,EAAI,CAAA;AAAA,8CACT,MAAA,EAAA,EAAK,QAAA,EAAA;AAAA,gBAAA,GAAA;AAAA,gBAAE,IAAA,CAAK;AAAA,eAAA,EAAQ;AAAA,aAAA,EACtB,CAAA;AAAA,YAEA,IAAA,CAAK,MAAA,oBACLD,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,uBAAA,EACd,QAAA,EAAA;AAAA,8BAAAC,cAAA,CAAC,UAAK,QAAA,EAAA,kBAAA,EAAM,CAAA;AAAA,8BACZA,cAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,IAAA,CAAK,MAAA,EAAO;AAAA,aAAA,EACpB,CAAA;AAAA,YAEA,IAAA,CAAK,MAAA,oBACLD,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,uBAAA,EACd,QAAA,EAAA;AAAA,8BAAAC,cAAA,CAAC,UAAK,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,8BACZA,cAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,IAAA,CAAK,MAAA,EAAO;AAAA,aAAA,EACpB,CAAA;AAAA,YAEA,IAAA,CAAK,OAAA,oBACLD,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,uBAAA,EACd,QAAA,EAAA;AAAA,8BAAAC,cAAA,CAAC,UAAK,QAAA,EAAA,kBAAA,EAAM,CAAA;AAAA,8BACZA,cAAA,CAAC,UAAK,KAAA,EAAO,EAAE,UAAU,EAAA,EAAG,EAAI,eAAK,OAAA,EAAQ;AAAA,aAAA,EAC9C,CAAA;AAAA,YAEA,IAAA,CAAK,SAAA,oBACLD,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,uBAAA,EACd,QAAA,EAAA;AAAA,8BAAAC,cAAA,CAAC,UAAK,QAAA,EAAA,0BAAA,EAAI,CAAA;AAAA,8BACVA,cAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,IAAA,CAAK,SAAA,EAAU;AAAA,aAAA,EACvB;AAAA,WAAA,EAEF,CAAA,mBAEAA,cAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,EAAA,EAAI,OAAA,EAAS,OAAA,EAAQ,EAAG,QAAA,EAAA,wDAAA,EAElE,CAAA;AAAA,UAGA,cAAc,UAAA,CAAW,MAAA,GAAS,qBAClCD,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,2BAAA,EACd,QAAA,EAAA;AAAA,4BAAAC,cAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,QAAA,EAAU,EAAA,EAAI,OAAO,SAAA,EAAW,KAAA,EAAO,MAAA,EAAO,EAAG,QAAA,EAAA,gCAAA,EAAK,CAAA;AAAA,YACpE,UAAA,CAAW,GAAA,CAAI,CAAC,IAAA,EAAM,wBACtBA,cAAA,CAAC,GAAA,EAAA,EAAY,IAAA,EAAM,IAAA,CAAK,KAAK,SAAA,EAAU,0BAAA,EACrC,QAAA,EAAA,IAAA,CAAK,KAAA,EAAA,EADC,GAER,CACA;AAAA,WAAA,EACF;AAAA,SAAA,EAEF;AAAA;AAAA;AAAA,GAEF;AAEF,CAAA;AAEA,IAAO,gBAAA,GAAQ","file":"chunk-ODNGFJVN.cjs","sourcesContent":["import React, { useState, useRef, useEffect, ReactNode, CSSProperties } from 'react';\nimport './index.less';\n\nexport type EnvType = 'dev' | 'test' | 'uat' | 'staging' | 'prod';\nexport type EnvPlacement = 'top-right' | 'top-left' | 'bottom-right';\n\nexport interface EnvBuildInfo {\n\tapiHost?: string;\n\tbranch?: string;\n\tcommit?: string;\n\tbuildTime?: string;\n\tversion?: string;\n}\n\nexport interface EnvSwitchItem {\n\tlabel: string;\n\turl: string;\n\tenv: EnvType;\n}\n\nexport interface EnvBadgeProps {\n\t/** 当前运行环境:'dev' | 'test' | 'uat' | 'staging' | 'prod' */\n\tenv: EnvType;\n\t/** 显示文本(不传则默认大写环境名) */\n\tlabel?: ReactNode;\n\t/** 悬浮挂载位置,默认为 'top-right' */\n\tplacement?: EnvPlacement;\n\t/** 当前构建与部署版本信息 */\n\tinfo?: EnvBuildInfo;\n\t/** 快捷切换至其他环境列表 */\n\tswitchList?: EnvSwitchItem[];\n\t/** 是否默认常驻,默认为 true */\n\tvisible?: boolean;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst defaultEnvLabels: Record<EnvType, string> = {\n\tdev: 'DEV 开发环境',\n\ttest: 'TEST 测试环境',\n\tuat: 'UAT 预验收',\n\tstaging: 'STAGING 预发',\n\tprod: '🚨 PROD 生产环境',\n};\n\nconst EnvBadge: React.FC<EnvBadgeProps> = ({\n\tenv,\n\tlabel,\n\tplacement = 'top-right',\n\tinfo,\n\tswitchList,\n\tvisible = true,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [isOpen, setIsOpen] = useState<boolean>(false);\n\tconst badgeRef = useRef<HTMLDivElement>(null);\n\n\tconst text = label || defaultEnvLabels[env] || env.toUpperCase();\n\n\t// 点击外部自动关闭气泡\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (e: MouseEvent) => {\n\t\t\tif (badgeRef.current && !badgeRef.current.contains(e.target as Node)) {\n\t\t\t\tsetIsOpen(false);\n\t\t\t}\n\t\t};\n\n\t\tif (isOpen) {\n\t\t\tdocument.addEventListener('mousedown', handleClickOutside);\n\t\t}\n\t\treturn () => document.removeEventListener('mousedown', handleClickOutside);\n\t}, [isOpen]);\n\n\tif (!visible) return null;\n\n\treturn (\n\t\t<div\n\t\t\tref={badgeRef}\n\t\t\tclassName={`rpc_env_badge rpc_env_badge_${placement.replace('-', '_')} ${className}`}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={`rpc_env_badge_tag rpc_env_badge_tag_${env}`}\n\t\t\t\tonClick={() => setIsOpen(!isOpen)}\n\t\t\t>\n\t\t\t\t<span>●</span>\n\t\t\t\t<span>{text}</span>\n\t\t\t</div>\n\n\t\t\t{isOpen && (\n\t\t\t\t<div className=\"rpc_env_badge_popover\">\n\t\t\t\t\t<div className=\"rpc_env_badge_pop_header\">\n\t\t\t\t\t\t<span>系统环境信息</span>\n\t\t\t\t\t\t<span style={{ fontSize: 12, color: '#8c8c8c' }}>{env.toUpperCase()}</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{info ? (\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t{info.version && (\n\t\t\t\t\t\t\t\t<div className=\"rpc_env_badge_pop_row\">\n\t\t\t\t\t\t\t\t\t<span>发布版本</span>\n\t\t\t\t\t\t\t\t\t<span>v{info.version}</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{info.branch && (\n\t\t\t\t\t\t\t\t<div className=\"rpc_env_badge_pop_row\">\n\t\t\t\t\t\t\t\t\t<span>Git 分支</span>\n\t\t\t\t\t\t\t\t\t<span>{info.branch}</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{info.commit && (\n\t\t\t\t\t\t\t\t<div className=\"rpc_env_badge_pop_row\">\n\t\t\t\t\t\t\t\t\t<span>Commit</span>\n\t\t\t\t\t\t\t\t\t<span>{info.commit}</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{info.apiHost && (\n\t\t\t\t\t\t\t\t<div className=\"rpc_env_badge_pop_row\">\n\t\t\t\t\t\t\t\t\t<span>API 网关</span>\n\t\t\t\t\t\t\t\t\t<span style={{ fontSize: 11 }}>{info.apiHost}</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{info.buildTime && (\n\t\t\t\t\t\t\t\t<div className=\"rpc_env_badge_pop_row\">\n\t\t\t\t\t\t\t\t\t<span>构建时间</span>\n\t\t\t\t\t\t\t\t\t<span>{info.buildTime}</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<div style={{ color: '#8c8c8c', fontSize: 12, padding: '8px 0' }}>\n\t\t\t\t\t\t\t暂无详细构建元数据\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{switchList && switchList.length > 0 && (\n\t\t\t\t\t\t<div className=\"rpc_env_badge_switch_wrap\">\n\t\t\t\t\t\t\t<span style={{ fontSize: 11, color: '#8c8c8c', width: '100%' }}>切换环境:</span>\n\t\t\t\t\t\t\t{switchList.map((item, idx) => (\n\t\t\t\t\t\t\t\t<a key={idx} href={item.url} className=\"rpc_env_badge_switch_btn\">\n\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default EnvBadge;\n"]}
@@ -1,4 +1,4 @@
1
- import { CloseOutlined } from './chunk-TGSKTHTV.js';
1
+ import { CloseOutlined } from './chunk-2IDVNTKR.js';
2
2
  import { useState, useRef } from 'react';
3
3
  import { jsxs, jsx } from 'react/jsx-runtime';
4
4
 
@@ -153,5 +153,5 @@ var TagInput = ({
153
153
  var TagInput_default = TagInput;
154
154
 
155
155
  export { TagInput_default };
156
- //# sourceMappingURL=chunk-Z5LFRNNJ.js.map
157
- //# sourceMappingURL=chunk-Z5LFRNNJ.js.map
156
+ //# sourceMappingURL=chunk-OLLVIQPL.js.map
157
+ //# sourceMappingURL=chunk-OLLVIQPL.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../TagInput/index.tsx"],"names":[],"mappings":"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","file":"chunk-Z5LFRNNJ.js","sourcesContent":["import React, { useState, useRef, useEffect, ReactNode, CSSProperties } from 'react';\nimport { CloseOutlined } from '../src/icons';\nimport './index.less';\n\nexport interface TagInputProps {\n\t/** 标签列表(受控) */\n\tvalue?: string[];\n\t/** 默认标签列表 */\n\tdefaultValue?: string[];\n\t/** 标签列表改变回调 */\n\tonChange?: (tags: string[]) => void;\n\t/** 最大允许输入的标签数量 */\n\tmaxCount?: number;\n\t/** 单个标签的最大字符长度 */\n\tmaxLength?: number;\n\t/** 是否允许重复标签,默认为 false */\n\tallowDuplicates?: boolean;\n\t/** 触发添加标签的按键/分隔符,默认为 ['Enter', ',', ','] */\n\tseparators?: string[];\n\t/** 标签自定义校验函数(返回 true 通过,返回 false 或 string 报错) */\n\tvalidate?: (tag: string) => boolean | string;\n\t/** 占位提示文案 */\n\tplaceholder?: string;\n\t/** 是否禁用 */\n\tdisabled?: boolean;\n\t/** 自定义渲染单个 Tag */\n\trenderTag?: (tag: string, index: number, onClose: () => void) => ReactNode;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst TagInput: React.FC<TagInputProps> = ({\n\tvalue: controlledValue,\n\tdefaultValue = [],\n\tonChange,\n\tmaxCount,\n\tmaxLength,\n\tallowDuplicates = false,\n\tseparators = ['Enter', ',', ','],\n\tvalidate,\n\tplaceholder = '输入标签后按回车...',\n\tdisabled = false,\n\trenderTag,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [internalTags, setInternalTags] = useState<string[]>(defaultValue);\n\tconst tags = controlledValue !== undefined ? controlledValue : internalTags;\n\n\tconst [inputValue, setInputValue] = useState<string>('');\n\tconst [isFocused, setIsFocused] = useState<boolean>(false);\n\tconst [errorMessage, setErrorMessage] = useState<string>('');\n\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\n\t// 添加 Tag\n\tconst addTag = (text: string) => {\n\t\tconst trimmed = text.trim();\n\t\tif (!trimmed) return;\n\n\t\tif (maxCount !== undefined && tags.length >= maxCount) {\n\t\t\tsetErrorMessage(`最多只能添加 ${maxCount} 个标签`);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!allowDuplicates && tags.includes(trimmed)) {\n\t\t\tsetErrorMessage(`标签 \"${trimmed}\" 已存在`);\n\t\t\treturn;\n\t\t}\n\n\t\tif (validate) {\n\t\t\tconst res = validate(trimmed);\n\t\t\tif (typeof res === 'string') {\n\t\t\t\tsetErrorMessage(res);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (res === false) {\n\t\t\t\tsetErrorMessage(`标签 \"${trimmed}\" 格式不合法`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tconst nextTags = [...tags, trimmed];\n\t\tif (controlledValue === undefined) {\n\t\t\tsetInternalTags(nextTags);\n\t\t}\n\t\tonChange?.(nextTags);\n\t\tsetInputValue('');\n\t\tsetErrorMessage('');\n\t};\n\n\t// 删除 Tag\n\tconst removeTag = (index: number) => {\n\t\tif (disabled) return;\n\t\tconst nextTags = tags.filter((_, i) => i !== index);\n\t\tif (controlledValue === undefined) {\n\t\t\tsetInternalTags(nextTags);\n\t\t}\n\t\tonChange?.(nextTags);\n\t\tsetErrorMessage('');\n\t};\n\n\t// 键盘事件处理\n\tconst handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n\t\tif (disabled) return;\n\n\t\t// 分隔符触发添加\n\t\tif (separators.includes(e.key)) {\n\t\t\te.preventDefault();\n\t\t\taddTag(inputValue);\n\t\t\treturn;\n\t\t}\n\n\t\t// 退格键删除最后一个 Tag\n\t\tif (e.key === 'Backspace' && !inputValue && tags.length > 0) {\n\t\t\te.preventDefault();\n\t\t\tremoveTag(tags.length - 1);\n\t\t}\n\t};\n\n\t// 失去焦点时添加\n\tconst handleBlur = () => {\n\t\tsetIsFocused(false);\n\t\tif (inputValue.trim()) {\n\t\t\taddTag(inputValue);\n\t\t}\n\t};\n\n\t// 双击编辑 Tag\n\tconst handleDoubleClick = (index: number, tag: string) => {\n\t\tif (disabled) return;\n\t\tremoveTag(index);\n\t\tsetInputValue(tag);\n\t\tinputRef.current?.focus();\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tclassName={`rpc_tag_input ${isFocused ? 'rpc_tag_input_focused' : ''} ${\n\t\t\t\tdisabled ? 'rpc_tag_input_disabled' : ''\n\t\t\t} ${errorMessage ? 'rpc_tag_input_error' : ''} ${className}`}\n\t\t\tstyle={style}\n\t\t\tonClick={() => {\n\t\t\t\tif (!disabled) inputRef.current?.focus();\n\t\t\t}}\n\t\t>\n\t\t\t{tags.map((tag, idx) => {\n\t\t\t\tif (renderTag) {\n\t\t\t\t\treturn renderTag(tag, idx, () => removeTag(idx));\n\t\t\t\t}\n\t\t\t\treturn (\n\t\t\t\t\t<span\n\t\t\t\t\t\tkey={idx}\n\t\t\t\t\t\tclassName=\"rpc_tag_input_tag\"\n\t\t\t\t\t\tonDoubleClick={() => handleDoubleClick(idx, tag)}\n\t\t\t\t\t\ttitle=\"双击可重新编辑\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<span>{tag}</span>\n\t\t\t\t\t\t{!disabled && (\n\t\t\t\t\t\t\t<CloseOutlined\n\t\t\t\t\t\t\t\tclassName=\"rpc_tag_input_tag_close\"\n\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\tremoveTag(idx);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</span>\n\t\t\t\t);\n\t\t\t})}\n\n\t\t\t{(!maxCount || tags.length < maxCount) && (\n\t\t\t\t<input\n\t\t\t\t\tref={inputRef}\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tvalue={inputValue}\n\t\t\t\t\tmaxLength={maxLength}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tclassName=\"rpc_tag_input_input\"\n\t\t\t\t\tplaceholder={tags.length === 0 ? placeholder : ''}\n\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\tsetInputValue(e.target.value);\n\t\t\t\t\t\tif (errorMessage) setErrorMessage('');\n\t\t\t\t\t}}\n\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\tonFocus={() => setIsFocused(true)}\n\t\t\t\t\tonBlur={handleBlur}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{errorMessage && <div className=\"rpc_tag_input_error_tip\">{errorMessage}</div>}\n\t\t</div>\n\t);\n};\n\nexport default TagInput;\n"]}
1
+ {"version":3,"sources":["../TagInput/index.tsx"],"names":[],"mappings":";;;;AAiCA,IAAM,WAAoC,CAAC;AAAA,EAC1C,KAAA,EAAO,eAAA;AAAA,EACP,eAAe,EAAC;AAAA,EAChB,QAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,eAAA,GAAkB,KAAA;AAAA,EAClB,UAAA,GAAa,CAAC,OAAA,EAAS,GAAA,EAAK,QAAG,CAAA;AAAA,EAC/B,QAAA;AAAA,EACA,WAAA,GAAc,qDAAA;AAAA,EACd,QAAA,GAAW,KAAA;AAAA,EACX,SAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ;AACD,CAAA,KAAM;AACL,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAmB,YAAY,CAAA;AACvE,EAAA,MAAM,IAAA,GAAO,eAAA,KAAoB,MAAA,GAAY,eAAA,GAAkB,YAAA;AAE/D,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAiB,EAAE,CAAA;AACvD,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAkB,KAAK,CAAA;AACzD,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAiB,EAAE,CAAA;AAE3D,EAAA,MAAM,QAAA,GAAW,OAAyB,IAAI,CAAA;AAC9C,EAAA,MAAM,YAAA,GAAe,OAAuB,IAAI,CAAA;AAGhD,EAAA,MAAM,MAAA,GAAS,CAAC,IAAA,KAAiB;AAChC,IAAA,MAAM,OAAA,GAAU,KAAK,IAAA,EAAK;AAC1B,IAAA,IAAI,CAAC,OAAA,EAAS;AAEd,IAAA,IAAI,QAAA,KAAa,MAAA,IAAa,IAAA,CAAK,MAAA,IAAU,QAAA,EAAU;AACtD,MAAA,eAAA,CAAgB,CAAA,qCAAA,EAAU,QAAQ,CAAA,mBAAA,CAAM,CAAA;AACxC,MAAA;AAAA,IACD;AAEA,IAAA,IAAI,CAAC,eAAA,IAAmB,IAAA,CAAK,QAAA,CAAS,OAAO,CAAA,EAAG;AAC/C,MAAA,eAAA,CAAgB,CAAA,cAAA,EAAO,OAAO,CAAA,oBAAA,CAAO,CAAA;AACrC,MAAA;AAAA,IACD;AAEA,IAAA,IAAI,QAAA,EAAU;AACb,MAAA,MAAM,GAAA,GAAM,SAAS,OAAO,CAAA;AAC5B,MAAA,IAAI,OAAO,QAAQ,QAAA,EAAU;AAC5B,QAAA,eAAA,CAAgB,GAAG,CAAA;AACnB,QAAA;AAAA,MACD;AACA,MAAA,IAAI,QAAQ,KAAA,EAAO;AAClB,QAAA,eAAA,CAAgB,CAAA,cAAA,EAAO,OAAO,CAAA,gCAAA,CAAS,CAAA;AACvC,QAAA;AAAA,MACD;AAAA,IACD;AAEA,IAAA,MAAM,QAAA,GAAW,CAAC,GAAG,IAAA,EAAM,OAAO,CAAA;AAClC,IAAA,IAAI,oBAAoB,MAAA,EAAW;AAClC,MAAA,eAAA,CAAgB,QAAQ,CAAA;AAAA,IACzB;AACA,IAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAW,QAAA,CAAA;AACX,IAAA,aAAA,CAAc,EAAE,CAAA;AAChB,IAAA,eAAA,CAAgB,EAAE,CAAA;AAAA,EACnB,CAAA;AAGA,EAAA,MAAM,SAAA,GAAY,CAAC,KAAA,KAAkB;AACpC,IAAA,IAAI,QAAA,EAAU;AACd,IAAA,MAAM,WAAW,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,EAAG,CAAA,KAAM,MAAM,KAAK,CAAA;AAClD,IAAA,IAAI,oBAAoB,MAAA,EAAW;AAClC,MAAA,eAAA,CAAgB,QAAQ,CAAA;AAAA,IACzB;AACA,IAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAW,QAAA,CAAA;AACX,IAAA,eAAA,CAAgB,EAAE,CAAA;AAAA,EACnB,CAAA;AAGA,EAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAA6C;AACnE,IAAA,IAAI,QAAA,EAAU;AAGd,IAAA,IAAI,UAAA,CAAW,QAAA,CAAS,CAAA,CAAE,GAAG,CAAA,EAAG;AAC/B,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,MAAA,CAAO,UAAU,CAAA;AACjB,MAAA;AAAA,IACD;AAGA,IAAA,IAAI,EAAE,GAAA,KAAQ,WAAA,IAAe,CAAC,UAAA,IAAc,IAAA,CAAK,SAAS,CAAA,EAAG;AAC5D,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,SAAA,CAAU,IAAA,CAAK,SAAS,CAAC,CAAA;AAAA,IAC1B;AAAA,EACD,CAAA;AAGA,EAAA,MAAM,aAAa,MAAM;AACxB,IAAA,YAAA,CAAa,KAAK,CAAA;AAClB,IAAA,IAAI,UAAA,CAAW,MAAK,EAAG;AACtB,MAAA,MAAA,CAAO,UAAU,CAAA;AAAA,IAClB;AAAA,EACD,CAAA;AAGA,EAAA,MAAM,iBAAA,GAAoB,CAAC,KAAA,EAAe,GAAA,KAAgB;AApI3D,IAAA,IAAA,EAAA;AAqIE,IAAA,IAAI,QAAA,EAAU;AACd,IAAA,SAAA,CAAU,KAAK,CAAA;AACf,IAAA,aAAA,CAAc,GAAG,CAAA;AACjB,IAAA,CAAA,EAAA,GAAA,QAAA,CAAS,YAAT,IAAA,GAAA,MAAA,GAAA,EAAA,CAAkB,KAAA,EAAA;AAAA,EACnB,CAAA;AAEA,EAAA,uBACC,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,GAAA,EAAK,YAAA;AAAA,MACL,SAAA,EAAW,CAAA,cAAA,EAAiB,SAAA,GAAY,uBAAA,GAA0B,EAAE,CAAA,CAAA,EACnE,QAAA,GAAW,wBAAA,GAA2B,EACvC,CAAA,CAAA,EAAI,YAAA,GAAe,qBAAA,GAAwB,EAAE,IAAI,SAAS,CAAA,CAAA;AAAA,MAC1D,KAAA;AAAA,MACA,SAAS,MAAM;AAlJlB,QAAA,IAAA,EAAA;AAmJI,QAAA,IAAI,CAAC,QAAA,EAAU,CAAA,EAAA,GAAA,QAAA,CAAS,OAAA,KAAT,IAAA,GAAA,MAAA,GAAA,EAAA,CAAkB,KAAA,EAAA;AAAA,MAClC,CAAA;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,EAAK,GAAA,KAAQ;AACvB,UAAA,IAAI,SAAA,EAAW;AACd,YAAA,OAAO,UAAU,GAAA,EAAK,GAAA,EAAK,MAAM,SAAA,CAAU,GAAG,CAAC,CAAA;AAAA,UAChD;AACA,UAAA,uBACC,IAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cAEA,SAAA,EAAU,mBAAA;AAAA,cACV,aAAA,EAAe,MAAM,iBAAA,CAAkB,GAAA,EAAK,GAAG,CAAA;AAAA,cAC/C,KAAA,EAAM,4CAAA;AAAA,cAEN,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,UAAM,QAAA,EAAA,GAAA,EAAI,CAAA;AAAA,gBACV,CAAC,QAAA,oBACD,GAAA;AAAA,kBAAC,aAAA;AAAA,kBAAA;AAAA,oBACA,SAAA,EAAU,yBAAA;AAAA,oBACV,OAAA,EAAS,CAAC,CAAA,KAAM;AACf,sBAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,sBAAA,SAAA,CAAU,GAAG,CAAA;AAAA,oBACd;AAAA;AAAA;AACD;AAAA,aAAA;AAAA,YAbI;AAAA,WAeN;AAAA,QAEF,CAAC,CAAA;AAAA,QAAA,CAEC,CAAC,QAAA,IAAY,IAAA,CAAK,MAAA,GAAS,QAAA,qBAC5B,GAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACA,GAAA,EAAK,QAAA;AAAA,YACL,IAAA,EAAK,MAAA;AAAA,YACL,KAAA,EAAO,UAAA;AAAA,YACP,SAAA;AAAA,YACA,QAAA;AAAA,YACA,SAAA,EAAU,qBAAA;AAAA,YACV,WAAA,EAAa,IAAA,CAAK,MAAA,KAAW,CAAA,GAAI,WAAA,GAAc,EAAA;AAAA,YAC/C,QAAA,EAAU,CAAC,CAAA,KAAM;AAChB,cAAA,aAAA,CAAc,CAAA,CAAE,OAAO,KAAK,CAAA;AAC5B,cAAA,IAAI,YAAA,kBAA8B,EAAE,CAAA;AAAA,YACrC,CAAA;AAAA,YACA,SAAA,EAAW,aAAA;AAAA,YACX,OAAA,EAAS,MAAM,YAAA,CAAa,IAAI,CAAA;AAAA,YAChC,MAAA,EAAQ;AAAA;AAAA,SACT;AAAA,QAGA,YAAA,oBAAgB,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2BAA2B,QAAA,EAAA,YAAA,EAAa;AAAA;AAAA;AAAA,GACzE;AAEF,CAAA;AAEA,IAAO,gBAAA,GAAQ","file":"chunk-OLLVIQPL.js","sourcesContent":["import React, { useState, useRef, useEffect, ReactNode, CSSProperties } from 'react';\nimport { CloseOutlined } from '../src/icons';\nimport './index.less';\n\nexport interface TagInputProps {\n\t/** 标签列表(受控) */\n\tvalue?: string[];\n\t/** 默认标签列表 */\n\tdefaultValue?: string[];\n\t/** 标签列表改变回调 */\n\tonChange?: (tags: string[]) => void;\n\t/** 最大允许输入的标签数量 */\n\tmaxCount?: number;\n\t/** 单个标签的最大字符长度 */\n\tmaxLength?: number;\n\t/** 是否允许重复标签,默认为 false */\n\tallowDuplicates?: boolean;\n\t/** 触发添加标签的按键/分隔符,默认为 ['Enter', ',', ','] */\n\tseparators?: string[];\n\t/** 标签自定义校验函数(返回 true 通过,返回 false 或 string 报错) */\n\tvalidate?: (tag: string) => boolean | string;\n\t/** 占位提示文案 */\n\tplaceholder?: string;\n\t/** 是否禁用 */\n\tdisabled?: boolean;\n\t/** 自定义渲染单个 Tag */\n\trenderTag?: (tag: string, index: number, onClose: () => void) => ReactNode;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst TagInput: React.FC<TagInputProps> = ({\n\tvalue: controlledValue,\n\tdefaultValue = [],\n\tonChange,\n\tmaxCount,\n\tmaxLength,\n\tallowDuplicates = false,\n\tseparators = ['Enter', ',', ','],\n\tvalidate,\n\tplaceholder = '输入标签后按回车...',\n\tdisabled = false,\n\trenderTag,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [internalTags, setInternalTags] = useState<string[]>(defaultValue);\n\tconst tags = controlledValue !== undefined ? controlledValue : internalTags;\n\n\tconst [inputValue, setInputValue] = useState<string>('');\n\tconst [isFocused, setIsFocused] = useState<boolean>(false);\n\tconst [errorMessage, setErrorMessage] = useState<string>('');\n\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\n\t// 添加 Tag\n\tconst addTag = (text: string) => {\n\t\tconst trimmed = text.trim();\n\t\tif (!trimmed) return;\n\n\t\tif (maxCount !== undefined && tags.length >= maxCount) {\n\t\t\tsetErrorMessage(`最多只能添加 ${maxCount} 个标签`);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!allowDuplicates && tags.includes(trimmed)) {\n\t\t\tsetErrorMessage(`标签 \"${trimmed}\" 已存在`);\n\t\t\treturn;\n\t\t}\n\n\t\tif (validate) {\n\t\t\tconst res = validate(trimmed);\n\t\t\tif (typeof res === 'string') {\n\t\t\t\tsetErrorMessage(res);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (res === false) {\n\t\t\t\tsetErrorMessage(`标签 \"${trimmed}\" 格式不合法`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tconst nextTags = [...tags, trimmed];\n\t\tif (controlledValue === undefined) {\n\t\t\tsetInternalTags(nextTags);\n\t\t}\n\t\tonChange?.(nextTags);\n\t\tsetInputValue('');\n\t\tsetErrorMessage('');\n\t};\n\n\t// 删除 Tag\n\tconst removeTag = (index: number) => {\n\t\tif (disabled) return;\n\t\tconst nextTags = tags.filter((_, i) => i !== index);\n\t\tif (controlledValue === undefined) {\n\t\t\tsetInternalTags(nextTags);\n\t\t}\n\t\tonChange?.(nextTags);\n\t\tsetErrorMessage('');\n\t};\n\n\t// 键盘事件处理\n\tconst handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n\t\tif (disabled) return;\n\n\t\t// 分隔符触发添加\n\t\tif (separators.includes(e.key)) {\n\t\t\te.preventDefault();\n\t\t\taddTag(inputValue);\n\t\t\treturn;\n\t\t}\n\n\t\t// 退格键删除最后一个 Tag\n\t\tif (e.key === 'Backspace' && !inputValue && tags.length > 0) {\n\t\t\te.preventDefault();\n\t\t\tremoveTag(tags.length - 1);\n\t\t}\n\t};\n\n\t// 失去焦点时添加\n\tconst handleBlur = () => {\n\t\tsetIsFocused(false);\n\t\tif (inputValue.trim()) {\n\t\t\taddTag(inputValue);\n\t\t}\n\t};\n\n\t// 双击编辑 Tag\n\tconst handleDoubleClick = (index: number, tag: string) => {\n\t\tif (disabled) return;\n\t\tremoveTag(index);\n\t\tsetInputValue(tag);\n\t\tinputRef.current?.focus();\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tclassName={`rpc_tag_input ${isFocused ? 'rpc_tag_input_focused' : ''} ${\n\t\t\t\tdisabled ? 'rpc_tag_input_disabled' : ''\n\t\t\t} ${errorMessage ? 'rpc_tag_input_error' : ''} ${className}`}\n\t\t\tstyle={style}\n\t\t\tonClick={() => {\n\t\t\t\tif (!disabled) inputRef.current?.focus();\n\t\t\t}}\n\t\t>\n\t\t\t{tags.map((tag, idx) => {\n\t\t\t\tif (renderTag) {\n\t\t\t\t\treturn renderTag(tag, idx, () => removeTag(idx));\n\t\t\t\t}\n\t\t\t\treturn (\n\t\t\t\t\t<span\n\t\t\t\t\t\tkey={idx}\n\t\t\t\t\t\tclassName=\"rpc_tag_input_tag\"\n\t\t\t\t\t\tonDoubleClick={() => handleDoubleClick(idx, tag)}\n\t\t\t\t\t\ttitle=\"双击可重新编辑\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<span>{tag}</span>\n\t\t\t\t\t\t{!disabled && (\n\t\t\t\t\t\t\t<CloseOutlined\n\t\t\t\t\t\t\t\tclassName=\"rpc_tag_input_tag_close\"\n\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\tremoveTag(idx);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</span>\n\t\t\t\t);\n\t\t\t})}\n\n\t\t\t{(!maxCount || tags.length < maxCount) && (\n\t\t\t\t<input\n\t\t\t\t\tref={inputRef}\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tvalue={inputValue}\n\t\t\t\t\tmaxLength={maxLength}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tclassName=\"rpc_tag_input_input\"\n\t\t\t\t\tplaceholder={tags.length === 0 ? placeholder : ''}\n\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\tsetInputValue(e.target.value);\n\t\t\t\t\t\tif (errorMessage) setErrorMessage('');\n\t\t\t\t\t}}\n\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\tonFocus={() => setIsFocused(true)}\n\t\t\t\t\tonBlur={handleBlur}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{errorMessage && <div className=\"rpc_tag_input_error_tip\">{errorMessage}</div>}\n\t\t</div>\n\t);\n};\n\nexport default TagInput;\n"]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkQ4QF6UYX_cjs = require('./chunk-Q4QF6UYX.cjs');
3
+ var chunkR4V3EJVP_cjs = require('./chunk-R4V3EJVP.cjs');
4
4
  var react = require('react');
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
6
 
@@ -114,7 +114,7 @@ var TagInput = ({
114
114
  children: [
115
115
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: tag }),
116
116
  !disabled && /* @__PURE__ */ jsxRuntime.jsx(
117
- chunkQ4QF6UYX_cjs.CloseOutlined,
117
+ chunkR4V3EJVP_cjs.CloseOutlined,
118
118
  {
119
119
  className: "rpc_tag_input_tag_close",
120
120
  onClick: (e) => {
@@ -155,5 +155,5 @@ var TagInput = ({
155
155
  var TagInput_default = TagInput;
156
156
 
157
157
  exports.TagInput_default = TagInput_default;
158
- //# sourceMappingURL=chunk-FRGH3Q75.cjs.map
159
- //# sourceMappingURL=chunk-FRGH3Q75.cjs.map
158
+ //# sourceMappingURL=chunk-OONBZRPV.cjs.map
159
+ //# sourceMappingURL=chunk-OONBZRPV.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../TagInput/index.tsx"],"names":["useState","useRef","jsxs","jsx","CloseOutlined"],"mappings":"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","file":"chunk-FRGH3Q75.cjs","sourcesContent":["import React, { useState, useRef, useEffect, ReactNode, CSSProperties } from 'react';\nimport { CloseOutlined } from '../src/icons';\nimport './index.less';\n\nexport interface TagInputProps {\n\t/** 标签列表(受控) */\n\tvalue?: string[];\n\t/** 默认标签列表 */\n\tdefaultValue?: string[];\n\t/** 标签列表改变回调 */\n\tonChange?: (tags: string[]) => void;\n\t/** 最大允许输入的标签数量 */\n\tmaxCount?: number;\n\t/** 单个标签的最大字符长度 */\n\tmaxLength?: number;\n\t/** 是否允许重复标签,默认为 false */\n\tallowDuplicates?: boolean;\n\t/** 触发添加标签的按键/分隔符,默认为 ['Enter', ',', ','] */\n\tseparators?: string[];\n\t/** 标签自定义校验函数(返回 true 通过,返回 false 或 string 报错) */\n\tvalidate?: (tag: string) => boolean | string;\n\t/** 占位提示文案 */\n\tplaceholder?: string;\n\t/** 是否禁用 */\n\tdisabled?: boolean;\n\t/** 自定义渲染单个 Tag */\n\trenderTag?: (tag: string, index: number, onClose: () => void) => ReactNode;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst TagInput: React.FC<TagInputProps> = ({\n\tvalue: controlledValue,\n\tdefaultValue = [],\n\tonChange,\n\tmaxCount,\n\tmaxLength,\n\tallowDuplicates = false,\n\tseparators = ['Enter', ',', ','],\n\tvalidate,\n\tplaceholder = '输入标签后按回车...',\n\tdisabled = false,\n\trenderTag,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [internalTags, setInternalTags] = useState<string[]>(defaultValue);\n\tconst tags = controlledValue !== undefined ? controlledValue : internalTags;\n\n\tconst [inputValue, setInputValue] = useState<string>('');\n\tconst [isFocused, setIsFocused] = useState<boolean>(false);\n\tconst [errorMessage, setErrorMessage] = useState<string>('');\n\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\n\t// 添加 Tag\n\tconst addTag = (text: string) => {\n\t\tconst trimmed = text.trim();\n\t\tif (!trimmed) return;\n\n\t\tif (maxCount !== undefined && tags.length >= maxCount) {\n\t\t\tsetErrorMessage(`最多只能添加 ${maxCount} 个标签`);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!allowDuplicates && tags.includes(trimmed)) {\n\t\t\tsetErrorMessage(`标签 \"${trimmed}\" 已存在`);\n\t\t\treturn;\n\t\t}\n\n\t\tif (validate) {\n\t\t\tconst res = validate(trimmed);\n\t\t\tif (typeof res === 'string') {\n\t\t\t\tsetErrorMessage(res);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (res === false) {\n\t\t\t\tsetErrorMessage(`标签 \"${trimmed}\" 格式不合法`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tconst nextTags = [...tags, trimmed];\n\t\tif (controlledValue === undefined) {\n\t\t\tsetInternalTags(nextTags);\n\t\t}\n\t\tonChange?.(nextTags);\n\t\tsetInputValue('');\n\t\tsetErrorMessage('');\n\t};\n\n\t// 删除 Tag\n\tconst removeTag = (index: number) => {\n\t\tif (disabled) return;\n\t\tconst nextTags = tags.filter((_, i) => i !== index);\n\t\tif (controlledValue === undefined) {\n\t\t\tsetInternalTags(nextTags);\n\t\t}\n\t\tonChange?.(nextTags);\n\t\tsetErrorMessage('');\n\t};\n\n\t// 键盘事件处理\n\tconst handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n\t\tif (disabled) return;\n\n\t\t// 分隔符触发添加\n\t\tif (separators.includes(e.key)) {\n\t\t\te.preventDefault();\n\t\t\taddTag(inputValue);\n\t\t\treturn;\n\t\t}\n\n\t\t// 退格键删除最后一个 Tag\n\t\tif (e.key === 'Backspace' && !inputValue && tags.length > 0) {\n\t\t\te.preventDefault();\n\t\t\tremoveTag(tags.length - 1);\n\t\t}\n\t};\n\n\t// 失去焦点时添加\n\tconst handleBlur = () => {\n\t\tsetIsFocused(false);\n\t\tif (inputValue.trim()) {\n\t\t\taddTag(inputValue);\n\t\t}\n\t};\n\n\t// 双击编辑 Tag\n\tconst handleDoubleClick = (index: number, tag: string) => {\n\t\tif (disabled) return;\n\t\tremoveTag(index);\n\t\tsetInputValue(tag);\n\t\tinputRef.current?.focus();\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tclassName={`rpc_tag_input ${isFocused ? 'rpc_tag_input_focused' : ''} ${\n\t\t\t\tdisabled ? 'rpc_tag_input_disabled' : ''\n\t\t\t} ${errorMessage ? 'rpc_tag_input_error' : ''} ${className}`}\n\t\t\tstyle={style}\n\t\t\tonClick={() => {\n\t\t\t\tif (!disabled) inputRef.current?.focus();\n\t\t\t}}\n\t\t>\n\t\t\t{tags.map((tag, idx) => {\n\t\t\t\tif (renderTag) {\n\t\t\t\t\treturn renderTag(tag, idx, () => removeTag(idx));\n\t\t\t\t}\n\t\t\t\treturn (\n\t\t\t\t\t<span\n\t\t\t\t\t\tkey={idx}\n\t\t\t\t\t\tclassName=\"rpc_tag_input_tag\"\n\t\t\t\t\t\tonDoubleClick={() => handleDoubleClick(idx, tag)}\n\t\t\t\t\t\ttitle=\"双击可重新编辑\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<span>{tag}</span>\n\t\t\t\t\t\t{!disabled && (\n\t\t\t\t\t\t\t<CloseOutlined\n\t\t\t\t\t\t\t\tclassName=\"rpc_tag_input_tag_close\"\n\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\tremoveTag(idx);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</span>\n\t\t\t\t);\n\t\t\t})}\n\n\t\t\t{(!maxCount || tags.length < maxCount) && (\n\t\t\t\t<input\n\t\t\t\t\tref={inputRef}\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tvalue={inputValue}\n\t\t\t\t\tmaxLength={maxLength}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tclassName=\"rpc_tag_input_input\"\n\t\t\t\t\tplaceholder={tags.length === 0 ? placeholder : ''}\n\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\tsetInputValue(e.target.value);\n\t\t\t\t\t\tif (errorMessage) setErrorMessage('');\n\t\t\t\t\t}}\n\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\tonFocus={() => setIsFocused(true)}\n\t\t\t\t\tonBlur={handleBlur}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{errorMessage && <div className=\"rpc_tag_input_error_tip\">{errorMessage}</div>}\n\t\t</div>\n\t);\n};\n\nexport default TagInput;\n"]}
1
+ {"version":3,"sources":["../TagInput/index.tsx"],"names":["useState","useRef","jsxs","jsx","CloseOutlined"],"mappings":"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","file":"chunk-OONBZRPV.cjs","sourcesContent":["import React, { useState, useRef, useEffect, ReactNode, CSSProperties } from 'react';\nimport { CloseOutlined } from '../src/icons';\nimport './index.less';\n\nexport interface TagInputProps {\n\t/** 标签列表(受控) */\n\tvalue?: string[];\n\t/** 默认标签列表 */\n\tdefaultValue?: string[];\n\t/** 标签列表改变回调 */\n\tonChange?: (tags: string[]) => void;\n\t/** 最大允许输入的标签数量 */\n\tmaxCount?: number;\n\t/** 单个标签的最大字符长度 */\n\tmaxLength?: number;\n\t/** 是否允许重复标签,默认为 false */\n\tallowDuplicates?: boolean;\n\t/** 触发添加标签的按键/分隔符,默认为 ['Enter', ',', ','] */\n\tseparators?: string[];\n\t/** 标签自定义校验函数(返回 true 通过,返回 false 或 string 报错) */\n\tvalidate?: (tag: string) => boolean | string;\n\t/** 占位提示文案 */\n\tplaceholder?: string;\n\t/** 是否禁用 */\n\tdisabled?: boolean;\n\t/** 自定义渲染单个 Tag */\n\trenderTag?: (tag: string, index: number, onClose: () => void) => ReactNode;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst TagInput: React.FC<TagInputProps> = ({\n\tvalue: controlledValue,\n\tdefaultValue = [],\n\tonChange,\n\tmaxCount,\n\tmaxLength,\n\tallowDuplicates = false,\n\tseparators = ['Enter', ',', ','],\n\tvalidate,\n\tplaceholder = '输入标签后按回车...',\n\tdisabled = false,\n\trenderTag,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [internalTags, setInternalTags] = useState<string[]>(defaultValue);\n\tconst tags = controlledValue !== undefined ? controlledValue : internalTags;\n\n\tconst [inputValue, setInputValue] = useState<string>('');\n\tconst [isFocused, setIsFocused] = useState<boolean>(false);\n\tconst [errorMessage, setErrorMessage] = useState<string>('');\n\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\n\t// 添加 Tag\n\tconst addTag = (text: string) => {\n\t\tconst trimmed = text.trim();\n\t\tif (!trimmed) return;\n\n\t\tif (maxCount !== undefined && tags.length >= maxCount) {\n\t\t\tsetErrorMessage(`最多只能添加 ${maxCount} 个标签`);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!allowDuplicates && tags.includes(trimmed)) {\n\t\t\tsetErrorMessage(`标签 \"${trimmed}\" 已存在`);\n\t\t\treturn;\n\t\t}\n\n\t\tif (validate) {\n\t\t\tconst res = validate(trimmed);\n\t\t\tif (typeof res === 'string') {\n\t\t\t\tsetErrorMessage(res);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (res === false) {\n\t\t\t\tsetErrorMessage(`标签 \"${trimmed}\" 格式不合法`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tconst nextTags = [...tags, trimmed];\n\t\tif (controlledValue === undefined) {\n\t\t\tsetInternalTags(nextTags);\n\t\t}\n\t\tonChange?.(nextTags);\n\t\tsetInputValue('');\n\t\tsetErrorMessage('');\n\t};\n\n\t// 删除 Tag\n\tconst removeTag = (index: number) => {\n\t\tif (disabled) return;\n\t\tconst nextTags = tags.filter((_, i) => i !== index);\n\t\tif (controlledValue === undefined) {\n\t\t\tsetInternalTags(nextTags);\n\t\t}\n\t\tonChange?.(nextTags);\n\t\tsetErrorMessage('');\n\t};\n\n\t// 键盘事件处理\n\tconst handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n\t\tif (disabled) return;\n\n\t\t// 分隔符触发添加\n\t\tif (separators.includes(e.key)) {\n\t\t\te.preventDefault();\n\t\t\taddTag(inputValue);\n\t\t\treturn;\n\t\t}\n\n\t\t// 退格键删除最后一个 Tag\n\t\tif (e.key === 'Backspace' && !inputValue && tags.length > 0) {\n\t\t\te.preventDefault();\n\t\t\tremoveTag(tags.length - 1);\n\t\t}\n\t};\n\n\t// 失去焦点时添加\n\tconst handleBlur = () => {\n\t\tsetIsFocused(false);\n\t\tif (inputValue.trim()) {\n\t\t\taddTag(inputValue);\n\t\t}\n\t};\n\n\t// 双击编辑 Tag\n\tconst handleDoubleClick = (index: number, tag: string) => {\n\t\tif (disabled) return;\n\t\tremoveTag(index);\n\t\tsetInputValue(tag);\n\t\tinputRef.current?.focus();\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tclassName={`rpc_tag_input ${isFocused ? 'rpc_tag_input_focused' : ''} ${\n\t\t\t\tdisabled ? 'rpc_tag_input_disabled' : ''\n\t\t\t} ${errorMessage ? 'rpc_tag_input_error' : ''} ${className}`}\n\t\t\tstyle={style}\n\t\t\tonClick={() => {\n\t\t\t\tif (!disabled) inputRef.current?.focus();\n\t\t\t}}\n\t\t>\n\t\t\t{tags.map((tag, idx) => {\n\t\t\t\tif (renderTag) {\n\t\t\t\t\treturn renderTag(tag, idx, () => removeTag(idx));\n\t\t\t\t}\n\t\t\t\treturn (\n\t\t\t\t\t<span\n\t\t\t\t\t\tkey={idx}\n\t\t\t\t\t\tclassName=\"rpc_tag_input_tag\"\n\t\t\t\t\t\tonDoubleClick={() => handleDoubleClick(idx, tag)}\n\t\t\t\t\t\ttitle=\"双击可重新编辑\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<span>{tag}</span>\n\t\t\t\t\t\t{!disabled && (\n\t\t\t\t\t\t\t<CloseOutlined\n\t\t\t\t\t\t\t\tclassName=\"rpc_tag_input_tag_close\"\n\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\tremoveTag(idx);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</span>\n\t\t\t\t);\n\t\t\t})}\n\n\t\t\t{(!maxCount || tags.length < maxCount) && (\n\t\t\t\t<input\n\t\t\t\t\tref={inputRef}\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tvalue={inputValue}\n\t\t\t\t\tmaxLength={maxLength}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tclassName=\"rpc_tag_input_input\"\n\t\t\t\t\tplaceholder={tags.length === 0 ? placeholder : ''}\n\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\tsetInputValue(e.target.value);\n\t\t\t\t\t\tif (errorMessage) setErrorMessage('');\n\t\t\t\t\t}}\n\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\tonFocus={() => setIsFocused(true)}\n\t\t\t\t\tonBlur={handleBlur}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{errorMessage && <div className=\"rpc_tag_input_error_tip\">{errorMessage}</div>}\n\t\t</div>\n\t);\n};\n\nexport default TagInput;\n"]}
@@ -1,4 +1,4 @@
1
- import { CopyOutlined, CheckOutlined } from './chunk-TGSKTHTV.js';
1
+ import { CopyOutlined, CheckOutlined } from './chunk-2IDVNTKR.js';
2
2
  import { useState, useRef, useEffect } from 'react';
3
3
  import { jsxs, jsx } from 'react/jsx-runtime';
4
4
 
@@ -121,5 +121,5 @@ var CopyButton = ({
121
121
  var CopyButton_default = CopyButton;
122
122
 
123
123
  export { CopyButton_default };
124
- //# sourceMappingURL=chunk-UT5UXO44.js.map
125
- //# sourceMappingURL=chunk-UT5UXO44.js.map
124
+ //# sourceMappingURL=chunk-P5CS7V4W.js.map
125
+ //# sourceMappingURL=chunk-P5CS7V4W.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../CopyButton/index.tsx"],"names":[],"mappings":"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","file":"chunk-P5CS7V4W.js","sourcesContent":["import React, { useState, useRef, useEffect, ReactNode, CSSProperties } from 'react';\nimport { CopyOutlined, CheckOutlined } from '../src/icons';\nimport './index.less';\n\nexport interface CopyButtonProps {\n\t/** 要复制的目标文本 */\n\ttext?: string;\n\t/** 动态获取要复制的目标文本(支持异步) */\n\tgetText?: () => string | Promise<string>;\n\t/** 复制按钮的展示形态:button 按钮形态、icon 纯图标、inline 行内文本 */\n\tmode?: 'button' | 'icon' | 'inline';\n\t/** 按钮类型(仅在 mode='button' 时有效) */\n\ttype?: 'default' | 'primary';\n\t/** 默认图标 */\n\ticon?: ReactNode;\n\t/** 复制成功后的图标 */\n\tcopiedIcon?: ReactNode;\n\t/** 复制成功后展示的文本 */\n\tcopiedText?: ReactNode;\n\t/** 默认展示的子内容/按钮文案 */\n\tchildren?: ReactNode;\n\t/** 复制成功提示的 Tooltip 配置(传 false 禁用,传字符串/ReactNode 自定义文案,传 true 使用默认'复制成功') */\n\ttooltip?: boolean | ReactNode;\n\t/** 复制成功后的高亮展示持续时间(毫秒),默认 2000ms */\n\tduration?: number;\n\t/** 是否禁用 */\n\tdisabled?: boolean;\n\t/** 成功复制回调 */\n\tonCopy?: (text: string) => void;\n\t/** 复制失败回调 */\n\tonError?: (error: unknown) => void;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\n/** 浏览器剪贴板复制降级方案 */\nasync function copyToClipboard(content: string): Promise<void> {\n\tif (navigator.clipboard && window.isSecureContext) {\n\t\tawait navigator.clipboard.writeText(content);\n\t\treturn;\n\t}\n\n\tconst textArea = document.createElement('textarea');\n\ttextArea.value = content;\n\ttextArea.style.position = 'fixed';\n\ttextArea.style.left = '-999999px';\n\ttextArea.style.top = '-999999px';\n\tdocument.body.appendChild(textArea);\n\ttextArea.focus();\n\ttextArea.select();\n\n\treturn new Promise((resolve, reject) => {\n\t\tconst successful = document.execCommand('copy');\n\t\ttextArea.remove();\n\t\tif (successful) {\n\t\t\tresolve();\n\t\t} else {\n\t\t\treject(new Error('复制失败'));\n\t\t}\n\t});\n}\n\nconst CopyButton: React.FC<CopyButtonProps> = ({\n\ttext,\n\tgetText,\n\tmode = 'button',\n\ttype = 'default',\n\ticon,\n\tcopiedIcon,\n\tcopiedText,\n\tchildren,\n\ttooltip = true,\n\tduration = 2000,\n\tdisabled = false,\n\tonCopy,\n\tonError,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [isCopied, setIsCopied] = useState<boolean>(false);\n\tconst [isHovered, setIsHovered] = useState<boolean>(false);\n\tconst timerRef = useRef<number | null>(null);\n\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\tif (timerRef.current) {\n\t\t\t\twindow.clearTimeout(timerRef.current);\n\t\t\t}\n\t\t};\n\t}, []);\n\n\tconst handleCopy = async (e: React.MouseEvent) => {\n\t\te.stopPropagation();\n\t\tif (disabled) return;\n\n\t\ttry {\n\t\t\tlet targetText = text || '';\n\t\t\tif (getText) {\n\t\t\t\ttargetText = await getText();\n\t\t\t}\n\n\t\t\tawait copyToClipboard(targetText);\n\t\t\tsetIsCopied(true);\n\t\t\tonCopy?.(targetText);\n\n\t\t\tif (timerRef.current) {\n\t\t\t\twindow.clearTimeout(timerRef.current);\n\t\t\t}\n\t\t\ttimerRef.current = window.setTimeout(() => {\n\t\t\t\tsetIsCopied(false);\n\t\t\t}, duration);\n\t\t} catch (err) {\n\t\t\tonError?.(err);\n\t\t}\n\t};\n\n\tconst defaultIcon = icon ?? <CopyOutlined />;\n\tconst defaultCopiedIcon = copiedIcon ?? <CheckOutlined style={{ color: '#52c41a' }} />;\n\n\t// 计算展示的图标与文案\n\tconst currentIcon = isCopied ? defaultCopiedIcon : defaultIcon;\n\tconst currentText = isCopied\n\t\t? (copiedText ?? children ?? '已复制')\n\t\t: (children ?? (mode === 'button' ? '复制' : null));\n\n\t// Tooltip 提示文本计算\n\tlet tooltipContent: ReactNode = null;\n\tif (tooltip) {\n\t\tif (isCopied) {\n\t\t\ttooltipContent = typeof tooltip === 'boolean' ? '复制成功!' : tooltip;\n\t\t} else if (mode === 'icon') {\n\t\t\ttooltipContent = '点击复制';\n\t\t}\n\t}\n\n\tconst classNames = [\n\t\t'rpc_copy_button',\n\t\t`rpc_copy_button_${mode}`,\n\t\ttype === 'primary' && mode === 'button' ? 'rpc_copy_button_primary' : '',\n\t\tisCopied ? 'rpc_copy_button_copied' : '',\n\t\tdisabled ? 'rpc_copy_button_disabled' : '',\n\t\tclassName,\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames}\n\t\t\tstyle={style}\n\t\t\tonClick={handleCopy}\n\t\t\tonMouseEnter={() => setIsHovered(true)}\n\t\t\tonMouseLeave={() => setIsHovered(false)}\n\t\t\trole=\"button\"\n\t\t\ttabIndex={disabled ? -1 : 0}\n\t\t>\n\t\t\t<span className=\"rpc_copy_button_icon_wrap\">{currentIcon}</span>\n\t\t\t{currentText && <span>{currentText}</span>}\n\n\t\t\t{tooltip && tooltipContent && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={`rpc_copy_button_tooltip ${\n\t\t\t\t\t\tisCopied\n\t\t\t\t\t\t\t? 'rpc_copy_button_tooltip_visible'\n\t\t\t\t\t\t\t: isHovered\n\t\t\t\t\t\t\t\t? 'rpc_copy_button_tooltip_hover'\n\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t}`}\n\t\t\t\t>\n\t\t\t\t\t{tooltipContent}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default CopyButton;\n"]}
@@ -1,4 +1,4 @@
1
- import { PauseCircleOutlined, PlayCircleOutlined, DownloadOutlined } from './chunk-TGSKTHTV.js';
1
+ import { PauseCircleOutlined, PlayCircleOutlined, DownloadOutlined } from './chunk-2IDVNTKR.js';
2
2
  import { useRef, useState } from 'react';
3
3
  import { jsxs, jsx } from 'react/jsx-runtime';
4
4
 
@@ -123,5 +123,5 @@ var AudioPlayer = ({
123
123
  var AudioPlayer_default = AudioPlayer;
124
124
 
125
125
  export { AudioPlayer_default };
126
- //# sourceMappingURL=chunk-HQ65GEM7.js.map
127
- //# sourceMappingURL=chunk-HQ65GEM7.js.map
126
+ //# sourceMappingURL=chunk-PTFKE67K.js.map
127
+ //# sourceMappingURL=chunk-PTFKE67K.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../AudioPlayer/index.tsx"],"names":[],"mappings":"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","file":"chunk-HQ65GEM7.js","sourcesContent":["import React, { useState, useRef, useEffect, ReactNode, CSSProperties } from 'react';\nimport { PlayCircleOutlined, PauseCircleOutlined, DownloadOutlined } from '../src/icons';\nimport './index.less';\n\nexport interface AudioPlayerProps {\n\t/** 音频资源地址 */\n\tsrc: string;\n\t/** 音频标题或文件名 */\n\ttitle?: ReactNode;\n\t/** 默认倍速,默认为 1 */\n\tdefaultPlaybackRate?: number;\n\t/** 是否显示下载按钮,默认为 true */\n\tshowDownload?: boolean;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nfunction formatTime(seconds: number): string {\n\tif (isNaN(seconds) || seconds < 0) return '00:00';\n\tconst m = Math.floor(seconds / 60);\n\tconst s = Math.floor(seconds % 60);\n\treturn `${String(m).padStart(2, '0')}:${String(s).padStart(2, '0')}`;\n}\n\nconst speedOptions = [1.0, 1.25, 1.5, 2.0];\n\nconst AudioPlayer: React.FC<AudioPlayerProps> = ({\n\tsrc,\n\ttitle,\n\tdefaultPlaybackRate = 1.0,\n\tshowDownload = true,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst audioRef = useRef<HTMLAudioElement>(null);\n\tconst progressRef = useRef<HTMLDivElement>(null);\n\n\tconst [isPlaying, setIsPlaying] = useState<boolean>(false);\n\tconst [currentTime, setCurrentTime] = useState<number>(0);\n\tconst [duration, setDuration] = useState<number>(0);\n\tconst [speedIndex, setSpeedIndex] = useState<number>(\n\t\tMath.max(0, speedOptions.indexOf(defaultPlaybackRate)),\n\t);\n\n\tconst currentSpeed = speedOptions[speedIndex] || 1.0;\n\n\t// 播放 / 暂停切换\n\tconst togglePlay = () => {\n\t\tconst audio = audioRef.current;\n\t\tif (!audio) return;\n\t\tif (isPlaying) {\n\t\t\taudio.pause();\n\t\t\tsetIsPlaying(false);\n\t\t} else {\n\t\t\taudio.play();\n\t\t\tsetIsPlaying(true);\n\t\t}\n\t};\n\n\t// 监听时间更新\n\tconst handleTimeUpdate = () => {\n\t\tif (audioRef.current) {\n\t\t\tsetCurrentTime(audioRef.current.currentTime);\n\t\t}\n\t};\n\n\t// 监听时长加载\n\tconst handleLoadedMetadata = () => {\n\t\tif (audioRef.current) {\n\t\t\tsetDuration(audioRef.current.duration);\n\t\t}\n\t};\n\n\t// 切换倍速\n\tconst handleSpeedCycle = () => {\n\t\tconst nextIndex = (speedIndex + 1) % speedOptions.length;\n\t\tsetSpeedIndex(nextIndex);\n\t\tif (audioRef.current) {\n\t\t\taudioRef.current.playbackRate = speedOptions[nextIndex];\n\t\t}\n\t};\n\n\t// 拖拽进度条 Seek\n\tconst handleSeek = (e: React.MouseEvent<HTMLDivElement>) => {\n\t\tif (!progressRef.current || !audioRef.current || !duration) return;\n\t\tconst rect = progressRef.current.getBoundingClientRect();\n\t\tconst percent = Math.min(1, Math.max(0, (e.clientX - rect.left) / rect.width));\n\t\tconst targetTime = percent * duration;\n\t\taudioRef.current.currentTime = targetTime;\n\t\tsetCurrentTime(targetTime);\n\t};\n\n\tconst progressPercent = duration > 0 ? (currentTime / duration) * 100 : 0;\n\n\treturn (\n\t\t<div className={`rpc_audio_player ${className}`} style={style}>\n\t\t\t<audio\n\t\t\t\tref={audioRef}\n\t\t\t\tsrc={src}\n\t\t\t\tonTimeUpdate={handleTimeUpdate}\n\t\t\t\tonLoadedMetadata={handleLoadedMetadata}\n\t\t\t\tonEnded={() => setIsPlaying(false)}\n\t\t\t/>\n\n\t\t\t{/* 播放 / 暂停按钮 */}\n\t\t\t<div className=\"rpc_audio_player_play_btn\" onClick={togglePlay}>\n\t\t\t\t{isPlaying ? <PauseCircleOutlined /> : <PlayCircleOutlined />}\n\t\t\t</div>\n\n\t\t\t{/* 信息与进度条 */}\n\t\t\t<div className=\"rpc_audio_player_info\">\n\t\t\t\t<div className=\"rpc_audio_player_title_row\">\n\t\t\t\t\t<span className=\"rpc_audio_player_title\">{title || '音频播放'}</span>\n\t\t\t\t\t<span className=\"rpc_audio_player_time\">\n\t\t\t\t\t\t{formatTime(currentTime)} / {formatTime(duration)}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\n\t\t\t\t<div ref={progressRef} className=\"rpc_audio_player_progress_bar\" onClick={handleSeek}>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"rpc_audio_player_progress_fill\"\n\t\t\t\t\t\tstyle={{ width: `${progressPercent}%` }}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{/* 倍速与下载 */}\n\t\t\t<div className=\"rpc_audio_player_extra\">\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclassName=\"rpc_audio_player_speed_btn\"\n\t\t\t\t\tonClick={handleSpeedCycle}\n\t\t\t\t\ttitle=\"点击切换播放倍速\"\n\t\t\t\t>\n\t\t\t\t\t{currentSpeed}x\n\t\t\t\t</button>\n\n\t\t\t\t{showDownload && (\n\t\t\t\t\t<a\n\t\t\t\t\t\thref={src}\n\t\t\t\t\t\tdownload\n\t\t\t\t\t\tclassName=\"rpc_audio_player_download_btn\"\n\t\t\t\t\t\ttitle=\"下载音频文件\"\n\t\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t\t>\n\t\t\t\t\t\t<DownloadOutlined />\n\t\t\t\t\t</a>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default AudioPlayer;\n"]}
1
+ {"version":3,"sources":["../AudioPlayer/index.tsx"],"names":[],"mappings":";;;;AAmBA,SAAS,WAAW,OAAA,EAAyB;AAC5C,EAAA,IAAI,KAAA,CAAM,OAAO,CAAA,IAAK,OAAA,GAAU,GAAG,OAAO,OAAA;AAC1C,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,OAAA,GAAU,EAAE,CAAA;AACjC,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,OAAA,GAAU,EAAE,CAAA;AACjC,EAAA,OAAO,CAAA,EAAG,MAAA,CAAO,CAAC,CAAA,CAAE,SAAS,CAAA,EAAG,GAAG,CAAC,CAAA,CAAA,EAAI,OAAO,CAAC,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA,CAAA;AACnE;AAEA,IAAM,YAAA,GAAe,CAAC,CAAA,EAAK,IAAA,EAAM,KAAK,CAAG,CAAA;AAEzC,IAAM,cAA0C,CAAC;AAAA,EAChD,GAAA;AAAA,EACA,KAAA;AAAA,EACA,mBAAA,GAAsB,CAAA;AAAA,EACtB,YAAA,GAAe,IAAA;AAAA,EACf,SAAA,GAAY,EAAA;AAAA,EACZ;AACD,CAAA,KAAM;AACL,EAAA,MAAM,QAAA,GAAW,OAAyB,IAAI,CAAA;AAC9C,EAAA,MAAM,WAAA,GAAc,OAAuB,IAAI,CAAA;AAE/C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAkB,KAAK,CAAA;AACzD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAiB,CAAC,CAAA;AACxD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAiB,CAAC,CAAA;AAClD,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,QAAA;AAAA,IACnC,KAAK,GAAA,CAAI,CAAA,EAAG,YAAA,CAAa,OAAA,CAAQ,mBAAmB,CAAC;AAAA,GACtD;AAEA,EAAA,MAAM,YAAA,GAAe,YAAA,CAAa,UAAU,CAAA,IAAK,CAAA;AAGjD,EAAA,MAAM,aAAa,MAAM;AACxB,IAAA,MAAM,QAAQ,QAAA,CAAS,OAAA;AACvB,IAAA,IAAI,CAAC,KAAA,EAAO;AACZ,IAAA,IAAI,SAAA,EAAW;AACd,MAAA,KAAA,CAAM,KAAA,EAAM;AACZ,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,IACnB,CAAA,MAAO;AACN,MAAA,KAAA,CAAM,IAAA,EAAK;AACX,MAAA,YAAA,CAAa,IAAI,CAAA;AAAA,IAClB;AAAA,EACD,CAAA;AAGA,EAAA,MAAM,mBAAmB,MAAM;AAC9B,IAAA,IAAI,SAAS,OAAA,EAAS;AACrB,MAAA,cAAA,CAAe,QAAA,CAAS,QAAQ,WAAW,CAAA;AAAA,IAC5C;AAAA,EACD,CAAA;AAGA,EAAA,MAAM,uBAAuB,MAAM;AAClC,IAAA,IAAI,SAAS,OAAA,EAAS;AACrB,MAAA,WAAA,CAAY,QAAA,CAAS,QAAQ,QAAQ,CAAA;AAAA,IACtC;AAAA,EACD,CAAA;AAGA,EAAA,MAAM,mBAAmB,MAAM;AAC9B,IAAA,MAAM,SAAA,GAAA,CAAa,UAAA,GAAa,CAAA,IAAK,YAAA,CAAa,MAAA;AAClD,IAAA,aAAA,CAAc,SAAS,CAAA;AACvB,IAAA,IAAI,SAAS,OAAA,EAAS;AACrB,MAAA,QAAA,CAAS,OAAA,CAAQ,YAAA,GAAe,YAAA,CAAa,SAAS,CAAA;AAAA,IACvD;AAAA,EACD,CAAA;AAGA,EAAA,MAAM,UAAA,GAAa,CAAC,CAAA,KAAwC;AAC3D,IAAA,IAAI,CAAC,WAAA,CAAY,OAAA,IAAW,CAAC,QAAA,CAAS,OAAA,IAAW,CAAC,QAAA,EAAU;AAC5D,IAAA,MAAM,IAAA,GAAO,WAAA,CAAY,OAAA,CAAQ,qBAAA,EAAsB;AACvD,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,CAAA,EAAA,CAAI,CAAA,CAAE,OAAA,GAAU,IAAA,CAAK,IAAA,IAAQ,IAAA,CAAK,KAAK,CAAC,CAAA;AAC7E,IAAA,MAAM,aAAa,OAAA,GAAU,QAAA;AAC7B,IAAA,QAAA,CAAS,QAAQ,WAAA,GAAc,UAAA;AAC/B,IAAA,cAAA,CAAe,UAAU,CAAA;AAAA,EAC1B,CAAA;AAEA,EAAA,MAAM,eAAA,GAAkB,QAAA,GAAW,CAAA,GAAK,WAAA,GAAc,WAAY,GAAA,GAAM,CAAA;AAExE,EAAA,4BACE,KAAA,EAAA,EAAI,SAAA,EAAW,CAAA,iBAAA,EAAoB,SAAS,IAAI,KAAA,EAChD,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACA,GAAA,EAAK,QAAA;AAAA,QACL,GAAA;AAAA,QACA,YAAA,EAAc,gBAAA;AAAA,QACd,gBAAA,EAAkB,oBAAA;AAAA,QAClB,OAAA,EAAS,MAAM,YAAA,CAAa,KAAK;AAAA;AAAA,KAClC;AAAA,oBAGA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2BAAA,EAA4B,OAAA,EAAS,UAAA,EAClD,QAAA,EAAA,SAAA,mBAAY,GAAA,CAAC,mBAAA,EAAA,EAAoB,CAAA,mBAAK,GAAA,CAAC,kBAAA,EAAA,EAAmB,CAAA,EAC5D,CAAA;AAAA,oBAGA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACd,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,4BAAA,EACd,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wBAAA,EAA0B,QAAA,EAAA,KAAA,IAAS,0BAAA,EAAO,CAAA;AAAA,wBAC1D,IAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAA,EACd,QAAA,EAAA;AAAA,UAAA,UAAA,CAAW,WAAW,CAAA;AAAA,UAAE,KAAA;AAAA,UAAI,WAAW,QAAQ;AAAA,SAAA,EACjD;AAAA,OAAA,EACD,CAAA;AAAA,0BAEC,KAAA,EAAA,EAAI,GAAA,EAAK,aAAa,SAAA,EAAU,+BAAA,EAAgC,SAAS,UAAA,EACzE,QAAA,kBAAA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACA,SAAA,EAAU,gCAAA;AAAA,UACV,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,EAAG,eAAe,CAAA,CAAA,CAAA;AAAI;AAAA,OACvC,EACD;AAAA,KAAA,EACD,CAAA;AAAA,oBAGA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EACd,QAAA,EAAA;AAAA,sBAAA,IAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACA,IAAA,EAAK,QAAA;AAAA,UACL,SAAA,EAAU,4BAAA;AAAA,UACV,OAAA,EAAS,gBAAA;AAAA,UACT,KAAA,EAAM,kDAAA;AAAA,UAEL,QAAA,EAAA;AAAA,YAAA,YAAA;AAAA,YAAa;AAAA;AAAA;AAAA,OACf;AAAA,MAEC,YAAA,oBACA,GAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACA,IAAA,EAAM,GAAA;AAAA,UACN,QAAA,EAAQ,IAAA;AAAA,UACR,SAAA,EAAU,+BAAA;AAAA,UACV,KAAA,EAAM,sCAAA;AAAA,UACN,OAAA,EAAS,CAAC,CAAA,KAAM,CAAA,CAAE,eAAA,EAAgB;AAAA,UAElC,8BAAC,gBAAA,EAAA,EAAiB;AAAA;AAAA;AACnB,KAAA,EAEF;AAAA,GAAA,EACD,CAAA;AAEF,CAAA;AAEA,IAAO,mBAAA,GAAQ","file":"chunk-PTFKE67K.js","sourcesContent":["import React, { useState, useRef, useEffect, ReactNode, CSSProperties } from 'react';\nimport { PlayCircleOutlined, PauseCircleOutlined, DownloadOutlined } from '../src/icons';\nimport './index.less';\n\nexport interface AudioPlayerProps {\n\t/** 音频资源地址 */\n\tsrc: string;\n\t/** 音频标题或文件名 */\n\ttitle?: ReactNode;\n\t/** 默认倍速,默认为 1 */\n\tdefaultPlaybackRate?: number;\n\t/** 是否显示下载按钮,默认为 true */\n\tshowDownload?: boolean;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nfunction formatTime(seconds: number): string {\n\tif (isNaN(seconds) || seconds < 0) return '00:00';\n\tconst m = Math.floor(seconds / 60);\n\tconst s = Math.floor(seconds % 60);\n\treturn `${String(m).padStart(2, '0')}:${String(s).padStart(2, '0')}`;\n}\n\nconst speedOptions = [1.0, 1.25, 1.5, 2.0];\n\nconst AudioPlayer: React.FC<AudioPlayerProps> = ({\n\tsrc,\n\ttitle,\n\tdefaultPlaybackRate = 1.0,\n\tshowDownload = true,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst audioRef = useRef<HTMLAudioElement>(null);\n\tconst progressRef = useRef<HTMLDivElement>(null);\n\n\tconst [isPlaying, setIsPlaying] = useState<boolean>(false);\n\tconst [currentTime, setCurrentTime] = useState<number>(0);\n\tconst [duration, setDuration] = useState<number>(0);\n\tconst [speedIndex, setSpeedIndex] = useState<number>(\n\t\tMath.max(0, speedOptions.indexOf(defaultPlaybackRate)),\n\t);\n\n\tconst currentSpeed = speedOptions[speedIndex] || 1.0;\n\n\t// 播放 / 暂停切换\n\tconst togglePlay = () => {\n\t\tconst audio = audioRef.current;\n\t\tif (!audio) return;\n\t\tif (isPlaying) {\n\t\t\taudio.pause();\n\t\t\tsetIsPlaying(false);\n\t\t} else {\n\t\t\taudio.play();\n\t\t\tsetIsPlaying(true);\n\t\t}\n\t};\n\n\t// 监听时间更新\n\tconst handleTimeUpdate = () => {\n\t\tif (audioRef.current) {\n\t\t\tsetCurrentTime(audioRef.current.currentTime);\n\t\t}\n\t};\n\n\t// 监听时长加载\n\tconst handleLoadedMetadata = () => {\n\t\tif (audioRef.current) {\n\t\t\tsetDuration(audioRef.current.duration);\n\t\t}\n\t};\n\n\t// 切换倍速\n\tconst handleSpeedCycle = () => {\n\t\tconst nextIndex = (speedIndex + 1) % speedOptions.length;\n\t\tsetSpeedIndex(nextIndex);\n\t\tif (audioRef.current) {\n\t\t\taudioRef.current.playbackRate = speedOptions[nextIndex];\n\t\t}\n\t};\n\n\t// 拖拽进度条 Seek\n\tconst handleSeek = (e: React.MouseEvent<HTMLDivElement>) => {\n\t\tif (!progressRef.current || !audioRef.current || !duration) return;\n\t\tconst rect = progressRef.current.getBoundingClientRect();\n\t\tconst percent = Math.min(1, Math.max(0, (e.clientX - rect.left) / rect.width));\n\t\tconst targetTime = percent * duration;\n\t\taudioRef.current.currentTime = targetTime;\n\t\tsetCurrentTime(targetTime);\n\t};\n\n\tconst progressPercent = duration > 0 ? (currentTime / duration) * 100 : 0;\n\n\treturn (\n\t\t<div className={`rpc_audio_player ${className}`} style={style}>\n\t\t\t<audio\n\t\t\t\tref={audioRef}\n\t\t\t\tsrc={src}\n\t\t\t\tonTimeUpdate={handleTimeUpdate}\n\t\t\t\tonLoadedMetadata={handleLoadedMetadata}\n\t\t\t\tonEnded={() => setIsPlaying(false)}\n\t\t\t/>\n\n\t\t\t{/* 播放 / 暂停按钮 */}\n\t\t\t<div className=\"rpc_audio_player_play_btn\" onClick={togglePlay}>\n\t\t\t\t{isPlaying ? <PauseCircleOutlined /> : <PlayCircleOutlined />}\n\t\t\t</div>\n\n\t\t\t{/* 信息与进度条 */}\n\t\t\t<div className=\"rpc_audio_player_info\">\n\t\t\t\t<div className=\"rpc_audio_player_title_row\">\n\t\t\t\t\t<span className=\"rpc_audio_player_title\">{title || '音频播放'}</span>\n\t\t\t\t\t<span className=\"rpc_audio_player_time\">\n\t\t\t\t\t\t{formatTime(currentTime)} / {formatTime(duration)}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\n\t\t\t\t<div ref={progressRef} className=\"rpc_audio_player_progress_bar\" onClick={handleSeek}>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"rpc_audio_player_progress_fill\"\n\t\t\t\t\t\tstyle={{ width: `${progressPercent}%` }}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{/* 倍速与下载 */}\n\t\t\t<div className=\"rpc_audio_player_extra\">\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclassName=\"rpc_audio_player_speed_btn\"\n\t\t\t\t\tonClick={handleSpeedCycle}\n\t\t\t\t\ttitle=\"点击切换播放倍速\"\n\t\t\t\t>\n\t\t\t\t\t{currentSpeed}x\n\t\t\t\t</button>\n\n\t\t\t\t{showDownload && (\n\t\t\t\t\t<a\n\t\t\t\t\t\thref={src}\n\t\t\t\t\t\tdownload\n\t\t\t\t\t\tclassName=\"rpc_audio_player_download_btn\"\n\t\t\t\t\t\ttitle=\"下载音频文件\"\n\t\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t\t>\n\t\t\t\t\t\t<DownloadOutlined />\n\t\t\t\t\t</a>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default AudioPlayer;\n"]}
@@ -1,4 +1,4 @@
1
- import { CopyButton_default } from './chunk-UT5UXO44.js';
1
+ import { CopyButton_default } from './chunk-P5CS7V4W.js';
2
2
  import React, { useState, useEffect } from 'react';
3
3
  import { jsxs, jsx } from 'react/jsx-runtime';
4
4
 
@@ -282,5 +282,5 @@ var CronPicker = ({
282
282
  var CronPicker_default = CronPicker;
283
283
 
284
284
  export { CronPicker_default };
285
- //# sourceMappingURL=chunk-U2TTRBES.js.map
286
- //# sourceMappingURL=chunk-U2TTRBES.js.map
285
+ //# sourceMappingURL=chunk-PUMVD7CP.js.map
286
+ //# sourceMappingURL=chunk-PUMVD7CP.js.map