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
package/dist/index.js CHANGED
@@ -1,64 +1,64 @@
1
- export { TreeFilterPanel_default as TreeFilterPanel } from './chunk-7AKHSOSZ.js';
2
- export { TreeTransfer_default as TreeTransfer } from './chunk-H5VPBP7U.js';
3
- export { TrendIndicator_default as TrendIndicator } from './chunk-2ARM7X7A.js';
4
- export { VideoPlayer_default as VideoPlayer } from './chunk-62NPVN7T.js';
5
- export { VirtualList_default as VirtualList } from './chunk-I3HBI52O.js';
6
- export { Watermark_default as Watermark } from './chunk-PVKBGP6Q.js';
7
- export { SensitiveMask_default as SensitiveMask, maskSensitiveText } from './chunk-KBBLTGIU.js';
1
+ export { TreeFilterPanel_default as TreeFilterPanel } from './chunk-5R2YXBXM.js';
2
+ export { TreeTransfer_default as TreeTransfer } from './chunk-WKF4C6TJ.js';
3
+ export { TrendIndicator_default as TrendIndicator } from './chunk-RAF7I4A5.js';
4
+ export { VideoPlayer_default as VideoPlayer } from './chunk-MQJBUHDB.js';
5
+ export { VirtualList_default as VirtualList } from './chunk-2O2A5XYF.js';
6
+ export { Watermark_default as Watermark } from './chunk-5GLC2HU6.js';
7
+ export { SensitiveMask_default as SensitiveMask, maskSensitiveText } from './chunk-M4FZJALR.js';
8
8
  export { ShimmerSkeleton_default as ShimmerSkeleton } from './chunk-KCXXUUWC.js';
9
- export { Splitter_default as Splitter } from './chunk-XB3BT6BU.js';
9
+ export { Splitter_default as Splitter } from './chunk-W5JA3YTT.js';
10
10
  export { SpotlightCard_default as SpotlightCard } from './chunk-WZ2GV4HA.js';
11
- export { StatusTimeline_default as StatusTimeline } from './chunk-JD4TEUIV.js';
12
- export { TagInput_default as TagInput } from './chunk-Z5LFRNNJ.js';
13
- export { TextEllipsis_default as TextEllipsis } from './chunk-YPVRTMX6.js';
11
+ export { StatusTimeline_default as StatusTimeline } from './chunk-YFHKH6HL.js';
12
+ export { TagInput_default as TagInput } from './chunk-OLLVIQPL.js';
13
+ export { TextEllipsis_default as TextEllipsis } from './chunk-ETFLLRTO.js';
14
14
  export { TiltCard_default as TiltCard } from './chunk-B4VXFHER.js';
15
- export { NumericRangeInput_default as NumericRangeInput } from './chunk-R7CRWOHG.js';
16
- export { PasswordStrength_default as PasswordStrength, evaluatePasswordStrength } from './chunk-DNRZCHZG.js';
17
- export { PdfViewer_default as PdfViewer } from './chunk-7JRGQL63.js';
15
+ export { NumericRangeInput_default as NumericRangeInput } from './chunk-L7X3RVEY.js';
16
+ export { PasswordStrength_default as PasswordStrength, evaluatePasswordStrength } from './chunk-2INP6NM4.js';
17
+ export { PdfViewer_default as PdfViewer } from './chunk-ZCBT56AG.js';
18
18
  export { PhotoViewer_default as PhotoViewer } from './chunk-3JJP4D5L.js';
19
- export { QrCodeCard_default as QrCodeCard } from './chunk-X4MEHYWV.js';
20
- export { QuickDateRange_default as QuickDateRange } from './chunk-NCNDJTOK.js';
21
- export { ScrollTracker_default as ScrollTracker, StickyHeader } from './chunk-EJNMH7ND.js';
22
- export { SegmentedProgress_default as SegmentedProgress } from './chunk-WBN5SAY5.js';
23
- export { JsonTree_default as JsonTree } from './chunk-QKSCFVN2.js';
24
- export { KanbanBoard_default as KanbanBoard } from './chunk-PMNTOEXC.js';
25
- export { KeyValEditor_default as KeyValEditor } from './chunk-ZAHKA2V2.js';
26
- export { Marquee_default as Marquee } from './chunk-VTANPKPT.js';
19
+ export { QrCodeCard_default as QrCodeCard } from './chunk-XUAHWX6B.js';
20
+ export { QuickDateRange_default as QuickDateRange } from './chunk-WEGDIRDB.js';
21
+ export { ScrollTracker_default as ScrollTracker, StickyHeader } from './chunk-WN557PFJ.js';
22
+ export { SegmentedProgress_default as SegmentedProgress } from './chunk-MLYM5LAX.js';
23
+ export { JsonTree_default as JsonTree } from './chunk-5HIRDMZH.js';
24
+ export { KanbanBoard_default as KanbanBoard } from './chunk-HZERTFL6.js';
25
+ export { KeyValEditor_default as KeyValEditor } from './chunk-Q7OVUH5K.js';
26
+ export { Marquee_default as Marquee } from './chunk-3R3NOO4K.js';
27
27
  export { Masonry_default as Masonry } from './chunk-ES3KKDLM.js';
28
- export { MetricCard_default as MetricCard } from './chunk-4VGH44DT.js';
28
+ export { MetricCard_default as MetricCard } from './chunk-IBYFOFSS.js';
29
29
  export { MiniSparkline_default as MiniSparkline } from './chunk-NNS4YN3C.js';
30
30
  export { NumberStepper_default as NumberStepper } from './chunk-X2F2DVMB.js';
31
- export { Fullscreen_default as Fullscreen } from './chunk-5NI6HK5V.js';
31
+ export { Fullscreen_default as Fullscreen } from './chunk-EMT4NUI5.js';
32
32
  export { GradientText_default as GradientText } from './chunk-ZLHNRKOQ.js';
33
- export { GuidedTour_default as GuidedTour } from './chunk-2ORGQ2IY.js';
33
+ export { GuidedTour_default as GuidedTour } from './chunk-IF4XAUV3.js';
34
34
  export { HoverCard_default as HoverCard } from './chunk-6TKNFV4B.js';
35
- export { ImageCropper_default as ImageCropper } from './chunk-IUR7SPDA.js';
36
- export { InfiniteScrollList_default as InfiniteScrollList } from './chunk-5G3XVLJF.js';
37
- export { JsonDiffViewer_default as JsonDiffViewer } from './chunk-X7EE5DXL.js';
38
- export { JsonEditor_default as JsonEditor } from './chunk-NFC2C2TD.js';
39
- export { DisabledBox_default as DisabledBox } from './chunk-5MQCVYVD.js';
40
- export { DragSortList_default as DragSortList } from './chunk-EQ7S5SYM.js';
35
+ export { ImageCropper_default as ImageCropper } from './chunk-QRZ2GVVJ.js';
36
+ export { InfiniteScrollList_default as InfiniteScrollList } from './chunk-JNA5AQ2K.js';
37
+ export { JsonDiffViewer_default as JsonDiffViewer } from './chunk-O2YTJPG4.js';
38
+ export { JsonEditor_default as JsonEditor } from './chunk-ANTFNDH4.js';
39
+ export { DisabledBox_default as DisabledBox } from './chunk-EJYTTSW6.js';
40
+ export { DragSortList_default as DragSortList } from './chunk-Y54KVULF.js';
41
41
  export { DualRangeSlider_default as DualRangeSlider } from './chunk-A4LXKZQ5.js';
42
- export { EnvBadge_default as EnvBadge } from './chunk-AXHJC7FV.js';
42
+ export { EnvBadge_default as EnvBadge } from './chunk-BRHXKRG6.js';
43
43
  export { FileDropZone_default as FileDropZone } from './chunk-Y7A3WQQN.js';
44
- export { FilePreviewer_default as FilePreviewer, inferFileType } from './chunk-GZCNFM6C.js';
44
+ export { FilePreviewer_default as FilePreviewer, inferFileType } from './chunk-56VELHCH.js';
45
45
  export { FilterChips_default as FilterChips } from './chunk-YXTLWTY4.js';
46
46
  export { FlipCard_default as FlipCard } from './chunk-RIR43PO3.js';
47
- export { CollapseBox_default as CollapseBox } from './chunk-VPHHGQWP.js';
48
- export { Color, ColorPicker_default as ColorPicker, generateColor } from './chunk-IECISUOZ.js';
49
- export { ContextMenu_default as ContextMenu } from './chunk-AIIXJB34.js';
50
- export { CountUp_default as CountUp } from './chunk-OJEZ3TKT.js';
51
- export { CronPicker_default as CronPicker } from './chunk-U2TTRBES.js';
52
- export { CopyButton_default as CopyButton } from './chunk-UT5UXO44.js';
53
- export { DebounceSelect_default as DebounceSelect } from './chunk-LBEGRYTP.js';
54
- export { DiffViewer_default as DiffViewer } from './chunk-OYRX4AY6.js';
55
- export { ActivityLog_default as ActivityLog } from './chunk-DKTB6PKI.js';
47
+ export { CollapseBox_default as CollapseBox } from './chunk-XLOGMDAQ.js';
48
+ export { Color, ColorPicker_default as ColorPicker, generateColor } from './chunk-EDNBPLUS.js';
49
+ export { ContextMenu_default as ContextMenu } from './chunk-CURWX7OY.js';
50
+ export { CountUp_default as CountUp } from './chunk-OBK6XTUY.js';
51
+ export { CronPicker_default as CronPicker } from './chunk-PUMVD7CP.js';
52
+ export { CopyButton_default as CopyButton } from './chunk-P5CS7V4W.js';
53
+ export { DebounceSelect_default as DebounceSelect } from './chunk-AXPVN2OO.js';
54
+ export { DiffViewer_default as DiffViewer } from './chunk-BFQV5MYD.js';
55
+ export { ActivityLog_default as ActivityLog } from './chunk-IBI6AT5Z.js';
56
56
  export { AnnouncementBar_default as AnnouncementBar } from './chunk-5YQVSOHK.js';
57
- export { AudioPlayer_default as AudioPlayer } from './chunk-HQ65GEM7.js';
58
- import './chunk-TGSKTHTV.js';
57
+ export { AudioPlayer_default as AudioPlayer } from './chunk-PTFKE67K.js';
59
58
  export { BadgeRibbon_default as BadgeRibbon } from './chunk-F36V2QTN.js';
60
59
  export { BorderBeam_default as BorderBeam } from './chunk-J3IKUWXD.js';
