react-public-components 1.2.3 → 1.2.5

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 (238) hide show
  1. package/README.md +5 -2
  2. package/dist/AnnouncementBar/index.cjs +3 -2
  3. package/dist/AnnouncementBar/index.css +102 -11
  4. package/dist/AnnouncementBar/index.css.map +1 -1
  5. package/dist/AnnouncementBar/index.d.ts +22 -3
  6. package/dist/AnnouncementBar/index.js +2 -1
  7. package/dist/AudioPlayer/index.cjs +3 -3
  8. package/dist/AudioPlayer/index.js +2 -2
  9. package/dist/CeilingBox/index.cjs +9 -0
  10. package/dist/CeilingBox/index.cjs.map +1 -0
  11. package/dist/CeilingBox/index.css +25 -0
  12. package/dist/CeilingBox/index.css.map +1 -0
  13. package/dist/CeilingBox/index.d.ts +28 -0
  14. package/dist/CeilingBox/index.js +3 -0
  15. package/dist/CeilingBox/index.js.map +1 -0
  16. package/dist/CodeSnippet/index.cjs +3 -2
  17. package/dist/CodeSnippet/index.css +157 -0
  18. package/dist/CodeSnippet/index.css.map +1 -1
  19. package/dist/CodeSnippet/index.d.ts +40 -4
  20. package/dist/CodeSnippet/index.js +2 -1
  21. package/dist/CodeSnippet/sandbox.d.ts +26 -0
  22. package/dist/CollapseBox/index.cjs +3 -3
  23. package/dist/CollapseBox/index.js +2 -2
  24. package/dist/ColorPicker/index.cjs +5 -5
  25. package/dist/ColorPicker/index.js +2 -2
  26. package/dist/ContextMenu/index.cjs +3 -3
  27. package/dist/ContextMenu/index.js +2 -2
  28. package/dist/CopyButton/index.cjs +3 -3
  29. package/dist/CopyButton/index.js +2 -2
  30. package/dist/CronPicker/index.cjs +4 -4
  31. package/dist/CronPicker/index.js +3 -3
  32. package/dist/DebounceSelect/index.cjs +3 -3
  33. package/dist/DebounceSelect/index.js +2 -2
  34. package/dist/DisabledBox/index.cjs +3 -3
  35. package/dist/DisabledBox/index.js +2 -2
  36. package/dist/DragSortList/index.cjs +3 -2
  37. package/dist/DragSortList/index.css +82 -13
  38. package/dist/DragSortList/index.css.map +1 -1
  39. package/dist/DragSortList/index.d.ts +8 -2
  40. package/dist/DragSortList/index.js +2 -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/JsonEditor/index.cjs +4 -4
  52. package/dist/JsonEditor/index.js +3 -3
  53. package/dist/KeyValEditor/index.cjs +3 -3
  54. package/dist/KeyValEditor/index.js +2 -2
  55. package/dist/LazyLoadBox/index.cjs +18 -0
  56. package/dist/LazyLoadBox/index.cjs.map +1 -0
  57. package/dist/LazyLoadBox/index.css +57 -0
  58. package/dist/LazyLoadBox/index.css.map +1 -0
  59. package/dist/LazyLoadBox/index.d.ts +104 -0
  60. package/dist/LazyLoadBox/index.js +3 -0
  61. package/dist/LazyLoadBox/index.js.map +1 -0
  62. package/dist/PasswordStrength/index.cjs +4 -4
  63. package/dist/PasswordStrength/index.js +2 -2
  64. package/dist/PdfViewer/index.cjs +3 -3
  65. package/dist/PdfViewer/index.js +2 -2
  66. package/dist/PeriodSelect/index.cjs +22 -0
  67. package/dist/PeriodSelect/index.cjs.map +1 -0
  68. package/dist/PeriodSelect/index.css +88 -0
  69. package/dist/PeriodSelect/index.css.map +1 -0
  70. package/dist/PeriodSelect/index.d.ts +36 -0
  71. package/dist/PeriodSelect/index.js +3 -0
  72. package/dist/PeriodSelect/index.js.map +1 -0
  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/SensitiveMask/index.cjs +5 -5
  79. package/dist/SensitiveMask/index.js +3 -3
  80. package/dist/Splitter/index.cjs +3 -3
  81. package/dist/Splitter/index.js +2 -2
  82. package/dist/TagInput/index.cjs +3 -3
  83. package/dist/TagInput/index.js +2 -2
  84. package/dist/TextEllipsis/index.cjs +4 -4
  85. package/dist/TextEllipsis/index.js +3 -3
  86. package/dist/TreeTransfer/index.cjs +3 -3
  87. package/dist/TreeTransfer/index.js +2 -2
  88. package/dist/VideoPlayer/index.cjs +3 -3
  89. package/dist/VideoPlayer/index.js +2 -2
  90. package/dist/{chunk-GV2RRQ2S.cjs → chunk-2EIAWXFA.cjs} +5 -5
  91. package/dist/{chunk-GV2RRQ2S.cjs.map → chunk-2EIAWXFA.cjs.map} +1 -1
  92. package/dist/{chunk-ISUXPTLV.js → chunk-2IDVNTKR.js} +93 -3
  93. package/dist/chunk-2IDVNTKR.js.map +1 -0
  94. package/dist/{chunk-6FVAQECF.js → chunk-2INP6NM4.js} +3 -3
  95. package/dist/{chunk-6FVAQECF.js.map → chunk-2INP6NM4.js.map} +1 -1
  96. package/dist/chunk-4KMVABTM.js +419 -0
  97. package/dist/chunk-4KMVABTM.js.map +1 -0
  98. package/dist/{chunk-VS2YVJOB.cjs → chunk-4TMBGQQE.cjs} +5 -5
  99. package/dist/{chunk-VS2YVJOB.cjs.map → chunk-4TMBGQQE.cjs.map} +1 -1
  100. package/dist/{chunk-PJB7ADK6.js → chunk-56VELHCH.js} +3 -3
  101. package/dist/{chunk-PJB7ADK6.js.map → chunk-56VELHCH.js.map} +1 -1
  102. package/dist/chunk-5Q7THN6M.js +115 -0
  103. package/dist/chunk-5Q7THN6M.js.map +1 -0
  104. package/dist/{chunk-4BDO5TJH.cjs → chunk-77ANKL4K.cjs} +8 -8
  105. package/dist/{chunk-4BDO5TJH.cjs.map → chunk-77ANKL4K.cjs.map} +1 -1
  106. package/dist/{chunk-OCN7L2ID.cjs → chunk-7ZBA4NHH.cjs} +4 -4
  107. package/dist/{chunk-OCN7L2ID.cjs.map → chunk-7ZBA4NHH.cjs.map} +1 -1
  108. package/dist/{chunk-MY4M7HVW.cjs → chunk-AHTRLNYK.cjs} +5 -5
  109. package/dist/{chunk-MY4M7HVW.cjs.map → chunk-AHTRLNYK.cjs.map} +1 -1
  110. package/dist/{chunk-WEOMKZC6.js → chunk-ANTFNDH4.js} +3 -3
  111. package/dist/{chunk-WEOMKZC6.js.map → chunk-ANTFNDH4.js.map} +1 -1
  112. package/dist/{chunk-EGZSSZBX.js → chunk-AXPVN2OO.js} +3 -3
  113. package/dist/{chunk-EGZSSZBX.js.map → chunk-AXPVN2OO.js.map} +1 -1
  114. package/dist/{chunk-LLWK5VKA.js → chunk-CURWX7OY.js} +3 -3
  115. package/dist/{chunk-LLWK5VKA.js.map → chunk-CURWX7OY.js.map} +1 -1
  116. package/dist/{chunk-WZRUBHS3.cjs → chunk-ED3ZG2VX.cjs} +5 -5
  117. package/dist/{chunk-WZRUBHS3.cjs.map → chunk-ED3ZG2VX.cjs.map} +1 -1
  118. package/dist/{chunk-BZXMWKD2.js → chunk-EDNBPLUS.js} +3 -3
  119. package/dist/{chunk-BZXMWKD2.js.map → chunk-EDNBPLUS.js.map} +1 -1
  120. package/dist/{chunk-MC3NERDH.js → chunk-EJYTTSW6.js} +3 -3
  121. package/dist/{chunk-MC3NERDH.js.map → chunk-EJYTTSW6.js.map} +1 -1
  122. package/dist/{chunk-3UNZXPOT.cjs → chunk-EKDJPOA3.cjs} +5 -5
  123. package/dist/{chunk-3UNZXPOT.cjs.map → chunk-EKDJPOA3.cjs.map} +1 -1
  124. package/dist/{chunk-XWXFENGT.js → chunk-EMT4NUI5.js} +3 -3
  125. package/dist/{chunk-XWXFENGT.js.map → chunk-EMT4NUI5.js.map} +1 -1
  126. package/dist/{chunk-HFPWBZID.js → chunk-ETFLLRTO.js} +3 -3
  127. package/dist/{chunk-HFPWBZID.js.map → chunk-ETFLLRTO.js.map} +1 -1
  128. package/dist/chunk-FZH5FL7X.cjs +167 -0
  129. package/dist/chunk-FZH5FL7X.cjs.map +1 -0
  130. package/dist/{chunk-6UKUAYN3.cjs → chunk-HKALWFWZ.cjs} +5 -5
  131. package/dist/{chunk-6UKUAYN3.cjs.map → chunk-HKALWFWZ.cjs.map} +1 -1
  132. package/dist/{chunk-IBOCJ2ZS.js → chunk-IF4XAUV3.js} +3 -3
  133. package/dist/{chunk-IBOCJ2ZS.js.map → chunk-IF4XAUV3.js.map} +1 -1
  134. package/dist/{chunk-MNY5P5EG.cjs → chunk-IPS7PC3M.cjs} +13 -13
  135. package/dist/{chunk-MNY5P5EG.cjs.map → chunk-IPS7PC3M.cjs.map} +1 -1
  136. package/dist/{chunk-V4O325BX.cjs → chunk-JHVPDKBM.cjs} +6 -6
  137. package/dist/{chunk-V4O325BX.cjs.map → chunk-JHVPDKBM.cjs.map} +1 -1
  138. package/dist/{chunk-6IXVUD2M.js → chunk-JNA5AQ2K.js} +3 -3
  139. package/dist/{chunk-6IXVUD2M.js.map → chunk-JNA5AQ2K.js.map} +1 -1
  140. package/dist/{chunk-NJIYP6SC.cjs → chunk-LFGBZXQH.cjs} +4 -4
  141. package/dist/{chunk-NJIYP6SC.cjs.map → chunk-LFGBZXQH.cjs.map} +1 -1
  142. package/dist/{chunk-ZLWY7QS2.cjs → chunk-M3GQ7RCV.cjs} +4 -4
  143. package/dist/{chunk-ZLWY7QS2.cjs.map → chunk-M3GQ7RCV.cjs.map} +1 -1
  144. package/dist/{chunk-AFR7V4A4.js → chunk-M4FZJALR.js} +4 -4
  145. package/dist/{chunk-AFR7V4A4.js.map → chunk-M4FZJALR.js.map} +1 -1
  146. package/dist/{chunk-CT66HLZ5.js → chunk-MQJBUHDB.js} +3 -3
  147. package/dist/{chunk-CT66HLZ5.js.map → chunk-MQJBUHDB.js.map} +1 -1
  148. package/dist/chunk-O4EABET3.js +89 -0
  149. package/dist/chunk-O4EABET3.js.map +1 -0
  150. package/dist/{chunk-V7IUSCQS.js → chunk-OLLVIQPL.js} +3 -3
  151. package/dist/{chunk-V7IUSCQS.js.map → chunk-OLLVIQPL.js.map} +1 -1
  152. package/dist/{chunk-2DIU347W.cjs → chunk-OONBZRPV.cjs} +4 -4
  153. package/dist/{chunk-2DIU347W.cjs.map → chunk-OONBZRPV.cjs.map} +1 -1
  154. package/dist/{chunk-56TD4LDC.js → chunk-P5CS7V4W.js} +3 -3
  155. package/dist/{chunk-56TD4LDC.js.map → chunk-P5CS7V4W.js.map} +1 -1
  156. package/dist/{chunk-HUXPCMNP.js → chunk-PTFKE67K.js} +3 -3
  157. package/dist/{chunk-HUXPCMNP.js.map → chunk-PTFKE67K.js.map} +1 -1
  158. package/dist/{chunk-PUTAVQJZ.js → chunk-PUMVD7CP.js} +3 -3
  159. package/dist/{chunk-PUTAVQJZ.js.map → chunk-PUMVD7CP.js.map} +1 -1
  160. package/dist/{chunk-KXZM322K.cjs → chunk-PYCSRJSF.cjs} +7 -7
  161. package/dist/{chunk-KXZM322K.cjs.map → chunk-PYCSRJSF.cjs.map} +1 -1
  162. package/dist/{chunk-PUJJHD22.js → chunk-Q7OVUH5K.js} +3 -3
  163. package/dist/{chunk-PUJJHD22.js.map → chunk-Q7OVUH5K.js.map} +1 -1
  164. package/dist/{chunk-2UCTE6YN.cjs → chunk-QP3RKA4J.cjs} +4 -4
  165. package/dist/{chunk-2UCTE6YN.cjs.map → chunk-QP3RKA4J.cjs.map} +1 -1
  166. package/dist/{chunk-OKCQZO5E.js → chunk-QRZ2GVVJ.js} +3 -3
  167. package/dist/{chunk-OKCQZO5E.js.map → chunk-QRZ2GVVJ.js.map} +1 -1
  168. package/dist/chunk-QU33CY3M.cjs +83 -0
  169. package/dist/chunk-QU33CY3M.cjs.map +1 -0
  170. package/dist/{chunk-MBOWSS4B.cjs → chunk-R4V3EJVP.cjs} +98 -2
  171. package/dist/chunk-R4V3EJVP.cjs.map +1 -0
  172. package/dist/chunk-RFTYEXKU.js +79 -0
  173. package/dist/chunk-RFTYEXKU.js.map +1 -0
  174. package/dist/{chunk-4OXVTRYV.cjs → chunk-RN5WU7KA.cjs} +7 -7
  175. package/dist/{chunk-4OXVTRYV.cjs.map → chunk-RN5WU7KA.cjs.map} +1 -1
  176. package/dist/{chunk-WWXBH57R.cjs → chunk-TNZ2OLGW.cjs} +4 -4
  177. package/dist/{chunk-WWXBH57R.cjs.map → chunk-TNZ2OLGW.cjs.map} +1 -1
  178. package/dist/chunk-TUDLE3RT.cjs +429 -0
  179. package/dist/chunk-TUDLE3RT.cjs.map +1 -0
  180. package/dist/{chunk-B7NN6SZD.cjs → chunk-TUEVILTA.cjs} +5 -5
  181. package/dist/{chunk-B7NN6SZD.cjs.map → chunk-TUEVILTA.cjs.map} +1 -1
  182. package/dist/{chunk-ZUW3XLZQ.cjs → chunk-U2EBNBGK.cjs} +4 -4
  183. package/dist/{chunk-ZUW3XLZQ.cjs.map → chunk-U2EBNBGK.cjs.map} +1 -1
  184. package/dist/{chunk-JAW7Q2YC.cjs → chunk-UAUP5TJK.cjs} +5 -5
  185. package/dist/{chunk-JAW7Q2YC.cjs.map → chunk-UAUP5TJK.cjs.map} +1 -1
  186. package/dist/chunk-UIU6VCEQ.cjs +117 -0
  187. package/dist/chunk-UIU6VCEQ.cjs.map +1 -0
  188. package/dist/{chunk-2MDYHFLH.cjs → chunk-UZB7GOEI.cjs} +4 -4
  189. package/dist/{chunk-2MDYHFLH.cjs.map → chunk-UZB7GOEI.cjs.map} +1 -1
  190. package/dist/chunk-V55FEQYU.cjs +196 -0
  191. package/dist/chunk-V55FEQYU.cjs.map +1 -0
  192. package/dist/{chunk-ZNFW6L3E.cjs → chunk-VJOO2DG3.cjs} +8 -8
  193. package/dist/{chunk-ZNFW6L3E.cjs.map → chunk-VJOO2DG3.cjs.map} +1 -1
  194. package/dist/chunk-VYPIRVL4.js +193 -0
  195. package/dist/chunk-VYPIRVL4.js.map +1 -0
  196. package/dist/{chunk-JECYRODB.js → chunk-W5JA3YTT.js} +3 -3
  197. package/dist/{chunk-JECYRODB.js.map → chunk-W5JA3YTT.js.map} +1 -1
  198. package/dist/{chunk-QZZGBUW4.js → chunk-WKF4C6TJ.js} +3 -3
  199. package/dist/{chunk-QZZGBUW4.js.map → chunk-WKF4C6TJ.js.map} +1 -1
  200. package/dist/{chunk-64LBDDZU.js → chunk-XLOGMDAQ.js} +3 -3
  201. package/dist/{chunk-64LBDDZU.js.map → chunk-XLOGMDAQ.js.map} +1 -1
  202. package/dist/chunk-XUAHWX6B.js +153 -0
  203. package/dist/chunk-XUAHWX6B.js.map +1 -0
  204. package/dist/chunk-Y54KVULF.js +161 -0
  205. package/dist/chunk-Y54KVULF.js.map +1 -0
  206. package/dist/{chunk-NUTVJGVT.cjs → chunk-YP4XTMK3.cjs} +4 -4
  207. package/dist/{chunk-NUTVJGVT.cjs.map → chunk-YP4XTMK3.cjs.map} +1 -1
  208. package/dist/{chunk-MGUNFP6P.js → chunk-ZCBT56AG.js} +3 -3
  209. package/dist/{chunk-MGUNFP6P.js.map → chunk-ZCBT56AG.js.map} +1 -1
  210. package/dist/chunk-ZWKUHYTV.cjs +155 -0
  211. package/dist/chunk-ZWKUHYTV.cjs.map +1 -0
  212. package/dist/chunk-ZXMFWVE4.cjs +91 -0
  213. package/dist/chunk-ZXMFWVE4.cjs.map +1 -0
  214. package/dist/index.cjs +139 -104
  215. package/dist/index.css +633 -56
  216. package/dist/index.css.map +1 -1
  217. package/dist/index.js +40 -37
  218. package/dist/src/icons.d.ts +18 -0
  219. package/dist/src/index.d.ts +10 -2
  220. package/package.json +1 -1
  221. package/dist/chunk-5VSEUDVY.js +0 -45
  222. package/dist/chunk-5VSEUDVY.js.map +0 -1
  223. package/dist/chunk-5YQVSOHK.js +0 -44
  224. package/dist/chunk-5YQVSOHK.js.map +0 -1
  225. package/dist/chunk-B3HZIYQQ.cjs +0 -46
  226. package/dist/chunk-B3HZIYQQ.cjs.map +0 -1
  227. package/dist/chunk-EOGYWPX7.cjs +0 -47
  228. package/dist/chunk-EOGYWPX7.cjs.map +0 -1
  229. package/dist/chunk-EQ7S5SYM.js +0 -67
  230. package/dist/chunk-EQ7S5SYM.js.map +0 -1
  231. package/dist/chunk-FYFL4PFD.cjs +0 -69
  232. package/dist/chunk-FYFL4PFD.cjs.map +0 -1
  233. package/dist/chunk-ISUXPTLV.js.map +0 -1
  234. package/dist/chunk-JEDW76LI.cjs +0 -107
  235. package/dist/chunk-JEDW76LI.cjs.map +0 -1
  236. package/dist/chunk-MBOWSS4B.cjs.map +0 -1
  237. package/dist/chunk-XOMV26WS.js +0 -105
  238. package/dist/chunk-XOMV26WS.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../Splitter/index.tsx"],"names":[],"mappings":"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","file":"chunk-JECYRODB.js","sourcesContent":["import { DownOutlined, LeftOutlined, RightOutlined, UpOutlined } from '../src/icons';\nimport type {\n\tCSSProperties,\n\tReactElement,\n\tReactNode,\n\tPointerEvent as ReactPointerEvent,\n} from 'react';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nexport type SplitterSize = number | `${number}%`;\nexport type SplitterOrientation = 'horizontal' | 'vertical';\n\nexport type SplitterCollapsible =\n\t| boolean\n\t| {\n\t\t\tstart?: boolean;\n\t\t\tend?: boolean;\n\t\t\tshowCollapsibleIcon?: boolean | 'auto';\n\t };\n\n/**\n * Splitter.Panel 子面板组件属性\n */\nexport type SplitterPanelProps = {\n\t/** 面板内容节点 */\n\tchildren?: ReactNode;\n\t/** 面板自定义类名 */\n\tclassName?: string;\n\t/**\n\t * 折叠配置:\n\t * - `boolean`: 是否允许两端折叠\n\t * - `Object`: `{ start?: boolean; end?: boolean; showCollapsibleIcon?: boolean | 'auto' }`\n\t */\n\tcollapsible?: SplitterCollapsible;\n\t/** 面板初始默认尺寸(支持数字 px 或百分比字符串如 '40%') */\n\tdefaultSize?: SplitterSize;\n\t/** 折叠/隐藏时是否销毁面板内容节点(可覆盖 Splitter 根容器上的 destroyOnHidden 属性) */\n\tdestroyOnHidden?: boolean;\n\t/** 面板最大允许尺寸限制 */\n\tmax?: SplitterSize;\n\t/** 面板最小允许尺寸限制 */\n\tmin?: SplitterSize;\n\t/** 是否允许通过分隔条拖拽调整大小(默认 true) */\n\tresizable?: boolean;\n\t/** 面板受控尺寸 */\n\tsize?: SplitterSize;\n\t/** 面板自定义 CSS 样式 */\n\tstyle?: CSSProperties;\n};\n\nexport type SplitterSemanticDOM = 'root' | 'panel' | 'dragger';\n/** 语义化 DOM 结构标识 */\nexport type SemanticDOM = SplitterSemanticDOM;\n\nexport type SplitterStyles =\n\t| Partial<Record<SplitterSemanticDOM, CSSProperties>>\n\t| ((info: { props: SplitterProps }) => Partial<Record<SplitterSemanticDOM, CSSProperties>>);\n\nexport type SplitterClassNames =\n\t| Partial<Record<SplitterSemanticDOM, string>>\n\t| ((info: { props: SplitterProps }) => Partial<Record<SplitterSemanticDOM, string>>);\n\n/**\n * Splitter 根容器组件属性\n */\nexport type SplitterProps = {\n\t/** 面板集合(建议传入 Splitter.Panel) */\n\tchildren?: ReactNode;\n\t/** 容器根节点自定义类名 */\n\tclassName?: string;\n\t/** 用于自定义组件内部各语义化结构(root、panel、dragger)的 class,支持对象或函数 */\n\tclassNames?: SplitterClassNames;\n\t/** 折叠/隐藏时是否销毁面板内容节点(默认 false,保留组件状态) */\n\tdestroyOnHidden?: boolean;\n\t/** 拖拽分隔条的宽度/高度(单位 px,默认 4) */\n\tdraggerSize?: number;\n\t/** 是否在拖拽结束时才更新视图(默认 false) */\n\tlazy?: boolean;\n\t/** 面板展开或折叠状态改变时的回调 */\n\tonCollapse?: (collapsed: boolean[], sizes: number[]) => void;\n\t/** 拖拽过程中的实时尺寸变化回调 */\n\tonResize?: (sizes: number[]) => void;\n\t/** 拖拽结束、重置尺寸或折叠完成时的回调 */\n\tonResizeEnd?: (sizes: number[]) => void;\n\t/** 开始拖拽分隔条时的回调 */\n\tonResizeStart?: (sizes: number[]) => void;\n\t/** 双击拖拽条回调 */\n\tonDraggerDoubleClick?: (index: number) => void;\n\t/** 分屏方向:'horizontal'(水平分屏)| 'vertical'(垂直分屏),默认 'horizontal' */\n\torientation?: SplitterOrientation;\n\t/** 容器根节点自定义 CSS 样式 */\n\tstyle?: CSSProperties;\n\t/** 容器根节点及各语义化结构(root、panel、dragger)自定义 CSS 样式,支持对象或函数 */\n\tstyles?: SplitterStyles;\n\t/** 是否垂直分屏(orientation=\"vertical\" 的简写形式) 排列方向,与 orientation 同时存在,以 orientation 优先 */\n\tvertical?: boolean;\n\t/** 自定义拖拽手柄图标/节点 */\n\tdraggerIcon?: ReactNode;\n};\n\nexport interface ResolvedCollapsible {\n\tstart: boolean;\n\tend: boolean;\n\tshowCollapsibleIcon: boolean | 'auto';\n}\n\nconst getCollapsibleConfig = (collapsible?: SplitterCollapsible): ResolvedCollapsible => {\n\tif (!collapsible) {\n\t\treturn { start: false, end: false, showCollapsibleIcon: 'auto' };\n\t}\n\tif (typeof collapsible === 'boolean') {\n\t\treturn {\n\t\t\tstart: collapsible,\n\t\t\tend: collapsible,\n\t\t\tshowCollapsibleIcon: collapsible ? true : 'auto',\n\t\t};\n\t}\n\treturn {\n\t\tstart: collapsible.start ?? false,\n\t\tend: collapsible.end ?? false,\n\t\tshowCollapsibleIcon: collapsible.showCollapsibleIcon ?? true,\n\t};\n};\n\ntype SplitterComponent = React.FC<SplitterProps> & {\n\tPanel: React.FC<SplitterPanelProps>;\n};\n\nconst DEFAULT_DRAGGER_SIZE = 4;\nconst MIN_DRAG_SIZE = 40; // 手动拖拽调整大小时的默认最小限制 (px)\n\nconst SplitterPanel: React.FC<SplitterPanelProps> = ({ children }) => <>{children}</>;\n\nconst isPercentSize = (value: SplitterSize): value is `${number}%` =>\n\ttypeof value === 'string' && value.endsWith('%');\n\nconst parseSize = (value: SplitterSize | undefined, total: number, fallback: number) => {\n\tif (value === undefined) {\n\t\treturn fallback;\n\t}\n\n\tif (isPercentSize(value)) {\n\t\treturn (Number.parseFloat(value) / 100) * total;\n\t}\n\n\treturn Number(value);\n};\n\nconst roundSizes = (sizes: number[]) => sizes.map((size) => Math.round(size));\n\nconst getPointerPosition = (\n\tevent: PointerEvent | ReactPointerEvent,\n\torientation: SplitterOrientation,\n) => (orientation === 'horizontal' ? event.clientX : event.clientY);\n\nconst clamp = (value: number, min: number, max: number) => Math.min(Math.max(value, min), max);\n\nconst resolveSemanticStyles = (\n\tstyles: SplitterStyles | undefined,\n\tinfoProps: SplitterProps,\n): Partial<Record<SplitterSemanticDOM, CSSProperties>> => {\n\tif (!styles) {\n\t\treturn {};\n\t}\n\n\tconst resolved = typeof styles === 'function' ? styles({ props: infoProps }) : styles;\n\treturn resolved || {};\n};\n\nconst resolveSemanticClassNames = (\n\tclassNames: SplitterClassNames | undefined,\n\tinfoProps: SplitterProps,\n): Partial<Record<SplitterSemanticDOM, string>> => {\n\tif (!classNames) {\n\t\treturn {};\n\t}\n\n\tconst resolved = typeof classNames === 'function' ? classNames({ props: infoProps }) : classNames;\n\treturn resolved || {};\n};\n\nconst CustomSplitter: SplitterComponent = (props) => {\n\tconst {\n\t\tchildren,\n\t\tclassName,\n\t\tclassNames,\n\t\tdestroyOnHidden = false,\n\t\tdraggerIcon,\n\t\tdraggerSize = DEFAULT_DRAGGER_SIZE,\n\t\tlazy = false,\n\t\tonResize,\n\t\tonResizeEnd,\n\t\tonResizeStart,\n\t\tonCollapse,\n\t\tonDraggerDoubleClick,\n\t\torientation,\n\t\tstyle,\n\t\tstyles,\n\t\tvertical = false,\n\t} = props;\n\tconst resolvedOrientation = orientation ?? (vertical ? 'vertical' : 'horizontal');\n\tconst rootRef = useRef<HTMLDivElement>(null);\n\tconst sizesRef = useRef<number[]>([]);\n\tconst [containerSize, setContainerSize] = useState(0);\n\tconst [draggingIndex, setDraggingIndex] = useState<number | null>(null);\n\tconst [hoveredIndex, setHoveredIndex] = useState<number | null>(null);\n\tconst [hoveredCollapsePanelIndex, setHoveredCollapsePanelIndex] = useState<number | null>(null);\n\tconst [sizes, setSizes] = useState<number[]>([]);\n\n\tconst semanticStyles = useMemo(() => resolveSemanticStyles(styles, props), [styles, props]);\n\tconst semanticClassNames = useMemo(\n\t\t() => resolveSemanticClassNames(classNames, props),\n\t\t[classNames, props],\n\t);\n\n\tconst panels = useMemo(\n\t\t() =>\n\t\t\tReact.Children.toArray(children).filter(\n\t\t\t\tReact.isValidElement,\n\t\t\t) as ReactElement<SplitterPanelProps>[],\n\t\t[children],\n\t);\n\n\tconst trackSize = Math.max(0, containerSize - Math.max(0, panels.length - 1) * draggerSize);\n\n\tconst getPanelMin = useCallback(\n\t\t(index: number) => parseSize(panels[index]?.props.min, trackSize, 0),\n\t\t[panels, trackSize],\n\t);\n\n\tconst getPanelMax = useCallback(\n\t\t(index: number) => parseSize(panels[index]?.props.max, trackSize, trackSize),\n\t\t[panels, trackSize],\n\t);\n\n\tconst normalizeToTrack = useCallback(\n\t\t(nextSizes: number[]) => {\n\t\t\tif (!trackSize || !nextSizes.length) {\n\t\t\t\treturn nextSizes;\n\t\t\t}\n\n\t\t\tconst normalized = [...nextSizes];\n\t\t\tconst diff = trackSize - normalized.reduce((sum, size) => sum + size, 0);\n\t\t\tconst flexibleIndex = normalized.findIndex((size) => size > 0);\n\t\t\tif (flexibleIndex !== -1) {\n\t\t\t\tnormalized[flexibleIndex] += diff;\n\t\t\t}\n\n\t\t\treturn normalized.map((size, index) => {\n\t\t\t\t// 折叠状态(size <= 1)保持为 0,不受 min 限制干扰\n\t\t\t\tif (size <= 1) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\t// 拖拽过程从 0 拖出时,允许在 0 到 min 之间平滑过渡,不被强行跳变到 min\n\t\t\t\tif (size < getPanelMin(index)) {\n\t\t\t\t\treturn size;\n\t\t\t\t}\n\t\t\t\treturn clamp(size, getPanelMin(index), getPanelMax(index));\n\t\t\t});\n\t\t},\n\t\t[getPanelMax, getPanelMin, trackSize],\n\t);\n\n\tconst buildInitialSizes = useCallback(\n\t\t(previous?: number[]) => {\n\t\t\tif (!trackSize || !panels.length) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\tif (previous?.length === panels.length) {\n\t\t\t\tconst previousTotal = previous.reduce((sum, size) => sum + size, 0);\n\t\t\t\tif (previousTotal > 0) {\n\t\t\t\t\treturn normalizeToTrack(previous.map((size) => (size / previousTotal) * trackSize));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst explicitSizes = panels.map((panel) =>\n\t\t\t\tparseSize(panel.props.size ?? panel.props.defaultSize, trackSize, -1),\n\t\t\t);\n\t\t\tconst usedSize = explicitSizes\n\t\t\t\t.filter((size) => size >= 0)\n\t\t\t\t.reduce((sum, size) => sum + size, 0);\n\t\t\tconst unsetCount = explicitSizes.filter((size) => size < 0).length;\n\t\t\tconst fallbackSize = unsetCount ? Math.max(0, (trackSize - usedSize) / unsetCount) : 0;\n\n\t\t\treturn normalizeToTrack(\n\t\t\t\texplicitSizes.map((size, index) =>\n\t\t\t\t\tclamp(size >= 0 ? size : fallbackSize, getPanelMin(index), getPanelMax(index)),\n\t\t\t\t),\n\t\t\t);\n\t\t},\n\t\t[getPanelMax, getPanelMin, normalizeToTrack, panels, trackSize],\n\t);\n\n\tconst updateSizes = useCallback(\n\t\t(nextSizes: number[], notify = true) => {\n\t\t\tconst normalized = normalizeToTrack(nextSizes);\n\t\t\tsetSizes(normalized);\n\t\t\tsizesRef.current = normalized;\n\t\t\tif (notify) {\n\t\t\t\tonResize?.(roundSizes(normalized));\n\t\t\t}\n\t\t},\n\t\t[normalizeToTrack, onResize],\n\t);\n\n\tuseEffect(() => {\n\t\tconst node = rootRef.current;\n\t\tif (!node) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst syncSize = () => {\n\t\t\tsetContainerSize(resolvedOrientation === 'horizontal' ? node.clientWidth : node.clientHeight);\n\t\t};\n\t\tsyncSize();\n\n\t\tconst observer = new ResizeObserver(syncSize);\n\t\tobserver.observe(node);\n\t\treturn () => observer.disconnect();\n\t}, [resolvedOrientation]);\n\n\tuseEffect(() => {\n\t\tsetSizes((previous) => {\n\t\t\tconst nextSizes = buildInitialSizes(previous);\n\t\t\tsizesRef.current = nextSizes;\n\t\t\treturn nextSizes;\n\t\t});\n\t}, [buildInitialSizes]);\n\n\tconst getResizedPair = useCallback(\n\t\t(sourceSizes: number[], index: number, delta: number) => {\n\t\t\tconst nextSizes = [...sourceSizes];\n\t\t\tconst isLeftCollapsed = sourceSizes[index] <= 1;\n\t\t\tconst isRightCollapsed = sourceSizes[index + 1] <= 1;\n\n\t\t\tconst leftMin = isLeftCollapsed ? 0 : getPanelMin(index);\n\t\t\tconst rightMin = isRightCollapsed ? 0 : getPanelMin(index + 1);\n\t\t\tconst leftMax = getPanelMax(index);\n\t\t\tconst rightMax = getPanelMax(index + 1);\n\n\t\t\tconst minDelta = Math.max(leftMin - sourceSizes[index], sourceSizes[index + 1] - rightMax);\n\t\t\tconst maxDelta = Math.min(leftMax - sourceSizes[index], sourceSizes[index + 1] - rightMin);\n\t\t\tconst safeDelta = clamp(delta, minDelta, maxDelta);\n\n\t\t\tnextSizes[index] = sourceSizes[index] + safeDelta;\n\t\t\tnextSizes[index + 1] = sourceSizes[index + 1] - safeDelta;\n\t\t\treturn normalizeToTrack(nextSizes);\n\t\t},\n\t\t[getPanelMax, getPanelMin, normalizeToTrack],\n\t);\n\n\tconst getInitialLockedIndex = useCallback(\n\t\t(sourceSizes: number[], startIndex: number, delta: number) => {\n\t\t\tif (sourceSizes[startIndex] <= 1 && delta < 0 && startIndex > 0) {\n\t\t\t\treturn startIndex - 1;\n\t\t\t}\n\t\t\tif (sourceSizes[startIndex + 1] <= 1 && delta > 0 && startIndex < sourceSizes.length - 2) {\n\t\t\t\treturn startIndex + 1;\n\t\t\t}\n\t\t\treturn startIndex;\n\t\t},\n\t\t[],\n\t);\n\n\tconst resizePair = useCallback(\n\t\t(index: number, delta: number, notify = true) => {\n\t\t\tconst targetIndex = getInitialLockedIndex(sizesRef.current, index, delta);\n\t\t\tupdateSizes(getResizedPair(sizesRef.current, targetIndex, delta), notify);\n\t\t},\n\t\t[getInitialLockedIndex, getResizedPair, updateSizes],\n\t);\n\n\tconst startResize = (index: number, event: ReactPointerEvent<HTMLDivElement>) => {\n\t\tif (panels[index].props.resizable === false || panels[index + 1].props.resizable === false) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tconst startPosition = getPointerPosition(event, resolvedOrientation);\n\t\tconst startSizes = [...sizesRef.current];\n\t\tlet latestSizes = startSizes;\n\t\tlet lockedIndex: number | null = null;\n\n\t\tsetDraggingIndex(index);\n\t\tonResizeStart?.(roundSizes(startSizes));\n\n\t\tconst handlePointerMove = (moveEvent: PointerEvent) => {\n\t\t\tconst delta = getPointerPosition(moveEvent, resolvedOrientation) - startPosition;\n\t\t\tif (delta === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (lockedIndex === null) {\n\t\t\t\tlockedIndex = getInitialLockedIndex(startSizes, index, delta);\n\t\t\t}\n\n\t\t\tlatestSizes = getResizedPair(startSizes, lockedIndex, delta);\n\t\t\tif (!lazy) {\n\t\t\t\tupdateSizes(latestSizes, true);\n\t\t\t}\n\t\t};\n\n\t\tconst handlePointerUp = () => {\n\t\t\tdocument.removeEventListener('pointermove', handlePointerMove);\n\t\t\tdocument.removeEventListener('pointerup', handlePointerUp);\n\t\t\tsetDraggingIndex(null);\n\t\t\tif (lazy) {\n\t\t\t\tupdateSizes(latestSizes, true);\n\t\t\t}\n\t\t\tconst currentSizes = roundSizes(sizesRef.current);\n\t\t\tconst currentCollapsed = sizesRef.current.map((size) => size <= 1);\n\t\t\tconst startCollapsed = startSizes.map((size) => size <= 1);\n\t\t\tif (currentCollapsed.some((c, i) => c !== startCollapsed[i])) {\n\t\t\t\tonCollapse?.(currentCollapsed, currentSizes);\n\t\t\t}\n\t\t\tonResizeEnd?.(currentSizes);\n\t\t};\n\n\t\tdocument.addEventListener('pointermove', handlePointerMove);\n\t\tdocument.addEventListener('pointerup', handlePointerUp);\n\t};\n\n\tconst toggleCollapse = (index: number, neighborIndex: number) => {\n\t\tconst nextSizes = [...sizesRef.current];\n\n\t\tif (nextSizes[index] > 1) {\n\t\t\tnextSizes[neighborIndex] += nextSizes[index];\n\t\t\tnextSizes[index] = 0;\n\t\t} else {\n\t\t\tconst initialSizes = buildInitialSizes();\n\t\t\tconst initialSize =\n\t\t\t\tinitialSizes[index] ??\n\t\t\t\tparseSize(panels[index].props.defaultSize, trackSize, trackSize / panels.length);\n\t\t\tconst restoredSize = clamp(initialSize, getPanelMin(index), getPanelMax(index));\n\t\t\tnextSizes[index] = restoredSize;\n\t\t\tnextSizes[neighborIndex] = Math.max(0, nextSizes[neighborIndex] - nextSizes[index]);\n\t\t}\n\n\t\tupdateSizes(nextSizes);\n\t\tconst currentSizes = roundSizes(sizesRef.current);\n\t\tconst currentCollapsed = sizesRef.current.map((size) => size <= 1);\n\t\tonCollapse?.(currentCollapsed, currentSizes);\n\t\tonResizeEnd?.(currentSizes);\n\t};\n\n\tconst resetSizes = () => {\n\t\tconst previousCollapsed = sizesRef.current.map((size) => size <= 1);\n\t\tconst nextSizes = buildInitialSizes();\n\t\tupdateSizes(nextSizes);\n\t\tconst currentSizes = roundSizes(sizesRef.current);\n\t\tconst currentCollapsed = sizesRef.current.map((size) => size <= 1);\n\t\tif (currentCollapsed.some((c, i) => c !== previousCollapsed[i])) {\n\t\t\tonCollapse?.(currentCollapsed, currentSizes);\n\t\t}\n\t\tonResizeEnd?.(currentSizes);\n\t};\n\n\tconst rootStyle: CSSProperties = {\n\t\tborder: '1px solid #f0f0f0',\n\t\tborderRadius: 8,\n\t\tboxSizing: 'border-box',\n\t\tdisplay: 'flex',\n\t\tflexDirection: resolvedOrientation === 'horizontal' ? 'row' : 'column',\n\t\theight: '100%',\n\t\tminHeight: 0,\n\t\toverflow: 'hidden',\n\t\tposition: 'relative',\n\t\twidth: '100%',\n\t\t...semanticStyles.root,\n\t\t...style,\n\t};\n\n\tconst renderCollapseButton = (\n\t\tdraggerIndex: number,\n\t\tpanelIndex: number,\n\t\tdirection: 'start' | 'end',\n\t) => {\n\t\tconst panel = panels[panelIndex];\n\t\tconst config = getCollapsibleConfig(panel?.props.collapsible);\n\t\tconst isAllowed = direction === 'start' ? config.start : config.end;\n\n\t\tif (!isAllowed || config.showCollapsibleIcon === false) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst neighborIndex = direction === 'start' ? panelIndex + 1 : panelIndex - 1;\n\t\tconst isCollapsed = (sizes[panelIndex] ?? 0) <= 1;\n\t\tconst isNeighborCollapsed = (sizes[neighborIndex] ?? 0) <= 1;\n\n\t\t// 自己折叠后隐藏;对侧面板折叠后也隐藏(避免与展开按钮重复/语义冲突)\n\t\tif (isCollapsed || isNeighborCollapsed) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// 展开时箭头指向面板将被折叠到的方向\n\t\tconst Icon =\n\t\t\tresolvedOrientation === 'horizontal'\n\t\t\t\t? direction === 'start'\n\t\t\t\t\t? LeftOutlined\n\t\t\t\t\t: RightOutlined\n\t\t\t\t: direction === 'start'\n\t\t\t\t\t? UpOutlined\n\t\t\t\t\t: DownOutlined;\n\n\t\tconst isHorizontal = resolvedOrientation === 'horizontal';\n\t\tconst isAlwaysShow = config.showCollapsibleIcon === true;\n\t\tconst isHoveredOrDragging = hoveredIndex === draggerIndex || draggingIndex === draggerIndex;\n\t\tconst opacity = isAlwaysShow || isHoveredOrDragging ? 1 : 0;\n\t\tconst pointerEvents = isAlwaysShow || isHoveredOrDragging ? 'auto' : 'none';\n\n\t\tconst buttonTitle =\n\t\t\tresolvedOrientation === 'horizontal'\n\t\t\t\t? direction === 'start'\n\t\t\t\t\t? '折叠左侧面板'\n\t\t\t\t\t: '折叠右侧面板'\n\t\t\t\t: direction === 'start'\n\t\t\t\t\t? '折叠上方面板'\n\t\t\t\t\t: '折叠下方面板';\n\n\t\treturn (\n\t\t\t<button\n\t\t\t\taria-label={buttonTitle}\n\t\t\t\ttitle={buttonTitle}\n\t\t\t\tonClick={(event) => {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\ttoggleCollapse(panelIndex, neighborIndex);\n\t\t\t\t}}\n\t\t\t\tonDoubleClick={(event) => {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}}\n\t\t\t\tstyle={{\n\t\t\t\t\talignItems: 'center',\n\t\t\t\t\tbackground: '#fff',\n\t\t\t\t\tborder: '1px solid #d9d9d9',\n\t\t\t\t\tborderRadius: 3,\n\t\t\t\t\tcolor: '#595959',\n\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\theight: isHorizontal ? 40 : 14,\n\t\t\t\t\twidth: isHorizontal ? 14 : 40,\n\t\t\t\t\tjustifyContent: 'center',\n\t\t\t\t\tpadding: 0,\n\t\t\t\t\tfontSize: 10,\n\t\t\t\t\tboxShadow: '0 1px 2px rgba(0, 0, 0, 0.05)',\n\t\t\t\t\ttransition: 'all 0.2s ease',\n\t\t\t\t\topacity,\n\t\t\t\t\tpointerEvents,\n\t\t\t\t}}\n\t\t\t\ttype=\"button\"\n\t\t\t\tonMouseEnter={(e) => {\n\t\t\t\t\te.currentTarget.style.background = '#e5e7eb';\n\t\t\t\t\te.currentTarget.style.color = '#1f2937';\n\t\t\t\t\tsetHoveredCollapsePanelIndex(panelIndex);\n\t\t\t\t}}\n\t\t\t\tonMouseLeave={(e) => {\n\t\t\t\t\te.currentTarget.style.background = '#fff';\n\t\t\t\t\te.currentTarget.style.color = '#595959';\n\t\t\t\t\tsetHoveredCollapsePanelIndex(null);\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<Icon />\n\t\t\t</button>\n\t\t);\n\t};\n\n\tconst rootClassName = [className, semanticClassNames.root].filter(Boolean).join(' ') || undefined;\n\n\treturn (\n\t\t<div className={rootClassName} ref={rootRef} style={rootStyle}>\n\t\t\t{panels.map((panel, index) => {\n\t\t\t\tconst isHidden = sizes[index] <= 1;\n\t\t\t\tconst isLeftOrTopCollapsed = (sizes[index] ?? 0) <= 1;\n\t\t\t\tconst isRightOrBottomCollapsed = (sizes[index + 1] ?? 0) <= 1;\n\t\t\t\tconst isAnyCollapsed = isLeftOrTopCollapsed || isRightOrBottomCollapsed;\n\t\t\t\tconst panelDestroyOnHidden = panel.props.destroyOnHidden ?? destroyOnHidden;\n\t\t\t\tconst shouldRenderContent = !isHidden || !panelDestroyOnHidden;\n\n\t\t\t\treturn (\n\t\t\t\t\t<React.Fragment key={index}>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t[semanticClassNames.panel, panel.props.className].filter(Boolean).join(' ') ||\n\t\t\t\t\t\t\t\tundefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tbackground: index % 2 ? '#fff' : '#fafafa',\n\t\t\t\t\t\t\t\tboxSizing: 'border-box',\n\t\t\t\t\t\t\t\tflex: `0 0 ${sizes[index] ?? 0}px`,\n\t\t\t\t\t\t\t\tminHeight: 0,\n\t\t\t\t\t\t\t\tminWidth: 0,\n\t\t\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\t\t\tposition: 'relative',\n\t\t\t\t\t\t\t\tboxShadow:\n\t\t\t\t\t\t\t\t\thoveredCollapsePanelIndex === index ? 'inset 0 0 0 2px #1677ff' : undefined,\n\t\t\t\t\t\t\t\ttransition:\n\t\t\t\t\t\t\t\t\tdraggingIndex === null ? 'box-shadow 0.2s ease, flex-basis 0.2s ease' : undefined,\n\t\t\t\t\t\t\t\t...semanticStyles.panel,\n\t\t\t\t\t\t\t\t...panel.props.style,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{shouldRenderContent && (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\tboxSizing: 'border-box',\n\t\t\t\t\t\t\t\t\t\tdisplay: isHidden ? 'none' : 'block',\n\t\t\t\t\t\t\t\t\t\theight: '100%',\n\t\t\t\t\t\t\t\t\t\toverflowX: 'hidden',\n\t\t\t\t\t\t\t\t\t\toverflowY: 'auto',\n\t\t\t\t\t\t\t\t\t\tpadding: (sizes[index] ?? 0) < 32 ? 0 : 16,\n\t\t\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{panel.props.children}\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\n\t\t\t\t\t\t{index < panels.length - 1 && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\taria-orientation={resolvedOrientation}\n\t\t\t\t\t\t\t\tclassName={semanticClassNames.dragger}\n\t\t\t\t\t\t\t\tonDoubleClick={() => {\n\t\t\t\t\t\t\t\t\tonDraggerDoubleClick?.(index);\n\t\t\t\t\t\t\t\t\tresetSizes();\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tonKeyDown={(event) => {\n\t\t\t\t\t\t\t\t\tconst step = event.shiftKey ? 40 : 10;\n\t\t\t\t\t\t\t\t\tconst directionMap =\n\t\t\t\t\t\t\t\t\t\tresolvedOrientation === 'horizontal'\n\t\t\t\t\t\t\t\t\t\t\t? { ArrowLeft: -step, ArrowRight: step }\n\t\t\t\t\t\t\t\t\t\t\t: { ArrowUp: -step, ArrowDown: step };\n\t\t\t\t\t\t\t\t\tconst delta = directionMap[event.key as keyof typeof directionMap];\n\t\t\t\t\t\t\t\t\tif (delta !== undefined) {\n\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\tresizePair(index, delta);\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\tonPointerDown={(event) => startResize(index, event)}\n\t\t\t\t\t\t\t\tonPointerEnter={() => setHoveredIndex(index)}\n\t\t\t\t\t\t\t\tonPointerLeave={() => setHoveredIndex(null)}\n\t\t\t\t\t\t\t\trole=\"separator\"\n\t\t\t\t\t\t\t\ttitle=\"拖动调整大小,双击重置\"\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\t\tbackground:\n\t\t\t\t\t\t\t\t\t\thoveredIndex === index || draggingIndex === index ? '#e6f4ff' : '#f5f5f5',\n\t\t\t\t\t\t\t\t\tboxSizing: 'border-box',\n\t\t\t\t\t\t\t\t\tcursor: resolvedOrientation === 'horizontal' ? 'col-resize' : 'row-resize',\n\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\tflex: `0 0 ${draggerSize}px`,\n\t\t\t\t\t\t\t\t\tjustifyContent: 'center',\n\t\t\t\t\t\t\t\t\tmarginLeft:\n\t\t\t\t\t\t\t\t\t\tindex > 0 && (sizes[index] ?? 0) <= 1 && resolvedOrientation === 'horizontal'\n\t\t\t\t\t\t\t\t\t\t\t? -draggerSize\n\t\t\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t\t\tmarginTop:\n\t\t\t\t\t\t\t\t\t\tindex > 0 && (sizes[index] ?? 0) <= 1 && resolvedOrientation === 'vertical'\n\t\t\t\t\t\t\t\t\t\t\t? -draggerSize\n\t\t\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t\t\toutline: 'none',\n\t\t\t\t\t\t\t\t\tposition: 'relative',\n\t\t\t\t\t\t\t\t\tuserSelect: 'none',\n\t\t\t\t\t\t\t\t\tzIndex: isAnyCollapsed ? 2 : 1,\n\t\t\t\t\t\t\t\t\t...semanticStyles.dragger,\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\ttabIndex={0}\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{draggerIcon ? (\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\t\t\t\tcolor:\n\t\t\t\t\t\t\t\t\t\t\t\thoveredIndex === index || draggingIndex === index ? '#1677ff' : '#8c8c8c',\n\t\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\t\t\tfontSize: 12,\n\t\t\t\t\t\t\t\t\t\t\tjustifyContent: 'center',\n\t\t\t\t\t\t\t\t\t\t\tpointerEvents: 'none',\n\t\t\t\t\t\t\t\t\t\t\ttransition: 'color 0.2s ease',\n\t\t\t\t\t\t\t\t\t\t\tuserSelect: 'none',\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{draggerIcon}\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\t\t<div\n\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\tbackground:\n\t\t\t\t\t\t\t\t\t\t\t\thoveredIndex === index || draggingIndex === index ? '#1677ff' : '#d9d9d9',\n\t\t\t\t\t\t\t\t\t\t\tborderRadius: 2,\n\t\t\t\t\t\t\t\t\t\t\theight: resolvedOrientation === 'horizontal' ? 40 : 2,\n\t\t\t\t\t\t\t\t\t\t\ttransition: 'background 0.2s ease',\n\t\t\t\t\t\t\t\t\t\t\twidth: resolvedOrientation === 'horizontal' ? 2 : 40,\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)}\n\n\t\t\t\t\t\t\t\t{/* 未折叠状态下呈现折叠按钮 */}\n\t\t\t\t\t\t\t\t{!isAnyCollapsed && (\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\t\t\t\t\t\ttop: '50%',\n\t\t\t\t\t\t\t\t\t\t\tleft: '50%',\n\t\t\t\t\t\t\t\t\t\t\ttransform: 'translate(-50%, -50%)',\n\t\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\t\t\tflexDirection: resolvedOrientation === 'horizontal' ? 'row' : 'column',\n\t\t\t\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\t\t\t\tjustifyContent: 'center',\n\t\t\t\t\t\t\t\t\t\t\tgap: 2,\n\t\t\t\t\t\t\t\t\t\t\tzIndex: 5,\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\t\t\t\tjustifyContent: 'flex-end',\n\t\t\t\t\t\t\t\t\t\t\t\tminHeight: resolvedOrientation === 'horizontal' ? undefined : 14,\n\t\t\t\t\t\t\t\t\t\t\t\tminWidth: resolvedOrientation === 'horizontal' ? 14 : undefined,\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{renderCollapseButton(index, index, 'start')}\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\t\t\t\tjustifyContent: 'flex-start',\n\t\t\t\t\t\t\t\t\t\t\t\tminHeight: resolvedOrientation === 'horizontal' ? undefined : 14,\n\t\t\t\t\t\t\t\t\t\t\t\tminWidth: resolvedOrientation === 'horizontal' ? 14 : undefined,\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{renderCollapseButton(index, index + 1, 'end')}\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t{/* 折叠状态下呈现展开按钮(必须包含 collapsible 允许方可渲染) */}\n\t\t\t\t\t\t\t\t{isAnyCollapsed && (\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\t\t\t\t\t\ttop:\n\t\t\t\t\t\t\t\t\t\t\t\tresolvedOrientation === 'horizontal'\n\t\t\t\t\t\t\t\t\t\t\t\t\t? '50%'\n\t\t\t\t\t\t\t\t\t\t\t\t\t: isLeftOrTopCollapsed\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 0\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t\t\t\t\tbottom:\n\t\t\t\t\t\t\t\t\t\t\t\tresolvedOrientation === 'horizontal'\n\t\t\t\t\t\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t\t\t\t\t\t: isRightOrBottomCollapsed\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 0\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t\t\t\t\tleft:\n\t\t\t\t\t\t\t\t\t\t\t\tresolvedOrientation === 'horizontal'\n\t\t\t\t\t\t\t\t\t\t\t\t\t? isLeftOrTopCollapsed\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 0\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t\t\t\t: '50%',\n\t\t\t\t\t\t\t\t\t\t\tright:\n\t\t\t\t\t\t\t\t\t\t\t\tresolvedOrientation === 'horizontal'\n\t\t\t\t\t\t\t\t\t\t\t\t\t? isRightOrBottomCollapsed\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 0\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\t\t\t\tjustifyContent: 'center',\n\t\t\t\t\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\t\t\t\t\tpointerEvents: 'auto',\n\t\t\t\t\t\t\t\t\t\t\tzIndex: 5,\n\t\t\t\t\t\t\t\t\t\t\ttransform:\n\t\t\t\t\t\t\t\t\t\t\t\tresolvedOrientation === 'horizontal'\n\t\t\t\t\t\t\t\t\t\t\t\t\t? `translate(${isLeftOrTopCollapsed ? '4px' : '-4px'}, -50%)`\n\t\t\t\t\t\t\t\t\t\t\t\t\t: `translate(-50%, ${isLeftOrTopCollapsed ? '4px' : '-4px'})`,\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{(() => {\n\t\t\t\t\t\t\t\t\t\t\tconst isStart = isLeftOrTopCollapsed;\n\t\t\t\t\t\t\t\t\t\t\tconst targetIndex = isStart ? index : index + 1;\n\t\t\t\t\t\t\t\t\t\t\tconst targetPanel = panels[targetIndex];\n\t\t\t\t\t\t\t\t\t\t\tconst config = getCollapsibleConfig(targetPanel?.props.collapsible);\n\t\t\t\t\t\t\t\t\t\t\tconst isAllowed = isStart ? config.start : config.end;\n\n\t\t\t\t\t\t\t\t\t\t\tif (!isAllowed || config.showCollapsibleIcon === false) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tconst ExpandIcon =\n\t\t\t\t\t\t\t\t\t\t\t\tresolvedOrientation === 'horizontal'\n\t\t\t\t\t\t\t\t\t\t\t\t\t? isLeftOrTopCollapsed\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? RightOutlined\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: LeftOutlined\n\t\t\t\t\t\t\t\t\t\t\t\t\t: isLeftOrTopCollapsed\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? DownOutlined\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: UpOutlined;\n\n\t\t\t\t\t\t\t\t\t\t\tconst neighborIndex = isLeftOrTopCollapsed ? index + 1 : index;\n\t\t\t\t\t\t\t\t\t\t\tconst isHorizontal = resolvedOrientation === 'horizontal';\n\n\t\t\t\t\t\t\t\t\t\t\tconst expandTitle =\n\t\t\t\t\t\t\t\t\t\t\t\tresolvedOrientation === 'horizontal'\n\t\t\t\t\t\t\t\t\t\t\t\t\t? isLeftOrTopCollapsed\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? '展开左侧面板'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: '展开右侧面板'\n\t\t\t\t\t\t\t\t\t\t\t\t\t: isLeftOrTopCollapsed\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? '展开上方面板'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: '展开下方面板';\n\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\t\taria-label={expandTitle}\n\t\t\t\t\t\t\t\t\t\t\t\t\ttitle={expandTitle}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttoggleCollapse(targetIndex, neighborIndex);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonDoubleClick={(event) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbackground: '#f3f4f6',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tborder: '1px solid #e5e7eb',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tborderRadius: 3,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: '#595959',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\theight: isHorizontal ? 40 : 14,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth: isHorizontal ? 14 : 40,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tjustifyContent: 'center',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpadding: 0,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfontSize: 10,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: '0 1px 3px rgba(0, 0, 0, 0.08)',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttransition: 'all 0.2s ease',\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tonMouseEnter={(e) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\te.currentTarget.style.background = '#e5e7eb';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\te.currentTarget.style.color = '#1f2937';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetHoveredCollapsePanelIndex(targetIndex);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonMouseLeave={(e) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\te.currentTarget.style.background = '#f3f4f6';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\te.currentTarget.style.color = '#595959';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetHoveredCollapsePanelIndex(null);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\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\t\t<ExpandIcon />\n\t\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t})()}\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</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</React.Fragment>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nCustomSplitter.Panel = SplitterPanel;\n\nexport default CustomSplitter;\n"]}
