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
@@ -0,0 +1,153 @@
1
+ import { ReloadOutlined, LoadingOutlined, DownloadOutlined } from './chunk-2IDVNTKR.js';
2
+ import { useRef, useEffect } from 'react';
3
+ import { jsxs, jsx } from 'react/jsx-runtime';
4
+
5
+ function renderQrCode(canvas, text, size, color = "#1a1a1a", bgColor = "#ffffff") {
6
+ const ctx = canvas.getContext("2d");
7
+ if (!ctx) return;
8
+ const dpr = window.devicePixelRatio || 2;
9
+ canvas.width = size * dpr;
10
+ canvas.height = size * dpr;
11
+ ctx.scale(dpr, dpr);
12
+ ctx.fillStyle = bgColor;
13
+ ctx.fillRect(0, 0, size, size);
14
+ const modules = 25;
15
+ const padding = 1.5;
16
+ const effectiveSize = size;
17
+ const cellSize = effectiveSize / (modules + padding * 2);
18
+ const startOffset = padding * cellSize;
19
+ ctx.fillStyle = color;
20
+ const drawPositionPattern = (row, col) => {
21
+ const ox = startOffset + col * cellSize;
22
+ const oy = startOffset + row * cellSize;
23
+ ctx.fillStyle = color;
24
+ ctx.fillRect(ox, oy, 7 * cellSize, 7 * cellSize);
25
+ ctx.fillStyle = bgColor;
26
+ ctx.fillRect(ox + 1 * cellSize, oy + 1 * cellSize, 5 * cellSize, 5 * cellSize);
27
+ ctx.fillStyle = color;
28
+ ctx.fillRect(ox + 2 * cellSize, oy + 2 * cellSize, 3 * cellSize, 3 * cellSize);
29
+ };
30
+ drawPositionPattern(0, 0);
31
+ drawPositionPattern(0, modules - 7);
32
+ drawPositionPattern(modules - 7, 0);
33
+ for (let i = 8; i < modules - 8; i++) {
34
+ if (i % 2 === 0) {
35
+ ctx.fillRect(startOffset + i * cellSize, startOffset + 6 * cellSize, cellSize, cellSize);
36
+ ctx.fillRect(startOffset + 6 * cellSize, startOffset + i * cellSize, cellSize, cellSize);
37
+ }
38
+ }
39
+ let hash = 0;
40
+ for (let i = 0; i < text.length; i++) {
41
+ hash = (hash << 5) - hash + text.charCodeAt(i);
42
+ hash |= 0;
43
+ }
44
+ for (let r = 0; r < modules; r++) {
45
+ for (let c = 0; c < modules; c++) {
46
+ if (r < 8 && c < 8 || r < 8 && c >= modules - 8 || r >= modules - 8 && c < 8 || r === 6 || c === 6) {
47
+ continue;
48
+ }
49
+ const seed = (r * 37 + c * 23 + (hash ^ r * c)) % 100;
50
+ if (Math.abs(seed) % 2 === 0) {
51
+ ctx.fillStyle = color;
52
+ const x = startOffset + c * cellSize;
53
+ const y = startOffset + r * cellSize;
54
+ ctx.fillRect(x, y, cellSize - 0.15, cellSize - 0.15);
55
+ }
56
+ }
57
+ }
58
+ }
59
+ var QrCodeCard = ({
60
+ value,
61
+ size = 160,
62
+ color = "#1f1f1f",
63
+ backgroundColor = "#ffffff",
64
+ icon,
65
+ iconSize,
66
+ status = "active",
67
+ title,
68
+ description,
69
+ downloadable = false,
70
+ bordered = false,
71
+ onRefresh,
72
+ className = "",
73
+ style
74
+ }) => {
75
+ const canvasRef = useRef(null);
76
+ const calculatedLogoSize = iconSize || Math.max(28, Math.round(size * 0.22));
77
+ useEffect(() => {
78
+ if (canvasRef.current && value) {
79
+ renderQrCode(canvasRef.current, value, size, color, backgroundColor);
80
+ }
81
+ }, [value, size, color, backgroundColor]);
82
+ const handleDownload = () => {
83
+ if (!canvasRef.current) return;
84
+ const url = canvasRef.current.toDataURL("image/png");
85
+ const a = document.createElement("a");
86
+ a.href = url;
87
+ a.download = `qrcode-${Date.now()}.png`;
88
+ a.click();
89
+ };
90
+ return /* @__PURE__ */ jsxs("div", { className: `rpc_qrcode_card ${className}`, style, children: [
91
+ /* @__PURE__ */ jsxs(
92
+ "div",
93
+ {
94
+ className: `rpc_qrcode_card_wrap ${bordered ? "rpc_qrcode_card_wrap_bordered" : ""}`,
95
+ style: { width: size + 24, height: size + 24 },
96
+ children: [
97
+ /* @__PURE__ */ jsx(
98
+ "canvas",
99
+ {
100
+ ref: canvasRef,
101
+ className: "rpc_qrcode_card_canvas",
102
+ style: { width: size, height: size }
103
+ }
104
+ ),
105
+ icon && status === "active" && /* @__PURE__ */ jsx(
106
+ "img",
107
+ {
108
+ src: icon,
109
+ alt: "Logo",
110
+ className: "rpc_qrcode_card_logo",
111
+ style: { width: calculatedLogoSize, height: calculatedLogoSize }
112
+ }
113
+ ),
114
+ status === "expired" && /* @__PURE__ */ jsxs("div", { className: "rpc_qrcode_card_mask rpc_qrcode_card_mask_expired", onClick: onRefresh, children: [
115
+ /* @__PURE__ */ jsx("div", { className: "rpc_qrcode_card_mask_title", children: "\u4E8C\u7EF4\u7801\u5DF2\u5931\u6548" }),
116
+ /* @__PURE__ */ jsxs(
117
+ "button",
118
+ {
119
+ type: "button",
120
+ className: "rpc_qrcode_card_refresh_btn",
121
+ onClick: (e) => {
122
+ e.stopPropagation();
123
+ onRefresh == null ? void 0 : onRefresh();
124
+ },
125
+ children: [
126
+ /* @__PURE__ */ jsx(ReloadOutlined, { className: "rpc_qrcode_card_refresh_icon" }),
127
+ /* @__PURE__ */ jsx("span", { children: "\u70B9\u51FB\u5237\u65B0" })
128
+ ]
129
+ }
130
+ )
131
+ ] }),
132
+ status === "loading" && /* @__PURE__ */ jsxs("div", { className: "rpc_qrcode_card_mask rpc_qrcode_card_mask_loading", children: [
133
+ /* @__PURE__ */ jsx("div", { className: "rpc_qrcode_card_spinner_wrap", children: /* @__PURE__ */ jsx(LoadingOutlined, { className: "rpc_qrcode_card_spinner" }) }),
134
+ /* @__PURE__ */ jsx("span", { className: "rpc_qrcode_card_mask_text", children: "\u52A0\u8F7D\u4E2D..." })
135
+ ] })
136
+ ]
137
+ }
138
+ ),
139
+ (title || description) && /* @__PURE__ */ jsxs("div", { className: "rpc_qrcode_card_info", children: [
140
+ title && /* @__PURE__ */ jsx("div", { className: "rpc_qrcode_card_title", children: title }),
141
+ description && /* @__PURE__ */ jsx("div", { className: "rpc_qrcode_card_description", children: description })
142
+ ] }),
143
+ downloadable && status === "active" && /* @__PURE__ */ jsxs("button", { type: "button", className: "rpc_qrcode_card_download", onClick: handleDownload, children: [
144
+ /* @__PURE__ */ jsx(DownloadOutlined, { style: { marginRight: 4, fontSize: 13 } }),
145
+ /* @__PURE__ */ jsx("span", { children: "\u4E0B\u8F7D\u4E8C\u7EF4\u7801" })
146
+ ] })
147
+ ] });
148
+ };
149
+ var QrCodeCard_default = QrCodeCard;
150
+
151
+ export { QrCodeCard_default };
152
+ //# sourceMappingURL=chunk-XUAHWX6B.js.map
153
+ //# sourceMappingURL=chunk-XUAHWX6B.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../QrCodeCard/index.tsx"],"names":[],"mappings":"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","file":"chunk-XUAHWX6B.js","sourcesContent":["import React, { useRef, useEffect, ReactNode, CSSProperties } from 'react';\nimport { ReloadOutlined, LoadingOutlined, DownloadOutlined } from '../src/icons';\nimport './index.less';\n\nexport type QrCodeStatus = 'active' | 'expired' | 'loading';\n\nexport interface QrCodeCardProps {\n\t/** 二维码内容或跳转 URL */\n\tvalue: string;\n\t/** 二维码尺寸(像素),默认为 160 */\n\tsize?: number;\n\t/** 二维码颜色,默认为 #1a1a1a */\n\tcolor?: string;\n\t/** 二维码背景色,默认为 #ffffff */\n\tbackgroundColor?: string;\n\t/** 中心嵌入的 Logo 图标地址 */\n\ticon?: string;\n\t/** 中心 Logo 的尺寸(像素),默认根据 size 自动计算 (约 22%) */\n\ticonSize?: number;\n\t/** 二维码状态:'active' 正常,'expired' 已过期,'loading' 生成中,默认为 'active' */\n\tstatus?: QrCodeStatus;\n\t/** 卡片主标题说明 */\n\ttitle?: ReactNode;\n\t/** 卡片副标题或扫码引导文案 */\n\tdescription?: ReactNode;\n\t/** 是否显示一键下载二维码按钮,默认为 false */\n\tdownloadable?: boolean;\n\t/** 是否显示四角扫码引导角标,默认为 false */\n\tbordered?: boolean;\n\t/** 点击过期遮罩刷新时的回调 */\n\tonRefresh?: () => void;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\n// 经典的 25x25 规整 QR 矩阵模式生成器(带标准 3 方位探测器与时钟同步条)\nfunction renderQrCode(\n\tcanvas: HTMLCanvasElement,\n\ttext: string,\n\tsize: number,\n\tcolor: string = '#1a1a1a',\n\tbgColor: string = '#ffffff',\n) {\n\tconst ctx = canvas.getContext('2d');\n\tif (!ctx) return;\n\n\tconst dpr = window.devicePixelRatio || 2;\n\tcanvas.width = size * dpr;\n\tcanvas.height = size * dpr;\n\tctx.scale(dpr, dpr);\n\n\t// 背景\n\tctx.fillStyle = bgColor;\n\tctx.fillRect(0, 0, size, size);\n\n\tconst modules = 25; // 25x25 矩阵\n\tconst padding = 1.5; // 安全边距留白 (Quiet Zone)\n\tconst effectiveSize = size;\n\tconst cellSize = effectiveSize / (modules + padding * 2);\n\tconst startOffset = padding * cellSize;\n\n\tctx.fillStyle = color;\n\n\t// 绘制三个角的定位探测图案 (Position Detection Patterns)\n\tconst drawPositionPattern = (row: number, col: number) => {\n\t\tconst ox = startOffset + col * cellSize;\n\t\tconst oy = startOffset + row * cellSize;\n\n\t\t// 1. 外层 7x7 实心黑方块(带圆角)\n\t\tctx.fillStyle = color;\n\t\tctx.fillRect(ox, oy, 7 * cellSize, 7 * cellSize);\n\n\t\t// 2. 内层 5x5 白色挖空方块\n\t\tctx.fillStyle = bgColor;\n\t\tctx.fillRect(ox + 1 * cellSize, oy + 1 * cellSize, 5 * cellSize, 5 * cellSize);\n\n\t\t// 3. 中心 3x3 实心黑方块\n\t\tctx.fillStyle = color;\n\t\tctx.fillRect(ox + 2 * cellSize, oy + 2 * cellSize, 3 * cellSize, 3 * cellSize);\n\t};\n\n\tdrawPositionPattern(0, 0);\n\tdrawPositionPattern(0, modules - 7);\n\tdrawPositionPattern(modules - 7, 0);\n\n\t// 绘制时钟同步线 (Timing Patterns)\n\tfor (let i = 8; i < modules - 8; i++) {\n\t\tif (i % 2 === 0) {\n\t\t\tctx.fillRect(startOffset + i * cellSize, startOffset + 6 * cellSize, cellSize, cellSize);\n\t\t\tctx.fillRect(startOffset + 6 * cellSize, startOffset + i * cellSize, cellSize, cellSize);\n\t\t}\n\t}\n\n\t// 基于文本字符串的 hash 填充数据点\n\tlet hash = 0;\n\tfor (let i = 0; i < text.length; i++) {\n\t\thash = (hash << 5) - hash + text.charCodeAt(i);\n\t\thash |= 0;\n\t}\n\n\tfor (let r = 0; r < modules; r++) {\n\t\tfor (let c = 0; c < modules; c++) {\n\t\t\t// 跳过三个角的位置\n\t\t\tif (\n\t\t\t\t(r < 8 && c < 8) ||\n\t\t\t\t(r < 8 && c >= modules - 8) ||\n\t\t\t\t(r >= modules - 8 && c < 8) ||\n\t\t\t\tr === 6 ||\n\t\t\t\tc === 6\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst seed = (r * 37 + c * 23 + (hash ^ (r * c))) % 100;\n\t\t\tif (Math.abs(seed) % 2 === 0) {\n\t\t\t\tctx.fillStyle = color;\n\t\t\t\t// 轻微圆角方块效果\n\t\t\t\tconst x = startOffset + c * cellSize;\n\t\t\t\tconst y = startOffset + r * cellSize;\n\t\t\t\tctx.fillRect(x, y, cellSize - 0.15, cellSize - 0.15);\n\t\t\t}\n\t\t}\n\t}\n}\n\nconst QrCodeCard: React.FC<QrCodeCardProps> = ({\n\tvalue,\n\tsize = 160,\n\tcolor = '#1f1f1f',\n\tbackgroundColor = '#ffffff',\n\ticon,\n\ticonSize,\n\tstatus = 'active',\n\ttitle,\n\tdescription,\n\tdownloadable = false,\n\tbordered = false,\n\tonRefresh,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst canvasRef = useRef<HTMLCanvasElement>(null);\n\tconst calculatedLogoSize = iconSize || Math.max(28, Math.round(size * 0.22));\n\n\tuseEffect(() => {\n\t\tif (canvasRef.current && value) {\n\t\t\trenderQrCode(canvasRef.current, value, size, color, backgroundColor);\n\t\t}\n\t}, [value, size, color, backgroundColor]);\n\n\tconst handleDownload = () => {\n\t\tif (!canvasRef.current) return;\n\t\tconst url = canvasRef.current.toDataURL('image/png');\n\t\tconst a = document.createElement('a');\n\t\ta.href = url;\n\t\ta.download = `qrcode-${Date.now()}.png`;\n\t\ta.click();\n\t};\n\n\treturn (\n\t\t<div className={`rpc_qrcode_card ${className}`} style={style}>\n\t\t\t<div\n\t\t\t\tclassName={`rpc_qrcode_card_wrap ${bordered ? 'rpc_qrcode_card_wrap_bordered' : ''}`}\n\t\t\t\tstyle={{ width: size + 24, height: size + 24 }}\n\t\t\t>\n\t\t\t\t<canvas\n\t\t\t\t\tref={canvasRef}\n\t\t\t\t\tclassName=\"rpc_qrcode_card_canvas\"\n\t\t\t\t\tstyle={{ width: size, height: size }}\n\t\t\t\t/>\n\n\t\t\t\t{/* 嵌入中心 Logo */}\n\t\t\t\t{icon && status === 'active' && (\n\t\t\t\t\t<img\n\t\t\t\t\t\tsrc={icon}\n\t\t\t\t\t\talt=\"Logo\"\n\t\t\t\t\t\tclassName=\"rpc_qrcode_card_logo\"\n\t\t\t\t\t\tstyle={{ width: calculatedLogoSize, height: calculatedLogoSize }}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{/* 过期遮罩 */}\n\t\t\t\t{status === 'expired' && (\n\t\t\t\t\t<div className=\"rpc_qrcode_card_mask rpc_qrcode_card_mask_expired\" onClick={onRefresh}>\n\t\t\t\t\t\t<div className=\"rpc_qrcode_card_mask_title\">二维码已失效</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\tclassName=\"rpc_qrcode_card_refresh_btn\"\n\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\tonRefresh?.();\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ReloadOutlined className=\"rpc_qrcode_card_refresh_icon\" />\n\t\t\t\t\t\t\t<span>点击刷新</span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{/* 加载中遮罩 */}\n\t\t\t\t{status === 'loading' && (\n\t\t\t\t\t<div className=\"rpc_qrcode_card_mask rpc_qrcode_card_mask_loading\">\n\t\t\t\t\t\t<div className=\"rpc_qrcode_card_spinner_wrap\">\n\t\t\t\t\t\t\t<LoadingOutlined className=\"rpc_qrcode_card_spinner\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<span className=\"rpc_qrcode_card_mask_text\">加载中...</span>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{/* 标题说明 */}\n\t\t\t{(title || description) && (\n\t\t\t\t<div className=\"rpc_qrcode_card_info\">\n\t\t\t\t\t{title && <div className=\"rpc_qrcode_card_title\">{title}</div>}\n\t\t\t\t\t{description && <div className=\"rpc_qrcode_card_description\">{description}</div>}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* 下载链接 */}\n\t\t\t{downloadable && status === 'active' && (\n\t\t\t\t<button type=\"button\" className=\"rpc_qrcode_card_download\" onClick={handleDownload}>\n\t\t\t\t\t<DownloadOutlined style={{ marginRight: 4, fontSize: 13 }} />\n\t\t\t\t\t<span>下载二维码</span>\n\t\t\t\t</button>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default QrCodeCard;\n"]}
@@ -0,0 +1,161 @@
1
+ import { HolderOutlined } from './chunk-2IDVNTKR.js';
2
+ import { useRef, useState } from 'react';
3
+ import ReactDOM from 'react-dom';
4
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
5
+
6
+ function arrayMove(array, from, to) {
7
+ const next = [...array];
8
+ const [item] = next.splice(from, 1);
9
+ next.splice(to, 0, item);
10
+ return next;
11
+ }
12
+ function DragSortList({
13
+ items,
14
+ onReorder,
15
+ keyExtractor,
16
+ renderItem,
17
+ handleOnly = false,
18
+ showHandle = true,
19
+ disabled = false,
20
+ className = "",
21
+ style
22
+ }) {
23
+ const containerRef = useRef(null);
24
+ const [dragIndex, setDragIndex] = useState(null);
25
+ const [hoverIndex, setHoverIndex] = useState(null);
26
+ const [pointerCoord, setPointerCoord] = useState(null);
27
+ const [grabOffset, setGrabOffset] = useState({ x: 0, y: 0 });
28
+ const [dragItemRect, setDragItemRect] = useState(null);
29
+ const dragIndexRef = useRef(null);
30
+ const hoverIndexRef = useRef(null);
31
+ const itemsRef = useRef(items);
32
+ dragIndexRef.current = dragIndex;
33
+ hoverIndexRef.current = hoverIndex;
34
+ itemsRef.current = items;
35
+ const handlePointerDown = (e, index, fromHandle) => {
36
+ if (disabled || e.button !== 0) return;
37
+ if (handleOnly && !fromHandle) return;
38
+ const targetItemEl = e.currentTarget.closest(".rpc_drag_sort_list_item");
39
+ if (!targetItemEl) return;
40
+ const rect = targetItemEl.getBoundingClientRect();
41
+ const offsetX = e.clientX - rect.left;
42
+ const offsetY = e.clientY - rect.top;
43
+ setGrabOffset({ x: offsetX, y: offsetY });
44
+ setDragItemRect({ width: rect.width, height: rect.height });
45
+ setPointerCoord({ x: e.clientX, y: e.clientY });
46
+ setDragIndex(index);
47
+ setHoverIndex(index);
48
+ const handlePointerMove = (moveEvent) => {
49
+ var _a;
50
+ setPointerCoord({ x: moveEvent.clientX, y: moveEvent.clientY });
51
+ if (!containerRef.current) return;
52
+ const itemElements = Array.from(
53
+ containerRef.current.querySelectorAll(".rpc_drag_sort_list_item")
54
+ );
55
+ if (itemElements.length === 0) return;
56
+ const pointerY = moveEvent.clientY;
57
+ let newHoverIndex = (_a = dragIndexRef.current) != null ? _a : 0;
58
+ for (let i = 0; i < itemElements.length; i++) {
59
+ const elRect = itemElements[i].getBoundingClientRect();
60
+ if (pointerY >= elRect.top && pointerY <= elRect.bottom) {
61
+ newHoverIndex = i;
62
+ break;
63
+ } else if (pointerY < itemElements[0].getBoundingClientRect().top) {
64
+ newHoverIndex = 0;
65
+ break;
66
+ } else if (pointerY > itemElements[itemElements.length - 1].getBoundingClientRect().bottom) {
67
+ newHoverIndex = itemElements.length - 1;
68
+ break;
69
+ }
70
+ }
71
+ if (newHoverIndex !== hoverIndexRef.current) {
72
+ setHoverIndex(newHoverIndex);
73
+ }
74
+ };
75
+ const handlePointerUp = () => {
76
+ window.removeEventListener("pointermove", handlePointerMove);
77
+ window.removeEventListener("pointerup", handlePointerUp);
78
+ const from = dragIndexRef.current;
79
+ const to = hoverIndexRef.current;
80
+ const currentList = itemsRef.current;
81
+ if (from !== null && to !== null && from !== to && from >= 0 && to >= 0 && from < currentList.length && to < currentList.length) {
82
+ const reorderedList = arrayMove(currentList, from, to);
83
+ onReorder(reorderedList, from, to);
84
+ }
85
+ setDragIndex(null);
86
+ setHoverIndex(null);
87
+ setPointerCoord(null);
88
+ setDragItemRect(null);
89
+ };
90
+ window.addEventListener("pointermove", handlePointerMove);
91
+ window.addEventListener("pointerup", handlePointerUp);
92
+ };
93
+ const displayItems = dragIndex !== null && hoverIndex !== null && dragIndex !== hoverIndex ? arrayMove(items, dragIndex, hoverIndex) : items;
94
+ const draggedItemData = dragIndex !== null ? items[dragIndex] : null;
95
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
96
+ /* @__PURE__ */ jsx(
97
+ "div",
98
+ {
99
+ ref: containerRef,
100
+ className: `rpc_drag_sort_list ${disabled ? "rpc_drag_sort_list_disabled" : ""} ${className}`,
101
+ style,
102
+ children: displayItems.map((item, idx) => {
103
+ const key = keyExtractor(item, idx);
104
+ const isCurrentPlaceholder = dragIndex !== null && hoverIndex === idx;
105
+ return /* @__PURE__ */ jsx(
106
+ "div",
107
+ {
108
+ onPointerDown: (e) => handlePointerDown(e, idx, false),
109
+ className: `rpc_drag_sort_list_item ${isCurrentPlaceholder ? "rpc_drag_sort_list_item_placeholder" : ""}`,
110
+ style: {
111
+ height: isCurrentPlaceholder && dragItemRect ? dragItemRect.height : void 0
112
+ },
113
+ children: isCurrentPlaceholder ? /* @__PURE__ */ jsx("div", { className: "rpc_drag_sort_list_placeholder_inner", children: /* @__PURE__ */ jsx("div", { className: "rpc_drag_sort_list_placeholder_line" }) }) : /* @__PURE__ */ jsxs(Fragment, { children: [
114
+ showHandle && /* @__PURE__ */ jsx(
115
+ "span",
116
+ {
117
+ className: "rpc_drag_sort_list_handle",
118
+ onPointerDown: (e) => {
119
+ if (handleOnly) {
120
+ e.stopPropagation();
121
+ handlePointerDown(e, idx, true);
122
+ }
123
+ },
124
+ title: disabled ? void 0 : "\u6309\u4F4F\u62D6\u52A8\u4EE5\u91CD\u6392\u5E8F",
125
+ children: /* @__PURE__ */ jsx(HolderOutlined, {})
126
+ }
127
+ ),
128
+ /* @__PURE__ */ jsx("div", { className: "rpc_drag_sort_list_content", children: renderItem(item, idx, false) })
129
+ ] })
130
+ },
131
+ key
132
+ );
133
+ })
134
+ }
135
+ ),
136
+ dragIndex !== null && pointerCoord && dragItemRect && draggedItemData && typeof document !== "undefined" && ReactDOM.createPortal(
137
+ /* @__PURE__ */ jsxs(
138
+ "div",
139
+ {
140
+ className: "rpc_drag_sort_list_floating_ghost",
141
+ style: {
142
+ left: pointerCoord.x - grabOffset.x,
143
+ top: pointerCoord.y - grabOffset.y,
144
+ width: dragItemRect.width,
145
+ height: dragItemRect.height
146
+ },
147
+ children: [
148
+ showHandle && /* @__PURE__ */ jsx("span", { className: "rpc_drag_sort_list_handle", style: { cursor: "grabbing", color: "#1677ff" }, children: /* @__PURE__ */ jsx(HolderOutlined, {}) }),
149
+ /* @__PURE__ */ jsx("div", { className: "rpc_drag_sort_list_content", style: { flex: 1 }, children: renderItem(draggedItemData, dragIndex, true) })
150
+ ]
151
+ }
152
+ ),
153
+ document.body
154
+ )
155
+ ] });
156
+ }
157
+ var DragSortList_default = DragSortList;
158
+
159
+ export { DragSortList_default };
160
+ //# sourceMappingURL=chunk-Y54KVULF.js.map
161
+ //# sourceMappingURL=chunk-Y54KVULF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../DragSortList/index.tsx"],"names":[],"mappings":"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","file":"chunk-Y54KVULF.js","sourcesContent":["import React, { useState, useRef, useEffect, ReactNode, CSSProperties } from 'react';\nimport ReactDOM from 'react-dom';\nimport { HolderOutlined } from '../src/icons';\nimport './index.less';\n\nexport interface DragSortListProps<T> {\n\t/** 数据列表 */\n\titems: T[];\n\t/** 拖拽排序完成后的新列表回调 */\n\tonReorder: (newItems: T[], fromIndex: number, toIndex: number) => 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/** 是否仅允许通过左侧把手图标拖动,默认为 false */\n\thandleOnly?: boolean;\n\t/** 是否展示左侧拖拽把手图标,默认为 true */\n\tshowHandle?: boolean;\n\t/** 是否禁用拖拽排序,默认为 false */\n\tdisabled?: boolean;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nfunction arrayMove<T>(array: T[], from: number, to: number): T[] {\n\tconst next = [...array];\n\tconst [item] = next.splice(from, 1);\n\tnext.splice(to, 0, item);\n\treturn next;\n}\n\nfunction DragSortList<T>({\n\titems,\n\tonReorder,\n\tkeyExtractor,\n\trenderItem,\n\thandleOnly = false,\n\tshowHandle = true,\n\tdisabled = false,\n\tclassName = '',\n\tstyle,\n}: DragSortListProps<T>) {\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\n\t// 拖拽核心状态\n\tconst [dragIndex, setDragIndex] = useState<number | null>(null);\n\tconst [hoverIndex, setHoverIndex] = useState<number | null>(null);\n\tconst [pointerCoord, setPointerCoord] = useState<{ x: number; y: number } | null>(null);\n\tconst [grabOffset, setGrabOffset] = useState<{ x: number; y: number }>({ x: 0, y: 0 });\n\tconst [dragItemRect, setDragItemRect] = useState<{ width: number; height: number } | null>(null);\n\n\tconst dragIndexRef = useRef<number | null>(null);\n\tconst hoverIndexRef = useRef<number | null>(null);\n\tconst itemsRef = useRef<T[]>(items);\n\n\tdragIndexRef.current = dragIndex;\n\thoverIndexRef.current = hoverIndex;\n\titemsRef.current = items;\n\n\t// 处理鼠标按下发起拖拽\n\tconst handlePointerDown = (e: React.PointerEvent<HTMLElement>, index: number, fromHandle: boolean) => {\n\t\tif (disabled || e.button !== 0) return;\n\t\tif (handleOnly && !fromHandle) return;\n\n\t\tconst targetItemEl = e.currentTarget.closest('.rpc_drag_sort_list_item') as HTMLElement;\n\t\tif (!targetItemEl) return;\n\n\t\tconst rect = targetItemEl.getBoundingClientRect();\n\t\tconst offsetX = e.clientX - rect.left;\n\t\tconst offsetY = e.clientY - rect.top;\n\n\t\tsetGrabOffset({ x: offsetX, y: offsetY });\n\t\tsetDragItemRect({ width: rect.width, height: rect.height });\n\t\tsetPointerCoord({ x: e.clientX, y: e.clientY });\n\t\tsetDragIndex(index);\n\t\tsetHoverIndex(index);\n\n\t\tconst handlePointerMove = (moveEvent: PointerEvent) => {\n\t\t\tsetPointerCoord({ x: moveEvent.clientX, y: moveEvent.clientY });\n\n\t\t\tif (!containerRef.current) return;\n\t\t\tconst itemElements = Array.from(\n\t\t\t\tcontainerRef.current.querySelectorAll('.rpc_drag_sort_list_item'),\n\t\t\t) as HTMLElement[];\n\n\t\t\tif (itemElements.length === 0) return;\n\n\t\t\tconst pointerY = moveEvent.clientY;\n\t\t\tlet newHoverIndex = dragIndexRef.current ?? 0;\n\n\t\t\t// 精确检测鼠标当前所处的列表项插槽\n\t\t\tfor (let i = 0; i < itemElements.length; i++) {\n\t\t\t\tconst elRect = itemElements[i].getBoundingClientRect();\n\t\t\t\tif (pointerY >= elRect.top && pointerY <= elRect.bottom) {\n\t\t\t\t\tnewHoverIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (pointerY < itemElements[0].getBoundingClientRect().top) {\n\t\t\t\t\tnewHoverIndex = 0;\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (pointerY > itemElements[itemElements.length - 1].getBoundingClientRect().bottom) {\n\t\t\t\t\tnewHoverIndex = itemElements.length - 1;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHoverIndex !== hoverIndexRef.current) {\n\t\t\t\tsetHoverIndex(newHoverIndex);\n\t\t\t}\n\t\t};\n\n\t\tconst handlePointerUp = () => {\n\t\t\twindow.removeEventListener('pointermove', handlePointerMove);\n\t\t\twindow.removeEventListener('pointerup', handlePointerUp);\n\n\t\t\tconst from = dragIndexRef.current;\n\t\t\tconst to = hoverIndexRef.current;\n\t\t\tconst currentList = itemsRef.current;\n\n\t\t\tif (from !== null && to !== null && from !== to && from >= 0 && to >= 0 && from < currentList.length && to < currentList.length) {\n\t\t\t\tconst reorderedList = arrayMove(currentList, from, to);\n\t\t\t\tonReorder(reorderedList, from, to);\n\t\t\t}\n\n\t\t\tsetDragIndex(null);\n\t\t\tsetHoverIndex(null);\n\t\t\tsetPointerCoord(null);\n\t\t\tsetDragItemRect(null);\n\t\t};\n\n\t\twindow.addEventListener('pointermove', handlePointerMove);\n\t\twindow.addEventListener('pointerup', handlePointerUp);\n\t};\n\n\t// 动态计算实时预览重排后的列表\n\tconst displayItems =\n\t\tdragIndex !== null && hoverIndex !== null && dragIndex !== hoverIndex\n\t\t\t? arrayMove(items, dragIndex, hoverIndex)\n\t\t\t: items;\n\n\tconst draggedItemData = dragIndex !== null ? items[dragIndex] : null;\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tref={containerRef}\n\t\t\t\tclassName={`rpc_drag_sort_list ${disabled ? 'rpc_drag_sort_list_disabled' : ''} ${className}`}\n\t\t\t\tstyle={style}\n\t\t\t>\n\t\t\t\t{displayItems.map((item, idx) => {\n\t\t\t\t\tconst key = keyExtractor(item, idx);\n\t\t\t\t\tconst isCurrentPlaceholder = dragIndex !== null && hoverIndex === idx;\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\tonPointerDown={(e) => handlePointerDown(e, idx, false)}\n\t\t\t\t\t\t\tclassName={`rpc_drag_sort_list_item ${\n\t\t\t\t\t\t\t\tisCurrentPlaceholder ? 'rpc_drag_sort_list_item_placeholder' : ''\n\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\theight: isCurrentPlaceholder && dragItemRect ? dragItemRect.height : undefined,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{/* 当作为占位槽展示时,显示虚线卡槽 */}\n\t\t\t\t\t\t\t{isCurrentPlaceholder ? (\n\t\t\t\t\t\t\t\t<div className=\"rpc_drag_sort_list_placeholder_inner\">\n\t\t\t\t\t\t\t\t\t<div className=\"rpc_drag_sort_list_placeholder_line\" />\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\t<>\n\t\t\t\t\t\t\t\t\t{showHandle && (\n\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"rpc_drag_sort_list_handle\"\n\t\t\t\t\t\t\t\t\t\t\tonPointerDown={(e) => {\n\t\t\t\t\t\t\t\t\t\t\t\tif (handleOnly) {\n\t\t\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\t\t\thandlePointerDown(e, idx, true);\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}}\n\t\t\t\t\t\t\t\t\t\t\ttitle={disabled ? undefined : '按住拖动以重排序'}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<HolderOutlined />\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t<div className=\"rpc_drag_sort_list_content\">\n\t\t\t\t\t\t\t\t\t\t{renderItem(item, idx, false)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\n\t\t\t{/* 浮动随动幽灵卡片(全局悬浮脱离文档流,100% 顺畅跟手,绝对 0 跳动) */}\n\t\t\t{dragIndex !== null && pointerCoord && dragItemRect && draggedItemData && typeof document !== 'undefined' && (\n\t\t\t\tReactDOM.createPortal(\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"rpc_drag_sort_list_floating_ghost\"\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tleft: pointerCoord.x - grabOffset.x,\n\t\t\t\t\t\t\ttop: pointerCoord.y - grabOffset.y,\n\t\t\t\t\t\t\twidth: dragItemRect.width,\n\t\t\t\t\t\t\theight: dragItemRect.height,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{showHandle && (\n\t\t\t\t\t\t\t<span className=\"rpc_drag_sort_list_handle\" style={{ cursor: 'grabbing', color: '#1677ff' }}>\n\t\t\t\t\t\t\t\t<HolderOutlined />\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<div className=\"rpc_drag_sort_list_content\" style={{ flex: 1 }}>\n\t\t\t\t\t\t\t{renderItem(draggedItemData, dragIndex, true)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>,\n\t\t\t\t\tdocument.body,\n\t\t\t\t)\n\t\t\t)}\n\t\t</>\n\t);\n}\n\nexport default DragSortList;\n"]}
@@ -7,11 +7,7 @@ var statusIcons = {
7
7
  error: "\u2715",
8
8
  wait: "\u25CB"
9
9
  };
