react-public-components 1.2.2 → 1.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (368) hide show
  1. package/dist/ActivityLog/index.cjs +2 -2
  2. package/dist/ActivityLog/index.js +1 -1
  3. package/dist/AudioPlayer/index.cjs +3 -3
  4. package/dist/AudioPlayer/index.js +2 -2
  5. package/dist/CascadeDrawer/index.cjs +2 -2
  6. package/dist/CascadeDrawer/index.d.ts +1 -1
  7. package/dist/CascadeDrawer/index.js +1 -1
  8. package/dist/CodeSnippet/index.cjs +3 -2
  9. package/dist/CodeSnippet/index.css +236 -11
  10. package/dist/CodeSnippet/index.css.map +1 -1
  11. package/dist/CodeSnippet/index.d.ts +49 -4
  12. package/dist/CodeSnippet/index.js +2 -1
  13. package/dist/CodeSnippet/sandbox.d.ts +26 -0
  14. package/dist/CollapseBox/index.cjs +3 -3
  15. package/dist/CollapseBox/index.js +2 -2
  16. package/dist/ColorPicker/index.cjs +5 -5
  17. package/dist/ColorPicker/index.js +2 -2
  18. package/dist/ContextMenu/index.cjs +3 -3
  19. package/dist/ContextMenu/index.js +2 -2
  20. package/dist/CopyButton/index.cjs +3 -3
  21. package/dist/CopyButton/index.js +2 -2
  22. package/dist/CountUp/index.cjs +2 -2
  23. package/dist/CountUp/index.js +1 -1
  24. package/dist/CronPicker/index.cjs +4 -4
  25. package/dist/CronPicker/index.js +3 -3
  26. package/dist/DebounceSelect/index.cjs +3 -3
  27. package/dist/DebounceSelect/index.d.ts +1 -1
  28. package/dist/DebounceSelect/index.js +2 -2
  29. package/dist/DiffViewer/index.cjs +2 -2
  30. package/dist/DiffViewer/index.js +1 -1
  31. package/dist/DisabledBox/index.cjs +3 -3
  32. package/dist/DisabledBox/index.d.ts +11 -3
  33. package/dist/DisabledBox/index.js +2 -2
  34. package/dist/DragSortList/index.cjs +3 -2
  35. package/dist/DragSortList/index.css +82 -13
  36. package/dist/DragSortList/index.css.map +1 -1
  37. package/dist/DragSortList/index.d.ts +8 -2
  38. package/dist/DragSortList/index.js +2 -1
  39. package/dist/EnvBadge/index.cjs +2 -2
  40. package/dist/EnvBadge/index.js +1 -1
  41. package/dist/FilePreviewer/index.cjs +4 -4
  42. package/dist/FilePreviewer/index.js +2 -2
  43. package/dist/Fullscreen/index.cjs +3 -3
  44. package/dist/Fullscreen/index.js +2 -2
  45. package/dist/GuidedTour/index.cjs +3 -3
  46. package/dist/GuidedTour/index.js +2 -2
  47. package/dist/ImageCropper/index.cjs +3 -3
  48. package/dist/ImageCropper/index.js +2 -2
  49. package/dist/InfiniteScrollList/index.cjs +3 -3
  50. package/dist/InfiniteScrollList/index.js +2 -2
  51. package/dist/JsonDiffViewer/index.cjs +2 -2
  52. package/dist/JsonDiffViewer/index.js +1 -1
  53. package/dist/JsonEditor/index.cjs +4 -4
  54. package/dist/JsonEditor/index.d.ts +1 -1
  55. package/dist/JsonEditor/index.js +3 -3
  56. package/dist/JsonTree/index.cjs +2 -2
  57. package/dist/JsonTree/index.d.ts +1 -1
  58. package/dist/JsonTree/index.js +1 -1
  59. package/dist/KanbanBoard/index.cjs +2 -2
  60. package/dist/KanbanBoard/index.js +1 -1
  61. package/dist/KeyValEditor/index.cjs +3 -3
  62. package/dist/KeyValEditor/index.js +2 -2
  63. package/dist/Marquee/index.cjs +2 -2
  64. package/dist/Marquee/index.js +1 -1
  65. package/dist/MetricCard/index.cjs +3 -3
  66. package/dist/MetricCard/index.js +2 -2
  67. package/dist/NumericRangeInput/index.cjs +2 -2
  68. package/dist/NumericRangeInput/index.js +1 -1
  69. package/dist/PasswordStrength/index.cjs +4 -4
  70. package/dist/PasswordStrength/index.js +2 -2
  71. package/dist/PdfViewer/index.cjs +3 -3
  72. package/dist/PdfViewer/index.js +2 -2
  73. package/dist/QrCodeCard/index.cjs +3 -3
  74. package/dist/QrCodeCard/index.css +122 -32
  75. package/dist/QrCodeCard/index.css.map +1 -1
  76. package/dist/QrCodeCard/index.d.ts +10 -2
  77. package/dist/QrCodeCard/index.js +2 -2
  78. package/dist/QuickDateRange/index.cjs +2 -2
  79. package/dist/QuickDateRange/index.js +1 -1
  80. package/dist/ScrollTracker/index.cjs +4 -4
  81. package/dist/ScrollTracker/index.js +1 -1
  82. package/dist/SegmentedProgress/index.cjs +2 -2
  83. package/dist/SegmentedProgress/index.js +1 -1
  84. package/dist/SensitiveMask/index.cjs +5 -5
  85. package/dist/SensitiveMask/index.js +3 -3
  86. package/dist/Splitter/index.cjs +3 -3
  87. package/dist/Splitter/index.js +2 -2
  88. package/dist/StatusTimeline/index.cjs +2 -2
  89. package/dist/StatusTimeline/index.js +1 -1
  90. package/dist/TagInput/index.cjs +3 -3
  91. package/dist/TagInput/index.js +2 -2
  92. package/dist/TextEllipsis/index.cjs +4 -4
  93. package/dist/TextEllipsis/index.js +3 -3
  94. package/dist/TreeFilterPanel/index.cjs +2 -2
  95. package/dist/TreeFilterPanel/index.js +1 -1
  96. package/dist/TreeTransfer/index.cjs +3 -3
  97. package/dist/TreeTransfer/index.js +2 -2
  98. package/dist/TrendIndicator/index.cjs +2 -2
  99. package/dist/TrendIndicator/index.js +1 -1
  100. package/dist/VideoPlayer/index.cjs +3 -3
  101. package/dist/VideoPlayer/index.js +2 -2
  102. package/dist/VirtualList/index.cjs +2 -2
  103. package/dist/VirtualList/index.js +1 -1
  104. package/dist/Watermark/index.cjs +2 -2
  105. package/dist/Watermark/index.js +1 -1
  106. package/dist/{chunk-L7ULSFW6.cjs → chunk-2EIAWXFA.cjs} +18 -8
  107. package/dist/chunk-2EIAWXFA.cjs.map +1 -0
  108. package/dist/{chunk-TGSKTHTV.js → chunk-2IDVNTKR.js} +119 -19
  109. package/dist/chunk-2IDVNTKR.js.map +1 -0
  110. package/dist/{chunk-DNRZCHZG.js → chunk-2INP6NM4.js} +4 -11
  111. package/dist/chunk-2INP6NM4.js.map +1 -0
  112. package/dist/{chunk-I3HBI52O.js → chunk-2O2A5XYF.js} +3 -11
  113. package/dist/chunk-2O2A5XYF.js.map +1 -0
  114. package/dist/{chunk-VTANPKPT.js → chunk-3R3NOO4K.js} +2 -2
  115. package/dist/chunk-3R3NOO4K.js.map +1 -0
  116. package/dist/chunk-4KMVABTM.js +419 -0
  117. package/dist/chunk-4KMVABTM.js.map +1 -0
  118. package/dist/{chunk-K5FWY6HB.cjs → chunk-4TMBGQQE.cjs} +5 -5
  119. package/dist/{chunk-K5FWY6HB.cjs.map → chunk-4TMBGQQE.cjs.map} +1 -1
  120. package/dist/{chunk-GZCNFM6C.js → chunk-56VELHCH.js} +8 -17
  121. package/dist/chunk-56VELHCH.js.map +1 -0
  122. package/dist/{chunk-PBPGBVQQ.cjs → chunk-5E36FGRP.cjs} +2 -2
  123. package/dist/chunk-5E36FGRP.cjs.map +1 -0
  124. package/dist/{chunk-PVKBGP6Q.js → chunk-5GLC2HU6.js} +2 -2
  125. package/dist/{chunk-PVKBGP6Q.js.map → chunk-5GLC2HU6.js.map} +1 -1
  126. package/dist/{chunk-QKSCFVN2.js → chunk-5HIRDMZH.js} +2 -2
  127. package/dist/chunk-5HIRDMZH.js.map +1 -0
  128. package/dist/{chunk-7AKHSOSZ.js → chunk-5R2YXBXM.js} +3 -11
  129. package/dist/chunk-5R2YXBXM.js.map +1 -0
  130. package/dist/{chunk-F42Z33L7.cjs → chunk-5V4UAS6I.cjs} +2 -2
  131. package/dist/chunk-5V4UAS6I.cjs.map +1 -0
  132. package/dist/{chunk-WWL4VEPH.js → chunk-6UTLBY6Y.js} +2 -2
  133. package/dist/chunk-6UTLBY6Y.js.map +1 -0
  134. package/dist/{chunk-QI7XQDFZ.cjs → chunk-77ANKL4K.cjs} +77 -85
  135. package/dist/chunk-77ANKL4K.cjs.map +1 -0
  136. package/dist/{chunk-4MRZVLM6.cjs → chunk-7SIUSULP.cjs} +2 -2
  137. package/dist/{chunk-4MRZVLM6.cjs.map → chunk-7SIUSULP.cjs.map} +1 -1
  138. package/dist/{chunk-DFHFXKR5.cjs → chunk-7ZBA4NHH.cjs} +5 -12
  139. package/dist/chunk-7ZBA4NHH.cjs.map +1 -0
  140. package/dist/{chunk-RTAQSOVE.cjs → chunk-AHTRLNYK.cjs} +5 -5
  141. package/dist/{chunk-RTAQSOVE.cjs.map → chunk-AHTRLNYK.cjs.map} +1 -1
  142. package/dist/{chunk-G564WB32.cjs → chunk-AMCCRVHG.cjs} +2 -2
  143. package/dist/chunk-AMCCRVHG.cjs.map +1 -0
  144. package/dist/{chunk-NFC2C2TD.js → chunk-ANTFNDH4.js} +65 -72
  145. package/dist/chunk-ANTFNDH4.js.map +1 -0
  146. package/dist/{chunk-LBEGRYTP.js → chunk-AXPVN2OO.js} +77 -85
  147. package/dist/chunk-AXPVN2OO.js.map +1 -0
  148. package/dist/{chunk-OYRX4AY6.js → chunk-BFQV5MYD.js} +2 -2
  149. package/dist/chunk-BFQV5MYD.js.map +1 -0
  150. package/dist/{chunk-AXHJC7FV.js → chunk-BRHXKRG6.js} +3 -11
  151. package/dist/chunk-BRHXKRG6.js.map +1 -0
  152. package/dist/{chunk-BXFP7EAW.cjs → chunk-CPQLXDBR.cjs} +2 -2
  153. package/dist/{chunk-BXFP7EAW.cjs.map → chunk-CPQLXDBR.cjs.map} +1 -1
  154. package/dist/{chunk-AIIXJB34.js → chunk-CURWX7OY.js} +3 -3
  155. package/dist/{chunk-AIIXJB34.js.map → chunk-CURWX7OY.js.map} +1 -1
  156. package/dist/{chunk-XMBTKO5I.cjs → chunk-DJQEBDEP.cjs} +3 -11
  157. package/dist/chunk-DJQEBDEP.cjs.map +1 -0
  158. package/dist/{chunk-ZQBEQK2I.cjs → chunk-ED3ZG2VX.cjs} +5 -5
  159. package/dist/{chunk-ZQBEQK2I.cjs.map → chunk-ED3ZG2VX.cjs.map} +1 -1
  160. package/dist/{chunk-IECISUOZ.js → chunk-EDNBPLUS.js} +61 -59
  161. package/dist/chunk-EDNBPLUS.js.map +1 -0
  162. package/dist/{chunk-5MQCVYVD.js → chunk-EJYTTSW6.js} +16 -6
  163. package/dist/chunk-EJYTTSW6.js.map +1 -0
  164. package/dist/{chunk-AVSFSS7S.cjs → chunk-EKDJPOA3.cjs} +63 -61
  165. package/dist/chunk-EKDJPOA3.cjs.map +1 -0
  166. package/dist/{chunk-5NI6HK5V.js → chunk-EMT4NUI5.js} +3 -3
  167. package/dist/{chunk-5NI6HK5V.js.map → chunk-EMT4NUI5.js.map} +1 -1
  168. package/dist/{chunk-5GCEQDBM.cjs → chunk-EPYD35KB.cjs} +2 -2
  169. package/dist/chunk-EPYD35KB.cjs.map +1 -0
  170. package/dist/{chunk-YPVRTMX6.js → chunk-ETFLLRTO.js} +4 -6
  171. package/dist/chunk-ETFLLRTO.js.map +1 -0
  172. package/dist/{chunk-ZSK74QFN.cjs → chunk-EUOBMHFF.cjs} +3 -7
  173. package/dist/chunk-EUOBMHFF.cjs.map +1 -0
  174. package/dist/chunk-FZH5FL7X.cjs +167 -0
  175. package/dist/chunk-FZH5FL7X.cjs.map +1 -0
  176. package/dist/{chunk-4IBF4R3H.cjs → chunk-GMZSBGSL.cjs} +2 -2
  177. package/dist/{chunk-4IBF4R3H.cjs.map → chunk-GMZSBGSL.cjs.map} +1 -1
  178. package/dist/{chunk-HTA5EG6X.cjs → chunk-HKALWFWZ.cjs} +5 -5
  179. package/dist/{chunk-HTA5EG6X.cjs.map → chunk-HKALWFWZ.cjs.map} +1 -1
  180. package/dist/{chunk-PMNTOEXC.js → chunk-HZERTFL6.js} +2 -2
  181. package/dist/chunk-HZERTFL6.js.map +1 -0
  182. package/dist/{chunk-DKTB6PKI.js → chunk-IBI6AT5Z.js} +3 -10
  183. package/dist/chunk-IBI6AT5Z.js.map +1 -0
  184. package/dist/{chunk-4VGH44DT.js → chunk-IBYFOFSS.js} +14 -4
  185. package/dist/chunk-IBYFOFSS.js.map +1 -0
  186. package/dist/{chunk-2ORGQ2IY.js → chunk-IF4XAUV3.js} +4 -10
  187. package/dist/chunk-IF4XAUV3.js.map +1 -0
  188. package/dist/{chunk-4GQ3X7MG.cjs → chunk-IPS7PC3M.cjs} +18 -27
  189. package/dist/chunk-IPS7PC3M.cjs.map +1 -0
  190. package/dist/{chunk-ELI3LL3K.cjs → chunk-JHVPDKBM.cjs} +14 -6
  191. package/dist/chunk-JHVPDKBM.cjs.map +1 -0
  192. package/dist/{chunk-5G3XVLJF.js → chunk-JNA5AQ2K.js} +3 -3
  193. package/dist/{chunk-5G3XVLJF.js.map → chunk-JNA5AQ2K.js.map} +1 -1
  194. package/dist/{chunk-W6BUNUQM.cjs → chunk-KGZNVN7P.cjs} +3 -10
  195. package/dist/chunk-KGZNVN7P.cjs.map +1 -0
  196. package/dist/{chunk-R7CRWOHG.js → chunk-L7X3RVEY.js} +2 -2
  197. package/dist/{chunk-R7CRWOHG.js.map → chunk-L7X3RVEY.js.map} +1 -1
  198. package/dist/{chunk-EIFN6XMU.cjs → chunk-LFGBZXQH.cjs} +11 -5
  199. package/dist/chunk-LFGBZXQH.cjs.map +1 -0
  200. package/dist/{chunk-XO6PBAAM.cjs → chunk-LFXMUCEO.cjs} +2 -2
  201. package/dist/chunk-LFXMUCEO.cjs.map +1 -0
  202. package/dist/{chunk-C5B5Y4S2.cjs → chunk-M3GQ7RCV.cjs} +4 -4
  203. package/dist/{chunk-C5B5Y4S2.cjs.map → chunk-M3GQ7RCV.cjs.map} +1 -1
  204. package/dist/{chunk-KBBLTGIU.js → chunk-M4FZJALR.js} +13 -5
  205. package/dist/chunk-M4FZJALR.js.map +1 -0
  206. package/dist/{chunk-N7IQ6LYD.cjs → chunk-MGYDOC76.cjs} +15 -5
  207. package/dist/chunk-MGYDOC76.cjs.map +1 -0
  208. package/dist/{chunk-WBN5SAY5.js → chunk-MLYM5LAX.js} +2 -2
  209. package/dist/{chunk-WBN5SAY5.js.map → chunk-MLYM5LAX.js.map} +1 -1
  210. package/dist/{chunk-62NPVN7T.js → chunk-MQJBUHDB.js} +3 -3
  211. package/dist/{chunk-62NPVN7T.js.map → chunk-MQJBUHDB.js.map} +1 -1
  212. package/dist/{chunk-X7EE5DXL.js → chunk-O2YTJPG4.js} +2 -2
  213. package/dist/{chunk-X7EE5DXL.js.map → chunk-O2YTJPG4.js.map} +1 -1
  214. package/dist/{chunk-OJEZ3TKT.js → chunk-OBK6XTUY.js} +2 -2
  215. package/dist/chunk-OBK6XTUY.js.map +1 -0
  216. package/dist/{chunk-6OKTK3AQ.cjs → chunk-ODNGFJVN.cjs} +3 -11
  217. package/dist/chunk-ODNGFJVN.cjs.map +1 -0
  218. package/dist/{chunk-Z5LFRNNJ.js → chunk-OLLVIQPL.js} +3 -3
  219. package/dist/{chunk-Z5LFRNNJ.js.map → chunk-OLLVIQPL.js.map} +1 -1
  220. package/dist/{chunk-FRGH3Q75.cjs → chunk-OONBZRPV.cjs} +4 -4
  221. package/dist/{chunk-FRGH3Q75.cjs.map → chunk-OONBZRPV.cjs.map} +1 -1
  222. package/dist/{chunk-UT5UXO44.js → chunk-P5CS7V4W.js} +3 -3
  223. package/dist/chunk-P5CS7V4W.js.map +1 -0
  224. package/dist/{chunk-HQ65GEM7.js → chunk-PTFKE67K.js} +3 -3
  225. package/dist/{chunk-HQ65GEM7.js.map → chunk-PTFKE67K.js.map} +1 -1
  226. package/dist/{chunk-U2TTRBES.js → chunk-PUMVD7CP.js} +3 -3
  227. package/dist/{chunk-U2TTRBES.js.map → chunk-PUMVD7CP.js.map} +1 -1
  228. package/dist/{chunk-4YPT2HUD.cjs → chunk-PYCSRJSF.cjs} +16 -7
  229. package/dist/chunk-PYCSRJSF.cjs.map +1 -0
  230. package/dist/{chunk-ZAHKA2V2.js → chunk-Q7OVUH5K.js} +3 -3
  231. package/dist/chunk-Q7OVUH5K.js.map +1 -0
  232. package/dist/{chunk-NMYXVZQP.cjs → chunk-QNSEJGF6.cjs} +2 -2
  233. package/dist/chunk-QNSEJGF6.cjs.map +1 -0
  234. package/dist/{chunk-KUW2ZR2A.cjs → chunk-QP3RKA4J.cjs} +65 -72
  235. package/dist/chunk-QP3RKA4J.cjs.map +1 -0
  236. package/dist/{chunk-IUR7SPDA.js → chunk-QRZ2GVVJ.js} +85 -92
  237. package/dist/chunk-QRZ2GVVJ.js.map +1 -0
  238. package/dist/{chunk-Q4QF6UYX.cjs → chunk-R4V3EJVP.cjs} +124 -18
  239. package/dist/chunk-R4V3EJVP.cjs.map +1 -0
  240. package/dist/{chunk-2ARM7X7A.js → chunk-RAF7I4A5.js} +2 -2
  241. package/dist/chunk-RAF7I4A5.js.map +1 -0
  242. package/dist/{chunk-7JLQOQJZ.cjs → chunk-RN5WU7KA.cjs} +7 -7
  243. package/dist/{chunk-7JLQOQJZ.cjs.map → chunk-RN5WU7KA.cjs.map} +1 -1
  244. package/dist/{chunk-FBOTWA6O.cjs → chunk-TNZ2OLGW.cjs} +5 -7
  245. package/dist/chunk-TNZ2OLGW.cjs.map +1 -0
  246. package/dist/chunk-TUDLE3RT.cjs +429 -0
  247. package/dist/chunk-TUDLE3RT.cjs.map +1 -0
  248. package/dist/{chunk-PIIJVF5D.cjs → chunk-TUEVILTA.cjs} +5 -5
  249. package/dist/chunk-TUEVILTA.cjs.map +1 -0
  250. package/dist/{chunk-RWZSTG6Q.cjs → chunk-U2EBNBGK.cjs} +4 -4
  251. package/dist/{chunk-RWZSTG6Q.cjs.map → chunk-U2EBNBGK.cjs.map} +1 -1
  252. package/dist/{chunk-5WHBZH44.cjs → chunk-UAUP5TJK.cjs} +5 -5
  253. package/dist/chunk-UAUP5TJK.cjs.map +1 -0
  254. package/dist/{chunk-SMVAHIBN.cjs → chunk-UCG7ZVK5.cjs} +2 -2
  255. package/dist/chunk-UCG7ZVK5.cjs.map +1 -0
  256. package/dist/{chunk-DATPWEQK.cjs → chunk-UZB7GOEI.cjs} +4 -4
  257. package/dist/{chunk-DATPWEQK.cjs.map → chunk-UZB7GOEI.cjs.map} +1 -1
  258. package/dist/{chunk-AJIIY2QT.cjs → chunk-VF5P7XMC.cjs} +2 -2
  259. package/dist/chunk-VF5P7XMC.cjs.map +1 -0
  260. package/dist/{chunk-R77VVMV5.cjs → chunk-VJOO2DG3.cjs} +87 -94
  261. package/dist/chunk-VJOO2DG3.cjs.map +1 -0
  262. package/dist/{chunk-XB3BT6BU.js → chunk-W5JA3YTT.js} +3 -3
  263. package/dist/{chunk-XB3BT6BU.js.map → chunk-W5JA3YTT.js.map} +1 -1
  264. package/dist/{chunk-ZGWBLJ6U.cjs → chunk-WDHU3BSM.cjs} +2 -2
  265. package/dist/{chunk-ZGWBLJ6U.cjs.map → chunk-WDHU3BSM.cjs.map} +1 -1
  266. package/dist/{chunk-NCNDJTOK.js → chunk-WEGDIRDB.js} +2 -2
  267. package/dist/chunk-WEGDIRDB.js.map +1 -0
  268. package/dist/{chunk-H5VPBP7U.js → chunk-WKF4C6TJ.js} +10 -4
  269. package/dist/chunk-WKF4C6TJ.js.map +1 -0
  270. package/dist/{chunk-EJNMH7ND.js → chunk-WN557PFJ.js} +2 -2
  271. package/dist/chunk-WN557PFJ.js.map +1 -0
  272. package/dist/{chunk-VPHHGQWP.js → chunk-XLOGMDAQ.js} +3 -3
  273. package/dist/{chunk-VPHHGQWP.js.map → chunk-XLOGMDAQ.js.map} +1 -1
  274. package/dist/chunk-XUAHWX6B.js +153 -0
  275. package/dist/chunk-XUAHWX6B.js.map +1 -0
  276. package/dist/chunk-Y54KVULF.js +161 -0
  277. package/dist/chunk-Y54KVULF.js.map +1 -0
  278. package/dist/{chunk-JD4TEUIV.js → chunk-YFHKH6HL.js} +3 -7
  279. package/dist/chunk-YFHKH6HL.js.map +1 -0
  280. package/dist/{chunk-XYJMP23P.cjs → chunk-YP4XTMK3.cjs} +4 -10
  281. package/dist/chunk-YP4XTMK3.cjs.map +1 -0
  282. package/dist/{chunk-7JRGQL63.js → chunk-ZCBT56AG.js} +13 -4
  283. package/dist/chunk-ZCBT56AG.js.map +1 -0
  284. package/dist/{chunk-GCMI5JGQ.cjs → chunk-ZKM664KC.cjs} +2 -2
  285. package/dist/chunk-ZKM664KC.cjs.map +1 -0
  286. package/dist/{chunk-24ND5WB7.cjs → chunk-ZVSN7ADO.cjs} +3 -11
  287. package/dist/chunk-ZVSN7ADO.cjs.map +1 -0
  288. package/dist/chunk-ZWKUHYTV.cjs +155 -0
  289. package/dist/chunk-ZWKUHYTV.cjs.map +1 -0
  290. package/dist/index.cjs +113 -97
  291. package/dist/index.css +440 -56
  292. package/dist/index.css.map +1 -1
  293. package/dist/index.js +46 -46
  294. package/dist/src/icons.d.ts +29 -11
  295. package/dist/src/index.d.ts +3 -1
  296. package/package.json +1 -1
  297. package/dist/chunk-24ND5WB7.cjs.map +0 -1
  298. package/dist/chunk-2ARM7X7A.js.map +0 -1
  299. package/dist/chunk-2ORGQ2IY.js.map +0 -1
  300. package/dist/chunk-4DUMEO5E.cjs +0 -107
  301. package/dist/chunk-4DUMEO5E.cjs.map +0 -1
  302. package/dist/chunk-4GQ3X7MG.cjs.map +0 -1
  303. package/dist/chunk-4VGH44DT.js.map +0 -1
  304. package/dist/chunk-4YPT2HUD.cjs.map +0 -1
  305. package/dist/chunk-5GCEQDBM.cjs.map +0 -1
  306. package/dist/chunk-5MQCVYVD.js.map +0 -1
  307. package/dist/chunk-5WHBZH44.cjs.map +0 -1
  308. package/dist/chunk-6OKTK3AQ.cjs.map +0 -1
  309. package/dist/chunk-7AKHSOSZ.js.map +0 -1
  310. package/dist/chunk-7JRGQL63.js.map +0 -1
  311. package/dist/chunk-AJIIY2QT.cjs.map +0 -1
  312. package/dist/chunk-AVSFSS7S.cjs.map +0 -1
  313. package/dist/chunk-AXHJC7FV.js.map +0 -1
  314. package/dist/chunk-DFHFXKR5.cjs.map +0 -1
  315. package/dist/chunk-DKTB6PKI.js.map +0 -1
  316. package/dist/chunk-DNRZCHZG.js.map +0 -1
  317. package/dist/chunk-EIFN6XMU.cjs.map +0 -1
  318. package/dist/chunk-EJNMH7ND.js.map +0 -1
  319. package/dist/chunk-ELI3LL3K.cjs.map +0 -1
  320. package/dist/chunk-EQ7S5SYM.js +0 -67
  321. package/dist/chunk-EQ7S5SYM.js.map +0 -1
  322. package/dist/chunk-F42Z33L7.cjs.map +0 -1
  323. package/dist/chunk-FBOTWA6O.cjs.map +0 -1
  324. package/dist/chunk-FWRVCH7T.js +0 -37
  325. package/dist/chunk-FWRVCH7T.js.map +0 -1
  326. package/dist/chunk-FYFL4PFD.cjs +0 -69
  327. package/dist/chunk-FYFL4PFD.cjs.map +0 -1
  328. package/dist/chunk-G564WB32.cjs.map +0 -1
  329. package/dist/chunk-GCMI5JGQ.cjs.map +0 -1
  330. package/dist/chunk-GZCNFM6C.js.map +0 -1
  331. package/dist/chunk-H5VPBP7U.js.map +0 -1
  332. package/dist/chunk-I3HBI52O.js.map +0 -1
  333. package/dist/chunk-IECISUOZ.js.map +0 -1
  334. package/dist/chunk-IUR7SPDA.js.map +0 -1
  335. package/dist/chunk-JD4TEUIV.js.map +0 -1
  336. package/dist/chunk-KBBLTGIU.js.map +0 -1
  337. package/dist/chunk-KUW2ZR2A.cjs.map +0 -1
  338. package/dist/chunk-L7ULSFW6.cjs.map +0 -1
  339. package/dist/chunk-LBEGRYTP.js.map +0 -1
  340. package/dist/chunk-N7IQ6LYD.cjs.map +0 -1
  341. package/dist/chunk-NCNDJTOK.js.map +0 -1
  342. package/dist/chunk-NFC2C2TD.js.map +0 -1
  343. package/dist/chunk-NMYXVZQP.cjs.map +0 -1
  344. package/dist/chunk-OJEZ3TKT.js.map +0 -1
  345. package/dist/chunk-OYRX4AY6.js.map +0 -1
  346. package/dist/chunk-PBPGBVQQ.cjs.map +0 -1
  347. package/dist/chunk-PIIJVF5D.cjs.map +0 -1
  348. package/dist/chunk-PMNTOEXC.js.map +0 -1
  349. package/dist/chunk-Q4QF6UYX.cjs.map +0 -1
  350. package/dist/chunk-QI7XQDFZ.cjs.map +0 -1
  351. package/dist/chunk-QKSCFVN2.js.map +0 -1
  352. package/dist/chunk-R77VVMV5.cjs.map +0 -1
  353. package/dist/chunk-SMVAHIBN.cjs.map +0 -1
  354. package/dist/chunk-TGSKTHTV.js.map +0 -1
  355. package/dist/chunk-UT5UXO44.js.map +0 -1
  356. package/dist/chunk-VTANPKPT.js.map +0 -1
  357. package/dist/chunk-W6BUNUQM.cjs.map +0 -1
  358. package/dist/chunk-WWL4VEPH.js.map +0 -1
  359. package/dist/chunk-X4MEHYWV.js +0 -105
  360. package/dist/chunk-X4MEHYWV.js.map +0 -1
  361. package/dist/chunk-XMBTKO5I.cjs.map +0 -1
  362. package/dist/chunk-XO6PBAAM.cjs.map +0 -1
  363. package/dist/chunk-XYJMP23P.cjs.map +0 -1
  364. package/dist/chunk-YJESCN4Y.cjs +0 -39
  365. package/dist/chunk-YJESCN4Y.cjs.map +0 -1
  366. package/dist/chunk-YPVRTMX6.js.map +0 -1
  367. package/dist/chunk-ZAHKA2V2.js.map +0 -1
  368. package/dist/chunk-ZSK74QFN.cjs.map +0 -1