1
+ {"version":3,"sources":["../Splitter/index.tsx"],"names":[],"mappings":"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","file":"chunk-W5JA3YTT.js","sourcesContent":["import { DownOutlined, LeftOutlined, RightOutlined, UpOutlined } from '../src/icons';\nimport type {\n\tCSSProperties,\n\tReactElement,\n\tReactNode,\n\tPointerEvent as ReactPointerEvent,\n} from 'react';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nexport type SplitterSize = number | `${number}%`;\nexport type SplitterOrientation = 'horizontal' | 'vertical';\n\nexport type SplitterCollapsible =\n\t| boolean\n\t| {\n\t\t\tstart?: boolean;\n\t\t\tend?: boolean;\n\t\t\tshowCollapsibleIcon?: boolean | 'auto';\n\t };\n\n/**\n * Splitter.Panel 子面板组件属性\n */\nexport type SplitterPanelProps = {\n\t/** 面板内容节点 */\n\tchildren?: ReactNode;\n\t/** 面板自定义类名 */\n\tclassName?: string;\n\t/**\n\t * 折叠配置:\n\t * - `boolean`: 是否允许两端折叠\n\t * - `Object`: `{ start?: boolean; end?: boolean; showCollapsibleIcon?: boolean | 'auto' }`\n\t */\n\tcollapsible?: SplitterCollapsible;\n\t/** 面板初始默认尺寸(支持数字 px 或百分比字符串如 '40%') */\n\tdefaultSize?: SplitterSize;\n\t/** 折叠/隐藏时是否销毁面板内容节点(可覆盖 Splitter 根容器上的 destroyOnHidden 属性) */\n\tdestroyOnHidden?: boolean;\n\t/** 面板最大允许尺寸限制 */\n\tmax?: SplitterSize;\n\t/** 面板最小允许尺寸限制 */\n\tmin?: SplitterSize;\n\t/** 是否允许通过分隔条拖拽调整大小(默认 true) */\n\tresizable?: boolean;\n\t/** 面板受控尺寸 */\n\tsize?: SplitterSize;\n\t/** 面板自定义 CSS 样式 */\n\tstyle?: CSSProperties;\n};\n\nexport type SplitterSemanticDOM = 'root' | 'panel' | 'dragger';\n/** 语义化 DOM 结构标识 */\nexport type SemanticDOM = SplitterSemanticDOM;\n\nexport type SplitterStyles =\n\t| Partial<Record<SplitterSemanticDOM, CSSProperties>>\n\t| ((info: { props: SplitterProps }) => Partial<Record<SplitterSemanticDOM, CSSProperties>>);\n\nexport type SplitterClassNames =\n\t| Partial<Record<SplitterSemanticDOM, string>>\n\t| ((info: { props: SplitterProps }) => Partial<Record<SplitterSemanticDOM, string>>);\n\n/**\n * Splitter 根容器组件属性\n */\nexport type SplitterProps = {\n\t/** 面板集合(建议传入 Splitter.Panel) */\n\tchildren?: ReactNode;\n\t/** 容器根节点自定义类名 */\n\tclassName?: string;\n\t/** 用于自定义组件内部各语义化结构(root、panel、dragger)的 class,支持对象或函数 */\n\tclassNames?: SplitterClassNames;\n\t/** 折叠/隐藏时是否销毁面板内容节点(默认 false,保留组件状态) */\n\tdestroyOnHidden?: boolean;\n\t/** 拖拽分隔条的宽度/高度(单位 px,默认 4) */\n\tdraggerSize?: number;\n\t/** 是否在拖拽结束时才更新视图(默认 false) */\n\tlazy?: boolean;\n\t/** 面板展开或折叠状态改变时的回调 */\n\tonCollapse?: (collapsed: boolean[], sizes: number[]) => void;\n\t/** 拖拽过程中的实时尺寸变化回调 */\n\tonResize?: (sizes: number[]) => void;\n\t/** 拖拽结束、重置尺寸或折叠完成时的回调 */\n\tonResizeEnd?: (sizes: number[]) => void;\n\t/** 开始拖拽分隔条时的回调 */\n\tonResizeStart?: (sizes: number[]) => void;\n\t/** 双击拖拽条回调 */\n\tonDraggerDoubleClick?: (index: number) => void;\n\t/** 分屏方向:'horizontal'(水平分屏)| 'vertical'(垂直分屏),默认 'horizontal' */\n\torientation?: SplitterOrientation;\n\t/** 容器根节点自定义 CSS 样式 */\n\tstyle?: CSSProperties;\n\t/** 容器根节点及各语义化结构(root、panel、dragger)自定义 CSS 样式,支持对象或函数 */\n\tstyles?: SplitterStyles;\n\t/** 是否垂直分屏(orientation=\"vertical\" 的简写形式) 排列方向,与 orientation 同时存在,以 orientation 优先 */\n\tvertical?: boolean;\n\t/** 自定义拖拽手柄图标/节点 */\n\tdraggerIcon?: ReactNode;\n};\n\nexport interface ResolvedCollapsible {\n\tstart: boolean;\n\tend: boolean;\n\tshowCollapsibleIcon: boolean | 'auto';\n}\n\nconst getCollapsibleConfig = (collapsible?: SplitterCollapsible): ResolvedCollapsible => {\n\tif (!collapsible) {\n\t\treturn { start: false, end: false, showCollapsibleIcon: 'auto' };\n\t}\n\tif (typeof collapsible === 'boolean') {\n\t\treturn {\n\t\t\tstart: collapsible,\n\t\t\tend: collapsible,\n\t\t\tshowCollapsibleIcon: collapsible ? true : 'auto',\n\t\t};\n\t}\n\treturn {\n\t\tstart: collapsible.start ?? false,\n\t\tend: collapsible.end ?? false,\n\t\tshowCollapsibleIcon: collapsible.showCollapsibleIcon ?? true,\n\t};\n};\n\ntype SplitterComponent = React.FC<SplitterProps> & {\n\tPanel: React.FC<SplitterPanelProps>;\n};\n\nconst DEFAULT_DRAGGER_SIZE = 4;\nconst MIN_DRAG_SIZE = 40; // 手动拖拽调整大小时的默认最小限制 (px)\n\nconst SplitterPanel: React.FC<SplitterPanelProps> = ({ children }) => <>{children}</>;\n\nconst isPercentSize = (value: SplitterSize): value is `${number}%` =>\n\ttypeof value === 'string' && value.endsWith('%');\n\nconst parseSize = (value: SplitterSize | undefined, total: number, fallback: number) => {\n\tif (value === undefined) {\n\t\treturn fallback;\n\t}\n\n\tif (isPercentSize(value)) {\n\t\treturn (Number.parseFloat(value) / 100) * total;\n\t}\n\n\treturn Number(value);\n};\n\nconst roundSizes = (sizes: number[]) => sizes.map((size) => Math.round(size));\n\nconst getPointerPosition = (\n\tevent: PointerEvent | ReactPointerEvent,\n\torientation: SplitterOrientation,\n) => (orientation === 'horizontal' ? event.clientX : event.clientY);\n\nconst clamp = (value: number, min: number, max: number) => Math.min(Math.max(value, min), max);\n\nconst resolveSemanticStyles = (\n\tstyles: SplitterStyles | undefined,\n\tinfoProps: SplitterProps,\n): Partial<Record<SplitterSemanticDOM, CSSProperties>> => {\n\tif (!styles) {\n\t\treturn {};\n\t}\n\n\tconst resolved = typeof styles === 'function' ? styles({ props: infoProps }) : styles;\n\treturn resolved || {};\n};\n\nconst resolveSemanticClassNames = (\n\tclassNames: SplitterClassNames | undefined,\n\tinfoProps: SplitterProps,\n): Partial<Record<SplitterSemanticDOM, string>> => {\n\tif (!classNames) {\n\t\treturn {};\n\t}\n\n\tconst resolved = typeof classNames === 'function' ? classNames({ props: infoProps }) : classNames;\n\treturn resolved || {};\n};\n\nconst CustomSplitter: SplitterComponent = (props) => {\n\tconst {\n\t\tchildren,\n\t\tclassName,\n\t\tclassNames,\n\t\tdestroyOnHidden = false,\n\t\tdraggerIcon,\n\t\tdraggerSize = DEFAULT_DRAGGER_SIZE,\n\t\tlazy = false,\n\t\tonResize,\n\t\tonResizeEnd,\n\t\tonResizeStart,\n\t\tonCollapse,\n\t\tonDraggerDoubleClick,\n\t\torientation,\n\t\tstyle,\n\t\tstyles,\n\t\tvertical = false,\n\t} = props;\n\tconst resolvedOrientation = orientation ?? (vertical ? 'vertical' : 'horizontal');\n\tconst rootRef = useRef<HTMLDivElement>(null);\n\tconst sizesRef = useRef<number[]>([]);\n\tconst [containerSize, setContainerSize] = useState(0);\n\tconst [draggingIndex, setDraggingIndex] = useState<number | null>(null);\n\tconst [hoveredIndex, setHoveredIndex] = useState<number | null>(null);\n\tconst [hoveredCollapsePanelIndex, setHoveredCollapsePanelIndex] = useState<number | null>(null);\n\tconst [sizes, setSizes] = useState<number[]>([]);\n\n\tconst semanticStyles = useMemo(() => resolveSemanticStyles(styles, props), [styles, props]);\n\tconst semanticClassNames = useMemo(\n\t\t() => resolveSemanticClassNames(classNames, props),\n\t\t[classNames, props],\n\t);\n\n\tconst panels = useMemo(\n\t\t() =>\n\t\t\tReact.Children.toArray(children).filter(\n\t\t\t\tReact.isValidElement,\n\t\t\t) as ReactElement<SplitterPanelProps>[],\n\t\t[children],\n\t);\n\n\tconst trackSize = Math.max(0, containerSize - Math.max(0, panels.length - 1) * draggerSize);\n\n\tconst getPanelMin = useCallback(\n\t\t(index: number) => parseSize(panels[index]?.props.min, trackSize, 0),\n\t\t[panels, trackSize],\n\t);\n\n\tconst getPanelMax = useCallback(\n\t\t(index: number) => parseSize(panels[index]?.props.max, trackSize, trackSize),\n\t\t[panels, trackSize],\n\t);\n\n\tconst normalizeToTrack = useCallback(\n\t\t(nextSizes: number[]) => {\n\t\t\tif (!trackSize || !nextSizes.length) {\n\t\t\t\treturn nextSizes;\n\t\t\t}\n\n\t\t\tconst normalized = [...nextSizes];\n\t\t\tconst diff = trackSize - normalized.reduce((sum, size) => sum + size, 0);\n\t\t\tconst flexibleIndex = normalized.findIndex((size) => size > 0);\n\t\t\tif (flexibleIndex !== -1) {\n\t\t\t\tnormalized[flexibleIndex] += diff;\n\t\t\t}\n\n\t\t\treturn normalized.map((size, index) => {\n\t\t\t\t// 折叠状态(size <= 1)保持为 0,不受 min 限制干扰\n\t\t\t\tif (size <= 1) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\t// 拖拽过程从 0 拖出时,允许在 0 到 min 之间平滑过渡,不被强行跳变到 min\n\t\t\t\tif (size < getPanelMin(index)) {\n\t\t\t\t\treturn size;\n\t\t\t\t}\n\t\t\t\treturn clamp(size, getPanelMin(index), getPanelMax(index));\n\t\t\t});\n\t\t},\n\t\t[getPanelMax, getPanelMin, trackSize],\n\t);\n\n\tconst buildInitialSizes = useCallback(\n\t\t(previous?: number[]) => {\n\t\t\tif (!trackSize || !panels.length) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\tif (previous?.length === panels.length) {\n\t\t\t\tconst previousTotal = previous.reduce((sum, size) => sum + size, 0);\n\t\t\t\tif (previousTotal > 0) {\n\t\t\t\t\treturn normalizeToTrack(previous.map((size) => (size / previousTotal) * trackSize));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst explicitSizes = panels.map((panel) =>\n\t\t\t\tparseSize(panel.props.size ?? panel.props.defaultSize, trackSize, -1),\n\t\t\t);\n\t\t\tconst usedSize = explicitSizes\n\t\t\t\t.filter((size) => size >= 0)\n\t\t\t\t.reduce((sum, size) => sum + size, 0);\n\t\t\tconst unsetCount = explicitSizes.filter((size) => size < 0).length;\n\t\t\tconst fallbackSize = unsetCount ? Math.max(0, (trackSize - usedSize) / unsetCount) : 0;\n\n\t\t\treturn normalizeToTrack(\n\t\t\t\texplicitSizes.map((size, index) =>\n\t\t\t\t\tclamp(size >= 0 ? size : fallbackSize, getPanelMin(index), getPanelMax(index)),\n\t\t\t\t),\n\t\t\t);\n\t\t},\n\t\t[getPanelMax, getPanelMin, normalizeToTrack, panels, trackSize],\n\t);\n\n\tconst updateSizes = useCallback(\n\t\t(nextSizes: number[], notify = true) => {\n\t\t\tconst normalized = normalizeToTrack(nextSizes);\n\t\t\tsetSizes(normalized);\n\t\t\tsizesRef.current = normalized;\n\t\t\tif (notify) {\n\t\t\t\tonResize?.(roundSizes(normalized));\n\t\t\t}\n\t\t},\n\t\t[normalizeToTrack, onResize],\n\t);\n\n\tuseEffect(() => {\n\t\tconst node = rootRef.current;\n\t\tif (!node) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst syncSize = () => {\n\t\t\tsetContainerSize(resolvedOrientation === 'horizontal' ? node.clientWidth : node.clientHeight);\n\t\t};\n\t\tsyncSize();\n\n\t\tconst observer = new ResizeObserver(syncSize);\n\t\tobserver.observe(node);\n\t\treturn () => observer.disconnect();\n\t}, [resolvedOrientation]);\n\n\tuseEffect(() => {\n\t\tsetSizes((previous) => {\n\t\t\tconst nextSizes = buildInitialSizes(previous);\n\t\t\tsizesRef.current = nextSizes;\n\t\t\treturn nextSizes;\n\t\t});\n\t}, [buildInitialSizes]);\n\n\tconst getResizedPair = useCallback(\n\t\t(sourceSizes: number[], index: number, delta: number) => {\n\t\t\tconst nextSizes = [...sourceSizes];\n\t\t\tconst isLeftCollapsed = sourceSizes[index] <= 1;\n\t\t\tconst isRightCollapsed = sourceSizes[index + 1] <= 1;\n\n\t\t\tconst leftMin = isLeftCollapsed ? 0 : getPanelMin(index);\n\t\t\tconst rightMin = isRightCollapsed ? 0 : getPanelMin(index + 1);\n\t\t\tconst leftMax = getPanelMax(index);\n\t\t\tconst rightMax = getPanelMax(index + 1);\n\n\t\t\tconst minDelta = Math.max(leftMin - sourceSizes[index], sourceSizes[index + 1] - rightMax);\n\t\t\tconst maxDelta = Math.min(leftMax - sourceSizes[index], sourceSizes[index + 1] - rightMin);\n\t\t\tconst safeDelta = clamp(delta, minDelta, maxDelta);\n\n\t\t\tnextSizes[index] = sourceSizes[index] + safeDelta;\n\t\t\tnextSizes[index + 1] = sourceSizes[index + 1] - safeDelta;\n\t\t\treturn normalizeToTrack(nextSizes);\n\t\t},\n\t\t[getPanelMax, getPanelMin, normalizeToTrack],\n\t);\n\n\tconst getInitialLockedIndex = useCallback(\n\t\t(sourceSizes: number[], startIndex: number, delta: number) => {\n\t\t\tif (sourceSizes[startIndex] <= 1 && delta < 0 && startIndex > 0) {\n\t\t\t\treturn startIndex - 1;\n\t\t\t}\n\t\t\tif (sourceSizes[startIndex + 1] <= 1 && delta > 0 && startIndex < sourceSizes.length - 2) {\n\t\t\t\treturn startIndex + 1;\n\t\t\t}\n\t\t\treturn startIndex;\n\t\t},\n\t\t[],\n\t);\n\n\tconst resizePair = useCallback(\n\t\t(index: number, delta: number, notify = true) => {\n\t\t\tconst targetIndex = getInitialLockedIndex(sizesRef.current, index, delta);\n\t\t\tupdateSizes(getResizedPair(sizesRef.current, targetIndex, delta), notify);\n\t\t},\n\t\t[getInitialLockedIndex, getResizedPair, updateSizes],\n\t);\n\n\tconst startResize = (index: number, event: ReactPointerEvent<HTMLDivElement>) => {\n\t\tif (panels[index].props.resizable === false || panels[index + 1].props.resizable === false) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tconst startPosition = getPointerPosition(event, resolvedOrientation);\n\t\tconst startSizes = [...sizesRef.current];\n\t\tlet latestSizes = startSizes;\n\t\tlet lockedIndex: number | null = null;\n\n\t\tsetDraggingIndex(index);\n\t\tonResizeStart?.(roundSizes(startSizes));\n\n\t\tconst handlePointerMove = (moveEvent: PointerEvent) => {\n\t\t\tconst delta = getPointerPosition(moveEvent, resolvedOrientation) - startPosition;\n\t\t\tif (delta === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (lockedIndex === null) {\n\t\t\t\tlockedIndex = getInitialLockedIndex(startSizes, index, delta);\n\t\t\t}\n\n\t\t\tlatestSizes = getResizedPair(startSizes, lockedIndex, delta);\n\t\t\tif (!lazy) {\n\t\t\t\tupdateSizes(latestSizes, true);\n\t\t\t}\n\t\t};\n\n\t\tconst handlePointerUp = () => {\n\t\t\tdocument.removeEventListener('pointermove', handlePointerMove);\n\t\t\tdocument.removeEventListener('pointerup', handlePointerUp);\n\t\t\tsetDraggingIndex(null);\n\t\t\tif (lazy) {\n\t\t\t\tupdateSizes(latestSizes, true);\n\t\t\t}\n\t\t\tconst currentSizes = roundSizes(sizesRef.current);\n\t\t\tconst currentCollapsed = sizesRef.current.map((size) => size <= 1);\n\t\t\tconst startCollapsed = startSizes.map((size) => size <= 1);\n\t\t\tif (currentCollapsed.some((c, i) => c !== startCollapsed[i])) {\n\t\t\t\tonCollapse?.(currentCollapsed, currentSizes);\n\t\t\t}\n\t\t\tonResizeEnd?.(currentSizes);\n\t\t};\n\n\t\tdocument.addEventListener('pointermove', handlePointerMove);\n\t\tdocument.addEventListener('pointerup', handlePointerUp);\n\t};\n\n\tconst toggleCollapse = (index: number, neighborIndex: number) => {\n\t\tconst nextSizes = [...sizesRef.current];\n\n\t\tif (nextSizes[index] > 1) {\n\t\t\tnextSizes[neighborIndex] += nextSizes[index];\n\t\t\tnextSizes[index] = 0;\n\t\t} else {\n\t\t\tconst initialSizes = buildInitialSizes();\n\t\t\tconst initialSize =\n\t\t\t\tinitialSizes[index] ??\n\t\t\t\tparseSize(panels[index].props.defaultSize, trackSize, trackSize / panels.length);\n\t\t\tconst restoredSize = clamp(initialSize, getPanelMin(index), getPanelMax(index));\n\t\t\tnextSizes[index] = restoredSize;\n\t\t\tnextSizes[neighborIndex] = Math.max(0, nextSizes[neighborIndex] - nextSizes[index]);\n\t\t}\n\n\t\tupdateSizes(nextSizes);\n\t\tconst currentSizes = roundSizes(sizesRef.current);\n\t\tconst currentCollapsed = sizesRef.current.map((size) => size <= 1);\n\t\tonCollapse?.(currentCollapsed, currentSizes);\n\t\tonResizeEnd?.(currentSizes);\n\t};\n\n\tconst resetSizes = () => {\n\t\tconst previousCollapsed = sizesRef.current.map((size) => size <= 1);\n\t\tconst nextSizes = buildInitialSizes();\n\t\tupdateSizes(nextSizes);\n\t\tconst currentSizes = roundSizes(sizesRef.current);\n\t\tconst currentCollapsed = sizesRef.current.map((size) => size <= 1);\n\t\tif (currentCollapsed.some((c, i) => c !== previousCollapsed[i])) {\n\t\t\tonCollapse?.(currentCollapsed, currentSizes);\n\t\t}\n\t\tonResizeEnd?.(currentSizes);\n\t};\n\n\tconst rootStyle: CSSProperties = {\n\t\tborder: '1px solid #f0f0f0',\n\t\tborderRadius: 8,\n\t\tboxSizing: 'border-box',\n\t\tdisplay: 'flex',\n\t\tflexDirection: resolvedOrientation === 'horizontal' ? 'row' : 'column',\n\t\theight: '100%',\n\t\tminHeight: 0,\n\t\toverflow: 'hidden',\n\t\tposition: 'relative',\n\t\twidth: '100%',\n\t\t...semanticStyles.root,\n\t\t...style,\n\t};\n\n\tconst renderCollapseButton = (\n\t\tdraggerIndex: number,\n\t\tpanelIndex: number,\n\t\tdirection: 'start' | 'end',\n\t) => {\n\t\tconst panel = panels[panelIndex];\n\t\tconst config = getCollapsibleConfig(panel?.props.collapsible);\n\t\tconst isAllowed = direction === 'start' ? config.start : config.end;\n\n\t\tif (!isAllowed || config.showCollapsibleIcon === false) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst neighborIndex = direction === 'start' ? panelIndex + 1 : panelIndex - 1;\n\t\tconst isCollapsed = (sizes[panelIndex] ?? 0) <= 1;\n\t\tconst isNeighborCollapsed = (sizes[neighborIndex] ?? 0) <= 1;\n\n\t\t// 自己折叠后隐藏;对侧面板折叠后也隐藏(避免与展开按钮重复/语义冲突)\n\t\tif (isCollapsed || isNeighborCollapsed) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// 展开时箭头指向面板将被折叠到的方向\n\t\tconst Icon =\n\t\t\tresolvedOrientation === 'horizontal'\n\t\t\t\t? direction === 'start'\n\t\t\t\t\t? LeftOutlined\n\t\t\t\t\t: RightOutlined\n\t\t\t\t: direction === 'start'\n\t\t\t\t\t? UpOutlined\n\t\t\t\t\t: DownOutlined;\n\n\t\tconst isHorizontal = resolvedOrientation === 'horizontal';\n\t\tconst isAlwaysShow = config.showCollapsibleIcon === true;\n\t\tconst isHoveredOrDragging = hoveredIndex === draggerIndex || draggingIndex === draggerIndex;\n\t\tconst opacity = isAlwaysShow || isHoveredOrDragging ? 1 : 0;\n\t\tconst pointerEvents = isAlwaysShow || isHoveredOrDragging ? 'auto' : 'none';\n\n\t\tconst buttonTitle =\n\t\t\tresolvedOrientation === 'horizontal'\n\t\t\t\t? direction === 'start'\n\t\t\t\t\t? '折叠左侧面板'\n\t\t\t\t\t: '折叠右侧面板'\n\t\t\t\t: direction === 'start'\n\t\t\t\t\t? '折叠上方面板'\n\t\t\t\t\t: '折叠下方面板';\n\n\t\treturn (\n\t\t\t<button\n\t\t\t\taria-label={buttonTitle}\n\t\t\t\ttitle={buttonTitle}\n\t\t\t\tonClick={(event) => {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\ttoggleCollapse(panelIndex, neighborIndex);\n\t\t\t\t}}\n\t\t\t\tonDoubleClick={(event) => {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}}\n\t\t\t\tstyle={{\n\t\t\t\t\talignItems: 'center',\n\t\t\t\t\tbackground: '#fff',\n\t\t\t\t\tborder: '1px solid #d9d9d9',\n\t\t\t\t\tborderRadius: 3,\n\t\t\t\t\tcolor: '#595959',\n\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\theight: isHorizontal ? 40 : 14,\n\t\t\t\t\twidth: isHorizontal ? 14 : 40,\n\t\t\t\t\tjustifyContent: 'center',\n\t\t\t\t\tpadding: 0,\n\t\t\t\t\tfontSize: 10,\n\t\t\t\t\tboxShadow: '0 1px 2px rgba(0, 0, 0, 0.05)',\n\t\t\t\t\ttransition: 'all 0.2s ease',\n\t\t\t\t\topacity,\n\t\t\t\t\tpointerEvents,\n\t\t\t\t}}\n\t\t\t\ttype=\"button\"\n\t\t\t\tonMouseEnter={(e) => {\n\t\t\t\t\te.currentTarget.style.background = '#e5e7eb';\n\t\t\t\t\te.currentTarget.style.color = '#1f2937';\n\t\t\t\t\tsetHoveredCollapsePanelIndex(panelIndex);\n\t\t\t\t}}\n\t\t\t\tonMouseLeave={(e) => {\n\t\t\t\t\te.currentTarget.style.background = '#fff';\n\t\t\t\t\te.currentTarget.style.color = '#595959';\n\t\t\t\t\tsetHoveredCollapsePanelIndex(null);\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<Icon />\n\t\t\t</button>\n\t\t);\n\t};\n\n\tconst rootClassName = [className, semanticClassNames.root].filter(Boolean).join(' ') || undefined;\n\n\treturn (\n\t\t<div className={rootClassName} ref={rootRef} style={rootStyle}>\n\t\t\t{panels.map((panel, index) => {\n\t\t\t\tconst isHidden = sizes[index] <= 1;\n\t\t\t\tconst isLeftOrTopCollapsed = (sizes[index] ?? 0) <= 1;\n\t\t\t\tconst isRightOrBottomCollapsed = (sizes[index + 1] ?? 0) <= 1;\n\t\t\t\tconst isAnyCollapsed = isLeftOrTopCollapsed || isRightOrBottomCollapsed;\n\t\t\t\tconst panelDestroyOnHidden = panel.props.destroyOnHidden ?? destroyOnHidden;\n\t\t\t\tconst shouldRenderContent = !isHidden || !panelDestroyOnHidden;\n\n\t\t\t\treturn (\n\t\t\t\t\t<React.Fragment key={index}>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t[semanticClassNames.panel, panel.props.className].filter(Boolean).join(' ') ||\n\t\t\t\t\t\t\t\tundefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tbackground: index % 2 ? '#fff' : '#fafafa',\n\t\t\t\t\t\t\t\tboxSizing: 'border-box',\n\t\t\t\t\t\t\t\tflex: `0 0 ${sizes[index] ?? 0}px`,\n\t\t\t\t\t\t\t\tminHeight: 0,\n\t\t\t\t\t\t\t\tminWidth: 0,\n\t\t\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\t\t\tposition: 'relative',\n\t\t\t\t\t\t\t\tboxShadow:\n\t\t\t\t\t\t\t\t\thoveredCollapsePanelIndex === index ? 'inset 0 0 0 2px #1677ff' : undefined,\n\t\t\t\t\t\t\t\ttransition:\n\t\t\t\t\t\t\t\t\tdraggingIndex === null ? 'box-shadow 0.2s ease, flex-basis 0.2s ease' : undefined,\n\t\t\t\t\t\t\t\t...semanticStyles.panel,\n\t\t\t\t\t\t\t\t...panel.props.style,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{shouldRenderContent && (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\tboxSizing: 'border-box',\n\t\t\t\t\t\t\t\t\t\tdisplay: isHidden ? 'none' : 'block',\n\t\t\t\t\t\t\t\t\t\theight: '100%',\n\t\t\t\t\t\t\t\t\t\toverflowX: 'hidden',\n\t\t\t\t\t\t\t\t\t\toverflowY: 'auto',\n\t\t\t\t\t\t\t\t\t\tpadding: (sizes[index] ?? 0) < 32 ? 0 : 16,\n\t\t\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{panel.props.children}\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\n\t\t\t\t\t\t{index < panels.length - 1 && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\taria-orientation={resolvedOrientation}\n\t\t\t\t\t\t\t\tclassName={semanticClassNames.dragger}\n\t\t\t\t\t\t\t\tonDoubleClick={() => {\n\t\t\t\t\t\t\t\t\tonDraggerDoubleClick?.(index);\n\t\t\t\t\t\t\t\t\tresetSizes();\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tonKeyDown={(event) => {\n\t\t\t\t\t\t\t\t\tconst step = event.shiftKey ? 40 : 10;\n\t\t\t\t\t\t\t\t\tconst directionMap =\n\t\t\t\t\t\t\t\t\t\tresolvedOrientation === 'horizontal'\n\t\t\t\t\t\t\t\t\t\t\t? { ArrowLeft: -step, ArrowRight: step }\n\t\t\t\t\t\t\t\t\t\t\t: { ArrowUp: -step, ArrowDown: step };\n\t\t\t\t\t\t\t\t\tconst delta = directionMap[event.key as keyof typeof directionMap];\n\t\t\t\t\t\t\t\t\tif (delta !== undefined) {\n\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\tresizePair(index, delta);\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\tonPointerDown={(event) => startResize(index, event)}\n\t\t\t\t\t\t\t\tonPointerEnter={() => setHoveredIndex(index)}\n\t\t\t\t\t\t\t\tonPointerLeave={() => setHoveredIndex(null)}\n\t\t\t\t\t\t\t\trole=\"separator\"\n\t\t\t\t\t\t\t\ttitle=\"拖动调整大小,双击重置\"\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\t\tbackground:\n\t\t\t\t\t\t\t\t\t\thoveredIndex === index || draggingIndex === index ? '#e6f4ff' : '#f5f5f5',\n\t\t\t\t\t\t\t\t\tboxSizing: 'border-box',\n\t\t\t\t\t\t\t\t\tcursor: resolvedOrientation === 'horizontal' ? 'col-resize' : 'row-resize',\n\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\tflex: `0 0 ${draggerSize}px`,\n\t\t\t\t\t\t\t\t\tjustifyContent: 'center',\n\t\t\t\t\t\t\t\t\tmarginLeft:\n\t\t\t\t\t\t\t\t\t\tindex > 0 && (sizes[index] ?? 0) <= 1 && resolvedOrientation === 'horizontal'\n\t\t\t\t\t\t\t\t\t\t\t? -draggerSize\n\t\t\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t\t\tmarginTop:\n\t\t\t\t\t\t\t\t\t\tindex > 0 && (sizes[index] ?? 0) <= 1 && resolvedOrientation === 'vertical'\n\t\t\t\t\t\t\t\t\t\t\t? -draggerSize\n\t\t\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t\t\toutline: 'none',\n\t\t\t\t\t\t\t\t\tposition: 'relative',\n\t\t\t\t\t\t\t\t\tuserSelect: 'none',\n\t\t\t\t\t\t\t\t\tzIndex: isAnyCollapsed ? 2 : 1,\n\t\t\t\t\t\t\t\t\t...semanticStyles.dragger,\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\ttabIndex={0}\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{draggerIcon ? (\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\t\t\t\tcolor:\n\t\t\t\t\t\t\t\t\t\t\t\thoveredIndex === index || draggingIndex === index ? '#1677ff' : '#8c8c8c',\n\t\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\t\t\tfontSize: 12,\n\t\t\t\t\t\t\t\t\t\t\tjustifyContent: 'center',\n\t\t\t\t\t\t\t\t\t\t\tpointerEvents: 'none',\n\t\t\t\t\t\t\t\t\t\t\ttransition: 'color 0.2s ease',\n\t\t\t\t\t\t\t\t\t\t\tuserSelect: 'none',\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{draggerIcon}\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\t\t<div\n\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\tbackground:\n\t\t\t\t\t\t\t\t\t\t\t\thoveredIndex === index || draggingIndex === index ? '#1677ff' : '#d9d9d9',\n\t\t\t\t\t\t\t\t\t\t\tborderRadius: 2,\n\t\t\t\t\t\t\t\t\t\t\theight: resolvedOrientation === 'horizontal' ? 40 : 2,\n\t\t\t\t\t\t\t\t\t\t\ttransition: 'background 0.2s ease',\n\t\t\t\t\t\t\t\t\t\t\twidth: resolvedOrientation === 'horizontal' ? 2 : 40,\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)}\n\n\t\t\t\t\t\t\t\t{/* 未折叠状态下呈现折叠按钮 */}\n\t\t\t\t\t\t\t\t{!isAnyCollapsed && (\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\t\t\t\t\t\ttop: '50%',\n\t\t\t\t\t\t\t\t\t\t\tleft: '50%',\n\t\t\t\t\t\t\t\t\t\t\ttransform: 'translate(-50%, -50%)',\n\t\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\t\t\tflexDirection: resolvedOrientation === 'horizontal' ? 'row' : 'column',\n\t\t\t\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\t\t\t\tjustifyContent: 'center',\n\t\t\t\t\t\t\t\t\t\t\tgap: 2,\n\t\t\t\t\t\t\t\t\t\t\tzIndex: 5,\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\t\t\t\tjustifyContent: 'flex-end',\n\t\t\t\t\t\t\t\t\t\t\t\tminHeight: resolvedOrientation === 'horizontal' ? undefined : 14,\n\t\t\t\t\t\t\t\t\t\t\t\tminWidth: resolvedOrientation === 'horizontal' ? 14 : undefined,\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{renderCollapseButton(index, index, 'start')}\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\t\t\t\tjustifyContent: 'flex-start',\n\t\t\t\t\t\t\t\t\t\t\t\tminHeight: resolvedOrientation === 'horizontal' ? undefined : 14,\n\t\t\t\t\t\t\t\t\t\t\t\tminWidth: resolvedOrientation === 'horizontal' ? 14 : undefined,\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{renderCollapseButton(index, index + 1, 'end')}\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t{/* 折叠状态下呈现展开按钮(必须包含 collapsible 允许方可渲染) */}\n\t\t\t\t\t\t\t\t{isAnyCollapsed && (\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\t\t\t\t\t\ttop:\n\t\t\t\t\t\t\t\t\t\t\t\tresolvedOrientation === 'horizontal'\n\t\t\t\t\t\t\t\t\t\t\t\t\t? '50%'\n\t\t\t\t\t\t\t\t\t\t\t\t\t: isLeftOrTopCollapsed\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 0\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t\t\t\t\tbottom:\n\t\t\t\t\t\t\t\t\t\t\t\tresolvedOrientation === 'horizontal'\n\t\t\t\t\t\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t\t\t\t\t\t: isRightOrBottomCollapsed\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 0\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t\t\t\t\tleft:\n\t\t\t\t\t\t\t\t\t\t\t\tresolvedOrientation === 'horizontal'\n\t\t\t\t\t\t\t\t\t\t\t\t\t? isLeftOrTopCollapsed\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 0\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t\t\t\t: '50%',\n\t\t\t\t\t\t\t\t\t\t\tright:\n\t\t\t\t\t\t\t\t\t\t\t\tresolvedOrientation === 'horizontal'\n\t\t\t\t\t\t\t\t\t\t\t\t\t? isRightOrBottomCollapsed\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 0\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\t\t\t\tjustifyContent: 'center',\n\t\t\t\t\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\t\t\t\t\tpointerEvents: 'auto',\n\t\t\t\t\t\t\t\t\t\t\tzIndex: 5,\n\t\t\t\t\t\t\t\t\t\t\ttransform:\n\t\t\t\t\t\t\t\t\t\t\t\tresolvedOrientation === 'horizontal'\n\t\t\t\t\t\t\t\t\t\t\t\t\t? `translate(${isLeftOrTopCollapsed ? '4px' : '-4px'}, -50%)`\n\t\t\t\t\t\t\t\t\t\t\t\t\t: `translate(-50%, ${isLeftOrTopCollapsed ? '4px' : '-4px'})`,\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{(() => {\n\t\t\t\t\t\t\t\t\t\t\tconst isStart = isLeftOrTopCollapsed;\n\t\t\t\t\t\t\t\t\t\t\tconst targetIndex = isStart ? index : index + 1;\n\t\t\t\t\t\t\t\t\t\t\tconst targetPanel = panels[targetIndex];\n\t\t\t\t\t\t\t\t\t\t\tconst config = getCollapsibleConfig(targetPanel?.props.collapsible);\n\t\t\t\t\t\t\t\t\t\t\tconst isAllowed = isStart ? config.start : config.end;\n\n\t\t\t\t\t\t\t\t\t\t\tif (!isAllowed || config.showCollapsibleIcon === false) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tconst ExpandIcon =\n\t\t\t\t\t\t\t\t\t\t\t\tresolvedOrientation === 'horizontal'\n\t\t\t\t\t\t\t\t\t\t\t\t\t? isLeftOrTopCollapsed\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? RightOutlined\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: LeftOutlined\n\t\t\t\t\t\t\t\t\t\t\t\t\t: isLeftOrTopCollapsed\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? DownOutlined\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: UpOutlined;\n\n\t\t\t\t\t\t\t\t\t\t\tconst neighborIndex = isLeftOrTopCollapsed ? index + 1 : index;\n\t\t\t\t\t\t\t\t\t\t\tconst isHorizontal = resolvedOrientation === 'horizontal';\n\n\t\t\t\t\t\t\t\t\t\t\tconst expandTitle =\n\t\t\t\t\t\t\t\t\t\t\t\tresolvedOrientation === 'horizontal'\n\t\t\t\t\t\t\t\t\t\t\t\t\t? isLeftOrTopCollapsed\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? '展开左侧面板'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: '展开右侧面板'\n\t\t\t\t\t\t\t\t\t\t\t\t\t: isLeftOrTopCollapsed\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? '展开上方面板'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: '展开下方面板';\n\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\t\taria-label={expandTitle}\n\t\t\t\t\t\t\t\t\t\t\t\t\ttitle={expandTitle}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttoggleCollapse(targetIndex, neighborIndex);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonDoubleClick={(event) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbackground: '#f3f4f6',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tborder: '1px solid #e5e7eb',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tborderRadius: 3,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: '#595959',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\theight: isHorizontal ? 40 : 14,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth: isHorizontal ? 14 : 40,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tjustifyContent: 'center',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpadding: 0,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfontSize: 10,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: '0 1px 3px rgba(0, 0, 0, 0.08)',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttransition: 'all 0.2s ease',\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tonMouseEnter={(e) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\te.currentTarget.style.background = '#e5e7eb';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\te.currentTarget.style.color = '#1f2937';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetHoveredCollapsePanelIndex(targetIndex);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonMouseLeave={(e) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\te.currentTarget.style.background = '#f3f4f6';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\te.currentTarget.style.color = '#595959';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetHoveredCollapsePanelIndex(null);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\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\t\t<ExpandIcon />\n\t\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t})()}\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</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</React.Fragment>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nCustomSplitter.Panel = SplitterPanel;\n\nexport default CustomSplitter;\n"]}
@@ -1,4 +1,4 @@
1
- import { CloseOutlined } from './chunk-ISUXPTLV.js';
1
+ import { CloseOutlined } from './chunk-2IDVNTKR.js';
2
2
  import { useState, useMemo } from 'react';