10
- var StatusTimeline = ({
11
- items = [],
12
- className = "",
13
- style
14
- }) => {
10
+ var StatusTimeline = ({ items = [], className = "", style }) => {
15
11
  return /* @__PURE__ */ jsx("div", { className: `rpc_status_timeline ${className}`, style, children: items.map((item, idx) => {
16
12
  const status = item.status || "finish";
17
13
  return /* @__PURE__ */ jsxs("div", { className: "rpc_status_timeline_item", children: [
@@ -43,5 +39,5 @@ var StatusTimeline = ({
43
39
  var StatusTimeline_default = StatusTimeline;
44
40
 
45
41
  export { StatusTimeline_default };
46
- //# sourceMappingURL=chunk-JD4TEUIV.js.map
47
- //# sourceMappingURL=chunk-JD4TEUIV.js.map
42
+ //# sourceMappingURL=chunk-YFHKH6HL.js.map
43
+ //# sourceMappingURL=chunk-YFHKH6HL.js.map
@@ -0,0 +1 @@
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,cAAA,GAAgD,CAAC,EAAE,KAAA,GAAQ,EAAC,EAAG,SAAA,GAAY,EAAA,EAAI,KAAA,EAAM,KAAM;AAChG,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-YFHKH6HL.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> = ({ items = [], className = '', style }) => {\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,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkQ4QF6UYX_cjs = require('./chunk-Q4QF6UYX.cjs');
3
+ var chunkR4V3EJVP_cjs = require('./chunk-R4V3EJVP.cjs');
4
4
  var react = require('react');
5
5
  var ReactDOM = require('react-dom');
6
6
  var jsxRuntime = require('react/jsx-runtime');
@@ -117,13 +117,7 @@ var GuidedTour = ({
117
117
  children: [
118
118
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rpc_guided_tour_header", children: [
119
119
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rpc_guided_tour_title", children: currentStep.title }),
120
- /* @__PURE__ */ jsxRuntime.jsx(
121
- chunkQ4QF6UYX_cjs.CloseOutlined,
122
- {
123
- style: { cursor: "pointer", color: "#8c8c8c" },
124
- onClick: handleSkip
125
- }
126
- )
120
+ /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.CloseOutlined, { style: { cursor: "pointer", color: "#8c8c8c" }, onClick: handleSkip })
127
121
  ] }),
128
122
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rpc_guided_tour_description", children: currentStep.description }),
129
123
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rpc_guided_tour_footer", children: [
@@ -155,5 +149,5 @@ var GuidedTour = ({
155
149
  var GuidedTour_default = GuidedTour;
156
150
 
157
151
  exports.GuidedTour_default = GuidedTour_default;
158
- //# sourceMappingURL=chunk-XYJMP23P.cjs.map
159
- //# sourceMappingURL=chunk-XYJMP23P.cjs.map
152
+ //# sourceMappingURL=chunk-YP4XTMK3.cjs.map
153
+ //# sourceMappingURL=chunk-YP4XTMK3.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../GuidedTour/index.tsx"],"names":["useState","useEffect","currentStep","ReactDOM","jsx","jsxs","CloseOutlined"],"mappings":"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","file":"chunk-YP4XTMK3.cjs","sourcesContent":["import React, { useState, useEffect, ReactNode, CSSProperties } from 'react';\nimport ReactDOM from 'react-dom';\nimport { CloseOutlined } from '../src/icons';\nimport './index.less';\n\nexport type TourPlacement = 'top' | 'bottom' | 'left' | 'right';\n\nexport interface TourStep {\n\t/** 目标 DOM 节点选择器、DOM 对象或获取函数 */\n\ttarget: string | HTMLElement | (() => HTMLElement | null) | null;\n\t/** 引导步骤标题 */\n\ttitle: ReactNode;\n\t/** 引导步骤详细说明 */\n\tdescription: ReactNode;\n\t/** 气泡对齐方向,默认为 'bottom' */\n\tplacement?: TourPlacement;\n}\n\nexport interface GuidedTourProps {\n\t/** 引导步骤列表 */\n\tsteps: TourStep[];\n\t/** 是否开启引导 */\n\topen: boolean;\n\t/** 当前步数(受控,可选) */\n\tcurrent?: number;\n\t/** 步数改变回调 */\n\tonChange?: (current: number) => void;\n\t/** 关闭/跳过引导回调 */\n\tonClose?: () => void;\n\t/** 全部引导完成回调 */\n\tonFinish?: () => void;\n\t/** LocalStorage 存储已完成状态的 Key(若提供则完成或跳过后自动持久化记录) */\n\tstorageKey?: string;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst GuidedTour: React.FC<GuidedTourProps> = ({\n\tsteps = [],\n\topen,\n\tcurrent: controlledCurrent,\n\tonChange,\n\tonClose,\n\tonFinish,\n\tstorageKey,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [internalCurrent, setInternalCurrent] = useState<number>(0);\n\tconst currentStepIndex = controlledCurrent !== undefined ? controlledCurrent : internalCurrent;\n\n\tconst [targetRect, setTargetRect] = useState<DOMRect | null>(null);\n\n\t// 获取当前步骤的目标 DOM\n\tconst getTargetElement = (step: TourStep): HTMLElement | null => {\n\t\tif (!step || !step.target) return null;\n\t\tif (typeof step.target === 'function') {\n\t\t\treturn step.target();\n\t\t}\n\t\tif (typeof step.target === 'string') {\n\t\t\treturn document.querySelector(step.target);\n\t\t}\n\t\treturn step.target;\n\t};\n\n\t// 计算目标节点坐标\n\tuseEffect(() => {\n\t\tif (!open || steps.length === 0) return;\n\n\t\tconst currentStep = steps[currentStepIndex];\n\t\tif (!currentStep) return;\n\n\t\tconst el = getTargetElement(currentStep);\n\t\tif (el) {\n\t\t\tconst rect = el.getBoundingClientRect();\n\t\t\tsetTargetRect(rect);\n\t\t\t// 自动平滑滚动到可见区域\n\t\t\tel.scrollIntoView({ behavior: 'smooth', block: 'center' });\n\t\t} else {\n\t\t\tsetTargetRect(null);\n\t\t}\n\t}, [open, steps, currentStepIndex]);\n\n\tif (!open || steps.length === 0) return null;\n\n\tconst currentStep = steps[currentStepIndex];\n\tif (!currentStep) return null;\n\n\tconst handleNext = () => {\n\t\tif (currentStepIndex < steps.length - 1) {\n\t\t\tconst next = currentStepIndex + 1;\n\t\t\tif (controlledCurrent === undefined) setInternalCurrent(next);\n\t\t\tonChange?.(next);\n\t\t} else {\n\t\t\tif (storageKey) localStorage.setItem(storageKey, 'true');\n\t\t\tonFinish?.();\n\t\t\tonClose?.();\n\t\t}\n\t};\n\n\tconst handlePrev = () => {\n\t\tif (currentStepIndex > 0) {\n\t\t\tconst prev = currentStepIndex - 1;\n\t\t\tif (controlledCurrent === undefined) setInternalCurrent(prev);\n\t\t\tonChange?.(prev);\n\t\t}\n\t};\n\n\tconst handleSkip = () => {\n\t\tif (storageKey) localStorage.setItem(storageKey, 'true');\n\t\tonClose?.();\n\t};\n\n\t// 气泡卡片定位计算\n\tlet popoverTop = 100;\n\tlet popoverLeft = 100;\n\n\tif (targetRect) {\n\t\tconst placement = currentStep.placement || 'bottom';\n\t\tconst padding = 12;\n\n\t\tif (placement === 'bottom') {\n\t\t\tpopoverTop = targetRect.bottom + padding;\n\t\t\tpopoverLeft = targetRect.left;\n\t\t} else if (placement === 'top') {\n\t\t\tpopoverTop = targetRect.top - 180 - padding;\n\t\t\tpopoverLeft = targetRect.left;\n\t\t} else if (placement === 'left') {\n\t\t\tpopoverTop = targetRect.top;\n\t\t\tpopoverLeft = targetRect.left - 320 - padding;\n\t\t} else if (placement === 'right') {\n\t\t\tpopoverTop = targetRect.top;\n\t\t\tpopoverLeft = targetRect.right + padding;\n\t\t}\n\n\t\t// 视口防溢出修正\n\t\tpopoverLeft = Math.max(16, Math.min(window.innerWidth - 340, popoverLeft));\n\t\tpopoverTop = Math.max(16, Math.min(window.innerHeight - 200, popoverTop));\n\t}\n\n\treturn ReactDOM.createPortal(\n\t\t<div className={`rpc_guided_tour ${className}`} style={style}>\n\t\t\t{/* 镂空高亮遮罩层 */}\n\t\t\t{targetRect && (\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"rpc_guided_tour_highlight_box\"\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tleft: `${targetRect.left - 4}px`,\n\t\t\t\t\t\ttop: `${targetRect.top - 4}px`,\n\t\t\t\t\t\twidth: `${targetRect.width + 8}px`,\n\t\t\t\t\t\theight: `${targetRect.height + 8}px`,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{/* 引导卡片 */}\n\t\t\t<div\n\t\t\t\tclassName=\"rpc_guided_tour_popover\"\n\t\t\t\tstyle={{\n\t\t\t\t\tleft: `${popoverLeft}px`,\n\t\t\t\t\ttop: `${popoverTop}px`,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div className=\"rpc_guided_tour_header\">\n\t\t\t\t\t<span className=\"rpc_guided_tour_title\">{currentStep.title}</span>\n\t\t\t\t\t<CloseOutlined style={{ cursor: 'pointer', color: '#8c8c8c' }} onClick={handleSkip} />\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"rpc_guided_tour_description\">{currentStep.description}</div>\n\n\t\t\t\t<div className=\"rpc_guided_tour_footer\">\n\t\t\t\t\t<span className=\"rpc_guided_tour_progress\">\n\t\t\t\t\t\t{currentStepIndex + 1} / {steps.length}\n\t\t\t\t\t</span>\n\n\t\t\t\t\t<div className=\"rpc_guided_tour_actions\">\n\t\t\t\t\t\t{currentStepIndex > 0 && (\n\t\t\t\t\t\t\t<button type=\"button\" className=\"rpc_guided_tour_btn\" onClick={handlePrev}>\n\t\t\t\t\t\t\t\t上一步\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName=\"rpc_guided_tour_btn rpc_guided_tour_btn_primary\"\n\t\t\t\t\t\t\tonClick={handleNext}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{currentStepIndex === steps.length - 1 ? '完成' : '下一步'}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>,\n\t\tdocument.body,\n\t);\n};\n\nexport default GuidedTour;\n"]}
@@ -1,4 +1,4 @@
1
- import { ZoomOutOutlined, ZoomInOutlined, RotateRightOutlined, DownloadOutlined } from './chunk-TGSKTHTV.js';
1
+ import { ZoomOutOutlined, ZoomInOutlined, RotateRightOutlined, DownloadOutlined } from './chunk-2IDVNTKR.js';
2
2
  import { useState } from 'react';
3
3
  import { jsxs, jsx } from 'react/jsx-runtime';
4
4
 
@@ -32,7 +32,16 @@ var PdfViewer = ({
32
32
  "%"
33
33
  ] }),
34
34
  /* @__PURE__ */ jsx("button", { type: "button", className: "rpc_pdf_viewer_btn", onClick: handleZoomIn, title: "\u653E\u5927", children: /* @__PURE__ */ jsx(ZoomInOutlined, {}) }),
35
- /* @__PURE__ */ jsx("button", { type: "button", className: "rpc_pdf_viewer_btn", onClick: handleRotate, title: "\u987A\u65F6\u9488\u65CB\u8F6C 90\xB0", children: /* @__PURE__ */ jsx(RotateRightOutlined, {}) }),
35
+ /* @__PURE__ */ jsx(
36
+ "button",
37
+ {
38
+ type: "button",
39
+ className: "rpc_pdf_viewer_btn",
40
+ onClick: handleRotate,
41
+ title: "\u987A\u65F6\u9488\u65CB\u8F6C 90\xB0",
42
+ children: /* @__PURE__ */ jsx(RotateRightOutlined, {})
43
+ }
44
+ ),
36
45
  showDownload && /* @__PURE__ */ jsxs("a", { href: src, download: true, className: "rpc_pdf_viewer_btn", title: "\u4E0B\u8F7D PDF", children: [
37
46
  /* @__PURE__ */ jsx(DownloadOutlined, {}),
38
47
  /* @__PURE__ */ jsx("span", { children: "\u4E0B\u8F7D" })
@@ -55,5 +64,5 @@ var PdfViewer = ({
55
64
  var PdfViewer_default = PdfViewer;
56
65
 
57
66
  export { PdfViewer_default };
58
- //# sourceMappingURL=chunk-7JRGQL63.js.map
59
- //# sourceMappingURL=chunk-7JRGQL63.js.map
67
+ //# sourceMappingURL=chunk-ZCBT56AG.js.map
68
+ //# sourceMappingURL=chunk-ZCBT56AG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../PdfViewer/index.tsx"],"names":[],"mappings":"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","file":"chunk-ZCBT56AG.js","sourcesContent":["import React, { useState, ReactNode, CSSProperties } from 'react';\nimport {\n\tZoomInOutlined,\n\tZoomOutOutlined,\n\tRotateRightOutlined,\n\tDownloadOutlined,\n} from '../src/icons';\nimport './index.less';\n\nexport interface PdfViewerProps {\n\t/** PDF 文件 URL 地址 */\n\tsrc: string;\n\t/** 文档标题 */\n\ttitle?: ReactNode;\n\t/** 宽度,默认为 '100%' */\n\twidth?: number | string;\n\t/** 高度,默认为 500 */\n\theight?: number | string;\n\t/** 是否显示下载按钮,默认为 true */\n\tshowDownload?: boolean;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst PdfViewer: React.FC<PdfViewerProps> = ({\n\tsrc,\n\ttitle = 'PDF Document Preview',\n\twidth = '100%',\n\theight = 500,\n\tshowDownload = true,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [zoom, setZoom] = useState<number>(100);\n\tconst [rotation, setRotation] = useState<number>(0);\n\n\tconst handleZoomIn = () => {\n\t\tsetZoom((prev) => Math.min(200, prev + 15));\n\t};\n\n\tconst handleZoomOut = () => {\n\t\tsetZoom((prev) => Math.max(50, prev - 15));\n\t};\n\n\tconst handleRotate = () => {\n\t\tsetRotation((prev) => (prev + 90) % 360);\n\t};\n\n\treturn (\n\t\t<div className={`rpc_pdf_viewer ${className}`} style={{ width, height, ...style }}>\n\t\t\t{/* 顶部工具栏 */}\n\t\t\t<div className=\"rpc_pdf_viewer_toolbar\">\n\t\t\t\t<span className=\"rpc_pdf_viewer_title\">{title}</span>\n\n\t\t\t\t<div className=\"rpc_pdf_viewer_actions\">\n\t\t\t\t\t<button type=\"button\" className=\"rpc_pdf_viewer_btn\" onClick={handleZoomOut} title=\"缩小\">\n\t\t\t\t\t\t<ZoomOutOutlined />\n\t\t\t\t\t</button>\n\n\t\t\t\t\t<span style={{ fontSize: 12, minWidth: 40, textAlign: 'center' }}>{zoom}%</span>\n\n\t\t\t\t\t<button type=\"button\" className=\"rpc_pdf_viewer_btn\" onClick={handleZoomIn} title=\"放大\">\n\t\t\t\t\t\t<ZoomInOutlined />\n\t\t\t\t\t</button>\n\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclassName=\"rpc_pdf_viewer_btn\"\n\t\t\t\t\t\tonClick={handleRotate}\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\n\t\t\t\t\t{showDownload && (\n\t\t\t\t\t\t<a href={src} download className=\"rpc_pdf_viewer_btn\" title=\"下载 PDF\">\n\t\t\t\t\t\t\t<DownloadOutlined />\n\t\t\t\t\t\t\t<span>下载</span>\n\t\t\t\t\t\t</a>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{/* PDF 内容嵌入容器 */}\n\t\t\t<div className=\"rpc_pdf_viewer_body\">\n\t\t\t\t<iframe\n\t\t\t\t\tsrc={`${src}#toolbar=0&navpanes=0`}\n\t\t\t\t\ttitle=\"PDF Preview Frame\"\n\t\t\t\t\tclassName=\"rpc_pdf_viewer_frame\"\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\ttransform: `scale(${zoom / 100}) rotate(${rotation}deg)`,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default PdfViewer;\n"]}
@@ -122,5 +122,5 @@ var ScrollTracker_default = ScrollTracker;
122
122
  exports.ScrollTracker = ScrollTracker;
123
123
  exports.ScrollTracker_default = ScrollTracker_default;
124
124
  exports.StickyHeader = StickyHeader;
125
- //# sourceMappingURL=chunk-GCMI5JGQ.cjs.map
126
- //# sourceMappingURL=chunk-GCMI5JGQ.cjs.map
125
+ //# sourceMappingURL=chunk-ZKM664KC.cjs.map
126
+ //# sourceMappingURL=chunk-ZKM664KC.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../ScrollTracker/index.tsx"],"names":["useState","useEffect","targetEl","jsxs","jsx","useRef","Fragment"],"mappings":"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","file":"chunk-ZKM664KC.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 && <span className=\"rpc_scroll_tracker_percentage\">{percent}%</span>}\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"]}
@@ -47,15 +47,7 @@ function VirtualList({
47
47
  children: visibleItems.map((item, idx) => {
48
48
  const actualIndex = startIndex + idx;
49
49
  const key = keyExtractor ? keyExtractor(item, actualIndex) : actualIndex;
50
- return /* @__PURE__ */ jsxRuntime.jsx(
51
- "div",
52
- {
53
- className: "rpc_virtual_list_item",
54
- style: { height: itemHeight },
55
- children: renderItem(item, actualIndex)
56
- },
57
- key
58
- );
50
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rpc_virtual_list_item", style: { height: itemHeight }, children: renderItem(item, actualIndex) }, key);
59
51
  })
60
52
  }
61
53
  )
@@ -65,5 +57,5 @@ function VirtualList({
65
57
  var VirtualList_default = VirtualList;
66
58
 
67
59
  exports.VirtualList_default = VirtualList_default;
68
- //# sourceMappingURL=chunk-24ND5WB7.cjs.map
69
- //# sourceMappingURL=chunk-24ND5WB7.cjs.map
60
+ //# sourceMappingURL=chunk-ZVSN7ADO.cjs.map
61
+ //# sourceMappingURL=chunk-ZVSN7ADO.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../VirtualList/index.tsx"],"names":["useState","useRef","useMemo","jsx"],"mappings":";;;;;;AAsBA,SAAS,WAAA,CAAe;AAAA,EACvB,QAAQ,EAAC;AAAA,EACT,UAAA,GAAa,EAAA;AAAA,EACb,MAAA,GAAS,GAAA;AAAA,EACT,UAAA;AAAA,EACA,YAAA;AAAA,EACA,MAAA,GAAS,CAAA;AAAA,EACT,SAAA,GAAY,EAAA;AAAA,EACZ;AACD,CAAA,EAAwB;AACvB,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,eAAiB,CAAC,CAAA;AACpD,EAAA,MAAM,YAAA,GAAeC,aAAuB,IAAI,CAAA;AAEhD,EAAA,MAAM,aAAa,KAAA,CAAM,MAAA;AACzB,EAAA,MAAM,cAAc,UAAA,GAAa,UAAA;AAGjC,EAAA,MAAM,EAAE,UAAA,EAAY,QAAA,EAAU,OAAA,EAAQ,GAAIC,cAAQ,MAAM;AACvD,IAAA,MAAM,KAAA,GAAQ,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,KAAA,CAAM,SAAA,GAAY,UAAU,CAAA,GAAI,MAAM,CAAA;AACrE,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,UAAU,CAAA;AAClD,IAAA,MAAM,MAAM,IAAA,CAAK,GAAA,CAAI,YAAY,KAAA,GAAQ,YAAA,GAAe,SAAS,CAAC,CAAA;AAClE,IAAA,MAAM,SAAS,KAAA,GAAQ,UAAA;AAEvB,IAAA,OAAO,EAAE,UAAA,EAAY,KAAA,EAAO,QAAA,EAAU,GAAA,EAAK,SAAS,MAAA,EAAO;AAAA,EAC5D,GAAG,CAAC,SAAA,EAAW,YAAY,MAAA,EAAQ,MAAA,EAAQ,UAAU,CAAC,CAAA;AAEtD,EAAA,MAAM,YAAA,GAAe,KAAA,CAAM,KAAA,CAAM,UAAA,EAAY,QAAQ,CAAA;AAErD,EAAA,MAAM,YAAA,GAAe,CAAC,CAAA,KAAqC;AAC1D,IAAA,YAAA,CAAa,CAAA,CAAE,cAAc,SAAS,CAAA;AAAA,EACvC,CAAA;AAEA,EAAA,uBACCC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,GAAA,EAAK,YAAA;AAAA,MACL,QAAA,EAAU,YAAA;AAAA,MACV,SAAA,EAAW,oBAAoB,SAAS,CAAA,CAAA;AAAA,MACxC,KAAA,EAAO,EAAE,MAAA,EAAQ,GAAG,KAAA,EAAM;AAAA,MAE1B,QAAA,kBAAAA,cAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACA,SAAA,EAAU,0BAAA;AAAA,UACV,KAAA,EAAO;AAAA,YACN,MAAA,EAAQ,WAAA;AAAA,YACR,UAAA,EAAY;AAAA,WACb;AAAA,UAEC,QAAA,EAAA,YAAA,CAAa,GAAA,CAAI,CAAC,IAAA,EAAM,GAAA,KAAQ;AAChC,YAAA,MAAM,cAAc,UAAA,GAAa,GAAA;AACjC,YAAA,MAAM,GAAA,GAAM,YAAA,GAAe,YAAA,CAAa,IAAA,EAAM,WAAW,CAAA,GAAI,WAAA;AAE7D,YAAA,uBACCA,cAAA,CAAC,KAAA,EAAA,EAAc,SAAA,EAAU,uBAAA,EAAwB,KAAA,EAAO,EAAE,MAAA,EAAQ,UAAA,EAAW,EAC3E,QAAA,EAAA,UAAA,CAAW,IAAA,EAAM,WAAW,KADpB,GAEV,CAAA;AAAA,UAEF,CAAC;AAAA;AAAA;AACF;AAAA,GACD;AAEF;AAEA,IAAO,mBAAA,GAAQ","file":"chunk-ZVSN7ADO.cjs","sourcesContent":["import React, { useState, useRef, useMemo, ReactNode, CSSProperties } from 'react';\nimport './index.less';\n\nexport interface VirtualListProps<T> {\n\t/** 数据源数组 */\n\titems: T[];\n\t/** 单个列表项固定高度(像素),默认为 48 */\n\titemHeight?: number;\n\t/** 滚动容器可视高度(像素),默认为 360 */\n\theight?: number;\n\t/** 自定义渲染单个列表项 */\n\trenderItem: (item: T, index: number) => ReactNode;\n\t/** 提取唯一 Key */\n\tkeyExtractor?: (item: T, index: number) => string | number;\n\t/** 上下视口外额外渲染的缓冲项数量,默认为 5 */\n\tbuffer?: number;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nfunction VirtualList<T>({\n\titems = [],\n\titemHeight = 48,\n\theight = 360,\n\trenderItem,\n\tkeyExtractor,\n\tbuffer = 5,\n\tclassName = '',\n\tstyle,\n}: VirtualListProps<T>) {\n\tconst [scrollTop, setScrollTop] = useState<number>(0);\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\n\tconst totalCount = items.length;\n\tconst totalHeight = totalCount * itemHeight;\n\n\t// 计算当前可视区域的起止索引\n\tconst { startIndex, endIndex, offsetY } = useMemo(() => {\n\t\tconst start = Math.max(0, Math.floor(scrollTop / itemHeight) - buffer);\n\t\tconst visibleCount = Math.ceil(height / itemHeight);\n\t\tconst end = Math.min(totalCount, start + visibleCount + buffer * 2);\n\t\tconst offset = start * itemHeight;\n\n\t\treturn { startIndex: start, endIndex: end, offsetY: offset };\n\t}, [scrollTop, itemHeight, height, buffer, totalCount]);\n\n\tconst visibleItems = items.slice(startIndex, endIndex);\n\n\tconst handleScroll = (e: React.UIEvent<HTMLDivElement>) => {\n\t\tsetScrollTop(e.currentTarget.scrollTop);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tonScroll={handleScroll}\n\t\t\tclassName={`rpc_virtual_list ${className}`}\n\t\t\tstyle={{ height, ...style }}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName=\"rpc_virtual_list_content\"\n\t\t\t\tstyle={{\n\t\t\t\t\theight: totalHeight,\n\t\t\t\t\tpaddingTop: offsetY,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{visibleItems.map((item, idx) => {\n\t\t\t\t\tconst actualIndex = startIndex + idx;\n\t\t\t\t\tconst key = keyExtractor ? keyExtractor(item, actualIndex) : actualIndex;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div key={key} className=\"rpc_virtual_list_item\" style={{ height: itemHeight }}>\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"]}