@@ -1,69 +0,0 @@
1
- 'use strict';
2
-
3
- var react = require('react');
4
- var jsxRuntime = require('react/jsx-runtime');
5
-
6
- // DragSortList/index.tsx
7
- function DragSortList({
8
- items,
9
- onReorder,
10
- keyExtractor,
11
- renderItem,
12
- className = "",
13
- style
14
- }) {
15
- const [draggingIndex, setDraggingIndex] = react.useState(null);
16
- const [dragOverIndex, setDragOverIndex] = react.useState(null);
17
- const handleDragStart = (index) => {
18
- setDraggingIndex(index);
19
- };
20
- const handleDragOver = (e, index) => {
21
- e.preventDefault();
22
- if (dragOverIndex !== index) {
23
- setDragOverIndex(index);
24
- }
25
- };
26
- const handleDrop = (index) => {
27
- if (draggingIndex === null || draggingIndex === index) {
28
- setDraggingIndex(null);
29
- setDragOverIndex(null);
30
- return;
31
- }
32
- const newItems = [...items];
33
- const [draggedItem] = newItems.splice(draggingIndex, 1);
34
- newItems.splice(index, 0, draggedItem);
35
- setDraggingIndex(null);
36
- setDragOverIndex(null);
37
- onReorder(newItems);
38
- };
39
- const handleDragEnd = () => {
40
- setDraggingIndex(null);
41
- setDragOverIndex(null);
42
- };
43
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `rpc_drag_sort_list ${className}`, style, children: items.map((item, idx) => {
44
- const key = keyExtractor(item, idx);
45
- const isDragging = draggingIndex === idx;
46
- const isOver = dragOverIndex === idx && draggingIndex !== idx;
47
- return /* @__PURE__ */ jsxRuntime.jsxs(
48
- "div",
49
- {
50
- draggable: true,
51
- onDragStart: () => handleDragStart(idx),
52
- onDragOver: (e) => handleDragOver(e, idx),
53
- onDrop: () => handleDrop(idx),
54
- onDragEnd: handleDragEnd,
55
- className: `rpc_drag_sort_list_item ${isDragging ? "rpc_drag_sort_list_item_dragging" : ""} ${isOver ? "rpc_drag_sort_list_item_over" : ""}`,
56
- children: [
57
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rpc_drag_sort_list_handle", children: "\u22EE\u22EE" }),
58
- /* @__PURE__ */ jsxRuntime.jsx("div", { style: { flex: 1 }, children: renderItem(item, idx, isDragging) })
59
- ]
60
- },
61
- key
62
- );
63
- }) });
64
- }
65
- var DragSortList_default = DragSortList;
66
-
67
- exports.DragSortList_default = DragSortList_default;
68
- //# sourceMappingURL=chunk-FYFL4PFD.cjs.map
69
- //# sourceMappingURL=chunk-FYFL4PFD.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../DragSortList/index.tsx"],"names":["useState","jsx","jsxs"],"mappings":"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","file":"chunk-FYFL4PFD.cjs","sourcesContent":["import React, { useState, ReactNode, CSSProperties } from 'react';\nimport './index.less';\n\nexport interface DragSortListProps<T> {\n\t/** 数据列表 */\n\titems: T[];\n\t/** 拖拽排序完成后的新列表回调 */\n\tonReorder: (newItems: T[]) => void;\n\t/** 提取唯一 Key */\n\tkeyExtractor: (item: T, index: number) => string | number;\n\t/** 自定义渲染单个列表项内容 */\n\trenderItem: (item: T, index: number, isDragging: boolean) => ReactNode;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nfunction DragSortList<T>({\n\titems,\n\tonReorder,\n\tkeyExtractor,\n\trenderItem,\n\tclassName = '',\n\tstyle,\n}: DragSortListProps<T>) {\n\tconst [draggingIndex, setDraggingIndex] = useState<number | null>(null);\n\tconst [dragOverIndex, setDragOverIndex] = useState<number | null>(null);\n\n\tconst handleDragStart = (index: number) => {\n\t\tsetDraggingIndex(index);\n\t};\n\n\tconst handleDragOver = (e: React.DragEvent, index: number) => {\n\t\te.preventDefault();\n\t\tif (dragOverIndex !== index) {\n\t\t\tsetDragOverIndex(index);\n\t\t}\n\t};\n\n\tconst handleDrop = (index: number) => {\n\t\tif (draggingIndex === null || draggingIndex === index) {\n\t\t\tsetDraggingIndex(null);\n\t\t\tsetDragOverIndex(null);\n\t\t\treturn;\n\t\t}\n\n\t\tconst newItems = [...items];\n\t\tconst [draggedItem] = newItems.splice(draggingIndex, 1);\n\t\tnewItems.splice(index, 0, draggedItem);\n\n\t\tsetDraggingIndex(null);\n\t\tsetDragOverIndex(null);\n\t\tonReorder(newItems);\n\t};\n\n\tconst handleDragEnd = () => {\n\t\tsetDraggingIndex(null);\n\t\tsetDragOverIndex(null);\n\t};\n\n\treturn (\n\t\t<div className={`rpc_drag_sort_list ${className}`} style={style}>\n\t\t\t{items.map((item, idx) => {\n\t\t\t\tconst key = keyExtractor(item, idx);\n\t\t\t\tconst isDragging = draggingIndex === idx;\n\t\t\t\tconst isOver = dragOverIndex === idx && draggingIndex !== idx;\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\tdraggable\n\t\t\t\t\t\tonDragStart={() => handleDragStart(idx)}\n\t\t\t\t\t\tonDragOver={(e) => handleDragOver(e, idx)}\n\t\t\t\t\t\tonDrop={() => handleDrop(idx)}\n\t\t\t\t\t\tonDragEnd={handleDragEnd}\n\t\t\t\t\t\tclassName={`rpc_drag_sort_list_item ${\n\t\t\t\t\t\t\tisDragging ? 'rpc_drag_sort_list_item_dragging' : ''\n\t\t\t\t\t\t} ${isOver ? 'rpc_drag_sort_list_item_over' : ''}`}\n\t\t\t\t\t>\n\t\t\t\t\t\t<span className=\"rpc_drag_sort_list_handle\">⋮⋮</span>\n\t\t\t\t\t\t<div style={{ flex: 1 }}>{renderItem(item, idx, isDragging)}</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 DragSortList;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../CascadeDrawer/index.tsx"],"names":["useState","jsx","jsxs","React"],"mappings":";;;;;;;;;;AAwBA,IAAM,gBAA8C,CAAC;AAAA,EACpD,IAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA,GAAQ,GAAA;AAAA,EACR,SAAA,GAAY,EAAA;AAAA,EACZ;AACD,CAAA,KAAM;AACL,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,IAAIA,cAAA,CAAyB,CAAC,SAAS,CAAC,CAAA;AAE9D,EAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAElB,EAAA,MAAM,YAAA,GAAe,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA,IAAK,SAAA;AAEhD,EAAA,MAAM,SAAA,GAAY,CAAC,KAAA,KAAwB;AAC1C,IAAA,QAAA,CAAS,CAAC,IAAA,KAAS,CAAC,GAAG,IAAA,EAAM,KAAK,CAAC,CAAA;AAAA,EACpC,CAAA;AAEA,EAAA,MAAM,KAAA,GAAQ,CAAC,KAAA,KAAkB;AAChC,IAAA,QAAA,CAAS,CAAC,IAAA,KAAS,IAAA,CAAK,MAAM,CAAA,EAAG,KAAA,GAAQ,CAAC,CAAC,CAAA;AAAA,EAC5C,CAAA;AAEA,EAAA,uCACE,KAAA,EAAA,EAAI,SAAA,EAAW,CAAA,mBAAA,EAAsB,SAAS,IAAI,KAAA,EAClD,QAAA,EAAA;AAAA,oBAAAC,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EAA0B,OAAA,EAAS,OAAA,EAAS,CAAA;AAAA,oCAE1D,KAAA,EAAA,EAAI,SAAA,EAAU,8BAA6B,KAAA,EAAO,EAAE,OAAM,EAE1D,QAAA,EAAA;AAAA,sBAAAC,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,2BAAA,EACd,QAAA,EAAA;AAAA,wBAAAD,cAAA,CAAC,SAAI,SAAA,EAAU,gCAAA,EACb,gBAAM,GAAA,CAAI,CAAC,MAAM,GAAA,KAAQ;AACzB,UAAA,MAAM,MAAA,GAAS,GAAA,KAAQ,KAAA,CAAM,MAAA,GAAS,CAAA;AACtC,UAAA,uBACCC,eAAA,CAACC,sBAAA,CAAM,QAAA,EAAN,EACC,QAAA,EAAA;AAAA,YAAA,GAAA,GAAM,CAAA,mCAAM,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,IAAa,QAAA,EAAA,GAAA,EAAC,CAAA;AAAA,YAC/C,MAAA,mBACAF,cAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,IAAA,CAAK,OAAM,CAAA,mBAElBA,cAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACA,IAAA,EAAK,QAAA;AAAA,gBACL,SAAA,EAAU,8BAAA;AAAA,gBACV,OAAA,EAAS,MAAM,KAAA,CAAM,GAAG,CAAA;AAAA,gBAEvB,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA;AACP,WAAA,EAAA,EAXmB,KAAK,EAa1B,CAAA;AAAA,QAEF,CAAC,CAAA,EACF,CAAA;AAAA,wBAEAA,cAAA,CAAC,YAAO,IAAA,EAAK,QAAA,EAAS,WAAU,8BAAA,EAA+B,OAAA,EAAS,SAAS,QAAA,EAAA,QAAA,EAEjF;AAAA,OAAA,EACD,CAAA;AAAA,sBAGAA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA,OAAO,YAAA,CAAa,OAAA,KAAY,UAAA,GAC7B,YAAA,CAAa,OAAA,CAAgB,SAAS,CAAA,GACvC,aAAa,OAAA,EACjB;AAAA,KAAA,EACD;AAAA,GAAA,EACD,CAAA;AAEF,CAAA;AAEA,IAAO,qBAAA,GAAQ","file":"chunk-G564WB32.cjs","sourcesContent":["import React, { useState, ReactNode, CSSProperties } from 'react';\nimport './index.less';\n\nexport interface CascadeLevel {\n\tid: string;\n\ttitle: string;\n\tcontent: ReactNode;\n}\n\nexport interface CascadeDrawerProps {\n\t/** 是否打开抽屉 */\n\topen: boolean;\n\t/** 关闭抽屉回调 */\n\tonClose: () => void;\n\t/** 初始根层级 */\n\trootLevel: CascadeLevel;\n\t/** 抽屉宽度,默认为 440 */\n\twidth?: number | string;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst CascadeDrawer: React.FC<CascadeDrawerProps> = ({\n\topen,\n\tonClose,\n\trootLevel,\n\twidth = 440,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [stack, setStack] = useState<CascadeLevel[]>([rootLevel]);\n\n\tif (!open) return null;\n\n\tconst currentLevel = stack[stack.length - 1] || rootLevel;\n\n\tconst pushLevel = (level: CascadeLevel) => {\n\t\tsetStack((prev) => [...prev, level]);\n\t};\n\n\tconst popTo = (index: number) => {\n\t\tsetStack((prev) => prev.slice(0, index + 1));\n\t};\n\n\treturn (\n\t\t<div className={`rpc_cascade_drawer ${className}`} style={style}>\n\t\t\t<div className=\"rpc_cascade_drawer_mask\" onClick={onClose} />\n\n\t\t\t<div className=\"rpc_cascade_drawer_content\" style={{ width }}>\n\t\t\t\t{/* 顶部面包屑导航 */}\n\t\t\t\t<div className=\"rpc_cascade_drawer_header\">\n\t\t\t\t\t<div className=\"rpc_cascade_drawer_breadcrumbs\">\n\t\t\t\t\t\t{stack.map((item, idx) => {\n\t\t\t\t\t\t\tconst isLast = idx === stack.length - 1;\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<React.Fragment key={item.id}>\n\t\t\t\t\t\t\t\t\t{idx > 0 && <span style={{ color: '#bfbfbf' }}>/</span>}\n\t\t\t\t\t\t\t\t\t{isLast ? (\n\t\t\t\t\t\t\t\t\t\t<span>{item.title}</span>\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"rpc_cascade_drawer_crumb_btn\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => popTo(idx)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{item.title}\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<button type=\"button\" className=\"rpc_cascade_drawer_close_btn\" onClick={onClose}>\n\t\t\t\t\t\t✕\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\n\t\t\t\t{/* 当前层级内容 */}\n\t\t\t\t<div className=\"rpc_cascade_drawer_body\">\n\t\t\t\t\t{typeof currentLevel.content === 'function'\n\t\t\t\t\t\t? (currentLevel.content as any)(pushLevel)\n\t\t\t\t\t\t: currentLevel.content}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default CascadeDrawer;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../ScrollTracker/index.tsx"],"names":["useState","useEffect","targetEl","jsxs","jsx","useRef","Fragment"],"mappings":"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","file":"chunk-GCMI5JGQ.cjs","sourcesContent":["import React, { useState, useEffect, useRef, ReactNode, CSSProperties } from 'react';\nimport './index.less';\n\n/* =========================================================================\n * 1. ScrollTracker 组件\n * ========================================================================= */\n\nexport interface ScrollTrackerProps {\n\t/** 进度条吸附位置:'top' 顶部,'bottom' 底部,默认为 'top' */\n\tposition?: 'top' | 'bottom';\n\t/** 进度条高度(像素),默认为 3 */\n\theight?: number;\n\t/** 进度条颜色或渐变色配置(如 '#1677ff' 或 ['#1677ff', '#52c41a']) */\n\tcolor?: string | string[];\n\t/** 是否显示右上角/角落的百分比数字浮签,默认为 false */\n\tshowPercentage?: boolean;\n\t/** 监听滚动的目标元素或 ref(不传时监听整个 window 视口) */\n\ttarget?: HTMLElement | (() => HTMLElement | null) | null;\n\t/** 进度改变回调 (0 ~ 100) */\n\tonChange?: (percent: number) => void;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nexport const ScrollTracker: React.FC<ScrollTrackerProps> = ({\n\tposition = 'top',\n\theight = 3,\n\tcolor = '#1677ff',\n\tshowPercentage = false,\n\ttarget,\n\tonChange,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [percent, setPercent] = useState<number>(0);\n\n\tuseEffect(() => {\n\t\tconst calculateScroll = () => {\n\t\t\tlet scrollTop = 0;\n\t\t\tlet scrollHeight = 0;\n\t\t\tlet clientHeight = 0;\n\n\t\t\tconst targetEl = typeof target === 'function' ? target() : target;\n\n\t\t\tif (targetEl) {\n\t\t\t\tscrollTop = targetEl.scrollTop;\n\t\t\t\tscrollHeight = targetEl.scrollHeight;\n\t\t\t\tclientHeight = targetEl.clientHeight;\n\t\t\t} else {\n\t\t\t\tscrollTop = window.pageYOffset || document.documentElement.scrollTop;\n\t\t\t\tscrollHeight = document.documentElement.scrollHeight;\n\t\t\t\tclientHeight = document.documentElement.clientHeight;\n\t\t\t}\n\n\t\t\tconst total = scrollHeight - clientHeight;\n\t\t\tconst currentPercent = total > 0 ? Math.min(100, Math.max(0, (scrollTop / total) * 100)) : 0;\n\t\t\tconst rounded = Math.round(currentPercent);\n\n\t\t\tsetPercent(rounded);\n\t\t\tonChange?.(rounded);\n\t\t};\n\n\t\tcalculateScroll();\n\n\t\tconst targetEl = typeof target === 'function' ? target() : target;\n\t\tconst scrollSource = targetEl || window;\n\n\t\tscrollSource.addEventListener('scroll', calculateScroll, { passive: true });\n\t\twindow.addEventListener('resize', calculateScroll);\n\n\t\treturn () => {\n\t\t\tscrollSource.removeEventListener('scroll', calculateScroll);\n\t\t\twindow.removeEventListener('resize', calculateScroll);\n\t\t};\n\t}, [target, onChange]);\n\n\t// 计算背景渐变色\n\tconst backgroundStyle = Array.isArray(color)\n\t\t? `linear-gradient(90deg, ${color.join(', ')})`\n\t\t: color;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={`rpc_scroll_tracker rpc_scroll_tracker_${position} ${className}`}\n\t\t\tstyle={{ height, ...style }}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName=\"rpc_scroll_tracker_bar\"\n\t\t\t\tstyle={{\n\t\t\t\t\twidth: `${percent}%`,\n\t\t\t\t\tbackground: backgroundStyle,\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t{showPercentage && (\n\t\t\t\t<span className=\"rpc_scroll_tracker_percentage\">{percent}%</span>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\n/* =========================================================================\n * 2. StickyHeader 组件\n * ========================================================================= */\n\nexport interface StickyHeaderProps {\n\t/** 子内容 */\n\tchildren: ReactNode | ((isSticky: boolean) => ReactNode);\n\t/** 吸顶距离顶部偏移量(像素),默认为 0 */\n\toffsetTop?: number;\n\t/** 吸顶状态改变回调 */\n\tonStickyChange?: (isSticky: boolean) => void;\n\t/** 监听滚动的目标容器(默认为 window) */\n\ttarget?: HTMLElement | (() => HTMLElement | null) | null;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nexport const StickyHeader: React.FC<StickyHeaderProps> = ({\n\tchildren,\n\toffsetTop = 0,\n\tonStickyChange,\n\ttarget,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [isSticky, setIsSticky] = useState<boolean>(false);\n\tconst headerRef = useRef<HTMLDivElement>(null);\n\tconst sentinelRef = useRef<HTMLDivElement>(null);\n\n\tuseEffect(() => {\n\t\tconst sentinel = sentinelRef.current;\n\t\tconst targetEl = typeof target === 'function' ? target() : target;\n\n\t\tif (!sentinel) return;\n\n\t\tconst observer = new IntersectionObserver(\n\t\t\t([entry]) => {\n\t\t\t\t// 当占位元素滚出视口顶部时触发吸顶\n\t\t\t\tconst sticky = !entry.isIntersecting && entry.boundingClientRect.top <= offsetTop;\n\t\t\t\tsetIsSticky(sticky);\n\t\t\t\tonStickyChange?.(sticky);\n\t\t\t},\n\t\t\t{\n\t\t\t\troot: targetEl || null,\n\t\t\t\tthreshold: [0],\n\t\t\t\trootMargin: `-${offsetTop}px 0px 0px 0px`,\n\t\t\t},\n\t\t);\n\n\t\tobserver.observe(sentinel);\n\t\treturn () => observer.disconnect();\n\t}, [offsetTop, target, onStickyChange]);\n\n\treturn (\n\t\t<>\n\t\t\t{/* 探测哨兵元素 */}\n\t\t\t<div ref={sentinelRef} style={{ height: 1, marginBottom: -1 }} />\n\t\t\t<div\n\t\t\t\tref={headerRef}\n\t\t\t\tclassName={`rpc_sticky_header ${isSticky ? 'rpc_sticky_header_stuck' : ''} ${className}`}\n\t\t\t\tstyle={{\n\t\t\t\t\ttop: `${offsetTop}px`,\n\t\t\t\t\t...style,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{typeof children === 'function' ? children(isSticky) : children}\n\t\t\t</div>\n\t\t</>\n\t);\n};\n\nexport default ScrollTracker;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../FilePreviewer/index.tsx"],"names":[],"mappings":"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","file":"chunk-GZCNFM6C.js","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":["../TreeTransfer/index.tsx"],"names":[],"mappings":"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","file":"chunk-H5VPBP7U.js","sourcesContent":["import React, { useState, useMemo, CSSProperties } from 'react';\nimport { CloseOutlined } from '../src/icons';\nimport './index.less';\n\nexport interface TreeTransferNode {\n\tkey: string;\n\ttitle: string;\n\tchildren?: TreeTransferNode[];\n}\n\nexport interface TreeTransferProps {\n\t/** 树形数据源 */\n\ttreeData: TreeTransferNode[];\n\t/** 右侧已选择 keys 列表(受控) */\n\ttargetKeys?: string[];\n\t/** 默认已选择 keys 列表 */\n\tdefaultTargetKeys?: string[];\n\t/** 改变回调 */\n\tonChange?: (targetKeys: string[]) => void;\n\t/** 左侧面板标题,默认为 '待选项目录' */\n\tsourceTitle?: string;\n\t/** 右侧面板标题,默认为 '已选项目' */\n\ttargetTitle?: string;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst TreeTransfer: React.FC<TreeTransferProps> = ({\n\ttreeData = [],\n\ttargetKeys: controlledKeys,\n\tdefaultTargetKeys = [],\n\tonChange,\n\tsourceTitle = '待选项目录',\n\ttargetTitle = '已选项目',\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [internalKeys, setInternalKeys] = useState<string[]>(defaultTargetKeys);\n\tconst targetKeys = controlledKeys !== undefined ? controlledKeys : internalKeys;\n\n\t// 平铺节点便于通过 key 查找 title\n\tconst flatNodeMap = useMemo(() => {\n\t\tconst map = new Map<string, string>();\n\t\tconst traverse = (nodes: TreeTransferNode[]) => {\n\t\t\tnodes.forEach((n) => {\n\t\t\t\tmap.set(n.key, n.title);\n\t\t\t\tif (n.children) traverse(n.children);\n\t\t\t});\n\t\t};\n\t\ttraverse(treeData);\n\t\treturn map;\n\t}, [treeData]);\n\n\tconst triggerChange = (newKeys: string[]) => {\n\t\tif (controlledKeys === undefined) setInternalKeys(newKeys);\n\t\tonChange?.(newKeys);\n\t};\n\n\tconst handleToggle = (key: string, checked: boolean) => {\n\t\tif (checked) {\n\t\t\ttriggerChange([...targetKeys, key]);\n\t\t} else {\n\t\t\ttriggerChange(targetKeys.filter((k) => k !== key));\n\t\t}\n\t};\n\n\tconst handleRemove = (key: string) => {\n\t\ttriggerChange(targetKeys.filter((k) => k !== key));\n\t};\n\n\treturn (\n\t\t<div className={`rpc_tree_transfer ${className}`} style={style}>\n\t\t\t{/* 左侧树形选择面板 */}\n\t\t\t<div className=\"rpc_tree_transfer_panel\">\n\t\t\t\t<div className=\"rpc_tree_transfer_header\">\n\t\t\t\t\t<span>{sourceTitle}</span>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"rpc_tree_transfer_body\">\n\t\t\t\t\t{treeData.map((group) => (\n\t\t\t\t\t\t<div key={group.key}>\n\t\t\t\t\t\t\t<div className=\"rpc_tree_transfer_tree_item\">\n\t\t\t\t\t\t\t\t<b>📁 {group.title}</b>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{group.children?.map((child) => {\n\t\t\t\t\t\t\t\tconst isChecked = targetKeys.includes(child.key);\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<label\n\t\t\t\t\t\t\t\t\t\tkey={child.key}\n\t\t\t\t\t\t\t\t\t\tclassName=\"rpc_tree_transfer_tree_item rpc_tree_transfer_tree_child\"\n\t\t\t\t\t\t\t\t\t\tstyle={{ cursor: 'pointer' }}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\t\t\t\t\tchecked={isChecked}\n\t\t\t\t\t\t\t\t\t\t\tonChange={(e) => handleToggle(child.key, e.target.checked)}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t<span>{child.title}</span>\n\t\t\t\t\t\t\t\t\t</label>\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))}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{/* 中间指示 */}\n\t\t\t<span style={{ color: '#8c8c8c' }}>⇄</span>\n\n\t\t\t{/* 右侧平铺已选面板 */}\n\t\t\t<div className=\"rpc_tree_transfer_panel\">\n\t\t\t\t<div className=\"rpc_tree_transfer_header\">\n\t\t\t\t\t<span>{targetTitle} ({targetKeys.length})</span>\n\t\t\t\t\t{targetKeys.length > 0 && (\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tstyle={{ background: 'none', border: 'none', color: '#1677ff', cursor: 'pointer', fontSize: 12 }}\n\t\t\t\t\t\t\tonClick={() => triggerChange([])}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t清空\n\t\t\t\t\t\t</button>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t<div className=\"rpc_tree_transfer_body\">\n\t\t\t\t\t{targetKeys.length === 0 ? (\n\t\t\t\t\t\t<div style={{ color: '#8c8c8c', padding: '20px 0', textAlign: 'center' }}>\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\ttargetKeys.map((key) => (\n\t\t\t\t\t\t\t<div key={key} className=\"rpc_tree_transfer_target_item\">\n\t\t\t\t\t\t\t\t<span>{flatNodeMap.get(key) || key}</span>\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_tree_transfer_del_btn\"\n\t\t\t\t\t\t\t\t\tonClick={() => handleRemove(key)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<CloseOutlined />\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t))\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default TreeTransfer;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../VirtualList/index.tsx"],"names":[],"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,GAAI,SAAiB,CAAC,CAAA;AACpD,EAAA,MAAM,YAAA,GAAe,OAAuB,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,GAAI,QAAQ,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,uBACC,GAAA;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,kBAAA,GAAA;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,uBACC,GAAA;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-I3HBI52O.js","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":["../ColorPicker/Color.ts","../ColorPicker/index.tsx"],"names":["_a","_b"],"mappings":"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","file":"chunk-IECISUOZ.js","sourcesContent":["export interface HsbColor {\n\th: number; // 0 ~ 360\n\ts: number; // 0 ~ 100\n\tb: number; // 0 ~ 100\n\ta: number; // 0 ~ 1\n}\n\nexport interface RgbColor {\n\tr: number; // 0 ~ 255\n\tg: number; // 0 ~ 255\n\tb: number; // 0 ~ 255\n\ta: number; // 0 ~ 1\n}\n\nexport interface ColorGradientStop {\n\tcolor: Color;\n\tpercent: number; // 0 ~ 100\n}\n\nexport type ColorInput =\n\t| string\n\t| Color\n\t| { r: number; g: number; b: number; a?: number }\n\t| { h: number; s: number; b: number; a?: number };\n\nexport const parseGradientStops = (gradientStr: string): ColorGradientStop[] => {\n\tlet clean = gradientStr.trim();\n\tif (clean.toLowerCase().startsWith('linear-gradient')) {\n\t\tconst match = clean.match(/linear-gradient\\([^,]+,\\s*(.+)\\)$/i);\n\t\tif (match) {\n\t\t\tclean = match[1];\n\t\t}\n\t}\n\n\t// 匹配颜色 + 百分比,例如 \"rgb(16,142,233) 0%, rgb(135,208,104) 100%\"\n\t// 或 \"#1677ff 0%, #36cfc9 100%\"\n\tconst parts = clean.split(/,\\s*(?=[a-zA-Z#])/);\n\tconst stops: ColorGradientStop[] = [];\n\n\tparts.forEach((part, index) => {\n\t\tconst percentMatch = part.match(/\\s+(\\d+(?:\\.\\d+)?)%\\s*$/);\n\t\tlet percent = index === 0 ? 0 : 100;\n\t\tlet colorStr = part;\n\n\t\tif (percentMatch) {\n\t\t\tpercent = parseFloat(percentMatch[1]);\n\t\t\tcolorStr = part.replace(/\\s+\\d+(?:\\.\\d+)?%\\s*$/, '').trim();\n\t\t}\n\n\t\tstops.push({\n\t\t\tcolor: generateColor(colorStr),\n\t\t\tpercent,\n\t\t});\n\t});\n\n\tif (stops.length === 0) {\n\t\treturn [\n\t\t\t{ color: generateColor('rgb(16,142,233)'), percent: 0 },\n\t\t\t{ color: generateColor('rgb(135,208,104)'), percent: 100 },\n\t\t];\n\t}\n\n\treturn stops;\n};\n\nexport const formatGradientCss = (stops: ColorGradientStop[]): string => {\n\tconst sorted = [...stops].sort((a, b) => a.percent - b.percent);\n\treturn `linear-gradient(90deg, ${sorted.map((s) => `${s.color.toCssString()} ${s.percent}%`).join(', ')})`;\n};\n\nexport const formatGradientText = (stops: ColorGradientStop[]): string => {\n\tconst sorted = [...stops].sort((a, b) => a.percent - b.percent);\n\treturn sorted.map((s) => `${s.color.toCssString()} ${s.percent}%`).join(', ');\n};\n\nexport class Color {\n\th: number = 0; // 0 ~ 360\n\ts: number = 0; // 0 ~ 100\n\tb: number = 0; // 0 ~ 100\n\ta: number = 1; // 0 ~ 1\n\n\tconstructor(colorInput?: ColorInput) {\n\t\tif (!colorInput) {\n\t\t\tthis.h = 215;\n\t\t\tthis.s = 91;\n\t\t\tthis.b = 100;\n\t\t\tthis.a = 1;\n\t\t\treturn;\n\t\t}\n\n\t\tif (colorInput instanceof Color) {\n\t\t\tthis.h = colorInput.h;\n\t\t\tthis.s = colorInput.s;\n\t\t\tthis.b = colorInput.b;\n\t\t\tthis.a = colorInput.a;\n\t\t\treturn;\n\t\t}\n\n\t\tif (typeof colorInput === 'string') {\n\t\t\tconst parsed = Color.parseString(colorInput);\n\t\t\tthis.h = parsed.h;\n\t\t\tthis.s = parsed.s;\n\t\t\tthis.b = parsed.b;\n\t\t\tthis.a = parsed.a;\n\t\t\treturn;\n\t\t}\n\n\t\tif (typeof colorInput === 'object') {\n\t\t\tif ('r' in colorInput && 'g' in colorInput && 'b' in colorInput) {\n\t\t\t\tconst hsb = Color.rgbToHsb(colorInput.r, colorInput.g, colorInput.b, colorInput.a ?? 1);\n\t\t\t\tthis.h = hsb.h;\n\t\t\t\tthis.s = hsb.s;\n\t\t\t\tthis.b = hsb.b;\n\t\t\t\tthis.a = hsb.a;\n\t\t\t} else if ('h' in colorInput && 's' in colorInput && 'b' in colorInput) {\n\t\t\t\tthis.h = Math.min(360, Math.max(0, colorInput.h));\n\t\t\t\tthis.s = Math.min(100, Math.max(0, colorInput.s));\n\t\t\t\tthis.b = Math.min(100, Math.max(0, colorInput.b));\n\t\t\t\tthis.a = Math.min(1, Math.max(0, colorInput.a ?? 1));\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic rgbToHsb(r: number, g: number, b: number, a: number = 1): HsbColor {\n\t\tconst rNorm = r / 255;\n\t\tconst gNorm = g / 255;\n\t\tconst bNorm = b / 255;\n\n\t\tconst max = Math.max(rNorm, gNorm, bNorm);\n\t\tconst min = Math.min(rNorm, gNorm, bNorm);\n\t\tconst delta = max - min;\n\n\t\tlet h = 0;\n\t\tif (delta !== 0) {\n\t\t\tif (max === rNorm) {\n\t\t\t\th = ((gNorm - bNorm) / delta) % 6;\n\t\t\t} else if (max === gNorm) {\n\t\t\t\th = (bNorm - rNorm) / delta + 2;\n\t\t\t} else {\n\t\t\t\th = (rNorm - gNorm) / delta + 4;\n\t\t\t}\n\t\t\th = Math.round(h * 60);\n\t\t\tif (h < 0) h += 360;\n\t\t}\n\n\t\tconst s = max === 0 ? 0 : Math.round((delta / max) * 100);\n\t\tconst v = Math.round(max * 100);\n\n\t\treturn { h, s, b: v, a };\n\t}\n\n\tstatic hsbToRgb(h: number, s: number, b: number, a: number = 1): RgbColor {\n\t\tconst sNorm = s / 100;\n\t\tconst vNorm = b / 100;\n\n\t\tconst c = vNorm * sNorm;\n\t\tconst x = c * (1 - Math.abs(((h / 60) % 2) - 1));\n\t\tconst m = vNorm - c;\n\n\t\tlet rPrime = 0;\n\t\tlet gPrime = 0;\n\t\tlet bPrime = 0;\n\n\t\tif (h >= 0 && h < 60) {\n\t\t\trPrime = c;\n\t\t\tgPrime = x;\n\t\t\tbPrime = 0;\n\t\t} else if (h >= 60 && h < 120) {\n\t\t\trPrime = x;\n\t\t\tgPrime = c;\n\t\t\tbPrime = 0;\n\t\t} else if (h >= 120 && h < 180) {\n\t\t\trPrime = 0;\n\t\t\tgPrime = c;\n\t\t\tbPrime = x;\n\t\t} else if (h >= 180 && h < 240) {\n\t\t\trPrime = 0;\n\t\t\tgPrime = x;\n\t\t\tbPrime = c;\n\t\t} else if (h >= 240 && h < 300) {\n\t\t\trPrime = x;\n\t\t\tgPrime = 0;\n\t\t\tbPrime = c;\n\t\t} else if (h >= 300 && h <= 360) {\n\t\t\trPrime = c;\n\t\t\tgPrime = 0;\n\t\t\tbPrime = x;\n\t\t}\n\n\t\tconst r = Math.round((rPrime + m) * 255);\n\t\tconst g = Math.round((gPrime + m) * 255);\n\t\tconst bRes = Math.round((bPrime + m) * 255);\n\n\t\treturn { r, g, b: bRes, a };\n\t}\n\n\tstatic parseString(str: string): HsbColor {\n\t\tconst trimmed = str.trim().toLowerCase();\n\n\t\t// 解析 hex,例如 #1677ff, #fff, #1677ff80\n\t\tif (trimmed.startsWith('#')) {\n\t\t\tlet hex = trimmed.slice(1);\n\t\t\tif (hex.length === 3) {\n\t\t\t\thex = hex\n\t\t\t\t\t.split('')\n\t\t\t\t\t.map((c) => c + c)\n\t\t\t\t\t.join('');\n\t\t\t}\n\t\t\tif (hex.length === 6) {\n\t\t\t\tconst r = parseInt(hex.slice(0, 2), 16);\n\t\t\t\tconst g = parseInt(hex.slice(2, 4), 16);\n\t\t\t\tconst b = parseInt(hex.slice(4, 6), 16);\n\t\t\t\treturn Color.rgbToHsb(r, g, b, 1);\n\t\t\t}\n\t\t\tif (hex.length === 8) {\n\t\t\t\tconst r = parseInt(hex.slice(0, 2), 16);\n\t\t\t\tconst g = parseInt(hex.slice(2, 4), 16);\n\t\t\t\tconst b = parseInt(hex.slice(4, 6), 16);\n\t\t\t\tconst a = parseInt(hex.slice(6, 8), 16) / 255;\n\t\t\t\treturn Color.rgbToHsb(r, g, b, a);\n\t\t\t}\n\t\t}\n\n\t\t// 解析 rgb / rgba\n\t\tconst rgbMatch = trimmed.match(\n\t\t\t/^rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)(?:\\s*,\\s*([\\d.]+))?\\s*\\)$/,\n\t\t);\n\t\tif (rgbMatch) {\n\t\t\tconst r = parseInt(rgbMatch[1], 10);\n\t\t\tconst g = parseInt(rgbMatch[2], 10);\n\t\t\tconst b = parseInt(rgbMatch[3], 10);\n\t\t\tconst a = rgbMatch[4] !== undefined ? parseFloat(rgbMatch[4]) : 1;\n\t\t\treturn Color.rgbToHsb(r, g, b, a);\n\t\t}\n\n\t\t// 解析 hsb / hsba / hsl / hsla\n\t\tconst hsbMatch = trimmed.match(\n\t\t\t/^hsba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)%?\\s*,\\s*(\\d+)%?(?:\\s*,\\s*([\\d.]+))?\\s*\\)$/,\n\t\t);\n\t\tif (hsbMatch) {\n\t\t\tconst h = parseInt(hsbMatch[1], 10);\n\t\t\tconst s = parseInt(hsbMatch[2], 10);\n\t\t\tconst b = parseInt(hsbMatch[3], 10);\n\t\t\tconst a = hsbMatch[4] !== undefined ? parseFloat(hsbMatch[4]) : 1;\n\t\t\treturn { h, s, b, a };\n\t\t}\n\n\t\t// 默认 fallback (蓝)\n\t\treturn { h: 215, s: 91, b: 100, a: 1 };\n\t}\n\n\ttoRgb(): RgbColor {\n\t\treturn Color.hsbToRgb(this.h, this.s, this.b, this.a);\n\t}\n\n\ttoRgbString(): string {\n\t\tconst { r, g, b, a } = this.toRgb();\n\t\tif (a < 1) {\n\t\t\treturn `rgba(${r}, ${g}, ${b}, ${Number(a.toFixed(2))})`;\n\t\t}\n\t\treturn `rgb(${r}, ${g}, ${b})`;\n\t}\n\n\ttoHsb(): HsbColor {\n\t\treturn {\n\t\t\th: Math.round(this.h),\n\t\t\ts: Math.round(this.s),\n\t\t\tb: Math.round(this.b),\n\t\t\ta: Number(this.a.toFixed(2)),\n\t\t};\n\t}\n\n\ttoHsbString(): string {\n\t\tconst { h, s, b, a } = this.toHsb();\n\t\tif (a < 1) {\n\t\t\treturn `hsba(${h}, ${s}%, ${b}%, ${a})`;\n\t\t}\n\t\treturn `hsb(${h}, ${s}%, ${b}%)`;\n\t}\n\n\ttoHex(): string {\n\t\tconst { r, g, b } = this.toRgb();\n\t\tconst rHex = r.toString(16).padStart(2, '0');\n\t\tconst gHex = g.toString(16).padStart(2, '0');\n\t\tconst bHex = b.toString(16).padStart(2, '0');\n\t\treturn `${rHex}${gHex}${bHex}`;\n\t}\n\n\ttoHexString(): string {\n\t\treturn `#${this.toHex()}`;\n\t}\n\n\ttoCssString(): string {\n\t\tif (this.a < 1) {\n\t\t\treturn this.toRgbString();\n\t\t}\n\t\treturn this.toHexString();\n\t}\n}\n\nexport const generateColor = (color: ColorInput): Color => {\n\tif (color instanceof Color) {\n\t\treturn color;\n\t}\n\treturn new Color(color);\n};\n","import {\n\tuseState,\n\tuseRef,\n\tuseEffect,\n\tuseCallback,\n\ttype ReactNode,\n\ttype HTMLAttributes,\n\ttype FC,\n\ttype Key,\n\ttype MouseEvent as ReactMouseEvent,\n} from 'react';\nimport {\n\tColor,\n\tgenerateColor,\n\ttype ColorInput,\n\ttype HsbColor,\n\ttype RgbColor,\n\ttype ColorGradientStop,\n\tparseGradientStops,\n\tformatGradientCss,\n\tformatGradientText,\n} from './Color';\nimport { CloseCircleFilled, DownOutlined } from '../src/icons';\nimport './index.less';\n\nexport { Color, generateColor };\nexport type { HsbColor, RgbColor, ColorInput, ColorGradientStop };\n\nexport type ColorFormat = 'hex' | 'rgb' | 'hsb';\nexport type ColorMode = 'single' | 'gradient';\n\nexport interface ColorPresetItem {\n\tlabel: ReactNode;\n\tcolors: (string | Color)[];\n\tdefaultOpen?: boolean;\n\tkey?: Key;\n}\n\nexport interface ColorPickerProps extends Omit<\n\tHTMLAttributes<HTMLDivElement>,\n\t'onChange' | 'value' | 'defaultValue' | 'children'\n> {\n\tallowClear?: boolean;\n\tarrow?: boolean | { pointAtCenter?: boolean };\n\tchildren?: ReactNode | ((color: Color) => ReactNode);\n\tdefaultValue?: ColorInput;\n\tdefaultFormat?: ColorFormat;\n\tdisabled?: boolean;\n\tdisabledAlpha?: boolean;\n\tdisabledFormat?: boolean;\n\tdestroyOnHidden?: boolean;\n\tformat?: ColorFormat;\n\tmode?: ColorMode | ColorMode[];\n\topen?: boolean;\n\tpresets?: ColorPresetItem[];\n\tplacement?: 'top' | 'topLeft' | 'topRight' | 'bottom' | 'bottomLeft' | 'bottomRight';\n\tpanelRender?: (panel: ReactNode, extra: { components: { Picker: FC; Presets: FC } }) => ReactNode;\n\tshowText?: boolean | ((color: Color | ColorGradientStop[]) => ReactNode);\n\tsize?: 'large' | 'middle' | 'small';\n\ttrigger?: 'hover' | 'click';\n\tvalue?: ColorInput;\n\tonChange?: (value: Color, css: string) => void;\n\tonChangeComplete?: (value: Color) => void;\n\tonFormatChange?: (format: ColorFormat) => void;\n\tonOpenChange?: (open: boolean) => void;\n\tonClear?: () => void;\n}\n\nconst ColorPicker = (props: ColorPickerProps) => {\n\tconst {\n\t\tallowClear = false,\n\t\tarrow = true,\n\t\tchildren,\n\t\tdefaultValue = '#1677ff',\n\t\tdefaultFormat = 'hex',\n\t\tdisabled = false,\n\t\tdisabledAlpha = false,\n\t\tdisabledFormat = false,\n\t\tdestroyOnHidden = false,\n\t\tformat,\n\t\tmode = 'single',\n\t\topen,\n\t\tpresets,\n\t\tplacement = 'bottomLeft',\n\t\tpanelRender,\n\t\tshowText,\n\t\tsize = 'middle',\n\t\ttrigger = 'click',\n\t\tvalue,\n\t\tonChange,\n\t\tonChangeComplete,\n\t\tonFormatChange,\n\t\tonOpenChange,\n\t\tonClear,\n\t\tclassName = '',\n\t\tstyle,\n\t\t...restProps\n\t} = props;\n\n\t// Mode 管理 (single / gradient)\n\tconst modeOptions: ColorMode[] = Array.isArray(mode)\n\t\t? mode\n\t\t: mode === 'gradient'\n\t\t\t? ['gradient']\n\t\t\t: ['single'];\n\tconst [activeMode, setActiveMode] = useState<ColorMode>(modeOptions[0] ?? 'single');\n\n\t// 受控 / 非受控 Open\n\tconst [internalOpen, setInternalOpen] = useState<boolean>(false);\n\tconst isOpen = open !== undefined ? open : internalOpen;\n\n\t// 渐变 Stops 状态\n\tconst [gradientStops, setGradientStops] = useState<ColorGradientStop[]>(() => {\n\t\tif (typeof defaultValue === 'string' && defaultValue.includes('%')) {\n\t\t\treturn parseGradientStops(defaultValue);\n\t\t}\n\t\treturn [\n\t\t\t{ color: generateColor('rgb(16, 142, 233)'), percent: 0 },\n\t\t\t{ color: generateColor('rgb(135, 208, 104)'), percent: 100 },\n\t\t];\n\t});\n\tconst [activeStopIndex, setActiveStopIndex] = useState<number>(0);\n\n\t// 受控 / 非受控 Value\n\tconst [internalColor, setInternalColor] = useState<Color>(() => generateColor(defaultValue));\n\tconst currentColor =\n\t\tactiveMode === 'gradient'\n\t\t\t? (gradientStops[activeStopIndex]?.color ?? internalColor)\n\t\t\t: value !== undefined\n\t\t\t\t? generateColor(value)\n\t\t\t\t: internalColor;\n\n\t// 受控 / 非受控 Format\n\tconst [internalFormat, setInternalFormat] = useState<ColorFormat>(defaultFormat);\n\tconst currentFormat = format !== undefined ? format : internalFormat;\n\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\tconst paletteRef = useRef<HTMLDivElement>(null);\n\tconst hueSliderRef = useRef<HTMLDivElement>(null);\n\tconst alphaSliderRef = useRef<HTMLDivElement>(null);\n\tconst gradientRailRef = useRef<HTMLDivElement>(null);\n\n\tconst isDraggingRef = useRef<boolean>(false);\n\n\tconst handleOpenChange = useCallback(\n\t\t(nextOpen: boolean) => {\n\t\t\tif (disabled) return;\n\t\t\tif (open === undefined) {\n\t\t\t\tsetInternalOpen(nextOpen);\n\t\t\t}\n\t\t\tonOpenChange?.(nextOpen);\n\t\t},\n\t\t[disabled, open, onOpenChange],\n\t);\n\n\tconst updateColor = useCallback(\n\t\t(nextColor: Color, isComplete = false) => {\n\t\t\tif (activeMode === 'gradient') {\n\t\t\t\tconst nextStops = [...gradientStops];\n\t\t\t\tnextStops[activeStopIndex] = {\n\t\t\t\t\t...nextStops[activeStopIndex],\n\t\t\t\t\tcolor: nextColor,\n\t\t\t\t};\n\t\t\t\tsetGradientStops(nextStops);\n\t\t\t\tconst cssStr = formatGradientCss(nextStops);\n\t\t\t\tonChange?.(nextColor, cssStr);\n\t\t\t\tif (isComplete) {\n\t\t\t\t\tonChangeComplete?.(nextColor);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (value === undefined) {\n\t\t\t\tsetInternalColor(nextColor);\n\t\t\t}\n\t\t\tonChange?.(nextColor, nextColor.toCssString());\n\t\t\tif (isComplete) {\n\t\t\t\tonChangeComplete?.(nextColor);\n\t\t\t}\n\t\t},\n\t\t[activeMode, gradientStops, activeStopIndex, value, onChange, onChangeComplete],\n\t);\n\n\tconst currentColorRef = useRef<Color>(currentColor);\n\tcurrentColorRef.current = currentColor;\n\n\tconst updateColorRef = useRef(updateColor);\n\tupdateColorRef.current = updateColor;\n\n\t// 点击外部关闭\n\tuseEffect(() => {\n\t\tif (!isOpen) return;\n\n\t\tconst handleClickOutside = (e: MouseEvent) => {\n\t\t\tif (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n\t\t\t\thandleOpenChange(false);\n\t\t\t}\n\t\t};\n\n\t\tdocument.addEventListener('mousedown', handleClickOutside);\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('mousedown', handleClickOutside);\n\t\t};\n\t}, [isOpen, handleOpenChange]);\n\n\t// SV 画板拖拽逻辑\n\tconst handlePaletteDrag = useCallback(\n\t\t(e: MouseEvent | ReactMouseEvent) => {\n\t\t\tif (!paletteRef.current) return;\n\t\t\tconst rect = paletteRef.current.getBoundingClientRect();\n\t\t\tconst x = Math.max(0, Math.min(rect.width, e.clientX - rect.left));\n\t\t\tconst y = Math.max(0, Math.min(rect.height, e.clientY - rect.top));\n\n\t\t\tconst s = Math.round((x / rect.width) * 100);\n\t\t\tconst b = Math.round((1 - y / rect.height) * 100);\n\n\t\t\tconst curr = currentColorRef.current;\n\t\t\tconst targetAlpha = curr.a === 0 ? 1 : curr.a;\n\n\t\t\tconst newColor = new Color({\n\t\t\t\th: curr.h,\n\t\t\t\ts,\n\t\t\t\tb,\n\t\t\t\ta: targetAlpha,\n\t\t\t});\n\t\t\tupdateColorRef.current(newColor);\n\t\t},\n\t\t[],\n\t);\n\n\tconst handlePaletteMouseDown = (e: ReactMouseEvent) => {\n\t\te.preventDefault();\n\t\tisDraggingRef.current = true;\n\t\thandlePaletteDrag(e);\n\n\t\tconst handleMouseMove = (moveEvent: MouseEvent) => {\n\t\t\tif (isDraggingRef.current) {\n\t\t\t\thandlePaletteDrag(moveEvent);\n\t\t\t}\n\t\t};\n\n\t\tconst handleMouseUp = () => {\n\t\t\tif (isDraggingRef.current) {\n\t\t\t\tisDraggingRef.current = false;\n\t\t\t\tonChangeComplete?.(currentColorRef.current);\n\t\t\t}\n\t\t\twindow.removeEventListener('mousemove', handleMouseMove);\n\t\t\twindow.removeEventListener('mouseup', handleMouseUp);\n\t\t};\n\n\t\twindow.addEventListener('mousemove', handleMouseMove);\n\t\twindow.addEventListener('mouseup', handleMouseUp);\n\t};\n\n\t// Hue 拖拽逻辑\n\tconst handleHueDrag = useCallback(\n\t\t(e: MouseEvent | ReactMouseEvent) => {\n\t\t\tif (!hueSliderRef.current) return;\n\t\t\tconst rect = hueSliderRef.current.getBoundingClientRect();\n\t\t\tconst x = Math.max(0, Math.min(rect.width, e.clientX - rect.left));\n\t\t\tconst h = Math.round((x / rect.width) * 360);\n\n\t\t\tconst curr = currentColorRef.current;\n\t\t\tconst targetAlpha = curr.a === 0 ? 1 : curr.a;\n\n\t\t\tconst newColor = new Color({\n\t\t\t\th: h === 360 ? 0 : h,\n\t\t\t\ts: curr.s,\n\t\t\t\tb: curr.b,\n\t\t\t\ta: targetAlpha,\n\t\t\t});\n\t\t\tupdateColorRef.current(newColor);\n\t\t},\n\t\t[],\n\t);\n\n\tconst handleHueMouseDown = (e: ReactMouseEvent) => {\n\t\te.preventDefault();\n\t\thandleHueDrag(e);\n\n\t\tconst handleMouseMove = (moveEvent: MouseEvent) => {\n\t\t\thandleHueDrag(moveEvent);\n\t\t};\n\n\t\tconst handleMouseUp = () => {\n\t\t\tonChangeComplete?.(currentColorRef.current);\n\t\t\twindow.removeEventListener('mousemove', handleMouseMove);\n\t\t\twindow.removeEventListener('mouseup', handleMouseUp);\n\t\t};\n\n\t\twindow.addEventListener('mousemove', handleMouseMove);\n\t\twindow.addEventListener('mouseup', handleMouseUp);\n\t};\n\n\t// Alpha 拖拽逻辑\n\tconst handleAlphaDrag = useCallback(\n\t\t(e: MouseEvent | ReactMouseEvent) => {\n\t\t\tif (!alphaSliderRef.current) return;\n\t\t\tconst rect = alphaSliderRef.current.getBoundingClientRect();\n\t\t\tconst x = Math.max(0, Math.min(rect.width, e.clientX - rect.left));\n\t\t\tconst a = Number((x / rect.width).toFixed(2));\n\n\t\t\tconst curr = currentColorRef.current;\n\n\t\t\tconst newColor = new Color({\n\t\t\t\th: curr.h,\n\t\t\t\ts: curr.s,\n\t\t\t\tb: curr.b,\n\t\t\t\ta,\n\t\t\t});\n\t\t\tupdateColorRef.current(newColor);\n\t\t},\n\t\t[],\n\t);\n\n\tconst handleAlphaMouseDown = (e: ReactMouseEvent) => {\n\t\te.preventDefault();\n\t\thandleAlphaDrag(e);\n\n\t\tconst handleMouseMove = (moveEvent: MouseEvent) => {\n\t\t\thandleAlphaDrag(moveEvent);\n\t\t};\n\n\t\tconst handleMouseUp = () => {\n\t\t\tonChangeComplete?.(currentColorRef.current);\n\t\t\twindow.removeEventListener('mousemove', handleMouseMove);\n\t\t\twindow.removeEventListener('mouseup', handleMouseUp);\n\t\t};\n\n\t\twindow.addEventListener('mousemove', handleMouseMove);\n\t\twindow.addEventListener('mouseup', handleMouseUp);\n\t};\n\n\t// 渐变 Stop 拖拽逻辑\n\tconst handleGradientStopDrag = useCallback(\n\t\t(index: number, e: MouseEvent | ReactMouseEvent) => {\n\t\t\tif (!gradientRailRef.current) return;\n\t\t\tconst rect = gradientRailRef.current.getBoundingClientRect();\n\t\t\tconst x = Math.max(0, Math.min(rect.width, e.clientX - rect.left));\n\t\t\tconst percent = Math.round((x / rect.width) * 100);\n\n\t\t\tconst nextStops = [...gradientStops];\n\t\t\tnextStops[index] = {\n\t\t\t\t...nextStops[index],\n\t\t\t\tpercent,\n\t\t\t};\n\t\t\tsetGradientStops(nextStops);\n\t\t\tonChange?.(nextStops[index].color, formatGradientCss(nextStops));\n\t\t},\n\t\t[gradientStops, onChange],\n\t);\n\n\tconst handleGradientStopMouseDown = (index: number, e: ReactMouseEvent) => {\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\t\tsetActiveStopIndex(index);\n\n\t\tconst handleMouseMove = (moveEvent: MouseEvent) => {\n\t\t\thandleGradientStopDrag(index, moveEvent);\n\t\t};\n\n\t\tconst handleMouseUp = () => {\n\t\t\twindow.removeEventListener('mousemove', handleMouseMove);\n\t\t\twindow.removeEventListener('mouseup', handleMouseUp);\n\t\t};\n\n\t\twindow.addEventListener('mousemove', handleMouseMove);\n\t\twindow.addEventListener('mouseup', handleMouseUp);\n\t};\n\n\t// 渐变轨空白处点击新增 Stop\n\tconst handleGradientRailClick = (e: ReactMouseEvent) => {\n\t\tif (!gradientRailRef.current) return;\n\t\tconst rect = gradientRailRef.current.getBoundingClientRect();\n\t\tconst x = Math.max(0, Math.min(rect.width, e.clientX - rect.left));\n\t\tconst percent = Math.round((x / rect.width) * 100);\n\n\t\tconst newStopColor = generateColor('#1677ff');\n\t\tconst nextStops = [...gradientStops, { color: newStopColor, percent }];\n\t\tsetGradientStops(nextStops);\n\t\tsetActiveStopIndex(nextStops.length - 1);\n\t\tonChange?.(newStopColor, formatGradientCss(nextStops));\n\t};\n\n\t// Format 变化\n\tconst handleFormatSelectChange = (newFormat: ColorFormat) => {\n\t\tif (format === undefined) {\n\t\t\tsetInternalFormat(newFormat);\n\t\t}\n\t\tonFormatChange?.(newFormat);\n\t};\n\n\t// 清除颜色\n\tconst handleClearClick = (e: ReactMouseEvent) => {\n\t\te.stopPropagation();\n\t\tconst cleared = new Color({ h: 0, s: 0, b: 100, a: 0 });\n\t\tupdateColor(cleared, true);\n\t\tonClear?.();\n\t};\n\n\t// 纯 Picker 内容\n\tconst renderPickerContent = () => {\n\t\tconst hueColor = new Color({ h: currentColor.h, s: 100, b: 100, a: 1 }).toHexString();\n\n\t\treturn (\n\t\t\t<div className=\"react-public-color-picker-panel-body\">\n\t\t\t\t{/* 顶部 Header:模式切换与右上角清除按钮 */}\n\t\t\t\t{(modeOptions.length > 1 || (allowClear && !disabled)) && (\n\t\t\t\t\t<div className=\"react-public-color-picker-panel-header\">\n\t\t\t\t\t\t{modeOptions.length > 1 ? (\n\t\t\t\t\t\t\t<div className=\"react-public-color-picker-mode-segmented\">\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName={`react-public-color-picker-mode-option ${\n\t\t\t\t\t\t\t\t\t\tactiveMode === 'single' ? 'active' : ''\n\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\tonClick={() => setActiveMode('single')}\n\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</div>\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName={`react-public-color-picker-mode-option ${\n\t\t\t\t\t\t\t\t\t\tactiveMode === 'gradient' ? 'active' : ''\n\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\tonClick={() => setActiveMode('gradient')}\n\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</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<div />\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t{allowClear && !disabled && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-panel-clear-btn\"\n\t\t\t\t\t\t\t\tonClick={handleClearClick}\n\t\t\t\t\t\t\t\ttitle=\"清除颜色\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" fill=\"none\">\n\t\t\t\t\t\t\t\t\t<line x1=\"4\" y1=\"4\" x2=\"20\" y2=\"20\" stroke=\"#ff4d4f\" strokeWidth=\"2.5\" strokeLinecap=\"round\" />\n\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{/* 渐变 Slider Rail */}\n\t\t\t\t{activeMode === 'gradient' && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tref={gradientRailRef}\n\t\t\t\t\t\tclassName=\"react-public-color-picker-gradient-slider\"\n\t\t\t\t\t\tonClick={handleGradientRailClick}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"react-public-color-picker-gradient-bg\"\n\t\t\t\t\t\t\tstyle={{ background: formatGradientCss(gradientStops) }}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{gradientStops.map((stop, idx) => (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={idx}\n\t\t\t\t\t\t\t\tclassName={`react-public-color-picker-gradient-stop-handle ${\n\t\t\t\t\t\t\t\t\tactiveStopIndex === idx ? 'active' : ''\n\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tleft: `${stop.percent}%`,\n\t\t\t\t\t\t\t\t\tbackgroundColor: stop.color.toCssString(),\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tonMouseDown={(e) => handleGradientStopMouseDown(idx, e)}\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)}\n\n\t\t\t\t{/* SV 调色画布 */}\n\t\t\t\t<div\n\t\t\t\t\tref={paletteRef}\n\t\t\t\t\tclassName=\"react-public-color-picker-palette\"\n\t\t\t\t\tstyle={{ backgroundColor: hueColor }}\n\t\t\t\t\tonMouseDown={handlePaletteMouseDown}\n\t\t\t\t>\n\t\t\t\t\t<div className=\"react-public-color-picker-saturation-bg\" />\n\t\t\t\t\t<div className=\"react-public-color-picker-brightness-bg\" />\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"react-public-color-picker-handler\"\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tleft: `${currentColor.s}%`,\n\t\t\t\t\t\t\ttop: `${100 - currentColor.b}%`,\n\t\t\t\t\t\t\tbackgroundColor: currentColor.toCssString(),\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t{/* Hue & Alpha 滑块与右侧色块 */}\n\t\t\t\t<div className=\"react-public-color-picker-slider-container\">\n\t\t\t\t\t<div className=\"react-public-color-picker-slider-group\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tref={hueSliderRef}\n\t\t\t\t\t\t\tclassName=\"react-public-color-picker-slider react-public-color-picker-hue-slider\"\n\t\t\t\t\t\t\tonMouseDown={handleHueMouseDown}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-slider-handler\"\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tleft: `${(currentColor.h / 360) * 100}%`,\n\t\t\t\t\t\t\t\t\tbackgroundColor: hueColor,\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\n\t\t\t\t\t\t{!disabledAlpha && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tref={alphaSliderRef}\n\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-slider react-public-color-picker-alpha-slider\"\n\t\t\t\t\t\t\t\tonMouseDown={handleAlphaMouseDown}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-alpha-bg\"\n\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\tbackground: `linear-gradient(to right, transparent, ${new Color({\n\t\t\t\t\t\t\t\t\t\t\th: currentColor.h,\n\t\t\t\t\t\t\t\t\t\t\ts: currentColor.s,\n\t\t\t\t\t\t\t\t\t\t\tb: currentColor.b,\n\t\t\t\t\t\t\t\t\t\t\ta: 1,\n\t\t\t\t\t\t\t\t\t\t}).toHexString()})`,\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<div\n\t\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-slider-handler\"\n\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\tleft: `${currentColor.a * 100}%`,\n\t\t\t\t\t\t\t\t\t\tbackgroundColor: currentColor.toCssString(),\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</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{/* 右侧边栏预览色块 */}\n\t\t\t\t\t<div className=\"react-public-color-picker-side-block\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"react-public-color-picker-color-inner\"\n\t\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t\tactiveMode === 'gradient'\n\t\t\t\t\t\t\t\t\t? { background: formatGradientCss(gradientStops) }\n\t\t\t\t\t\t\t\t\t: { backgroundColor: currentColor.toCssString() }\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\n\t\t\t\t{/* Format 格式输入行 */}\n\t\t\t\t{!disabledFormat && (\n\t\t\t\t\t<div className=\"react-public-color-picker-inputs\">\n\t\t\t\t\t\t<select\n\t\t\t\t\t\t\tclassName=\"react-public-color-picker-format-select\"\n\t\t\t\t\t\t\tvalue={currentFormat}\n\t\t\t\t\t\t\tonChange={(e) => handleFormatSelectChange(e.target.value as ColorFormat)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<option value=\"hex\">HEX</option>\n\t\t\t\t\t\t\t<option value=\"rgb\">RGB</option>\n\t\t\t\t\t\t\t<option value=\"hsb\">HSB</option>\n\t\t\t\t\t\t</select>\n\n\t\t\t\t\t\t{currentFormat === 'hex' && (\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-input-field\"\n\t\t\t\t\t\t\t\tvalue={currentColor.toHex()}\n\t\t\t\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\t\t\t\tconst val = e.target.value;\n\t\t\t\t\t\t\t\t\tconst newC = new Color(`#${val}`);\n\t\t\t\t\t\t\t\t\tnewC.a = currentColor.a;\n\t\t\t\t\t\t\t\t\tupdateColor(newC, true);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t{currentFormat === 'rgb' && (\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-input-field\"\n\t\t\t\t\t\t\t\tvalue={`${currentColor.toRgb().r}, ${currentColor.toRgb().g}, ${currentColor.toRgb().b}`}\n\t\t\t\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\t\t\t\tconst parts = e.target.value.split(',').map((v) => parseInt(v.trim(), 10));\n\t\t\t\t\t\t\t\t\tif (parts.length >= 3 && !parts.some((n) => isNaN(n))) {\n\t\t\t\t\t\t\t\t\t\tconst newC = new Color({\n\t\t\t\t\t\t\t\t\t\t\tr: parts[0],\n\t\t\t\t\t\t\t\t\t\t\tg: parts[1],\n\t\t\t\t\t\t\t\t\t\t\tb: parts[2],\n\t\t\t\t\t\t\t\t\t\t\ta: currentColor.a,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tupdateColor(newC, true);\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/>\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t{currentFormat === 'hsb' && (\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-input-field\"\n\t\t\t\t\t\t\t\tvalue={`${currentColor.h}°, ${currentColor.s}%, ${currentColor.b}%`}\n\t\t\t\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\t\t\t\tconst parts = e.target.value\n\t\t\t\t\t\t\t\t\t\t.replace(/[%°]/g, '')\n\t\t\t\t\t\t\t\t\t\t.split(',')\n\t\t\t\t\t\t\t\t\t\t.map((v) => parseInt(v.trim(), 10));\n\t\t\t\t\t\t\t\t\tif (parts.length >= 3 && !parts.some((n) => isNaN(n))) {\n\t\t\t\t\t\t\t\t\t\tconst newC = new Color({\n\t\t\t\t\t\t\t\t\t\t\th: parts[0],\n\t\t\t\t\t\t\t\t\t\t\ts: parts[1],\n\t\t\t\t\t\t\t\t\t\t\tb: parts[2],\n\t\t\t\t\t\t\t\t\t\t\ta: currentColor.a,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tupdateColor(newC, true);\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/>\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t{!disabledAlpha && (\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-alpha-input\"\n\t\t\t\t\t\t\t\tvalue={`${Math.round(currentColor.a * 100)}%`}\n\t\t\t\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\t\t\t\tconst val = parseInt(e.target.value.replace('%', ''), 10);\n\t\t\t\t\t\t\t\t\tif (!isNaN(val)) {\n\t\t\t\t\t\t\t\t\t\tconst newA = Math.max(0, Math.min(1, val / 100));\n\t\t\t\t\t\t\t\t\t\tconst newC = new Color({\n\t\t\t\t\t\t\t\t\t\t\th: currentColor.h,\n\t\t\t\t\t\t\t\t\t\t\ts: currentColor.s,\n\t\t\t\t\t\t\t\t\t\t\tb: currentColor.b,\n\t\t\t\t\t\t\t\t\t\t\ta: newA,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tupdateColor(newC, true);\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/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t};\n\n\t// Presets 折叠状态\n\tconst [collapsedPresets, setCollapsedPresets] = useState<Record<number, boolean>>({});\n\n\tconst togglePresetCollapse = (idx: number) => {\n\t\tsetCollapsedPresets((prev) => ({\n\t\t\t...prev,\n\t\t\t[idx]: !prev[idx],\n\t\t}));\n\t};\n\n\t// 纯 Presets 内容\n\tconst renderPresetsContent = (isStandalone = false) => {\n\t\tif (!presets || presets.length === 0) return null;\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={`react-public-color-picker-presets ${\n\t\t\t\t\tisStandalone ? 'react-public-color-picker-presets-standalone' : ''\n\t\t\t\t}`}\n\t\t\t>\n\t\t\t\t{presets.map((preset, idx) => {\n\t\t\t\t\tconst isCollapsed = collapsedPresets[idx] ?? preset.defaultOpen === false;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div key={preset.key ?? idx} style={{ marginBottom: 8 }}>\n\t\t\t\t\t\t\t{preset.label && (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-preset-title\"\n\t\t\t\t\t\t\t\t\tonClick={() => togglePresetCollapse(idx)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<DownOutlined\n\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\tfontSize: 10,\n\t\t\t\t\t\t\t\t\t\t\tcolor: '#8c8c8c',\n\t\t\t\t\t\t\t\t\t\t\ttransition: 'transform 0.2s ease',\n\t\t\t\t\t\t\t\t\t\t\ttransform: isCollapsed ? 'rotate(-90deg)' : 'rotate(0deg)',\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{preset.label}\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{!isCollapsed && (\n\t\t\t\t\t\t\t\t<div className=\"react-public-color-picker-preset-colors\">\n\t\t\t\t\t\t\t\t\t{preset.colors.map((c, colorIdx) => {\n\t\t\t\t\t\t\t\t\t\tconst presetColor = generateColor(c);\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\tkey={colorIdx}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-preset-item\"\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => updateColor(presetColor, true)}\n\t\t\t\t\t\t\t\t\t\t\t\ttitle={presetColor.toCssString()}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"react-public-color-picker-preset-item-inner\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{ backgroundColor: presetColor.toCssString() }}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t</div>\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</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})}\n\t\t\t</div>\n\t\t);\n\t};\n\n\t// 完整的 Popover Panel\n\tconst defaultPanel = (\n\t\t<div>\n\t\t\t{renderPickerContent()}\n\t\t\t{renderPresetsContent(true)}\n\t\t</div>\n\t);\n\n\tconst finalPanel = panelRender\n\t\t? panelRender(defaultPanel, {\n\t\t\t\tcomponents: {\n\t\t\t\t\tPicker: renderPickerContent,\n\t\t\t\t\tPresets: () => renderPresetsContent(false),\n\t\t\t\t},\n\t\t\t})\n\t\t: defaultPanel;\n\n\t// 触发器背景与文本计算\n\tconst triggerBgStyle =\n\t\tactiveMode === 'gradient'\n\t\t\t? { background: formatGradientCss(gradientStops) }\n\t\t\t: { backgroundColor: currentColor.toCssString() };\n\n\tconst renderText = () => {\n\t\tif (!showText) return null;\n\t\tif (typeof showText === 'function') {\n\t\t\treturn showText(activeMode === 'gradient' ? gradientStops : currentColor);\n\t\t}\n\t\tconst textContent =\n\t\t\tactiveMode === 'gradient' ? formatGradientText(gradientStops) : currentColor.toCssString();\n\t\treturn <span style={{ fontSize: 13, color: '#595959' }}>{textContent}</span>;\n\t};\n\n\tconst renderCustomTrigger = () => {\n\t\tif (!children) return null;\n\t\tif (typeof children === 'function') {\n\t\t\treturn children(currentColor);\n\t\t}\n\t\treturn children;\n\t};\n\n\t// 事件监听 (hover / click)\n\tconst triggerProps = {\n\t\tonClick: () => {\n\t\t\tif (trigger === 'click') {\n\t\t\t\thandleOpenChange(!isOpen);\n\t\t\t}\n\t\t},\n\t\tonMouseEnter: () => {\n\t\t\tif (trigger === 'hover') {\n\t\t\t\thandleOpenChange(true);\n\t\t\t}\n\t\t},\n\t\tonMouseLeave: () => {\n\t\t\tif (trigger === 'hover') {\n\t\t\t\thandleOpenChange(false);\n\t\t\t}\n\t\t},\n\t};\n\n\tconst showArrow = typeof arrow === 'boolean' ? arrow : (arrow?.pointAtCenter ?? true);\n\n\tif (destroyOnHidden && !isOpen) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={containerRef}\n\t\t\t\tclassName={`react-public-color-picker-trigger react-public-color-picker-size-${size} ${\n\t\t\t\t\tdisabled ? 'react-public-color-picker-disabled' : ''\n\t\t\t\t} ${className}`.trim()}\n\t\t\t\tstyle={style}\n\t\t\t\t{...triggerProps}\n\t\t\t\t{...restProps}\n\t\t\t>\n\t\t\t\t{children ? (\n\t\t\t\t\trenderCustomTrigger()\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<div className=\"react-public-color-picker-color-block\">\n\t\t\t\t\t\t\t<div className=\"react-public-color-picker-color-inner\" style={triggerBgStyle} />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{renderText()}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tstyle={{ position: 'relative', display: 'inline-block' }}\n\t\t\t{...triggerProps}\n\t\t>\n\t\t\t{/* 触发器 */}\n\t\t\t<div\n\t\t\t\tclassName={`react-public-color-picker-trigger react-public-color-picker-size-${size} ${\n\t\t\t\t\tdisabled ? 'react-public-color-picker-disabled' : ''\n\t\t\t\t} ${className}`.trim()}\n\t\t\t\tstyle={style}\n\t\t\t\t{...restProps}\n\t\t\t>\n\t\t\t\t{children ? (\n\t\t\t\t\trenderCustomTrigger()\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<div className=\"react-public-color-picker-color-block\">\n\t\t\t\t\t\t\t<div className=\"react-public-color-picker-color-inner\" style={triggerBgStyle} />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{renderText()}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t\t{allowClear && !disabled && (\n\t\t\t\t\t<CloseCircleFilled\n\t\t\t\t\t\tclassName=\"react-public-color-picker-clear-icon\"\n\t\t\t\t\t\tonClick={handleClearClick}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{/* 弹出面板 */}\n\t\t\t{isOpen && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={`react-public-color-picker-popover react-public-color-picker-popover-${placement}`}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\ttop: placement.startsWith('bottom') ? 'calc(100% + 8px)' : undefined,\n\t\t\t\t\t\tbottom: placement.startsWith('top') ? 'calc(100% + 8px)' : undefined,\n\t\t\t\t\t\tleft: placement.endsWith('Left') || placement === 'bottom' ? 0 : undefined,\n\t\t\t\t\t\tright: placement.endsWith('Right') ? 0 : undefined,\n\t\t\t\t\t}}\n\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t>\n\t\t\t\t\t{showArrow && <div className=\"react-public-color-picker-arrow\" />}\n\t\t\t\t\t{finalPanel}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default ColorPicker;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../ImageCropper/index.tsx"],"names":["cropBox"],"mappings":"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","file":"chunk-IUR7SPDA.js","sourcesContent":["import React, {\n\tuseState,\n\tuseRef,\n\tuseEffect,\n\tuseCallback,\n\tuseImperativeHandle,\n\tforwardRef,\n\tReactNode,\n\tCSSProperties,\n} from 'react';\nimport ReactDOM from 'react-dom';\nimport {\n\tRotateRightOutlined,\n\tZoomInOutlined,\n\tZoomOutOutlined,\n\tCloseOutlined,\n\tCheckOutlined,\n} from '../src/icons';\nimport './index.less';\n\nexport type CropShape = 'rect' | 'round';\n\nexport interface CropResult {\n\tdataURL: string;\n\tblob: Blob | null;\n\twidth: number;\n\theight: number;\n}\n\nexport interface ImageCropperRef {\n\t/** 获取当前裁剪结果(DataURL 与 Blob) */\n\tgetCroppedResult: (type?: string, quality?: number) => Promise<CropResult>;\n\t/** 顺时针旋转 90 度 */\n\trotate: (degree?: number) => void;\n\t/** 缩放图片 */\n\tzoom: (delta: number) => void;\n\t/** 重置所有变换参数 */\n\treset: () => void;\n}\n\nexport interface ImageCropperProps {\n\t/** 图片源地址或 Base64 字符串 */\n\tsrc: string;\n\t/** 裁剪框宽高比(如 1 代表 1:1 正方形,16/9 代表宽屏,0 代表自由矩形),默认为 1 */\n\taspectRatio?: number;\n\t/** 裁剪框形状:'rect' 矩形,'round' 圆形(适合头像),默认为 'rect' */\n\tshape?: CropShape;\n\t/** 是否以 Modal 模态弹窗形式展示,默认为 false */\n\tmodal?: boolean;\n\t/** Modal 模式下的标题,默认为 '图片裁剪' */\n\ttitle?: ReactNode;\n\t/** Modal 模式下的显隐受控状态 */\n\topen?: boolean;\n\t/** 确认裁剪回调 */\n\tonOk?: (result: CropResult) => void;\n\t/** 取消/关闭回调 */\n\tonCancel?: () => void;\n\t/** 容器高度(内联模式有效),默认为 360 */\n\theight?: number;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst ImageCropper = forwardRef<ImageCropperRef, ImageCropperProps>(\n\t(\n\t\t{\n\t\t\tsrc,\n\t\t\taspectRatio = 1,\n\t\t\tshape = 'rect',\n\t\t\tmodal = false,\n\t\t\ttitle = '图片裁剪',\n\t\t\topen = true,\n\t\t\tonOk,\n\t\t\tonCancel,\n\t\t\theight = 360,\n\t\t\tclassName = '',\n\t\t\tstyle,\n\t\t},\n\t\tref,\n\t) => {\n\t\tconst canvasRef = useRef<HTMLCanvasElement>(null);\n\t\tconst containerRef = useRef<HTMLDivElement>(null);\n\t\tconst imgRef = useRef<HTMLImageElement | null>(null);\n\n\t\t// 图片变换参数\n\t\tconst [scale, setScale] = useState<number>(1);\n\t\tconst [rotateDeg, setRotateDeg] = useState<number>(0);\n\t\tconst [offset, setOffset] = useState<{ x: number; y: number }>({ x: 0, y: 0 });\n\t\tconst isDraggingRef = useRef<boolean>(false);\n\t\tconst dragStartRef = useRef<{ x: number; y: number }>({ x: 0, y: 0 });\n\n\t\t// 加载图片\n\t\tuseEffect(() => {\n\t\t\tif (!src) return;\n\t\t\tconst img = new Image();\n\t\t\timg.crossOrigin = 'anonymous';\n\t\t\timg.src = src;\n\t\t\timg.onload = () => {\n\t\t\t\timgRef.current = img;\n\t\t\t\t// 初始计算合适缩放比例\n\t\t\t\tsetScale(1);\n\t\t\t\tsetRotateDeg(0);\n\t\t\t\tsetOffset({ x: 0, y: 0 });\n\t\t\t\trenderCanvas(1, 0, { x: 0, y: 0 });\n\t\t\t};\n\t\t}, [src]);\n\n\t\t// 重新渲染 Canvas\n\t\tconst renderCanvas = useCallback(\n\t\t\t(curScale: number, curDeg: number, curOffset: { x: number; y: number }) => {\n\t\t\t\tconst canvas = canvasRef.current;\n\t\t\t\tconst img = imgRef.current;\n\t\t\t\tif (!canvas || !img) return;\n\n\t\t\t\tconst ctx = canvas.getContext('2d');\n\t\t\t\tif (!ctx) return;\n\n\t\t\t\tconst dpr = window.devicePixelRatio || 1;\n\t\t\t\tconst width = canvas.clientWidth || 400;\n\t\t\t\tconst canvasHeight = canvas.clientHeight || height;\n\n\t\t\t\tcanvas.width = width * dpr;\n\t\t\t\tcanvas.height = canvasHeight * dpr;\n\t\t\t\tctx.scale(dpr, dpr);\n\n\t\t\t\tctx.clearRect(0, 0, width, canvasHeight);\n\t\t\t\tctx.save();\n\n\t\t\t\t// 移动到中心点进行旋转、缩放与平移\n\t\t\t\tconst centerX = width / 2 + curOffset.x;\n\t\t\t\tconst centerY = canvasHeight / 2 + curOffset.y;\n\n\t\t\t\tctx.translate(centerX, centerY);\n\t\t\t\tctx.rotate((curDeg * Math.PI) / 180);\n\t\t\t\tctx.scale(curScale, curScale);\n\n\t\t\t\t// 居中绘制原始图像\n\t\t\t\tconst imgWidth = img.naturalWidth || img.width;\n\t\t\t\tconst imgHeight = img.naturalHeight || img.height;\n\n\t\t\t\t// 保持图像按比例自适应居中\n\t\t\t\tconst baseRatio = Math.min((width * 0.8) / imgWidth, (canvasHeight * 0.8) / imgHeight, 1);\n\t\t\t\tconst renderW = imgWidth * baseRatio;\n\t\t\t\tconst renderH = imgHeight * baseRatio;\n\n\t\t\t\tctx.drawImage(img, -renderW / 2, -renderH / 2, renderW, renderH);\n\t\t\t\tctx.restore();\n\t\t\t},\n\t\t\t[height],\n\t\t);\n\n\t\tuseEffect(() => {\n\t\t\trenderCanvas(scale, rotateDeg, offset);\n\t\t}, [scale, rotateDeg, offset, renderCanvas]);\n\n\t\t// 鼠标拖拽平移\n\t\tconst handleMouseDown = (e: React.MouseEvent) => {\n\t\t\tisDraggingRef.current = true;\n\t\t\tdragStartRef.current = { x: e.clientX - offset.x, y: e.clientY - offset.y };\n\t\t};\n\n\t\tconst handleMouseMove = (e: React.MouseEvent) => {\n\t\t\tif (!isDraggingRef.current) return;\n\t\t\tconst nextOffset = {\n\t\t\t\tx: e.clientX - dragStartRef.current.x,\n\t\t\t\ty: e.clientY - dragStartRef.current.y,\n\t\t\t};\n\t\t\tsetOffset(nextOffset);\n\t\t};\n\n\t\tconst handleMouseUp = () => {\n\t\t\tisDraggingRef.current = false;\n\t\t};\n\n\t\t// 滚轮缩放\n\t\tconst handleWheel = (e: React.WheelEvent) => {\n\t\t\te.preventDefault();\n\t\t\tconst zoomStep = e.deltaY < 0 ? 0.1 : -0.1;\n\t\t\tsetScale((prev) => Math.min(Math.max(0.2, prev + zoomStep), 5));\n\t\t};\n\n\t\t// 顺时针旋转\n\t\tconst handleRotate = (deg = 90) => {\n\t\t\tsetRotateDeg((prev) => (prev + deg) % 360);\n\t\t};\n\n\t\tconst handleZoom = (delta: number) => {\n\t\t\tsetScale((prev) => Math.min(Math.max(0.2, prev + delta), 5));\n\t\t};\n\n\t\tconst handleReset = () => {\n\t\t\tsetScale(1);\n\t\t\tsetRotateDeg(0);\n\t\t\tsetOffset({ x: 0, y: 0 });\n\t\t};\n\n\t\t// 计算裁剪框尺寸与位置\n\t\tconst getCropBoxRect = () => {\n\t\t\tconst container = containerRef.current;\n\t\t\tconst containerW = container?.clientWidth || 400;\n\t\t\tconst containerH = height;\n\n\t\t\tlet boxW = Math.min(containerW * 0.7, 240);\n\t\t\tlet boxH = aspectRatio ? boxW / aspectRatio : boxW;\n\n\t\t\tif (boxH > containerH * 0.8) {\n\t\t\t\tboxH = containerH * 0.8;\n\t\t\t\tboxW = aspectRatio ? boxH * aspectRatio : boxH;\n\t\t\t}\n\n\t\t\tconst boxLeft = (containerW - boxW) / 2;\n\t\t\tconst boxTop = (containerH - boxH) / 2;\n\n\t\t\treturn { left: boxLeft, top: boxTop, width: boxW, height: boxH };\n\t\t};\n\n\t\t// 提取裁剪区域生成图片\n\t\tconst getCroppedResult = useCallback(\n\t\t\tasync (type = 'image/png', quality = 0.92): Promise<CropResult> => {\n\t\t\t\tconst canvas = canvasRef.current;\n\t\t\t\tif (!canvas) throw new Error('Canvas not found');\n\n\t\t\t\tconst cropBox = getCropBoxRect();\n\t\t\t\tconst dpr = window.devicePixelRatio || 1;\n\n\t\t\t\tconst cropCanvas = document.createElement('canvas');\n\t\t\t\tcropCanvas.width = cropBox.width * dpr;\n\t\t\t\tcropCanvas.height = cropBox.height * dpr;\n\t\t\t\tconst cropCtx = cropCanvas.getContext('2d');\n\n\t\t\t\tif (!cropCtx) throw new Error('Failed to create canvas context');\n\n\t\t\t\tif (shape === 'round') {\n\t\t\t\t\tcropCtx.beginPath();\n\t\t\t\t\tcropCtx.arc(\n\t\t\t\t\t\t(cropBox.width * dpr) / 2,\n\t\t\t\t\t\t(cropBox.height * dpr) / 2,\n\t\t\t\t\t\t(cropBox.width * dpr) / 2,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\tMath.PI * 2,\n\t\t\t\t\t);\n\t\t\t\t\tcropCtx.closePath();\n\t\t\t\t\tcropCtx.clip();\n\t\t\t\t}\n\n\t\t\t\tcropCtx.drawImage(\n\t\t\t\t\tcanvas,\n\t\t\t\t\tcropBox.left * dpr,\n\t\t\t\t\tcropBox.top * dpr,\n\t\t\t\t\tcropBox.width * dpr,\n\t\t\t\t\tcropBox.height * dpr,\n\t\t\t\t\t0,\n\t\t\t\t\t0,\n\t\t\t\t\tcropBox.width * dpr,\n\t\t\t\t\tcropBox.height * dpr,\n\t\t\t\t);\n\n\t\t\t\tconst dataURL = cropCanvas.toDataURL(type, quality);\n\t\t\t\tconst blob: Blob | null = await new Promise((resolve) => {\n\t\t\t\t\tcropCanvas.toBlob((b) => resolve(b), type, quality);\n\t\t\t\t});\n\n\t\t\t\treturn {\n\t\t\t\t\tdataURL,\n\t\t\t\t\tblob,\n\t\t\t\t\twidth: Math.round(cropBox.width),\n\t\t\t\t\theight: Math.round(cropBox.height),\n\t\t\t\t};\n\t\t\t},\n\t\t\t[shape, aspectRatio, height],\n\t\t);\n\n\t\tuseImperativeHandle(\n\t\t\tref,\n\t\t\t() => ({\n\t\t\t\tgetCroppedResult,\n\t\t\t\trotate: handleRotate,\n\t\t\t\tzoom: handleZoom,\n\t\t\t\treset: handleReset,\n\t\t\t}),\n\t\t\t[getCroppedResult],\n\t\t);\n\n\t\tconst handleConfirm = async () => {\n\t\t\tconst res = await getCroppedResult();\n\t\t\tonOk?.(res);\n\t\t};\n\n\t\tconst cropBox = getCropBoxRect();\n\n\t\tconst coreContent = (\n\t\t\t<div\n\t\t\t\tclassName={`rpc_image_cropper ${className}`}\n\t\t\t\tstyle={{ ...style }}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tref={containerRef}\n\t\t\t\t\tclassName=\"rpc_image_cropper_canvas_wrap\"\n\t\t\t\t\tstyle={{ height }}\n\t\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\t\tonMouseMove={handleMouseMove}\n\t\t\t\t\tonMouseUp={handleMouseUp}\n\t\t\t\t\tonMouseLeave={handleMouseUp}\n\t\t\t\t\tonWheel={handleWheel}\n\t\t\t\t>\n\t\t\t\t\t<canvas\n\t\t\t\t\t\tref={canvasRef}\n\t\t\t\t\t\tclassName=\"rpc_image_cropper_canvas\"\n\t\t\t\t\t\tstyle={{ width: '100%', height }}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{/* 裁剪框与遮罩 */}\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={`rpc_image_cropper_crop_box ${\n\t\t\t\t\t\t\tshape === 'round' ? 'rpc_image_cropper_crop_box_round' : ''\n\t\t\t\t\t\t}`}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tleft: `${cropBox.left}px`,\n\t\t\t\t\t\t\ttop: `${cropBox.top}px`,\n\t\t\t\t\t\t\twidth: `${cropBox.width}px`,\n\t\t\t\t\t\t\theight: `${cropBox.height}px`,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{shape === 'rect' && <div className=\"rpc_image_cropper_crop_box_grid\" />}\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_image_cropper_toolbar\">\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclassName=\"rpc_image_cropper_btn\"\n\t\t\t\t\t\tonClick={() => handleZoom(0.1)}\n\t\t\t\t\t\ttitle=\"放大\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<ZoomInOutlined /> 放大\n\t\t\t\t\t</button>\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclassName=\"rpc_image_cropper_btn\"\n\t\t\t\t\t\tonClick={() => handleZoom(-0.1)}\n\t\t\t\t\t\ttitle=\"缩小\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<ZoomOutOutlined /> 缩小\n\t\t\t\t\t</button>\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclassName=\"rpc_image_cropper_btn\"\n\t\t\t\t\t\tonClick={() => handleRotate(90)}\n\t\t\t\t\t\ttitle=\"顺时针旋转90°\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<RotateRightOutlined /> 旋转\n\t\t\t\t\t</button>\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclassName=\"rpc_image_cropper_btn\"\n\t\t\t\t\t\tonClick={handleReset}\n\t\t\t\t\t\ttitle=\"重置\"\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</div>\n\t\t\t</div>\n\t\t);\n\n\t\tif (modal) {\n\t\t\tif (!open) return null;\n\t\t\treturn ReactDOM.createPortal(\n\t\t\t\t<div className=\"rpc_cropper_modal\" onClick={onCancel}>\n\t\t\t\t\t<div className=\"rpc_cropper_modal_card\" onClick={(e) => e.stopPropagation()}>\n\t\t\t\t\t\t<div className=\"rpc_cropper_modal_header\">\n\t\t\t\t\t\t\t<span>{title}</span>\n\t\t\t\t\t\t\t<CloseOutlined className=\"rpc_cropper_modal_close\" onClick={onCancel} />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div style={{ padding: 16, background: '#141414' }}>{coreContent}</div>\n\t\t\t\t\t\t<div className=\"rpc_cropper_modal_footer\">\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tclassName=\"rpc_image_cropper_btn\"\n\t\t\t\t\t\t\t\tstyle={{ background: '#ffffff', color: '#262626', borderColor: '#d9d9d9' }}\n\t\t\t\t\t\t\t\tonClick={onCancel}\n\t\t\t\t\t\t\t>\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\t<button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tclassName=\"rpc_image_cropper_btn rpc_image_cropper_btn_primary\"\n\t\t\t\t\t\t\t\tonClick={handleConfirm}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<CheckOutlined /> 确定裁剪\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>,\n\t\t\t\tdocument.body,\n\t\t\t);\n\t\t}\n\n\t\treturn coreContent;\n\t},\n);\n\nImageCropper.displayName = 'ImageCropper';\n\nexport default ImageCropper;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../StatusTimeline/index.tsx"],"names":[],"mappings":";;;AA4BA,IAAM,WAAA,GAA8C;AAAA,EACnD,MAAA,EAAQ,QAAA;AAAA,EACR,OAAA,EAAS,QAAA;AAAA,EACT,KAAA,EAAO,QAAA;AAAA,EACP,IAAA,EAAM;AACP,CAAA;AAEA,IAAM,iBAAgD,CAAC;AAAA,EACtD,QAAQ,EAAC;AAAA,EACT,SAAA,GAAY,EAAA;AAAA,EACZ;AACD,CAAA,KAAM;AACL,EAAA,uBACC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,CAAA,oBAAA,EAAuB,SAAS,CAAA,CAAA,EAAI,KAAA,EAClD,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,GAAA,KAAQ;AACzB,IAAA,MAAM,MAAA,GAAS,KAAK,MAAA,IAAU,QAAA;AAE9B,IAAA,uBACC,IAAA,CAAC,KAAA,EAAA,EAAc,SAAA,EAAU,0BAAA,EAExB,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,0BAAA,EACd,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,SAAI,SAAA,EAAW,CAAA,gDAAA,EAAmD,MAAM,CAAA,CAAA,EACvE,QAAA,EAAA,WAAA,CAAY,MAAM,CAAA,EACpB,CAAA;AAAA,wBACA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0BAAA,EAA2B;AAAA,OAAA,EAC3C,CAAA;AAAA,sBAGA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6BAAA,EACd,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,4BAAA,EACd,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2BAAA,EAA6B,QAAA,EAAA,IAAA,CAAK,KAAA,EAAM,CAAA;AAAA,UACvD,KAAK,IAAA,oBAAQ,GAAA,CAAC,UAAK,SAAA,EAAU,0BAAA,EAA4B,eAAK,IAAA,EAAK;AAAA,SAAA,EACrE,CAAA;AAAA,QAEC,IAAA,CAAK,QAAA,oBACL,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,8BAAA,EACb,QAAA,EAAA;AAAA,UAAA,IAAA,CAAK,SAAS,MAAA,oBAAU,GAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,IAAA,CAAK,SAAS,MAAA,EAAO,CAAA;AAAA,+BACpD,MAAA,EAAA,EAAK,QAAA,EAAA;AAAA,YAAA,0BAAA;AAAA,YAAK,KAAK,QAAA,CAAS;AAAA,WAAA,EAAK;AAAA,SAAA,EAC/B,CAAA;AAAA,QAGA,KAAK,QAAA,oBACL,GAAA,CAAC,SACA,QAAA,kBAAA,IAAA,CAAC,MAAA,EAAA,EAAK,WAAU,8BAAA,EAA+B,QAAA,EAAA;AAAA,UAAA,oBAAA;AAAA,UAAI,IAAA,CAAK;AAAA,SAAA,EAAS,CAAA,EAClE,CAAA;AAAA,QAGA,KAAK,WAAA,oBACL,GAAA,CAAC,SAAI,SAAA,EAAU,0BAAA,EAA4B,eAAK,WAAA,EAAY;AAAA,OAAA,EAE9D;AAAA,KAAA,EAAA,EAhCS,GAiCV,CAAA;AAAA,EAEF,CAAC,CAAA,EACF,CAAA;AAEF,CAAA;AAEA,IAAO,sBAAA,GAAQ","file":"chunk-JD4TEUIV.js","sourcesContent":["import React, { ReactNode, CSSProperties } from 'react';\nimport './index.less';\n\nexport type TimelineStatus = 'finish' | 'process' | 'error' | 'wait';\n\nexport interface TimelineOperator {\n\tname: string;\n\tavatar?: ReactNode;\n}\n\nexport interface StatusTimelineItem {\n\ttitle: ReactNode;\n\tdescription?: ReactNode;\n\ttime?: string;\n\tduration?: string;\n\tstatus?: TimelineStatus;\n\toperator?: TimelineOperator;\n}\n\nexport interface StatusTimelineProps {\n\t/** 时间轴节点列表 */\n\titems: StatusTimelineItem[];\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst statusIcons: Record<TimelineStatus, string> = {\n\tfinish: '✓',\n\tprocess: '●',\n\terror: '✕',\n\twait: '○',\n};\n\nconst StatusTimeline: React.FC<StatusTimelineProps> = ({\n\titems = [],\n\tclassName = '',\n\tstyle,\n}) => {\n\treturn (\n\t\t<div className={`rpc_status_timeline ${className}`} style={style}>\n\t\t\t{items.map((item, idx) => {\n\t\t\t\tconst status = item.status || 'finish';\n\n\t\t\t\treturn (\n\t\t\t\t\t<div key={idx} className=\"rpc_status_timeline_item\">\n\t\t\t\t\t\t{/* 轴线与节点 */}\n\t\t\t\t\t\t<div className=\"rpc_status_timeline_axis\">\n\t\t\t\t\t\t\t<div className={`rpc_status_timeline_dot rpc_status_timeline_dot_${status}`}>\n\t\t\t\t\t\t\t\t{statusIcons[status]}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className=\"rpc_status_timeline_line\" />\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_status_timeline_content\">\n\t\t\t\t\t\t\t<div className=\"rpc_status_timeline_header\">\n\t\t\t\t\t\t\t\t<span className=\"rpc_status_timeline_title\">{item.title}</span>\n\t\t\t\t\t\t\t\t{item.time && <span className=\"rpc_status_timeline_time\">{item.time}</span>}\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t{item.operator && (\n\t\t\t\t\t\t\t\t<div className=\"rpc_status_timeline_operator\">\n\t\t\t\t\t\t\t\t\t{item.operator.avatar && <span>{item.operator.avatar}</span>}\n\t\t\t\t\t\t\t\t\t<span>经办人:{item.operator.name}</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t{item.duration && (\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<span className=\"rpc_status_timeline_duration\">耗时:{item.duration}</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t{item.description && (\n\t\t\t\t\t\t\t\t<div className=\"rpc_status_timeline_desc\">{item.description}</div>\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 StatusTimeline;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../SensitiveMask/index.tsx"],"names":[],"mappings":"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","file":"chunk-KBBLTGIU.js","sourcesContent":["import React, { useState, useMemo, CSSProperties } from 'react';\nimport { EyeOutlined, EyeInvisibleOutlined } from '../src/icons';\nimport CopyButton from '../CopyButton';\nimport './index.less';\n\nexport type SensitiveType = 'phone' | 'idcard' | 'email' | 'bankcard' | 'custom';\n\nexport interface SensitiveMaskProps {\n\t/** 原始敏感文本 */\n\ttext: string;\n\t/** 脱敏类型:'phone' | 'idcard' | 'email' | 'bankcard' | 'custom',默认为 'phone' */\n\ttype?: SensitiveType;\n\t/** 默认是否脱敏遮蔽,默认为 true */\n\tdefaultMasked?: boolean;\n\t/** 遮罩字符,默认为 '*' */\n\tmaskSymbol?: string;\n\t/** 自定义保留头部明文字符数(仅 type='custom' 有效) */\n\tunmaskedStart?: number;\n\t/** 自定义保留尾部明文字符数(仅 type='custom' 有效) */\n\tunmaskedEnd?: number;\n\t/** 是否支持切换明文/密文查看,默认为 true */\n\ttoggleable?: boolean;\n\t/** 是否支持一键复制,默认为 false */\n\tcopyable?: boolean;\n\t/** 切换明文时的拦截回调(返回 false 可阻止切换,支持异步鉴权) */\n\tonToggle?: (nextMasked: boolean) => boolean | Promise<boolean>;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\n// 格式化脱敏文本\nexport function maskSensitiveText(\n\traw: string,\n\ttype: SensitiveType = 'phone',\n\tmaskSymbol: string = '*',\n\tstartCount?: number,\n\tendCount?: number,\n): string {\n\tif (!raw) return '';\n\n\tswitch (type) {\n\t\tcase 'phone':\n\t\t\tif (raw.length <= 7) return raw;\n\t\t\treturn raw.slice(0, 3) + maskSymbol.repeat(4) + raw.slice(-4);\n\t\tcase 'idcard':\n\t\t\tif (raw.length <= 10) return raw;\n\t\t\treturn raw.slice(0, 6) + maskSymbol.repeat(Math.max(1, raw.length - 10)) + raw.slice(-4);\n\t\tcase 'bankcard':\n\t\t\tif (raw.length <= 8) return raw;\n\t\t\treturn raw.slice(0, 4) + ' ' + maskSymbol.repeat(4) + ' ' + maskSymbol.repeat(4) + ' ' + raw.slice(-4);\n\t\tcase 'email': {\n\t\t\tconst atIndex = raw.indexOf('@');\n\t\t\tif (atIndex <= 1) return raw;\n\t\t\tconst name = raw.slice(0, atIndex);\n\t\t\tconst domain = raw.slice(atIndex);\n\t\t\tconst maskedName = name[0] + maskSymbol.repeat(Math.max(1, name.length - 2)) + (name.length > 2 ? name.slice(-1) : '');\n\t\t\treturn maskedName + domain;\n\t\t}\n\t\tcase 'custom': {\n\t\t\tconst start = startCount !== undefined ? startCount : 2;\n\t\t\tconst end = endCount !== undefined ? endCount : 2;\n\t\t\tif (raw.length <= start + end) return raw;\n\t\t\treturn raw.slice(0, start) + maskSymbol.repeat(Math.max(1, raw.length - start - end)) + raw.slice(-end);\n\t\t}\n\t\tdefault:\n\t\t\treturn raw;\n\t}\n}\n\nconst SensitiveMask: React.FC<SensitiveMaskProps> = ({\n\ttext = '',\n\ttype = 'phone',\n\tdefaultMasked = true,\n\tmaskSymbol = '*',\n\tunmaskedStart,\n\tunmaskedEnd,\n\ttoggleable = true,\n\tcopyable = false,\n\tonToggle,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [masked, setMasked] = useState<boolean>(defaultMasked);\n\n\tconst maskedText = useMemo(() => {\n\t\treturn maskSensitiveText(text, type, maskSymbol, unmaskedStart, unmaskedEnd);\n\t}, [text, type, maskSymbol, unmaskedStart, unmaskedEnd]);\n\n\tconst displayText = masked ? maskedText : text;\n\n\tconst handleToggle = async (e: React.MouseEvent) => {\n\t\te.stopPropagation();\n\t\tconst nextState = !masked;\n\t\tif (onToggle) {\n\t\t\tconst allowed = await onToggle(nextState);\n\t\t\tif (allowed === false) return;\n\t\t}\n\t\tsetMasked(nextState);\n\t};\n\n\treturn (\n\t\t<span className={`rpc_sensitive_mask ${className}`} style={style}>\n\t\t\t<span className=\"rpc_sensitive_mask_text\">{displayText}</span>\n\n\t\t\t{toggleable && (\n\t\t\t\t<span className=\"rpc_sensitive_mask_action_btn\" onClick={handleToggle} title={masked ? '点击查看明文' : '点击隐藏'}>\n\t\t\t\t\t{masked ? <EyeOutlined /> : <EyeInvisibleOutlined />}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t{copyable && <CopyButton mode=\"icon\" text={text} tooltip=\"复制明文\" />}\n\t\t</span>\n\t);\n};\n\nexport default SensitiveMask;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../JsonEditor/index.tsx"],"names":["useMemo","useState","useRef","useEffect","jsxs","jsx","Fragment","CopyButton_default"],"mappings":"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","file":"chunk-KUW2ZR2A.cjs","sourcesContent":["import React, { useState, useRef, useEffect, useMemo, CSSProperties } from 'react';\nimport CopyButton from '../CopyButton';\nimport './index.less';\n\nexport interface JsonEditorProps {\n\t/** JSON 数据内容(可传 JSON 字符串或 Object 对象) */\n\tvalue?: string | object;\n\t/** 默认 JSON 数据内容 */\n\tdefaultValue?: string | object;\n\t/** 内容变化回调 */\n\tonChange?: (rawJson: string, parsedObject?: any) => void;\n\t/** 是否只读模式,默认为 false */\n\treadOnly?: boolean;\n\t/** 缩进空格数,默认为 2 */\n\tindent?: number;\n\t/** 编辑器高度,默认为 280 */\n\theight?: number | string;\n\t/** 是否展示行号,默认为 true */\n\tshowLineNumbers?: boolean;\n\t/** 是否展示顶部工具栏,默认为 true */\n\tshowToolbar?: boolean;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\n// 格式化初始传入值\nfunction normalizeJson(val?: string | object, indent: number = 2): string {\n\tif (val === undefined || val === null) return '{\\n \\n}';\n\tif (typeof val === 'object') {\n\t\ttry {\n\t\t\treturn JSON.stringify(val, null, indent);\n\t\t} catch {\n\t\t\treturn '{}';\n\t\t}\n\t}\n\treturn String(val);\n}\n\nconst JsonEditor: React.FC<JsonEditorProps> = ({\n\tvalue: controlledValue,\n\tdefaultValue,\n\tonChange,\n\treadOnly = false,\n\tindent = 2,\n\theight = 280,\n\tshowLineNumbers = true,\n\tshowToolbar = true,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst initialText = useMemo(() => {\n\t\treturn normalizeJson(controlledValue !== undefined ? controlledValue : defaultValue, indent);\n\t}, [controlledValue, defaultValue, indent]);\n\n\tconst [text, setText] = useState<string>(initialText);\n\tconst [error, setError] = useState<string | null>(null);\n\n\tconst textareaRef = useRef<HTMLTextAreaElement>(null);\n\n\tuseEffect(() => {\n\t\tif (controlledValue !== undefined) {\n\t\t\tconst next = normalizeJson(controlledValue, indent);\n\t\t\tsetText(next);\n\t\t\tvalidate(next);\n\t\t}\n\t}, [controlledValue, indent]);\n\n\t// 校验 JSON\n\tconst validate = (content: string) => {\n\t\tif (!content.trim()) {\n\t\t\tsetError(null);\n\t\t\treturn true;\n\t\t}\n\t\ttry {\n\t\t\tconst parsed = JSON.parse(content);\n\t\t\tsetError(null);\n\t\t\treturn parsed;\n\t\t} catch (err: any) {\n\t\t\tsetError(err.message || 'JSON 语法错误');\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tconst handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n\t\tconst nextText = e.target.value;\n\t\tsetText(nextText);\n\t\tconst parsed = validate(nextText);\n\t\tonChange?.(nextText, parsed !== false ? parsed : undefined);\n\t};\n\n\t// 一键美化格式化\n\tconst handleFormat = () => {\n\t\ttry {\n\t\t\tconst parsed = JSON.parse(text);\n\t\t\tconst formatted = JSON.stringify(parsed, null, indent);\n\t\t\tsetText(formatted);\n\t\t\tsetError(null);\n\t\t\tonChange?.(formatted, parsed);\n\t\t} catch (err: any) {\n\t\t\tsetError(err.message || '格式化失败: 语法不合法');\n\t\t}\n\t};\n\n\t// 一键压缩 (Minify)\n\tconst handleMinify = () => {\n\t\ttry {\n\t\t\tconst parsed = JSON.parse(text);\n\t\t\tconst minified = JSON.stringify(parsed);\n\t\t\tsetText(minified);\n\t\t\tsetError(null);\n\t\t\tonChange?.(minified, parsed);\n\t\t} catch (err: any) {\n\t\t\tsetError(err.message || '压缩失败: 语法不合法');\n\t\t}\n\t};\n\n\t// 处理 Tab 键缩进\n\tconst handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n\t\tif (e.key === 'Tab') {\n\t\t\te.preventDefault();\n\t\t\tconst textarea = textareaRef.current;\n\t\t\tif (!textarea) return;\n\n\t\t\tconst start = textarea.selectionStart;\n\t\t\tconst end = textarea.selectionEnd;\n\t\t\tconst spaces = ' '.repeat(indent);\n\n\t\t\tconst newText = text.substring(0, start) + spaces + text.substring(end);\n\t\t\tsetText(newText);\n\t\t\tvalidate(newText);\n\n\t\t\tsetTimeout(() => {\n\t\t\t\ttextarea.selectionStart = textarea.selectionEnd = start + indent;\n\t\t\t}, 0);\n\t\t}\n\t};\n\n\t// 计算总行数\n\tconst lineCount = useMemo(() => {\n\t\treturn text.split('\\n').length;\n\t}, [text]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={`rpc_json_editor ${className}`}\n\t\t\tstyle={{ height, ...style }}\n\t\t>\n\t\t\t{/* 顶部工具栏 */}\n\t\t\t{showToolbar && (\n\t\t\t\t<div className=\"rpc_json_editor_toolbar\">\n\t\t\t\t\t<div className=\"rpc_json_editor_title\">\n\t\t\t\t\t\t<span>{'{ }'}</span>\n\t\t\t\t\t\t<span>JSON {readOnly ? 'Viewer' : 'Editor'}</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className=\"rpc_json_editor_actions\">\n\t\t\t\t\t\t{!readOnly && (\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_json_editor_btn\"\n\t\t\t\t\t\t\t\t\tonClick={handleFormat}\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美化\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_json_editor_btn\"\n\t\t\t\t\t\t\t\t\tonClick={handleMinify}\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压缩\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<CopyButton mode=\"icon\" text={text} tooltip=\"复制 JSON\" />\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_json_editor_body\">\n\t\t\t\t{showLineNumbers && (\n\t\t\t\t\t<div className=\"rpc_json_editor_line_numbers\">\n\t\t\t\t\t\t{Array.from({ length: Math.max(1, lineCount) }).map((_, i) => (\n\t\t\t\t\t\t\t<div key={i}>{i + 1}</div>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t<textarea\n\t\t\t\t\tref={textareaRef}\n\t\t\t\t\tvalue={text}\n\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\treadOnly={readOnly}\n\t\t\t\t\tspellCheck={false}\n\t\t\t\t\tclassName=\"rpc_json_editor_textarea\"\n\t\t\t\t\tplaceholder=\"在此输入或粘贴 JSON 字符串...\"\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t{/* 底部状态栏 */}\n\t\t\t<div\n\t\t\t\tclassName={`rpc_json_editor_status_bar ${\n\t\t\t\t\terror ? 'rpc_json_editor_status_bar_error' : ''\n\t\t\t\t}`}\n\t\t\t>\n\t\t\t\t<span>{error ? `⚠️ ${error}` : '✓ JSON 格式有效'}</span>\n\t\t\t\t<span>{lineCount} 行 · {text.length} 字符</span>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default JsonEditor;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../DisabledBox/index.tsx"],"names":["jsxs","jsx","LockOutlined"],"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,6DAAU,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,uBACCA,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,SAAA,EAAU,8CAAA;AAAA,MACV,cAAA,EAAgB,kBAAA;AAAA,MAEf,QAAA,EAAA;AAAA,QAAA,SAAA,KAAc,MAAA,oBAAUC,cAAA,CAACC,8BAAA,EAAA,EAAa,SAAA,EAAU,mBAAA,EAAoB,CAAA;AAAA,wBACrED,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oBAAA,EAAsB,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,QAC7C,SAAA,KAAc,OAAA,oBAAWA,cAAA,CAACC,8BAAA,EAAA,EAAa,WAAU,mBAAA,EAAoB;AAAA;AAAA;AAAA,GACvE;AAEF,CAAA;AAEA,IAAO,mBAAA,GAAQ","file":"chunk-L7ULSFW6.cjs","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":["../DebounceSelect/index.tsx"],"names":[],"mappings":"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","file":"chunk-LBEGRYTP.js","sourcesContent":["import React, { useState, useRef, useEffect, useMemo, ReactNode, CSSProperties } from 'react';\nimport { LoadingOutlined, SearchOutlined, CloseCircleFilled, DownOutlined, CheckOutlined } from '../src/icons';\nimport './index.less';\n\nexport interface SelectOption {\n\tlabel: ReactNode;\n\tvalue: string | number;\n\tdisabled?: boolean;\n\t[key: string]: unknown;\n}\n\nexport type SelectValue =\n\t| string\n\t| number\n\t| SelectOption\n\t| (string | number | SelectOption)[]\n\t| undefined;\n\nexport interface DebounceSelectProps {\n\t/** 异步拉取选项列表的函数 */\n\tfetchOptions: (search: string) => Promise<SelectOption[]>;\n\t/** 防抖等待时间(毫秒),默认为 300ms */\n\tdebounceTimeout?: number;\n\t/** 选择模式:'single' 单选,'multiple' 多选(Tag标签形式) */\n\tmode?: 'single' | 'multiple';\n\t/** 当前选中值 */\n\tvalue?: SelectValue;\n\t/** 默认选中值 */\n\tdefaultValue?: SelectValue;\n\t/** 选中值变化回调 */\n\tonChange?: (value: any, option?: SelectOption | SelectOption[]) => void;\n\t/** 输入框占位符 */\n\tplaceholder?: string;\n\t/** 是否支持清空 */\n\tallowClear?: boolean;\n\t/** 是否禁用 */\n\tdisabled?: boolean;\n\t/** 空数据时的展示内容 */\n\tnotFoundContent?: ReactNode;\n\t/** 默认选项列表(搜索前展示) */\n\tdefaultOptions?: SelectOption[];\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst DebounceSelect: React.FC<DebounceSelectProps> = ({\n\tfetchOptions,\n\tdebounceTimeout = 300,\n\tmode = 'single',\n\tvalue: controlledValue,\n\tdefaultValue,\n\tonChange,\n\tplaceholder = '请输入搜索内容...',\n\tallowClear = true,\n\tdisabled = false,\n\tnotFoundContent = '暂无匹配数据',\n\tdefaultOptions = [],\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [internalValue, setInternalValue] = useState<SelectValue>(\n\t\tdefaultValue ?? (mode === 'multiple' ? [] : undefined),\n\t);\n\n\tconst currentValue = controlledValue !== undefined ? controlledValue : internalValue;\n\n\tconst [options, setOptions] = useState<SelectOption[]>(defaultOptions);\n\tconst [fetching, setFetching] = useState<boolean>(false);\n\tconst [searchValue, setSearchValue] = useState<string>('');\n\tconst [isOpen, setIsOpen] = useState<boolean>(false);\n\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\tconst fetchRef = useRef<number>(0);\n\tconst debounceTimerRef = useRef<number | null>(null);\n\n\t// 解析格式化已选值,统一定位到数组格式\n\tconst selectedList: SelectOption[] = useMemo(() => {\n\t\tif (currentValue === undefined || currentValue === null) return [];\n\t\tconst rawArr = Array.isArray(currentValue) ? currentValue : [currentValue];\n\t\treturn rawArr.map((item) => {\n\t\t\tif (typeof item === 'object' && item !== null && 'value' in item) {\n\t\t\t\treturn item as SelectOption;\n\t\t\t}\n\t\t\tconst matched = options.find((opt) => opt.value === item);\n\t\t\treturn matched || { label: String(item), value: item as string | number };\n\t\t});\n\t}, [currentValue, options]);\n\n\t// 异步搜索逻辑(带时序竞态控制)\n\tconst performSearch = (kw: string) => {\n\t\tfetchRef.current += 1;\n\t\tconst fetchId = fetchRef.current;\n\n\t\tif (debounceTimerRef.current) {\n\t\t\twindow.clearTimeout(debounceTimerRef.current);\n\t\t}\n\n\t\tdebounceTimerRef.current = window.setTimeout(() => {\n\t\t\tsetFetching(true);\n\t\t\tfetchOptions(kw)\n\t\t\t\t.then((newOptions) => {\n\t\t\t\t\t// 仅当当前请求是最新一次发起的请求时才更新 options\n\t\t\t\t\tif (fetchId === fetchRef.current) {\n\t\t\t\t\t\tsetOptions(newOptions);\n\t\t\t\t\t\tsetFetching(false);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tif (fetchId === fetchRef.current) {\n\t\t\t\t\t\tsetOptions([]);\n\t\t\t\t\t\tsetFetching(false);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}, debounceTimeout);\n\t};\n\n\t// 监听输入变化\n\tconst handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst val = e.target.value;\n\t\tsetSearchValue(val);\n\t\tif (!isOpen) setIsOpen(true);\n\t\tperformSearch(val);\n\t};\n\n\t// 点击外部关闭弹窗\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (e: MouseEvent) => {\n\t\t\tif (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n\t\t\t\tsetIsOpen(false);\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener('mousedown', handleClickOutside);\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('mousedown', handleClickOutside);\n\t\t\tif (debounceTimerRef.current) {\n\t\t\t\twindow.clearTimeout(debounceTimerRef.current);\n\t\t\t}\n\t\t};\n\t}, []);\n\n\t// 选中项处理\n\tconst handleSelectOption = (option: SelectOption) => {\n\t\tif (option.disabled) return;\n\n\t\tif (mode === 'single') {\n\t\t\tif (controlledValue === undefined) {\n\t\t\t\tsetInternalValue(option.value);\n\t\t\t}\n\t\t\tonChange?.(option.value, option);\n\t\t\tsetIsOpen(false);\n\t\t\tsetSearchValue('');\n\t\t} else {\n\t\t\tconst exists = selectedList.some((item) => item.value === option.value);\n\t\t\tlet nextSelected: SelectOption[];\n\t\t\tif (exists) {\n\t\t\t\tnextSelected = selectedList.filter((item) => item.value !== option.value);\n\t\t\t} else {\n\t\t\t\tnextSelected = [...selectedList, option];\n\t\t\t}\n\t\t\tconst nextValues = nextSelected.map((item) => item.value);\n\t\t\tif (controlledValue === undefined) {\n\t\t\t\tsetInternalValue(nextValues);\n\t\t\t}\n\t\t\tonChange?.(nextValues, nextSelected);\n\t\t\tsetSearchValue('');\n\t\t\tinputRef.current?.focus();\n\t\t}\n\t};\n\n\t// 移除选中 Tag\n\tconst handleRemoveTag = (e: React.MouseEvent, val: string | number) => {\n\t\te.stopPropagation();\n\t\tconst nextSelected = selectedList.filter((item) => item.value !== val);\n\t\tconst nextValues = nextSelected.map((item) => item.value);\n\t\tif (controlledValue === undefined) {\n\t\t\tsetInternalValue(nextValues);\n\t\t}\n\t\tonChange?.(nextValues, nextSelected);\n\t};\n\n\t// 清空全部\n\tconst handleClear = (e: React.MouseEvent) => {\n\t\te.stopPropagation();\n\t\tconst emptyVal = mode === 'multiple' ? [] : undefined;\n\t\tif (controlledValue === undefined) {\n\t\t\tsetInternalValue(emptyVal);\n\t\t}\n\t\tonChange?.(emptyVal, mode === 'multiple' ? [] : undefined);\n\t\tsetSearchValue('');\n\t};\n\n\tconst showClear = allowClear && !disabled && (selectedList.length > 0 || searchValue.length > 0);\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tclassName={`rpc_debounce_select ${className}`}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={`rpc_debounce_select_selector ${\n\t\t\t\t\tisOpen ? 'rpc_debounce_select_selector_focused' : ''\n\t\t\t\t} ${disabled ? 'rpc_debounce_select_selector_disabled' : ''}`}\n\t\t\t\tonClick={() => {\n\t\t\t\t\tif (!disabled) {\n\t\t\t\t\t\tsetIsOpen(true);\n\t\t\t\t\t\tinputRef.current?.focus();\n\t\t\t\t\t\tif (options.length === 0 && !searchValue) {\n\t\t\t\t\t\t\tperformSearch('');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{/* 多选 Tags */}\n\t\t\t\t{mode === 'multiple' &&\n\t\t\t\t\tselectedList.map((item) => (\n\t\t\t\t\t\t<span key={item.value} className=\"rpc_debounce_select_tag\">\n\t\t\t\t\t\t\t<span>{item.label}</span>\n\t\t\t\t\t\t\t{!disabled && (\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tclassName=\"rpc_debounce_select_tag_close\"\n\t\t\t\t\t\t\t\t\tonClick={(e) => handleRemoveTag(e, item.value)}\n\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</span>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t))}\n\n\t\t\t\t{/* 单选回显值或输入框 */}\n\t\t\t\t{mode === 'single' && selectedList.length > 0 && !searchValue && !isOpen && (\n\t\t\t\t\t<span style={{ color: '#262626', marginRight: 4 }}>{selectedList[0].label}</span>\n\t\t\t\t)}\n\n\t\t\t\t<input\n\t\t\t\t\tref={inputRef}\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tclassName=\"rpc_debounce_select_input\"\n\t\t\t\t\tvalue={searchValue}\n\t\t\t\t\tonChange={handleInputChange}\n\t\t\t\t\tplaceholder={selectedList.length === 0 ? placeholder : ''}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t/>\n\n\t\t\t\t{/* 右侧动作按钮 */}\n\t\t\t\t<div className=\"rpc_debounce_select_actions\">\n\t\t\t\t\t{fetching && <LoadingOutlined />}\n\t\t\t\t\t{!fetching && showClear && (\n\t\t\t\t\t\t<CloseCircleFilled className=\"rpc_debounce_select_clear_btn\" onClick={handleClear} />\n\t\t\t\t\t)}\n\t\t\t\t\t{!fetching && !showClear && (\n\t\t\t\t\t\t<DownOutlined\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\ttransform: isOpen ? 'rotate(180deg)' : 'rotate(0deg)',\n\t\t\t\t\t\t\t\ttransition: 'transform 0.2s',\n\t\t\t\t\t\t\t\tfontSize: 10,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{/* 下拉浮层 */}\n\t\t\t{isOpen && !disabled && (\n\t\t\t\t<div className=\"rpc_debounce_select_dropdown\">\n\t\t\t\t\t{fetching && options.length === 0 ? (\n\t\t\t\t\t\t<div className=\"rpc_debounce_select_empty\">\n\t\t\t\t\t\t\t<LoadingOutlined style={{ marginRight: 8 }} />\n\t\t\t\t\t\t\t正在搜索中...\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : options.length > 0 ? (\n\t\t\t\t\t\toptions.map((opt) => {\n\t\t\t\t\t\t\tconst isSelected = selectedList.some((item) => item.value === opt.value);\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={opt.value}\n\t\t\t\t\t\t\t\t\tclassName={`rpc_debounce_select_item ${\n\t\t\t\t\t\t\t\t\t\tisSelected ? 'rpc_debounce_select_item_selected' : ''\n\t\t\t\t\t\t\t\t\t} ${opt.disabled ? 'rpc_debounce_select_item_disabled' : ''}`}\n\t\t\t\t\t\t\t\t\tonClick={() => handleSelectOption(opt)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<span>{opt.label}</span>\n\t\t\t\t\t\t\t\t\t{isSelected && <CheckOutlined style={{ fontSize: 12 }} />}\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})\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<div className=\"rpc_debounce_select_empty\">{notFoundContent}</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 DebounceSelect;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../MetricCard/index.tsx"],"names":["jsxs","jsx","CountUp_default"],"mappings":"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","file":"chunk-N7IQ6LYD.cjs","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"]}