3
3
  import { jsxs, jsx } from 'react/jsx-runtime';
4
4
 
@@ -117,5 +117,5 @@ var TreeTransfer = ({
117
117
  var TreeTransfer_default = TreeTransfer;
118
118
 
119
119
  export { TreeTransfer_default };
120
- //# sourceMappingURL=chunk-QZZGBUW4.js.map
121
- //# sourceMappingURL=chunk-QZZGBUW4.js.map
120
+ //# sourceMappingURL=chunk-WKF4C6TJ.js.map
121
+ //# sourceMappingURL=chunk-WKF4C6TJ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../TreeTransfer/index.tsx"],"names":[],"mappings":"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","file":"chunk-QZZGBUW4.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>\n\t\t\t\t\t\t{targetTitle} ({targetKeys.length})\n\t\t\t\t\t</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={{\n\t\t\t\t\t\t\t\tbackground: 'none',\n\t\t\t\t\t\t\t\tborder: 'none',\n\t\t\t\t\t\t\t\tcolor: '#1677ff',\n\t\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t\t\tfontSize: 12,\n\t\t\t\t\t\t\t}}\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
+ {"version":3,"sources":["../TreeTransfer/index.tsx"],"names":[],"mappings":"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","file":"chunk-WKF4C6TJ.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>\n\t\t\t\t\t\t{targetTitle} ({targetKeys.length})\n\t\t\t\t\t</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={{\n\t\t\t\t\t\t\t\tbackground: 'none',\n\t\t\t\t\t\t\t\tborder: 'none',\n\t\t\t\t\t\t\t\tcolor: '#1677ff',\n\t\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t\t\tfontSize: 12,\n\t\t\t\t\t\t\t}}\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,4 +1,4 @@
1
- import { RightOutlined, LeftOutlined, DownOutlined, UpOutlined } from './chunk-ISUXPTLV.js';
1
+ import { RightOutlined, LeftOutlined, DownOutlined, UpOutlined } from './chunk-2IDVNTKR.js';
2
2
  import { useState } from 'react';
3
3
  import { jsxs, jsx } from 'react/jsx-runtime';
4
4
 
@@ -100,5 +100,5 @@ var CollapsibleBox = ({
100
100
  var CollapseBox_default = CollapsibleBox;
101
101
 
102
102
  export { CollapseBox_default };
103
- //# sourceMappingURL=chunk-64LBDDZU.js.map
104
- //# sourceMappingURL=chunk-64LBDDZU.js.map
103
+ //# sourceMappingURL=chunk-XLOGMDAQ.js.map
104
+ //# sourceMappingURL=chunk-XLOGMDAQ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../CollapseBox/index.tsx"],"names":[],"mappings":"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","file":"chunk-64LBDDZU.js","sourcesContent":["import { useState, type CSSProperties, type ReactNode } from 'react';\nimport { DownOutlined, LeftOutlined, RightOutlined, UpOutlined } from '../src/icons';\nimport './index.less';\n\nexport type CollapseBoxDirection = 'horizontal' | 'vertical';\nexport type CollapseBoxButtonPosition = 'left' | 'right' | 'top' | 'bottom';\n\nexport interface CollapseBoxProps {\n\tchildren?: ReactNode;\n\ttitle?: string;\n\tdirection?: CollapseBoxDirection;\n\tbuttonPosition?: CollapseBoxButtonPosition;\n\tdefaultWidth?: number | string;\n\tdefaultHeight?: number | string;\n\tcontentPadding?: string;\n\theaderHeight?: number;\n\tclassName?: string;\n}\n\nconst formatDimension = (value?: number | string): string | undefined => {\n\tif (value === undefined || value === null) return undefined;\n\treturn typeof value === 'number' ? `${value}px` : value;\n};\n\nconst ChevronLeft = () => <LeftOutlined />;\n\nconst ChevronRight = () => <RightOutlined />;\n\nconst ChevronUp = () => <UpOutlined />;\n\nconst ChevronDown = () => <DownOutlined />;\n\nconst CollapsibleBox = ({\n\tchildren,\n\ttitle = '内容区域',\n\tdirection = 'horizontal',\n\tbuttonPosition = 'right',\n\tdefaultWidth = 600,\n\tdefaultHeight = 300,\n\tcontentPadding = '16px',\n\theaderHeight = 16,\n\tclassName,\n}: CollapseBoxProps) => {\n\tconst [isExpanded, setIsExpanded] = useState(true);\n\n\tconst getContentMaxHeight = () => {\n\t\tif (typeof defaultHeight === 'number') {\n\t\t\treturn `${defaultHeight - headerHeight}px`;\n\t\t}\n\t\tif (typeof defaultHeight === 'string') {\n\t\t\treturn headerHeight ? `calc(${defaultHeight} - ${headerHeight}px)` : defaultHeight;\n\t\t}\n\t\treturn '100%';\n\t};\n\n\tconst getIcon = () => {\n\t\tif (direction === 'horizontal') {\n\t\t\tif (buttonPosition === 'right') {\n\t\t\t\treturn isExpanded ? <ChevronRight /> : <ChevronLeft />;\n\t\t\t}\n\t\t\treturn isExpanded ? <ChevronLeft /> : <ChevronRight />;\n\t\t}\n\t\tif (buttonPosition === 'bottom') {\n\t\t\treturn isExpanded ? <ChevronDown /> : <ChevronUp />;\n\t\t}\n\t\treturn isExpanded ? <ChevronUp /> : <ChevronDown />;\n\t};\n\n\tconst getButtonClass = () => {\n\t\tif (direction === 'horizontal') {\n\t\t\treturn buttonPosition === 'right' ? 'button-right' : 'button-left';\n\t\t}\n\t\treturn buttonPosition === 'bottom' ? 'button-bottom' : 'button-top';\n\t};\n\n\tconst getContainerStyle = (): CSSProperties => {\n\t\tif (direction === 'horizontal') {\n\t\t\treturn {\n\t\t\t\twidth: isExpanded ? '100%' : '0px',\n\t\t\t\theight: '100%',\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\theight: isExpanded ? '100%' : '0px',\n\t\t\twidth: '100%',\n\t\t};\n\t};\n\n\tconst baseWrapperClass =\n\t\tdirection === 'horizontal' ? 'collapsible-wrapper horizontal' : 'collapsible-wrapper vertical';\n\tconst wrapperClass = className ? `${baseWrapperClass} ${className}` : baseWrapperClass;\n\n\tconst containerClass = [\n\t\t'collapsible-container',\n\t\tdirection === 'horizontal' && buttonPosition === 'right' ? 'align-right' : '',\n\t\tdirection === 'vertical' && buttonPosition === 'bottom' ? 'align-bottom' : '',\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\n\tconst height = getContentMaxHeight();\n\tconst contentStyle: CSSProperties = {\n\t\tmaxHeight: direction === 'vertical' ? (isExpanded ? height : '0px') : height,\n\t\toverflowY: 'auto',\n\t\tpadding: contentPadding,\n\t\tboxSizing: 'border-box',\n\t};\n\n\tconst formattedWidth = formatDimension(defaultWidth);\n\tconst formattedHeight = formatDimension(defaultHeight);\n\tconst wrapperStyle: CSSProperties = {\n\t\twidth: formattedWidth,\n\t\theight: formattedHeight,\n\t};\n\n\treturn (\n\t\t<div className={wrapperClass} style={wrapperStyle}>\n\t\t\t<div style={getContainerStyle()} className={containerClass}>\n\t\t\t\t{title && (\n\t\t\t\t\t<div className=\"collapsible-header\" style={{ display: 'none' }}>\n\t\t\t\t\t\t<h3>{title}</h3>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t<div className=\"collapsible-content\" style={contentStyle}>\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tonClick={() => setIsExpanded(!isExpanded)}\n\t\t\t\tclassName={`toggle-button ${getButtonClass()}`}\n\t\t\t\ttitle={isExpanded ? '隐藏' : '展开'}\n\t\t\t>\n\t\t\t\t{getIcon()}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default CollapsibleBox;\n"]}
1
+ {"version":3,"sources":["../CollapseBox/index.tsx"],"names":[],"mappings":";;;;AAmBA,IAAM,eAAA,GAAkB,CAAC,KAAA,KAAgD;AACxE,EAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM,OAAO,MAAA;AAClD,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,GAAW,CAAA,EAAG,KAAK,CAAA,EAAA,CAAA,GAAO,KAAA;AACnD,CAAA;AAEA,IAAM,WAAA,GAAc,sBAAM,GAAA,CAAC,YAAA,EAAA,EAAa,CAAA;AAExC,IAAM,YAAA,GAAe,sBAAM,GAAA,CAAC,aAAA,EAAA,EAAc,CAAA;AAE1C,IAAM,SAAA,GAAY,sBAAM,GAAA,CAAC,UAAA,EAAA,EAAW,CAAA;AAEpC,IAAM,WAAA,GAAc,sBAAM,GAAA,CAAC,YAAA,EAAA,EAAa,CAAA;AAExC,IAAM,iBAAiB,CAAC;AAAA,EACvB,QAAA;AAAA,EACA,KAAA,GAAQ,0BAAA;AAAA,EACR,SAAA,GAAY,YAAA;AAAA,EACZ,cAAA,GAAiB,OAAA;AAAA,EACjB,YAAA,GAAe,GAAA;AAAA,EACf,aAAA,GAAgB,GAAA;AAAA,EAChB,cAAA,GAAiB,MAAA;AAAA,EACjB,YAAA,GAAe,EAAA;AAAA,EACf;AACD,CAAA,KAAwB;AACvB,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,IAAI,CAAA;AAEjD,EAAA,MAAM,sBAAsB,MAAM;AACjC,IAAA,IAAI,OAAO,kBAAkB,QAAA,EAAU;AACtC,MAAA,OAAO,CAAA,EAAG,gBAAgB,YAAY,CAAA,EAAA,CAAA;AAAA,IACvC;AACA,IAAA,IAAI,OAAO,kBAAkB,QAAA,EAAU;AACtC,MAAA,OAAO,YAAA,GAAe,CAAA,KAAA,EAAQ,aAAa,CAAA,GAAA,EAAM,YAAY,CAAA,GAAA,CAAA,GAAQ,aAAA;AAAA,IACtE;AACA,IAAA,OAAO,MAAA;AAAA,EACR,CAAA;AAEA,EAAA,MAAM,UAAU,MAAM;AACrB,IAAA,IAAI,cAAc,YAAA,EAAc;AAC/B,MAAA,IAAI,mBAAmB,OAAA,EAAS;AAC/B,QAAA,OAAO,UAAA,mBAAa,GAAA,CAAC,YAAA,EAAA,EAAa,CAAA,uBAAM,WAAA,EAAA,EAAY,CAAA;AAAA,MACrD;AACA,MAAA,OAAO,UAAA,mBAAa,GAAA,CAAC,WAAA,EAAA,EAAY,CAAA,uBAAM,YAAA,EAAA,EAAa,CAAA;AAAA,IACrD;AACA,IAAA,IAAI,mBAAmB,QAAA,EAAU;AAChC,MAAA,OAAO,UAAA,mBAAa,GAAA,CAAC,WAAA,EAAA,EAAY,CAAA,uBAAM,SAAA,EAAA,EAAU,CAAA;AAAA,IAClD;AACA,IAAA,OAAO,UAAA,mBAAa,GAAA,CAAC,SAAA,EAAA,EAAU,CAAA,uBAAM,WAAA,EAAA,EAAY,CAAA;AAAA,EAClD,CAAA;AAEA,EAAA,MAAM,iBAAiB,MAAM;AAC5B,IAAA,IAAI,cAAc,YAAA,EAAc;AAC/B,MAAA,OAAO,cAAA,KAAmB,UAAU,cAAA,GAAiB,aAAA;AAAA,IACtD;AACA,IAAA,OAAO,cAAA,KAAmB,WAAW,eAAA,GAAkB,YAAA;AAAA,EACxD,CAAA;AAEA,EAAA,MAAM,oBAAoB,MAAqB;AAC9C,IAAA,IAAI,cAAc,YAAA,EAAc;AAC/B,MAAA,OAAO;AAAA,QACN,KAAA,EAAO,aAAa,MAAA,GAAS,KAAA;AAAA,QAC7B,MAAA,EAAQ;AAAA,OACT;AAAA,IACD;AACA,IAAA,OAAO;AAAA,MACN,MAAA,EAAQ,aAAa,MAAA,GAAS,KAAA;AAAA,MAC9B,KAAA,EAAO;AAAA,KACR;AAAA,EACD,CAAA;AAEA,EAAA,MAAM,gBAAA,GACL,SAAA,KAAc,YAAA,GAAe,gCAAA,GAAmC,8BAAA;AACjE,EAAA,MAAM,eAAe,SAAA,GAAY,CAAA,EAAG,gBAAgB,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,GAAK,gBAAA;AAEtE,EAAA,MAAM,cAAA,GAAiB;AAAA,IACtB,uBAAA;AAAA,IACA,SAAA,KAAc,YAAA,IAAgB,cAAA,KAAmB,OAAA,GAAU,aAAA,GAAgB,EAAA;AAAA,IAC3E,SAAA,KAAc,UAAA,IAAc,cAAA,KAAmB,QAAA,GAAW,cAAA,GAAiB;AAAA,GAC5E,CACE,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEV,EAAA,MAAM,SAAS,mBAAA,EAAoB;AACnC,EAAA,MAAM,YAAA,GAA8B;AAAA,IACnC,SAAA,EAAW,SAAA,KAAc,UAAA,GAAc,UAAA,GAAa,SAAS,KAAA,GAAS,MAAA;AAAA,IACtE,SAAA,EAAW,MAAA;AAAA,IACX,OAAA,EAAS,cAAA;AAAA,IACT,SAAA,EAAW;AAAA,GACZ;AAEA,EAAA,MAAM,cAAA,GAAiB,gBAAgB,YAAY,CAAA;AACnD,EAAA,MAAM,eAAA,GAAkB,gBAAgB,aAAa,CAAA;AACrD,EAAA,MAAM,YAAA,GAA8B;AAAA,IACnC,KAAA,EAAO,cAAA;AAAA,IACP,MAAA,EAAQ;AAAA,GACT;AAEA,EAAA,uBACC,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,YAAA,EAAc,OAAO,YAAA,EACpC,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,iBAAA,EAAkB,EAAG,WAAW,cAAA,EAC1C,QAAA,EAAA;AAAA,MAAA,KAAA,oBACA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oBAAA,EAAqB,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAO,EAC5D,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAI,QAAA,EAAA,KAAA,EAAM,CAAA,EACZ,CAAA;AAAA,0BAGA,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EAAsB,KAAA,EAAO,cAC1C,QAAA,EACF;AAAA,KAAA,EACD,CAAA;AAAA,oBAEA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACA,OAAA,EAAS,MAAM,aAAA,CAAc,CAAC,UAAU,CAAA;AAAA,QACxC,SAAA,EAAW,CAAA,cAAA,EAAiB,cAAA,EAAgB,CAAA,CAAA;AAAA,QAC5C,KAAA,EAAO,aAAa,cAAA,GAAO,cAAA;AAAA,QAE1B,QAAA,EAAA,OAAA;AAAQ;AAAA;AACV,GAAA,EACD,CAAA;AAEF,CAAA;AAEA,IAAO,mBAAA,GAAQ","file":"chunk-XLOGMDAQ.js","sourcesContent":["import { useState, type CSSProperties, type ReactNode } from 'react';\nimport { DownOutlined, LeftOutlined, RightOutlined, UpOutlined } from '../src/icons';\nimport './index.less';\n\nexport type CollapseBoxDirection = 'horizontal' | 'vertical';\nexport type CollapseBoxButtonPosition = 'left' | 'right' | 'top' | 'bottom';\n\nexport interface CollapseBoxProps {\n\tchildren?: ReactNode;\n\ttitle?: string;\n\tdirection?: CollapseBoxDirection;\n\tbuttonPosition?: CollapseBoxButtonPosition;\n\tdefaultWidth?: number | string;\n\tdefaultHeight?: number | string;\n\tcontentPadding?: string;\n\theaderHeight?: number;\n\tclassName?: string;\n}\n\nconst formatDimension = (value?: number | string): string | undefined => {\n\tif (value === undefined || value === null) return undefined;\n\treturn typeof value === 'number' ? `${value}px` : value;\n};\n\nconst ChevronLeft = () => <LeftOutlined />;\n\nconst ChevronRight = () => <RightOutlined />;\n\nconst ChevronUp = () => <UpOutlined />;\n\nconst ChevronDown = () => <DownOutlined />;\n\nconst CollapsibleBox = ({\n\tchildren,\n\ttitle = '内容区域',\n\tdirection = 'horizontal',\n\tbuttonPosition = 'right',\n\tdefaultWidth = 600,\n\tdefaultHeight = 300,\n\tcontentPadding = '16px',\n\theaderHeight = 16,\n\tclassName,\n}: CollapseBoxProps) => {\n\tconst [isExpanded, setIsExpanded] = useState(true);\n\n\tconst getContentMaxHeight = () => {\n\t\tif (typeof defaultHeight === 'number') {\n\t\t\treturn `${defaultHeight - headerHeight}px`;\n\t\t}\n\t\tif (typeof defaultHeight === 'string') {\n\t\t\treturn headerHeight ? `calc(${defaultHeight} - ${headerHeight}px)` : defaultHeight;\n\t\t}\n\t\treturn '100%';\n\t};\n\n\tconst getIcon = () => {\n\t\tif (direction === 'horizontal') {\n\t\t\tif (buttonPosition === 'right') {\n\t\t\t\treturn isExpanded ? <ChevronRight /> : <ChevronLeft />;\n\t\t\t}\n\t\t\treturn isExpanded ? <ChevronLeft /> : <ChevronRight />;\n\t\t}\n\t\tif (buttonPosition === 'bottom') {\n\t\t\treturn isExpanded ? <ChevronDown /> : <ChevronUp />;\n\t\t}\n\t\treturn isExpanded ? <ChevronUp /> : <ChevronDown />;\n\t};\n\n\tconst getButtonClass = () => {\n\t\tif (direction === 'horizontal') {\n\t\t\treturn buttonPosition === 'right' ? 'button-right' : 'button-left';\n\t\t}\n\t\treturn buttonPosition === 'bottom' ? 'button-bottom' : 'button-top';\n\t};\n\n\tconst getContainerStyle = (): CSSProperties => {\n\t\tif (direction === 'horizontal') {\n\t\t\treturn {\n\t\t\t\twidth: isExpanded ? '100%' : '0px',\n\t\t\t\theight: '100%',\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\theight: isExpanded ? '100%' : '0px',\n\t\t\twidth: '100%',\n\t\t};\n\t};\n\n\tconst baseWrapperClass =\n\t\tdirection === 'horizontal' ? 'collapsible-wrapper horizontal' : 'collapsible-wrapper vertical';\n\tconst wrapperClass = className ? `${baseWrapperClass} ${className}` : baseWrapperClass;\n\n\tconst containerClass = [\n\t\t'collapsible-container',\n\t\tdirection === 'horizontal' && buttonPosition === 'right' ? 'align-right' : '',\n\t\tdirection === 'vertical' && buttonPosition === 'bottom' ? 'align-bottom' : '',\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\n\tconst height = getContentMaxHeight();\n\tconst contentStyle: CSSProperties = {\n\t\tmaxHeight: direction === 'vertical' ? (isExpanded ? height : '0px') : height,\n\t\toverflowY: 'auto',\n\t\tpadding: contentPadding,\n\t\tboxSizing: 'border-box',\n\t};\n\n\tconst formattedWidth = formatDimension(defaultWidth);\n\tconst formattedHeight = formatDimension(defaultHeight);\n\tconst wrapperStyle: CSSProperties = {\n\t\twidth: formattedWidth,\n\t\theight: formattedHeight,\n\t};\n\n\treturn (\n\t\t<div className={wrapperClass} style={wrapperStyle}>\n\t\t\t<div style={getContainerStyle()} className={containerClass}>\n\t\t\t\t{title && (\n\t\t\t\t\t<div className=\"collapsible-header\" style={{ display: 'none' }}>\n\t\t\t\t\t\t<h3>{title}</h3>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t<div className=\"collapsible-content\" style={contentStyle}>\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tonClick={() => setIsExpanded(!isExpanded)}\n\t\t\t\tclassName={`toggle-button ${getButtonClass()}`}\n\t\t\t\ttitle={isExpanded ? '隐藏' : '展开'}\n\t\t\t>\n\t\t\t\t{getIcon()}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default CollapsibleBox;\n"]}
@@ -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"]}