61
- export { CascadeDrawer_default as CascadeDrawer } from './chunk-WWL4VEPH.js';
62
- export { CodeSnippet_default as CodeSnippet } from './chunk-FWRVCH7T.js';
60
+ export { CascadeDrawer_default as CascadeDrawer } from './chunk-6UTLBY6Y.js';
61
+ export { CodeSnippet_default as CodeSnippet, openInCodePen, openInCodeSandbox, openInNewTab, openInStackBlitz } from './chunk-4KMVABTM.js';
62
+ import './chunk-2IDVNTKR.js';
63
63
  //# sourceMappingURL=index.js.map
64
64
  //# sourceMappingURL=index.js.map
@@ -33,38 +33,56 @@ export declare const FileOutlined: ({ style, className }: IconProps) => import("
33
33
  export declare const FilePdfOutlined: ({ style, className }: IconProps) => import("react").JSX.Element;
34
34
  export declare const FileImageOutlined: ({ style, className }: IconProps) => import("react").JSX.Element;
35
35
  export declare const FileTextOutlined: ({ style, className }: IconProps) => import("react").JSX.Element;
36
- export declare const EyeOutlined: ({ style, className, onClick }: IconProps & {
36
+ export declare const EyeOutlined: ({ style, className, onClick, }: IconProps & {
37
37
  onClick?: (e: React.MouseEvent) => void;
38
38
  }) => import("react").JSX.Element;
39
- export declare const EyeInvisibleOutlined: ({ style, className, onClick }: IconProps & {
39
+ export declare const EyeInvisibleOutlined: ({ style, className, onClick, }: IconProps & {
40
40
  onClick?: (e: React.MouseEvent) => void;
41
41
  }) => import("react").JSX.Element;
42
- export declare const PlayCircleOutlined: ({ style, className, onClick }: IconProps & {
42
+ export declare const PlayCircleOutlined: ({ style, className, onClick, }: IconProps & {
43
43
  onClick?: (e: React.MouseEvent) => void;
44
44
  }) => import("react").JSX.Element;
45
- export declare const PauseCircleOutlined: ({ style, className, onClick }: IconProps & {
45
+ export declare const PauseCircleOutlined: ({ style, className, onClick, }: IconProps & {
46
46
  onClick?: (e: React.MouseEvent) => void;
47
47
  }) => import("react").JSX.Element;
48
- export declare const UndoOutlined: ({ style, className, onClick }: IconProps & {
48
+ export declare const UndoOutlined: ({ style, className, onClick, }: IconProps & {
49
49
  onClick?: (e: React.MouseEvent) => void;
50
50
  }) => import("react").JSX.Element;
51
- export declare const RedoOutlined: ({ style, className, onClick }: IconProps & {
51
+ export declare const RedoOutlined: ({ style, className, onClick, }: IconProps & {
52
52
  onClick?: (e: React.MouseEvent) => void;
53
53
  }) => import("react").JSX.Element;
54
- export declare const ReloadOutlined: ({ style, className, onClick }: IconProps & {
54
+ export declare const ReloadOutlined: ({ style, className, onClick, }: IconProps & {
55
55
  onClick?: (e: React.MouseEvent) => void;
56
56
  }) => import("react").JSX.Element;
57
57
  export declare const SoundOutlined: ({ style, className }: IconProps) => import("react").JSX.Element;
58
- export declare const SendOutlined: ({ style, className, onClick }: IconProps & {
58
+ export declare const SendOutlined: ({ style, className, onClick, }: IconProps & {
59
59
  onClick?: (e: React.MouseEvent) => void;
60
60
  }) => import("react").JSX.Element;
61
- export declare const LikeOutlined: ({ style, className, onClick }: IconProps & {
61
+ export declare const LikeOutlined: ({ style, className, onClick, }: IconProps & {
62
62
  onClick?: (e: React.MouseEvent) => void;
63
63
  }) => import("react").JSX.Element;
64
- export declare const DislikeOutlined: ({ style, className, onClick }: IconProps & {
64
+ export declare const DislikeOutlined: ({ style, className, onClick, }: IconProps & {
65
65
  onClick?: (e: React.MouseEvent) => void;
66
66
  }) => import("react").JSX.Element;
67
- export declare const StarFilled: ({ style, className, onClick }: IconProps & {
67
+ export declare const StarFilled: ({ style, className, onClick, }: IconProps & {
68
+ onClick?: (e: React.MouseEvent) => void;
69
+ }) => import("react").JSX.Element;
70
+ export declare const CodeSandboxOutlined: ({ style, className, onClick }: IconProps & {
71
+ onClick?: (e: React.MouseEvent) => void;
72
+ }) => import("react").JSX.Element;
73
+ export declare const CodePenOutlined: ({ style, className, onClick }: IconProps & {
74
+ onClick?: (e: React.MouseEvent) => void;
75
+ }) => import("react").JSX.Element;
76
+ export declare const ThunderboltOutlined: ({ style, className, onClick }: IconProps & {
77
+ onClick?: (e: React.MouseEvent) => void;
78
+ }) => import("react").JSX.Element;
79
+ export declare const CodeOutlined: ({ style, className, onClick }: IconProps & {
80
+ onClick?: (e: React.MouseEvent) => void;
81
+ }) => import("react").JSX.Element;
82
+ export declare const ExportOutlined: ({ style, className, onClick }: IconProps & {
83
+ onClick?: (e: React.MouseEvent) => void;
84
+ }) => import("react").JSX.Element;
85
+ export declare const HolderOutlined: ({ style, className, onClick }: IconProps & {
68
86
  onClick?: (e: React.MouseEvent) => void;
69
87
  }) => import("react").JSX.Element;
70
88
  export {};
@@ -107,7 +107,9 @@ export type { NumberStepperProps } from '../NumberStepper';
107
107
  export { default as JsonTree } from '../JsonTree';
108
108
  export type { JsonTreeProps } from '../JsonTree';
109
109
  export { default as CodeSnippet } from '../CodeSnippet';
110
- export type { CodeSnippetProps } from '../CodeSnippet';
110
+ export { openInCodeSandbox, openInCodePen, openInStackBlitz, openInNewTab, } from '../CodeSnippet/sandbox';
111
+ export type { CodeSnippetProps, CodeSnippetTheme, CodeTabItem, BuiltinAction, } from '../CodeSnippet';
112
+ export type { SandboxConfig } from '../CodeSnippet/sandbox';
111
113
  export { default as MiniSparkline } from '../MiniSparkline';
112
114
  export type { MiniSparklineProps } from '../MiniSparkline';
113
115
  export { default as FileDropZone } from '../FileDropZone';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-public-components",
3
- "version": "1.2.2",
3
+ "version": "1.2.4",
4
4
  "description": "企业级现代 React 通用核心组件库,零 UI 库依赖,开箱即用",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../VirtualList/index.tsx"],"names":["useState","useRef","useMemo","jsx"],"mappings":";;;;;;AAsBA,SAAS,WAAA,CAAe;AAAA,EACvB,QAAQ,EAAC;AAAA,EACT,UAAA,GAAa,EAAA;AAAA,EACb,MAAA,GAAS,GAAA;AAAA,EACT,UAAA;AAAA,EACA,YAAA;AAAA,EACA,MAAA,GAAS,CAAA;AAAA,EACT,SAAA,GAAY,EAAA;AAAA,EACZ;AACD,CAAA,EAAwB;AACvB,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,eAAiB,CAAC,CAAA;AACpD,EAAA,MAAM,YAAA,GAAeC,aAAuB,IAAI,CAAA;AAEhD,EAAA,MAAM,aAAa,KAAA,CAAM,MAAA;AACzB,EAAA,MAAM,cAAc,UAAA,GAAa,UAAA;AAGjC,EAAA,MAAM,EAAE,UAAA,EAAY,QAAA,EAAU,OAAA,EAAQ,GAAIC,cAAQ,MAAM;AACvD,IAAA,MAAM,KAAA,GAAQ,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,KAAA,CAAM,SAAA,GAAY,UAAU,CAAA,GAAI,MAAM,CAAA;AACrE,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,UAAU,CAAA;AAClD,IAAA,MAAM,MAAM,IAAA,CAAK,GAAA,CAAI,YAAY,KAAA,GAAQ,YAAA,GAAe,SAAS,CAAC,CAAA;AAClE,IAAA,MAAM,SAAS,KAAA,GAAQ,UAAA;AAEvB,IAAA,OAAO,EAAE,UAAA,EAAY,KAAA,EAAO,QAAA,EAAU,GAAA,EAAK,SAAS,MAAA,EAAO;AAAA,EAC5D,GAAG,CAAC,SAAA,EAAW,YAAY,MAAA,EAAQ,MAAA,EAAQ,UAAU,CAAC,CAAA;AAEtD,EAAA,MAAM,YAAA,GAAe,KAAA,CAAM,KAAA,CAAM,UAAA,EAAY,QAAQ,CAAA;AAErD,EAAA,MAAM,YAAA,GAAe,CAAC,CAAA,KAAqC;AAC1D,IAAA,YAAA,CAAa,CAAA,CAAE,cAAc,SAAS,CAAA;AAAA,EACvC,CAAA;AAEA,EAAA,uBACCC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,GAAA,EAAK,YAAA;AAAA,MACL,QAAA,EAAU,YAAA;AAAA,MACV,SAAA,EAAW,oBAAoB,SAAS,CAAA,CAAA;AAAA,MACxC,KAAA,EAAO,EAAE,MAAA,EAAQ,GAAG,KAAA,EAAM;AAAA,MAE1B,QAAA,kBAAAA,cAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACA,SAAA,EAAU,0BAAA;AAAA,UACV,KAAA,EAAO;AAAA,YACN,MAAA,EAAQ,WAAA;AAAA,YACR,UAAA,EAAY;AAAA,WACb;AAAA,UAEC,QAAA,EAAA,YAAA,CAAa,GAAA,CAAI,CAAC,IAAA,EAAM,GAAA,KAAQ;AAChC,YAAA,MAAM,cAAc,UAAA,GAAa,GAAA;AACjC,YAAA,MAAM,GAAA,GAAM,YAAA,GAAe,YAAA,CAAa,IAAA,EAAM,WAAW,CAAA,GAAI,WAAA;AAE7D,YAAA,uBACCA,cAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBAEA,SAAA,EAAU,uBAAA;AAAA,gBACV,KAAA,EAAO,EAAE,MAAA,EAAQ,UAAA,EAAW;AAAA,gBAE3B,QAAA,EAAA,UAAA,CAAW,MAAM,WAAW;AAAA,eAAA;AAAA,cAJxB;AAAA,aAKN;AAAA,UAEF,CAAC;AAAA;AAAA;AACF;AAAA,GACD;AAEF;AAEA,IAAO,mBAAA,GAAQ","file":"chunk-24ND5WB7.cjs","sourcesContent":["import React, { useState, useRef, useMemo, ReactNode, CSSProperties } from 'react';\nimport './index.less';\n\nexport interface VirtualListProps<T> {\n\t/** 数据源数组 */\n\titems: T[];\n\t/** 单个列表项固定高度(像素),默认为 48 */\n\titemHeight?: number;\n\t/** 滚动容器可视高度(像素),默认为 360 */\n\theight?: number;\n\t/** 自定义渲染单个列表项 */\n\trenderItem: (item: T, index: number) => ReactNode;\n\t/** 提取唯一 Key */\n\tkeyExtractor?: (item: T, index: number) => string | number;\n\t/** 上下视口外额外渲染的缓冲项数量,默认为 5 */\n\tbuffer?: number;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nfunction VirtualList<T>({\n\titems = [],\n\titemHeight = 48,\n\theight = 360,\n\trenderItem,\n\tkeyExtractor,\n\tbuffer = 5,\n\tclassName = '',\n\tstyle,\n}: VirtualListProps<T>) {\n\tconst [scrollTop, setScrollTop] = useState<number>(0);\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\n\tconst totalCount = items.length;\n\tconst totalHeight = totalCount * itemHeight;\n\n\t// 计算当前可视区域的起止索引\n\tconst { startIndex, endIndex, offsetY } = useMemo(() => {\n\t\tconst start = Math.max(0, Math.floor(scrollTop / itemHeight) - buffer);\n\t\tconst visibleCount = Math.ceil(height / itemHeight);\n\t\tconst end = Math.min(totalCount, start + visibleCount + buffer * 2);\n\t\tconst offset = start * itemHeight;\n\n\t\treturn { startIndex: start, endIndex: end, offsetY: offset };\n\t}, [scrollTop, itemHeight, height, buffer, totalCount]);\n\n\tconst visibleItems = items.slice(startIndex, endIndex);\n\n\tconst handleScroll = (e: React.UIEvent<HTMLDivElement>) => {\n\t\tsetScrollTop(e.currentTarget.scrollTop);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tonScroll={handleScroll}\n\t\t\tclassName={`rpc_virtual_list ${className}`}\n\t\t\tstyle={{ height, ...style }}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName=\"rpc_virtual_list_content\"\n\t\t\t\tstyle={{\n\t\t\t\t\theight: totalHeight,\n\t\t\t\t\tpaddingTop: offsetY,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{visibleItems.map((item, idx) => {\n\t\t\t\t\tconst actualIndex = startIndex + idx;\n\t\t\t\t\tconst key = keyExtractor ? keyExtractor(item, actualIndex) : actualIndex;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\tclassName=\"rpc_virtual_list_item\"\n\t\t\t\t\t\t\tstyle={{ height: itemHeight }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{renderItem(item, actualIndex)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport default VirtualList;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../TrendIndicator/index.tsx"],"names":[],"mappings":";;;AAsBA,IAAM,iBAAgD,CAAC;AAAA,EACtD,KAAA;AAAA,EACA,MAAA,GAAS,GAAA;AAAA,EACT,MAAA,GAAS,EAAA;AAAA,EACT,SAAA,GAAY,CAAA;AAAA,EACZ,IAAA,GAAO,QAAA;AAAA,EACP,OAAA,GAAU,KAAA;AAAA,EACV,SAAA,GAAY,EAAA;AAAA,EACZ;AACD,CAAA,KAAM;AACL,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,GAAI,IAAA;AACjC,EAAA,MAAM,aAAa,KAAA,GAAQ,CAAA;AAG3B,EAAA,IAAI,WAAA,GAAc,MAAA;AAClB,EAAA,IAAI,CAAC,MAAA,EAAQ;AACZ,IAAA,MAAM,MAAA,GAAS,OAAA,GAAU,CAAC,UAAA,GAAa,UAAA;AACvC,IAAA,WAAA,GAAc,SAAS,IAAA,GAAO,MAAA;AAAA,EAC/B;AAEA,EAAA,MAAM,eAAe,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,CAAE,QAAQ,SAAS,CAAA;AACtD,EAAA,MAAM,IAAA,GAAO,UAAA,GAAa,GAAA,GAAM,KAAA,GAAQ,IAAI,GAAA,GAAM,EAAA;AAElD,EAAA,uBACC,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACA,WAAW,CAAA,wCAAA,EAA2C,IAAI,CAAA,qBAAA,EAAwB,WAAW,IAAI,SAAS,CAAA,CAAA;AAAA,MAC1G,KAAA;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,UAAK,SAAA,EAAU,2BAAA,EACd,mBAAS,QAAA,GAAM,UAAA,GAAa,WAAM,QAAA,EACpC,CAAA;AAAA,6BACC,MAAA,EAAA,EACC,QAAA,EAAA;AAAA,UAAA,MAAA;AAAA,UACA,IAAA;AAAA,UACA,YAAA;AAAA,UACA;AAAA,SAAA,EACF;AAAA;AAAA;AAAA,GACD;AAEF,CAAA;AAEA,IAAO,sBAAA,GAAQ","file":"chunk-2ARM7X7A.js","sourcesContent":["import React, { CSSProperties } from 'react';\nimport './index.less';\n\nexport interface TrendIndicatorProps {\n\t/** 变动数值(如 14.2 代表 +14.2%,-5.8 代表 -5.8%) */\n\tvalue: number;\n\t/** 数值后缀,默认为 '%' */\n\tsuffix?: string;\n\t/** 数值前缀 */\n\tprefix?: string;\n\t/** 保留小数位数,默认为 1 */\n\tprecision?: number;\n\t/** 展示模式:'filled' 填充色块 | 'outlined' 线框 | 'text' 纯文字,默认为 'filled' */\n\ttype?: 'filled' | 'outlined' | 'text';\n\t/** 是否反转红绿色彩规则(如成本/延时降低为绿色),默认为 false */\n\treverse?: boolean;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst TrendIndicator: React.FC<TrendIndicatorProps> = ({\n\tvalue,\n\tsuffix = '%',\n\tprefix = '',\n\tprecision = 1,\n\ttype = 'filled',\n\treverse = false,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst isZero = Math.abs(value) < 0.0001;\n\tconst isPositive = value > 0;\n\n\t// 判断颜色状态\n\tlet statusClass = 'flat';\n\tif (!isZero) {\n\t\tconst isGood = reverse ? !isPositive : isPositive;\n\t\tstatusClass = isGood ? 'up' : 'down';\n\t}\n\n\tconst formattedVal = Math.abs(value).toFixed(precision);\n\tconst sign = isPositive ? '+' : value < 0 ? '-' : '';\n\n\treturn (\n\t\t<span\n\t\t\tclassName={`rpc_trend_indicator rpc_trend_indicator_${type} rpc_trend_indicator_${statusClass} ${className}`}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t<span className=\"rpc_trend_indicator_arrow\">\n\t\t\t\t{isZero ? '—' : isPositive ? '▲' : '▼'}\n\t\t\t</span>\n\t\t\t<span>\n\t\t\t\t{prefix}\n\t\t\t\t{sign}\n\t\t\t\t{formattedVal}\n\t\t\t\t{suffix}\n\t\t\t</span>\n\t\t</span>\n\t);\n};\n\nexport default TrendIndicator;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../GuidedTour/index.tsx"],"names":["currentStep"],"mappings":"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","file":"chunk-2ORGQ2IY.js","sourcesContent":["import React, { useState, useEffect, ReactNode, CSSProperties } from 'react';\nimport ReactDOM from 'react-dom';\nimport { CloseOutlined } from '../src/icons';\nimport './index.less';\n\nexport type TourPlacement = 'top' | 'bottom' | 'left' | 'right';\n\nexport interface TourStep {\n\t/** 目标 DOM 节点选择器、DOM 对象或获取函数 */\n\ttarget: string | HTMLElement | (() => HTMLElement | null) | null;\n\t/** 引导步骤标题 */\n\ttitle: ReactNode;\n\t/** 引导步骤详细说明 */\n\tdescription: ReactNode;\n\t/** 气泡对齐方向,默认为 'bottom' */\n\tplacement?: TourPlacement;\n}\n\nexport interface GuidedTourProps {\n\t/** 引导步骤列表 */\n\tsteps: TourStep[];\n\t/** 是否开启引导 */\n\topen: boolean;\n\t/** 当前步数(受控,可选) */\n\tcurrent?: number;\n\t/** 步数改变回调 */\n\tonChange?: (current: number) => void;\n\t/** 关闭/跳过引导回调 */\n\tonClose?: () => void;\n\t/** 全部引导完成回调 */\n\tonFinish?: () => void;\n\t/** LocalStorage 存储已完成状态的 Key(若提供则完成或跳过后自动持久化记录) */\n\tstorageKey?: string;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst GuidedTour: React.FC<GuidedTourProps> = ({\n\tsteps = [],\n\topen,\n\tcurrent: controlledCurrent,\n\tonChange,\n\tonClose,\n\tonFinish,\n\tstorageKey,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [internalCurrent, setInternalCurrent] = useState<number>(0);\n\tconst currentStepIndex = controlledCurrent !== undefined ? controlledCurrent : internalCurrent;\n\n\tconst [targetRect, setTargetRect] = useState<DOMRect | null>(null);\n\n\t// 获取当前步骤的目标 DOM\n\tconst getTargetElement = (step: TourStep): HTMLElement | null => {\n\t\tif (!step || !step.target) return null;\n\t\tif (typeof step.target === 'function') {\n\t\t\treturn step.target();\n\t\t}\n\t\tif (typeof step.target === 'string') {\n\t\t\treturn document.querySelector(step.target);\n\t\t}\n\t\treturn step.target;\n\t};\n\n\t// 计算目标节点坐标\n\tuseEffect(() => {\n\t\tif (!open || steps.length === 0) return;\n\n\t\tconst currentStep = steps[currentStepIndex];\n\t\tif (!currentStep) return;\n\n\t\tconst el = getTargetElement(currentStep);\n\t\tif (el) {\n\t\t\tconst rect = el.getBoundingClientRect();\n\t\t\tsetTargetRect(rect);\n\t\t\t// 自动平滑滚动到可见区域\n\t\t\tel.scrollIntoView({ behavior: 'smooth', block: 'center' });\n\t\t} else {\n\t\t\tsetTargetRect(null);\n\t\t}\n\t}, [open, steps, currentStepIndex]);\n\n\tif (!open || steps.length === 0) return null;\n\n\tconst currentStep = steps[currentStepIndex];\n\tif (!currentStep) return null;\n\n\tconst handleNext = () => {\n\t\tif (currentStepIndex < steps.length - 1) {\n\t\t\tconst next = currentStepIndex + 1;\n\t\t\tif (controlledCurrent === undefined) setInternalCurrent(next);\n\t\t\tonChange?.(next);\n\t\t} else {\n\t\t\tif (storageKey) localStorage.setItem(storageKey, 'true');\n\t\t\tonFinish?.();\n\t\t\tonClose?.();\n\t\t}\n\t};\n\n\tconst handlePrev = () => {\n\t\tif (currentStepIndex > 0) {\n\t\t\tconst prev = currentStepIndex - 1;\n\t\t\tif (controlledCurrent === undefined) setInternalCurrent(prev);\n\t\t\tonChange?.(prev);\n\t\t}\n\t};\n\n\tconst handleSkip = () => {\n\t\tif (storageKey) localStorage.setItem(storageKey, 'true');\n\t\tonClose?.();\n\t};\n\n\t// 气泡卡片定位计算\n\tlet popoverTop = 100;\n\tlet popoverLeft = 100;\n\n\tif (targetRect) {\n\t\tconst placement = currentStep.placement || 'bottom';\n\t\tconst padding = 12;\n\n\t\tif (placement === 'bottom') {\n\t\t\tpopoverTop = targetRect.bottom + padding;\n\t\t\tpopoverLeft = targetRect.left;\n\t\t} else if (placement === 'top') {\n\t\t\tpopoverTop = targetRect.top - 180 - padding;\n\t\t\tpopoverLeft = targetRect.left;\n\t\t} else if (placement === 'left') {\n\t\t\tpopoverTop = targetRect.top;\n\t\t\tpopoverLeft = targetRect.left - 320 - padding;\n\t\t} else if (placement === 'right') {\n\t\t\tpopoverTop = targetRect.top;\n\t\t\tpopoverLeft = targetRect.right + padding;\n\t\t}\n\n\t\t// 视口防溢出修正\n\t\tpopoverLeft = Math.max(16, Math.min(window.innerWidth - 340, popoverLeft));\n\t\tpopoverTop = Math.max(16, Math.min(window.innerHeight - 200, popoverTop));\n\t}\n\n\treturn ReactDOM.createPortal(\n\t\t<div className={`rpc_guided_tour ${className}`} style={style}>\n\t\t\t{/* 镂空高亮遮罩层 */}\n\t\t\t{targetRect && (\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"rpc_guided_tour_highlight_box\"\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tleft: `${targetRect.left - 4}px`,\n\t\t\t\t\t\ttop: `${targetRect.top - 4}px`,\n\t\t\t\t\t\twidth: `${targetRect.width + 8}px`,\n\t\t\t\t\t\theight: `${targetRect.height + 8}px`,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{/* 引导卡片 */}\n\t\t\t<div\n\t\t\t\tclassName=\"rpc_guided_tour_popover\"\n\t\t\t\tstyle={{\n\t\t\t\t\tleft: `${popoverLeft}px`,\n\t\t\t\t\ttop: `${popoverTop}px`,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div className=\"rpc_guided_tour_header\">\n\t\t\t\t\t<span className=\"rpc_guided_tour_title\">{currentStep.title}</span>\n\t\t\t\t\t<CloseOutlined\n\t\t\t\t\t\tstyle={{ cursor: 'pointer', color: '#8c8c8c' }}\n\t\t\t\t\t\tonClick={handleSkip}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"rpc_guided_tour_description\">{currentStep.description}</div>\n\n\t\t\t\t<div className=\"rpc_guided_tour_footer\">\n\t\t\t\t\t<span className=\"rpc_guided_tour_progress\">\n\t\t\t\t\t\t{currentStepIndex + 1} / {steps.length}\n\t\t\t\t\t</span>\n\n\t\t\t\t\t<div className=\"rpc_guided_tour_actions\">\n\t\t\t\t\t\t{currentStepIndex > 0 && (\n\t\t\t\t\t\t\t<button type=\"button\" className=\"rpc_guided_tour_btn\" onClick={handlePrev}>\n\t\t\t\t\t\t\t\t上一步\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t)}\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_guided_tour_btn rpc_guided_tour_btn_primary\"\n\t\t\t\t\t\t\tonClick={handleNext}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{currentStepIndex === steps.length - 1 ? '完成' : '下一步'}\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\tdocument.body,\n\t);\n};\n\nexport default GuidedTour;\n"]}
@@ -1,107 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkQ4QF6UYX_cjs = require('./chunk-Q4QF6UYX.cjs');
4
- var react = require('react');
5
- var jsxRuntime = require('react/jsx-runtime');
6
-
7
- function drawQrCode(canvas, text, size) {
8
- const ctx = canvas.getContext("2d");
9
- if (!ctx) return;
10
- const dpr = window.devicePixelRatio || 1;
11
- canvas.width = size * dpr;
12
- canvas.height = size * dpr;
13
- ctx.scale(dpr, dpr);
14
- ctx.fillStyle = "#ffffff";
15
- ctx.fillRect(0, 0, size, size);
16
- const modules = 25;
17
- const cellSize = size / modules;
18
- ctx.fillStyle = "#000000";
19
- const drawPositionPattern = (x, y) => {
20
- ctx.fillRect(x * cellSize, y * cellSize, 7 * cellSize, 7 * cellSize);
21
- ctx.fillStyle = "#ffffff";
22
- ctx.fillRect((x + 1) * cellSize, (y + 1) * cellSize, 5 * cellSize, 5 * cellSize);
23
- ctx.fillStyle = "#000000";
24
- ctx.fillRect((x + 2) * cellSize, (y + 2) * cellSize, 3 * cellSize, 3 * cellSize);
25
- };
26
- drawPositionPattern(0, 0);
27
- drawPositionPattern(modules - 7, 0);
28
- drawPositionPattern(0, modules - 7);
29
- let hash = 0;
30
- for (let i = 0; i < text.length; i++) {
31
- hash = (hash << 5) - hash + text.charCodeAt(i);
32
- hash |= 0;
33
- }
34
- for (let r = 0; r < modules; r++) {
35
- for (let c = 0; c < modules; c++) {
36
- if (r < 8 && c < 8 || r < 8 && c >= modules - 8 || r >= modules - 8 && c < 8) {
37
- continue;
38
- }
39
- const seed = (r * 31 + c * 17 + hash) % 100;
40
- if (Math.abs(seed) % 2 === 0) {
41
- ctx.fillStyle = "#000000";
42
- ctx.fillRect(c * cellSize, r * cellSize, cellSize - 0.2, cellSize - 0.2);
43
- }
44
- }
45
- }
46
- }
47
- var QrCodeCard = ({
48
- value,
49
- size = 160,
50
- icon,
51
- status = "active",
52
- title,
53
- description,
54
- downloadable = false,
55
- onRefresh,
56
- className = "",
57
- style
58
- }) => {
59
- const canvasRef = react.useRef(null);
60
- react.useEffect(() => {
61
- if (canvasRef.current && value) {
62
- drawQrCode(canvasRef.current, value, size);
63
- }
64
- }, [value, size]);
65
- const handleDownload = () => {
66
- if (!canvasRef.current) return;
67
- const url = canvasRef.current.toDataURL("image/png");
68
- const a = document.createElement("a");
69
- a.href = url;
70
- a.download = `qrcode-${Date.now()}.png`;
71
- a.click();
72
- };
73
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `rpc_qrcode_card ${className}`, style, children: [
74
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rpc_qrcode_card_wrap", style: { width: size, height: size }, children: [
75
- /* @__PURE__ */ jsxRuntime.jsx(
76
- "canvas",
77
- {
78
- ref: canvasRef,
79
- className: "rpc_qrcode_card_canvas",
80
- style: { width: size, height: size }
81
- }
82
- ),
83
- icon && status === "active" && /* @__PURE__ */ jsxRuntime.jsx("img", { src: icon, alt: "Logo", className: "rpc_qrcode_card_logo" }),
84
- status === "expired" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rpc_qrcode_card_mask", onClick: onRefresh, children: [
85
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "\u4E8C\u7EF4\u7801\u5DF2\u5931\u6548" }),
86
- /* @__PURE__ */ jsxRuntime.jsxs("button", { type: "button", className: "rpc_qrcode_card_refresh_btn", children: [
87
- /* @__PURE__ */ jsxRuntime.jsx(chunkQ4QF6UYX_cjs.ReloadOutlined, {}),
88
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "\u70B9\u51FB\u5237\u65B0" })
89
- ] })
90
- ] }),
91
- status === "loading" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rpc_qrcode_card_mask rpc_qrcode_card_mask_loading", children: [
92
- /* @__PURE__ */ jsxRuntime.jsx(chunkQ4QF6UYX_cjs.LoadingOutlined, { style: { fontSize: 28, color: "#1677ff" } }),
93
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rpc_qrcode_card_mask_text", children: "\u52A0\u8F7D\u4E2D..." })
94
- ] })
95
- ] }),
96
- (title || description) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rpc_qrcode_card_info", children: [
97
- title && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rpc_qrcode_card_title", children: title }),
98
- description && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rpc_qrcode_card_description", children: description })
99
- ] }),
100
- downloadable && status === "active" && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rpc_qrcode_card_download", onClick: handleDownload, children: "\u4E0B\u8F7D\u4E8C\u7EF4\u7801" })
101
- ] });
102
- };
103
- var QrCodeCard_default = QrCodeCard;
104
-
105
- exports.QrCodeCard_default = QrCodeCard_default;
106
- //# sourceMappingURL=chunk-4DUMEO5E.cjs.map
107
- //# sourceMappingURL=chunk-4DUMEO5E.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../QrCodeCard/index.tsx"],"names":["useRef","useEffect","jsxs","jsx","ReloadOutlined","LoadingOutlined"],"mappings":"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","file":"chunk-4DUMEO5E.cjs","sourcesContent":["import React, { useRef, useEffect, ReactNode, CSSProperties } from 'react';\nimport { ReloadOutlined, LoadingOutlined } from '../src/icons';\nimport './index.less';\n\nexport type QrCodeStatus = 'active' | 'expired' | 'loading';\n\nexport interface QrCodeCardProps {\n\t/** 二维码内容或跳转 URL */\n\tvalue: string;\n\t/** 二维码尺寸(像素),默认为 160 */\n\tsize?: number;\n\t/** 中心嵌入的 Logo 图标地址 */\n\ticon?: string;\n\t/** 二维码状态:'active' 正常,'expired' 已过期,'loading' 生成中,默认为 'active' */\n\tstatus?: QrCodeStatus;\n\t/** 卡片标题说明 */\n\ttitle?: ReactNode;\n\t/** 卡片副标题或扫码提示 */\n\tdescription?: ReactNode;\n\t/** 是否显示一键下载二维码按钮,默认为 false */\n\tdownloadable?: boolean;\n\t/** 点击过期遮罩刷新时的回调 */\n\tonRefresh?: () => void;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\n// 简易轻量伪随机但确定性的二维码图案矩阵绘制算法(保证零外部大库)\nfunction drawQrCode(canvas: HTMLCanvasElement, text: string, size: number) {\n\tconst ctx = canvas.getContext('2d');\n\tif (!ctx) return;\n\n\tconst dpr = window.devicePixelRatio || 1;\n\tcanvas.width = size * dpr;\n\tcanvas.height = size * dpr;\n\tctx.scale(dpr, dpr);\n\n\tctx.fillStyle = '#ffffff';\n\tctx.fillRect(0, 0, size, size);\n\n\tconst modules = 25; // 25x25 矩阵\n\tconst cellSize = size / modules;\n\n\tctx.fillStyle = '#000000';\n\n\t// 绘制三个角的定位方块 (Position Detection Patterns)\n\tconst drawPositionPattern = (x: number, y: number) => {\n\t\t// 外 7x7\n\t\tctx.fillRect(x * cellSize, y * cellSize, 7 * cellSize, 7 * cellSize);\n\t\t// 中间挖空 5x5\n\t\tctx.fillStyle = '#ffffff';\n\t\tctx.fillRect((x + 1) * cellSize, (y + 1) * cellSize, 5 * cellSize, 5 * cellSize);\n\t\t// 中心实心 3x3\n\t\tctx.fillStyle = '#000000';\n\t\tctx.fillRect((x + 2) * cellSize, (y + 2) * cellSize, 3 * cellSize, 3 * cellSize);\n\t};\n\n\tdrawPositionPattern(0, 0);\n\tdrawPositionPattern(modules - 7, 0);\n\tdrawPositionPattern(0, modules - 7);\n\n\t// 基于文本字符串的 hash 填充数据点\n\tlet hash = 0;\n\tfor (let i = 0; i < text.length; i++) {\n\t\thash = (hash << 5) - hash + text.charCodeAt(i);\n\t\thash |= 0;\n\t}\n\n\tfor (let r = 0; r < modules; r++) {\n\t\tfor (let c = 0; c < modules; c++) {\n\t\t\t// 跳过三个角的位置\n\t\t\tif (\n\t\t\t\t(r < 8 && c < 8) ||\n\t\t\t\t(r < 8 && c >= modules - 8) ||\n\t\t\t\t(r >= modules - 8 && c < 8)\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst seed = (r * 31 + c * 17 + hash) % 100;\n\t\t\tif (Math.abs(seed) % 2 === 0) {\n\t\t\t\tctx.fillStyle = '#000000';\n\t\t\t\tctx.fillRect(c * cellSize, r * cellSize, cellSize - 0.2, cellSize - 0.2);\n\t\t\t}\n\t\t}\n\t}\n}\n\nconst QrCodeCard: React.FC<QrCodeCardProps> = ({\n\tvalue,\n\tsize = 160,\n\ticon,\n\tstatus = 'active',\n\ttitle,\n\tdescription,\n\tdownloadable = false,\n\tonRefresh,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst canvasRef = useRef<HTMLCanvasElement>(null);\n\n\tuseEffect(() => {\n\t\tif (canvasRef.current && value) {\n\t\t\tdrawQrCode(canvasRef.current, value, size);\n\t\t}\n\t}, [value, size]);\n\n\tconst handleDownload = () => {\n\t\tif (!canvasRef.current) return;\n\t\tconst url = canvasRef.current.toDataURL('image/png');\n\t\tconst a = document.createElement('a');\n\t\ta.href = url;\n\t\ta.download = `qrcode-${Date.now()}.png`;\n\t\ta.click();\n\t};\n\n\treturn (\n\t\t<div className={`rpc_qrcode_card ${className}`} style={style}>\n\t\t\t<div className=\"rpc_qrcode_card_wrap\" style={{ width: size, height: size }}>\n\t\t\t\t<canvas\n\t\t\t\t\tref={canvasRef}\n\t\t\t\t\tclassName=\"rpc_qrcode_card_canvas\"\n\t\t\t\t\tstyle={{ width: size, height: size }}\n\t\t\t\t/>\n\n\t\t\t\t{/* 嵌入中心 Logo */}\n\t\t\t\t{icon && status === 'active' && (\n\t\t\t\t\t<img src={icon} alt=\"Logo\" className=\"rpc_qrcode_card_logo\" />\n\t\t\t\t)}\n\n\t\t\t\t{/* 过期或加载中蒙层 */}\n\t\t\t\t{status === 'expired' && (\n\t\t\t\t\t<div className=\"rpc_qrcode_card_mask\" onClick={onRefresh}>\n\t\t\t\t\t\t<span>二维码已失效</span>\n\t\t\t\t\t\t<button type=\"button\" className=\"rpc_qrcode_card_refresh_btn\">\n\t\t\t\t\t\t\t<ReloadOutlined />\n\t\t\t\t\t\t\t<span>点击刷新</span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{status === 'loading' && (\n\t\t\t\t\t<div className=\"rpc_qrcode_card_mask rpc_qrcode_card_mask_loading\">\n\t\t\t\t\t\t<LoadingOutlined style={{ fontSize: 28, color: '#1677ff' }} />\n\t\t\t\t\t\t<span className=\"rpc_qrcode_card_mask_text\">加载中...</span>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{/* 标题说明 */}\n\t\t\t{(title || description) && (\n\t\t\t\t<div className=\"rpc_qrcode_card_info\">\n\t\t\t\t\t{title && <span className=\"rpc_qrcode_card_title\">{title}</span>}\n\t\t\t\t\t{description && <span className=\"rpc_qrcode_card_description\">{description}</span>}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* 下载链接 */}\n\t\t\t{downloadable && status === 'active' && (\n\t\t\t\t<span className=\"rpc_qrcode_card_download\" onClick={handleDownload}>\n\t\t\t\t\t下载二维码\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default QrCodeCard;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../FilePreviewer/index.tsx"],"names":["useState","useEffect","FileImageOutlined","FilePdfOutlined","FileTextOutlined","FileOutlined","jsx","jsxs","DownloadOutlined","ReactDOM","Fragment","ZoomInOutlined","ZoomOutOutlined","RotateRightOutlined","CloseOutlined"],"mappings":"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","file":"chunk-4GQ3X7MG.cjs","sourcesContent":["import React, { useState, useEffect, ReactNode, CSSProperties } from 'react';\nimport ReactDOM from 'react-dom';\nimport {\n\tCloseOutlined,\n\tRotateRightOutlined,\n\tZoomInOutlined,\n\tZoomOutOutlined,\n\tDownloadOutlined,\n\tFilePdfOutlined,\n\tFileImageOutlined,\n\tFileTextOutlined,\n\tFileOutlined,\n} from '../src/icons';\nimport './index.less';\n\nexport type FileType = 'image' | 'video' | 'audio' | 'pdf' | 'text' | 'unknown';\n\nexport interface FileItem {\n\t/** 文件访问 URL 或 Base64 */\n\turl: string;\n\t/** 文件名称 */\n\tname?: string;\n\t/** 文件类型(如不传则根据文件名后缀或 URL 自动推断) */\n\tfileType?: FileType;\n\t/** 文件大小描述(如 '2.4 MB') */\n\tsize?: string;\n\t/** 纯文本内容(针对直接传入 text 字符串预览) */\n\ttextContent?: string;\n}\n\nexport interface FilePreviewerProps {\n\t/** 是否打开预览弹窗 */\n\topen: boolean;\n\t/** 当前预览的文件对象或 URL 字符串 */\n\tfile?: FileItem | string | null;\n\t/** 关闭弹窗回调 */\n\tonCancel?: () => void;\n\t/** 自定义下载行为(不传时使用默认浏览器下载) */\n\tonDownload?: (file: FileItem) => void;\n\t/** 自定义标题栏右侧额外操作按钮 */\n\textraActions?: ReactNode;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\n// 根据文件名或 URL 后缀推断文件类型\nexport function inferFileType(urlOrName: string): FileType {\n\tif (!urlOrName) return 'unknown';\n\tconst clean = urlOrName.split('?')[0].split('#')[0].toLowerCase();\n\tconst ext = clean.substring(clean.lastIndexOf('.') + 1);\n\n\tif (['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg', 'bmp', 'ico'].includes(ext)) {\n\t\treturn 'image';\n\t}\n\tif (['mp4', 'webm', 'ogg', 'mov', 'mkv'].includes(ext)) {\n\t\treturn 'video';\n\t}\n\tif (['mp3', 'wav', 'aac', 'flac', 'm4a'].includes(ext)) {\n\t\treturn 'audio';\n\t}\n\tif (['pdf'].includes(ext)) {\n\t\treturn 'pdf';\n\t}\n\tif (['txt', 'json', 'js', 'ts', 'jsx', 'tsx', 'html', 'css', 'less', 'md', 'log', 'xml'].includes(ext)) {\n\t\treturn 'text';\n\t}\n\treturn 'unknown';\n}\n\nconst FilePreviewer: React.FC<FilePreviewerProps> & {\n\tpreview: (options: FileItem) => { close: () => void };\n} = ({\n\topen,\n\tfile,\n\tonCancel,\n\tonDownload,\n\textraActions,\n\tclassName = '',\n\tstyle,\n}) => {\n\t// 图片控制状态\n\tconst [imageScale, setImageScale] = useState<number>(1);\n\tconst [imageRotate, setImageRotate] = useState<number>(0);\n\n\tuseEffect(() => {\n\t\tif (open) {\n\t\t\tsetImageScale(1);\n\t\t\tsetImageRotate(0);\n\t\t}\n\t}, [open, file]);\n\n\tif (!open || !file) return null;\n\n\tconst currentFile: FileItem =\n\t\ttypeof file === 'string'\n\t\t\t? { url: file, name: file.substring(file.lastIndexOf('/') + 1) }\n\t\t\t: file;\n\n\tconst type: FileType = currentFile.fileType || inferFileType(currentFile.name || currentFile.url);\n\n\t// 默认下载处理\n\tconst handleDefaultDownload = () => {\n\t\tif (onDownload) {\n\t\t\tonDownload(currentFile);\n\t\t\treturn;\n\t\t}\n\t\tconst a = document.createElement('a');\n\t\ta.href = currentFile.url;\n\t\ta.download = currentFile.name || 'download';\n\t\ta.target = '_blank';\n\t\tdocument.body.appendChild(a);\n\t\ta.click();\n\t\ta.remove();\n\t};\n\n\t// 渲染文件图标\n\tconst renderFileIcon = () => {\n\t\tswitch (type) {\n\t\t\tcase 'image':\n\t\t\t\treturn <FileImageOutlined style={{ color: '#1677ff' }} />;\n\t\t\tcase 'pdf':\n\t\t\t\treturn <FilePdfOutlined style={{ color: '#ff4d4f' }} />;\n\t\t\tcase 'text':\n\t\t\t\treturn <FileTextOutlined style={{ color: '#52c41a' }} />;\n\t\t\tdefault:\n\t\t\t\treturn <FileOutlined style={{ color: '#8c8c8c' }} />;\n\t\t}\n\t};\n\n\t// 渲染主体内容\n\tconst renderBodyContent = () => {\n\t\tswitch (type) {\n\t\t\tcase 'image':\n\t\t\t\treturn (\n\t\t\t\t\t<img\n\t\t\t\t\t\tsrc={currentFile.url}\n\t\t\t\t\t\talt={currentFile.name || 'Preview'}\n\t\t\t\t\t\tclassName=\"rpc_file_previewer_modal_image\"\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\ttransform: `scale(${imageScale}) rotate(${imageRotate}deg)`,\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\tcase 'video':\n\t\t\t\treturn (\n\t\t\t\t\t<video\n\t\t\t\t\t\tsrc={currentFile.url}\n\t\t\t\t\t\tcontrols\n\t\t\t\t\t\tautoPlay\n\t\t\t\t\t\tclassName=\"rpc_file_previewer_modal_media\"\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\tcase 'audio':\n\t\t\t\treturn (\n\t\t\t\t\t<div className=\"rpc_file_previewer_modal_audio_wrap\">\n\t\t\t\t\t\t<div style={{ fontSize: 48 }}>🎵</div>\n\t\t\t\t\t\t<div style={{ fontSize: 16, fontWeight: 600 }}>{currentFile.name || '音频播放'}</div>\n\t\t\t\t\t\t<audio src={currentFile.url} controls autoPlay style={{ width: 320 }} />\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\tcase 'pdf':\n\t\t\t\treturn (\n\t\t\t\t\t<iframe\n\t\t\t\t\t\tsrc={currentFile.url}\n\t\t\t\t\t\ttitle={currentFile.name || 'PDF Preview'}\n\t\t\t\t\t\tclassName=\"rpc_file_previewer_modal_iframe\"\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\tcase 'text':\n\t\t\t\treturn (\n\t\t\t\t\t<div className=\"rpc_file_previewer_modal_text_wrap\">\n\t\t\t\t\t\t{currentFile.textContent || '正在加载文件内容...'}\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\tdefault:\n\t\t\t\treturn (\n\t\t\t\t\t<div className=\"rpc_file_previewer_modal_fallback_card\">\n\t\t\t\t\t\t<div style={{ fontSize: 48, color: '#8c8c8c' }}>📦</div>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<h4 style={{ margin: '0 0 6px 0', fontSize: 16, color: '#1f1f1f' }}>\n\t\t\t\t\t\t\t\t{currentFile.name || '未知文件'}\n\t\t\t\t\t\t\t</h4>\n\t\t\t\t\t\t\t<p style={{ margin: 0, color: '#8c8c8c', fontSize: 13 }}>\n\t\t\t\t\t\t\t\t该格式暂不支持直接在线预览,请下载后在本地查看。{currentFile.size ? `(${currentFile.size})` : ''}\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tonClick={handleDefaultDownload}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tdisplay: 'inline-flex',\n\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\tgap: 6,\n\t\t\t\t\t\t\t\tpadding: '8px 20px',\n\t\t\t\t\t\t\t\tbackground: '#1677ff',\n\t\t\t\t\t\t\t\tcolor: '#fff',\n\t\t\t\t\t\t\t\tborder: 'none',\n\t\t\t\t\t\t\t\tborderRadius: 6,\n\t\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t\t\tfontSize: 14,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<DownloadOutlined /> 立即下载\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t}\n\t};\n\n\treturn ReactDOM.createPortal(\n\t\t<div className={`rpc_file_previewer_modal ${className}`} onClick={onCancel} style={style}>\n\t\t\t<div className=\"rpc_file_previewer_modal_card\" onClick={(e) => e.stopPropagation()}>\n\t\t\t\t{/* 顶部标题栏与工具栏 */}\n\t\t\t\t<div className=\"rpc_file_previewer_modal_header\">\n\t\t\t\t\t<div className=\"rpc_file_previewer_modal_title\">\n\t\t\t\t\t\t{renderFileIcon()}\n\t\t\t\t\t\t<span>{currentFile.name || '文件预览'}</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className=\"rpc_file_previewer_modal_actions\">\n\t\t\t\t\t\t{type === 'image' && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tclassName=\"rpc_file_previewer_modal_action_btn\"\n\t\t\t\t\t\t\t\t\tonClick={() => setImageScale((s) => Math.min(s + 0.2, 3))}\n\t\t\t\t\t\t\t\t\ttitle=\"放大\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ZoomInOutlined />\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tclassName=\"rpc_file_previewer_modal_action_btn\"\n\t\t\t\t\t\t\t\t\tonClick={() => setImageScale((s) => Math.max(s - 0.2, 0.4))}\n\t\t\t\t\t\t\t\t\ttitle=\"缩小\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ZoomOutOutlined />\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tclassName=\"rpc_file_previewer_modal_action_btn\"\n\t\t\t\t\t\t\t\t\tonClick={() => setImageRotate((r) => (r + 90) % 360)}\n\t\t\t\t\t\t\t\t\ttitle=\"顺时针旋转90°\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<RotateRightOutlined />\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t)}\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_file_previewer_modal_action_btn\"\n\t\t\t\t\t\t\tonClick={handleDefaultDownload}\n\t\t\t\t\t\t\ttitle=\"下载文件\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<DownloadOutlined />\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t{extraActions}\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_file_previewer_modal_action_btn\"\n\t\t\t\t\t\t\tonClick={onCancel}\n\t\t\t\t\t\t\ttitle=\"关闭预览 (ESC)\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<CloseOutlined />\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t{/* 预览主体内容区域 */}\n\t\t\t\t<div className=\"rpc_file_previewer_modal_body\">{renderBodyContent()}</div>\n\t\t\t</div>\n\t\t</div>,\n\t\tdocument.body,\n\t);\n};\n\n// 命令式调用方法\nFilePreviewer.preview = (options: FileItem) => {\n\tconst div = document.createElement('div');\n\tdocument.body.appendChild(div);\n\n\tconst close = () => {\n\t\tReactDOM.render(<></>, div);\n\t\tdiv.remove();\n\t};\n\n\tReactDOM.render(\n\t\t<FilePreviewer open={true} file={options} onCancel={close} />,\n\t\tdiv,\n\t);\n\n\treturn { close };\n};\n\nexport default FilePreviewer;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../MetricCard/index.tsx"],"names":[],"mappings":"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","file":"chunk-4VGH44DT.js","sourcesContent":["import React, { ReactNode, CSSProperties } from 'react';\nimport CountUp from '../CountUp';\nimport './index.less';\n\nexport interface MetricCardProps {\n\t/** 卡片标题 */\n\ttitle: ReactNode;\n\t/** 指标数值(若是数字则自动平滑滚动) */\n\tvalue: number | string;\n\t/** 数值前缀(如 '¥') */\n\tprefix?: ReactNode;\n\t/** 数值后缀(如 '元' / '%') */\n\tsuffix?: ReactNode;\n\t/** 趋势方向:'up' 上升(绿色),'down' 下降(红色) */\n\ttrend?: 'up' | 'down';\n\t/** 趋势数值说明(如 '+18.5%' 或 '-3.2%') */\n\ttrendValue?: ReactNode;\n\t/** 趋势比较文本说明(如 '较上月') */\n\ttrendLabel?: ReactNode;\n\t/** 迷你折线图数据数组(如 [12, 18, 15, 26, 32, 40]) */\n\tchartData?: number[];\n\t/** 折线图颜色,默认为 '#1677ff' */\n\tchartColor?: string;\n\t/** 底部说明节点 */\n\tfooter?: ReactNode;\n\t/** 右上角额外操作节点 */\n\textra?: ReactNode;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\n// 自动生成 SVG Sparkline 迷你平滑路径\nfunction generateSparklinePath(data: number[], width: number = 200, height: number = 36) {\n\tif (!data || data.length < 2) return { linePath: '', fillPath: '' };\n\n\tconst min = Math.min(...data);\n\tconst max = Math.max(...data);\n\tconst range = max - min || 1;\n\n\tconst padding = 2;\n\tconst usableHeight = height - padding * 2;\n\n\tconst points = data.map((val, idx) => {\n\t\tconst x = (idx / (data.length - 1)) * width;\n\t\tconst y = height - padding - ((val - min) / range) * usableHeight;\n\t\treturn `${x.toFixed(1)},${y.toFixed(1)}`;\n\t});\n\n\tconst linePath = `M ${points.join(' L ')}`;\n\tconst fillPath = `M ${points[0]} L ${points.join(' L ')} L ${width},${height} L 0,${height} Z`;\n\n\treturn { linePath, fillPath };\n}\n\nconst MetricCard: React.FC<MetricCardProps> = ({\n\ttitle,\n\tvalue,\n\tprefix,\n\tsuffix,\n\ttrend,\n\ttrendValue,\n\ttrendLabel,\n\tchartData,\n\tchartColor = '#1677ff',\n\tfooter,\n\textra,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst isNumeric = typeof value === 'number';\n\tconst { linePath, fillPath } = chartData ? generateSparklinePath(chartData) : { linePath: '', fillPath: '' };\n\n\treturn (\n\t\t<div className={`rpc_metric_card ${className}`} style={style}>\n\t\t\t{/* 头部标题与操作 */}\n\t\t\t<div className=\"rpc_metric_card_header\">\n\t\t\t\t<span className=\"rpc_metric_card_title\">{title}</span>\n\t\t\t\t{extra && <div>{extra}</div>}\n\t\t\t</div>\n\n\t\t\t{/* 主体数值与趋势 */}\n\t\t\t<div className=\"rpc_metric_card_body\">\n\t\t\t\t<div className=\"rpc_metric_card_value_wrap\">\n\t\t\t\t\t{prefix && <span className=\"rpc_metric_card_prefix\">{prefix}</span>}\n\t\t\t\t\t<span className=\"rpc_metric_card_value\">\n\t\t\t\t\t\t{isNumeric ? <CountUp end={value as number} duration={1.2} /> : value}\n\t\t\t\t\t</span>\n\t\t\t\t\t{suffix && <span className=\"rpc_metric_card_suffix\">{suffix}</span>}\n\t\t\t\t</div>\n\n\t\t\t\t{trend && (\n\t\t\t\t\t<div className={`rpc_metric_card_trend rpc_metric_card_trend_${trend}`}>\n\t\t\t\t\t\t<span>{trend === 'up' ? '▲' : '▼'}</span>\n\t\t\t\t\t\t<span>{trendValue}</span>\n\t\t\t\t\t\t{trendLabel && <span style={{ color: '#8c8c8c', fontWeight: 400, marginLeft: 2 }}>{trendLabel}</span>}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{/* 微折线 Sparkline 图 */}\n\t\t\t{chartData && chartData.length > 1 && (\n\t\t\t\t<div className=\"rpc_metric_card_sparkline\">\n\t\t\t\t\t<svg width=\"100%\" height=\"100%\" viewBox=\"0 0 200 36\" preserveAspectRatio=\"none\">\n\t\t\t\t\t\t<defs>\n\t\t\t\t\t\t\t<linearGradient id={`grad-${chartColor}`} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n\t\t\t\t\t\t\t\t<stop offset=\"0%\" stopColor={chartColor} stopOpacity=\"0.25\" />\n\t\t\t\t\t\t\t\t<stop offset=\"100%\" stopColor={chartColor} stopOpacity=\"0\" />\n\t\t\t\t\t\t\t</linearGradient>\n\t\t\t\t\t\t</defs>\n\t\t\t\t\t\t<path d={fillPath} fill={`url(#grad-${chartColor})`} />\n\t\t\t\t\t\t<path d={linePath} fill=\"none\" stroke={chartColor} strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n\t\t\t\t\t</svg>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* 底部备注 */}\n\t\t\t{footer && <div className=\"rpc_metric_card_footer\">{footer}</div>}\n\t\t</div>\n\t);\n};\n\nexport default MetricCard;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../PdfViewer/index.tsx"],"names":["useState","jsxs","jsx","ZoomOutOutlined","ZoomInOutlined","RotateRightOutlined","DownloadOutlined"],"mappings":"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","file":"chunk-4YPT2HUD.cjs","sourcesContent":["import React, { useState, ReactNode, CSSProperties } from 'react';\nimport { ZoomInOutlined, ZoomOutOutlined, RotateRightOutlined, DownloadOutlined } from '../src/icons';\nimport './index.less';\n\nexport interface PdfViewerProps {\n\t/** PDF 文件 URL 地址 */\n\tsrc: string;\n\t/** 文档标题 */\n\ttitle?: ReactNode;\n\t/** 宽度,默认为 '100%' */\n\twidth?: number | string;\n\t/** 高度,默认为 500 */\n\theight?: number | string;\n\t/** 是否显示下载按钮,默认为 true */\n\tshowDownload?: boolean;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst PdfViewer: React.FC<PdfViewerProps> = ({\n\tsrc,\n\ttitle = 'PDF Document Preview',\n\twidth = '100%',\n\theight = 500,\n\tshowDownload = true,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [zoom, setZoom] = useState<number>(100);\n\tconst [rotation, setRotation] = useState<number>(0);\n\n\tconst handleZoomIn = () => {\n\t\tsetZoom((prev) => Math.min(200, prev + 15));\n\t};\n\n\tconst handleZoomOut = () => {\n\t\tsetZoom((prev) => Math.max(50, prev - 15));\n\t};\n\n\tconst handleRotate = () => {\n\t\tsetRotation((prev) => (prev + 90) % 360);\n\t};\n\n\treturn (\n\t\t<div className={`rpc_pdf_viewer ${className}`} style={{ width, height, ...style }}>\n\t\t\t{/* 顶部工具栏 */}\n\t\t\t<div className=\"rpc_pdf_viewer_toolbar\">\n\t\t\t\t<span className=\"rpc_pdf_viewer_title\">{title}</span>\n\n\t\t\t\t<div className=\"rpc_pdf_viewer_actions\">\n\t\t\t\t\t<button type=\"button\" className=\"rpc_pdf_viewer_btn\" onClick={handleZoomOut} title=\"缩小\">\n\t\t\t\t\t\t<ZoomOutOutlined />\n\t\t\t\t\t</button>\n\n\t\t\t\t\t<span style={{ fontSize: 12, minWidth: 40, textAlign: 'center' }}>{zoom}%</span>\n\n\t\t\t\t\t<button type=\"button\" className=\"rpc_pdf_viewer_btn\" onClick={handleZoomIn} title=\"放大\">\n\t\t\t\t\t\t<ZoomInOutlined />\n\t\t\t\t\t</button>\n\n\t\t\t\t\t<button type=\"button\" className=\"rpc_pdf_viewer_btn\" onClick={handleRotate} title=\"顺时针旋转 90°\">\n\t\t\t\t\t\t<RotateRightOutlined />\n\t\t\t\t\t</button>\n\n\t\t\t\t\t{showDownload && (\n\t\t\t\t\t\t<a href={src} download className=\"rpc_pdf_viewer_btn\" title=\"下载 PDF\">\n\t\t\t\t\t\t\t<DownloadOutlined />\n\t\t\t\t\t\t\t<span>下载</span>\n\t\t\t\t\t\t</a>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{/* PDF 内容嵌入容器 */}\n\t\t\t<div className=\"rpc_pdf_viewer_body\">\n\t\t\t\t<iframe\n\t\t\t\t\tsrc={`${src}#toolbar=0&navpanes=0`}\n\t\t\t\t\ttitle=\"PDF Preview Frame\"\n\t\t\t\t\tclassName=\"rpc_pdf_viewer_frame\"\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\ttransform: `scale(${zoom / 100}) rotate(${rotation}deg)`,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default PdfViewer;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../KanbanBoard/index.tsx"],"names":["useState","jsx","jsxs"],"mappings":"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","file":"chunk-5GCEQDBM.cjs","sourcesContent":["import React, { useState, ReactNode, CSSProperties } from 'react';\nimport './index.less';\n\nexport interface KanbanColumn<T> {\n\tid: string;\n\ttitle: string;\n\tcolor?: string;\n\titems: T[];\n}\n\nexport interface KanbanBoardProps<T> {\n\t/** 泳道列数据 */\n\tcolumns: KanbanColumn<T>[];\n\t/** 提取卡片唯一 Key */\n\tkeyExtractor: (item: T) => string;\n\t/** 自定义渲染单个卡片 */\n\trenderCard: (item: T, columnId: string) => ReactNode;\n\t/** 卡片拖拽移动完成回调 */\n\tonCardMove?: (\n\t\tcardId: string,\n\t\tsourceColId: string,\n\t\ttargetColId: string,\n\t\tnewIndex: number,\n\t) => void;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nfunction KanbanBoard<T>({\n\tcolumns,\n\tkeyExtractor,\n\trenderCard,\n\tonCardMove,\n\tclassName = '',\n\tstyle,\n}: KanbanBoardProps<T>) {\n\tconst [draggingCardId, setDraggingCardId] = useState<string | null>(null);\n\tconst [sourceColumnId, setSourceColumnId] = useState<string | null>(null);\n\tconst [dragOverColumnId, setDragOverColumnId] = useState<string | null>(null);\n\n\tconst handleDragStart = (\n\t\te: React.DragEvent<HTMLDivElement>,\n\t\tcardId: string,\n\t\tcolId: string,\n\t) => {\n\t\tsetDraggingCardId(cardId);\n\t\tsetSourceColumnId(colId);\n\t\te.dataTransfer.setData('text/plain', JSON.stringify({ cardId, colId }));\n\t\te.dataTransfer.effectAllowed = 'move';\n\t};\n\n\tconst handleDragEnd = () => {\n\t\tsetDraggingCardId(null);\n\t\tsetSourceColumnId(null);\n\t\tsetDragOverColumnId(null);\n\t};\n\n\tconst handleDragOverCol = (e: React.DragEvent<HTMLDivElement>, colId: string) => {\n\t\te.preventDefault();\n\t\te.dataTransfer.dropEffect = 'move';\n\t\tif (dragOverColumnId !== colId) {\n\t\t\tsetDragOverColumnId(colId);\n\t\t}\n\t};\n\n\tconst handleDropOnCol = (\n\t\te: React.DragEvent<HTMLDivElement>,\n\t\ttargetColId: string,\n\t\ttargetIndex?: number,\n\t) => {\n\t\te.preventDefault();\n\t\tif (!draggingCardId || !sourceColumnId) return;\n\n\t\tconst targetColumn = columns.find((c) => c.id === targetColId);\n\t\tconst newIdx = targetIndex !== undefined ? targetIndex : targetColumn ? targetColumn.items.length : 0;\n\n\t\tonCardMove?.(draggingCardId, sourceColumnId, targetColId, newIdx);\n\t\thandleDragEnd();\n\t};\n\n\treturn (\n\t\t<div className={`rpc_kanban_board ${className}`} style={style}>\n\t\t\t{columns.map((col) => {\n\t\t\t\tconst isOver = dragOverColumnId === col.id;\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={col.id}\n\t\t\t\t\t\tclassName={`rpc_kanban_board_column ${\n\t\t\t\t\t\t\tisOver ? 'rpc_kanban_board_column_dragover' : ''\n\t\t\t\t\t\t}`}\n\t\t\t\t\t\tonDragOver={(e) => handleDragOverCol(e, col.id)}\n\t\t\t\t\t\tonDrop={(e) => handleDropOnCol(e, col.id)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{/* 列头部 */}\n\t\t\t\t\t\t<div className=\"rpc_kanban_board_column_header\">\n\t\t\t\t\t\t\t<div className=\"rpc_kanban_board_column_title_wrap\">\n\t\t\t\t\t\t\t\t{col.color && (\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\tclassName=\"rpc_kanban_board_column_dot\"\n\t\t\t\t\t\t\t\t\t\tstyle={{ backgroundColor: col.color }}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<span>{col.title}</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<span className=\"rpc_kanban_board_column_count\">\n\t\t\t\t\t\t\t\t{col.items.length}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t{/* 卡片列表 */}\n\t\t\t\t\t\t<div className=\"rpc_kanban_board_column_body\">\n\t\t\t\t\t\t\t{col.items.map((item, idx) => {\n\t\t\t\t\t\t\t\tconst cardId = keyExtractor(item);\n\t\t\t\t\t\t\t\tconst isDragging = draggingCardId === cardId;\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tkey={cardId}\n\t\t\t\t\t\t\t\t\t\tdraggable\n\t\t\t\t\t\t\t\t\t\tonDragStart={(e) => handleDragStart(e, cardId, col.id)}\n\t\t\t\t\t\t\t\t\t\tonDragEnd={handleDragEnd}\n\t\t\t\t\t\t\t\t\t\tonDragOver={(e) => {\n\t\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tonDrop={(e) => {\n\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\thandleDropOnCol(e, col.id, idx);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tclassName={`rpc_kanban_board_card ${\n\t\t\t\t\t\t\t\t\t\t\tisDragging ? 'rpc_kanban_board_card_dragging' : ''\n\t\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{renderCard(item, col.id)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n\nexport default KanbanBoard;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../DisabledBox/index.tsx"],"names":[],"mappings":";;;AAaA,IAAM,WAAA,GAAc,CAAC,KAAA,KAA4B;AAChD,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAU,WAAW,KAAA,EAAO,SAAA,GAAY,QAAO,GAAI,KAAA;AAClE,EAAA,MAAM,UAAU,QAAA,IAAA,IAAA,GAAA,QAAA,GAAY,KAAA;AAG5B,EAAA,IAAI,CAAC,QAAA,EAAU;AACd,IAAA,uCAAU,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,EACnB;AAKA,EAAA,MAAM,kBAAA,GAAqB,CAAC,CAAA,KAAwB;AACnD,IAAA,IAAI,QAAA,EAAU;AACb,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,CAAA,CAAE,cAAA,EAAe;AAAA,IAClB;AAAA,EACD,CAAA;AAEA,EAAA,uBACC,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,SAAA,EAAU,8CAAA;AAAA,MACV,cAAA,EAAgB,kBAAA;AAAA,MAEf,QAAA,EAAA;AAAA,QAAA,SAAA,KAAc,MAAA,oBAAU,GAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,mBAAA,EAAoB,CAAA;AAAA,wBACrE,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oBAAA,EAAsB,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,QAC7C,SAAA,KAAc,OAAA,oBAAW,GAAA,CAAC,YAAA,EAAA,EAAa,WAAU,mBAAA,EAAoB;AAAA;AAAA;AAAA,GACvE;AAEF,CAAA;AAEA,IAAO,mBAAA,GAAQ","file":"chunk-5MQCVYVD.js","sourcesContent":["import type { ReactNode } from 'react';\nimport { LockOutlined } from '../src/icons';\nimport './index.less';\n\nexport interface DisabledBoxProps {\n\ttitle?: ReactNode;\n\tchildren?: ReactNode;\n\t// 是否禁用,禁用时显示锁图标 + 文字灰色 + 不可点击\n\tdisabled?: boolean;\n\t// 锁图标对齐方向\n\ticonAlign?: 'left' | 'right';\n}\n\nconst DisabledBox = (props: DisabledBoxProps) => {\n\tconst { title, children, disabled = false, iconAlign = 'left' } = props;\n\tconst content = children ?? title;\n\n\t// 未禁用时原样渲染,不加锁\n\tif (!disabled) {\n\t\treturn <>{content}</>;\n\t}\n\n\t// disabled 时用div渲染,样式模拟disabled效果\n\t// 在捕获阶段阻止click事件传播,既防止内部点击事件触发,也阻止冒泡到父组件\n\t// 不阻止mouseenter/mouseleave等hover事件,保证Tooltip正常显示\n\tconst handleClickCapture = (e: React.MouseEvent) => {\n\t\tif (disabled) {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t}\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"disabled_box_container disabled_box_disabled\"\n\t\t\tonClickCapture={handleClickCapture}\n\t\t>\n\t\t\t{iconAlign === 'left' && <LockOutlined className=\"disabled_box_icon\" />}\n\t\t\t<span className=\"disabled_box_title\">{content}</span>\n\t\t\t{iconAlign === 'right' && <LockOutlined className=\"disabled_box_icon\" />}\n\t\t</div>\n\t);\n};\n\nexport default DisabledBox;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../CopyButton/index.tsx"],"names":["useState","useRef","useEffect","jsx","CopyOutlined","CheckOutlined","jsxs"],"mappings":"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","file":"chunk-5WHBZH44.cjs","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 ? (copiedText ?? children ?? '已复制') : (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 ? 'rpc_copy_button_tooltip_visible' : isHovered ? 'rpc_copy_button_tooltip_hover' : ''\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 +0,0 @@
1
- {"version":3,"sources":["../EnvBadge/index.tsx"],"names":["useState","useRef","useEffect","jsxs","jsx"],"mappings":"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","file":"chunk-6OKTK3AQ.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%' }}>\n\t\t\t\t\t\t\t\t切换环境:\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t{switchList.map((item, idx) => (\n\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\tkey={idx}\n\t\t\t\t\t\t\t\t\thref={item.url}\n\t\t\t\t\t\t\t\t\tclassName=\"rpc_env_badge_switch_btn\"\n\t\t\t\t\t\t\t\t>\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 +0,0 @@
1
- {"version":3,"sources":["../TreeFilterPanel/index.tsx"],"names":[],"mappings":"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","file":"chunk-7AKHSOSZ.js","sourcesContent":["import React, { useState, ReactNode, CSSProperties } from 'react';\nimport './index.less';\n\nexport interface TreeFilterNode {\n\tlabel: string;\n\tvalue: string | number;\n\tchildren?: TreeFilterNode[];\n}\n\nexport interface TreeFilterPanelProps {\n\t/** 树形分类选项列表 */\n\toptions: TreeFilterNode[];\n\t/** 当前选中的值数组(受控) */\n\tvalue?: (string | number)[];\n\t/** 默认选中的值数组 */\n\tdefaultValue?: (string | number)[];\n\t/** 选中值变化回调 */\n\tonChange?: (values: (string | number)[]) => void;\n\t/** 是否支持多选,默认为 true */\n\tmultiple?: boolean;\n\t/** 标题前缀,默认为 ['一级分类', '二级分类', '三级标签'] */\n\tlevelLabels?: string[];\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst TreeFilterPanel: React.FC<TreeFilterPanelProps> = ({\n\toptions = [],\n\tvalue: controlledValue,\n\tdefaultValue = [],\n\tonChange,\n\tmultiple = true,\n\tlevelLabels = ['一级分类', '二级分类', '三级标签'],\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [internalVal, setInternalVal] = useState<(string | number)[]>(defaultValue);\n\tconst selectedValues = controlledValue !== undefined ? controlledValue : internalVal;\n\n\t// 记录每一层当前激活选中的父节点\n\tconst [activeLevel1, setActiveLevel1] = useState<string | number | null>(\n\t\toptions[0]?.value || null,\n\t);\n\n\tconst level1Option = options.find((opt) => opt.value === activeLevel1) || options[0];\n\tconst level2Options = level1Option?.children || [];\n\n\tconst [activeLevel2, setActiveLevel2] = useState<string | number | null>(\n\t\tlevel2Options[0]?.value || null,\n\t);\n\n\tconst level2Option = level2Options.find((opt) => opt.value === activeLevel2) || level2Options[0];\n\tconst level3Options = level2Option?.children || [];\n\n\tconst handleSelect = (val: string | number) => {\n\t\tlet next: (string | number)[];\n\t\tif (!multiple) {\n\t\t\tnext = [val];\n\t\t} else {\n\t\t\tif (selectedValues.includes(val)) {\n\t\t\t\tnext = selectedValues.filter((v) => v !== val);\n\t\t\t} else {\n\t\t\t\tnext = [...selectedValues, val];\n\t\t\t}\n\t\t}\n\n\t\tif (controlledValue === undefined) setInternalVal(next);\n\t\tonChange?.(next);\n\t};\n\n\tconst handleClear = () => {\n\t\tif (controlledValue === undefined) setInternalVal([]);\n\t\tonChange?.([]);\n\t};\n\n\treturn (\n\t\t<div className={`rpc_tree_filter_panel ${className}`} style={style}>\n\t\t\t{/* 一级分类 */}\n\t\t\t{options.length > 0 && (\n\t\t\t\t<div className=\"rpc_tree_filter_panel_row\">\n\t\t\t\t\t<div className=\"rpc_tree_filter_panel_label\">{levelLabels[0] || '一级分类'}:</div>\n\t\t\t\t\t<div className=\"rpc_tree_filter_panel_options\">\n\t\t\t\t\t\t{options.map((opt) => {\n\t\t\t\t\t\t\tconst isSelected = selectedValues.includes(opt.value);\n\t\t\t\t\t\t\tconst isCurrentActive = activeLevel1 === opt.value;\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tkey={opt.value}\n\t\t\t\t\t\t\t\t\tclassName={`rpc_tree_filter_panel_item ${\n\t\t\t\t\t\t\t\t\t\tisSelected || isCurrentActive ? 'rpc_tree_filter_panel_item_active' : ''\n\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\tsetActiveLevel1(opt.value);\n\t\t\t\t\t\t\t\t\t\tif (opt.children && opt.children.length > 0) {\n\t\t\t\t\t\t\t\t\t\t\tsetActiveLevel2(opt.children[0].value);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\thandleSelect(opt.value);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{opt.label}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* 二级分类 */}\n\t\t\t{level2Options.length > 0 && (\n\t\t\t\t<div className=\"rpc_tree_filter_panel_row\">\n\t\t\t\t\t<div className=\"rpc_tree_filter_panel_label\">{levelLabels[1] || '二级分类'}:</div>\n\t\t\t\t\t<div className=\"rpc_tree_filter_panel_options\">\n\t\t\t\t\t\t{level2Options.map((opt) => {\n\t\t\t\t\t\t\tconst isSelected = selectedValues.includes(opt.value);\n\t\t\t\t\t\t\tconst isCurrentActive = activeLevel2 === opt.value;\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tkey={opt.value}\n\t\t\t\t\t\t\t\t\tclassName={`rpc_tree_filter_panel_item ${\n\t\t\t\t\t\t\t\t\t\tisSelected || isCurrentActive ? 'rpc_tree_filter_panel_item_active' : ''\n\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\tsetActiveLevel2(opt.value);\n\t\t\t\t\t\t\t\t\t\thandleSelect(opt.value);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{opt.label}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* 三级标签 */}\n\t\t\t{level3Options.length > 0 && (\n\t\t\t\t<div className=\"rpc_tree_filter_panel_row\">\n\t\t\t\t\t<div className=\"rpc_tree_filter_panel_label\">{levelLabels[2] || '三级标签'}:</div>\n\t\t\t\t\t<div className=\"rpc_tree_filter_panel_options\">\n\t\t\t\t\t\t{level3Options.map((opt) => {\n\t\t\t\t\t\t\tconst isSelected = selectedValues.includes(opt.value);\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tkey={opt.value}\n\t\t\t\t\t\t\t\t\tclassName={`rpc_tree_filter_panel_item ${\n\t\t\t\t\t\t\t\t\t\tisSelected ? 'rpc_tree_filter_panel_item_active' : ''\n\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\tonClick={() => handleSelect(opt.value)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{opt.label}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* 底部汇总与重置 */}\n\t\t\t<div className=\"rpc_tree_filter_panel_footer\">\n\t\t\t\t<span>已选条件:{selectedValues.length} 项</span>\n\t\t\t\t{selectedValues.length > 0 && (\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclassName=\"rpc_tree_filter_panel_clear_btn\"\n\t\t\t\t\t\tonClick={handleClear}\n\t\t\t\t\t>\n\t\t\t\t\t\t清空所有筛选\n\t\t\t\t\t</button>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default TreeFilterPanel;\n"]}